Программирование

Ответить в тред Ответить в тред
Check this out!
Клуб изучающих PHP #120 /php/ Аноним 05/11/20 Чтв 22:13:56 18490781
php-noob-1.png 32Кб, 500x500
500x500
cat-cafe-osaka.jpg 140Кб, 1024x683
1024x683
l0-sensei.jpg 34Кб, 650x384
650x384
cat-sad.jpg 194Кб, 1024x768
1024x768
Здесь мы изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

ОП довольно занят, но постарается ответить на все вопросы. Также, ответы и решения задач можно поискать в архиве тредов phpclub.

Это тред и для начинающих. Слово "классы" у тебя ассоциируется только со школой, а в аттестате тройка по математике? Ты наш человек.

Предыдущий тред был тут: >>1785871 (OP) . Все старые треды есть в архиве: https://phpclub.tech/ (там есть поиск, можно искать решения и обсуждения задач).

С чего начать

Наши уроки по PHP собраны по адресу http://codedokode.github.io/phpbook (вас отредиректит на другой домен, не запоминайте его, он временный). Это учебник для изучающих с нуля. Там есть задачи, их нужно решать. Но если этот учебник тебе не нравится, можно читать любой другой. Или официальный мануал. Или все сразу.

Если не знаешь как решать, запости код и попроси подсказку или поищи задачу в архиве тредов.

Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL, PDO, работа с таблицами в БД, работа с формами, MVC, git, composer, JS, фреймворки, автоматизированное тестирование. У нас есть задачи для изучения этого:

- для начала прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- установи Апач + PHP (советы выше и ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, PDO, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Laravel/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony или Laravel
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://github.com/codedokode/pasta/blob/master/soft/php-install.md
https://github.com/codedokode/pasta/blob/master/soft/apache-install.md

Может тебе понадобится пользоваться командной строкой, вот гайд https://github.com/codedokode/pasta/blob/master/soft/cli.md

Параллельно стоит подучивать английский, на первых порах можно без него, но по мере развития придется все чаще сталкиваться с англоязычными статьями, так что лучше не откладывать. Читать можно news.ycombinator.com - это что-то вроде их хабра.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://github.com/codedokode/pasta/blob/master/db/databases.md

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1
- Новости IT на англ. https://news.ycombinator.com/
- какой-то древний, устаревший, но большой и на русском справочник по веб-разработке, посоветованный аноном: https://starcat.dp.ua/doc/wdh/

Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492

У ОПа нет аккаунтов и групп вконтакте, в фейсбуке, в твиттере, все "пхп-треды" там поддельные.

Платиновые вопросы

- Почему PHP? Потому что вакансий море, и учить легко.
- Сайт опять упал!!!!! — Не паникуй, а зайди на https://github.com/codedokode/phpbook, нажми зеленую кнопку Clone or Download -> Download ZIP, распакуй на рабочий стол и получи личную копию сайта, не требующую интернетов.
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу (ищи в архиве по слову "устроился").
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
Аноним 05/11/20 Чтв 22:16:39 18490842
grammar.png 55Кб, 500x644
500x644
Код должен быть аккуратным и оформлен, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на http://beta.phpformatter.com/ и нажать «format». Робот оформит все как надо. Если ты используешь IDE, то там есть горячая клавиша для этого. Список клавиш для IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть рекомендации PSR-1 и PSR-12. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)
- ставим тайп-хинты на аргументы функций, результат функций и поля классов

Вот ссылка на рекомендации PSR, где все это описано подробнее и даны примеры оформления:

PSR-1 (рус.): https://svyatoslav.biz/misc/psr_translation/#_PSR-1
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/
Аноним 05/11/20 Чтв 22:18:04 18490913
Если вдруг кого-то в прошлом треде пропустили, можете напомнить о себе здесь.
Аноним 05/11/20 Чтв 22:38:16 18491094
почему в шапке одни и те же картинки?
фанат Японии?
а че не руби тред тогда?
Аноним 05/11/20 Чтв 22:39:31 18491125
пхп еще жив?
Аноним 05/11/20 Чтв 22:57:21 18491296
>>1849112
Прикинь умер уже давно, а вакансий как говна за баней, сам удивляюсь как так.
Аноним 05/11/20 Чтв 23:09:54 18491387
>>1849112
А на бэке пхп как раз живее чем допустим пистон по моим ощущениям
Аноним 06/11/20 Птн 02:51:21 18492358
16039281712440.png 220Кб, 600x600
600x600
Сап, анчоусы. Может кто-то поделиться ключом активации для phpstorm? 2019.1.2
Аноним 06/11/20 Птн 07:42:29 18492819
Анон как правильно работать с фронтенд фреймворком на php фреймворке? Как и положено в nginx домашняя локация указана на www/html/web/project/index.php. index.php запускает php фреймворк, открывается контроллер, который собирает вьюху. Или не собирает?
Аноним 06/11/20 Птн 08:22:17 184929110
>>1849281
Собирает в любом случае, просто в зависимости от архитектуры фронта эта вьюха может быть просто тег <main></main>, а все что внутри уже фронт добавляет. Но может и более-менее полную собирать. Еще фронт может полностью генерится на сервере изпользуя фронтенд фреймворк. Тогда бекэнд отдает полностью готовыю вью, но отрендерена она фронт фрейморком, а не бекэндом. Такое используют, например, когда хотят чтобы SPA индексировалось ботами поисковиков - ботам отдают полностью сгенерированую страницу с инфой, потому что скрипты они не запускают и обычная SPA страница для них будет пустая.
Аноним 06/11/20 Птн 08:25:07 184929311
>>1849078 (OP)
Сколько можно постить одну и ту же старую шапку? Даже картинки не меняете
Аноним 06/11/20 Птн 08:35:36 184929512
Прохожу гайд из шапки, пытаюсь решить задачу на форматирование текста (удаление лишних пробелов и т.д.)
Но могу сделать так, чтобы все предложения начинались с большой буквы. Пытаюсь с помощью регулярки и preg_replace найти все первые буквы предложения, и применить к ним mb_strtoupper. Но она не применяется. Что я не так делаю? Или так вообще нельзя делать?
Аноним 06/11/20 Птн 12:10:42 184946213
>>1849293
>Даже картинки не меняете
а это важно?
Аноним 06/11/20 Птн 12:54:36 184949414
>>1849112
Причем еще и доминирует в вебе
Аноним 06/11/20 Птн 14:45:02 184957315
На меня тут в прошлый раз накинулись из-за того, что я хочу с C# перейти на PHP, но за пару дней тестов и чтения сравнений я пришел к тому, что чистый архитектурный код можно писать и на PHP, но единственный минус C# в том, что он менее производительный. Я прошу вас оценить не со стороны больших дядек, который C# выбирают просто потому что, а чисто по архитектуре, защищенности и быстродействию. Что лучше?
Аноним 06/11/20 Птн 15:04:58 184958516
Аноним 06/11/20 Птн 15:07:36 184958917
Аноним 06/11/20 Птн 15:18:34 184960018
>>1849291
Вроде все логично. Спасибо.
Аноним 06/11/20 Птн 19:54:43 184990919
>>1849112
Вполне. Комьюнити бодрое, чет новое постоянно пилится, работа есть.
Аноним 06/11/20 Птн 19:57:30 184991120
>>1849573
Где платят больше, туда и иди.
Аноним 06/11/20 Птн 20:28:02 184993021
какая разница между MySQL и Postgres?
Аноним 06/11/20 Птн 20:44:17 184994022
>>1849930
В двух словах PostgreSQL для кровавого тырпрайза, там есть всякие плюшки коих нет в MySQL, ну и всякая оптимизация, быстродействие и тп., но с другой стороны если нужно лезть в конфиги, то на PostgreSQL это боль, если нет DevOps который бы эту хуйню поддерживал, то лучше MySQL. С точки зрения разработчика почти не отличаются те же самые запросы, все тоже самое в общем и целом. А так можно нагуглить много разных статей на эту тему, лень с телефона печатать.
Аноним 06/11/20 Птн 20:46:04 184994223
Аноним 06/11/20 Птн 22:01:51 185002724
>>1849078 (OP)
Объясните, почему когда в <?php

error_reporting(-1);

for ($i = 1; $i<=10; $i++) {
$a=$i$i;
echo "{$i}
{$i}={$a}\n";
}

$a=$i*$i; выносишь перед циклом, он в итоге нихуя не считает, а выводит нули?
Аноним 06/11/20 Птн 22:41:57 185005825
>>1849293

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

>>1849295

Тут есть разные вараинты:

- с помощью preg_split разбить текст на массив предложений, в кажддом из них поднять регистр первой буквы, и склеить обратно в текст
- использовать preg_replace_callback и в коллбеке поднять регистр буквы

Использовать preg_replace вместе с mb_strtoupper, чтобы это работало, невозможно.

>>1850027

Потому что программа выполняется по шагам. Если ты ставишь умножение перед циклом, то оно выполняется (с ошибкой, так как переменной $i еще не создано), результат записывается в $a и дальше она не меняется. С чего бы ей меняться, если дальше нет команд, которые бы это делали.

Выражение $a = $i * $i не значит, что "$a будет дальше автоматически обновляться при изменении $i". Нет, это команда: перемножь $i на $i и помести результат в $a. Если ты ставишь ее до цикла, то она выполняется один раз. Если внутрь цикла - то несколько раз, на каждом шаге цикла.
Аноним 07/11/20 Суб 00:27:47 185013126
<?php

$bankSum = 10000;
$bankPercent = 1.1;

for ($age = 16; $age < 100; $age++) {
$years = $age - 16;
$bankSum = $bankSum * $bankPercent;
if ($bankSum >= 1000000) {
echo "gotovo \n";
break;}
}

echo "Через $years в банке накопится сумма $bankSum, а вкладчику будет $age";

Аноны где ошибка? Вручную сначала посчитал, убедился, что 49 лет пройдет, выдает упорно 48, в каком месте проебался?

Аноним 07/11/20 Суб 07:16:51 185023527
>>1849940
Дело совсем не в быстродействии. Есть стандарты SQL, а конкретные базы им следуют. Ну пытаются во всяком случае. SQL это внезапно тоже язык, который нужно учить. Представь что ты всю жизнь учил урезанную версию пхп, в которой, например, нет функций работы с массивами или json. Нахуй такой обрубок вообще нужен?

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

Удачи исполнить такое на MySql. Никаких нативных инструментов для этого нет. Только хаки и подзапросы по секунде. А на постгресе куча вариантов и все в соответствии со стандартом.
Аноним 07/11/20 Суб 12:33:03 185031428
>>1850131
Потому что вкладчик положил деньги в 16 лет и ему сразу же начислило 110% в тот же день, а нужно чтобы через год.
Аноним 07/11/20 Суб 13:43:50 185037229
сап аноны, записался на курсы рнр, там задание "Составьте регулярные выражения для маскирования тегов HTML ", не могу понять что такое "маскирование", может кто знает
Аноним 07/11/20 Суб 14:01:10 185039130
>>1849942
В том, что нет join'ов, данные любого формата можно хранить в json. Нет фиксированной структуры, не нужно заранее объявлять schema, просто берешь и работаешь без задней мысли.

>>1849573
Что тебе больше нравится, то и используй. Нравится ООП, используешь azure - бери C#. Нравится простота и дешевизна - бери PHP.

>>1849235
Бери Visual Studio Code, функции все те же, только бесплатный.
Аноним 07/11/20 Суб 16:19:18 185049031
>>1849078 (OP)
Как в рамках php решается проблема highload если асинхронности как таковой в пыхе нет и вызываемый файл-скрипт .php запускается для каждого поступившего обращения на сервер?
Аноним 07/11/20 Суб 16:20:05 185049132
>>1850235
>Удачи исполнить такое на MySql
Я таки исполнил MariaDB. ХЗ начиная с какой версии, но там есть оконные функции.
Аноним 07/11/20 Суб 16:21:31 185049233
>>1850490
Там есть процесс-менеджер, который спавнит дохуя процессов-обработчиков. Смотри php-fpm.
Аноним 07/11/20 Суб 16:22:05 185049334
>>1850492
>спавнит дохуя процессов-обработчиков
И это типо норм?
Аноним 07/11/20 Суб 16:23:47 185049535
Аноним 07/11/20 Суб 17:33:11 185055936
>>1850490

Как связаны асинхронность и highload? Я думаю, что никак, так что непонятно, зачем ты про нее вспомнил.

В highload PHP прекрасно распараллеливается на любое число машин. Благодаря синхронному коду писать на PHP удобнее и проще.

Хотя это на практике не очень нужно, так как реально highload приложений в мире очень мало. Мало кто может похвастаться миллионами одновременно заходящими на сайт или в приложение пользователями. Вконтакте, твиттер, инстаграм - это единицы, а у 99% сайтов такие объемы трафика никогда не будут.
Аноним 07/11/20 Суб 17:50:29 185057837
>>1850391
>В том, что нет join'ов, данные любого формата можно хранить в json. Нет фиксированной структуры, не нужно заранее объявлять schema, просто берешь и работаешь без задней мысли.
А в чем подводные?
Аноним 07/11/20 Суб 17:51:10 185057938
>>1850578
>нет join'ов
>в чем подводные?
Аноним 07/11/20 Суб 17:52:32 185058239
>>1850579
я только начал изучать архитектуру БД и запросы
Аноним 07/11/20 Суб 19:57:30 185063840
>>1850578
>А в чем подводные?
Да нет никаких подводных. Каждая БД работает в рамках своей задачи, под которую она разрабатывалась. Memcached/redis например хранят базу в оперативной памяти, поэтому их часто как прокладку для кеша используют. InfluxDB под временные ряды заточена (котировки акций например). Neo4j заточена под графы и отношения many-to-many (система рекомендации товаров например). Есть мультимодельные БД, которые сочетают в себе качества как реляционных БД, так и документоориентированных - например FaunaDB.

В MongoDB просто другая идеология, не размазывать данные по куче таблиц, а хранить данные в самих документах. Если у тебя много взаимосвязей между данными - к примеру ты строишь социальную сеть. Тут конечно лучше подойдет MySQL, заебешься в NoSQL моделировать отношения.
Аноним 07/11/20 Суб 20:17:13 185065041
>>1850490
>Как в рамках php решается проблема highload если асинхронности как таковой в пыхе нет
Асинхронности нет, но есть воркеры. В nginx ставишь worker_processes равное количеству ядер, например у тебя 4 ядра на сервере, значит ты ставишь worker_processes равное 4-м и сервер у тебя свободно обрабатывает 4 некешированных запроса одновременно. Это первый вариант.

Второй вариант - балансеры. Можно закупить 2-5-10-100 серверов и балансировать между ними нагрузку, если один из серверов занят, запрос автоматически переадресуется на другой сервер.

Третий вариант - кеширование. Ставиться memcached и время генерации страницы уменьшается до 20мс или около того.
Аноним 07/11/20 Суб 20:30:25 185065642
>>1850490
Ах да, этот ваш JavaScript тоже не тру асинхронный язык. Асинхронность в нем достигается за счет использования Web API (написанных на плюсах) и механизма колбеков (в ноде за счет использования libuv, которая тоже написана на c++ между прочим). Это так, к слову...
Аноним 07/11/20 Суб 22:37:46 185075743
>>1850638
короче как простая база,типа вот есть юзер,и списком в ней идут просто данные юзера,а рядом по списку другой юзер и между ними нет связи?
Аноним 07/11/20 Суб 22:44:27 185076644
Подскажите, пожалуйста, как сделать так, чтобы при нажатии на чекбокс, который находится в диве 1, менялся фон у h1 в диве 2?
https://jsfiddle.net/fhw64m9v/
Если не туда написал, скажите плз куда написать?
Аноним 07/11/20 Суб 23:03:47 185078845
https://2ch.hk/pr/res/1845843.html
Это вообще нормально что опять зумерсике жс-пидоры что-то тявкают про пхп, хотя нихуя не шарят в матчасти? Пора им смачно так провести шершавым хуем по еблам
Аноним 08/11/20 Вск 10:49:26 185098946
зато пых не умеет в веб сокеты
умеет,но это лютый костыль
Аноним 08/11/20 Вск 11:10:15 185100147
>>1850757
Для простых сайтов вообще заебись. Если у тебя тупо статьи по категориям/пользователи, то mongodb подойдет идеально. Это БД общего назначения, для особых случаев есть специализированные БД.
Аноним 08/11/20 Вск 11:20:46 185100548
>>1850757
Просто у nosql немного своя атмосфера, не такая как у mysql/postgresql. Свои техники и приемы работы. Перекатышам можно забыть всё что они знали о реляционных дб и учить всё заново)
Аноним 08/11/20 Вск 15:53:04 185114549
фыфвф.jpg 79Кб, 878x550
878x550
>>1850314
И как это реализовать без нагромождения всякого говна?
мимо другой вкатывальщик
Аноним 08/11/20 Вск 16:24:57 185116150
>>1851145
навернуть while($bankSum < 1000000)
Аноним 08/11/20 Вск 18:12:21 185123151
>>1851145
решить уравнение вида 1e4 1.1^n >= 1e6
https://www.wolframalpha.com/input/?i=1e4+
+1.1%5En+%3E%3D+1e6
с точки зрения _как_ решать - фигануть просто логарифм по основанию 1.1 - log_{1.1}(1e6/1e4)=48.31.. (что сходится с вольфрамом)
Аноним 08/11/20 Вск 20:04:26 185132152
image.png 383Кб, 512x369
512x369
Сап, веб-макаки. Как можно редачить код в Вижуал Студио и сразу же выводить его на другое окно в этом же самом вижуал студио, чтобы каждый раз не запускать файл в браузере по новой?>>1849078 (OP)
Аноним 08/11/20 Вск 22:53:25 185146053
16039904232790.jpg 110Кб, 1080x720
1080x720
>>1851321
Используй Macromedia Dreamweaver

Аноним 09/11/20 Пнд 01:47:54 185156054
Ебать, два часа думал как нужно написать решение задачи про мальчика с айфоном в кредит. Че то меня зацепила фраза автора о том что с первого раза мало кому удается решить ее и прям замотивирован был. На самом деле само решение образное в голове, пришло почти сразу, но как это все оформить и написать - пиздец просто. Спрашивать само решение здесь у анонов было как- стыдно..... хотя я был близок. Рад просто пиздец как
Аноним 09/11/20 Пнд 02:33:48 185158555
Всем привет. Собираюсь пустится в бэк разработку (столкнусь с разработкой впервые в принципе) и думаю какую IDE бесплатную можно взять. Ломаюсь между VsCode, SublimeText(но, говорят, там гемор с допами) и phpstorm (бесплатной версии, была же такая, да?..). Планирую за 6-7 месяцев пройти обучения в шапке и податься на джуна, потому хочу сразу начинать с какой-то нормальной IDE, а не notepad++. К тому же планирую винду полностью Linux заменить (опыт пользования есть), а потому кроссплатформенность тоже важна. Пытался статейки нагуглить, но всё херня какая-то.
Заранее спасибо.
Аноним 09/11/20 Пнд 04:55:51 185162956
>>1851585
если надо бесплатный присмотрись к VsCode с расширениями
все с кем работал используют шторм
Аноним 09/11/20 Пнд 05:14:12 185163357
>>1851629
+добавлю
ставил вскод чтоб просто посмотреть - вроде вполне сносно работало на убунте. Ставил одно расширение для пхп (у которого много скачиваний и рейтинг хороший) + хдебаг (не настраивал).
интелисенс(автодополнение) норм работал
навигация по коду норм
консоль понравилась
есть гайды по настройке вскод+хдебаг+докер
думаю вполне можно работать/учиться
Аноним 09/11/20 Пнд 05:21:39 185163458
бамп
Аноним 09/11/20 Пнд 10:14:14 185171059
>>1851585
vscode на убунте норм, но для него нужно расширения ставить, я уже не помню какие я тогда нагуглил, не все адекватно работают. Если его настроить правильно и оперативки много, то для начала пойдет, у нас на работе даже некоторые в нем пишут. А так сам купил ключи к шторму и не парюсь.
Аноним 09/11/20 Пнд 15:53:49 185192960
Блэт, аноны, чет я затупил как мразь просто, нихуя нагуглить не могу.
Как в базу с помощью sql запроса вставить дату полученную из строки?
Дата - "2020-11-10Т10:44:06.333Z" - это дата expires сессии для куки. Одна либа генерит такую.
Первое - что значат цифры и буква после точки - .333Z?
Второе - я инсертом не понимаю как правильно ткнуть эту дату в базу в поле с типом DATATIME.
Юзал str_to_date функцию - но не получается.
Как првильно это сделать?
Вообще я чет нихуя не понимаю в sql датах
Аноним 09/11/20 Пнд 16:08:24 185194061
>>1851929
самофикс - дата прекрасно втсавляется как строка '2020-11-10Т10:44:06.333Z', я чет сам себя перемудрил. Вставлял эту строку в VALUES ( DATETIME('2020-11-10Т10:44:06.333Z') )
Хотя если юзать DATE('2020-11-10Т10:44:06.333Z') - в базу вставится значение - но только год-месяц-день
Аноним 09/11/20 Пнд 16:27:46 185195362
Решаю задачу из гайда про размен. Разобрался как выдавать минимальное количество купюр. Но это работает только если количество купюр достаточно много в банкомате. Как тогда рассматривать случай, когда каких то купюр в дефиците И их не хватит для минимальной последовательности.
Аноним 09/11/20 Пнд 17:55:28 185200163
Аноним 09/11/20 Пнд 19:03:24 185206964
>>1851560
Можешь не спрашивать, вбивай условия задачи в гугл и там будет решенная задачка. Большинство задач, ну как бэ явно с нуля решить очень сложно для вкатывальщика, поэтому автор не лукавил.
Аноним 09/11/20 Пнд 19:15:37 185207665
Аноним 09/11/20 Пнд 21:03:51 185215366
>>1851929

.333 это доли секунд. Z - Это часовой пояс (гугли Zulu time).

Правильно, наверно, преобразовать это время в timestamp функцией strtotime(), а затем сформатировать дату для MySQL с помощью date('Y-m-d H:i:s').

Аноним 09/11/20 Пнд 21:12:19 185215967
>>1849942

Фишка Mongo не в том, что в ней можно вкладывать одни сущности в другие (можно, но ты об этом пожалеешь). Каждую сущность надо хранить отдельно. Те, кто пишут, скорее всего на практике с этим не сталкивались. Никто в здравом уме не будет засовывать статьи внутрь категории, а будет использовать связи.

Mongo просто лучше мапится на объекты. Если ты не начинающий, то ты скорее всего напрямую не работаешь ни с Mongo, ни c MySQL. А используешь ODM/ORM. Для мапинга объектов на хранилище SQL подходит хуже (так как мы делаем сложное преобразование из объектов в SQL-запросы), а Mongo - лучше (так как мы сразу преобразовываем объект в JSON и засовываем в хранилище). Добавление нового поля, например, реализуется добавлением одного поля в объекте. Не требуется делать миграций.

С другой стороны, если надо вручную выбрать какие-то данные, SQL позволяет сделать это быстро, а вот с Mongo придется писать громоздкий JSON. То есть SQL лучше подходит для использования человеком, а MongoDB - приложением.
Аноним 09/11/20 Пнд 21:20:01 185216368
>>1850372

У них и уточняй.

>>1850391

Джойнов там нет, потому что связи реализуются на уровне ODM (object to document mapper) вроде Доктрины. Также, схемы нет в Монго, но она реализуется на уровне приложения.

Монго - это не значит, что мы вручную пишем туда JSON и устраиваем свалку. Обычно используют ODM для взаимодействия с монго, иначе получится бардак.

>>1850757

С Монго обычно работают через ODM. Ты создаешь объект с нужными тебе полями, а ODM делает из него JSON-документ для монго.

>>1850766

Тебе надо получше изучить селекторы CSS. Этот селектор:

#switch:checked container

Значит, что тег (не класс) container должен быть вложен внутрь input.



Аноним 09/11/20 Пнд 21:23:52 185216469
>>1851145

Можно цикл начинать не с 16, а с 17.

>>1851953

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

В жадном алгоритме ты идешь от больших купюр к маленьким и берешь по максимуму каждой купюры (но так, чтобы это было не больше остатка выдаваемой суммы и не больше имеющегося запаса купюр).
Аноним 09/11/20 Пнд 22:01:15 185219570
>>1852159
Алле там есть рефы https://docs.mongodb.com/manual/reference/database-references/, они храняться отдельно
Монга от реляционных бд отличается не отсутствием отношений между документами, а отсутствием реляционных операций, напр джоинов.
Аноним 09/11/20 Пнд 22:02:01 185219871
Аноны, наткнулся вот на такой сайтец с самообучением начальным по пхп. Вопрос, сильно ли он отличается от того что тут автор залил? Ибо он мне больше зашел чем тот который в закрепе поскольку там есть возможность сразу проверить решение задачи а не лопатить гугол или тут доебывать анонов. Столкнулся просто с проблемой что пример кода который я копирую в кодпэд - не воспроизводится.... Я понимаю что там немного другое оформление нежели у автора треда, но энивей, хотел узнать что все таки лучше
Аноним 09/11/20 Пнд 22:02:11 185219972
Аноним 09/11/20 Пнд 22:02:36 185220073
Сам сайтец - programulin
Аноним 09/11/20 Пнд 22:05:09 185220574
unnamed.jpg 48Кб, 512x427
512x427
Аноним 09/11/20 Пнд 22:24:09 185221375
>>1852164
Не, попробую объяснить на примере, что есть скажем купюры
5 - 2 шт
10- 1шт
20 - 1шт

Если я хочу получить 40, то минимальное количество купюр будет 2 по 20. Но в наличии то у меня только одна двадцатка. И в реальности я должен выдать 20+10+5+5, что не является минимальным количеством в идеальном случае, но минимально возможное в действительности. Вопрос в том, в каком месте кода это надо учитывать и как обрабатывать?
Аноним 09/11/20 Пнд 23:08:13 185223576
>>1852213

Жадный алгоритм это учитывает. Ты движешься от больших купюр к маленьким и каждой берешь по максимуму. То есть вначале алгоритм рассматривает купюры по 20:

- хотелось бы выдать: 40/20 = 2 шт
- в наличии: 1 шт
- потому берем 1 шт по 20

Невыданный остаток = 20. Переходим к купюре по 10:

- хотелось бы выдать: 20/10 = 2 шт
- в наличии: 1 шт
- потому берем 1 шт по 10

И так далее.
Аноним 09/11/20 Пнд 23:36:06 185225177
>>1852163
>Джойнов там нет, потому что связи реализуются на уровне ODM (object to document mapper) вроде Доктрины
В анус себе замаппь свою доктрину. Зачем мне маппить объекты на базу? Чтобы он мне под каждый класс делал новую коллекцию? А может я хотел сделать одну коллекцию а-ля single table design? Без соплей разберусь как мне моделировать мою базу.

>Обычно используют ODM для взаимодействия с монго, иначе получится бардак.
Обычно используют ODM такие дауны как ты. Которые и перднуть не могут без лишних абстракций.
Аноним 10/11/20 Втр 00:24:48 185227778
Аноны сеньоры, расскажите как вкатиться верстальщиком, с чего стоит начать, чтобы хоть на кусок хлеба заработать себе
Аноним 10/11/20 Втр 00:35:03 185228479
>>1852277
с html и css я так понимаю
Аноним 10/11/20 Втр 00:41:23 185228780
>>1852284
Так а как конкретно? Есть какая-то литература, а то сидеть учить тэги как-то ебано мне кажется, или в этом весь смысл?
Аноним 10/11/20 Втр 00:45:53 185228881
>>1852287
я тут не профессионал далеко. сам только вкатываюсь но в пхп сначала а потом уже верстку подхвачу как плюс минус пхп основы освою.
ну, подрочить теги наверно все равно придется т.к. хтмл/ксс все таки язык со своим синтаксисом и какие-то основы знать энивей придется. но это чисто мнение очередняры, папки мб не согласятся и че то другое посоветуют. жди
Аноним 10/11/20 Втр 10:20:02 185243882
>>1852001
Что много? Ключи $89.00 примерно 7000, после НГ будет стоить дороже на 20% из-за НДС, ну и рубль дно прошибет опять.
Аноним 10/11/20 Втр 13:56:02 185256683
>>1852288
сам вкатываюсь только, и чем дальше в php, тем все больше понимаю что верстка(на деле не так сложно учить) + хотя бы основы JS просто обязательно надо знать будет
Аноним 10/11/20 Втр 15:41:04 185264484
mem-nu-eto-bizn[...].jpeg 50Кб, 700x587
700x587
>>1852277
>Аноны сеньоры, расскажите как вкатиться верстальщиком
Тру сеньоры никогда бы не посоветовали становиться верстальщиком in the first place. Верстальщик - это низшее звено в пищевой цепи, самая ебаная, низкопробная и низкооплачиваемая специальность. Наподобие дворника или разнорабочего на стройке. Верстают HTML только те, кто ничего больше делать не умеет. Если ты хочешь получать зарплату больше, чем только на сиги и пивас, я бы советовал приобрести больше навыков, чем только знание HTML/CSS.

>хоть на кусок хлеба заработать себе
Если ты себя не ценишь - никто тебя ценить не будет. Если просишь на кусок хлеба, тебе и дадут ровно кусок хлеба. Потому что ты сам себе назначил такую цену. Никто тебе не скажет, "сорри, чувак, но ты стоишь 100 тысяч как минимум". Скажешь 10 тысяч, тебе десятку и назначат.
Аноним 10/11/20 Втр 16:03:08 185265985
>>1852277
Почему в php треде спрашиваешь? По вопросу - берёшь и верстаешь без задней мысли, лендинг сверстай, потом многостраничник, настрой всякие вебпаки и сасы что бы удобней было. В процессе гуглишь нужные тебе теги и как это лучше сделать. Потом пиздуешь на фрилас верстать лендосы за 2к)
Аноним 11/11/20 Срд 08:02:51 185326986
Proof+that+even[...].png 124Кб, 378x330
378x330
ОП, вызываю тебя.

https://ideone.com/42dzWV

Сделал задачу про Grammar Nazi, хочу теперь от тебя узнать где я тут обсренькался и как пишут регулярки нормальные люди. Еще никак не мог понять как работает preg_replace и эти $0 и $1, но методом проб, ошибок и гугления что-то смог намутить, еще не всегда понимаю где нужны круглые скобки, а где нет.

пикрелейтед челибос у которого плавится мозг от регулярок
Аноним 11/11/20 Срд 12:43:52 185341287
тред официально сдох, как и php кста
Аноним 11/11/20 Срд 13:44:06 185347488
Аноним 11/11/20 Срд 13:52:05 185348089
>>1853412
Когда в треде отвечают два/три раза в день = тред сдох или Чи тролли?
Аноним 11/11/20 Срд 15:02:23 185353290
Аноним 11/11/20 Срд 21:49:56 185392891
>>1853412
Знаете, в мере вокруг столько негатива, все кругом грязное, а хочется чего-то светлого, я хочу рассказать вам о Битриксе. Вы бы хотели пустить Битрикс в свой дом?
Аноним 11/11/20 Срд 23:56:45 185398992
>>1852287
1. Основы html/css
https://webref.ru/
http://htmlbook.ru/
2. проанализировать вакансии - дальше сам поймёшь куда надо двигаться

P.S. обязательно нужно практиковаться
P.S. #2 Вёрстка и JS связаны https://learn.javascript.ru/
P.S. #3 возможно не стоит сильно углубляться в специфические моменты(сложные css-анимации), а то долго будешь учиться до получения первого оффера

Аноним 12/11/20 Чтв 00:46:24 185400793
Пиздец, я дошел до функций и охуел просто. Я искренне пытался вникать в каждый этап, решая задачки но это же пиздец какой то с этими ебучими массивами и циклами. Столько всего нужно держать в голове чтобы понимать когда и как использовать эти приколы. Только я плюс минус запомню как работают массивы так потом появляются ебучие циклы И ВСЕ ЭТО НАДО КОМБИНИРОВАТЬ. Массив в массиве, цикл в цикле, еще и миллион этих ебаных функций. Я просто охуеваю. Неужели я один такой бездарный даун которому так сложно в погромирование?
Аноним 12/11/20 Чтв 00:52:31 185400994
>>1854007
Не один, не парься. Просто нужно перепотеть (я так и не смог в вузе, потому буду дрочить снова )
Аноним 12/11/20 Чтв 00:54:56 185401095
>>1854009
я решил по другой тропинке пройтись. скачал курс борисова. говорят лучший для освоения базы пхп
Аноним 12/11/20 Чтв 00:58:43 185401196
>>1854010
Расскажи потом, как оно :3
Аноним 12/11/20 Чтв 00:59:50 185401297
Аноним 12/11/20 Чтв 04:06:45 185405498
>>1854007
Это ты еще до регулярок не дошел, у меня тоже было много проблем с циклами в первое время, но регулярки это просто пиздец. В любом случае, я заметил что постепенно любую задачу можно решить, мне понадобилось несколько раз дропать учебник на длительное время (2-3 месяца), чтобы хоть как-то продвинуться, сейчас нахожусь на главе "Повторим?". Главное не сдавайся, анон, и не скипай задачи. Если уже окончательно на курс перешёл, то потом как пройдешь, вернись к задачам из учебника.



Аноним 12/11/20 Чтв 11:35:02 185416499
Спасибо оп, за проделанную работу. Очень приятно и понятно читать сайт обучалку. Но я тут же стопорнулся на второй задачке с командой mt_rand, погуглив понял что нужно вбить в неё два числа, минимальное и максимальное. Жаль ты не сказал это в уроке.
Аноним 12/11/20 Чтв 12:01:57 1854186100
Аноним 12/11/20 Чтв 12:07:00 1854187101
tenor[1].gif 360Кб, 498x498
498x498
>>1854186
Понял принял. Таки осилил следующую задачку про кости с компуктером. На самом деле выглядит все как в школе с вижуал бейсик. Прямо чувствую как извилины напрягаться начинают, лел.
Аноним 12/11/20 Чтв 12:31:27 1854197102
<?php

for ($x = 0; $x <= 10; $x++) {
$y = $x * $x;
echo "$x x $x = $y \n";
}

Вопрос по следующей задачке, в echo нельзя сразу вбить умножение, что бы не вводить еще одну переменную y, а что бы он прямо в echo подсчитывал?
Аноним 12/11/20 Чтв 13:04:44 1854216103
>>1854197
А ты попробуй, потом расскажешь нам
Аноним 12/11/20 Чтв 13:36:54 1854232104
Набросал я простую страничку для рассчёта кредита как в задаче.
Задал несколько строк в форме, для передачи параметров в файл php.

Но все это выводит у меня в новой странице простым тексом. Как сделать что после рассчёта данные выводились (добавлялись) на ту же страницу с вводом данных? Я так понимаю как минимум надо использовать метод post?
Аноним 12/11/20 Чтв 14:46:22 1854267105
Сап.

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

Поэтому вопрос к анону за сколько деняк он взялся бы за это дело.

Собственно на начальном этапе я вижу это вот как:
1) Есть табличка excel (или csv-файл, как тут советовал анон, не принципиально) со столбцами "ФИО, адрес, номер телефона, сумма в рублях" мб еще 1-2 столбца
2) Табличка загружается в веб-приложение
3) Для каждой строки генерируется пдф-файл и сохраняется на сервере для дальнейшего скачивания (или еще лучше весь этот пак качается зип-архивом, например)
???
PROFIT


Анончик тут писал, что это лучше всего сделать через wkhtmltodpf. В html-шаблоне время от времени нужно будет редактировать 1-2 абзаца (в начале и в конце файла).

Напишите, плиз, за сколько бы запилили такую хуйню?
Аноним 12/11/20 Чтв 15:40:07 1854297106
>>1854232
Вопрос времено решил тем, что в файле php выполняется функция с аргументами из гета и после дублируется весь код страницы с дополнительными строками в которых отображается результат выполнения функции php.
Но это слишком тупо и в лоб чтобы быть правильным решением. Прошу совета бывалых.
Если важно, то сервер использую встроенный в php
Аноним 12/11/20 Чтв 18:34:09 1854492107
>>1854297
Я не понял. Ты используешь хтмл файл, который отправляет запрос на сервер и уже средствами пыхи генерируешь такую же страничку но уже через пхп?
Если да, то бы почему не сделать одну точку входа, которая смотрит, был ли пост запрос и выводит результат
Аноним 12/11/20 Чтв 18:44:54 1854497108
>>1854492
Да, я тоже сейчас подумал о чем то похожем, использовать файл php с функцией и разметкой. Чисто ради интереса, а как из пыхи добавлять в другой файл хтмл новые теги? Или чтобы они становились видимыми по условию из результатов в файле пыхи
Аноним 12/11/20 Чтв 19:46:09 1854548109
>>1853269

$0, $1 работают так:

Когда делается поиск в тексте по регулярке, запоминается, какие части регулярки совпали с какой частью текста. $0 - это весь текст, с которым совпала регулярка. $1 - это текст, с которым совпали первые круглые скобки в регулярке, $2 - вторые и так далее.

Например, если дан текст "кот и мышь" и регулярка /к(.(.))/u то $0 = "кот", $1 = "от", $2 = "т". Эти значения ты можешь использовать в строке для замены в preg_replace. А если ты просто проверяешь текст на соответствие регулярке с помощью preg_match, то она заполняет массив этими значениями.

Твой код видит ошибку в фразе "одно дно": https://ideone.com/BBCBsl

Это из-за того, что не очень удачно продумана регулярка для а/но без запятой. Вообще, регулярки, ищущие отсутствие чего-то писать сложнее, так как регулярка в первую очередь заточена под поиск наличия каких-то символов.

Я бы добавил \b вокруг слов а, но, чтобы регулярка не принимала любые слова, которые содержат в себе эти буквы.

Аноним 12/11/20 Чтв 19:53:45 1854554110
>>1853269

Круглые скобки нужны в таких случаях:

- чтобы применить квантификатор вроде звездочки или плюса не к одной букве, а к группе: сравни (абв)+ и абв+
- чтобы сгруппировать перечисляемые через | варианты: сравни (а|б|в)где и а|б|вгде
- чтобы "захватить" часть найденной строки и использовать позже как $1, $2 итд.

>>1854007

Ну в этом и суть программирования: из простых элементов, как из кирпичиков, собирается сложная программа. Реальные приложения могут содержать 100 000 строк кода, так что тренируйся пока на простых программах. Надо научиться писать и читать код с циклами, массивами и функциями, на автомате.

Аноним 12/11/20 Чтв 19:54:46 1854556111
>>1854497
>добавлять в другой файл
Прозвучало, как будто ты открываешь пустой файл, пишешь внутрь разметку, закрываешь, а потом показываешь, кек

<?php if ($_GET['some_shit]): ?>
разметка-разметка
<? endif; ?>

Либо вынеси разметку в отдельный файлик и по условию делай include, например.
Аноним 12/11/20 Чтв 19:56:07 1854557112
>>1854556
>вынеси разметку
уникальную разметку в смысле. Надеюсь, ты в курсе, что можно подключить хоть 10 файликов с тегами
Аноним 12/11/20 Чтв 20:01:57 1854561113
>>1854197

Нет. В строку можно подставлять переменные, но не выражения из них.

>>1854232

Можно сделать так:

- если форма заполнена и отправлена, то взять данные, посчитать результат, вывести его
- вывести форму

При таком подходе ты отправляешь форму на ту же самую страницу. То есть у тебя один скрипт, например, calc.php и делает расчет, и выводит форму.

Смешивать HTML-шаблон и логику на PHP считается дурным тоном, потому лучше сделать так, чтобы вначале шла вся логика, а в конце - только HTML-шаблон с подстановкой переменных:

- естьРезультат = false
- если форма заполнена и переданы ее данные, то посчитать результат и присвоить переменной естьРезультат=true
----- конец логики, начало шаблона----
- если естьРезультат, то вывести его
- вывести форму

>>1854497

В HTML файл ты ничего не можешь добавить. Ты должен генерировать HTML из PHP кода, как описано тут: https://www.php.net/manual/ru/language.basic-syntax.phpmode.php
Аноним 12/11/20 Чтв 20:48:06 1854616114
Аноним 12/11/20 Чтв 21:07:23 1854641115
Аноны, немного такой вопрос:
По работе пилю приложуху. Она простая - slim + sql.
Вот допустим есть таблица "событие", она связана с другими таблицами.
И когда условно в контроллере я беру выборку по "событиям" - мне нужно так же куча связанной инфы с выборкой "событий" из разных других таблиц. Я делаю просто - sql запрос с кучей объединений.

Но вот у меня такой вопрос, допустим "событие" связанно с таблицей "статья". И для "события" и для "статьи" у меня есть классы отдельные, т.е. модели.
Возникла мысль.
Не получается ли что когда я в контроллере запросом выбираю все события , а так же связанную инфу, из других таблиц( для которых есть отдельные классы-модели) одним запросом с объединениями - нарушаю принцип единой ответственности?
Не должен ли я в методах модели "события" получать инфу о связанных с этой моделью "статьям" - вызывая для этого соответствующие методы модели "статьи"?
Т.е. класс "события" работает только с таблицой "события", а класс "статья" - касается только таблицы "статья". А как реализовывать транзакции? Передавать объект коннекта из одного метода класса в метод класса другого объекта? Допустим для того что бы одномоментно в нескольких таблицах insert-ы реализовать.
Аноним 13/11/20 Птн 00:22:52 1854735116
Вопрос про трекинг времени для тестов в задаче на тестхаб. Как у меня получилось: когда юзер открывает тест с вопросами, то создается сессия с датой старта, а потом при сдаче эта дата сверяется с дедлайном теста. А что делать, если, допустим, юзер открыл тест, а потом закрыл браузер и не стал отправлять ответы? Я думаю просто написать скрипт для крона, который будет запускаться каждые 30 минут, чекать все сессии с тестами на время и если дедлайн истек, то ставить отрицательные оценки. Норм решение или как-то по-другому лучше сделать?
Аноним 13/11/20 Птн 00:39:54 1854746117
>>1854616
немало, придется брать кредит ради такого. подожду еще ставок
Аноним 13/11/20 Птн 01:51:53 1854778118
>>1854641
> в методах модели "события" получать инфу о связанных с этой моделью "статьям"
как-то так
> класс "события" работает только с таблицой "события", а класс "статья"
Если так получается то лучше сделать попростому (тоесть так). У тебя простые модели которые замаплены на бд с помощью ORM. Но структура таблиц бд может быть не очень удобна (так как к ним свои требования не связаные с бизнес логикой). Тогда у тебя слой моделей (domain model) которые преставляют бизнес-логику так как ее удобно сделать. Этой слой использует уже нижний слой простых ORM моделей. Ну или делает какие-то выдроченые зщапросы к бд если требования к производительности.
Аноним 13/11/20 Птн 09:47:58 1854872119
https://ideone.com/HbUn3J
Почаны, почему на втором месяце срабатывает
if ($creditBalance <= 5000), ведь кредит баланс там явно больше 5к?
Аноним 13/11/20 Птн 11:25:30 1854922120
пыха.png 66Кб, 1129x925
1129x925
шаблон.png 52Кб, 887x726
887x726
результат.png 22Кб, 691x491
691x491
Я все ещё пытаюсь написать нормальную страницу для рассчёта кредита в браузере.
Благодарю за вчерашнюю помощь. Прочитал ещё раз гайд от ОПа про шаблоны и поптылася реализовать на работе. Результаты на пике.(на работе код не могу скинуть, сори)
Пик 1. Скрипт пыхи который получает из гета входные данные и обрабатывает их, после подключает шаблон хтмл
Пик 2. Собственно сам шаблон хтмл, куда вставляются результаты работы скрипта
Пик 3. Что вижу в браузере.
Вопрос в правильном ли я направлении иду? Где косяки и что лучше делать по другому?
Аноним 13/11/20 Птн 11:28:58 1854924121
j3C1YO5.jpg 32Кб, 702x478
702x478
ОП, запрашиваю проверку задачи про Shift. 3 дня пыхтел и каком кверху написал регулярки, все вроде работает, но я не понимаю почему, например, если вместо двух вопросов идущих подряд написать 3, то скрипт все равно корректно работает. Ну и как можно было сократить код и есть ли у меня тут явные ошибки.

https://ideone.com/JQ1Ejb

Аноним 13/11/20 Птн 11:51:04 1854943122
>>1854872
>if ($creditBalance <= 5000)
У тебя ; стоит после закрывающей скобки, поэтому условие перестает работать и в переменную $monthlyPayment попадает большое число.
Аноним 13/11/20 Птн 12:41:03 1854977123
>>1854922
>Вопрос в правильном ли я направлении иду? Где косяки и что лучше делать по другому?

Для начала нормально. Теперь этот код разбить на функции, чтобы не писать exit(); а просто при выполнении условий вызывать функции. Шаблон луче тоже сделать php, если обратиться к нему напрямую, то в браузере будет виден весь код.
Ну и вместо if elseif elseif в шаблоне попробуй switch case. Еще не понятно зачем фильтровать выводимый результат, он же у тебя float там не может быть символов которые ты пытаешься отфильтровать при помощи htmlspecialchars(). Фильтровать нужно входные данные, что собственно у тебя и сделано.

Можно теперь попробовать ajax, когда отправка идет без перезагрузки страницы.

Либо если с фронтом тяжело, то можно попробовать ООП, эту логику перенести в отдельный класс и уже его дергать из твоего скрипта создать экземпляр класса передав в конструктор входные параметры, вызвать метод расчета, если он нам вернул true, вызвать методы которые вернут месяцы и полную стоимость и передать в шаблон, если false то вызвать метод с ошибками и передать в шаблон. Короче сделать отдельную "коробочку" которая все считает и которую можно применить в других местах без модификации. Для начала будет тяжело и непонятно, но на работе чаще всего придется именно так и делать в ООП. Пытайся смотреть в ту сторону.
Аноним 13/11/20 Птн 12:48:59 1854979124
>>1854977
Спасибо, буду работать дальше

На счёт свитча, я изначально хотел сделать, но не понял как использовать конструкцию типа
<?php switch: ?>
<?php case 1: p>
<?php case 2: p>
<?php endswitch; ?>

Надо ли тут вставлять break и в каком формате? Типо
<?php switch: ?>
<?php case 1: p>
<?php break; ?>
<?php case 2: p>
<?php break; ?>
<?php endswitch; ?>

?
Аноним 13/11/20 Птн 12:51:23 1854982125
>>1854007
это еще херня,как выше сказали регулярки и еще deep OOP меня повеселило
Аноним 13/11/20 Птн 12:59:48 1854989126
>>1854979
Да в твоем случае break; обязательно, у тебя будут выполнятся все остальные условия, то есть пойдет в следующий case и до тех пор пока не будет break
Аноним 13/11/20 Птн 17:39:06 1855266127
Аноны, вкатываюсь веб из дезигна (делал различную графику и анимацию + монтаж. афтер/премьер,вегас) Так вот при изучении основ из учебника в закрепе, столкнулся с задачами на шифрование и понял что не получается у меня применить то что я уже изучил, сразу сходу. Не лучше ли после изучения основ начать смотреть какие-то видосы где автор учит простейшим процессам написания кода, повторять за ним, пытаться вникать в то что он пишет, разбираться в этом и таким образом набивать руку а потом уже пытаться самому что то делать/решать задачи?
Просто в дезигне именно по такой методике я обучался. Изучаешь теорию > повторяешь за автором практику применения каких-то плагинов, эффектов > потом имея уже какое-то представление начинаешь повторять популярные эффекты по гайдам с ютуба параллельно вникая как это делает > а потом уже набив руку ты можешь что-то самостоятельно свое делать.
Ну подойдет ли такая методика в изучении веба? Допустим я тупой и не могу в задачки сразу после теории. Могу ли я сначала изучить всю теорию, потом по гайдам писать код, вникая в него, а потом уже набив руку делать что-то свое и пытаться решать уже задачки?
Аноним 13/11/20 Птн 17:47:49 1855273128
>>1854922
Зачем ты выводишь пустой абзац в первом случае в шаблоне? Убери лишний р тег
Перегруппируй пыху, сделай по типу


если условие 1
работа с переменными 1;
если условие 2
работа с переменными 2;
иначе
работа с переменными 3;

вывести шаблон;


Тебе посоветовали использовать функции, но имхо тут довольно однообразный код, я не вижу в них смысла, всё и так прекрасно читается

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

И как придирка, переменные должны быть названы так, чтобы и без поясняющих комментариев другим было всё понятно. Что за cosma? Что именно perMonth? Любой мало мальский код ревью ты не пройдёшь.
Чуть позже рекомендую почитать psr стандарты и кодить согласно им, например, у нас всё оформляется по psr-12.
Аноним 13/11/20 Птн 18:46:35 1855338129
>>1855266
>Допустим я тупой и не могу в задачки сразу после теории
Я сам как вкатывающийся (и мягко говоря не самый умный, на лету не схватываю, думаю долго), все же посоветую тебе просто долго и упорно пытаться их самому решить, никуда не подглядывая, кроме теории в учебнике и официального мануала. Если уж совсем невмоготу, то спроси непонятные тебе моменты в треде. Я заметил, что лучше начинаешь мыслить и ориентироваться в коде, изучая основы языка именно путем решения задач (самостоятельно или почти самостоятельно).
Аноним 13/11/20 Птн 19:48:36 1855394130
>>1855273
Спасибо, попытаюсь применять в следующих программах
Laravel Аноним 14/11/20 Суб 00:03:30 1855565131
Вопрос: как в Laravel-проекте грамотно создать файл index.php, чтобы сайт работал?

Сап, ПХПеч! Я изучаю фреймворк Laravel, уже часовой гайд просмотрел, в принципе тренировочный проект работает через "php artisan serve". А я хочу обыграть ситуацию, если мне надо сбросить проект с локалки на реальный сервер и чтобы сайт работал с реального сервера. Тут возник ступор с файлом index.php — его нет.

Тем не менее, в корне есть файл startup.php, который подгружает всё с собой. Я его переименовал на index.php и это частично сработало: при переходе на сайт slonik.com/ сайт грузится, но при переходе на slonik.com/reviews, slonik.com/about и т.п. вылетает ошибка 404.


Аноним 14/11/20 Суб 00:38:10 1855587132
>>1855565
Але, гараж У тебя в мамке папке public лежит index.php. Папка public должна быть web root для твоего сервака.
Аноним 14/11/20 Суб 00:44:42 1855595133
>>1855565
Для того что бы открывались какие то страницы, их нужно сначала указать в роутах, идёшь в routes и указываешь в файле web.php маршруты.
Аноним 14/11/20 Суб 00:45:16 1855596134
Аноним 14/11/20 Суб 01:05:57 1855607135
>>1854872
https://ideone.com/E54kEA
Как-то так?
>>1854943
А в чем разница писать ; после { или до? На что это влияет? Если бы ты это не сказал я бы вообще не понял. Я вообще искал ошибку в переменных, думал они где-то не так стоят.
Аноним 14/11/20 Суб 01:49:05 1855641136
>>1853989
спасибо анон, 300кк в наносекунду тебе
Аноним 14/11/20 Суб 03:51:00 1855689137
>>1855587
>>1855596
У меня апач (openserver). В корень поставил файл .httaccess прописав
DirectoryIndex public/index.php
но это не помогло, по-прежнему заходит только на slonik.com/, а на остальных путях выдаёт 404

Есть варианты?
Аноним 14/11/20 Суб 05:31:14 1855733138
Аноним 14/11/20 Суб 10:43:39 1855849139
>>1855266
Возьми другой задачник по пхп. Не можешь функцию написать как 2+2 сложить?)
Аноним 14/11/20 Суб 10:51:34 1855852140
>>1854922
выучи PSR.
If () - пробел нужен
$_GET == "" - пробелы ставь.
if () { - пробел
$date++ - тут не нужен пробел

Между строками по смыслу - отступы делай
if {
} else { - сюда else вставляй
}

Комментарии не уводи так далеко.

floatval() - та можешь забыть уже эту функцию и их подобие, ставь так:
(float) $int или (string) $str - это переведёт в этот тип.

Ну и конечно сразу учись делить на функции код.
Аноним 14/11/20 Суб 11:09:35 1855858141
>>1854267
Сохранить каждую строку из экселя в пдф-файл? За каких 200$ сделаю, пиши, договоримся.
it.craftsman@protonmail.com
Аноним 14/11/20 Суб 11:38:44 1855868142
>>1855852
Спасибо, буду изучать psr. Я так понимаю мне надо psr12 и psr1 в первую очередь
Аноним 14/11/20 Суб 20:05:37 1856210143
>>1854778
>>У тебя простые модели которые замаплены на бд с помощью ORM.
ORM - это можно назвать то, как у меня мои модели "замаплены" на таблицы в базе?
Так то я никаких либ типа eloquent не юзаю.
>>Тогда у тебя слой моделей (domain model)
Где почитать подробнее про эти "слои", и как их реализовывать в приложении? Не оч понимаю, может книгу какую?
Аноним 14/11/20 Суб 20:20:38 1856219144
>>1856210
еще вопрос

У меня контроллер, в нем должно быть много разных данных подтягиваться из разных таблиц. И выводиться в шаблон.
Для каждой таблицы своя модель.
по идее нужно все это от контроллера как то абстрагировать, но я придумать как не могу пока
И вот все эти модели я подгружаю через конструктор этого контроллера
типа так
public function __construct(){
//допустим
$this->authors = new AuthorsModel()
}
Это по идее противоречит вообще инверсии зависимостей.
Но в контроллер добавлять все эти классы через конструктор new Controller(...) - как то диковато.

В слиме есть контейнер зависимостей - но не пихать же в него все модели?

Мне бы как прмиер какое то хорошее приложение на слим, или ларавел - где все эти слои и организация кода видны правильно. Что бы один раз на примере понять как нужно делать.
Аноним 14/11/20 Суб 20:25:39 1856228145
>>1854641

> Не должен ли я в методах модели "события" получать инфу о связанных с этой моделью "статьям" - вызывая для этого соответствующие методы модели "статьи"?

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

В ORM это решается за счет прокси-классов и ленивой загрузки. То есть, когда ты просишь событие - тебе возвращают объект события, а внутри него вместо массива связанных статей прокси-коллекция. Когда ты обращаешься к ней, чтобы прочитать статьи, она подгружает их из БД и возвращает соответствующие объекты.

> А как реализовывать транзакции?

По идее, классы для работы с таблицами все должны использовать одно и то же соединение с БД, и соответственно, транзакции должны работать сами собой. Например, так:

$db->transactional(function() {
$articleTable->insert(...);
$eventTable->insert(...);
});


Аноним 14/11/20 Суб 20:33:53 1856239146
>>1854735

Да, хороший вариант.

>>1854922

Не очень красиво, что у тебя в трех местах делается require. Красивее, если require будет один и в самом конце скрипта.

Расчет кредита стоило бы поместить в функцию.

Для значений $resultState лучше использовать не цифры, а константы с понятными названиями вроде:

const RESULT_EMPTY_INPUT = 1;
const RESULT_NOT_ENOUGH_MONEY = 2;

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

Значения в $_GET могут отсутствовать и это вызовет предупреждения (которые у тебя почему-то не выводятся, зря ты их отключил). Надо либо проверять явно, что они есть (if (isset($_GET['x])) либо использовать ??: $a = floatval($_GET['x] ?? 0);


Аноним 14/11/20 Суб 20:45:07 1856248147
>>1854924

Регулярку для разбиения предложений можно было бы упростить так:

- до места разбиения идет один из знаков точка, вопрос, восклицание, после - идет не-знак (т.е любой другой символ).

Такая регулярка будет разбивать предложение за последним знаком в группе из нескольких знаков. Похожая регулярка подойдет и для добавления пробелов.

> но я не понимаю почему, например, если вместо двух вопросов идущих подряд написать 3, то скрипт все равно корректно работает

Он разбивает группу из 3 вопросов: ??? на 2 "предложения": ?? и ?, но потом их склеивает обратно в implode() и проблема не заметна.

>>1854977

ВОобще, switch/case неудобно использовать в шаблоне и elseif удобнее.

ООП тут использовать нет особого смысла, так как непонятно что делать объектом.
Аноним 14/11/20 Суб 20:49:59 1856251148
>>1855689

Корень сервера в Апаче настраивается директивой DocumentRoot в конфиге Апача (а не в htaccess).

>>1855607

Точка с запятой обозначает конец команды. То есть в случае

if ($x > 0) ; {
....
}

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

В случае с if, точку с запятой можно было бы писать после закрывающей скобки } , но это не требуется и потому никто так не пишет.
Аноним 14/11/20 Суб 20:57:07 1856257149
>>1856210

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

Вроде:

class User
{
private $email;
private $username;
...
}

Если ты возвращаешь массивы, то это не ORM.

>>1856219

"Модель" - это обычно объект вроде того, что написано выше. Который представляет собой одну сущность из БД (а не всю таблицу). У тебя не AuthorsModel а AuthorsRepository, или AuthorsDataGateway (смотри паттерн Table Data Gateway).

> В слиме есть контейнер зависимостей - но не пихать же в него все модели?

именно туда их и стоит класть.
Аноним 14/11/20 Суб 21:45:14 1856299150
>>1856257
Ок, спасибо за ответы.

А по слоистой архитектуре подскажешь что почитать? И лучше с живым примером.
А то я в "в общем" почитал, а по факту мне явно нужно из контроллера все эти классы по которым я из БД данные получаю куда то наверх абстрагировать, типа слой приложения что ли.
В контроллере же еще какая то логика выполняется. Я вообще зачатки это абстракции обозначил - вывел отдельный класс. Но пока не понимаю как правильно.
Аноним 14/11/20 Суб 22:34:02 1856328151
>>1855565
>>1856251
У меня таки получилось деплойнуть ларавель-сайт из локалки в продакшн-сервак. Скопировал .htaccess из public-директории в корень, немного подправил пару строк и заработало.
Аноним 14/11/20 Суб 23:06:48 1856342152
>>1856328
Пиздец я хуею с пэхепешников
Аноним 15/11/20 Вск 00:35:12 1856371153
>>1856342
А ты у нас из какой области? И что тебя в пиэйчпишниках не оставляет равнодушным?
Аноним 15/11/20 Вск 01:55:48 1856405154
>>1856371
Не забудь .env файл в deny from all добавить, если все через жопу любишь делать.
Аноним 15/11/20 Вск 05:38:08 1856475155
php-soft-engine[...].jpg 28Кб, 640x640
640x640
Аноны, я вот уже очень близок к уровню знаний с которыми можно спокойно искать работу, но недавно понял, что РАБотать я совсем не хочу. Планирую начинать двигаться в сторону фриланса. Посоветуйте что учить для успешного поиска заказов на фрилансе? Тяжело ли вкатится туда пхп новичку без опыта? Хватает ли там достойных заказов или же придется всю жизнь говнякать один вордпресс?
Аноним 15/11/20 Вск 06:33:15 1856487156
>>1849078 (OP)
Правильно понимаю, что в PHP нельзя просто взять и отдать данные на запрос? В ноде например можно прослушивать порт, принимать с него запросы и отправлять ответы. В Go тоже самое. Наверное почти в каждом языке так. Как в PHP такое сделать? Мне нужно просто слушать порт и кидать туда респонсы.
Аноним 15/11/20 Вск 08:51:54 1856522157
>>1856475
Иди на удалёнку в команду на галеру на годик, чтобы дотянули до мидла.
Аноним 15/11/20 Вск 08:57:45 1856527158
>>1856487
Что ты хочешь сделать? В чём задача?
Весь бэкенд это брать реквесты и отправлять респонсы, везде это есть.
Аноним 15/11/20 Вск 09:25:49 1856533159
>>1856527
Разве не ясно написано? Ты писал hello web на node.js, go? Создается хендлер, принимающий запрос и отправляющий ответ. Создается функция листенер, которая слушает порт и передает соединение с клиентом хендлеру. Код привести для примера? В PHP же все не так, верно? Я не могу нагуглить такой же пример на PHP. Ну вот нету их. Почему то сразу обработка форм. Мне она накой не нужна. В любом языке, на котором можно писать веб-приложения, в доке есть пример простого сервера с одним общим хендлером. Есть такое в PHP?
Аноним 15/11/20 Вск 09:37:04 1856536160
>>1856475
>Посоветуйте что учить для успешного поиска заказов на фрилансе? Тяжело ли вкатится туда пхп новичку без опыта? Хватает ли там достойных заказов или же придется всю жизнь говнякать один вордпресс?
Еще ни дня не говнякал, а уже планы на всю жизнь? Ну откуда вы беретесь? Сделай хоть 10 заказов, хоть на вордпрессе, денег поднимешь, почувствуешь фриланс, опыта наберешься, потом жужжи про всю жизнь.
Аноним 15/11/20 Вск 09:48:53 1856540161
>>1856533
Если ты про асинхронный реалтайм, типа например ты хочешь чат сделать, то причём тут вообще язык программирования? Это не нод.js и не go тебе это делает, а протокол WebSocket. Следовательно какая разница на каком языке будет использоваться тот или иной протокол?

Вообще всё зависит от задачи.
Аноним 15/11/20 Вск 09:53:29 1856541162
>>1856540
>Если ты про асинхронный реалтайм, типа например ты хочешь чат сделать, то причём тут вообще язык программирования? Это не нод.js и не go тебе это делает, а протокол WebSocket.
Ну ты даешь, какие вебсокеты, обычный http.

>Вообще всё зависит от задачи.
Что в моем описании задачи не ясно написано? Похоже у тебя пхп-деформация. На других языках писал? Я могу код привести если надо. Надо?
Аноним 15/11/20 Вск 09:57:49 1856543163
>>1856540
>Если ты про асинхронный реалтайм
Что ты под этим понимаешь? Полнодуплексную связь? Так не подходит, написал же, что одна функция слушает порт, а другая обрабатывает запрос. Короче функция листенер это сервер. Другая это хендлер, обычный обработчик http запросов.
Аноним 15/11/20 Вск 10:02:21 1856544164
>>1856533
>> Создается хендлер, принимающий запрос и отправляющий ответ.
В первую очередь в ноде создается объект net.Server - который и представляет собой твой вэб сервер висящий в памяти, если угодно.
В пхп не так - модель выполнения другая. Вэб сервер там отдельно - аппач, нгникс или встроенные в пхп вэб-сервер. Два отдельных запроса в пхп не связанны друг с другом никак, нет никакого глобального лексического окружения в котором видны эти оба ззапроса.
Аноним 15/11/20 Вск 10:07:34 1856546165
>>1856541
> Создается хендлер, принимающий запрос и отправляющий ответ.
Любой сайт так работает.

>Создается функция листенер, которая слушает порт и передает соединение с клиентом хендлеру.
Любой сайт так работает.

Начни лучше с базовых основ для начала, потому что ты видимо не понимаешь как работает интернет) Поизучай HTTP, TCP, как реализованы сервера, сети.
Создаёшь сервер, ложишь туда пхп-файл - всё, можешь принимать реквесты, отправлять респонсы.
Аноним 15/11/20 Вск 10:09:25 1856547166
>>1856540
Нагуглил как черес сокеты сделать. Полстраницы кода. Еще и цикл нужен. Слишком много кода, это же PHP, язык для веба, не Си ведь чтобы строку в браузер по сокетам отдавать.

В PHP доке легаси пример со встраиванием <?php echo '<p>Привет, мир!</p>'; ?> в тело html документа. Еще нужно .php файл в директорию веб-сервера закинуть. Еще чтобы он отдавал адрес не http://localhost/hello.php, а http://localhost/ нужно в настройки сервера лезть. Такое не делать в 2020 году это еще хуже чем через сокеты, веб-разработка уровня 90-х.

Есть способы сделать более лаконично?
Аноним 15/11/20 Вск 10:15:12 1856548167
>>1856547
>Нагуглил как черес сокеты сделать. Полстраницы кода. Еще и цикл нужен. Слишком много кода, это же PHP, язык для веба, не Си ведь чтобы строку в браузер по сокетам отдавать.
Ничего не понял.

> Еще чтобы он отдавал адрес не http://localhost/hello.php, а http://localhost/ нужно в настройки сервера лезть.
Почитай что такое ЧПУ, ООП.
А лучше и не лезь в дебри, научись для начала просто запускать скрипт, складывать 2+2, выучи как привести к числу строку например. В ПХП всё лаконично, идеально, красиво, но до этого дорасти надо.
Аноним 15/11/20 Вск 10:16:10 1856549168
>>1856544
>В первую очередь в ноде создается объект net.Server - который и представляет собой твой вэб сервер висящий в памяти, если угодно.
Ну да, он же листенер.

>>1856544
>В пхп не так - модель выполнения другая. Вэб сервер там отдельно - аппач, нгникс или встроенные в пхп вэб-сервер. Два отдельных запроса в пхп не связанны друг с другом никак, нет никакого глобального лексического окружения в котором видны эти оба ззапроса.
А как же HTTP 1.1? В нем есть постоянные соединения. А, понял, запрос принял-отдал и умер? Но, есть же всякие fpm, они же позволяют держать соединение?
Аноним 15/11/20 Вск 10:22:36 1856551169
>>1856546
>Любой сайт так работает.
Нет, в PHP так не работает. В PHP веб-сервер выполняет файл по запросу, а не отдельный хендлер, и отдает его выполненным браузеру, примерно так.

>>1856546
>Любой сайт так работает.
Ну и как в PHP создать функцию сервера чтобы слушала рандомный порт? И чтобы не файл отдавал сервер в браузер, а выполнял определенный хендлер?

>Начни лучше с базовых основ для начала, потому что ты видимо не понимаешь как работает интернет) Поизучай HTTP, TCP, как реализованы сервера, сети.
Лол, я то понимаю как работает интернет, а у тебя видимо php-деформация. Вы же привыкли, что для того чтобы строчку в браузер отдать, нужно внедрить php код в html страницу, в других языках такого нет.

>Создаёшь сервер, ложишь туда пхп-файл - всё, можешь принимать реквесты, отправлять респонсы.
Ну да, то что я выше описал. Но не все сайты так работают, повторюсь, что в других языках по другому .Хорошо что PHP не был моим первым языком программирования. Я не хейтю его, просто эти особенности, они накладывают деформацию, а потом выясняется, что это только в php так.
Аноним 15/11/20 Вск 10:24:05 1856552170
>>1856547
>Такое НЕ делать в 2020 году это еще хуже чем через сокеты
Не лишняя, опечатка.
Аноним 15/11/20 Вск 10:24:50 1856553171
>>1856548
>Ничего не понял.

<?php
// AF_INET6 for IPv6 // IP
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die('Failed to create socket!');
// '127.0.0.1' to limit only to localhost // Port
socket_bind($socket, 0, 8080);
socket_listen($socket);

$msg = '<html><head><title>Goodbye, world!</title></head><body>Goodbye, world!</body></html>';

for (;;) {
// @ is used to stop PHP from spamming with error messages if there is no connection
if ($client = @socket_accept($socket)) {
socket_write($client, "HTTP/1.1 200 OK\r\n" .
"Content-length: " . strlen($msg) . "\r\n" .
"Content-Type: text/html; charset=UTF-8\r\n\r\n" .
$msg);
}
else usleep(100000); // limits CPU usage by sleeping after doing every request
}
?>
Аноним 15/11/20 Вск 10:26:50 1856556172
>>1856548
>Почитай что такое ЧПУ, ООП.
Лол, ЧПУ это чисто пхпэшная тема. ООП тут вообще не при делах.
Аноним 15/11/20 Вск 10:31:14 1856559173
>>1856548
>В ПХП всё лаконично, идеально, красиво, но до этого дорасти надо.
Лол, очень лаконично (лаконично - кратко), чтобы строку в браузер отдать нужно смешать php код c html кодом. А чтобы отдать на <хост>:<порт>, а не <хост>:<порт>/index.php нужно веб-сервер настраивать.
Аноним 15/11/20 Вск 10:41:06 1856564174
>>1856549
>>А как же HTTP 1.1? В нем есть постоянные соединения. А, понял, запрос принял-отдал и умер?
Именно так. Постоянные соединения, типо сокетов - не для пхп. Есть фреймворки, но там это реализуется через боль.

>>1856551
>>Ну и как в PHP создать функцию сервера чтобы слушала рандомный порт?
Сам скрипт пхп ничего не слушает. Слушает вэб-сервере на котором пхп исполняется. Короче если совсем грубо - пхп это надстройка над апачем или нгниксом, такая уж модель сложилась.

>>потом выясняется, что это только в php так.
Ну фактически это вроде как единственный язык с такой моделью выполнения. У этого есть и плюсы и минусы, и море споров вокруг. Я лично недостаточно компетентный что бы тут какое то мнение иметь. Имеем то что имеем.

А так язык вполне полноценный, годное ООП, интерпретатор очень быстрый. Сейчас с 8 версией, с jit компиляцией - прям пиздец какой быстрый. Читал что каких то числодробильных тестах он с определенными условиями дает скорость чуть ли не как у с++. условный питон по скорости где то далеко в сраке.
Преимущество пхп - это его на самом деле оч зрелое и компетентное комьюнити.

Аноним 15/11/20 Вск 10:44:34 1856568175
>>1856559
Это не так. Все что требуется от сервера - настроить его на единую точку входа - и сервер все запросы кидает на условный index.php. А там уже все как у людей, создаем объект приложения, роутинг, модели, контроллеры, представления и т.д.

В любом случае даже если на ноде пишешь - придется пердолиться с вэб-серверами -
обратный прокси, статику отдавать, еще всякое.
Аноним 15/11/20 Вск 10:45:24 1856569176
Есть какой-то устоявшийся способ отрендерить реакт в хтмл на сервере (разумеется, только с использованием пыхпыхи)?
Аноним 15/11/20 Вск 11:35:31 1856589177
>>1856569
Нет. Там же нужно исполнять JS.
Аноним 15/11/20 Вск 11:37:28 1856591178
>>1856589
>Там же нужно исполнять JS.
Ну так 2020 год на дворе. Давно бы уже затащили V8 в пыху в виде расширения.
Аноним 15/11/20 Вск 11:38:30 1856592179
>>1856564
>Именно так. Постоянные соединения, типо сокетов - не для пхп. Есть фреймворки, но там это реализуется через боль.
Ты смешиваешь все в кучу. Сокеты с циклом можно, пример кода я привел. Постоянное соединение реализовано в HTTP 1.1, по идее должна быть реализация в PHP, позволяющая это использовать без написания сокет-соединения вручную. Ведь с базами данных есть постоянные соединения? Почему не сделали за 20 лет тоже самое для HTTP?

>Сам скрипт пхп ничего не слушает. Слушает вэб-сервере на котором пхп исполняется. Короче если совсем грубо - пхп это надстройка над апачем или нгниксом, такая уж модель сложилась.
Почему же. Сервер необязателен. Можно же через сокеты, просто файл запускаешь php index.php и он уже слушает бесконечно и обрабатывает запросы Можно через встроенный сервер, встроенный сервер это обычный PHP скрипт. Но это не то, не идиоматично для современной веб-разработки.

>Ну фактически это вроде как единственный язык с такой моделью выполнения. У этого есть и плюсы и минусы, и море споров вокруг. Я лично недостаточно компетентный что бы тут какое то мнение иметь. Имеем то что имеем.
>А так язык вполне полноценный, годное ООП, интерпретатор очень быстрый. Сейчас с 8 версией, с jit компиляцией - прям пиздец какой быстрый. Читал что каких то числодробильных тестах он с определенными условиями дает скорость чуть ли не как у с++. условный питон по скорости где то далеко в сраке.
>Преимущество пхп - это его на самом деле оч зрелое и компетентное комьюнити.
С этим не спорю. Вот и хочу попробовать как он по скорости. Может мне для поделок и сервер не понадобится на начальном этапе. Да и вообще так лучше пойму что как работает.
Аноним 15/11/20 Вск 11:38:52 1856593180
Аноним 15/11/20 Вск 11:40:42 1856595181
>>1856568
>Все что требуется от сервера - настроить его на единую точку входа - и сервер все запросы кидает на условный index.php. А там уже все как у людей, создаем объект приложения, роутинг, модели, контроллеры, представления и т.д.
Ну я и говорю, во первых сервер нужен, во вторых настраивать его. Я в этом не силен и пока не охота ввязываться. Собственно как запускать без сервера я уже придумал. Либо через сокеты либо через встроенный сервер.

>>1856568
>В любом случае даже если на ноде пишешь - придется пердолиться с вэб-серверами -
>обратный прокси, статику отдавать, еще всякое.
В продакшене только. Нода и так справляется.
Аноним 15/11/20 Вск 11:41:58 1856596182
>>1856591
>Ну так 2020 год на дворе.
Во, я тоже тут пытаюсь понять как php по современному использовать.
Аноним 15/11/20 Вск 11:46:02 1856599183
Аноним 15/11/20 Вск 11:54:54 1856604184
>>1856599
Не факт. На всяких shared хостингах V8JS вряд ли есть, т. е. решение не универсальное.
Аноним 15/11/20 Вск 12:17:15 1856618185
>>1856604
Шаред хостинги еще кто-то использует? Школьники которые потратили карманные на донат кумиру?
Аноним 15/11/20 Вск 12:18:50 1856621186
>>1856604
Ой, для него, похоже, ещё самому надо V8 на сервере компилять. Нафиг такое счастье.

Вопрос остаётся открытым: как с помощью пыхи отдать клиенту отрендеренный в хтмл реакт?
Аноним 15/11/20 Вск 12:23:54 1856623187
>>1856604
>На всяких shared хостингах V8JS вряд ли есть
Сейчас shared хостинги дороже обходятся виртуальных серверов. Что означает 4X Распределённых ресурсов? Нормальный виртуальный хостинг от 400 руб./месяц, там эти самые 4X Распределённых ресурсов, а ближе к средненькому VPS можно взять от 200 руб./месяц.
Аноним 15/11/20 Вск 12:25:35 1856624188
>>1856621
>СЛОЖНА!
Линуксом пользовался? Я пока не дочитал до установки, но думаю там не сложнее чем я у себя на домашнем линуксе пакеты ставлю.
Аноним 15/11/20 Вск 12:30:03 1856627189
>>1856621
>Вопрос остаётся открытым: как с помощью пыхи отдать клиенту отрендеренный в хтмл реакт?
Ну подумой, как можно выполнить реакт без ноды? У тебя сервер или что? Можешь прикрутить саму ноду без расширения для php, но это сложнее будет.
Аноним 15/11/20 Вск 12:32:11 1856628190
>>1856627
там нодой и не пахнет
Аноним 15/11/20 Вск 12:33:39 1856629191
>>1856628
>там нодой и не пахнет
Чем же там пахнет? Ему нужен SSR.
Аноним 15/11/20 Вск 12:36:20 1856632192
>>1856624
>Линуксом пользовался?
Клиентам от меня нужен код приложения, и ебаццо с V8JS буду не я, а сам клиент или какой-нибудь админ. А ебаццо с неведомой хуйнёй, которая ещё не факт, что заработает, не захочет никто (деплой нихуя не отлажен). Поэтому полагаться на V8JS нельзя.

P.S. Естественно, ни для чего нового пыха не используется. Однако в легаси-говно (вроде вордпресса или битрикса) могло бы быть полезно затащить SSR. Но пыха такая пыха...
Аноним 15/11/20 Вск 12:38:34 1856634193
Это какой же пиздец.писать бэк на основе Ноды
Аноним 15/11/20 Вск 12:43:21 1856638194
>>1856632
>Клиентам от меня нужен код приложения, и ебаццо с V8JS буду не я, а сам клиент или какой-нибудь админ. А ебаццо с неведомой хуйнёй, которая ещё не факт, что заработает, не захочет никто (деплой нихуя не отлажен).
На раз-два решается докером. Вот https://habr.com/ru/post/513682/
Аноним 15/11/20 Вск 12:43:49 1856639195
>>1856634
>Это какой же пиздец.писать бэк на основе Ноды
В чем пиздец?
Аноним 15/11/20 Вск 12:45:17 1856640196
>>1856632
>P.S. Естественно, ни для чего нового пыха не используется. Однако в легаси-говно (вроде вордпресса или битрикса) могло бы быть полезно затащить SSR. Но пыха такая пыха...
Кто сказал? Еще как используют. Разница какая, ну надо было бы к Go прикрутить V8, пришлось бы делать аналогичные телодвижения.
Аноним 15/11/20 Вск 12:47:44 1856643197
>>1856639
Экспресс используешь,монгу?
Аноним 15/11/20 Вск 12:54:09 1856650198
>>1856643
>Экспресс используешь,монгу?
Вопросом на вопрос отвечаешь? Можешь использую, может не использую. Какая разница, ответь в чем пиздец?
Аноним 15/11/20 Вск 12:58:12 1856655199
Аноним 15/11/20 Вск 12:58:53 1856658200
Аноним 15/11/20 Вск 12:59:00 1856659201
>>1856650
Нет возможности не говнокодить, в пхп хотя бы есть возможность.
Аноним 15/11/20 Вск 13:01:36 1856661202
>>1856655
ебаный велосипед собирать из +100500 библиотек,нет единой канвы,как у пхп фреймворков
Аноним 15/11/20 Вск 13:03:06 1856665203
>>1856638
>На раз-два решается докером. Вот https://habr.com/ru/post/513682/
И получается тормозное говно.
>Единственное что стоит здесь добавить — рендер может занимать достаточно долгое время

И, в любом случае, рядом с рабочими вордпрессами и битриксами никто не будет ставить неведомую хуйню вроде V8JS только ради SSR.
Аноним 15/11/20 Вск 13:05:02 1856668204
>>1856658
>жс на бэке
>>1856659
>Нет возможности не говнокодить
Конкретные примеры будут? Пока что слышу только пердеж
Аноним 15/11/20 Вск 13:06:27 1856669205
>>1856668
Конкретные примеры - это твой код на ноде.
Аноним 15/11/20 Вск 13:08:19 1856672206
>>1856661
>ебаный велосипед собирать из +100500 библиотек
А у похапэ все 100500 либ из коробки?

>нет единой канвы,как у пхп фреймворков
Какой еще нахер канвы?
Аноним 15/11/20 Вск 13:10:23 1856673207
>>1856672
В смысле канавы куда все php прогеры попадают после увольнения.
Аноним 15/11/20 Вск 13:10:57 1856674208
>>1856661
>нет единой канвы,как у пхп фреймворков
Ну, для таких предъяв нужно хотя бы немного знать экосистему ноды. А в этой экосистеме уже давно есть NextJS и NestJS, которые позволяют писать горизонтально масштабируемые легко поддерживаемые веб приложения любой сложности.
С другой стороны, пыха - это легаси-говно для написания немасштабируемых легаси-говномонолитов, которые при достижении определённых объёмов становится невозможно поддерживать.
Аноним 15/11/20 Вск 13:11:21 1856675209
>>1856665
>И получается тормозное говно.
Измерял, пруфы есть? Конечно же ты выяснил, что это именно из-за докера? В 2020 от докера минимальный оверхед. Скорее php расширения написаные дегродами будут тормозить.

>И, в любом случае, рядом с рабочими вордпрессами и битриксами никто не будет ставить неведомую хуйню вроде V8JS только ради SSR.
Так зачем ты вола ебешь с ssr? Или ты думал можно с помощью пары кликов к легаси гавну вордпресс и битрикс все что хочешь прикрутить?
Аноним 15/11/20 Вск 13:12:19 1856676210
>>1856669
>Конкретные примеры - это твой код на ноде.
Все ясно, школьник слился. Без примеров не приходи.
Аноним 15/11/20 Вск 13:13:27 1856678211
>>1856672
>А у похапэ все 100500 либ из коробки?
Забей. Это безмозглый школьник, который даже не слышал про composer/pear.
Аноним 15/11/20 Вск 13:14:07 1856679212
>>1856672
Нет,не все.На пыхе ты сразу начинаешь писать бэк
Когда единый дизайн со всем необходимым.
Эко ноды-низко урваневое говно.
А большой жс проэкт прям мечта перфикциониста?
Через пару лет превратиться в нечитаемое говно
Аноним 15/11/20 Вск 13:15:29 1856681213
>>1856678
Мне его поведение, напоминает кота, который не может просраться. И так мычит и эдак, а сказать ничего толком не может.
Аноним 15/11/20 Вск 13:15:30 1856682214
>>1856674
Но реальность такова что в пхп и ноде одни и те же лица. И в пхп и ноде код не поддерживают десятилетиями а переписывают, благо эти лица на рынке труда ценой пучок за пяток.
Аноним 15/11/20 Вск 13:19:37 1856684215
>>1856675
>Измерял, пруфы есть?
Я ж тебе цитату автора той заметки про V8JS с хабра дал, на которую ты сослался.
Аноним 15/11/20 Вск 13:20:42 1856685216
>>1856679
На пыхе кот тоже обычно сразу нечитаемое говно, причем со всеми сервисами, билдерами, фабриками, которые обычно используются не к месту, чистый карго культ.
Аноним 15/11/20 Вск 13:21:26 1856686217
>>1856679
Когда нужно сделать то, что php не умеет из коробки, начинается забивание гвоздей лопатой. У ноды экосистема очень развитая, если надо что-то нестандартное для всего есть уже либы, а в php если и есть что-то, то часто легаси. У тебя максималистское мышление. Всегда в крайностях. Пойми, что одним языком не решишь все задачи.
Аноним 15/11/20 Вск 13:23:05 1856687218
>>1856684
>Я ж тебе цитату автора той заметки про V8JS с хабра дал, на которую ты сослался.
Я должен щас на слово ему верить? Мало ли что там он пишет. Может у него руки из жопы и он не смог по человечески все сделать, а может просто не делал толком ничего и не мерял, а просто воздух сотрясает.
Аноним 15/11/20 Вск 13:24:35 1856688219
Аноним 15/11/20 Вск 13:26:31 1856689220
Аноним 15/11/20 Вск 13:29:25 1856690221
Аноним 15/11/20 Вск 15:56:08 1856793222
Какой-то студент-двачер, который аж хелоуворлд написал на ноде - ворвался в тред и пытается видимо что-то высрать/доказать, да несёт полную чушь.

Иди срать в тред со своей нодой, зачем тебе PHP? Что, на ноде деньги не платят, ибо нахер никому она не всралась а PHP решает все веб-задачи, поэтому приходится таки PHP учить?)
Аноним 15/11/20 Вск 19:24:37 1856940223
>>1856533

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

Если тебе нужно принимать запросы по протоколу HTTP - то тебе не нужно руками открывать порт, в PHP уже встроен веб-сервер с роутингом. Просто кладешь файл index.php, запускаешь веб-сервер и index.php будет запускаться при поступлении запроса GET /. В нем ты отдаешь любой ответ, какой хочется.

Заметь, что в отличие от Ноды, не нужно возиться и устанавливать сторонние библиотеки, все встроено. В отличие от Ноды, не нужно перезапускать сервер, если ты поменял что-то в коде index.php.

Если тебе не нужен HTTP, или просто хочется усложнить себе жизнь, то в PHP есть поддержка сокетов Беркли. Открывай любой порт и принимай на него любые запросы. https://www.php.net/manual/en/function.socket-listen.php

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

И ноду не приводи в пример. Более ужасный язык, чем JS, трудно себе представить. Ничего, кроме нечитаемой лапши, на нем не пишут (по моему опыту взаимодействия с фронтенд-специалистами).
Аноним 15/11/20 Вск 19:33:48 1856947224
>>1856299

Не знаю, того, кто рекомендовал слои, наверно и надо спрашивать.

Обычно код на слои разбивают так, что каждый слой взаимодействует только с низлежащим. Рисунок есть, например, тут: https://martinfowler.com/eaaCatalog/serviceLayer.html

При этом каждый слой отвечает за что-то свое. Например, data source layer на картинке отвечает только за получение/сохранение данных из БД, domain model - за бизнес-логику, service layer - делает сложные операции, требующие совместной работы нескольких низлежащих классов.

Такая схема подразумевает использование ORM вроде Доктрины, без него отделить domain model от data source layer сложно.

В простом приложении тебе вполне хватит 2 слоев: слой контроллеров и слой сервисов с бизнес-логикой. В контроллере происходит контроль прав доступа, разбор пришедших от пользователя параметров, вызов нужных сервисов.

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

Вообще непонятно, о чем речь и что ты называешь "слоем приложения".
Аноним 15/11/20 Вск 19:44:11 1856954225
>>1856541

В твоем первоначальном описании ничего про HTTP не было сказано, отсюда и непонимание, чего тебе нужно. Существует множество других протоколов, кроме HTTP.

>>1856547

Ты опять свою неграмотность выдаешь за недостатки PHP. Плохо гуглишь. Элементарно настройками веб-сервера можно перенаправить все запросы на один скрипт и в нем вручную маршрутизировать URL как угодно. В случае встроенного в PHP веб-сервера, например, скрипт маршрутизации просто указывается в командной строке: https://www.php.net/manual/ru/features.commandline.webserver.php

> Полстраницы кода. Еще и цикл нужен. Слишком много кода, это же PHP, язык для веба, не Си ведь чтобы строку в браузер по сокетам отдавать.

В ноде или Го без сторонних библиотек еще больше кода будет. В отличие от них, в PHP уже есть встроенный HTTP-сервер. А со сторонними библиотеками ты можешь поставить фреймворк вроде Slim и будет точно так же как и в ноде - с маршрутизацией и функциями-хендлерами.
Аноним 15/11/20 Вск 19:46:18 1856956226
а как к кнопке привязать к-л действие на сервере?
Аноним 15/11/20 Вск 19:50:04 1856962227
>>1856549

> Но, есть же всякие fpm, они же позволяют держать соединение?

Неграмотность так и прет из тебя. PHP-FPM не поддерживает keepalive, так как работает по протоколу FastCGI, а не HTTP.

Keepalive реализует балансер вроде nginx, а на бекенд он прокидывает запросы по протоколу FastCGI. Опять, проблема в твоем незнании, ты не разбираешься как что устроено, но торопишься обвинить во всем PHP. На котором писать гораздо комфортнее чем на какой-нибудь Ноде, которая игнорирует кучу ошибок (вроде опечаток в имени свойства), у которой течет память, и в которой нет тайп-хинтов.

>>1856551

Изучи, как устроен встроенный в PHP сервер. Ты можешь запустить его на любом порту.

> И чтобы не файл отдавал сервер в браузер, а выполнял определенный хендлер?

Настрой роутинг либо руками, либо используя фреймворк вроде Slim.

Аноним 15/11/20 Вск 19:56:58 1856968228
>>1856592

> Почему не сделали за 20 лет тоже самое для HTTP?

Потому что это никому не нужно. Keepalive терминируется на балансере вроде nginx. А дальше nginx он не идет, так как nginx обычно взаимодействует с бекендом через FastCGI, который - внезапно - основан на постоянном соединении. Неграмотность так и прет.

>>1856595

> Нода и так справляется.
В PHP встроенный веб-сервер тоже справляется. А писать на PHP удобнее, чем на JS с его кучей недостатков и отсутствием тайп-хинтов.

>>1856621

Никак. Алсо, говорят, реакт уже устарел, все используют Vue.
Аноним 15/11/20 Вск 20:04:15 1856979229
>>1856632

Ну и идиотизм. Зачем вордпрессу реакт и SSR, если он свои страницы и так генерирует на сервере. Ты бы почитал, как SSR расшифровывается. Вордпресс прекрасно работает без всяких реактов, а ты пытаешься на ровном месте усложнить архитектуру без всякой выгоды. Чтобы вместо 20 Кб HTML, которые сразу отображаются на экране, тебе сервер отдавал заглушку, потом мегабайт-два тормозного реакта, а потом тот медленно делал кучу аякс-запросов для получения данных.

Ты ничего ни в архитектуре, ни в работе веб-приложений не понимаешь.

Выкинь свой реакт и переходи на серверный рендеринг и твой сайт будет грузиться в 10 раз быстрее.

>>1856650

В JS куча убогости, например, опечатка в имени поля объекта не выдает ошибки и остается незамеченной. Нету тайп-хинтов. Классы удогие.

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

Аноним 15/11/20 Вск 20:14:06 1856989230
>>1856674

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

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

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

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

У тебя полный набор стереотипов и заблуждений в веб-разработке. Ты не понимаешь плюсов монолитных приложений в сравнении микросервисами, это автоматически обесценивает все твои рассуждения. Не видишь недостатков JS, которые просто бросаются в глаза. Скорее всего, ты просто пересказываешь чужое неграмотное мнение. Где-то прочел, что монолит и PHP это плохо, но сам не понимаешь ничего в архитектуре.
Аноним 15/11/20 Вск 20:17:19 1856993231
Аноним 15/11/20 Вск 20:19:59 1856999232
>>1856793

Причем он наверняка никогда не работал в команде и не видел чужого кода. Свой-то код всегда кажется понятным, даже если он написал как попало. Отправить бы его на проект на его любимой ноде хотя бы на 100 000 строк, и чтобы все было на асинхронном коде и промизах, и пусть он там попробует разобраться в получившейся нечитаемой лапше без тайп-хинтов.
Аноним 15/11/20 Вск 20:49:55 1857036233
>>1856954
> В отличие от них, в PHP уже есть встроенный HTTP-сервер.
За Го ничего не скажу, но в ноде есть нативный объект net.httpServer - он и является вэб-сервером.

А вообще ты типа апологет пхп, но делаешь это как то странно, лучше вообще ничего не писать.
Любому ясно что у всякой технологии есть +/-, и евангелистские споры удел людей которым заняться нечем.
Единственно что факт - пхп точно не умрет, но вот ниша его... Я бы хотел что бы пхп перешел все таки из лиги языка для цмс. Хотя может этот выход его и погубит, а может как то на двух стульях усидит. Хз, время покажет, но пока что пхп точно не собирается помирать. Как впрочем и нода.
Мне обе эти платформы нравятся, они в некотором роде противоречат друг-другу, и поэтому интересно изучать обе.

Аноним 15/11/20 Вск 22:30:47 1857111234
webhuerver.PNG 57Кб, 2091x346
2091x346
webhuerver2.PNG 31Кб, 1908x189
1908x189
>>1856954
>В отличие от них, в PHP уже есть встроенный HTTP-сервер
Бля, долбаеб. Если ты никогда не пхп не писал, так сиди и молчи. Нахуй ты рандомную хуйню пишешь? Какой-то веб сервер, какие-то настройки. Про что несет? Вообще охуеть.
Аноним 15/11/20 Вск 22:47:39 1857125235
>>1856405
.env уже закрыт от сторонних глаз и без .htacess (проверил), такшто тут фсьо харашо.

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

Кстати, на офф сайте laravel есть статья о деплойменте своего проекта в продакшн сервер, но советы в статье - говно, ибо там пишут какую-то далёкую от реальности бесполезную ахинею
Аноним 15/11/20 Вск 22:58:31 1857130236
Привет анончики, хочу начать изучать PHP для фриланса, с чего начать уже понял. Вопрос такой: долго ли вкатываться и есть ли возможность после вката зарабатывать 30к на фрилансе?
Аноним 16/11/20 Пнд 00:24:10 1857197237
>>1856487
слушать порт на пхп(без веб-сервера - сам пхп выступает как сервер)
https://reactphp.org/
есть мнение что для таких задач лучше использовать golang/node.js/...
Аноним 16/11/20 Пнд 06:34:41 1857391238
>>1856979
>сколько я не видел JS кода, написанного фронтендщиками - весь был убогая нечитаемая лапша с кучей сайд-эффектов
Это говорит об изъянах JS? Ну OK, пусть это будет считаться аргументом. На PHP написано около 80% всех существующих сайтов, верно? PHP родился калекой, был очень простым в использовании, поэтому стал очень популярным среди необразованных кодеров, школьников, и им подобных, верно? Кто выходит написал большую часть этих 80% всея интернета? Эти самые необразованные кодеры, школьники, и им подобные. Их код не убогая лапша с кучей сайд-эффектов? Так что там получается, PHP еще хуже JS, так?

>Нету тайп-хинтов
TypeScript, Flow, etc.

>Классы удогие
Уточни.

>опечатка в имени поля объекта не выдает ошибки
Линтер?
Аноним 16/11/20 Пнд 06:49:03 1857394239
>>1856989
>Монолит это, наоборот, хорошо. В нем проще взаимодействие между модулями, не нужно городить API, не нужно городить оркестрацию и тащить докер, нет проблем с версионированием и совместимостью, проще отлаживать код. Монолит во всем лучше и удобнее микросервисов и работает без докера.
>
>На микросервисы переходят не потому что они чем-то лучше, а от безвыходности, когда очень много кода и людей.
>
>Микросервисы имеют смысл только в огромных командах и огромных приложениях, а когда средняя фирмочка из 10 человек пытается изображать из себя Гугл и пилит микросервисы по полтора человека на сервис, это выглядит как посмешище. Если они не осилили правильно разбить на модули и организовать монолит, у них и микросервисы выйдут такие же кривые и убогие, как и их монолит.
Столько одностороннего бреда, что даже не хочется отвечать. Но попробую привести один пример. Фирмочка из 10 человек не может иметь кодовую базу в районе миллиона или более строк? Еще как может. Команды стартаперов из 2-5 человек создают рабочие комерчески успешные проекты, к примеру на Рельсах. Имея так мало рук, ограниченный бюджет и время, они конечно же используют по максимуму богатую экосистему Руби. Собирают большие системы из множества библиотек. Для них простота монолита уже не важна, встают вопросы поддержки кодовой базы и высокой производительности. Так как рук, денег и времени мало, они режут монолит на сервисы, используют контейнеры и оркестрацию, и по максимуму все автоматизируют. Да, приложение может в таком случае выглядеть переусложненным, но зато оно работает и способно поддерживаться и развиваться небольшой командой, принося при этом реальные деньги.

Для многих php-разработчиков такое конечно сложно понять, у них другие понятия в голове, и они решают немного другие задачи. Поэтому если ты из таких, подумай головой и осознай, что не бывает четко хорошо или плохо, бывают рабочие, приемлемые решения. У тебя все как то бинарно. Наверное потому, что ты не управлял командой, и не вел проектов самостоятельно неся на себе риски. Пока ты ходишь и ищешь кто не правильно в интернете пишет веб-приложения, другие создают успешные проекты.
Аноним 16/11/20 Пнд 06:49:57 1857396240
>>1856989
>там нет тайп-хинтов
В сотый раз это напиши.
Аноним 16/11/20 Пнд 06:50:35 1857397241
>>1856989
>
>У тебя полный набор стереотипов и заблуждений в веб-разработке.
Не, скорее у тебя, вот они >>1857391 >>1857394
Аноним 16/11/20 Пнд 06:52:17 1857399242
>>1856989
>Ты не понимаешь плюсов монолитных приложений в сравнении микросервисами
Ты не понимаешь плюсов сервисов.

>автоматически обесценивает все твои рассуждения
То есть твои

>Не видишь недостатков JS
Я то вижу, а ты не видишь недостатков PHP.
Аноним 16/11/20 Пнд 07:00:24 1857402243
>>1856954
>В отличие от них, в PHP уже есть встроенный HTTP-сервер.
Чиво-чиво??? Лол, PHP язык-бомж, не умеющий работать с HTTP изначально, его научили спустя 20 лет засунув этот самый встроенный сервер. В то время как во многих языках из коробки можно использовать HTTP и многие другие протоколы безо всяких встроенных либо внешних веб-серверов. PHP это легаси, все время его существования из него пытаются сделать что-то нормальное, так как родился он калекой. В JS/Node/Deno - на данный момент одна из самых совершенных экосистем, наравне с .NET Core, Ruby (была самой совершенной долгое время, сейчас теряет позиции так как медленно развивается), Python. Да, JS родился недоношенным, но в него заложили неплохой фундамент и возможность дальнейшего развития. Сейчас почти любую проблему, которую ты озвучишь можно решить с помощью встроенных или сторонних инструментов. Один только Babel какие дает возможности, где еще такое есть?
Аноним 16/11/20 Пнд 07:08:46 1857408244
>>1857036
>Любому ясно что у всякой технологии есть +/-
Этого он похоже не понимает. Бинарное мышление.
Аноним 16/11/20 Пнд 07:12:59 1857410245
>>1857130
>Долго ли вкатываться?
От тебя зависит. Смотря какой бэкграунд, какие способности к обучению, какие возможности обучаться, то есть сколько времени на это тратить, насколько упорно заниматься.

>Есть ли возможность после вката зарабатывать 30к на фрилансе?
На фрилансе можно столько зарабатывать из без PHP, например версткой.
Аноним 16/11/20 Пнд 07:48:32 1857430246
Почему двач пометил все мои сообщения как не мои? Уже который раз. Теперь если мне ответят я не увижу.
Аноним 16/11/20 Пнд 09:03:53 1857457247
>>1857130
Я уже 3 года вкатываюсь блядь. С ноля научился фактически.
Сейчас на нодеголая нода или экспресс, на пхпслим/ларавел могуч чет написать, на ларе что то типа магаза. JS в браузере естественно могу. В SQL умею.
Работаю в гос-шараге - пишу для БД скрипты в основном. ЗП - унылая.
Пока учился, да и сейчас 70% времени трачу на хуиту. Не умею искать заказы - так как овощ по жизни.

Так что поверь - уровень твоих практических навыков на пхп - будут в контексте заработка далеко не первой проблеймой.
Я за три года так и не заставил себя дисциплинированно работать.
Аноним 16/11/20 Пнд 12:28:06 1857531248
>>1857457
>Работаю в гос-шараге - пишу для БД скрипты в основном. ЗП - унылая.
Зачем тебе на пыню работать, если нужно на Запад? Уволься и начни изучать PHP-фреймворк+базовые основы фронтенда под его, а так-же learn english.
Аноним 16/11/20 Пнд 12:29:55 1857532249
>>1857402
Если ты такой умный и якобы что-то утверждаешь по ПХП, то сначала покажи-ка нам свой гит. Не надо балаболить, ты пришёл учиться пхп - сиди и учись у старших, что ты споришь с профессионалами?
Аноним 16/11/20 Пнд 12:36:40 1857534250
>>1857130
>долго ли вкатываться
От тебя зависит. В среднем думаю 1-3 года, как и в любой работе.
>есть ли возможность после вката зарабатывать 30к на фрилансе?
Как работал - так и заработал. Будешь ~160 часов в месяц работать - будешь зарабатывать 30к.
Аноним 16/11/20 Пнд 12:38:05 1857535251
О, у нас тут js ребенок порвался, лол.

Основная причина того, что я за километр обхожу js говно - это то, что оно руководствуется хайпом, а не мозгами. Каждый ебаный год оно тащит новые ебаные паттерны, всё написано хуй пойми как, и когда пытаешься им объяснить что они творят дичь они дружно начинают кукарекать про современные подходы.

Сколько они дрочили сраные коллбеки? 8 лет? Только недавно до долбоебов дошло, что это брат близнец ибаного goto.

>>1857391
>Это говорит об изъянах JS?
Об изъянах js просто ОРЕТ тот факт, что на динамический мать его язык из года в год накручивают компилируемые в него, лол.

TypeScript - луч света в темном царстве говна, но даже ему не под силу до конца отбить вкус нативки.

>максимуму богатую экосистему Руби
>создают рабочие комерчески успешные проекты
>принося при этом реальные деньги.
Блядь, что это я читаю? Стиль написания как у стартапера, который пытается втюхать лоху Руби, что ли? Втюхать собранный из говна и палок проект и съебаться раньше, чем он попросит его доработать?
Аноним 16/11/20 Пнд 12:54:26 1857545252
>>1857531
хуелерн ингриш, ага. Еботеку я с чего буду платить? Я однажды уже ушел "вникуда", до сих пор хвосты разгребаю. А на той прошлой работе меж тем, пусть она условно it была, а к прогингу так вообще отношение никакого, ЗП стабильна, и стабильно растет. Просто я на той работе сдеградировал нахуй, до сих пор последствия имею. Впрочем если бы там остался - то вообще нихуя бы не добился и не изучил. Так что не зря ушел, в любом случае.

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

>>изучать PHP-фреймворк
Я же пишу, я на ларавел/слим/ноде магазин написать могу или что то в духе, клиентский JS знаю. Немного могу в реакт - но мне он совсем не нравится.
Но что бы вкотиться нужно подсакивать , и активно подскакивать.
Не был бы овощем - давно бы на удаленке сидел.
Аноним 16/11/20 Пнд 13:00:24 1857552253
>>1857535
>Сколько они дрочили сраные коллбеки? 8 лет? Только недавно до долбоебов дошло, что это брат близнец ибаного goto.

Не гони, вы в истерику какую то скатили тред. В ноде колбэки - это не маня выбор. Это естественная, и самая простая организация асинхронной модели выполнения в одном потоке.
Потом доползли до промисов, а потом и до async/await. И что промисы, что асинк-авейт это по сути просто сахар над коллбэком, на сколько я знаю.
В пхп естественно это не актуально, и особо не нужно. Нужно ждать ответ ввода/вывода - скрипт подождет спокойно. У всего свои плюсы и минусы
Аноним 16/11/20 Пнд 13:06:10 1857557254
>>1857545
Так я понимаю, просто в том и суть, что работа сжирает время и силы. Есть работа - нету времени учить что-то ещё, нет работы - есть время, да жрать нечего и платить за хату)

Я лично понимаю что надо работать не больше 20 часов в неделю, иначе так за пару лет выгорю.
А если у вкатывальщика того куча времени и никуда тратиться не надо, мамка кормит - это идеальное время для вката, если каждый день учиться проге.
Аноним 16/11/20 Пнд 13:17:03 1857564255
>>1857557
>>А если у вкатывальщика того куча времени и никуда тратиться не надо, мамка кормит
То такие в 99% в дотку ебашат, зона комфорта жи.
>>просто в том и суть, что работа сжирает время и силы.
У меня по условиям на данным момент оч хорошая работа, оч много свободного времени, и нагрузка релевантна моим задачам. И на этой работе я порою неделями на проебе, зона комфорта жи.
Сейчас одно приложение на ноде накатал для конторы, и еще два на пхп на подходе.
Просто платят реально мало, минус еботека и вообще залупа остается. И программирую я один, нет опыта от людей пищущих профессионально.

Аноним 16/11/20 Пнд 14:01:29 1857612256
Тайпскрипт уже круче самого пыха
Аноним 16/11/20 Пнд 17:06:01 1857761257
>>1855565
не был тут неделю, а такие эпики происходят. дристанул на всю борду. зря ты сразу во фреймворк полез, анонче. надо было че попроще для начала. а тут в ларавеле магии слишком многовато...
Аноним 16/11/20 Пнд 19:07:30 1857836258
Анонсы, подкиньте идей сайтов на уровне файлообменника. Чтобы недолго делать и быстро получить результат =)
Аноним 16/11/20 Пнд 19:19:36 1857845259
>>1849235
На рутрекере есть дело 2х кликов
Аноним 16/11/20 Пнд 21:04:52 1857940260
>>1857761
>зря ты сразу во фреймворк полез, анонче. надо было че попроще для начала
Уже сделал магазин на Опенкарте, даже есть 2 продажи (полтора месяца в продакшне). Я там дохера всего руками правил, готовых модулей почти не ставил, дизайн сам верстал. Теперь хочу освоить что-то посерьёзнее, выбор пал на ларавель, ибо большое комьюнити и востребован.
Аноним 16/11/20 Пнд 21:51:37 1857990261
>>1857940
Свой магаз чтоли запилил?

Я вот тоже нуб, но есть идея запилить свой инет-магазин.
16/11/20 Пнд 22:05:03 1857998262
>>1857990
Можешь на email написать, скину линк на магаз. Opencart вообще хорошая вещь для вкатывающихся, там файловая структура предельно понятная. Но бля, костылей потом в дизайне у меня лично дохера вышло. Вроде и норм работает, но некрасивый какой-то код.
Аноним 17/11/20 Втр 13:38:58 1858368263
>>1857998
В принципе можно и иагаз посмотреть, ном еня больше интересует другое - ты магаз написал для себя? Чем то торгуешь?
просто у меня уже месяца три есть идея написать совй магаз, есть желание торговать начать, может с переходом в реал, арендой и всем таким.
Аноним 17/11/20 Втр 20:16:39 1858713264
Бля, я походу тупой, но не подскажите что надо сделать чтобы работать с базой данных через php? Я скачал с сайта oracle mysql-installer-community. Мне его надо просто поставить и из коробки все нормально заработает?
17/11/20 Втр 20:46:18 1858757265
>>1858713
Ты в Москву через Караганду идёшь; скачай OpenServer (самого минимального хватит) и программируй на здоровье.
Осваиваю Laravel 8 17/11/20 Втр 20:57:21 1858772266
Создал Laravel-проект, есть файл
project.com/resources/js/bootstrap.js
Открываю его, а там
window.axios = require('axios');

Как это вообще понимать, анон? Это же nodejs функция, а не PHP-шная. Как ноджейесовский require(..) относится к фреймворку на PHP?

И продолжая тему, зачем разрабы приткнули в ларавель модули NPM? Чтобы я bootstrap и popper скачивал, лол?
SOS, ЯННП
Аноним 17/11/20 Втр 21:00:26 1858777267
>>1858757
Mysql open server?
Понял, попробую. Спасибо
17/11/20 Втр 21:02:17 1858783268
Аноним 17/11/20 Втр 23:10:29 1859024269
Гит тренда не нашёл, поэтому пишу сюда. Я создал по ветке на каждый баг. Как лучше их мержить в девелоп? За один раз все влить или по очереди?
Аноним 18/11/20 Срд 01:04:51 1859124270
>>1858777
А лучше вместо этого поставь линукс и не пользуйся ублюдскими костылями для битриксоидов. Все равно восьмой пых винда поддерживать не будет.

другой анон
Аноним 18/11/20 Срд 01:29:28 1859143271
>>1859124
Они работают над полным зохавыванием линупсов, так что отдельные версии не имеют смысла, да.
Аноним 18/11/20 Срд 01:51:20 1859152272
image.png 3Кб, 279x171
279x171
У меня проблема с редиректом. Есть сайт на вордпрессе. В .htaccess стоит
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Установил SSL сертификат, теперь хочу сделать 301 редирект с http на https. Перепробовал уже всё, что выдал гугл - не работает. Либо 404, либо ошибка бесконечной переадресации.
Например, пробовал варианты с сайтов:
https://www.reg.ru/support/hosting-i-servery/kak-dobavit-redirekt/redirekt-s-http-na-https
https://elims.org.ua/blog/wordpress-perexod-na-https/
https://misha.agency/htaccess/3-redirects.html
https://pixelplus.ru/samostoyatelno/stati/indeksatsiya/301-redirekt.html

Я раньше вроде делал такое и получалось. А сейчас ну не идёт и всё тут. Может кто подскажет, как правилно, или даже даст пример рабочего конфига для Вордпресса?
Аноним 18/11/20 Срд 02:53:57 1859171273
>>1859152
Сам добил. После RewriteEngine On нужно было вставить
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
#Эта строчка делает мейджик, блеадь! Без неё админка вордпресса уходит в бесконечный редирект, а на самом сайте не подгружаются стили.
#Для HTTPS, при совместном использовании nginx и apache апачу необходимо ЯВНО указать, что он должен
#работать с HTTPS а не HTTP, если nginx принял соединение по HTTPS, а не HTTP
SetEnvIf X-Forwarded-Proto https HTTPS=on


Какое же всё таки днище этот веб. У каждого сервера свои стандарты и всё это нужно как-то дружить.
Аноним 18/11/20 Срд 08:21:46 1859207274
>>1858368
>у меня уже месяца три есть идея написать совй магаз, есть желание торговать начать
Зачем если можно стать партнером крупных магазинов и получать процент с продаж если кто перейдет с твоего сайта и сделает покупку?
Аноним 18/11/20 Срд 09:54:35 1859244275
>>1858772
В laravel есть scaffolding, чтобы ты мог быстро добавить bootstrap, vue.js, react...
Прогугли: Livewire, Inertia. Раньше был laravel/ui (и сейчас есть)
Аноним 18/11/20 Срд 11:02:10 1859264276
Блять, есть какая нибудь нормальная инструкция как подключить к php на встроенный локальный сервер базу данных? типо тут это скачай, тут это напиши, тут такую команду отправь. Полдня пытаюсь разобраться и нихуя непонятно.
Аноним 18/11/20 Срд 11:18:30 1859272277
>>1859264
Хули там разбираться? Сервер бд сам по себе, пхп сам по себе.
Поднимешь сервер и подключайся себе сколько влезет.
Для даунов типа тебя делают сборочки готовые.
Аноним 18/11/20 Срд 11:32:17 1859277278
>>1859272
Я не хочу быть дауном и разобраться что и как.
Я уже для простоты установил sqlite (db browser fir SQLite).
Создал файл .bd
Закинул этот файл в папку с другими своими тренировочными файлами пыхи.
Запустил сервер в этой папке
А чё дальше делать? Везде пишут типо надо просто пару функции написать, но у меня как будто сервере не знает что с БД делать. Есть подозрения что надо что-то менять в php.ini но я раскомментировал строки с sql и все равно нихуя не работает
Аноним 18/11/20 Срд 14:32:41 1859339279
>>1859277
Ты хочешь и административную часть досконально знать, и программистом быть. Забей на эти тонкие настройки, скачай opeserver и там уже все конфигурации прописаны
Аноним 18/11/20 Срд 15:02:32 1859353280
Перестал понимать как foreach работает, почему тут пустые элементы в массиве выводятся? Хелпаните

https://ideone.com/RdbO73

Аноним 18/11/20 Срд 15:26:50 1859367281
>>1859353
С чего ты взял что проблема в foreach? Он всегда одинаково работает, у тебя ошибка в makeFirstletterUppercase.
Аноним 18/11/20 Срд 15:41:33 1859372282
>>1859367
Мда, когда такую мелочь случайно пропускаешь хочется себе об стену башку проломить.

https://ideone.com/dj8qXu
Аноним 18/11/20 Срд 15:46:41 1859374283
>>1859277

Что касается MySQL:

- тебе надо установить сервер MySQL. Он будет работать в фоне, и выполнять запросы клиентов. Установщик MySQL имеет графический интерфейс, так что команды выполнять не требуется.
- на стороне PHP, чтобы он мог подсоединиться к MySQL, нужно установить либо расширение mysqli, либо pdo_mysql. В винде они скорее всего идут в комплекте с PHP, и для их подключения надо только прописать или раскомментировать строчку в php.ini (extension=xyz.dll)

Что касается SQLite, это встраиваемая (бессерверная) БД. Для нее устанавливать сервер не нужно. Она работает напрямую с файлами с данными. Достаточно только расширения Sqlite3 или pdo_sqlite. Они скорее всего тоже идут в комплекте с PHP, а если не идут, то можно их скачать и положить в папочку с расширениями. Опять же, включить их в php.ini и ты можешь работать с БД.

"db browser fir SQLite" - это всего лишь просмотрщик db-файлов, как я понимаю из названия.

В общем, тебе бы стоило изучить, как ставятся расширения. Вот мануал: https://www.php.net/manual/ru/install.pecl.windows.php

Под виндой расширение - это dll-файл вроде php_mysql.dll. Часть расширений идет в комплекте с PHP (они в папочке ext), часть надо скачивать самостоятельно с сайта pecl: https://pecl.php.net/packages.php . В любом случае, чтобы расширение подключалось при запуске PHP, надо его прописать в php.ini. И перезапустить сервер.

Проверить список установленных расширений можно в консоли командой php -m или вызвав функцию phpinfo() в скрипте.

Задавай уточняющие вопросы, а то не очень понятно, что ты сделал, а что нет.
Аноним 18/11/20 Срд 16:15:22 1859388284
https://ideone.com/dj8qXu

Как здесь написать чтобы все работало?
>$regexp = '/(?<=[\.\!\?]+)/u';

Я не понимаю этот синтаксис и не вижу чтобы где-то в учебнике были пояснения про это

мимо бездарный даун
Аноним 18/11/20 Срд 16:23:17 1859396285
stormview.png 141Кб, 1472x1381
1472x1381
>>1859372
Поэтому используй пхпшторм, он бы тебе подсветил, что переменная не используется.
Аноним 18/11/20 Срд 16:34:54 1859408286
Аноним 18/11/20 Срд 17:33:33 1859454287
Аноним 18/11/20 Срд 19:14:11 1859499288
Доброго вечера, анончики. Я только встаю на путь программирования, начал заниматься по вашему учебнику, предварительно повторив HTML и CSS, хочу поинтересоваться, а в чем пишете коды вы, ну то есть, чтобы мне сразу привыкать и разобраться в серьезных редакторах или этих IDE и писать сразу там, даже когда учусь? Я вот скачал, который был указан в учебнике из шапки, но там похоже установка сложнее чем просто запустить экзешник, помогите немножко, пожалуйста.
Аноним 18/11/20 Срд 21:04:17 1859612289
<?php
echo "Hello 2ch!";
?>

Посоветуйте, пожалуйста, статьи или книги в которых есть пошаговое создание сайтов. В видео формате много контента, но мне больше по кайфу что-то учить под музыку, да и вообще по тексту учить проще и быстрее.
Аноним 18/11/20 Срд 21:25:50 1859636290
Сначала были те кому нужно было помочь с гуглением. Потом пришли те кто не смог установить иде. Закончилось теми кто не смог включить комп. У них вся вечность впереди. Аминь.
Аноним 18/11/20 Срд 21:26:56 1859638291
>>1859636
иде это что? опен сервер?
Аноним 18/11/20 Срд 21:29:32 1859644292
>>1859638
Тип интерфейса подключения накопителя к материнской плате
Аноним 18/11/20 Срд 21:30:04 1859646293
>>1859644
так понятней, спасибо (иди нахуй)
Аноним 18/11/20 Срд 21:36:23 1859650294
>>1859646
Пожалуйста. А теперь бесплатный совет. Основные навыки чтобы успешно вкатиться:
1 Умение самостоятельно гуглить искать информацию
2 Умение самостоятельно решать задачи
3 Умение разбивать большие задвачи на маленькие
4 Умение самостоятельно ставить задачи
Аноним 18/11/20 Срд 21:42:46 1859658295
>>1859124
Это говно лучше в докере запускать, особенно если какое нибудь Легаси говно в кодировке cp1251.
Аноним 18/11/20 Срд 21:52:40 1859668296
>>1858713

Тебе надо установить MySQL сервер. Он управляет базой данных и выполняет запросы клиентов. Также, тебе нужно в PHP установить либо расширение mysqli, либо pdo_mysql (либо и то, и другое). Расширения скорее всего идут в комплекте с PHP. Расширения надо прописать в php.ini, как описано тут: https://www.php.net/manual/ru/install.pecl.windows.php

> Мне его надо просто поставить и из коробки все нормально заработает?

Должно, если ты включишь нужные расширения.

Аноним 18/11/20 Срд 22:03:45 1859681297
>>1858772

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

>>1859124

Скорее всего, потому что в винде есть WSL на такой случай. Хотя, непонятно, что делать пользователям Windows 7. Зачем помогать майкрософту и заставлять людей апгрейдиться на худшую версию с телеметрией и принудительными обновлениями с перезагрузками. Как можно этот хлам одобрять, не понимаю. Никакого уважения к пользователю. Унижают, как только могут.

>>1859388

Этот синтаксис (lookbehind assertion) описан тут: https://www.php.net/manual/ru/regexp.reference.assertions.php

У тебя там ошибка, что выражения внутри скобок должны иметь фиксированную длину, то есть "+" использовать нельзя. Можно использовать для разбиения строки такое выражение:

- до текущей позиции должен идти знак препинания (один). Это lookbehind assertion.
- после текущей позиции не должно быть знаков препинания. Это lookahead assertion.

Аноним 18/11/20 Срд 22:05:45 1859683298
>>1859454

У тебя + лишний. Он тут никакого смысла не имеет, так как assertions не поглощают символы и не сдвигают позицию, и делать их повторение (с помощью +) бессмысленно.

>>1859638

Integrated Development Environment

Аноним 19/11/20 Чтв 01:11:25 1859840299
Может есть у кого на примете годные репозитории на гитхабе с пет проектами на ларавеле с более менее хорошим кодом? Хочу поизучать типичные решения.
Аноним 19/11/20 Чтв 07:07:27 1859902300
Аноним 19/11/20 Чтв 13:36:15 1860046301
Аноны.

Хочу познать симфони (делал задачи из шапки на слиме/ларе). Для себя вижу такие варианты:
1. ПопенСорс проекты на симфони.
2. Курсы (по типу symfony casts, youtube)
3. Придумать проект и писать ориентируясь на доку.

Что по вашему опыту эффективнее?
Аноним 19/11/20 Чтв 17:27:11 1860259302
Спасибо пидорам из датастакса, которые писали модуль под пхп для их cassandra-драйвера. Мало того, что собранных пакетов под пхп свежее 7.1 нет, мало того, что пришлось компилировать их c++ драйвер под свежий опенссл, так у них еще и в макросах для компиляции пхп-драйвера ошибка.
Аноним 20/11/20 Птн 02:57:53 1860674303
>>1860259
Просто пхп слишком охуенен для этих устаревших технологий. Мы с почанами двадцать лет уже пилим одностраничные сайты и ни разу не понадобилась эта коксандра или кафка беспонтовая. Ты тоже не выебывайся, а ставь мускуль 5.6. Это проверенное временем решение.
https://github.com/kydva/FileHosting Аноним 20/11/20 Птн 03:25:56 1860687304
Я файлообменник сделяль. Можно было бы еще много чего допилить, но времени мало, и хочется побыстрее потрогать ларавель.
Гитхаб в теме. Демонстрацию посмотреть можно здеся: https://ru.files.fm/f/992rcsz2e
Аноним 20/11/20 Птн 12:08:01 1860929305
Аноны, дайте совет.

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

Типа так:
$dbh = new PDO(...);
$dbh->beginTransaction();

$model1 = new Model1;
//по идее объект $dbh возвращать не особо нужно - объекты по ссылке передаются же.
//или все таки нужно?
$model1->method( $dbh );

$model2 = new Model2;
$model2->method( $dbh );

$dbh->commit();

Думаю есть более удачные варианты такого расклада, может кто нибудь подскажет?








Аноним 20/11/20 Птн 13:02:08 1860948306
не могу понять, точнее не понял еще как пользоваться библиотекой пхп. Но как сделать, что бы скрипт начинал работать по кругу при определенном значении. В игре в кубики, хочу что бы скрипт по новой крутился при ничьей, какая команда?
Аноним 20/11/20 Птн 13:08:22 1860949307
>>1860948
все нашел, пиздец я долбаеб конечно
Аноним 20/11/20 Птн 18:31:58 1861262308
Ск.png 146Кб, 312x388
312x388
Аноним 20/11/20 Птн 19:24:38 1861336309
Читал, что рефлексию не следует использовать как и магические методы. А что если я класс-DTO через рефлексию сделал, это норм?
Аноним 20/11/20 Птн 19:36:53 1861344310
Сап. Начал изучать PHP.
Пишу код:
$a = 9;
$b = 3;
echo $a . " + " . $b . " = " . $a + $b . "<br>";
echo $a . " - " . $b . " = " . $a - $b . "<br>";
echo $a . " " . $b . " = " . $a $b . "<br>";
echo $a . " / " . $b . " = " . $a / $b . "<br>";
echo $a . " % " . $b . " = " . $a % $b . "<br>";
Выводит:
12
6
9 * 3 = 27
9 / 3 = 3
9 % 3 = 0
ЧЯДНТ? Почему первые две строки выводят только результат, должны же выводить всё, как и остальные строки?
Аноним 20/11/20 Птн 19:38:01 1861346311
>>1861344
echo $a . " (знак умножения) " . $b . " = " . $a (знак умножения) $b . "<br>";
Аноним 20/11/20 Птн 19:52:24 1861357312
>>1861344
>Почему первые две строки выводят
>Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in on line 5
Обнови пыху раз оно у тебя вообще запускается

Ехуй или через точку + заскобленными операциями, или через запятую
https://dpaste.com/4WQAZ26HF
https://dpaste.com/A6UYZ6A5K
Аноним 20/11/20 Птн 20:10:48 1861364313
>>1861344

Скорее всего дело в приоритете операций, и у тебя сначала выполняется точка, а только потом плюс или минус. Расставь скобки явно, например, echo $a . " + " . $b . " = " . ($a + $b) . "<br>";
Аноним 21/11/20 Суб 04:06:26 1861602314
>>1860674
>Мы с почанами двадцать лет уже пилим одностраничные сайты
Ахаха, рассмешил.
Аноним 21/11/20 Суб 04:11:43 1861603315
>>1860687
>хочется побыстрее потрогать ларавель
Нахуя если у тебя там симфони? Ларавель по сути ничем не отличается. Хочешь нового и необычного попробуй Elixir & Phoenix. На нем можно писать асинхронные, паралелльные и распределенные приложухи без заморочек.
Аноним 21/11/20 Суб 04:12:53 1861604316
>>1860948
>АБЫРВАЛГ
Чел, тебе бы поднаучиться выражать ясно мысли.
Аноним 21/11/20 Суб 04:14:52 1861605317
>>1859612
Лучше книги по PHP - это Дэвид Скляр Изучаем PHP7, PHP7 Котеров, неплохая Кевин Янк, но там PHP5. На английском книг куча новых.
Аноним 21/11/20 Суб 10:42:46 1861744318
Аноним 21/11/20 Суб 11:50:16 1861795319
>>1861744
Кроме орать как сучка дельное что то можешь сказать?
Аноним 21/11/20 Суб 12:42:37 1861819320
>>1861603
Если бы я хотел чего-то нового и необычного, я бы не изучал пых, лол.
Аноним 21/11/20 Суб 12:59:40 1861830321
>>1861795
Котеров не учебник,а оч хуевый справочник.
Скляр получше,но подача местами тоже не айс
Аноним 21/11/20 Суб 13:04:53 1861833322
>>1861830
Предлагай свое. Есть лучше?
Аноним 21/11/20 Суб 13:07:50 1861835323
>>1861833
А единого нет.Мне лично приходилось иметь по 3-4 книги и херова куча вкладок по каждой теме и все это самому сводить в единую мысль
Аноним 21/11/20 Суб 13:25:33 1861847324
>>1861835
Опять крутишься как уж на сковородке. Как языком 3.14здеть так тут как тут, а как название книг написать вместо пустого 3.14здежа, так язык в жопу засунул. Несите следующего.
Аноним 21/11/20 Суб 13:29:08 1861850325
>>1861847
а потому что по php нет ни одной нормальной книги, каждая книга это пересказ документации
Аноним 21/11/20 Суб 13:33:55 1861852326
>>1861847
PHP 7 Zend
Зандстра М про OOP
Lopez A Php 7
и обязательно гугл
ОФ доки херово подходят для полного нуля,но оч хороши,чтобы видеть ВСЕ возможности языка,которых нет в учебниках
Аноним 21/11/20 Суб 13:35:48 1861853327
>>1861852
еще Vikram Vaswani beginner guide но там 5.3
но подача неплоха
Аноним 21/11/20 Суб 15:00:19 1861922328
2619868870ea9ec[...].png 147Кб, 512x512
512x512
Здравствуйте, подскажите, пожалуйста, где искать хорошего программиста с адекватной стоимостью услуг со знаниями laravel и ffmpeg ? Вконтакте в основном кидалы, на хабре написал восьмерым, прошло 5 дней и ни один ещё не посмотрел ТЗ и не назвал цену за работу. На фрилансе в основном команды и фирмы, которым надо заплатить больше, но в итоге всеравно основную работу будет делать один человек, а индусы вообще зажрались, ценники как будто они вечерами подрабатывают после работы в гугле. Я не жадный, просто не люблю переплачивать за одинаковую работу.
Аноним 21/11/20 Суб 17:24:33 1862067329
>>1861850
Щас бы слушать мнение ноунейма. Ты не школьник часом? Какой опыт программирования?
Аноним 21/11/20 Суб 18:26:07 1862125330
>>1861922
Бля, у меня дежавю. В прошлом или позапрошлом треде был уже один "нежадный". Кинь ТЗ и напиши сколько готов заплатить, а там видно будет.
Аноним 21/11/20 Суб 18:26:08 1862126331
>>1861922
Имею опыт тестирования (Валидация/XSS) и исправления ларавеля, но конкретно на пыхе никогда не специализировался
>не люблю переплачивать
>прошло 5 дней
Если нет каких-то душащих дедлайнов - могу взяться за символическую плату

Дискорд https://dpaste.com/4WHFZH3LN
Аноним 21/11/20 Суб 19:17:40 1862173332
>>1861922

Почему бы тебе не пойти на фриланс-сайт? Сформулируй четкое ТЗ, проверь портфолио и опыт исполнителя, попроси у него рекомендации и проверь их, работай с исполнителем через escrow ("безопасная сделка").

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

На фрилансе большое число фрилансеров и есть конкуренция. Если они все просят больше, чем ты готов заплатить, значит такая реальная цена этой работы.
Аноним 21/11/20 Суб 21:39:37 1862258333
>>1860929

Правильное решение было бы инжектировать в твои "модели" один и тот же объект PDO при создании. То есть:

$model1 = new Model1($pdo);
$model2 = new Model2($pdo);

После этого они будут работать с одним и тем же объектом-соединением и транзакции будут работать "из коробки".

Почитай про инъекцию зависимостей: https://github.com/codedokode/pasta/blob/master/arch/di.md
Аноним 21/11/20 Суб 21:45:31 1862266334
>>1860046

Один из вариантов - это уроки/курсы, где делают какой-то сайт, постепенно изучая особенности Симфони, параллельно почитывая документацию и исходники.
Аноним 21/11/20 Суб 22:55:09 1862318335
>>1862067
>Ты не школьник часом?
и много ты школьников видел на дваче ?
>Какой опыт программирования?
3 года
Аноним 22/11/20 Вск 00:31:27 1862367336
>>1854267
Описание задачи не полное, анон. Поэтому оценка навскидку может быть сильно, так, неверной.
Сам функционал этой фичи пилится за пару дней максимум и выйдет в районе 3-4к. Но его ещё надо интегрировать в веб-сервис(тоже время+деньги), и вот тут уже ты никакой инфы не дал совсем. Что за сервис, на чём сделан? А если его нет, то надо и его писать, что встанет сильно дороже - считай с нуля делать.
Аноним 22/11/20 Вск 00:58:02 1862397337
>>1854267
Если есть ещё порох в ягодицах, то подходи - пообщаемся.
@nesterom
Аноним 22/11/20 Вск 01:57:07 1862436338
image.png 28Кб, 949x391
949x391
https://sql-academy.org/ru/guide/sorting
Что они хотят вообще?

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


Я пишу
SELECT good, unit_price AS sum FROM Payments
ORDER BY sum DESC

Говорят, неверно. Может, они хотят, чтобы все покупки одинаковых товаров были просуммированы и уже суммы были отсортированы? Но в материале до этого ничего о сложении полей не было сказано.
Аноним 22/11/20 Вск 02:19:01 1862440339
>>1862436
Не сумму а произведение количества купленого товара на его цену
SELECT good, (unit_price * amount) AS sum FROM Payments ORDER BY sum DESC
Аноним 22/11/20 Вск 02:33:27 1862448340
>>1862440
А, вот оно что. Меня сбило с толку "sum", как-то сразу о сумме подумал. Спасибо.
Аноним 22/11/20 Вск 06:21:34 1862495341
>>1862318
>и много ты школьников видел на дваче ?
Шутка такая неудачная что ли? Тут их 98% наверное.
Аноним 22/11/20 Вск 06:22:44 1862496342
>>1862318
>3 года
Вот видишь, у тебя опыт есть, поэтому тебе достаточно доков, а тот чел наверное неопытный, поэтому книги, которые я посоветовал, Скляр, Котеров, ему как раз.
Аноним 22/11/20 Вск 14:52:44 1862744343
php=gay

Change my mind
Аноним 22/11/20 Вск 14:57:26 1862748344
>>1862744
По этому мы его и учим, брат <3
Аноним 22/11/20 Вск 16:07:49 1862780345
Кто-то работал с фрилансерами веб-дизайнерами? Где их можно искать, чтоыб норм было?Есть какие-то совета как дизайнеру тз писать, или там все уже при обсуждении определяется?
Аноним 22/11/20 Вск 17:43:06 1862853346
а что,пхп 8 для винды ФСЁ?
Аноним 22/11/20 Вск 17:43:41 1862854347
>>1862853
>а что,пхп 8 для винды ФСЁ?
Vagrant или WSL2 в помощь.
Аноним 22/11/20 Вск 17:52:11 1862866348
sdfgsdfhsdh.png 9Кб, 286x377
286x377
Анон, подскажи почему при добавлении бордера топ/бот в список li, он не обводит всю строку? Убрал буллеты лист стайл тайпом и поебать вообще, они как будто все равно присутствуют и мешают бордеру обвести всю строку...
Час сижу пержу не могу понять блять. В гугле ниче полезного не нашел
Аноним 22/11/20 Вск 18:00:27 1862870349
>>1862866
Скинул бы хотя бы хтмл с цссом на фиддл, лол
Аноним 22/11/20 Вск 18:21:08 1862900350
>>1862870
я хз как он работает. копипастнул туда хтмл с ксс но резалт не выводит хотя никаких ошибок не высвечивается в коде....
Аноним 22/11/20 Вск 18:23:30 1862903351
Аноним 22/11/20 Вск 20:51:58 1863083352
Гайс, как понять свой реальный уровень и эффективность моей работы? Т.е если я отсобеседуюсь на мидла с зп 80+, могу ли я считать себя мидлом? Или если не выгнали - мидл и своих денег стою?
Аноним 22/11/20 Вск 21:04:38 1863097353
>>1863083
>джун-хуйун, мидл-хуидл
Забудь это стереотипы
Аноним 22/11/20 Вск 21:08:52 1863102354
>>1863097
Я не про вымышленные плашки с ИТ-званиями, чтобы ходить и щеголять ими. Адекватно автоматом переводить эти названия в зп
Аноним 23/11/20 Пнд 01:49:37 1863356355
image.png 29Кб, 959x413
959x413
Снова вопрос по майскулу:

Агрегатные функции MIN и MAX
Найдите самых старших членов семьи (используйте поле birthday) среди всех существующих семей на основании их статуса (поле status). Выведите статус и дату рождения. Для вывода даты рождения используйте псевдоним birthday.


Пишу:
SELECT status, birthday FROM FamilyMembers
GROUP BY status HAVING MIN(birthday)

Говорят, неправильно. Но по логике-то верно же? Мы берём status и birthday из таблицы FamilyMembers, группируем их по полю status, в каждой группировке определяем наименьшее значение и выводим.
Но нифига - "нонагрегатед колумн birthday". Как правильно?

https://sql-academy.org/ru/guide/groupping-aggregate-functions
Аноним 23/11/20 Пнд 02:07:47 1863359356
>>1863356
Справился сам.
SELECT status, MIN(birthday) AS birthday FROM FamilyMembers
GROUP BY status
Аноним 23/11/20 Пнд 09:41:14 1863483357
>>1862258
Спасибо.
У меня фактически так и есть. Объект подключения у каждой модели один и тот же, из контейнера.
Я видимо с $dbh->beginTrancaction недопонял. Если я начинаю эту транзакцию, то получается все модели которые получат этот объект, даже из контейнера зависимости - получат объект $dbh в состоянии транзакции, я чет об этом не подумал.
Аноним 23/11/20 Пнд 13:57:06 1863631358
>>1862866

Потому что слева у элементов списка есть паддинг. Тебе надо не в Гугл лезть, а открыть инструменты разработчика в браузере и изучить свойства элементов списка.
Аноним 23/11/20 Пнд 14:07:46 1863637359
>>1863356

HAVING - это условие отбора строк (как WHERE, только оно применяется после группировки). Там можно написать что-то вроде HAVING MIN(x) = 5 а писать HAVING MIN(x) без условия просто некорректно.
Аноним 23/11/20 Пнд 14:13:35 1863641360
>>1863631
ты сам убирал этот паддинг? или ты думаешь я совсем дегенерат? иди попробуй убери паддинг от лефта а потом открой инструменты разработчика в браузере и изучи свойства элементов списка
Аноним 23/11/20 Пнд 16:32:40 1863787361
>>1856257
>>именно туда их и стоит класть

Слушай, моделей и репозиториев получается много ведь. И все равно их всех в контейнер зависимостей слима? Хотя в этом контейнере объекты создаются только при вызове, что удобно.

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

Аноним 23/11/20 Пнд 19:31:20 1863957362
>>1863641

Возможно, там паддинг/маргин у самого списка (родителя), а не у его элементов. Можно пройти в инспекторе от элемента списка вверх по элементам и посмотреть, какие у них маргины/паддинги, они даже цветом подсвечиваются.
Аноним 23/11/20 Пнд 19:56:58 1863965363
>>1863957
да, все, разобрался уже. я позицию выстраивал не у самих лишек а у самого блока юл, поэтому все по пизде шло. щас с трезвой головой все удалил, заново переписал и заебись стало. пиздец на такой хуйне спотыкнуться и втыкать 2-3 часа чтобы в итоге решить все за минуту. я в ахуе
Аноним 24/11/20 Втр 03:30:42 1864239364
image.png 39Кб, 1057x509
1057x509
Опять вопрос про скул.

Скалярные подзапросы
Выведите количество полётов каждого пассажира, представленного в таблице Passenger. Список полётов находится в таблице Pass_in_trip. В качестве результата выведите количество полётов (используйте псевдоним count) и имя пассажира.


Я вообще не понимаю, какого синтаксиса от меня хотят. Как это вообще писать. Битый час перебирал методом научного ытка разные, ничего не подходит. Это ебанина какая-то, а не урок. Прямо классическое "нарисуйте сову". Какой вообще порядок написания ключевых слов? Вообще не понимаю.

Сумел только вот такое написать, вроде результат похож на правду, но запрос криво выглядит и его не засчитали.
SELECT COUNT(*) AS count, (SELECT Passenger.name FROM Passenger WHERE Passenger.id = Pass_in_trip.passenger) AS name
FROM Pass_in_trip
GROUP BY passenger


https://sql-academy.org/ru/guide/nested-sql-queries
Аноним 24/11/20 Втр 08:06:04 1864299365
Аноны, что скажете о Zend фрейворке? Довольно часто в вакансиях мелькает, стоит связываться?
Аноним 24/11/20 Втр 09:36:22 1864323366
>>1864239
Твой запрос выводит количество полетов летавших юзеров, а тебе нужно вывести количество полетов всех юзеров (некоторые из них не летали).
SELECT name, (SELECT count(*) from Pass_in_trip where passenger=Passenger.id) as count from Passenger
Аноним 24/11/20 Втр 13:30:24 1864441367
>>1857612
Как-то видел как один чел на тайпскрипте писал. Вместо того чтобы заверстать один инпут и прописать ему событие он пиздошил целый интерфейс под этот компонент, потом класс для него, вся эта срань наследавалась хуй пойми откуда и хуй пойми как работала, и в завершение делал он это прямо на проде. Между прочим это был довольно активный и известный стриминговый ресурс.
Вот теперь даже не знаю - то ли на фронтенде такие говнокодеры, то ли только на тайпскрипте. Проганье ради проганья не нужно.
Аноним 24/11/20 Втр 15:51:52 1864557368
>>1864239

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

> Какой вообще порядок написания ключевых слов? Вообще не понимаю.

Сначала строки выбираются из таблицы (FROM), затем джойнятся (JOIN), затем отсеиваются (WHERE), затем группируются (GROUP BY), отсеиваются дополнительно (HAVING), сортируются (ORDER BY). Примерно в таком порядке выполняются запросы. Тебе остается лишь подобрать условия, чтобы получилось то, что требуется.
Аноним 24/11/20 Втр 16:21:34 1864589369
>>1864239
Разбираюсь с задачей просацт со списком студентов.

Как правильно обрабатывать ситуацию когда передаётся несколько параметров через get в сервер?
Сейчас сделал, чтобы весь _GET копировался в рабочий массив, потом передаю его в нужную функцию.
А в самой функции уже смотрю, если в массиве есть ключ с необходимым названием, использовать значение по этому ключу, иначе использовать некое свое значение.
Второй вопрос, в пыхе можно сделать, что если некий аргумент не передается вообще, то функция может брать его значение по умолчанию. Можно ли сделать явное указание при передаче функции чтобы она использовала значение по умолчанию? Типо
function foo($a=1) {}
foo( is_null($b) ? {По-умолчанию} : $b ) {}

Гугл говорит что так нельзя, но это не точно. А если так нельзя, то как подобное обрабатывать? Уместно ли сделать внутри функции условие if, типо если передаю null как аргумент то использовать $a=1?
Аноним 24/11/20 Втр 18:12:50 1864694370
>>1864589
>А в самой функции уже смотрю, если в массиве есть ключ с необходимым названием, использовать значение по этому ключу, иначе использовать некое свое значение.
Оберни это в класс, будет удобней. Psr\Http\Message\ServerRequestInterface Можешь глянуть этот интерфейс, мб там описаны нужные методы. Можешь сделать по подобию

>Второй вопрос
>function foo($a=1) {}
Ну, так и можно или что ты имеешь ввиду?

>А если так нельзя, то как подобное обрабатывать? Уместно ли сделать внутри функции условие if, типо если передаю null как аргумент то использовать $a=1?
В том примере что ты привел - так function foo($a=1) {}.
Еfunction foo(int $a = 1, int $b = 2){}
В таком случае ты обязан передать в $a инт значение иначе кинет фаталэрор
Аноним 24/11/20 Втр 18:22:44 1864708371
>>1864589

Ты, по моему, нарушаешь разделение ответственности. В MVC модель не работает с пришедшими из браузера параметрами вроде $_GET. Это задача контроллера.

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

То есть, допустимы оба варианта:

findStudents(array $criteria)
findStudents(string $query, string $sort, int $offset, int $limit)

Второй вариант выглядит почище и логичнее. Тут видно, какие аргументы есть у функции. Первый поуродливее, напоминает массиво-ориентированное программирование, когда везде передаются какие-то массивы и ничего понять нельзя. Непонятно, зачем так делать. То, что тебе в GET приходит массив параметров, не значит, что надо остальной код под него подстраивать.

В любом случае, нельзя писать findStudents($_GET). В функцию надо передавать корректные значения, а не свалку параметров из $_GET. Ведь в $_GET могут отсутствовать или присутствовать вообще любые значения. Это просто свалка из пришедших данных.

Правильнее в контроллере разобрать $_GET, сформировать на его основе условия для поиска и передавать уже в функцию поиска.
Аноним 24/11/20 Втр 21:23:10 1864822372
>>1864694
Я хочу объявить функцию с входным аргументом А, который по умолчанию равен 1.
Т.е. если я вызову функцию без аргумента, функция будет выполняться со значением А=1. А если вызову функцию с входным параметром, то А будет равен этому значению на входе, так?
Мне интересно, можно ли прямо в вызове функции вместо аргумента вставить условие. Примерно так

foo( B==2? : 1);
Т.е. если В равен 2 то функция foo выполнится без входного аргумента (будет использоваться значение входного аргумента по умолчанию) , а если В не равен 2, то на вход функции дадим 1, т.е. уже значение не по умолчанию. Наверное зерово разъясняю, но как получается.

>>1864708
Я только разбираюсь с mvc. Чтобы не вытворять велосипед, я нашел простую реализацию на гитхабе. Суть там такая, что все входные вызовы обрабатывает функция-роутер.
Она парсит url, и выделяет в нем
имя необходимого контроллера,
метод который надо выполнить из класса соответствующего контроллера,
Параметр который передается в вызываемый метод.
Т.е. у меня создается контроллер отвечающий за Вывод таблицы студентов на экране.
Внутри контроллера вызывается соответствующий метод для отрисовки экрана (include кусков html с небольшими вставками php, функция из модели которая выполняет запрос к бд и возвращает ответ от нее)
Все работает хорошо, когда у меня в url три параметра (имя контроллера/имя метода/параметр).
Мне сложно понять как обрабатывать когда параметр не один а произвольное количество. Либо мне надо забить на произвольное количество параметров, и напридумывать методы в классе контроллера под всевозможные случаи (например отдельные методы для отображения таблицы под разные условия сортировки)
Сейчас у меня передается весь массив GET в контроллер, где я ищу в нем конкретные названиями параметров, которые могу передать к функции из модели и передаю. Но я не уверен, что это выглядят не рукожопно.
Аноним 24/11/20 Втр 21:42:10 1864839373
Аноним 24/11/20 Втр 23:58:58 1864935374
>>1864822

> Все работает хорошо, когда у меня в url три параметра (имя контроллера/имя метода/параметр).

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

В студентах роутов мало, их можно вообще проверять через preg_match регуляркой (if ... elseif ... elseif ... else).

Если роут соответствует реглярке1, то ...
Иначе если он соответствует регулярке2, то ...
Иначе выдать ошибку 404

Это один вариант. Тогда можно будет сделать URL вида /students/name/2?query=иван

Также, параметры можно передавать после знака вопроса, например /list/?query=иван&sort=-score&page=2. То есть тут URL состоит из названия контроллера и кучи параметров.

> Мне интересно, можно ли прямо в вызове функции вместо аргумента вставить условие.

Нельзя. Только если писать явно значения, вроде foo($x == 1? $a : $b);
Аноним 25/11/20 Срд 00:58:43 1864976375
Анон, а на сколько реально сейчас вообще заработать копеечку на начальном этапе, изучив и закрепив на практике верстку?
Или нахуй это вообще не стоит потраченного времени и лучше сразу идти дальше js изучать?
Аноним 25/11/20 Срд 01:39:22 1865018376
>>1864323
Спасибо.
>>1864557
>Вообще, тут тебе хорошо бы поучиться использовать джойны.
Задача не на джойны же. Это НАДО сделать с помощью вложенных запросов.
Аноним 25/11/20 Срд 01:47:42 1865023377
>>1864976
Хороший верстала на фрилансе не пропадет. Только качество давай.
Аноним 25/11/20 Срд 03:42:28 1865068378
>>1865018
В твоем запросе как минимум два косяка. Ну с такими задачами и самообучением хули удивляться.
1) Подзапрос в SELECT части выполняется по разу на каждую строку. Так делать нельзя никогда, даже если очень хочется. Тем более что всегда есть нормальный способ.

2) В COUNT(*) всегда считай конкретные вещи, в твоем случае ты считаешь количество пассажиров, значит так и пиши COUNT(passenger).

По итогу твой запрос будет состоять из двух частей:
Получение всех пассажиров и получение количества полетов для летавших, это и будет подзапрос. И объединяются эти части именно джойном.

SELECT flights_count.count, p.name
FROM passenger AS p
LEFT JOIN (
SELECT passenger, COUNT(passenger) AS count
FROM pass_in_trip
GROUP BY passenger
) AS flights_count
ON flights_count.passenger = p.id

Теперь у тех кто не летал в колонке count будет NULL. Как превратить NULL в 0 тебе факультативное задание.
Аноним 25/11/20 Срд 04:49:32 1865097379
>>1865068
Ещё раз: это учебная задача из радела на вложенные запросы. Поэтому по условию задачи, её надо выполнить именно через вложенные запросы и никак иначе. Именно поэтому система отмечает твой монструозный запрос, как неверный, а лаконичный >>1864323, как верный.
Аноним 25/11/20 Срд 05:41:18 1865104380
subquery.PNG 131Кб, 1495x1381
1495x1381
>>1865097
Во первых "система" всего-лишь проверяет конечную таблицу. Никто в здравом уме не будет парсить сам запрос и тем более искать в нем подзапросы. Само написание такой системы равноценно созданию своей БД.

Во вторых это типичный запрос в базу, простой как два рубля и ничего монструозного в нем нет. К тому же вложенный запрос в нём присутствует.

В третьих без относитьльно "учебности" задачи. Подзапрос в SELECT части это профнепригодность с первой секунды. Это просто перечеркивает все твои дальнейшие усилия.

В это вся беда дистанционного обучения, машине насрать что ты там написал, она просто проверяет результат. А человека, который скажет что ты катишь квадратное рядом нет.
Аноним 25/11/20 Срд 06:15:34 1865112381
>>1865104
>Подзапрос в SELECT части это профнепригодность с первой секунды.
А авторы учебног курса считают иначе. Вот и кому верить: им, или анону с двача?
Аноним 25/11/20 Срд 06:32:59 1865115382
>>1865112
С чего ты взял что они считают иначе? Ты где-то в самой статье прочитал что так надо делать? Ну зайди к "авторам" в группу в ВК и спроси там, тебе то же самое скажут.

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

Это даже не "детская" ошибка, это как если бы тебя попросили проехать на велосепеде десять метров, а ты перевернул его колесами к верху, залез на него и пропрыгал в нужное место. Формально ты справился, но велосипедистом ты от этого не станешь.
Аноним 25/11/20 Срд 09:13:17 1865147383
>>1865115
Ну не драматизируй прям. Подзапрос в select это конечно не правильно, однако человек все таки пишет запросы, просто не до конца понимает порядок выполнения.
Аноним 25/11/20 Срд 13:11:51 1865308384
дорвеисты есть? пишу свой движок под еба сайты, есть вообще годные чатики чтоб пообщаться на тему охуевших автосайтов?
Аноним 25/11/20 Срд 15:19:27 1865412385
>>1864822
>Наверное зерово разъясняю, но как получается.
Нормально разьясняешь, просто в этом нет смысла

>Мне сложно понять как обрабатывать когда параметр не один а произвольное количество. Либо мне надо забить на произвольное количество параметров, и напридумывать методы в классе контроллера под всевозможные случаи (например отдельные методы для отображения таблицы под разные условия сортировки)

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

return [
'/' => [
'controller' => HomeController::class,
'action' => 'index',
],

'/students' => [
'controller' => StudentController::class,
'action' => 'index',
],

'/students/create' => [
'controller' => StudentController::class,
'action' => 'create',
],
];

Создай класс роутер который парсит этот конфиг и запускает тот контроллер который тебе нужен. Еще желательно создать что то вроде класса Request, который будет содержать в себе все get и post параметры. И методы которыми ты их легко можешь получить. Это значительно тебе задачу упростит. Ты просто в контроллер будешь передавать этот Request и например методом $request->get('page'), получать параметр страницы гет запроса. То как ты писал выше - чем то похоже на роутинг в Yii, где название контроллера это одна часть урла, название метода - другая. А параметр в твоем случае это например $id студента. т.е ссылка в твоем случае такая /students/show/55.
Этот же параметр можно передать в ГЕТ запросе /students/show?id=55.

Почитай про get, post запросы и как они на сервер приходят. Ощущение что ты просто этого не понимаешь.

П.С абу пидорас, нахуя он ебучую кнопку стикеров в поле ввода добавил, не виднно же нихуя что ты там пишешь с новой строки
Аноним 25/11/20 Срд 17:00:57 1865498386
>>1865068

> Подзапрос в SELECT части выполняется по разу на каждую строку.

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

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

Вот мануал MySQL с описанием оптимизаций подзапросов: https://dev.mysql.com/doc/refman/8.0/en/subquery-optimization.html

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

SELECT .. FROM passenger p LEFT JOIN pass_in_trip ... GROUP BY p.id
Аноним 25/11/20 Срд 17:39:44 1865531387
>>1865115

А вот не факт. Тут все зависит от оптимизатора СУБД, как он будет выполнять запрос.

Вот я сделал простой пример: https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=785fd10b30bd6e507269fee83c3f559c

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

Если тебе не лень, ты можешь у себя создать таблицы с большим числом записей (10 000 - 100 000) и померять время выполнения. По моим прикидкам, оно должно быть примерно одинаковыми для джойна и подзапросов.
Аноним 25/11/20 Срд 19:51:58 1865628388
Аноним 25/11/20 Срд 21:24:21 1865691389
Аноны, вопросец такой.
Есть action='/mysite/aticles/1' формы с post запросом. Форма допустим обновляет статью за номером 1 вбазе.
Я же в браузере , в html разметке могу руками поменять на /mysite/aticles/2? И соответственно если да, то данные обновятся на сервере для статьи 2, так ведь?
Как таког избежать, делать в разметке какой то уникальный токен, на сервере его сохранять в базу для каждой формы, и проверять его?



Аноним 25/11/20 Срд 23:30:57 1865761390
>>1865498
>>1865531
"Не факт", "не обязательно". Наверное у деда хуй стоит в девяносто лет, да только никто этого не видал.

Вот в мариадб оптимизатор вам за шиворот срал. >>1865531 Вроде смотрел в EXPLAIN, а DEPENDENT SUBQUERY нихуя не увидел.
https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=f370a0c52b22ffa3e343112161f6edaa

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

Но писать хуйню, в надежде что оптимизатор переведет её в нормальный код это залупа полная.
Аноним 26/11/20 Чтв 11:19:24 1865962391
>>1865691

Правильнее всего на сервере проверять права: имеет ли данный пользователь право редактировать данную статью. Также, можно использовать и проверять токен в URL (/articles/1/abcdefghi) но это более корявое решение.
Аноним 26/11/20 Чтв 14:57:35 1866112392
>>1849138
приветствую. Что можешь по поводу в бека с нуля посоветовать для вката в течении полу-года +-. Стоит ли курс в шапке учить или что-то другое мб надо. Что нужно кроме пыхи (ларавэл) для бэка джуна? Как правильно хантить вакансии (ибо если просто писать back end, то выводит всё, что угодно, кроме самого бэка (или я не правильно представляю, чем бэк занимается?))

Заранее спасибо
Аноним 26/11/20 Чтв 15:18:17 1866125393
Бампую вопрос выше, тоже интересно
Аноним 26/11/20 Чтв 15:39:53 1866133394
>>1865691
Проверять программно, если у авторизированого юзера есть возможность только себя менять, или наоборот - менять всех кроме себя. Должен ли не авторизированный пользователь иметь возможность менять данные? Если да, то почему он не может изменить данные с другим айдишником? И так далее

>>1866112
>>1866125

>Стоит ли курс в шапке
Норм курс, можно местами пропускать. Например сделать студентов и потом сразу на ларавел/yii сесть

>(или я не правильно представляю, чем бэк занимается?))
Я когда пришел в контору меня уже продавали как мидла слабого. Чем занимаются джуны - хз. Джуну нужна норм база как в беке, так и в фронте. Поле там поправить какое нибудь, цвет кнопки может поменять - хз.
На чисто бекенд вакансии планка выше всегда, я хз как вы туда попадете. Самый нормальный вариант - искать контору у себя в городе. Если это не говно-подвал, где на вордпрессы шаблоны натягивают - можно за пол года вырасти в мидла (на это и делают упор когда берут джуна)

Аноним 26/11/20 Чтв 16:25:05 1866159395
>>1866133

Обычно, чтобы быть миддлом, нужно иметь опыт от 3 лет.
Аноним 26/11/20 Чтв 16:49:29 1866178396
>>1849078 (OP)
не совсем понял слысла задачки про l33tspeak, это же тоже самое что и предыдущая про шифрование. Да и тот код что по ссылке работает. Или нужно все буквы перевести?
Аноним 26/11/20 Чтв 17:05:14 1866195397
ОП, оцени что я тут накрутил по YodaSpeak. Пойдет?
На мой личный взгляд, самая сложная задача, если сравнивать с предыдущими. Надо прям хорошо понимать как устроены массивы и функции для работы с ними.

https://ideone.com/Uzw8Ao
Аноним 26/11/20 Чтв 17:20:35 1866206398
>>1866159
А синьером 10+? Кто такой мидл, кто такой синьер? А если у меня год опыта, а работаю я на позиции мидла то что? Вселенная дала сбой? хуйню не неси
Аноним 26/11/20 Чтв 19:09:33 1866312399
>>1866206
>если у меня год опыта, а работаю я на позиции мидла
Значит работаешь в макакоконуре с номинальными позициями
Аноним 26/11/20 Чтв 20:03:39 1866369400
>>1865628
Я от этой трансляции приуныл. Пиздец как больно слышать о том, что разработка пыха сейчас так похожа на допиливание костылей к сайту на битриксе, а то и хуже.
>Ну, самые лучшие практики по синтаксису в php никогда использоваться не будут, интерпретируемый язык всё таки, так уж парсер устроен
>Путь пхп был предопределен еще 4000 лет назад, мы следуем в рамках этого пути
>Чего в этой новой фиче такой синтаксис дэбильный? Ну это парсеру так удобней просто
>Ну такого мы сделать не сможем, это ж придется всё ядро переписывать
>Ну такое мы сделать можем, но это будет костыльно и замедлит работу в 20 раз
Аноним 26/11/20 Чтв 20:05:02 1866374401
>>1866369
Трансляция не смотрел и на пыхе не пишу, но пыха с последними релизами приобретает более-менее адекватный вид даже арров функции добавили, охуеть!
Аноним 26/11/20 Чтв 20:30:57 1866398402
>>1866159
>>Обычно, чтобы быть миддлом, нужно иметь опыт от 3 лет.

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

Я по работе начал проектик один писать, по основной деятельности делать особо нехуй, а тут в довесок предложили проект , не спеша сделать, так еще и платят.
Так я изначально одно наваландал. Щас хотелки заказчиков расширились - я уже перерефакторил, криво конечно. На слои разделил, как смог. Так как проект чисто мой, и с перспиктивой расширения - меня оч интересует его архитектурно запилить хоть как то удобоваримо. Но опять же лучший опыт - свои грабли.
Поэтому писать нужно дохуя и много, и не ссать.

Не боги горшки обжигают по итогу. И я сомневаюсь чет что в какой то средней конторе с тобой будет ментор прям носиться. Будет условный прогер, которому совершенно не условно на тебя похуй - это максимум. А может попасться какой нибудь истеричный и инфантильный ебанат, который будет за твой счет себе самооценку поднимать. Так что один хуй будешь на самообучении в общем.

Аноним 26/11/20 Чтв 20:32:49 1866400403
>>1866374
И это интересно. Язык явно вырос из ниши цмс-ок, но при этом цмс-ки это основа рынка пхп. Какой то всратый дуализм.
Аноним 26/11/20 Чтв 21:47:39 1866451404
>>1866206

Это значит, что тебя называют миддлом, чтобы тебе было приятнее. А вообще, в разных конторах градации разные - сеньор из какой-то вебстудии может не потянуть в Яндексе даже на джуна.
Аноним 26/11/20 Чтв 21:52:22 1866455405
image.png 22Кб, 1415x206
1415x206
Посоны, насколько это хуёвый вариант?
Аноним 26/11/20 Чтв 22:12:25 1866468406
АААААААААААААААААААААААААААААААА 26/11/20 Чтв 22:46:22 1866518407
Делаю посадочную на тильде, на странице нужно сделать СТА, пытаюсь шаблонами сделать - кнопка ходит по пизде, то большая, то маленькая
Пытаюсь сделать кнопку через код, а текст, бэк и остальное в пикче, кнопка ходит отдельно от текста
Пытаюсь сделать через код текст и под ним кнопку- работает либо текст либо кнопка

В програмировании вообще ни бум бум, нагуглил код на css - он вставляет либо кнопку либо текст, и то и то не дает сделать, как решить проблему и где ошибка?

Сам код:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.container {
position: relative;
width: 100%;
max-width: 3000px;
}

.container img {
width: 100%;
height: auto;
}

.container .btn {
position: absolute;
top: 60%;
left: 26.5%;
transform: translate(-75%, -50%);
-ms-transform: translate(-75%, -50%);
background-color: #000000;
color: white;
font-size: 16px;
padding: 18px 24px;
border: none;
cursor: pointer;
border-radius: 10px;
text-align: center;
}

.container .btn:hover {
background-color: gray;
}
</style>
</head>
<body>

<div class="container">
<img src=картинка width="100%" alt="123" >
<button class="btn">Ебануться</button>
</div>

</body>
</html>
Аноним 27/11/20 Птн 01:05:38 1866622408
А есть ли какая-нибудь информация, будут ли когда-то в PHP примитивы или как оно там называется, чтобы можно было сделать вот так?:
$a = "foobar";
$b = $a->trim()->toUpper()
А то сейчас очень отвратный дизайн, когда скобки в скобках в скобках в скобках
Аноним 27/11/20 Птн 01:15:47 1866625409
>>1866622
Это называется autoboxing и unboxing.
Аноним 27/11/20 Птн 01:20:09 1866627410
>>1866468
Короче делают из пыхи жабу)
Аноним 27/11/20 Птн 03:45:08 1866643411
>>1866455
Внимательно прочитай задачу:
Нужно получить имена пассажиров, у которых длина имени равна максимальной длине имени в таблице.

Соответственно запрос будет состоять из двух частей:
1) Получение максимальной длины имени в таблице
SELECT MAX(LENGTH(name)) FROM Passenger

2) Получение имен пользователей, у которых длина имени равна максимальной:
SELECT name
FROM Passenger
WHERE LENGTH(name) = максимальная длина

Постановка задачи это половина ответа.
кто 27/11/20 Птн 03:54:39 1866644412
Пацаны, чем существенно ПЭХАПА отличается от ПИТОНА, не в плане фрейворки другие или переменные через доллар, а в плане языка?
Аноним 27/11/20 Птн 09:21:30 1866690413
>>1866644
Опять кликбэйт на обсуждение хуй пойми чего
Аноним 27/11/20 Птн 09:46:41 1866694414
>>1866644
Разное количество вакансий и характер этих вакансий.
Аноним 27/11/20 Птн 14:49:25 1866921415
>>1866643
но ведь подзапрос в WHERE это плохо. выше по треду обсуждали ведь
Аноним 27/11/20 Птн 16:50:29 1867014416
IMG2956.JPG 177Кб, 1080x1349
1080x1349
Салам алейкум, пыхеры. У меня есть приложка на symfony, и еще 2 микросервиса в придачу. Все они пишут логи в файлы в папке ./var/log/prod. Вопрос: Как мне лучше собирать логи в одно место, чтобы с веб морды все просматривать?

На текущей момент в моей голове плавает следующие мысли:
1. Graylog(но мне кажется уж слишком чересчур для трех файлов логов)
2. Самописный скрипт, который распарсит файлы и выведет в вебморду, а на js через регулярку подсветку(INFO, WARN, ERROR, etc..)
3. Какой-то открытый проект(о котором я еще не знаю), который подойдет под мои масштабы бедствия



Аноним 27/11/20 Птн 18:46:17 1867133417
>>1866921
Ну ты и жопочтец, конечно. Подзапросы в SELECT это плохо.
Что по твоему происходит когда ты пишешь SELECT LENGTH(name) ? Для каждой строки результата выполняется функция LENGTH(). Точно так же для каждой строки результата выполнится подзапрос.

В WHERE подзапрос выполниться один раз, чтобы сформировать условие. А потом уже готовое условие будет использовано для выборки.

В итоге: в WHERE мы формируем запрос, который потом выполнится один раз. В SELECT мы модифицируем результат запроса, и делаем это по разу для каждой строки.

Про порядок выполнения написано здесь https://sql-academy.org/en/guide/syntax-sql-select.
Аноним 27/11/20 Птн 18:49:48 1867138418
Аноним 27/11/20 Птн 19:09:03 1867155419
>>1867014
Что значит как собрать? Просто пиши логи не в файлы, а в общее хранилище.
Чаще всего этим общим хранилищем выбирают Elastic. Graylog, например, использует именно его для хранения логов. Но хранить можно хоть в мускуле, просто для эластика уже есть куча готовых способов логи визулизировать, как ты написал "веб морд".

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

Опцинально можно заморочиться с очередью, чтобы писать логи асинхронно и не падать если хранилище логов прилегло, но с твоими масштабами это вряд ли нужно.
Аноним 27/11/20 Птн 19:44:03 1867183420
где радость от 8й версии?
Аноним 27/11/20 Птн 21:34:24 1867276421
Аноним 27/11/20 Птн 21:44:19 1867284422
>>1867183
Когда будем юзать) Меня больше всего радует сахарок в конструкторе и именованные аргументы
Аноним 27/11/20 Птн 22:03:39 1867300423
к слову о 8 пыхе, стоит ли на неё щяс перекатываться если я только учусь/вкатываюсь, или 7,4 для меня пока достаточно будет ?
Аноним 27/11/20 Птн 22:12:32 1867308424
>>1867300
хотя поздно я только что скачал 8 версию
Аноним 27/11/20 Птн 22:16:13 1867311425
>>1867300
Пока лучше 7.3-7.4 (версию где ввели строгую типизацию у переменных классов) они самые актуальные и 8 обратно совместима с ними. У нас некоторые проекты на 7.1 ещё сидят. И один Легаси на 5, но скоро с нуля будем его переписывать. Новые в 7.4 делаем. В проде 8 будет появляться только через годик-полтора.
Аноним 28/11/20 Суб 00:10:13 1867444426
>>1866622
Короче, вы мне не ответили, нашел статью от Никиты Попова по этому поводу http://nikic.github.io/2014/03/14/Methods-on-primitive-types-in-PHP.html
Конечно охуеть, статья в 2014 написана, на тот момент он уже выкатил рабочий пример и написал что желает увидеть эту фичу в шестой версии, но пока что ему лень ее доводить до ума. Уже 2021, что за херня? Может они там у себя в шестую версию добавили, а в седьмую забыли?
Аноним 28/11/20 Суб 05:54:57 1867516427
Аноним 28/11/20 Суб 12:21:49 1867655428
>>1867300
Только после того как вкатишься в 7,4. Фреймворки еще года полтора будут переходить на 8-ку.
Аноним 28/11/20 Суб 13:26:00 1867683429
Аноны, есть МООС-курсы на пхп по типу Фрикодкэмп для ЖСа, хиперскила для джавы и юлерна для шарпа? Автотестики, короткие видео, небольшие лекции в текстовом формате - вот это вот все?
Аноним 28/11/20 Суб 17:55:08 1867799430
Аноним 28/11/20 Суб 18:02:49 1867803431
>>1867799
Дополню, можешь убрать symfony-pack в конфиге и будет чистый тест на php (массивы, ооп и т.д.)
Аноним 28/11/20 Суб 19:22:08 1867825432
6rbq35occu441.jpg 68Кб, 811x642
811x642
Уважаемые аноны, тупой, но не унывающий в треде. Подскажите, пожалуйста, подойдет ли мне такая конфигурация сервера на первый месяц для видео хостинга с короткими видео 1-3 минуты. Пик онлайна планирую ~1000 человек (с трафиком я дружу)

Процессор: Intel® Xeon® E-2146G 6x3.50 GHz (до 4.50 GHz Turbo Boost) / 12 Threads
Память: 32 GB DDR4
Диск: 240 GB SSD
Канал: 1Gbit/s + 15ТБ траффика.

Сайт сделан на laravel и я так понимаю мне нужно будет поставить библиотеку ffmpeg чтобы уменьшать битрейт у видео и меньше нагружать канал. Если не сложно, то подскажите как лучше уменьшить видео без потери качества. Поправьте, пожалуйста, если вопрос задан не корректно. я же тупой
Аноним 28/11/20 Суб 19:38:48 1867839433
>>1867825
>Intel® Xeon® E-2146G 6x3.50 GHz (до 4.50 GHz Turbo Boost) / 12 Threads
>Сайт сделан на laravel
Ларавель монолитный если чё
>мне нужно будет поставить библиотеку ffmpeg чтобы уменьшать битрейт у видео и меньше нагружать канал
Нужно просто пережать существующие\уплоадеющиеся юзерами видео?
Аноним 28/11/20 Суб 19:52:04 1867848434
>>1867839
Скажите, пожалуйста, как монолитность связана с процессором?
Да, нужно пережимать видео которые загружают пользователи.
Аноним 28/11/20 Суб 22:59:10 1868021435
>>1867848
Архитектурно сложнее реализовать весь потенциал процессора, если всрато написано - вбухивая больше бабла перформанс не улучшить
Монолит нужно грамотно кластерить, шерить базы данных и лоад балансить плюс более громоздкие хендл нон-блокинг ио и прослойка под сервисы
С дивана советую начинать выносить сервисы в отдельные микросервисы, как раз начиная с этого ffmpeg конвертатора (может и весь уплоад эндпоинт)
Аноним 28/11/20 Суб 23:18:30 1868039436
>>1868021
Информацию принял, записал, спасибо. Посоветуете что-нибудь на счет характеристик сервера?
Аноним 28/11/20 Суб 23:36:12 1868064437
>>1868039
Ну это целая continuous delivery задача для девопса-программиста, который будет код ревьювить, тестировать, разворачивать и профилировать
Гадая на кофейной гуще: если написано всрато - никакие 6 кор не помогут, если спроектированно и написано заебись - может хватить и меньше, но хз
Аноним 29/11/20 Вск 00:23:01 1868125438
>>1868021

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

Ты ошибаешься, думая, что "монолитное" приложение не может использовать несколько ядер процессора. Наоборот, оно прекрасно масштабируется на них из коробки - просто создается нужное число PHP-FPM процессов.

БД также масштабируется из коробки, так как MySQL обрабатывает каждое соединение в отдельном треде.

Для сайта с 1000 посетителей этого вполне достаточно.

> С дивана советую начинать выносить сервисы в отдельные микросервисы, как раз начиная с этого ffmpeg конвертатора (может и весь уплоад эндпоинт)

Ты, по моему, где-то краем уха услышал миф, что "микросервисы масштабируются, а монолит нет" и бездумно его повторяешь. Какая разница между 2 микросервисами и 2 копиями монолита? Никакой, только с микросервисами архитектура бессмысленно усложняется на ровном месте, нужно возиться с докерами, больше памяти все это ест, больше накладных расходов на передачу данных, сложно читать логи, сложно отлаживать, надо синхронно выкладывать релизы нескольких микросервисов.

Микросервисы повысят затраты рабочего времени и стоимость разработки и поддержки.

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

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

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

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

Автору в данном случае с его микроприложением разбивать на части просто нечего. Разбивать можно от объемов в десятки человеколет.

Вообще, с этими микросервисами какое-то помешательство творится.
Аноним 29/11/20 Вск 00:55:29 1868162439
>>1868021
>>1868125
Блять, и как вообще нормально вкатываться в этот ваш айти, если даже по таким базовым вопросам можно услышать настолько разные ответы?
мимо
Аноним 29/11/20 Вск 01:05:48 1868169440
>>1868125
Про немасштабируемость монолитов наверное я и вправду написал куйню
Но фсные операции с видео я бы всё равно вынес в отдельный сервис, оборачивающий какой-нибудь гринтредовый бинарник, или дописал бы этот гринтредовый бинарник в отдельный эндпоинт и форвардил запрос туда
Аноним 29/11/20 Вск 01:33:36 1868186441
>>1868125
> Никакой, только с микросервисами архитектура бессмысленно усложняется на ровном месте, нужно возиться с докерами
В случае видео или фото проблема актуальна, чтобы как-то балансировать нагрузку.

Самая грамотная архитектура в данном случае это один или несколько воркеров, которым ты в очередь кладёшь задание "перепаковать что-то", и из другой очереди, например, получаешь ответ.

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

Не скажу про PHP, он синхронный и там в принципе сложнее. Может там необходимо уже делать микросервис для этого.

В любом случае это микросервисное проектирование. На питоне, например, тебе не обязательно именно в отдельный сервис всё выносить, ты можешь делать конвертацию в отдельной asyncio-задаче, или в отдельном треде (внешние либы и процессоры не блокируют GIL питона), давать задание через штатную очередь.

То есть поднимать отдельный сервис для перепаковки, очередь сообщений и т.п. не нужно. Вроде бы у тебя один процесс, а реально микросервисный подход, при желании быстро в полноценный микросервис переносится.
Аноним 29/11/20 Вск 01:53:44 1868196442
>>1867825
В твоём случае выносить перепаковку видео в отдельный микросервис необходимо просто.

Ставить брокер очередей-сообщений не обязательно, для твоей задачи можно в качестве очереди использовать БД, это такой типовой подход.

Пользователь загрузил видео, оно копируется в какой-то каталог. В БД в специальную таблицу вносится запись имя файла такое-то, пользователь такой-то, статус "не обработано".

Другой процесс, когда свободен, опрашивает БД, берёт запись оттуда, запускает процесс перекодирования. Как закончит, заносит в БД статус "перекодировано", имя нового файла-размер. После чего принимается за следующее видео.

Более правильный подход это полноценные очереди делать (вроде RabbitMQ), но иногда лучше проще, чем энтерпрайзно.

Главное, для чего это нужно, это чтобы балансировать нагрузку, иначе у тебя очень быстро сервер ляжет.

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

Если ролик в среднем 15Мб, то это всего 1 миллион просмотров.
Аноним 29/11/20 Вск 03:55:30 1868215443
Вопрос по DI-контейнерам. Может кто нибудь объяснить как работать с зависимостями в проекте, через контейнер, если реализации сильно вариативны. То есть например есть некий класс документа с большим количеством бизнес-правил и для его заполнения используются разные наборы сервисов/серчеров/репозиториев, которые подтягиваются через фабрики и стратегии. Как в таком кейсе правильнее использовать контейнер?
Аноним 29/11/20 Вск 09:21:34 1868256444
Аноним 29/11/20 Вск 12:18:29 1868343445
Где и как лучше взять первый заказ по PHP?
Аноним 29/11/20 Вск 12:30:07 1868347446
>>1868162
>>Блять, и как вообще нормально вкатываться в этот ваш айти,
Ойти ныне - для смелых. Это со стороны какжется что крутые парни выбирают идеальные решения. ИРЛ все пишут как могут, а холивары бесконечны. Есть некая средняя планка качества которой нужно соответствовать, и то условно. Не мало успешных проектов какторые написаны через сраку, антипаттерн на антипаттерне. И их владельцам поебать чет там камьюнити кукарекает - они бабки поднимают. Как войти - ебашь свои проекты, количество перерастет в качество.
Аноним 29/11/20 Вск 12:31:46 1868349447
Аноним 29/11/20 Вск 14:28:24 1868421448
>>1868186
так что больше 1 ядра смысла брать без пердолинга нет?
Аноним 29/11/20 Вск 14:50:23 1868439449
>>1868421
Есть, анон выше же написал, что проект как минимум поспавнит php-fpm процессы + фреймворкные воркеры на нон-блок таски
Но имхо в пыхе нон-блок тасков лучше избегать и вынести вычисления (конвертация видео в этом случае) за пределы вебаппной логики
Аноним 29/11/20 Вск 15:29:31 1868472450
>>1868421
Нужно, чем больше, тем лучше.
1) Ты запускаешь много php-воркеров в любом случае.
2) При плохой архитектуре у тебя может работать много ffmpeg процессов одновременно.
3) ffmpeg для перекодирования использует много тредов, по числу ядер, там скорее надо вручную лимитировать через опцию -threads.

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

Самый канонический подход, несложно и надёжно.
Аноним 29/11/20 Вск 18:31:05 1868645451
Начал входить в PHP.

Закончил вуз по профильной специальности. Что-то кодил на крестах, Матлабе и прочем разном. Параллельно 1С программистом 3 года уже проработал, так как хотел деньги, а там порог входа был невысокий и платили уже много, дали совмещать с учёбой.

Счас закончил учёбу полностью (магистратура) и хочу в бекенд на полный рабочий день.

Но, блдеать, почему везде написано от 1 года опыта во всех вакансиях ? Тот факт, что я 1Сной разработкой занимался или на других ЯП какие-то штуки пердолил в рамках универских задач и вообще - их не ебёт ?
Этот год опыта должен быть именно пхп-программистом или что имеется ввиду, когда в вакансиях вроде требования низкие, но всё равно год опыта пишут ?

Аноним 29/11/20 Вск 18:45:14 1868667452
>>1868645
А сходить на собес просто не пробовал?
Аноним 29/11/20 Вск 18:50:24 1868679453
>>1868667
Пока боюсь, чтоб не подумали, что я лох какой-то. Дрочу базу, ларавел и синтаксис, чтоб от руки отскакивал.
Аноним 29/11/20 Вск 18:57:27 1868692454
>>1868645
С твоим бэкграундом тебе вкатиться как нехуй делать, не ссы. Прикинь, что было, если бы все писали "без опыта"? Они бы ахуели от толпы Петровичей, которые решил стать пахрамистами. Подтяни знания по стеку и вперёд.
Аноним 29/11/20 Вск 19:13:21 1868714455
>>1868186
>>1868196

Для работы с очередями не требуется микросервисов. Один и тот же монолит может как класть задачи в очередь (на основе БД), так и брать их и выполнять. При этом при необходимости можно этот монолит запускать на нескольких серверах и масштабировать хоть до бесконечности.

Разделение на микросервисы не требуется.

>>1868421

Конечно, есть. Если пришло несколько HTTP-запросов, то они будут параллельно выполняться на нескольких ядрах, не мешая друг другу.

Аноним 29/11/20 Вск 19:40:36 1868748456
>>1868714
>Для работы с очередями не требуется микросервисов. Один и тот же монолит может как класть задачи в очередь (на основе БД), так и брать их и выполнять.
Архитектурно это фактически и есть микросервис, просто без физического выделения.

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

Причём я не очень понимаю, как это реализовать на PHP, когда работает много php-fpm процессов. Ведь потребность перекодировать может у любого возникнуть, причём одновременно.
Аноним 29/11/20 Вск 21:23:29 1868891457
>>1868679
Личные качества: решительность, упорность, дисциплинированность гораздо важнее чем какой угодно скилл. И гораздо тяжелее достигаются. Не ссы и пиздуй на собес.

Корона — дерзновенному, скипетр — смельчакам!
Трон — тому, кто говорит: Возьму и не отдам.
«Черта с два! — вскричал барон, прочь отбросив шлем, —
Хладное железо властвует над всем!

Аноним 29/11/20 Вск 22:34:25 1868946458
>>1868748

Это не микросервис. Микросервис - это отдельное приложение с отдельным кодом и зачастую отдельным хранилищем (БД).

Вот, кстати, еще одна проблема с микросервисами: дублирование кода. Допустим, есть класс User, и его надо использовать в нескольких микросервисах. Причем в одном он еще проецируется на БД. Либо ты копипастишь и дублируешь код, либо ты пытаешься выносить это в библиотеку и получаешь отдельный набор проблем.

Нафиг не нужны эти ваши микросервисы.
Аноним 29/11/20 Вск 22:42:40 1868958459
>>1868215

> используются разные наборы сервисов/серчеров/репозиториев, которые подтягиваются через фабрики и стратегии

Все это и кладется в контейнер. Все сервисы, репозитории и стратегии.

>>1867825

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

Аноним 29/11/20 Вск 22:52:50 1868970460
image.jpeg 6Кб, 225x225
225x225
>>1868946
Анон сверху заигрался и ларавельные воркеры и вправду сложно назвать и сервисами, не говоря уже о микросервисе
В чём твоя проблема поймать запрос на операцию с видео монолитом, прокрутить мидалварями чек сессии с пермишеннами и редиректнуть на микросервис, не имеющий представления о юзвере и выполняющий только выделенную операцию (о логике которой, в свою очередь, монолит не обязан знать за пределами роутов веб апи) будучи подключенным к тому же мускельному пулу, если надо
Аноним 29/11/20 Вск 22:55:17 1868972461
>>1866195

Мне кажется, регулярку для разбиения текста лучше было написать так:

- до текущей позиции знак препинания
- после текущей позиции не знак препинания

То есть использовать не только look back assertion, но и look ahead.

> $wordsArray
Лучше писать просто $words

> [А-Я][а-я]
Надо писать [a-яё], так как ё в Юникоде не входит в диапазон а-я.

Сам код немного переусложнен. Вот как можно сделать чуть короче:

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

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

Также, достаточно использовать один цикл по предложениям.
Аноним 29/11/20 Вск 23:08:01 1868980462
>>1866178

Вообще да, по сути то же самое.

>>1865761

Я написал, что утверждение "подзапрос всегда менее эффективен, чем джойн" неверно и все зависит от работы оптимизатора БД. Ну да, MariaDB не смогла оптимизировать, может какая-то другая СУБД сможет. Хотя планы выполнения запросов были похожи.

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

Аноним 29/11/20 Вск 23:08:07 1868981463
>>1868972
>$words, not words!
— Minsc probably
Аноним 30/11/20 Пнд 00:15:31 1869013464
>>1868970

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

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

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

Единственная проблема монолита - негативное отношение спикеров на конференциях. Что можно пережить.
Аноним 30/11/20 Пнд 00:19:43 1869014465
>>1868970

Если написанное выше сложно и запутанно, то могу выразить мысль короче:

Для вашего (не-гугла) проекта монолит - идеальное решение в сравнении с микросервисами. Все, кто предлагает его разбить на микросервисы, просто занимаются вредительством и нанесением убытка.
Аноним 30/11/20 Пнд 01:00:00 1869025466
>>1869013
Ты охуенно переливаешь из пустого в порожнее. При этом еще и выдумал какое-то свое определение микросервисов. Я примерно представляю себе структуру простейшего видеохостинга, я её опишу и некоторые требования к ней, а ты нам конкретно расскажи как это сделать по твоему.

Итак видеохостинг.
У нас есть железный сервер 8 ядер, 32гб оперативы, на 1К пользователей с запасом. На этом железе нужно разместить следующее:
1) Сайт, на который собственно заходят пользователи.
2) Админку, администрация должна иметь возможность управлять содержимым.
3) Реляционную базу, допустим MySql.
4) Memcached для реляционной базы.
5) CDN сервер, собственно с видео.
6) Elastic для поиска.
7) Несколько воркеров, которые перекодируют пользовательские видео.

Теперь требования к работе всего этого добра:
1) Сайт и админка должны работать стабильно всегда. Если не работает, то минус конверсия, или проще минус бабки.
2) Memcached не должен падать если упал любой другой сервис. Упал мемкеш -> все что было в оперативе по пизде -> нагрузка на базу -> сайт не работает -> смотри пункт первый.
3) CDN не должен жрать весь канал, мы не только видео отдаем. Опять смотри пункт первый.
4) У воркеров должно быть максимум доступных ресурсов, но не все, опять пункт первый.

Монолит, хуелит. Расскажи как ты будешь такое реализовывать, с соблюдением требований конечно. Требования типичные, не только к видеохостингу относятся, а к 99% сайтов.
Аноним 30/11/20 Пнд 01:56:15 1869029467
image.jpg 11Кб, 300x300
300x300
Нормально я щитпостнул про монолит
Аноним 30/11/20 Пнд 09:31:28 1869109468
Аноны, кто знает как работает автовайринг в ларавел, или допустим в slim с контейнером php-di? То как разрешаются зависимости для сервиса в контейнере - понятно. Я щас просто хочу переехать в своем приложении со слим 3 на четвертую версию. А там много где используется автовайринг, причем классы которые разрешаются в кострукторе класса на пример в доменном слое - не являются зависимостями которые определены в контейнере.
Типа такого:

Сервис доменного соля

ServiceClass{
//Объект Class1 не находится контейнером, но как то разрешается все равно. В ларавел это в принципе стандартная тема.
__construct( Class1 $class1 ){...}

}
Аноним 30/11/20 Пнд 11:09:58 1869143469
>>1868958
Кладутся все варианиты постороения цепочек? Или просто некий дефолтный вариант, а остальные вариации сетаются уже на app уровне? Либо вообще делать все зависимости nullable и в контейнере складывать только сами экземпляры, как я видел в одном старом проекте, но какой же это тогда DI...
Аноним 30/11/20 Пнд 11:19:07 1869147470
>>1869143
То есть для примера, есть класс Document, у него есть несколько фабрик, которые выбираются исходя из данных в запросе, соответсвенно у каждой фабрики своя генерация полей документа, которые в свою очередь подтягиваются из разных репозиториев через свои сервисные классы. Тупа перечислить все варианты в контейнере не выйдет. Вот я и пытаюсь понять, как в таком кейсе было бы правильно использовать контейнер.
Аноним 30/11/20 Пнд 12:18:07 1869165471
>>1869109
https://www.php.net/manual/ru/book.reflection.php

Програмно можно получить список зависимостей у конструктора с типом зависимости по тайпхинту, и так рекурсивно до конца, а потом создать его. Офк если переменная просто int $a то контейнер не узнает что за инт ей нужен
Аноним 30/11/20 Пнд 15:41:04 1869254472
чем пхп лучше сишарп?
Аноним 30/11/20 Пнд 15:56:44 1869264473
1606741002954.png 4Кб, 241x64
241x64
Как научить netbeans 12 правильно выводить русский?
Аноним 30/11/20 Пнд 16:32:56 1869280474
>>1869254
А почему пыха должна быть лучше? (А так количеством работы и лёгкостью вката)
Аноним 30/11/20 Пнд 16:44:26 1869287475
>>1866312
А можно пожалуйста критерии мидлов, синьеров и всех из них вытекающих? Уже ни раз обсуждали и разжевывали вам эту тему

>>1866451
> сеньор из какой-то вебстудии может не потянуть в Яндексе даже на джуна

Я такое вижу, мне вас реально жаль становится. Мидл, синьер и прочее - это по сути вилка зп и ответственность которую ты на себя берешь за эту зп. А то, как это называется и какой у тебя опыт - ебет кого? Чтобы получать мидловскую зп тебе не нужно 3года опыта, как высрал чел сверху. И эти же 3года опыта совсем даже не дают тебе гарантий что ты эту мидловскую зп будешь получать. И мидловская зп это не "макако-конторная", а средняя по рынку

И если я не ошибаюсь в яндексе на пхп не пишут, так что такие мидлы и синьеры нахуй им не сдались (собственно как и сам яндекс нахуй не сдался этим мидлам/синьерам)
Аноним 30/11/20 Пнд 16:46:21 1869289476
>>1869280
а если меня не интересует ни лёгкость вката, ни поиск работы
тип работа есть не айти
зарабатываю норм, себя по крайней мере без напряга содержу
есть маня идея для проекта
какую технологию выбрать чтоб она была быстрая, масштабируемая?
Аноним 30/11/20 Пнд 16:51:08 1869293477
>>1868645
>Но, блдеать, почему везде написано от 1 года опыта во всех вакансиях ?

Потому что забей на это хуй и просто иди на собес. То что там про опыт где то в вакансии указано - очень часто с действительностью никакого отношения не имеет, разве что в самой вакансии могут написать что то вроде
Требования:
-От одного года коммерческой разработки на фреймворк/язык нейм
-и т.д
Аноним 30/11/20 Пнд 16:53:11 1869297478
>>1869289
>какую технологию выбрать чтоб она была быстрая, масштабируемая?

На чем умеешь на том и пиши. Все равно если выстрелит и разрастется - твой говнокод лучше будет переписать
Аноним 30/11/20 Пнд 23:36:09 1869632479
>>1866455
Анончик, а что это ты за задания выполняешь? Расскажи пожалуйста.
Аноним 30/11/20 Пнд 23:40:53 1869633480
>>1869165
Да я как то тупопездно спросил, выстрел в небо. Понятно что рефлексией. Сама логика реализации.
Одно дело когда зависимость вызываемая из контейнера требует для самой себя зависимости из контейнера. Все это выполняется внутри условного метода resolve - и понятно что контейнер найдет нужный класс.

А вот когда какой нибудь сервис автовайром тянет зависимость которой нет в контейнере - как вообще в этом случае участвует контейнер? Каким образом он доступен и видит что нужно резолвить эту зависимость. Контейнер это обертка над всем приложением, или где то там контейнер вызывается и его методы срабатывают при вызове зависимости сервиса.
Короче это только код смотреть. Тупой мой вопрос был.
Аноним 30/11/20 Пнд 23:54:57 1869640481
>>1869147
я мимо шел. Щас с этой темой так же пердолюсь.

Есть приложуха на slim3, щас буду на slim 4 переезжать. В нем все несколько иначе.
В slim3 судя по гайдам был DI в виде антипатеррна - сервис-локатор.
Потому что контейнер передавался в конструктор контроллера. Соответственно необходимые зависимости контроллера скрывались.
В slim4 нет встроенного контейнера, но по гайдам самый частый вариант -php-di. Он гораздо богаче pimple из slim3.
Я к чему - php-di - при инициализации в нем можно создать набор зависимостей, этот набор так же попадет в экшен-контроллер или метод контроллера как контейнер доступный из $this. Однако, судя по примерам, по ходу выполнения скрипта другие зависимости, допустим в неком сервисе какой нибудь репозиторий вызывается - все это делается посредством инъекции в мтод или конструктор. И php-di по тайпхинтам как то резолвит эти зависимости.
Из чего такой вывод - если у а нас контейнер без автовайр, то те зависимсоти которые в slim4 автоматически разрешаются - должны быть определены в контейнере. Меня в таком случае это тоже смущает, так как в контейнере будет определено дохрена разных моделей, или репозиториев, всяких хелперов и прочего.
Вероятно в каких то местах инъекции должны быть жесткие, без участия контейнера.

Аноним 30/11/20 Пнд 23:57:32 1869642482
>>1869640
п.с.

>>Вероятно в каких то местах инъекции должны быть жесткие, без участия контейнера.
Что бы уменьшить количество зависимостей в di контейнере
Аноним 01/12/20 Втр 00:31:32 1869670483
>>1869293
>почему везде написано от 1 года опыта во всех вакансиях
Потому что в HH работодатель может выбрать только одну из опций, или "без опыта работы", или "от одного до трёх", или "от трёх до шести" ну и ещё другие.

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

Поэтому все указывают от "одного до трёх", даже когда в теле вакансии написано, что можно без опыта.

Короче не надо обращать внимания. Когда действительно хотят опыт, тогда указывают "от трёх лет", что не значит, что с годом коммерческого опыта к ним соваться не надо.
Аноним 01/12/20 Втр 00:36:45 1869680484
>>1869633

Возможно, он действует так: когда ты запрашиваешь сервис с именем SomeClass, он находит этот класс и смотрит в конструктор. Если там в тайп-хинтах есть другие классы - то повторяет процедуру. Когда все зависимости удовлетворены, он создает все нужные объекты.

Вот что-то похожее описано в мануале: https://php-di.org/doc/autowiring.html

Но для надежности, конечно, стоит проверить код.

Аноним 01/12/20 Втр 00:53:52 1869699485
>>1869254
Только тем, что пых - не виндовое говно.
Аноним 01/12/20 Втр 01:30:34 1869712486
>>1869640
Тоже самое тащемто, мигрировал на слим 4 с 3го, тот же php-di. Единственное у меня раньше на проекте di вообще не использовалось почти, вот пытаюсь понять как правильно.

Как кстати решил проблему совместимости старых методов Request/Response, если пришлось?
Аноним 01/12/20 Втр 03:06:16 1869740487
Дороу, скоро мне 24, стоит ли вообще хоть пытаться вкатиться в программирование, сам имею диплом из шараги тип прогер, даже курсачи писал на пхп, но на чистом.
Аноним 01/12/20 Втр 09:05:18 1869788488
>>1869740
>стоит ли вообще хоть пытаться вкатиться в программирование
нет конечно
Аноним 01/12/20 Втр 09:59:24 1869812489
Не знаю, как сделать две задачи:
https://sql-academy.org/ru/trainer/tasks/60
>Выведите идентификаторы преподавателей, которые хотя бы один раз за всё время преподавали в каждом из одиннадцатых классов.
и
https://sql-academy.org/ru/trainer/tasks/64
>Выведите имена всех пар пассажиров, летевших вместе на одном рейсе два или более раз, и количество таких совместных рейсов. В passengerName1 разместите имя пассажира с наименьшим идентификатором.

В первой сделал только общую таблицу всех уроков для всех 11-х классов
SELECT * FROM Schedule
INNER JOIN Class ON Schedule.class=Class.id
WHERE name LIKE '11%'


Во второй вообще не понимаю, как это решать. Явно какие-то джойны.
Аноним 01/12/20 Втр 10:58:28 1869838490
Аноним 01/12/20 Втр 11:05:05 1869842491
>>1869812
И ещё
https://sql-academy.org/ru/trainer/tasks/16
>Вывести отсортированный по количеству перелетов (по убыванию) список пассажиров, совершивших хотя бы 1 полет.
Ответ
SELECT name, COUNT(name) AS count FROM Passenger
INNER JOIN Pass_in_trip ON Passenger.id=Pass_in_trip.passenger
GROUP BY name
ORDER BY count DESC

не приняли. Видимо потому, что в таблице Pass_in_trip есть люди, которые купили несколько билетов на один рейс и этот запрос считает каждый билет отдельным вылетом.
То есть, нужно снаала вытащить номера пассажиров, которые вообще летали
SELECT DISTINCT passenger FROM Pass_in_trip
А затем как-то поджойнить что-то. Не понимаю, что и как, ве запросы выводят либо херню, либо не работают вообще.

Меня уже реально подбешивает синтаксис SQL. Вместо
Выполните Пуск->Панель управления->Администрирование->Службы->Superfetch - Отключить
пишешь что-то типа
Панель управления ->IN Пуск-> Отключить WHERE (Службы=Superfetch) FROM Администрирование
Кто вообще такую ебанину придумал? Почему нельзя было НОРМАЛЬНЫЙ синтаксис завезти?
Аноним 01/12/20 Втр 12:16:43 1869910492
>>1869842
Я уже писал, что реляционные базы это про наборы данных и их объединение. Разделяй свой запрос на отдельные наболры данных, а потом объединяй их.

>Вывести отсортированный по количеству перелетов (по убыванию) список пассажиров, совершивших хотя бы 1 полет.

Сначала считаем полеты у пассажиров:
SELECT passenger, COUNT(trip) AS count
FROM Pass_in_trip
GROUP BY passenger

Потом берем имена вместо идентификаторов:
SELECT p.name, trips.count
FROM (
SELECT passenger, COUNT(trip) AS count
FROM Pass_in_trip
GROUP BY passenger
) AS trips
INNER JOIN Passenger AS p
ON p.id = trips.passenger

Потом сортируем:
SELECT p.name, trips.count
FROM (
SELECT passenger, COUNT(trip) AS count
FROM Pass_in_trip
GROUP BY passenger
) AS trips
INNER JOIN Passenger AS p
ON p.id = trips.passenger
ORDER BY trips.count DESC

Если тебя путает формат записи, когда сначала выполняется то что внутри, то используй CTE. В этом тренажере используется MySql 8 он CTE поддерживает. С CTE запрос будет такой:

WITH passenger_trips AS (
SELECT passenger, COUNT(trip) AS count
FROM Pass_in_trip
GROUP BY passenger
),
named_passenger_trips AS (
SELECT p.name, passenger_trips.count
FROM passenger_trips
INNER JOIN Passenger AS p
ON p.id = passenger_trips.passenger
)

SELECT name, count
FROM named_passenger_trips
ORDER BY count DESC

Понятно что второй шаг можно пропустить, но это нужно чтобы ты понял чем ты вообще занимаешься. Ты берешь набор строк с количеством полетов, и объединяешь его с набором имен пассажиров. Чем меньше эти наборы, тем быстрее все будет работать. Математика уровня пятого класса.
Аноним 01/12/20 Втр 12:21:51 1869912493
>>1869812
Вот так решается 60 задача:

Получаем у кого вообще вел пары каждый препод:
SELECT teacher, JSON_ARRAYAGG(class) classes
FROM Schedule
GROUP BY teacher

А потом проверяем есть ли среди пар преподов пары одиннадцатых классов
SELECT Teacher
FROM (
SELECT teacher, JSON_ARRAYAGG(class) classes
FROM Schedule
GROUP BY teacher
) AS teacher_classes
WHERE JSON_CONTAINS(
teacher_classes.classes,
(SELECT JSON_ARRAYAGG(id) FROM Class WHERE name LIKE '11%')
)

JSON используется потому что ебучий MySql не поддерживает нормальные массивы, но идея та же самая. Можно список пар хоть в строку засунуть, просто перед проверкой придется эту строку опять разбить.
Аноним 01/12/20 Втр 13:06:23 1869943494
>>1869842
>>Почему нельзя было НОРМАЛЬНЫЙ синтаксис завезти?
Не тормози. Потому что все это основано на реляционной алгебре. Все это старше чем ты раза в три. sql синтаксим полностью своей задаче и логике удовлетворяет.
Сахар - это про фронтред макак.
Аноним 01/12/20 Втр 13:08:30 1869944495
>>1869712
>Как кстати решил проблему совместимости старых методов Request/Response, если пришлось?

А какие там проблемы? Чет не столкнулся пока что. Они же и там и там psr7. Ток для slim4 пакет фабрик теперь отдельно. require slim/psr7 - я поставил и вроде все норм.
Аноним 01/12/20 Втр 15:35:41 1870043496
>>1869740
какой ты ответ ожидаешь услышать? люди в 30 лет вкатываются без проблем. если есть желание и интерес - просто бери и вкатывайся. гайд с нуля в шапке, но я бы советовал определиться с направлением сначала. фронт энд или бэк энд. так легче будет составить план действия по изучению и поделить задачи на мелкие
Аноним 01/12/20 Втр 18:18:04 1870194497
>>1869944
В третьем слимовский вариант Реквеста и респонса был расширен, методами вроде getParam, getParsedBodyParam и тд, в 4м все это снесли для соответсвия psr. Если с респонсом еще нет проблем, просто оборачивается кастомным в фабрике, то чтобы вернуть подобные штуки в реквест, его приходится чуть не сначала пересоздавать. Вообщем я предпочел отрефакторить контроллеры, поменяв только респонс.
Аноним 01/12/20 Втр 22:50:00 1870469498
>>1869838
24 года это уже поздно, ты слишком старый
Аноним 02/12/20 Срд 01:04:10 1870565499
ОП, что можешь посоветовать для изучения rabbitmq? Ну, как архитектурно приложение строить и так далее. Или там все настолько элементарно что просто ставишь php-amqplib и юзаешь? Есть ли смысл смысл в бандле для симфони (php-amqplib/RabbitMqBundle)? В Yii юзал либу для очередей, которая по консольной команде запускалась. Где почитать для чего, как и что делать правильно?
Аноним 02/12/20 Срд 12:00:21 1870741500
>>1870194
Я пока что не особо понимаю как в php-di работает этот автовайринг.
Я определяю роуты как экшен контроллеры:
Этот контроллер не инстанцирован в контейнер.

$app->get('/main', MainAction::class );

и судя по все в таком случае MainAction в конструкторе резолвит только те зависимости что есть в контейнере.
У меня в контейнере объекты ServerRequestInterface $request и ResponseInterface $response отсутствуют - и выпадает ошибка.
Но при этом при последующем вызове __invoke-метода( ServerRequestInterface $request и ResponseInterface $response ) - эти зависимости автоварятся. Короче пока что для меня все это из магии состоит наполовину. Нужно больше предолиться.



Аноним 02/12/20 Срд 14:46:50 1870849501
>>1870741
п.с.
Вообще кака то залупа получается. Чет меня этот ебаный php-di подбешивает. Сделал
$app->get('/main', MainController::class . ':main' ); - таким образом.
Мне нужно подтянуть в этот метод main класс MainService как зависимость
mainService - в контейнере изначально не определен. Рассчитываю на awtowiring
и по итогу хуйня получается

class MainController{

//если передать в конструктор MainService
public function __construct(ContainerInterface $container, MainService $mainService){
//то через конструктор зависимость MainService подтянется,
//но при этом, как я выше писал через конструктор нельзя подтянуть ServerRequestInterface $request, ResponseInterface $response.
//будет ошибка Entry "App\Action\MainAction" cannot be resolved: Entry "Psr\Http\Message\ServerRequestInterface" cannot be resolved: the class is not instantiable Full definition:

}

//тут получается хуйня - если я в методе определяю mainService - то выдает ошибку о том что передан нет клдасс а array
public function main( ServerRequestInterface $request, ResponseInterface $response ,MainService $mainSrvice ){
//Argument 3 passed to App\Action\MainController::main() must be an instance of App\Domain\Main\Service\MainService, array given
//с хуев ли array?
}


}


Я как то через жопу настроил, и не могу инъекции в метод контроллера проводить, только в конструктор
Аноним 02/12/20 Срд 15:20:38 1870878502
Есть один метод. Принимает в себя экземпляр класса Model, например.
Примет ли он экземпляр класса Event, если Event наследует Model?
В онлайн компиляторе работает, локально нет возможности проверить. PHP 7+
Аноним 02/12/20 Срд 15:47:22 1870893503
Аноним 02/12/20 Срд 15:57:55 1870898504
Аноним 02/12/20 Срд 16:57:19 1870973505
>>1861344
Что это за хуйня вообще, зачем столько конкатенаций?
Аноним 02/12/20 Срд 22:18:29 1871313506
Аноним 03/12/20 Чтв 01:47:32 1871485507
Аноны, кто знает как в связке slim4 + php-di добиться того что бы в контроллере, в нужном методе автовайрились нужные зависимости автоматически?
Чет нихуя красиво не получается, пока что получается что на каждый роут свой ActionController - в который загружается свой отдельный сервис, а в сервисе уже все требуемые зависимости через конструктор автовайрингом подтягиваются. Много файлов классов получается, но хоть прозрачно все.
Аноним 03/12/20 Чтв 11:01:41 1871595508
Никто случаем не в курсе, как в редакторе Geany сделать так, чтобы результат выводился вот здесь?
Аноним 03/12/20 Чтв 11:02:05 1871596509
Снимок экрана в[...].png 40Кб, 1024x610
1024x610
Аноним 03/12/20 Чтв 12:50:25 1871644510
>>1869910
Спасибо.
Значит в 16 нужно было джойнить не сами таблицы, а сначала на основе таблицы билетов создать новую таблицу, а потом уже заджойнить её с существующей таблицей пассажиров. А зачем создавать псевдонимы? а многих сайтах вижу примеры сложных запросов, в которых куча псевдонимов. неужели это обязательно? Они же наоборот затрудняют чтение, вводя дополнительные имена.

>>1869912
А вот тут слишком для меня сложно. JSON_ARRAYAGG - это какие-то дальние закоулки документации, в гугле даже мало что с этой командой есть. Если для решения этой задачи нужно знать и помнить вообще все возможные функции (или как эти штуки называются?), то мне становится как-то стрёмно.
Аноним 03/12/20 Чтв 15:11:57 1871773511
>>1871644
>А зачем создавать псевдонимы?
Псевдонимы нужны чтобы отличать какие поля к чему относятся. По умолчанию в качестве псевдонима используется имя таблицы, но оно длинное. Обычно сокражают по первым буквам, а если сокращение уже есть добавляют номер. Это удобно и можно понять почему именно такое название. А для подзапросов наоборот нужно придумать максимально понятное название, чтобы по нему было понятно что внутри.

>А вот тут слишком для меня сложно. JSON_ARRAYAGG - это какие-то дальние закоулки документации
Ты думаешь я помнил какие там функции есть? Я сначала сформулировал что мне нужно: структура в которой для каждого препода есть список классов, где он провел пары, потом сравниваем этот список со списком одиннадцатых классов и вуаля. JSON_ARRAYAGG это просто способ хранения. Первое что мне пришло в голову group_concat и find_in_set, но это совсем уж ебля мозга, поэтому я взял решение посовременней.

Вообще я бы НЕ рекомендовал учиться на MySql, даже 8 версии. Я понимаю что ты нашел пиздатый учебник, но лучше как для нервов так и для карьеры Postgres.
Аноним 03/12/20 Чтв 21:18:12 1872193512
Здравствуйте, можно ли как-то поделить один файл php на ссылки не разделяя его при этом на разные файлы. Чтобы одной части кода задать один адрес, а другой части другой и т.д.
Аноним 04/12/20 Птн 07:37:49 1872480513
Аноним 04/12/20 Птн 15:03:32 1872726514
Может кто-нибудь знает, как шторм откатить до версии 2020.2? Там просто в новой версии баг один очень неприятный с ларавелем. Разрабы написали, что пофиксят в обновлении, но когда оно будет неясно.
Аноним 04/12/20 Птн 16:53:41 1872837515
Как вы относитесь к учебнику ОПа? Я вот дошел до задачки про сумму прописью и понял что без сторонней помощи и изучения чужих решений это просто нереально решить. В чем смысл тогда?
Аноним 04/12/20 Птн 17:06:51 1872864516
Крутая у вас тут шапка.
Аноним 04/12/20 Птн 17:08:24 1872868517
>>1871595
К нему есть расширение, которое добавляет в это окошко терминал.
Аноним 04/12/20 Птн 17:59:53 1872966518
А на php или хотя бы js есть какая-нибудь библиотека для работы с текстом на русском? То есть есть текст из него нужно составить словарь и посчитать сколько раз то или иное слово там используется, учитывая склонения, спряжения и другие производные формы.
Аноним 04/12/20 Птн 19:32:06 1873084519
>>1872837
Ссылку на задачу скинь
Аноним 04/12/20 Птн 19:37:53 1873089520
Аноним 04/12/20 Птн 20:25:37 1873120521
Аноним 04/12/20 Птн 21:36:00 1873162522
>>1872966

Раньше была библиотека phpmorphy для этого.

>>1872837

Эта задача решается разбиением на более мелкие. Делаем функцию, которая умеет выбирать форму слова в зависимости от числа, делаем функцию, которая выводит числа от 1 до 999, и из этого собираем программу.

>>1871485

Ты можешь объявлять зависимости в конструкторе контроллера, для всех методов. Тогда, правда, будет подключаться чуть больше зависимостей, чем требуется для одного роута.
Аноним 04/12/20 Птн 21:50:04 1873172523
>>1870878

Согласно принципу Лисков, объект-наследник может применяться вместо объекта-предка. Этот принцип во многих случаях соблюдается, например new Event instanceof Model тоже вернет true.

>>1870849

Как мне кажется, для создания объекта-контроллера Слим вызывает php-di, потому в конструктор можно передавать зависимости. При этом php-di ничего не знает о request/response, и не должен знать, так как это не постоянные объекты, а создающиеся на каждый запрос. Их нельзя создать автоматически, так как в том же реквесте тогда не будут прописаны нужные параметры (какой URL, какие GET параметры итд).

Метод main() вызывает не php-di, а Слим, php-di тут никак не участвует, потому в него зависимости не передаются. А объекты request/response - передаются.

Что именно передается в callback, и откуда там 3-м аргументом берется массив, описано тут

- https://www.slimframework.com/docs/v4/objects/routing.html#route-callbacks
- и тут https://www.slimframework.com/docs/v4/objects/routing.html#route-strategies

Аноним 04/12/20 Птн 21:52:19 1873174524
>>1870849

То есть Слим действует как-то так:

- видит что контроллером указан MainController::class . ':main'
- просит DI контейнер создать сервис с именем MainController::class
- вызывает у объекта метод main и передает в него реквест/респонс.

Аноним 04/12/20 Птн 22:06:47 1873184525
>>1870565

В новом Симфони есть компонет Messenger для работы с очередями. Но ты можешь использовать и другие библиотеки. Архитектура простая - есть писатели, которые пишут задачи в очередь, есть процессы-воркеры, которые читают задачи из очереди, и выполняют. В случае Messenger тебе не надо особо разбираться в RabbitMQ, он все настроит за тебя.

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

>>1869812

С преподавателями есть несколько подходов.

Так как 11-х классов всего два, можно заджойнить таблицу Schedule саму на себя, с условием что справа и слева один и тот же препод (FROM schedule sch1 JOIN schedule sch ON sch1.teacher = sch2.teacher) и искать записи, где слева класс 11A, а справа 11B.

Но, что если классов может быть больше? Хочется более универсальное решение. Оно есть. Мы можем:

- взять таблицу schedule
- выбрать из нее только записи с 11-ми классами (WHERE)
- сгруппировать по преподам
- посчитать число уникальных классов COUNT(DISTINCT)
- оставить только записи, где это число >= 2 (HAVING)

SELECT teacher, COUNT(DISTINCT class) num
FROM schedule sch
WHERE class LIKE '11%'
GROUP BY teacher
HAVING num = 2

И без всяких JSON-ов! Учи SQL получше, это довольно простая задачка. Учись применять джойны и делать группировки.
Аноним 04/12/20 Птн 23:17:57 1873230526
>>1873184
>И без всяких JSON-ов!
Сильное заявление, проверять ты его конечно не стал.
Аноним 04/12/20 Птн 23:54:46 1873243527
>>1873230

В чем заявление? Просто написал, что есть решение без использования JSON-функций.
Аноним 05/12/20 Суб 00:07:48 1873247528
>>1873172
>>1873174
Ок, спасибо! Я уже втянулся более-менее.
Аноним 05/12/20 Суб 00:18:27 1873253529
>>1873089
Ссылку на задачу скинь, а не код. Сам искать не буду.
Аноним 05/12/20 Суб 01:47:54 1873271530
Привет, есть строка адреса.
В ней может быть что угодно забито юзером, вот пример:
1234 West Groove Street.

Так вот, например в реальности юзер может West написать как W, а Street как St, соответственно получаются следующие комбинации:
1234 W Groove St
1234 W Groove Street
1234 West Groove St
1234 West Groove Street

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

Аноним 05/12/20 Суб 02:27:28 1873282531
image 22Кб, 504x546
504x546
>>1873271
Навасянил за пол часа забейте.
Тот неловкий момент когда гоняешь туда-сюда строчки два года уже без перерыва, и уже даже забыл как цикл for() работает, не то что бы какие-то простейшие алгоритмические задачи решать по типу этой :((((
Аноним 05/12/20 Суб 05:27:23 1873300532
>>1873253
http://phpbook.ga/l1/finals.html
>>1873162
>Эта задача решается разбиением на более мелкие. Делаем функцию, которая умеет выбирать форму слова в зависимости от числа, делаем функцию, которая выводит числа от 1 до 999, и из этого собираем программу.
Я знаю из каких частей состоит программа, я не знаю что использовать для решения.
Аноним 05/12/20 Суб 10:18:09 1873339533
>>1873300
>я не знаю что использовать для решения
То есть? Реши более маленькую задачу, как перевести в текст цифры от 0 до 10.
Аноним 05/12/20 Суб 10:35:45 1873342534
Аноны, я дорос наконец до пердолинга с ооп по серьезному. Нужно чето почитать по этой теме.

Мет Зандстра из ОП поста пойдет? Или что то другое нужно?
Аноним 05/12/20 Суб 12:16:59 1873378535
>>1873282
Это в чем ты код исполняешь, репл какой то?
Аноним 05/12/20 Суб 12:34:29 1873390536
>>1873339
Ну к каждому числу нужно в массиве добавить значение с нужным текстом, а что делать с числом типа "123"? Мне же не вручную заполнять массив для каждого числа от 0 до 999 и так далее.
Аноним 05/12/20 Суб 16:39:59 1873611537
>>1873390

Вот, ты уже начинаешь правильно думать. Вместо того, чтобы делать массив для всех чисел от 1 до 999, мы делаем массив с круглыми цифрами (единицы, десятки, сотни). Разбиваем число на 3 цифры: сотни, десятки, единицы и для каждой цифры находим соответствующее слово.

Единственное, тут еще надо заморочиться с распознаванием чисел 11-19, для которых алгоритм выше не работает, но это можно добавить позже.
Аноним 05/12/20 Суб 17:32:21 1873656538
>>1873611
А как на десятки, сотни, единицы разбить? Не нашел это в учебнике.
Аноним 05/12/20 Суб 18:06:13 1873679539
>>1873656

Чтобы получить старший разряд числа, можно использовать floor($x / 1000). Например, 9876 / 1000 = 9.876, после округления останется 9. Чтобы получить младший разряд, достаточно взять остаток от деления числа на 10. Например, остаток от деления 9876 на 10 равен 6.
Аноним 05/12/20 Суб 19:07:37 1873703540
Господа, реально ли за вечер научиться писать простенькие юнит-тесты, чтоб хотя бы немного ими код покрыть? (тестовое задание на стажёра)
Аноним 05/12/20 Суб 19:10:27 1873705541
>>1873679
Ну вот смотри, разбиваем число 973 на (9, 7, 3) , то есть должно получиться прописью "девятьсот семьдесят три", но если начать сравнивать это с элементами массива, то естественно получиться "девять семь три". В чем тут прикол? Я видимо не очень умный.
Аноним 05/12/20 Суб 19:14:46 1873707542
>>1873705

Тут надо либо сделать 3 разных массива (для сотен, десятков и единиц), либо домножить числа на 100 и 10, чтобы получить не 9,7,3, а 900, 70 и 3 и тогда можно использовать один массив.
Аноним 06/12/20 Вск 01:20:56 1873907543
Аноним 06/12/20 Вск 08:27:21 1874036544
>>1873703
Реально.
Просто проверяешь что функция выполняет то, что ты от неё ждешь.
Юнит-тесты можешь посмотреть в тех же исходниках Symfony, ну или на ютубе.

Для проверки правильности твоих юнит-тестов можешь попробовать подключить мутационное тестирование (https://github.com/infection/infection) (оно проверит твои тесты, меняя проверки и др., и если тест крашнул - все хорошо)
Аноним 06/12/20 Вск 09:23:35 1874050545
Здравствуйте, если что-нибудь лучше ffmpeg для работы с видео?
Аноним 06/12/20 Вск 09:35:17 1874052546
>>1873705
https://ideone.com/Z13J64

Для трехзначных работает, как теперь перейти к более большим числам и добавлять слова типа "рублей" и "тысяч"?
Аноним 06/12/20 Вск 12:47:53 1874144547
Аноним 06/12/20 Вск 15:06:42 1874249548
>>1874052

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

По коду: цикл по массиву $spelling тут лишний. Чтобы взять из массива слово, достаточно использовать квадратные скобки, например:

$x = 100;
echo $spelling[$x];

Также, надо добавить условие, что если число оканчивается на 11-19, то вместо единиц и десятков по отдельности мы берем одно слово.
Аноним 06/12/20 Вск 17:21:16 1874359549
>>1873184
>SELECT teacher, COUNT(DISTINCT class) num
>FROM schedule sch
>WHERE class LIKE '11%'
>GROUP BY teacher
>HAVING num = 2
Спасибо.
Аноним 06/12/20 Вск 17:24:42 1874372550
>>1871773
>лучше как для нервов так и для карьеры Postgres.
С карьерой понятно, его сейчас каждый первый требует. А что насчёт нервов с майскулом не так, а с постгресом так?
Аноним 06/12/20 Вск 18:03:15 1874420551
Schedule.png 46Кб, 1065x513
1065x513
Можно ли как-то автоматически визуализировать БД в виде инфографики, типа пикрелейтед?
Аноним 06/12/20 Вск 18:58:06 1874510552
>>1874420
ER diagram называется, часто инструменты для построения такой штуки встроены в тулзы для работы с бд, вроде того же phpmyadmin.
Аноним 06/12/20 Вск 20:22:48 1874558553
>>1874420
Аноны, вы тоже хуй забиваете на все эти связи между таблицами? Нигде в работе не видел что бы чет связывали.

Наверное в теории все это круто и заебись, но на практике рот все ебали когда все так жестко связано. Типа нельзя почистить одну таблицу без другой итд. Других объяснений я не нахожу.
Аноним 06/12/20 Вск 21:12:52 1874613554
>>1874372
>Postgres
Я так понимаю что Postgres это подмножестово SQL.
sql и в африке sql, если в общем.
Аноним 06/12/20 Вск 23:35:15 1874690555
>>1874372
да много чего не так.
Нет табличных выражений, не поддерживаются DDL запросы в транзакциях, не поддерживаются курсоры (точнее поддерживаются только внутри хранимых процедур), добавить колонку на таблицу под нагрузкой без блокировок нельзя.
Учи сразу PostgreSQL, дока на русском, курсов много.
Если знаешь PostgreSQL, а в вакансии MySQL, то не расстроятся, а если работал с MySQL, а в вакансии PostgreSQL, то напрягутся.
Аноним 07/12/20 Пнд 15:26:56 1874952556
>>1874558
На моей галере все проекты к каскадами. Хз как без ограничений внешних ключей. Это же каша а не бд получается.
Аноним 07/12/20 Пнд 15:46:08 1874966557
>>1874558
Ты что далбаёб совсем ? Я пока в PHP зелёный, но до этого оч много с SQL работал.
Как ты себе представляешь БД без связей ? Всё чистится, есть специальные алгоритмы, которые проверяют целостность БД и могут рекурсивно очищать в зависимых таблицах связи. Только думать надо - чтобы ничего не удалилось лишнего.
Аноним 07/12/20 Пнд 16:31:25 1875000558
Как записать в куки сначала массив, а потом этот массив удалить? Хочу в функции получать только определенный набор значений из Кук и работать с ними, чтобы не тащить все говно туда.
Аноним 07/12/20 Пнд 17:18:22 1875033559
>>1874558
Бывает что нужно изменить связь (другой родитель, другая дочка) и в большой таблице это делать долго. Поэтому связи через классы описывают, а поля которые используются в таких связях просто добавляют в индекс.
Аноним 07/12/20 Пнд 19:51:51 1875124560
>>1874558
>Нигде в работе не видел что бы чет связывали.
пиздец, сваливай с такой работы. Это какое то дно
У меня прямо противоположная ситуация. Уже хер знает сколько лет не видел проектов без связей.

>Типа нельзя почистить одну таблицу без другой итд
ON DELETE CASCASE\SET NULL, в зависимости от бизнес-логики.
Аноним 08/12/20 Втр 07:42:56 1875540561
https://stackoverflow.com/questions/65193082/custom-guard-attempt-always-returns-false-laravel-8

Пытаюсь прикрутить к Laraver-8 авторизацию через вторую таблицу. Не могу залогиниться в контроллере.

Auth::guard('manager')->attempt(['email' => $request->get('email'), 'password' => $request->get('password')]) всегда возвращает false,
хотя в то же время
Hash::check($request->get('password'), DB::table('managers')->where('email', $request->get('email'))->first()->password) возвращает true
Аноним 08/12/20 Втр 09:56:16 1875571562
Аноны, кто знает, как пхп выполняется в контексте "потоков".
Вот у меня комп, 4 ядра, 4 гига. Допустим шиндовс.

Как это работает? Создается процесс на одном ядре-> и если все четыре ядразабились - то все, сервер лег ? Или в одном процессе создается что то типа потока , в котором выполняется скрипт, и потоков на одном ядре могут сразу выполняться тысячи?
Чет я на хабре прочел и нихуяч не понял.
Аноним 08/12/20 Втр 11:39:11 1875622563
>>1875571
п.с.
Т.е. пхп умеет паралельно выполнять разные скрипты на одном ядре? Или на каждом ядре все скрипты выполняются по очереди?
Аноним 08/12/20 Втр 12:02:59 1875632564
>>1875622
п.п.с.
Или вэб-сервер создает какое то количество потоков в (10 или 20 или 500), в соответствии с количеством запросов, и в рамках каждого потока запускае5тся скрипт пхп, ну и выполняется?
Аноним 08/12/20 Втр 15:09:05 1875757565
>>1875632
this
Упрощенно, на каждый запрос порождается отдельный поток, в котором и выполняется скрипт. После выполнения поток закрывается.
Алсо, потоков на компе может выполняться очень много параллельно. Не обязательно по числу ядер. Почитай про многопоточность
Аноним 08/12/20 Втр 17:37:04 1875947566
836c5a3014eabce[...].jpg 46Кб, 564x564
564x564
Ребят. У меня к вам вопрос.
Делаю туду. И пришел к моменту, когда нужно данные сохранять.
Так как меня больше интересует жыес а писание на пхп хочу свести к минимуму. А скьюел вообще лень. То подскажите мне.

Сейчас у меня сохранение происходит записью хтмл кода в блокнот по клику на кнопочку. Тупо берется контейнер и его детей записываются в блокнот. Сразу задам вопрос. Насколько это тупо? И делают ли так нормальные люди?

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

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

Приклейтед когда думаю об нормальной БД.
Аноним 08/12/20 Втр 18:40:21 1876014567
>>1874966
>в зависимости от бизнес-логики
До тех пор пока не удалится то, что удалять было нельзя. Каскады работают на определенном масштабе. Когда у тебя база перевалит таблиц за пятьдесят каскады превратятся в ромбы и кольца, и ты физически не будешь знать что вообще удалится вместе с твоей мелкой хуйней. А скорее всего не удалится, а выдаст ошибку, что удалять нужно что-то другое или что-то не получается удалить.

Кроме того каскадное удаление это еще и удар по перфомансу, в супер хайлоад проекте даже пришлось вообще от DELETE запросов отказаться, ставили флаг типа удален, а потом чистили специальным воркером. И все потому что UPDATE Быстрее чем DELETE.

Ну останутся когда-нибудь где нибудь не удаленные записи, которые никто никогда не увидит - это вообще похую. Главное что у пользователя все происходит мгновенно и не приходится ждать когда там этот каскад отработает, если вообще отработает.
Аноним 08/12/20 Втр 18:40:59 1876018568
>>1875757
Понял, спасибо. Второй вопрос - opcache он по дефолту выключен получается? Если я для своей приложухи тупо его включу - будет работать из коробки , или что то где то наебнется ?
Аноним 08/12/20 Втр 18:45:34 1876022569
16065003212270.jpg 87Кб, 959x932
959x932
>>1875947
> писание на пхп хочу свести к минимуму.
> А скьюел вообще лень.
Тогда зачем ты сюда пишешь? Пиши в треды про фронтенды.
> . Насколько это тупо?
Тупость зашкаливает. Серьезно.
> И делают ли так нормальные люди?
Нет. Разве что в самом начале когда вкатывешься посмотреть как пхп работает с файлами и пост запросами

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

> Если кто-то увидит это, меня засмеют? Или это норм и за такое не бьют.
Сначала охуеют потом засмеют
> Если первое верно, то сразу лучше в скьюелами делать? Или можно не надо?
Если ты копротивляешься учить sql то в бэке тебе делать нечего.
Мой тебе совет - учи какой нить ангуляр / Ву / реакт
Аноним 08/12/20 Втр 18:45:57 1876023570
Аноним 08/12/20 Втр 19:03:42 1876040571
>>1876022
>Если ты копротивляешься учить sql то в бэке тебе делать нечего.
Бэк для быдла ебаного. Конечно копротивляюсь!

>>1876023
>Использовал бы вообще готовое, нахуя самому горбатиться
Ок, гляну.


Благодарен за ответы. С меня как обычно нихуя.
Аноним 08/12/20 Втр 19:51:33 1876071572
>>1876022
Думаю что тебя закликбэйтили
Аноним 08/12/20 Втр 20:08:40 1876083573
>>1875571

PHP-FPM для обслуживания запросов создает N воркеров (кол-во настраивается в конфиге). Сколько воркеров - столько одновременно скриптов может выполняться. каждый воркер это отдельный процесс ОС (а не поток, не путай). Если вдруг пришло больше запросов чем воркеров, то лишние ставятся в очередь и ждут освобождения воркера (это ограничение защищает систему от перегрузки большим числом процессов).

Если у тебя всего одно ядро, то ОС будет выполнять код на нем по очереди. Какую-то долю секунды (квант времени, time slice) будет работать первый воркер, какую-то второй и так по кругу. То есть одно ядро разделяется между многими процессами и имитируется их как бы "параллельное" выполнение.

Если у тебя 4 ядра, то они тоже будут разделяться между всеми работающими воркерами. Но теперь каждый воркер будет получать в 4 раза больше квантов времени (time slice), чем в случае с одним ядром, воркер будет работать быстрее и система сможет обрабатывать больше запросов в секунду.

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

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

Аноним 08/12/20 Втр 21:41:29 1876145574
Скриншот 08-12-[...].jpg 53Кб, 546x857
546x857
Здравствуйте, подскажите, пожалуйста, как добавить текст на изображение, а конкретно на вотермарку, но чтобы текст выравнивался по правой стороне. Пример прикрепил. imagettftext позволяет отталкиваться только от первого символа.
Аноним 08/12/20 Втр 22:01:50 1876164575
>>1876083
Я уже понял, спасибо за ответ.

И еще подскажите, у меня приложение slim 4 создает отчет, в виде эксель файла. Этот файл сохраняется в некий store. В ходе этого же запроса этот созданный отчет отдается на закачку клиенту.
Этот отчет формируется часто, разными людьми, значит его нужно после отдачи уничтожить, что бы не хламились. Но допустим эксель файл большой, и в объект response он попадет по частям, как поток. То есть получается я response верну из обработчика раньше, чем смогу удалить этот файл. Как быть? Начать думать в сторону очередей?
Аноним 09/12/20 Срд 00:53:29 1876248576
>>1876145
ImageMagick смотрел? Он вроде умеет.
Аноним 09/12/20 Срд 11:11:18 1876382577
>>1876164

И еще вопрос - по теме отдачи клиенту файла на загрузку. Как после того как файл был загружен клиенту сделать куда-нибудь редирект?
Получается что единственный вариант - как то через JS, но я не могу найти события которые реагируют на окончание загрузки документа в папку "Загрузки" на компе клиента.
Как сделать такое?
Аноним 09/12/20 Срд 14:10:17 1876556578
Как в абстрактном классе сделать метод который будет создавать экземпляр класса на котором он вызван? Типо кто-то наследует абстрактный класс - метод создаёт экземпляр этого наследника. Я попробовал self в абстрактном классе, но судя по тестам он привязан именно к абстрактному классу, а не к наследнику.
Аноним 09/12/20 Срд 14:33:08 1876582579
Аноним 09/12/20 Срд 16:53:59 1876712580
Не до конца понял смысл хеша и соли. Вот есть у меня пользователь с паролем "пароль". Я в базе данных храню соль и хэш от пароля+соль. Пользователь вводить пароль, сервер к этому паролю добавляет соль из базы данных, и сравнивает с хешем из той же базы данных для конкретного пользователя. Так?
Что мешает в таком случае брутфорсить пароль, если соль и хеш всегда имеется на стороне сервера и автоматически добавляется и сравнивает с корректным значением?
Аноним 09/12/20 Срд 23:10:24 1876997581
>>1876712
> Что мешает в таком случае брутфорсить пароль
Ничего. Следует пресекать подозрительную активность.
Самые грубые варианты - блочить ip с которого брутят, либо замораживать учётную запись которую брутят.
Ну думаю минусы этих вариантов очевидны
Аноним 09/12/20 Срд 23:47:49 1877019582
>>1876145

Надо найти функцию для определения длины текста, и зная длину, выбрать стартовую точку.
Аноним 09/12/20 Срд 23:52:55 1877023583
>>1876382

Никак. Единственный выход - отслеживать окончание отдачи файла на сервере, и с клиента постоянно слать запросы на сервер - окончена отдача или нет?

>>1876164

Лучше всего просто не сохранять файл на диск, а генерировать в памяти и сразу отдавать клиенту. Если это невозможно, то можно написать скрипт, который будет запускаться по крону и удалять все файлы старше X часов.

>>1876712

Соль не для этого. Она нужна, чтобы:

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

Аноним 10/12/20 Чтв 13:38:16 1877239584
Вкатываюсь в пхп после универа. Есть какие-нибудь гайды по собесам? Хочу сразу на 100к ваки откликаться, надо бы знать, что там спрашивают.
Аноним 10/12/20 Чтв 15:32:54 1877336585
>>1877239
>надо бы знать, что там спрашивают
Опыт спрашивают.
Аноним 10/12/20 Чтв 20:06:18 1877563586
Аноны, подскажите совет:

Статистический запрос.
Есть форма, прмерно 10 полей. Поля могут быть заполнены, могут не быть.

Соответственно из базы нужно получить выборку по этим полям.
В духе: все автомобили , сделанные в июле 2016, с дизелем 2.5, красного цвета. А следующий запрос из этой же формы может быть все тоже самое, но уже без указания конкретного двигателя( т.е. все варианты двигателей ) Ну и так далее.

Собирать такой запрос в бд - склеивая сырой sql кажется мне хуитой. Особенно с учетом того что многие данные, допустим двигатель - хранятся в отдельной таблице, а в основной - просто id записи. Склеивать sql-строку из столько объединений и прочего - как то убого что ли.
Альтернативой вижу как то распердолиться с моделями и классами что возвращают наборы данных из таблицы.
Может какие то варианты где почитать про подобные запросы, какие то паттерны, или просто статьи? Примеры?

Аноним 10/12/20 Чтв 20:24:09 1877577587
>>1877563
п.с.
Может как то в промежуточной виртуальной таблице в самой sql можно выборку хранить? Что бы последовательно ее отфильтровывать?
Аноним 10/12/20 Чтв 20:49:56 1877590588
>>1877563

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

Если данных очень много и база не справляется, и есть много свободного времени, то можно попробовать подключить поисковый движок Sphinx или Elasticsearch.
Аноним 10/12/20 Чтв 21:51:51 1877644589
>>1877590
База микроскопическая пока что, и скорее всего надолго.
>>то собирать запрос, желательно не руками, а через Query Builder вроде
Я знаком с eloquent. Но в данном случае хочу попердолиться самостоятельно.
Но фактически получается что в рамках одной таблицы подобное можно получить только собирая строку sql запроса из необходимых частей по кускам? В соответствии с полями из $post?
Аноним 11/12/20 Птн 00:16:04 1877748590
>>1877563
Добро пожаловать в EAV клуб. Милости прошу к нашему шалашу.
Аноним 11/12/20 Птн 08:09:57 1877865591
>>1877336
Про опыт можно напиздеть
Аноним 12/12/20 Суб 14:40:26 1878709592
>>1877748
Между тем, в случае когда полей формы много, и они могут как быть заполнены так и нет - с построением запроса с помощью самовелосипедного квери-билдера возникли трудности.
Трабла в том что отдельные данные я могу отфильтровывать, или не отфильтровывать только в объединении INNER JOIN ( с фильтрами в where нет вопросов), что означает что я в построителе должен реализовать метод который создает объединение. Это не беда, проблема что объединений у меня штук 7, и их последовательный порядок важен. И значит квери-билдер должен создавать объединения в правильном порядке. Да и вообще, скрипт должен понимать какие методы квери билдера к какому полю формы применять. Для этих целей у меня существует массив, в котором для каждого поля из формы указано свое место в последовательности создания запроса в квери билдере, какой метод применять ( добавить ли в where, или в блок JOIN-ов, и т.д.).

Так как данные от формы каждый раз разные, какие то инпуты пусты, какие то заполнены - все это превращается в какой то запутанный цирк. Явно можно такое как то проще реализовывать. Может кто знает статью какую нибудь.
Аноним 12/12/20 Суб 17:45:48 1878778593
играет ли роль количества ядер на сервере для производит ларавела?
Аноним 12/12/20 Суб 21:42:51 1878941594
КАК НАХУЙ по SSH (сервер физически на другой машине) в VS Code сделать так, чтобы break point работал в Xdebug >>> ???
В Убунту установил xdebug, в vs code тоже. Точку ставлю красную, он не останавливается.
Не могу в интернете найти нихуя, какие-то индусы вылазеют на ютубе.
https://www.youtube.com/watch?v=lKXMyln_5q4
Но тут на C он отладчик запускает.

Наверно в конфигах где-то что-то сделать надо. Куда копать.
Аноним 12/12/20 Суб 21:51:16 1878947595
34egfv342w5rgv3[...].png 33Кб, 605x703
605x703
243ас43уцпамсу3.png 28Кб, 512x563
512x563
Понял. Вот инструкцию нашёл. Мда. Почему одной кнопкой нельзя отладчик поставить.
Аноним 12/12/20 Суб 22:14:05 1878963596
34gfvc34re5wgvf[...].png 15Кб, 407x388
407x388
Почему брейкпоинт не активируется при выполнении. Вроде дебаг активен.
Аноним 12/12/20 Суб 22:27:25 1878977597
>>1878941

Тут есть несколько сложностей.

Для начала, как вообще работает отладка? Если речь не о консоли, а о веб-приложении, то примерно так:

- сначала ты настраиваешь в php.ini конфигурацию xdebug
- настраиваешь IDE, чтобы она ждала соединение для отладки от PHP
- затем ты открываешь страницу в браузере и передаешь с запросом trigger - специальную куку или GET-параметр, которая говорит о включении режима отладки (опция https://xdebug.org/docs/step_debug#trigger_value )
- xdebug останавливает выполнение скрипта и подсоединяется к твоей IDE
- затем IDE через установленное соединение управляет выполнением скрипта

Это описано тут: https://xdebug.org/docs/step_debug

Тут есть минимум две сложности, так как машины разные.

1) скорее всего твоя машина с IDE находится за NAT провайдера, не имеет белого IP и в ней нельзя подсоединиться снаружи (с машины с PHP)
2) возможно, что на твоей машине и на сервере проект размещен в разных папках. Это может запутать IDE, так как отладчик будет передавать ей пути к несуществующим у тебя файлам.

Первую сложность обходят "пробросом" портов по SSH. Специальная команда ssh заставляет его открыть порт номер X на сервере и при соединении с ним подсоединяться к порту Y на локальной машине. Это описано тут: https://codex.so/ssh-tunnel (сценарий 2).

После этого ты настраиваешь xdebug соединяться с портом X на самом же сервере (127.0.0.1), а IDE заставляешь "слушать" порт Y локально (127.0.0.1). X и Y могут быть одинаковыми. ssh будет перебрасывать данные между машинами.

Опции для xdebug: xdebug.client_host, xdebug.client_port.

Что касается разных путей к проекту, то в IDE должна быть опция "замены" путей. Если ее нет, то проект должен быть расположен в одной и той же папке и локально и на сервере. Вроде как в расширении для VS Code есть такая опция pathMappings: https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug

Твоя инструкция посвящена компиляции xdebug из исходников. Не понимаю, при чем тут это. Скорее всего, расширение xdebug (если на линуксе) ставится менеджером пакетов или, если его там нету, командой вроде pecl install.

Уточняй вопросы, если надо.

> Почему одной кнопкой нельзя отладчик поставить.

Именно поставить его можно одной командой в большинстве дистрибутивов линукса. А вот чтобы заработало, придется помучаться, обращай свои претензии к провайдеру, который выдал тебе серый IP.
Аноним 12/12/20 Суб 22:37:39 1878985598
>>1877644

Именно так и делают. И честно говоря, не вижу, что тут такого сложного.

Основной код может выглядеть примерно так:

// filter - объект с данными фильтра, qb - query builder
$this->addJoinCondition($qb, $filter->getColors(), 'product_colors');
$this->addJoinCondition($qb, $filter->getBrands(), 'product_brands');
$this->addRangeCondition($qb, 'price', $filter->getMinPrice(), $filter->getMaxPrice());
...

return $qb->getQuery()->getResult();

То есть просто перечисляются все возможные условия и для каждого условия вспомогательная функция добавляет параметры в SQL-запрос. Query Builder как раз и придуман, чтобы составлять запрос по кусочкам. Строки склеивать не надо.

При таком разбиении код получается не сложным. Заметь, что я не работаю с формой или с $_POST в этой функции вообще, чтобы не сваливать все в кучу, я работаю с объектом фильтра, который создается из формы в другом месте.
Аноним 12/12/20 Суб 23:59:48 1879030599
>>1878985
Спасибо за ответ!
Фактически к этому я и пришел самостоятельно, набросал свйо квери билдер, и им собираю запрос. На данный момент хорошо что это у меня все работает.
После хочу уже свой велосипедный квери билдер дописать до нормального ООП состояния. а после перенесу на квери билдер из доктрины, или елоквент.
Аноним 13/12/20 Вск 01:30:06 1879064600
1607812206852.png 6Кб, 236x157
236x157
1607812206939.png 11Кб, 360x202
360x202
Начал изучать vue. Есть какое-то объяснение, почему во второй версии синтаксис объявления приложения такой красивый и лаконичный ( 1 пик ) , а в третьей такой ублюдский, что блевать хочется ( 2 пик )? Или возможно я что-то не так понял?
Аноним 13/12/20 Вск 08:57:14 1879161601
>>1878977
Да белый у меня ip. Можно хотя бы в консоли, чтоб работала она. Я ещё алгоритмические задачки решаю.
По SSH по глобалоьному айпи у меня коннектится.
Единственно я web-сервер на встроенном в php запускаю, если нужна веб-страничка. И там приходится в адресе прописывать 0.0.0.0. Так как если айпишник напрямую прописать, то почему-то ошибка (php -S 0.0.0.0:8000) -> на компе захожу по <мой белый ip>:5555.
Мб для дебага какие-то порты в роутере надо пробросить тоже.
Тут не понял:
>порт Y локально (127.0.0.1)
Это имеется ввиду не порт, а локальный ip ?

Еще у меня VS code на WIN10 вообще. Ubuntu server и ПК рабочей соединены по проводу через роутер. Они в одной локальной сети, поэтому я не понимаю, а зачем выходить за nat в принципе.

Попробую сделать и гуглить, что ты написал. Но это похоже надолго
Аноним 13/12/20 Вск 09:11:38 1879164602
>>1878977
>2) возможно, что на твоей машине и на сервере проект размещен в разных папках. Это может запутать IDE, так как отладчик будет передавать ей пути к несуществующим у тебя файлам.
Это тоже не понял. У меня всё расположено на сервере. НА винде нигде не хранятся файлы. Там только редактор.
Аноним 13/12/20 Вск 11:30:21 1879195603
345grfvc4re5gv4[...].png 48Кб, 1412x733
1412x733
Listen for XDebug появляется, но ничего не происходит.

конфигурация vs Code
>"name": "Listen for XDebug",
>"type": "php",
>"request": "launch",
>"port": 9000

Конфигурация в php.ini:

>zend_extension="/usr/lib/php/20190902/xdebug.so"
>xdebug.remote_enable = 1
>xdebug.remote_port = 9000
>xdebug.remote_host = "127.0.0.1"
Аноним 13/12/20 Вск 16:01:11 1879343604
34аес3уцкапсмцу[...].png 14Кб, 646x256
646x256
345па435купм34к[...].png 27Кб, 567x408
567x408
П.С. Получилось короче. На другом компе в локальном сети работает. Но думаю и через глобальный айпишник будет тоже работать тогда, если порт пробросить.

Пиздец, я 2 суток на это потратил.
И в итоге сам разобрался. В интернете много старой инфы.
Рабочий конфиг такой:

zend_extension=[Ваш путь к xdebug.so]
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_handler=dbgp
xdebug.client_port=9000 //было remote_port
xdebug.client_host=192.168.1.253 //было remote_host
xdebug.discover_client_host=1 //было remote_connect_back
xdebug.mode=debug //ЭТО ВООБЩЕ НОВАЯ НАСТРОЙКА, по умолчанию тут стоит develop. ЧТобы отладчик работал надо поменять на debug.

https://xdebug.org/docs/upgrade_guide
Какого-то хера они заменили название параметров в 3 версии xdebug'a, а я вводил старые названия параметров (не только тот, что на скрине - там много их, они просто наименования параметров поменяли в 3 версии). Я хз, он недавно вышел или чего, нет нашёл инфы вообще.

Ну и в адресной строке добавить [адрес]?XDEBUG_SESSION_START=vscode (или другой редактор, если не vscode).

Аноним 14/12/20 Пнд 14:15:29 1880207605
Аноним 14/12/20 Пнд 15:04:49 1880227606
Делаю задание для начинающих, чет запутанная формулировка. Помогите понять, что от меня хотят: "Напишите код, как в многомерном ассоциативном массиве сотрудников отделов, найти ключ необходимого элемента массива фио сотрудника?"
Аноним 14/12/20 Пнд 15:54:25 1880271607
разница между симфони и ларавелем?
Аноним 14/12/20 Пнд 17:15:31 1880349608
image.png 52Кб, 767x299
767x299
Сап, двач. Как понять что я могу устроиться на позицию мидла в php?

Вот посмотрел одну вакансию рандомную.

> Владение php7.

Ну знаю да чем отличается от 5 и тем более древних, но не то чтобы от корки до корки. Анонимные классы писал, стрикттайпы в принципе могу писать если с ними кто-то пишет, в ООП могу, используем паттерны. Чё вообще почитать лучше по именно 7рке?

> git

Ну работаю с ним, чё такого. В мастер не сру, пул реквесты делаю.

> Фреймворк.

Пишем на ларе. Создал 2 небольших приложения. Базовые концепты знаю.

> Практики.

Вот тут сложно. Понимание есть, но мы так не пишем. Только теория. Писали бы мы так, я бы не хотел сбегать. И ТДД не юзаем и тесты пишем для галочки и хуёвые. Я хочу нормальный ТТД, пишу feature rich todo list.

> Опыт работы с JS

На ноде писал, заглушки апишки делал. Фронт знаю средне, реакт не могу. Но я ж бэк блят. Ну нахуярить на реакте помойку смогу.

> Знание SQL.

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

Остальные пункты все какие-то ещё более абстрактные.

Как сука понять шо аймреди? Я боюся, а хочется развиваться. Чё советуете?



>




Аноним 14/12/20 Пнд 21:42:52 1880610609
>>1880349
Сходи на собеседование и всё узнаешь. Не пройдешь? Пойдешь на следующее. Надо всего лишь...
Аноним 15/12/20 Втр 00:33:47 1880778610
Desktop20121500[...].jpg 6Кб, 624x478
624x478
Аноны, делаю курсач - сайт на жава спринг буте. У меня через форму загружается фотка. Если её не залить, получится пикрил хуета, а я хочу прост пустое место. Че поменять надо если в чтмле картинка энивей выводится

<img alt="" th:src="*{'data:image/jpeg;base64,'+{el.image}}" style ="width:350px; height:350px"/>
Хотел вместо 350 засунуть кастомную el.width, но это так не работает
Картинка по цвету фона тоже не варик, отступ большой будет
Как проверку на жаве написать - понятно, че с чтмлом делать хз
Аноним 15/12/20 Втр 00:36:26 1880780611
>>1880778
алсо, есть возможность оставить длину и ширину по дефолту, но это вообще говнокод какой-то будет
15/12/20 Втр 04:08:34 1880874612
Аноним 15/12/20 Втр 10:52:58 1880963613
Шапка на нулевой говорит про такие вещи спрашивать в языковых тредах, хотя и сомнительно, что мне именно сюда.
Короче пацаны, есть один VS Code, на который я съебался с тормознутого пхп шторма, и в нём абсолютно всё заебись, кроме одного нюанса - при дебаге нельзя навестить на дочернее свойство/ключ массива и посмотреть чё там лежит.
Пример: $arPomoika["GOLYE_BABY"] - можно навестись на $arPomoika и посмотреть, что в нём лежит, но нельзя навестись на ["GOLYE_BABY"] и смотреть сразу на голых баб, не копаясь в $arPomoika в их поиске.

Можно как-то это запилить экстеншонами/конфигами/етц?
Аноним 15/12/20 Втр 11:35:09 1880979614
>>1880610

А к чему готовиться на мидла?
Аноним 15/12/20 Втр 11:40:43 1880981615
>>1880979
Имхо если задаёшь такие вопросы то пока на мидла готовиться не нужно.
Аноним 15/12/20 Втр 12:08:43 1880991616
>>1880981

Лолкек, а как я узнаю когда?
Аноним 15/12/20 Втр 12:24:36 1880999617
>>1876014
>До тех пор пока не удалится то, что удалять было нельзя.
Нормально ставьте зависимости и каскады, нормально всё будет.

>и ты физически не будешь знать что вообще удалится вместе с твоей мелкой хуйней.
то, что нужно удалить с твоей мелкой хуйней.

>А скорее всего не удалится, а выдаст ошибку, что удалять нужно что-то другое или что-то не получается удалить.
И хорошо, значит, удаляй не мелкую хуйню, а крупную.
Что за паническая боязнь ошибок? Кинутые эксепшоны это заебись. Они в 9 из 10 случаев ловятся тестами, в одном тебе звонит пользователь и ты чинишь всё вилкой. Самые жопоебные баги в моей карьере, после которых нашего СЕО ебали как собаку а пиздюли летели всему отделу происходили из-за попыток ОБРАБАТЫВАТЬ исключения и сделать жопу незаметной для пользователя.

>ставили флаг типа удален, а потом чистили специальным воркером.
Молодцы, и что вам не нравится? Нормально сделали. Пусть воркер шуршит, он не человек.

Проблемы, которые создают зависимости, ничто на фоне того, что какой-нибудь петушара таки удалит что-нибудь важное на проде.
Уж на что уж я знатный гречневый говнокодер, с презрением смотрящий на современых смузихлебов, но ключи в базе проставить 100% нужно.
Аноним 15/12/20 Втр 16:13:07 1881124618
Есть небольшач форма в html в которой реализуется поиск. Тупо строка для ввода и кнопка для поиска. Если в форме стоит метод гет, он передает только то что ввел в строке поиска, но не использует кусок адреса в параметре экшн из формы для передачи. А если изменить на пост,то все ништяк. В чем дело?
Аноним 15/12/20 Втр 17:09:53 1881195619
шапка устарела?
Аноним 15/12/20 Втр 23:52:00 1881571620
>>1880999
>Нормально ставьте зависимости и каскады, нормально всё будет
Ну ты жопочтец.
Я тебе о том и говорю что при определенном масштабе ты не можешь принять "нормальное" решение. Прикинь, оказывается бывают проекты, в которых чисто физически невозможно знать что хранится во всех таблицах. И нет возможности найти "верное" решение прямо сейчас.

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

Про дедлоки и перфоманс это вообще классика. Последний раз когда я видел foreign ключи в коммерческом проекте была PIM система от французких гениев. Удаление одного товара длилось ~200мс. Кода удаляешь один, то вообще похуй. Но когда нужно удалить, напрмер все футболки, то это на пол часа. Мы сначала подумали что это развод на даллары такой, типа плати и ускоряйся. Но когда полезли в саму базу кекнули. Там таблиц тридцать, и все так или иначе завязаны на товар, и при удалении создавался нихуевый такой каскад почти по всем. Опять же если у тебя всего 2К товаров, то ты говоришь спасибо за foreign ключи и пользуешься. А если несколько миллионов, и поставщики меняются каждую неделю, то выкидываешь нахуй эти ключи, и делаешь все в двести раз быстрее.

Но самое главное, это то что я никогда не видел проблем из-за того что что-то не удалилось. А вот проблем из-за ситуаций когда удалилось то что не должно куча. Так что если пишешь блог или сайт местной хоккейной команды, то резвись: удаляй по каскаду, нормализуй до упора. На крупном проекте если это ничего не ускоряет, то это нахуй никому не надо.
Аноним 16/12/20 Срд 20:17:53 1882107621
>>1880349
Забавно, я это почти ты, ток у меня в активе ноль дней работы прогером точнее уже 2 года стажа в гос шараге в должности инженер-программист, но в коммерции ноль , и твой опыт для меня вполне релевантен.
Я мидл? ололо:)
Аноним 16/12/20 Срд 20:21:10 1882110622
>>1880991
Да забей ты хуй на инфантильную помойку мыслей. Готов\не готов. Ебашь.
Жизнь любит дерзких и активных это в принципе самое важно что нужно для успеха сапиенса. Овощей которые пять лет на мидла готовятся - жизнь по итогу ебет в лице тех кто кабанчиком заскочил пять лет назад и сейчас владеет бизнесом на котором овощ трудится.
Аноним 16/12/20 Срд 20:48:15 1882126623
Бля, что почитать человеческим языком по слоям и "чистой архитектуре"? Пишу приложение, Action/Domain/Responder/
По ходу пьесы не получается все в сервис воткнуть, нужны некие общие классы, типа квэри билдера. И я хз куда его воткнуть.
Он общий для всего слоя Domain. Он по идее относится к "общим" классам Repository ?
Аноним 17/12/20 Чтв 00:53:23 1882311624
16039973526000.jpg 138Кб, 1063x1200
1063x1200
>>1881571
> Нужно найти того кто знает, найти ответственных манагеров, бизнес аналитика, потратить время на митинг на следующей неделе. А Виталик вообще не станет этим заниматься, и нахуярит так как ему кажется "правильно". А тебе чтобы понять на ревью что он хуйню написал нужно проделать всю эту работу за него, а у тебя на ревью час отписан.
Ну тут можно посочувствовать. Бардак на галере - бардак в бд и, судя по Виталику, сплошной говнокод.

> И будет это не удаление всей базы, которую можно в один клик из бекапа поднять, а как червяк, который годы может создавать случайные баги и ебать мозги пользователям, а те тебе.
Я раз 10 перечитал но так и не понял что ты тут написал.

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

Аноним 17/12/20 Чтв 12:37:35 1882566625
>>1881571
> гринтекст стрелочка двадцать двадцать
> гринтекст стрелочка хард удаление записей
Аноним 17/12/20 Чтв 14:26:20 1882703626
>>1882566
Все так. Я о том и пишу.
Аноним 17/12/20 Чтв 18:11:14 1882909627
Почему тред мертвый?
Аноним 17/12/20 Чтв 20:01:12 1882992628
>>1882909
Все перекатились на го
Аноним 18/12/20 Птн 01:44:17 1883208629
>>1882992
Кто не перекатился, тот умер с голоду.
Аноним 19/12/20 Суб 03:17:32 1884322630
>>1881195
нет, с чего бы ей устареть ?
Аноним 19/12/20 Суб 03:18:37 1884323631
>>1882909
а ты думаешь php живой?
Аноним 19/12/20 Суб 04:09:30 1884328632
Народ, почему в официальной доке нет пример по установке ебаного php-fmp? Я вдруг осознал что я его ставил и тысяча раз шерстил различные форумы ебаные чтобы узнать все расширения какие нужны по типу php-fpm7.3-cli php-fpm7.3-common php-fpm7.3-gd и прочее и откуда их брать? Почему нет примеров по установке? У них на сайте только сборка из сорцов блядь а не через apt. Меня это уже доебало блядь, почему нет модуль листа с теми что нужно и как подключать, я забываю уже все эти названия ебаные по типу php-fpm7.3 версию проебал и не поставится, название модуля не добавил и все. Что за пиздец?
Аноним 19/12/20 Суб 04:46:15 1884334633
Бля, в общем сделаль в дебиане, если кому надо:
1. apt-cache search --names-only ^php7.3 > 2.txt

В папке root в файле 2.txt будут все модули

Далее выбрал себе модули:
php-geoip php-imagick php-memcache php-memcached php-mongodb php7.3-bcmath php7.3-cli php7.3-common php7.3-curl php7.3-fpm php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-mysql php7.3-pgsql php7.3-xml php7.3-zip php7.3-opcache php7.3-sqlite3
Аноним 19/12/20 Суб 11:16:54 1884403634
>>1884323
Живее всех живых.
Просто тут вкатунов уровня тудухи видимо мало.
А остальные дрочатся с такими вещами о которых сложно сам вопрос задать, и тем более получить развернутый ответ.

Я щас ебусь с DDD, и бля, и никто мне не поможет и не надо помогать.
Аноним 19/12/20 Суб 12:32:29 1884421635
>>1849078 (OP)
Есть портабельный этот похапе с мускулами чтобы блядь сделать примитивный сайт с регистрацией-авторизацией?
Забали эти СУБД и БД и пердолинг с конпеляцией SQLite на C# и хуй знает как потом эту .dll юзать, и нет ли там бекдоров, и ещё и СУБД надо знать блядь, годной литературы для вката в эту залупу не подкинули, короче надо сукаблядь МУСКУЛ и ПОХАПЕ, но чтобы было портабле ексе и чтобы не было setup.exe с прописью в реестр, и чтобы не засрало roaming-хуюаминг и прочие Application-Data, и чтобы когда надо снести нахуй шиндошс и переустановить его - чтобы короче, с флешки запустился похапе с мусколом-хуюскулом этим, и чтобы всё завелось, и не выёбывалось мне, и чтобы не надо было переустанавливать всю эту залупу.
Аноним 19/12/20 Суб 12:40:25 1884426636
>>1884421
Нашёл XAMPP, но там сплошной бинарь, и хуй знает может вирасы есть или бекдори. Есть ли чо-то опенсорцное?
MySQL знаю что опенсорцная, но лицензия какая-то мутная, проприетарное что-то вшито, можно вырезать это нахуй и сбилдить из сореца, норм мускул?
Аноним 19/12/20 Суб 12:42:02 1884427637
>>1884426
Проще файловую базу данных заебенить, где куча папок с именами таблиц, и куча файлов с контентом строк таблиц, и не ебать моск.
Аноним 19/12/20 Суб 12:44:15 1884428638
>>1884427
Ан-нет, тогда каждая миллипиздрическая запись будет занимать целый сектор.
Аноним 19/12/20 Суб 13:06:58 1884433639
>>1884421
Нашёл вот такое: https://habr.com/ru/post/145970/
NodeJS + connect. Вроде, должно работать без пердолинга с СУБД, но на JS, и хуй знает можно ли качнуть NodeJS portable, чтобы не устанавливать эту еботу - в шинду.
Аноним 19/12/20 Суб 15:19:11 1884592640
>>1884403
>и никто мне не поможет
Красную, синюю и зеленую книжки читал?
Аноним 19/12/20 Суб 21:20:45 1884907641
>>1884592
Красную в процессе
Аноним 20/12/20 Вск 15:58:05 1885464642
Вопрос про поганый CSS.
Есть div элементы под одним классом все. Нужно с Grid-Layout сделать так чтобы если ширина экрана между 768 и 992 то показываются только два столбика из этих div'фов.
Аноним 20/12/20 Вск 17:02:28 1885527643
кто может помочь с простыми вещами в CSS, заплачу 500 рублей эфиром, напишите телегу, домашку нужно сдать сегодня до 12
Аноним 20/12/20 Вск 22:21:46 1885723644
Аноны, нужен архитектурный совет. Условно чистая архитектура

Слой адаптера - тут экшен-контроллер, а так же коннект к бд.
Внутри идет "use case" - слой. Это "сервис", допустим его задача - добавить "статью".
За ним идет слой Entities (сущности) - бизнес логика. В этой логике у меня сущность характеризующая "статью". И с этой "статьей" нужно проводить действия какие то.
Сама сущность "статья" должна быть независима от реализации хранилища (база данных и т.п.). В качестве прослойки к БД у меня eloquent (и его orm-модели)

Как должно все идти? Не понимаю в каком порядке все это вызывать.

Я в слое "use case" получаю из внешнего слоя ( экшен контроллер в моем случае ) данные - пост запрос. Далее мне нужно создать мой объект "статьи" из слоя Entities. Для этого мне получается нужно вызвать мой слой работы с хранилищем ( у меня eloquent и mysql ), пусть это будет некий класс ArticleRepository, он умеет получать данные из текущего хранилища, получается это низкий уровень абстракиции. И по данным из хранилища ( пусть это банальный массив для простоты ) я должен создать свою сущность которая характеризует бизнес логику.
Вопрос - где конкретно должна быть создана сущность "Статья"? В классе ArticleRepository , из которой сущность "статья" будет возвращена в класс use case слоя? Или из ArticleRepository вернуть сырые данные ( массив ) и уже в use case создаем объект. Я думаю что правильно из ArticleRepository возвращать уже сущность в виде готового объекта.
Далее - мне нужно провести манипуляции с сущностью ( сама бизнес логика) и после сохранить это все в хранилище через слой ArticleRepository. Первое - сущность "статья" сама в себе должна нести механизмы по которым она работает? Как мне кажется да - создаем сущность, потом она меняется ( условно от какого то поля сущности нужно посчитать ) - т.е. все бизнесправила, и вспомогательные классы по которым оно работает - находятся в слое Entities . Я правильно размышляю?
Получив измененную статью - я должен получить из слоя работы с хранилищем ( любым получается, на данный момент моя измененная сущность "статья" не знает в какое хранилище она сериализуется ) ArticleRepository , который уже в свою очередь получит сущность, по каким то правилам ее сериализует и вызовет уже построитель запросов eloquent и сохранит данные в базе.
Я правильно размышляю. Сорр за многословность и не совсем внятность, кошке объяснить не могу, она спит, поэтому тред у меня в качестве резиновой уточки.




Аноним 20/12/20 Вск 22:24:36 1885726645
>>1885723
пс
>>Я правильно размышляю.
проебал вопросительный знак.
Самофикс:
Я правильно размышляю?
Аноним 21/12/20 Пнд 01:51:46 1885797646
>>1884592
>Красную, синюю и зеленую книжки читал?
О каких книжках идёт речь? Ответьте пожалуйста на мой ответ.
Аноним 21/12/20 Пнд 05:43:03 1885843647
16084126144500.png 138Кб, 287x356
287x356
Аноним 21/12/20 Пнд 08:59:32 1885907648
Сап, вопрос по ларавелю. Допустим у меня есть метод create user. У меня есть для этого метода тест. Это юнит тест или feature test? Допустим я создаю юзера и проверяю если юзер есть в базе данных.

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

Всё ли я правильно понимаю?
Аноним 21/12/20 Пнд 11:35:48 1886024649
>>1885907

А что если что то с базой случится и ты не сможешь выбрать юзера? Тест вылетит с ошибкой, но она никакого отношения к createUser иметь не будет.
Аноним 21/12/20 Пнд 14:19:49 1886127650
Аноним 21/12/20 Пнд 16:59:25 1886287651
>>1885907
Это feature test. Потому что если feature test фейлится, то это значит что не работает фича, а если unit test то беда в коде.

>>1886024
Во-во

>>1882107
А чем гос шарага отличается. Опыт есть опыт, а гос или не гос не важно. У меня тоже шарага шаражная.

>>1882110
Да понял уже, пилю себе проектик в гитхаб тестовый безмозглый чтоб хоть чёт показать с опытом. После НГ пишу заявления. До НГ не хочу, планы есть.
Аноним 21/12/20 Пнд 23:00:19 1886612652
Аноним 22/12/20 Втр 05:11:43 1886762653
>>1885907

Не знаю, как в Ларавеле, но обычно это называют интеграционный тест, так как он тестирует взаимодействие класса с БД. Юнит тест тестирует класс в изоляции от других классов или БД.
Аноним 22/12/20 Втр 08:26:47 1886815654
>>1886762
Feature test в ларке это и есть интеграционный тест по сути.
Аноним 23/12/20 Срд 12:50:38 1887989655
image.png 154Кб, 360x451
360x451
image.png 173Кб, 375x500
375x500
Пацаны, советуйте чё по пхп почитать. Открыл пик 1, полный пиздец перелевание воды из пизды в жопу, анальная ебля в гланды и истории про космические корабли и большой театр.

Открыл 2. Годно, но мало. Чё вообще посоветуете?

>>1884403
Сука, Эванс бля. У нас этим каллом весь универ обмазывался
Аноним 23/12/20 Срд 13:56:02 1888100656
какой уебищный код в фрейморках
бойлерплет и синтаксис говно
Аноним 23/12/20 Срд 19:00:23 1888460657
Не могу сообразить как спроектировать БД для условного магазина. Допустим, у нас есть таблицы client, order, goods. Если клиент Вася купил три штуки товара Х, это легко записать в order. Но если он купил три Х и один Y?
Аноним 24/12/20 Чтв 07:09:34 1888954658
Аноним 24/12/20 Чтв 10:39:32 1889025659
>>1888954
То есть, логика такая (на этой схеме):
Как только клиент кладёт товар в корзину, система делает sql-запрос "есть ли сессия из куки клиента в sessionId таблицы cart?". Если нет, то появляется новая строка в таблице cart. Затем в cart_item ищется cartId, взятый из id таблицы cart. Это все товары из текущего заказа. Если такой товар ещё не заказан, то добавляем новую строку, если заказан, то инкрементируем quantity.

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

Когда клиент переходит к оплате, мы считаем, что это уже сделка и копируем всю инфу из cart в order, и все строки заказа из cart_item в order_item.

Всё так?
А почему здесь адрес клиента не добавляется в user? Зачем ему храниться и в cart и в order понятно: в корзине - чтобы клиенту показывать при перезаходе, а в ордер для сохранения инфы о заказе (мало ли, вдруг у клиента потом адрес сменится, а тут сохранится, куда старые заказы возили). Но если юзер потрёт куки или зайдёт с другого устройства, то ему придётся вводить адрес заново. Либо нужно делать на сайте постоянную проверку, чтобы в форму заказа автоматически подтягивались данные из последнего заказа, если он есть. но это дополнительные расходы производительности.
Аноним 24/12/20 Чтв 10:40:14 1889027660
tutorials24x7-m[...].png 137Кб, 890x1395
890x1395
>>1889025
Схему забыл прикрепить.
Аноним 24/12/20 Чтв 11:45:21 1889055661
>sudo ufw allow 'Apache'

>sudo ufw status

пишет что статус не активен,хотя по инструкции должно быть не так
Аноним 24/12/20 Чтв 12:04:45 1889064662
>>1889025
Эта таблица не окончательная истина, а только пример. Там многие моменты можно сделать по другому.
>А почему здесь адрес клиента не добавляется в user?
точно нет, это плохое решение. У тебя user только один, то есть ты всегда хранишь только один адрес. Нет ни истории доставок, ни выбора, ничего. Хотя бы я вынес в отдельную таблицу, типа buyer, с привязкой к юзеру и заказу, в которой хранил бы свойства покупателя.
>Но если юзер потрёт куки или зайдёт с другого устройства
ты мешаешь в одну кучу вопрос авторизации/идентификации пользователя и организации БД. Это принципиально разные вопросы.
>но это дополнительные расходы производительности.
не пытайся экономить один запрос кривой архитектурой.


А ещё бы я нахер выкинул из таблицы cart_item дублирование цены. Когда товар уже в заказе, у него ясен хрен цена не должна зависеть от оригинального товара. Но вот в корзине цена должна быть та же, что и в каталоге.

Достаточно наивно выглядит желание держать discount в товаре. Даже на самых примитивных проектах у меня система применения скидок разрасталась в достаточно ебовый сервис, при добавлении/удалении скидок пересчитывается каталог (желательно воркером). Там скорее хранится price_with_discount.
Аноним 24/12/20 Чтв 12:15:08 1889072663
Screenshot from[...].png 44Кб, 656x466
656x466
WTF?
Аноним 24/12/20 Чтв 12:31:51 1889092664
>>1889072
service mysql status и посмотри, он у тебя скорее не работает просто, включить его можно через service mysql start
Аноним 24/12/20 Чтв 12:33:27 1889095665
>>1889092
да,статус вырублен.
но в гайде не упомянули про это
Аноним 24/12/20 Чтв 12:34:58 1889097666
Аноним 24/12/20 Чтв 12:47:36 1889106667
аутентификацию и привелегии делать?
Аноним 24/12/20 Чтв 13:57:45 1889190668
анон вкинь годной литературы по пхп, с нуля и далее по возрастающей.
Аноним 24/12/20 Чтв 14:34:08 1889246669
>>1889064
>У тебя user только один, то есть ты всегда хранишь только один адрес. Нет ни истории доставок, ни выбора, ничего.
Эм, я же говорю "почему не добавляется"? То есть, понятно, зачем писать адрес в order и cart, но может стоит его добавить и в user?

И ещё, хранить всех юзеров в одной таблице, и клиентов и администраторов - это правильная практика? Не лучше ли выделить для авторизации администраторов отдельную таблицу?
Аноним 24/12/20 Чтв 14:58:20 1889277670
>>1889025

> Но если юзер потрёт куки или зайдёт с другого устройства, то ему придётся вводить адрес заново.

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

>>1889064

discount в товаре хранится, чтобы при выводе показать плашку "скидка X%".

>>1889246

> И ещё, хранить всех юзеров в одной таблице, и клиентов и администраторов - это правильная практика?
На практике делают и так, и так. Если хранить отдельно, то нужна отдельная страница для добавления/регистрации администраторов, и логин усложняется (надо проверять 2 таблицы).
Аноним 24/12/20 Чтв 15:23:18 1889305671
Хочу стартануть в backend/devops (понять на практике к чему душа больше лежит), выбираю между пыхой, джавоскриптом и питоном, что лучше выбрать и почему?
Аноним 24/12/20 Чтв 16:57:02 1889452672
Аноним 24/12/20 Чтв 17:01:33 1889456673
Аноним 24/12/20 Чтв 17:15:53 1889484674
Как освоить Ларавел? Тупо повторять за авторами курсов? Курсы в основном по старым версиям лары и у меня не получается самому адаптировать их под новые. Документация самого Ларавела? Я не понимаю её. То есть, я не понимаю, ни что там написано, ни зачем оно там написано.
Аноним 24/12/20 Чтв 17:53:08 1889553675
>>1889456
А почему не пыха?

Чем го от жавы отличается?
Аноним 24/12/20 Чтв 21:16:17 1889776676
щбруч.webm 826Кб, 406x720, 00:00:05
406x720
>>1889452
>>1889456
Неужели пхп такое говнище, если даже в треде посвященном пхп его не рекомендуют?
Аноним 24/12/20 Чтв 21:46:04 1889809677
>>1889305
>Хочу стартануть в backend/devops (понять на практике к чему душа больше лежит), выбираю между пыхой, джавоскриптом и питоном, что лучше выбрать и почему?

Питон - ебаное говно неудобное без задач. Ну по крайней мере джанго и бэк. Скрипты на нём я и сам иногда пишу, нраица, довольно урчу.

Посмотри в github всякие to-do list или appointment app, чтобы понять, что тебе ближе.

> пыхой, джавоскриптом

Не выбирай. Не конкуренты, а вполне дополняющие друг друга хуйни. Если делаешь бэк для SPA/Говна на электроне/Мобильного говна. Если делаешь API заглушку, тоже бесценно. Если надо какой-нибудь realtime app то нода лучше. Учи и то и то. Начни с пыхи, так как проще как по мне.

>>1889484

> Как освоить Ларавел? Тупо повторять за авторами курсов?

Не советую вообще никогда.

> Документация самого Ларавела?

Да, можешь ещё это читнуть
https://www.tutorialspoint.com/laravel/index.htm

> Я не понимаю её.

Потому что кодить не умеешь. Знаешь ли ты базы данных? Там хотя бы по минимуму, знаешь типы данных, чё такое нормализация, джойны там? Знаешь ли PHP? А OOP знаешь? А тесты чё такое знаешь?

А новые штуки-дрюки вроде неймспейсов или там трейтов? Laravel это ебучая экосистема где если ты ничего не знаешь, тебе её только сложнее понимать.

Напиши файлообменник на фреймворке slim из шапки треда.
Аноним 24/12/20 Чтв 21:56:44 1889835678
>>1889776
А вообще, напиши сайт статейник на чистом пхп. С фронтом на jquery + bootstrap. Вообще на отъебись из стандартных классов. Можешь даже без ООП, но лучше с ООП. Просто рили набегают нубасы не знающие ничего в языке, и лезут сразу в фреймворк который написали не для нубов, а для хипстеров которые хотят экосистемку и чтоб всё искаропки
Аноним 25/12/20 Птн 11:32:57 1890370679
как создать класс автоматом,типа нажал кнопку и все создалось?
Аноним 25/12/20 Птн 11:49:50 1890377680
>>1889809
>Потому что кодить не умеешь.
Два года работал веб разработчиком. Поэтому уж что-то я знаю. А вот английский - нет. И не понимаю, как освоить ларавел. Слим осваивать не буду. Просто потому что мне он не нужен. Мне ларавел нужен. Мне не нужно "понимать концепцию фреймворка" и вот это всё. Концепция и так понятна. Мне непноятно, как с ним вообще работать.
Аноним 25/12/20 Птн 14:21:12 1890583681
>>1890377

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

Тебе надо знать ООП, MVC, DI, ActiveRecord, Query Builder, щаблонизаторы и другие подобные штуки прежде чем изучать сложный фреймворк вроде Ларавел.

Ну и без английского ... не знаю, как тогда читать документацию. Разве что примеры кода смотреть и догадываться, что они значат.
Аноним 25/12/20 Птн 20:47:08 1890878682
>>1890377
Не знаю англ, разобрался с ларавел +/-. На ютубе поглядел серию видео "пишем магаз на Ларавел". Доку читаю, то что не понимаю - перевожу транслейтом.
На слим 4 собрал солянку из пакетов, с миграциями, логгером, контейнером зависимостей , ORM прослойкой и тому подобное. Корявая "чистая архитектура", со слоями и прочими адаптерами.
Ни дня в коммерческой разработке.
Хуле ты не можешь - я не понимаю.
Аноним 25/12/20 Птн 20:48:33 1890880683
>>1890878
кстати, помогите мне дураку - если ajax с клиента возвращает нихуя, тоесть сущность не существоуе - я должен вернуть какой код? 204, и без тела ответа? Или 200, а в теле ответа вернуть какой нибудь пустой массив?
Аноним 26/12/20 Суб 17:48:17 1891545684
>>1890880

Если тебе передали id несуществующей сущности, а функция должна вернуть ровно одну, то логично вернуть 404 - не найдено. Либо 200 и пустой массив, если это функция поиска, которая может вернуть много сущностей.

Код 204 для случаев, когда ответа в любом случае не ожидается. Например: отправка статистики на сервер.
Аноним 27/12/20 Вск 01:02:01 1891947685
>>1885723
>Сама сущность "статья" должна быть независима от реализации хранилища
> В качестве прослойки к БД у меня eloquent
Сразу забудь. Eloquent не позволяет сделать нормальные, независимые от фреймворка сущности. Он не для этого.
Для этого нужна doctrine.

С доктриной просто без задней мысли создаешь сущность Article, пишешь в неё бизнес-логику, а потом доктриновскими аннотациями маппишь её в БД.
Аноним 27/12/20 Вск 03:13:01 1892015686
Парни в бэкэнд за 3+- месяца с пыхой вкатится можно, если дрочить его + html, css, docker, основная ос linux.
Месяц учебы голой пыхи с тем, что выше, потом месяц+- свой простенький делать буду проект, после ларавел месяц дрочить тоже на рил задачах с сабжа.
Норм тема Чи я даун?
Аноним 27/12/20 Вск 03:40:59 1892030687
>>1892015
нет, нельзя. Разве что у тебя уже есть большой опыт веб-разработки на других языках.
Реалистичные сроки - от полугода, при дрочке по 6-8 часов в день. Но ты не осилишь. Забудь.
Аноним 27/12/20 Вск 14:41:35 1892265688
>>1892015
Нет конечно. Если б все так просто было...
За 3 месяца максимум вордпресс освоить можно на уровне начинающего. Но этих макак уже столько, что по словам одного заказчика "когда я разместил заказ сайта на ВП, то мне чуть ли не в окно ломиться стали с предложениями".
Аноним 27/12/20 Вск 15:35:33 1892306689
Допустим, есть два слова - "хуй" и "говно".
Как вывести рандомно одно из них?
Аноним 27/12/20 Вск 21:42:47 1892787690
>>1892306
echo rand(0,1) ? 'хуй' : 'говно';
Аноним 27/12/20 Вск 21:53:47 1892791691
>>1889305
Выбирай то, с чем тебе работать в том месте, куда тебя берут или могут взять.

Я могу в жабу и похапе или js. В питон не могу и не очень хочу, но если надо - буду. Похапе будет моим первым выбором. Все остальное - от безысходности. Если надо BDSM, то и на С могу написать.
Аноним 28/12/20 Пнд 09:31:36 1893237692
>>1891545
Спасибо!
А если такой вариант - ajax на сервен на обновление сущности.
Варианты ответов три, какие статусы и заголовки должен вернуть сервер?:
1. Все успешно обновленно
2. Какая то ошибка на сервере, допустим что то в самом sql запросе сломалось
3. Условно на 5 миллисекунд раньше кто то удалил тот ресурс, который я хочу обновить - ( я еще не знаю что вернет в таком случае ORM - ошибку и ли просто пустой массив ) - какие заголовки и статусы ответа я дожен вернуть в этом случае?
Аноним 28/12/20 Пнд 09:55:24 1893254693
Кто-нибудь собирал вопросы с собеседований? Что чаще всего спрашивают и к чему готовиться?
Аноним 28/12/20 Пнд 12:47:05 1893354694
>>1893254
"С завтрашнего дня можешь начать?"
Аноним 28/12/20 Пнд 13:43:00 1893415695
Сап анонасы, подкиньте плиз годного материала по Laravel.
Аноним 28/12/20 Пнд 13:43:50 1893417696
>>1893354
Это кстати неоднозначный вопрос. Что работодатель хочет узнать? Загруженность и таким образом востребованность как спеца, или же ему просто нужно поскорее к работе приступить?
Аноним 28/12/20 Пнд 13:50:46 1893426697
>>1892015
Конечно можно. Если у тебя хорошая логика, память и есть 12 часов времени ежедневно, то этого будет даже многовато.
Не слушай тех, кто говорит что нельзя. Один мой знакомый вкатывался в HTML+CSS 2 месяца, так и не смог. Сам же за две недели с нуля смог сверстать страницу каталога интернет-магазина + разобрался с выводом карточек из массивов, сессией и авторизацией. Короче говоря, анон, просто пробуй
Аноним 28/12/20 Пнд 14:35:03 1893504698
>>1893237

> 1. Все успешно обновленно

Можно вернуть 200 и {"success": true}, можно наверно и 204.

> Какая то ошибка на сервере,

Код 500 или 503.

> Условно на 5 миллисекунд раньше кто то удалил тот ресурс, который я хочу обновить

В теории 404, но скорее всео ORM об этом никак не сообщит.
Аноним 28/12/20 Пнд 17:02:00 1893632699
>>1893426
>>Конечно можно. Если у тебя хорошая логика, память и есть 12 часов времени ежедневно, то этого будет даже многовато.

Ты забыл добавить еще так же конскую выносливость, и титановую дисциплину.

Думаю такой чед может вкатиться куда угодно, хоть на луну.
28/12/20 Пнд 17:36:51 1893695700
>>1893417
>просто нужно поскорее к работе приступить?
this. Как правило галеры ищут людей "на вчера", лишь бы урвать здесь и сейчас заказ, а для этого им надо показать заказчику, что у них есть люди, готовые немедленно приступить. Кстати, этим их можно шантажировать и выбивать больше денег под выход "прям щас"
Аноним 28/12/20 Пнд 21:17:57 1893958701
Этить вы умные люди, а мне вот веб разработка так и не даëтся.
Аноним 29/12/20 Втр 02:54:00 1894207702
>>1893426
Здорово, только вот вывод картиночек из массивов с сессией и авторизацией учится за 2-3 дня. Это уровень даже не джуна, и не трейни, а хелловорлдщика. Где компостер, ооп, гит, базы данных и орм?
Рано тебе ещё советы раздавать.
Аноним 29/12/20 Втр 02:58:20 1894211703
>>1893958
Прост меньше вумных книжек читай и больше делай. Книжки потом читать будешь.
Аноним 29/12/20 Втр 12:29:05 1894431704
>>1894207
Ну это ты зря. Мы же не знаем с какого "нуля" он вкотывался. Может от до этого вообще компа не видел, а теперь вот сумел такое. Пара дней учиться, если ты до этого уже на чем-то котил, а теперь еще и похапе выучил.
Аноним 29/12/20 Втр 14:41:15 1894523705
>>1894207
Гит такой сложный? Про базы данных и орм такой же вопрос, а ооп уже на практике поймет.
Аноним 29/12/20 Втр 17:29:04 1894674706
>>1894523
Речь не о сложности, а про объемы. Человек вывел хелловорлд и считает, что за 3 месяца можно чего-то выучить. На самом же деле он ни верстку ни пхп не знает на нормальном уровне. Вся эта хрень требует довольно много времени на изучение и отработку практик.
Нет - за 3 месяца ты не вкатишься в разработку. echo 'hello world' - не разработка и даже не близко чтобы можно было на этой базе прогнозировать какие-то сроки, тем более неизвестному анону.
Аноним 29/12/20 Втр 19:04:50 1894765707
>>1894523
Когда я писал хелловорды - я тоже так думал. Да хуле там. Эхо ебанул - вот и сайт. Так сейчас мой приятель думает - щас, три месяца и он для вордпресса будет модули на фрилансе писать, и маня мечты о 150, в условном мухосранске.

А сейчас я пишу свое первое приложение, которое уже используют, к счастью я работаю в госшараге, и имею кучу времени, вот надрочился и взял проект. И его нужно сделать как хотят заказчики, а не как я, и сделать по максимуму хорошо.
И как же меня все это ебет в голову - это пиздец. Я уже его два раза переписал - крайний вариант это моя всратая реалзация "чистая архитектура". Много асинхронного JS на клиенте. Миллиард деталей, и постоянно что то не работает, постоянно туплю и буксую. Короче нихуя это не просто, если делать хоть как то приближенное к реальности.
Аноним 29/12/20 Втр 19:13:27 1894770708
>>1894765
п.с.
Вот сейчас, поняв уже что я реально, пусть всрато и медлено - но могу полноценно писать - я решил прям на дисциплине тащить. Я в течении моего вкатывания больше всего проебывал времени по причине недисциплинированности, и отсутствия цели. И считаю что это основной враг любого человека, который хочет развития.
Неделю делаешь, потом на неделю забиваешь, потом снова начинаешь, вспоминаешь то что забыл, чет делаешь - забиваешь, и так по кругу. Временную линию обучения это вытягивает в бесконечность. Плюс паралельно копротивлялся с питоном, разобрался в node.js, в ней в сущности все то что пишу на пхп - смогу реализовать.
Но это копротивление было в том же стиле что и с пхп ,и по итогу к пхп мог вернуться через три месяца.
Но вот последние пару месяцев я сконцентрировался и прям подрос по скилу.
Прогинг - эта хуйня которая требует определенной интенсивности, и жесткой дисциплины. Иначе просто забываешь все нахуй.
Аноним 29/12/20 Втр 19:18:16 1894774709
Вы люди такие наивные. Вы никогда не научитесь делать сайты или мобильные приложения. Максимум на что вы, обычные люди, способны -это десктопные приложения на Си или Джаве. Это грустно, но вы должны принять этот факт и прекратить тратить время, пытаясь стать веб разработчиком.
Аноним 29/12/20 Втр 19:43:40 1894787710
>>1894774
Толсто.
Разрабы - вполне обычные люди.
Аноним 29/12/20 Втр 19:54:56 1894797711
>>1894774
>Максимум на что вы, обычные люди, способны -это десктопные приложения на Си или Джаве.

Ты переоцениваешь местных из треда. Их максимум - это писать дрова под какой-то очередной говнорадевон 3077gt
Аноним 29/12/20 Втр 20:02:58 1894809712
>>1894774
>>это десктопные приложения на Си или Джаве.
Ты хотел сказать на ассемблере, конечно же.
Ассемблеро-холопам никогда не дорасти до пхп богов.
Аноним 29/12/20 Втр 21:38:21 1894863713
>>1894765
Что за стек?
Ну вообще да, на проект всегда надо много времени и денег. И лучше поэтому расписывать на таски и время на таску, как все делают, по кирпичикам строить, планировать, тестировать каждую таску. Обязательно использовать гит и делать ревью хотя бы для себя.
И заказчик видит за что платит и тебе видно всё.
Аноним 29/12/20 Втр 23:13:57 1894973714
Всегда юзал Yii2 а сегодня решил перейти на Laravel и ужаснулся!!

Что это за бред, ничего не понятно! Даже в файле index.php хрень какая-то: зачем там tap() какая-то??? что она делает???

И вообще, зачем там так всё усложнили по сравнению с Yii2 ? Это чтоб меньше людей на нём кодить могли, в чём смысл? Я негодую.
Аноним 30/12/20 Срд 10:21:00 1895449715
>>1894973
Юик устарел, ларавель хороший фреймворк. Ты ещё зенд не видел, видимо)
Аноним 30/12/20 Срд 13:00:02 1895590716
Аноним 30/12/20 Срд 14:21:09 1895636717
>>1894809
Вот этого двачую.

Мимо-сумел-вкатиться-в-похапе-с-асма
Аноним 30/12/20 Срд 15:40:15 1895730718
15879799864960.jpg 63Кб, 821x374
821x374
>>1894765
>три месяца и он для вордпресса будет модули на фрилансе писать, и маня мечты о 150, в условном мухосранске
Классика - сразу видно нуба.
1. Не 3 месяца, а минимум год.
2. На фрилансе модули редко пишут - обычно говно разгребают чужое в стиле: человек навасянил сайт на вордпрессе из палок и взломанных плагинов, а тот у него закономерно завалился и отдаёт чистую страницу, и он идёт на фриланс чтоб починили за 500. Срочно! там специалисту на 15 минут работы же!
3. На СНГшных биржах ты даже 30к в месяц не поимеешь - там нищеброды одни. Нормальные заказы бывают, но 1 на 100 где-то.

Скажи ему что если хочет зарабатывать через фриланс - пусть не суётся на русскоговорящие биржи и сразу учит англ. Иначе заебётся даже на дошик зарабатывать.
Аноним 30/12/20 Срд 18:53:48 1895917719
>>1892015
Когда ты вкатишься - последнее, что должно тебя волновать. Будешь учиться и стараться - вкатишься.
Ты хотя бы попробуй твоё это или нет, а то собрался вкатываться)
Аноним 30/12/20 Срд 19:21:19 1895961720
>>1894863
slim4 + тонна всякого библиотечного говна + eloquent, шаблоны - twig.

>>1895730
Ну нуб нато и нуб, что бы не видеть сложностей.
Да пусть уж хоть как то учится. Пусть платят мало - ему и 30 в месяц нормально будет. У него есть работа, надрочится хотя бы 10 в месяц дополнительно поднимать - будет легче жить.
Сам я с ларавелем пердолюсь.
Аноним 30/12/20 Срд 20:24:10 1896051721
>>1895961
>с ларавелем пердолюсь
Рекомендую ещё October CMS к нему освоить.
Аноним 30/12/20 Срд 23:20:08 1896225722
>>1896051
Хм, спасибо, даже не знал о ней.
Нужно почитать внимательнее, все таки сама по себе идея CMS - не так уж плоха. Потому что быстро развернуть какое то шаблонное решение - не так уж плохо. А архитектура основных пхп-CMS настолько дегенеративна, что тут смотреть невозможно. В вордпрессе как то дико устролено все - буквально из трех таблиц собирается где в кучу все подряд, смотрел как то. А эта October CMS на ларе собрана.
Хотя глобально ларавел тоже сборник условно "антипаттернов", но это паттерны, хоть и "анти". Архитектура есть, и над ней нужно думать.
Аноним 31/12/20 Чтв 10:35:50 1896605723
Пчелы, а вы отмечаете как-нибудь в моделях связанные с ними тригеры и функции в БД? Есть какой нибудь стандарт или принятый формат комментов для этого? Я ни на одном проекте ничего подобного не видел, хотя было бы просто пиздец как удобно.
Аноним 31/12/20 Чтв 12:07:23 1896674724
>>1896051
Как-то смотрел октобер, что-т не врубился в чём прикол его юзать)
Хочу друпал попробовать как-нибудь, мне как симфонисту может интересно будет
Аноним 31/12/20 Чтв 14:10:17 1896748725
>>1896674
>не врубился в чём прикол его юзать
Ускорят создание сайтов и приложений.
Готовая админка + уже написанный кем-то функционал в виде плагинов. Это преимущества любой CMS.

>друпал
Пробовал, но он мне в админке дико перегруженным показался.
Аноним 31/12/20 Чтв 17:04:02 1896928726
>>1894765
Дополню - как же меня заебал клиентский жава-скрипт.
Я хз как его пишут скилловые чуваки, и как организуют код.
Я пишу как могу, и пишу на классах.
Типа класс "ФормаНейм" - у класса в конструкторе я через какой нибудь getElementById() получаю DOM-елемент формы, и уже в рамках класса "ФормаНейм" пердолюсь с хтмл, вешаю/снимаю обработчики, создаю/уничтожаю какие то элементы или уведомления, отправляю к серверу ajax и получаю обратно данные.
Норм подход?
А то буквально пару элементов вывожу/убираю, с формы собираю JS-ом данные , и на нескольких кнопках ajax запросы - а получается какая то ебаная портянка. Единственное я все это динамическое щастье на клиенте отрисовываю с помощью JS шаблонизатора Handlebars. Отдавать пхп шаблоны, что бы на клиенте тоже рендерить шаблоны, охуеть. Но без этого я насмерть охуею от создавание элементов через js и заполнения их атрибутами и прочим говном.
Уже хочу все по файлам раскидать, и вэбпаком + бабель собирать на фронт.
В js тред непойду там в нативный js полтора человека умеют.
Охуеваю децл

Аноним 31/12/20 Чтв 17:06:06 1896934727
>>1896928
п.с.
Если дрочить DOM-элементы в рамках класса то раздражает что в обработчиках событий теряется контекст класса, приходится изголяться с стрелочными методами класса, и опять же иногда требуется передать в обработчик события какие то параметры. Короче задрочка.
Аноним 31/12/20 Чтв 18:32:45 1897007728
15849879962880.gif 1768Кб, 512x321
512x321
>>1896928
>получается какая то ебаная портянка
На простых задачах нефиг классы с шаблонизаторами городить. Поэтому и портянка.
Получил элемент в переменную - указал ему нужные свойства и обрабработчики, и всё.

Или ты там везде микросервисы делаешь - чтоб отдельно бек, отдельно фронт работали? Так вот спешу уведомить тебя, что на небольших приложениях, которые делает один человек это дикий оверхед и ненужная хуйня.
Аноним 31/12/20 Чтв 22:17:05 1897292729
>>1896928
Возьми вьюжс и не пердолься, я не могу понять почему кто-то НЕ использует вью или реакт или что угодно но не чистый жс. Ты сам себя загоняешь в рамки по времени, по качеству и расширяемости кода. Я назвал вью потому что его можно крутить как угодно, хранить шаблоны прямо в жсе, или рендерить на уровне пхп
Аноним 01/01/21 Птн 15:12:01 1897760730
>>1897292
>>1897007
>>я не могу понять почему кто-то НЕ использует вью или реакт
Да бладж, и не говори, лучше бы сразу на реакте писал - я его немного знаю. SPA не напишу, но компоненты написать могу.
Эта ебля с DOM-элементами меня огорчает. Один хуй тот же жеквери бутстрап требует.

Аноним 02/01/21 Суб 08:02:33 1898408731
изображение2021[...].png 8Кб, 761x293
761x293
Почему авторизация не работает? Точнее она работает и даёт положительный результат, при любом логине и пароле, а надо, чтобы она проверяла есть ли такая запись в бд.
Аноним 02/01/21 Суб 09:28:18 1898424732
Аноним 02/01/21 Суб 11:55:21 1898482733
Анон, какой форк факера стоит использовать?
Аноним 02/01/21 Суб 13:30:26 1898537734
Аноним 02/01/21 Суб 14:16:16 1898580735
>>1898537
У него там переменные из поста напрямую в бд уйдут без экранирования, а ты про пдо спрашиваешь.
Аноним 02/01/21 Суб 14:26:26 1898597736
>>1898580
но даже я как новичок так не делал,везде толдычат что нужно пдо с подготовленными запросами и шифрованием
02/01/21 Суб 18:02:46 1898788737
>>1896605
>тригеры и функции в БД
>Я ни на одном проекте ничего подобного не видел

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

Таким народ баловался в начале 2000х, и подход был признан жутко неудачным. Если ты так будешь делать, то закончишь с проектом, где половина логики будет написана PHP кодом, а другая половина SQLем встроенных процедур. Это будет просто безумная лапша, где никто ничё понять не сможет. Не делайте так.
Аноним 02/01/21 Суб 19:26:22 1898861738
Всем привет, давно сюда не заходил!
Помогите советом, есть ли смысл использовать Docker контейнеры для MySQL и Symfony для небольшого проекта, ios приложение - тематический календарь. Только выложили приложение в эплстор, нужно настроить dev сервер, до этого был только prod и локальный. Будут ли плюсы, если обернуть бд и апи в контейнеры, или только заморочек с настройкой добавится? И потянет ли vps на kvm (2 ядра shared, 2 гига памяти) докер?
Аноним 02/01/21 Суб 19:32:30 1898874739
>>1898537
Потому что я ультра новичок. Можешь объяснить что за ПДО и почему я должен немедленно задуматься о том, чтобы начать использовать его?
Аноним 02/01/21 Суб 19:50:28 1898903740
Аноним 02/01/21 Суб 21:39:18 1899066741
>>1898408

У тебя $result хранит информацию о том, успешно выполнен SQL-запрос (независимо от того, найден пользователь или не найден - любой вариант считается успешным), или же в нем есть какая-то ошибка.

Тебе надо проверять не $result, а вытягивать их БД результат, функциями вроде mysqli_fetch_assoc.

Также, не подставляй переменные прямо в запрос, у тебя SQL-инъекция, почитай про плейсхолдеры: https://github.com/codedokode/pasta/blob/master/security/sql-injection.md
Аноним 02/01/21 Суб 23:21:39 1899155742
>>1898580
Зато у него уже mysqli, а не mysql. Может он и нуб, но не отсталый.
02/01/21 Суб 23:36:37 1899169743
>>1898861
>Будут ли плюсы, если обернуть бд и апи в контейнеры
по моему опыту, для небольшого приложения ты только поимеешь кучу геморроя с нулевым профитом.
Аноним 03/01/21 Вск 15:59:18 1899558744
Хочу в фриланс вкатиться. Какие CMS-ки самые популярные? Wordpress, Bitrix и modx? Или я не прав?
Аноним 03/01/21 Вск 18:27:57 1899658745
>>1899169
>поимеешь кучу геморроя
Можно подробнее. Откуда геморрой?
Аноним 03/01/21 Вск 18:41:22 1899671746
как добавить колонку с ID с инкриментов в начало таблицы?
Аноним 03/01/21 Вск 18:43:29 1899672747
15427501582430.jpg 5145Кб, 2443x3479
2443x3479
>>1899558
>Wordpress
80% заказов на нём - безденежные днари. Как и 80% сайтов на нём - говно говна непонятно зачем сделанное школьником\домохозяйкой, либо откровенно мусорные сайты под чёрное сео.

>Bitrix
Много посредников и хитрожопых, считающих, что фрилансер будет делать за 2-3к то, за что в "сертифицированной" студии возьмут от 15к. Если будешь на нём работать, то не демпингуй - если есть деньги на Битрикс, то и на работу 15к найдутся.
Алсо код внутри у него говняный.

>modx
Многого о нём не знаю, но слышал, что медленно уходит в прошлое.
03/01/21 Вск 19:00:46 1899681748
>>1899658
- попробуй сконфигурить nginx + php-fpm так, чтобы они работали в разных контейнерах. Несмотря на то, что, вообще то nginx`у нафиг не нужны php файлы - тебе всё равно придётся примаунтить папку с проектом к контейнеру с nginx`ом. Причём пути маунта должны точно совпадать с тем, как код примаунчен к контейнеру с php-fpm. Это выглядит как костыль, и им, по сути, и является.
- если у тебя сложное приложение на symfony, в котором есть консольные, постоянно работающие event-consumer`ы - деплой превращается в какую то клоунаду. Само собой, консюмеры должны работать в отдельных конейнерах, ради масштабирования. Иначе в чём смысл этого вашего докера? В итоге простая очистка кеша превращается в ёбаный цирк: Остановить все контейнеры, кроме одного. В единственном контейнере запустить cache:clear. Заново стартовать. Аналогичное относится и к composer install.
- указанные выше консюмеры должны запускаться после rabbit`а. Хоть докер и умеет запускать контейнеры в определенном порядке, но он следит за фактом запуска контейнера, а не за фактом запуска сервиса (того же rabbitа) внутри контейнера. В итоге консюмеры, стартующие раньше rabbitа были обычным делом. Приходилось руками писать код, решающий эту проблему. Вот нахер мне это надо?
- postgres в контейнере работает так, что лучше бы вообще не работал. Наверное я где то недоразобрался, но если пытаться хранить данные постгреса в примаунченной папке - то периодически данные корраптятся и приходят в негодность. От нахер мне это нужно на проде? Мне делать больше нечего, как разбираться сутками, какого хрена там БД портится? А потом восттанавливать её из бекапов?
- при апдейтах контенйеров всё время вылазила какая то проблема с внутридокеровской TCP\IP сеткой. Не помню что там точно было, но из за этой хрени деплой постоянно падал.

Как следует натрахавшись со всем вышеперечисленным на stage - прод я уже разворачивал на голом железе. Просто небо и земля - если на stage я постоянно руками дрочил деплой, ибо авто-деплой через CI постоянно заедал - на проде с той же CI не было ни единого разрыва.
Аноним 03/01/21 Вск 19:59:09 1899754749
>>1899672
Спасибо огромное. То что мне нужно. По уровню знаний я сейчас как школьник домохозяин.
Аноним 03/01/21 Вск 22:49:37 1899971750
>>1899681
Чет притензии твои скорее к тебе самому, чем к докеру.

>Несмотря на то, что, вообще то nginx`у нафиг не нужны php файлы - тебе всё равно придётся примаунтить папку с проектом к контейнеру с nginx`ом
Про nginx вообще хуйню написал. Если у тебя в конфиге написано try_files, то ясен хуй ему будут нужны файлы. Не лезь в nginx'е к файлам проекта и монтировать ничего не придется.

>простая очистка кеша превращается в ёбаный цирк: Остановить все контейнеры, кроме одного. В единственном контейнере запустить cache:clear
То есть ты использовал для, по сути отдельных серверов приложений, общий файловый кэш. И обвинил в этом докер. Ты хоть на секунду задумывался как это работает без докера? Типа как работает кэш, если запустить два воркера на одном сервере. Или каждый на отдельном.

>указанные выше консюмеры должны запускаться после rabbit`а. Хоть докер и умеет запускать контейнеры в определенном порядке, но он следит за фактом запуска контейнера, а не за фактом запуска сервиса
С рэббитом тоже какие притензии к докеру? Тебе и без докера нужно написать скрипт, который будет определять порядок запуска. И один хуй придется написать healthcheck, чтобы убедиться что рэббит уже готов принимать запросы и можно стартовать остальное.

>postgres в контейнере работает так, что лучше бы вообще не работал. периодически данные корраптятся и приходят в негодность
>при апдейтах контенйеров всё время вылазила какая то проблема с внутридокеровской TCP\IP сеткой
Вот это серьезные претензии. Я бы даже сказал неправдоподобно серьезные. Можно просто нахуй вычеркнуть все что ты написал и оставить только: "Докер рандомно корраптит вашу базу на продакшене". И этого было бы достаточно чтобы никто и никогда не использовал такой кусок говна на проде. Все. Сворачивайте свои ебаные облака с кубернетисами, это говно не работает.
04/01/21 Пнд 00:27:01 1900035751
>>1899971
>Чет притензии твои скорее к тебе самому, чем к докеру.
А я и не спорю, мои познания в докере весьма поверхностны. Но тут возникает вопрос - если в дополнению к докеру на любой мало-мальско сложный проект надо нанимать девопса за тыщи баксов - нахрена всё это надо?
Нахера, если на голом железе с настройкой проекта справится любой админ с минимальным знанием линукса+субд.
04/01/21 Пнд 00:51:20 1900043752
>>1899971
>Если у тебя в конфиге написано try_files, то ясен хуй ему будут нужны файлы.
Ану, можешь привести пример конфига nginx в связке с php-fpm так, чтобы nginx`у вообще не нужен был доступ к PHP файлам?
Аноним 04/01/21 Пнд 01:44:23 1900062753
04/01/21 Пнд 02:02:08 1900068754
>>1900062
Сдаётся мне я это испытывал, и оно не работало. Nginx ругался и требовал, чтобы файлы таки физически присутствовали. Ладно, перепроверю.
Аноним 04/01/21 Пнд 02:22:13 1900073755
>>1900035
А где в предыдущем посте "познания в докере"? Там есть инсайт про то что докер как софт в принципе не работает. И то как по мне очень спорное заявление.

Ты опять все ставишь с ног на голову. Докер это последний этап подготовки окружения - упаковка. Распределенная асинхронная система это сложно. Я могу помимо рофла с кэшем сходу назвать штук пять проблем, которые могут привести к пиздецу похуже чем временная остановка всех воркеров на пятиминутные техработы.

Сначала проектируется система, потом подготавливается окружение, а потом готовый результат упаковывается в контейнер. Ты никак не избежишь работы девопса. С докером или без, но нужные команды все равно будут написаны. А чтобы упаковать результат работы PhD не надо.
04/01/21 Пнд 02:50:51 1900088756
>>1900073
>Распределенная асинхронная система это сложно.
Йоу, вас куда то в космос архитектуры уносит. Ты на начало обсуждения посмотри:
> есть ли смысл использовать Docker контейнеры для MySQL и Symfony для небольшого проекта
>для небольшого проекта
а ты тут рассказываешь, как на монстроузном проекте надо распределённые асинхронные системы проектировать. И девопса ещё, ага. На проект из 3 человек.
Аноним 04/01/21 Пнд 12:09:19 1900299757
>>1898788
>Я вообще ни в одном проекте не виде, чтоб кто то использовал триггеры, встроенные процедуры и прочее.
Есть сейчас такое на одном проекте, десктоп приложение раньше могло прямыми запросами к бд обращаться (и до сих пор иногда может, лол). Хз зачем, походу еще до времени когда апи не прикрутили. Вот я и думал эти триггеры ради удобства как нибудь в моделях отметить.
Плюс на хабре недавно высрали пачку статеек, где чуваки хвалились переносом логики в БД и рассказывали, как им теперь жить стало лучше. Хотя не могу представить, как они этот код поддерживать будут.
Аноним 04/01/21 Пнд 12:09:57 1900301758
Почему имя в переменных должно начинаться с маленькой буквы?
Аноним 04/01/21 Пнд 13:10:55 1900397759
>>1900301
Думаю потому, что в некоторых Б-гомерзких языках не надо ставить $ перед именем переменной и так проще отличить имя класса от переменной.
User user = new User("user");

Правда в кошерном php можно и наоборот сделать.
$User = new user("user");
Но лучше не надо.
Аноним 04/01/21 Пнд 13:16:46 1900399760
>>1900301 >>1900397
А еще бывает было такое iXyuta, cXyuta, dXyuta, и судя по тому, что кто-то очень хочет типизации в няшном php, мы и до такого дожить можем.
Аноним 04/01/21 Пнд 17:47:24 1900781761
>>1900399
> няшном php
ты хотел сказать руби?
Аноним 04/01/21 Пнд 19:45:53 1900864762
Screenshot 2021[...].png 131Кб, 1440x900
1440x900
Аноним 04/01/21 Пнд 20:09:24 1900907763
как сделать в БД,чтобы в колонку дата автоматом записывалась дата и время создания записи в этой колонке?
04/01/21 Пнд 20:30:05 1900933764
Аноним 04/01/21 Пнд 20:34:52 1900939765
>>1900933
еще
>As of MySQL 8.0.17, the nonstandard FLOAT(M,D) and DOUBLE(M,D) syntax is deprecated and you should expect support for it to be removed in a future version of MySQL.
а как тогда надо?
Аноним 04/01/21 Пнд 20:40:50 1900944766
>>1900907
Некоторые БД позволяют сконфигурировать поля так, чтобы они сами записывали. Например мускуль может вот так "... `updated`
DATETIME NOT NULL ON UPDATE CURRENT_TIMESTAMP ..." или еще по всякому.
https://stackoverflow.com/questions/40619762/auto-update-datetime-column-on-insert-with-sql/40619912
Но ты не написал, какая у тебя БД.

Или делай это сам в том месте, где ты сохраняешь свои данные. Типа ..UPDATE ... " . date('Y-m-d H:i:s') , "...
Но ты опять же не написал, то ты юзаешь.
Аноним 04/01/21 Пнд 20:41:13 1900945767
>>1900939
в туторе говориться что можно сделать float(x)
но я не понял что есть X?
Аноним 04/01/21 Пнд 20:45:40 1900948768
>>1900944
mysql
CREATE TABLE t1 (
бла-бла 1колонка
бла-бла 2 колонка
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
так?
а когда вводить данные
где value для 3 и 4 колонки че писать?
Аноним 04/01/21 Пнд 20:45:57 1900949769
>>1900781
Если он на рельсах, то ок, можно не зная руби работать, но тогда сразу симфони пользовать можно.
Аноним 04/01/21 Пнд 20:50:17 1900956770
>>1900948
Ничего не пиши. Если все правильно сделал, то оно само все сделает.
Аноним 05/01/21 Втр 10:26:36 1901310771
Я учил верстку. А теперь хочу РНР изучить шапочно, чтобы знать как туда верстка кладется и как взаимодействует с серверной частью.

Я джва дня ебался с установкой Apache и PHP на Windows. И такую ошибку видел и сякую. Еле еле установил. Отдохну и в конце дня MySql установлю.

Да, я знаю я ультрадовен, у вас это все занимает считанные минуты.
Аноним 05/01/21 Втр 10:40:04 1901314772
>>1901310
ты не мог скачать xampp или запустить виртуалку?
Аноним 05/01/21 Втр 10:41:05 1901315773
Аноним 05/01/21 Втр 10:41:59 1901316774
Аноним 05/01/21 Втр 11:09:30 1901328775
>>1901314
В шапке треда написано, что надо Apache
Аноним 05/01/21 Втр 12:01:34 1901359776
>>1901328
там есть апач в сборке,читай внимательно
Аноним 05/01/21 Втр 12:04:39 1901362777
>>1901359
ставишь xampp
запускаешь,в папку htdocs заливаешь файл пхп
а потом гуглишь инструкцию по запуску-всё
Аноним 05/01/21 Втр 13:37:00 1901435778
>>1901359
>апач в сборке читай внимательно
Я читал, написано Устанавливать Apache, PHP, MySQL лучше всего самому, так как при этом ты получишь ценные знания, а сборки лучше не использовать.
Аноним 05/01/21 Втр 15:17:19 1901515779
>>1901435
тогда ставь на линукс
Аноним 05/01/21 Втр 15:46:54 1901541780
Господа шарящие, помогите разобраться, что происходит в switch, а то я не совсем понимаю как это работает

https://www.ideone.com/p6JwIt
Аноним 05/01/21 Втр 16:02:28 1901570781
Code.png 6Кб, 548x275
548x275
Я сделал функцию для сброса выбранного пользователя, она должна срабатывать при нажатии на ссылку с надписью "Выйти", но она не работает и страница не может забыть нынешнего выбранного пользователя. Чувствую, что легко решить.
Аноним 05/01/21 Втр 16:05:43 1901576782
>>1901541
В зависимости от буквы в конце умножает число байт на 1024, чтобы получить именно число байт. Там нет брейка, потому операции проводят начиная с самой первой.

Это ты где такое надыбал?
Аноним 05/01/21 Втр 16:11:35 1901586783
>>1901570
Ты не можешь вызвать в браузере пхп-функцию без обращения к серверу.

Тебе надо что-то типа: href="index.php?clear_user=1" в твоем html, и что-то типа
<?php if($_GET['clear_user']) {clear_user();} ?> в твоем php.
Аноним 05/01/21 Втр 16:13:00 1901587784
onclick указывает на javascript функцию, а clearUser() у тебя в php
Можешь сделать так, чтобы href вёл на php скрипт, который разлогинивает пользователя и потом перенаправляет куда надо
Аноним 05/01/21 Втр 16:16:54 1901593785
>>1901515
>тогда ставь на линукс
Там так не написано. Там только было написано
Устанавливать Apache, PHP, MySQL лучше всего самому, так как при этом ты получишь ценные знания, а сборки лучше не использовать.

Я чисто по урокам из шапки двигаюсь.
Аноним 05/01/21 Втр 16:22:23 1901601786
>>1901576
Это я прохожу курс Игоря Борисова по php, лабораторная работа, 2015 год, скачал на рутрекере
Спасибо, теперь более понятно как это умножение работает!
Аноним 05/01/21 Втр 16:23:16 1901602787
>>1901515
>>1901593
З.Ы. А вообще хоть в уроках и предполагается Apache установленный на Windows. Но GNU/LInix все-равно придется осваивать. Буду ковырять. Но потом, разу уж в уроках предусмотрена Windows.
Аноним 05/01/21 Втр 16:35:59 1901613788
>>1901593
уроков мало.
каждую тему гугли и перечитывай что там пишут.
одним источником сыт не будешь.
Что с английским?
Аноним 05/01/21 Втр 16:41:36 1901615789
Code2.png 6Кб, 520x194
520x194
>>1901586
>>1901587
Что-то ничего не работает. Попробовал поставить href="index.php?clear_user=1" - не работает(ноль изменений). Создал отдельный файл clearUser.php и написал там <?php session_unset($_SESSION['user']); ?> - после чего поставил на этот файл ссылку в той кнопке на которую я нажимаю, но снова ноль эффекта. Как же так? Неужели на этом моя карьера php программиста закончена?
Аноним 05/01/21 Втр 17:00:03 1901635790
>>1901613
>Что с английским?
Все очень плохо. Я на русском языке двигаюсь чисто. Но сейчас 2к21 год на джворе. По пыхе дохуища материала на русском языке.
Аноним 05/01/21 Втр 17:02:49 1901641791
>>1901635
>Все очень плохо
Если честно я вообще не понимаю как можно пытаться заниматься программированием, не зная английский. Даже мне, человеку который знает английский, очень тяжело продвигаться по карьере программиста, но я не могу представить как тяжело людям, не знающим английский.
Аноним 05/01/21 Втр 17:05:04 1901645792
>>1901641
А я и не хочу двигаться. Я хочу вордпресс мастаком сделаться.
Аноним 05/01/21 Втр 17:05:24 1901646793
>>1901641
Это ты 300к наносеком хочешь быть.
Аноним 05/01/21 Втр 17:12:13 1901658794
>>1901646
ЛОЛ нет. Я просто пытаюсь хотя сделать свою первую страницу. Я вас уверяю: Web программирование >>>>>>>>>>>> изучение английского, в плане сложности.
Аноним 05/01/21 Втр 17:20:40 1901668795
>>1901658
> Я просто пытаюсь хотя сделать свою первую страницу.
Но ты же сказал, что ты с трудом по карьере программиста двигаешься. Ты смеешься надо мной как казахи и кабардинцы над Джиганом.
Аноним 05/01/21 Втр 17:25:48 1901679796
>>1901615
session_start();
unset($_SESSION['user']);
Аноним 05/01/21 Втр 17:33:06 1901691797
>>1901615
>Неужели на этом моя карьера php программиста закончена?
Не исключено, но не обязательно. Я же смог.

Смотри. У тебя есть "Сессия". Это такое хранилище и оно на сервере.

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

Значит тебе нужно:
1. Получить страницу с результатом в броузер
2. Послать на сервер новые данные
3. ГОТО 1

Попробуй сперва без кнопок сделать три файла:
1. display.php <?php var_dump($_SESSION)

2. da.php <?php $_SESSION['xyuta'] = 'DA';

3. net.php <?php $_SESSION['xyuta'] = 'NIYET';

Теперь попробуй повызывать их по очереди и посмотреть на результат. Например сперва display.php потом da.php потом disply.php потом net.php и снова display.php

ЗЫ. Я исхожу из того, что сессию ты запустил и прочее.


Аноним 06/01/21 Срд 00:21:18 1902068798
Искать готовые проекты, которые можно поковырять и поразбирать, лучше всего на гитхабе, или есть какие-то отдельные популярные площадки, которые вы можете посоветовать? При гуглении глаза разбегаются, не знаешь, за какой сайт первым хвататься.
Аноним 06/01/21 Срд 09:53:03 1902263799
>>1901310
молодец, получил ценный опыт, а теперь удаляй и скачивай open server http://open-server.ru пользуйся благами цивилизации друг
Аноним 06/01/21 Срд 17:06:21 1902743800
>>1899671

В ALTER TABLE можно указать, где добавить колонку - после какой-то (AFTER x) или первой (FIRST).

>>1900945

Тут https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html описано. x - это число бит, отводимых на хранение мантиссы числа, если оно от 0 до 23, то число хранится как FLOAT, если от 24 до 53 - то как DOUBLE.

>>1901310

В PHP для генерации HTML-кода используются шаблоны. Я бы советовал кроме основ PHP, еще изучить синтаксис шаблонизатора twig, например. Тогда ты сможешь внедрять свою верстку в проект на Симфони. Ну или изучи шаблонизатор blade, чтобы внедрять верстку в Ларавель.




Аноним 06/01/21 Срд 17:11:54 1902755801
>>1901570

В session_unset судя по документации, ничего не надо передавать. В атрибуте onclick указывается не PHP-код, а яваскрипт-код. Яваскрипт - это язык, на котором можно написать программу, которая будет выполняться в браузере. То есть у тебя он будет пытаться вызвать функцию clearUser() в яваскрипт-программе (а не в PHP).

>>1901615

Как выше пишут аноны, возможно проблема в отсутствии session_start() в твоем коде.
Аноним 06/01/21 Срд 18:43:32 1902909802
>>1901593
Линукс ты обязан знать минимум на уровне пользователя, юный падаван - на нём почти весь веб работает. И мало-ли чего в шапке не написали - всего не упомнишь.
Аноним 06/01/21 Срд 20:28:57 1902990803
>>1902909
У меня на пеке винда. Теперь вторую операционную систему GNU/Linux хочу на пеку поставить. А что лучше поставить Ubuntu desktop или Ubuntu server?
Аноним 06/01/21 Срд 20:45:25 1903005804
>>1902990
для начала дескопт
Аноним 06/01/21 Срд 20:54:03 1903012805
>>1903005
Благодарю, я тоже так подумал, а то еще пупок развяжется от натуги при освоении server, лучше не спешить и не перегореть.
Аноним 06/01/21 Срд 20:55:57 1903014806
>>1903012
потом возми впс,поставь убунту и балуйся по заливу сайта
Аноним 06/01/21 Срд 21:28:58 1903046807
>>1903012
>пупок развяжется от натуги при освоении server
На самом деле server проще - ни иксов, ни говна лишнего для пердолей.

Алсо сразу привыкай к консольке - альфа и омега для разраба. Ей и пользоваться просто, и автоматизировать, и софт под неё писать.
Аноним 06/01/21 Срд 23:34:21 1903203808
Не совсем по теме - посоветуйте, пожалуйста, окружение раб стола для линукса, чтобы и красивенько и не сильно нагружало.
Крыса не заходит
В кедах долго грузится все
Гном - то еще говно.
Юнити - охрененная, но она не поддерживается больше, авось что не ВК вставать будет

Больше ничего не пробовал
Аноним 06/01/21 Срд 23:37:18 1903206809
Аноним 06/01/21 Срд 23:40:59 1903208810
>>1903206
Mate выглядит не очень, вообще её прикола не понял, как оболочки, если честно.
Cinnamont выглядит страшно + как я понимаю он только на линус минт, а мне бы ток убунту или манджаро (но там пакет пэкмэн ебанутый, не хочу с ним париться ..)
LXQT - это разве не ещё более страшно, чем крыса?
Аноним 07/01/21 Чтв 00:31:52 1903248811
Аноним 07/01/21 Чтв 15:12:28 1903607812
>>1903208
тебе не пох?
главное что есть гуй. терминал,папки,браузер,редактор
на юоевом сервере этого ничего не будет
Аноним 07/01/21 Чтв 20:13:55 1903901813
Какая-то странная херня. Я скачал файл css с инета, написал ссылку на него в файле index и всë работает. Проблема в том, что сайт не реагирует на любые изменения этого css файла (более того, даже если этот файл удалить, то сайт НИКАК не изменится, но если убрать ссылку на css из файла index, то он потеряет стили). Сайт как бы запомнил css файл и не принимает любые изменения, даже полное его удаление. Кто-нибудь встречался с подобным или это у меня одного?
Аноним 07/01/21 Чтв 20:15:28 1903909814
>>1903901
а ты когда изменял что нибудь в css файле, то обновлял index.php ?
Аноним 07/01/21 Чтв 20:19:47 1903924815
>>1903909
Да, я всë обновлял и css и index. Такое чувство, что есть какая-то призрачная копия css, которую я не вижу, а тот файл, что я вижу и редактирую - это лишь пустышка. Жуткая срань.
Аноним 07/01/21 Чтв 20:19:59 1903926816
>>1903901
обнови страницу через ctrl+f5
Аноним 07/01/21 Чтв 20:21:44 1903932817
>>1903924
а ты в .htaccess и вообще в настройках сервера ничего не делал ?
Аноним 07/01/21 Чтв 22:50:54 1904094818
>>1903901
Попробуй подгружать css с гет параметром, например "cache=123" и меняй его каждый раз, когда ты меняешь что-то в css.
<link href="style.css?cache=1" title="makaba" type="text/css" rel="stylesheet">

Или href="style.css?cache=<?php echo time(); ?>" если тебе лень менять параметр.
Аноним 08/01/21 Птн 15:08:50 1904522819
Учу Python несколько месяцев, хочу на фрилансе сайты делать.
Недавно узнал что на фрилансе деньги только в PHP.
Правда?
Стоит ли браться за изучение PHP, он проще?
Или и дальше Django пытаться освоить? (Все упирается в деньги, хочу поскорее начать зарабатывать.)
Аноним 08/01/21 Птн 16:00:56 1904585820
>>1904522
Ну не только на PHP но всяко лучше чем с питоном(ибо все что угодно больше чем ноль)
Если надо только деньги то php куда лучше конечно(но лучше ищи по началу работу в офисе, хотя можешь конечно попробывать фрилинс, но на многое не надейся)
Аноним 08/01/21 Птн 17:20:21 1904705821
Привет, ОП. С большим трудом решил задачку про числа прописью, проверь и подскажи если можно сократить, спасибо заранее.

https://ideone.com/YFUhyM

Аноним 08/01/21 Птн 17:40:33 1904734822
>>1904522
>хочу поскорее начать зарабатывать
Тогда лучше сразу идти еду разносить или грузалём - на фрилансе денег ты ещё долго не увидишь.
Аноним 08/01/21 Птн 21:57:08 1905015823
Нашел русскую документацию по Слиму https://slimframework.ru/v4
Но у меня возникают большие сомнения в качестве перевода, написано все не совсем понятно. Мне кажется что уже проще читать оригинал, со своим плохим знанием английского и переводчиком.
Аноним 09/01/21 Суб 05:53:39 1905326824
>>1901310
Сразу хуйня, хочешь понять, как и что работает на бэке - ставь виртуалку-докер или номальную юникс-систему. Винда - удел ебанатов.
09/01/21 Суб 06:07:02 1905327825
>>1905015
>Мне кажется что уже проще читать оригинал
this. Чувак, если ты хочешь профессионально заниматься программированием - то от чтения доков на английском тебе вообще никак не уйти. Без этого ты просто не сможешь работать.
Так что привыкай сразу. Учи английский. На первых порах - google translate в помощь.
Аноним 09/01/21 Суб 11:18:05 1905376826
Почему в шапке треда Yii фреймворк не упоминается? Типа зашкварный фреймворк? Зашкварен так же как и Wordpress? Поэтому его нельзя упоминать?
Аноним 09/01/21 Суб 11:34:18 1905383827
>>1905376
Да.
Так же как и пхп говно среди языков
WordPress говно от мира cms но он на самом деле уебищен
Yii говно от мира фреймворков а по факту - ставишь и смотришь. если нравится - юзаешь, не нравится - пишешь о том какой он ущербный на дващах

Аноним 09/01/21 Суб 11:36:22 1905384828
>>1905383
>Yii
Он проще и быстрее учится, чем laravel/symfony?
Аноним 09/01/21 Суб 11:58:08 1905386829
>>1905383
> пхп говно среди языков
ну тут первенство уже у другого языка
Аноним 09/01/21 Суб 12:16:47 1905388830
>>1895730
> На СНГшных биржах ты даже 30к в месяц не поимеешь

>даже 30к

Так и на офф работе ты столько не факт что поимеешь лол
Аноним 09/01/21 Суб 12:42:10 1905405831
>>1905384
Единственное что могу сказать - попробуй сделать гостевую книгу на yii2, симфони и ларавеле. С небольшой админкой модерацией комментов. Здесь у тебя и формы и модели, авторизация и миграции. И уже выбери.
Но Яб советовал либо симфу либо Лару. Говноконторы их чуть реже выбирают
>>1905386
Кто сейчас в лидерах? Js?
Аноним 09/01/21 Суб 12:45:20 1905406832
>>1905405
Спасибо большое. Буду стараться!
Аноним 09/01/21 Суб 13:05:04 1905414833
Аноним 09/01/21 Суб 13:30:43 1905434834
Аноним 09/01/21 Суб 13:47:30 1905452835
>>1903208
MATE охуенно красивый, не гони, с такими ламповыми зелеными папочками. Ну если не устраивает можно накатить тему с офф сайта
Аноним 09/01/21 Суб 15:39:30 1905535836
>>1905384
>symfony
В чем проблема выучить Симфони?

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

мимо-11-лет-опыта-симфони
Аноним 09/01/21 Суб 15:57:47 1905545837
ОП, аноны, можете чекнуть решение задачи «Grammar Nazi» из учебника ОПа

https://ideone.com/QGNJdV
Аноним 09/01/21 Суб 17:02:27 1905622838
Начал изучать ларавель. Hасколько часто ИРЛ используются такие вещи как Breeze, Jetstream, Livewire и прочие приколы из экосистемы? Просто хочу понимать, стоит ли потратить время на их осмотр, или же это все херня на самоподдуве от разрабов.
Аноним 09/01/21 Суб 17:51:21 1905678839
>>1905545
А можно ссылку на урок?


По мелочи доебусь: Делай fixGrammar после строки 64, чтобы гонять ее, если все ок.
Аноним 09/01/21 Суб 20:04:51 1905832840
Неужели люди до сих пор думают, что эти "задачи" как-то помогут им в изучении языка? Я вижу столько постов здесь про мусор вроде "Помогите решить задачку где надо посчитать бла-бла-бла". Если вы до сих пор страдаете этой херней, вы никогда не станете программистом. Вы должны сначала изучить базовый синтаксис, после чего практиковаться, делая что-то связанное с непосредственной сферой деятельности, а не решать задачки для имбецилов.
09/01/21 Суб 20:16:01 1905849841
16092664793410.png 4Кб, 112x112
112x112
>>1905832
Соносите шапку тут у нас недовольный
Аноним 09/01/21 Суб 21:16:42 1905944842
Аноним 09/01/21 Суб 21:21:07 1905953843
>>1905832
Но ведь базовый синтаксис хорошо усваивать через задачки. Или у тебя есть конкретные альтернативные предложения?
Аноним 09/01/21 Суб 21:54:54 1906035844
Посоны, норм ли книга для старта "Изучаем PHP и MySQL" от Орелли? Знания у меня какие-никакие есть всё же, могу на Django сайт состряпать и не плохо знаю чистую Java, к Spring не притрагивался.
Аноним 09/01/21 Суб 22:27:14 1906076845
>>1905944
Вроде неплохо получается. Особенно мне вот это место понравилось "[летюн]{1,2}". Хорошо зделол. Только я не понел зойчем {1,2}? По одной же букве достаточно определять.

Из доёбок могу только к той, что уже была выше, предложить проверить твоей проверялкой предложение "Он разделал труп и выкинул в Неву.".
Аноним 09/01/21 Суб 22:45:53 1906112846
>>1906076

> зойчем {1,2}
Чтобы слово целиком выделялось. Допустим, есть два слова "зделал, "зделает". Если мы убираем {1,2}, то второе слово выделится [зделае]т

> проверить "Он разделал труп и выкинул в Неву."
Чекнул щас, выдало ошибку, пофиксил добавлением границы /\bздела[летюн]/ui
И еще один косяк нашел в fixGrammar, preg_replace же null возвращает только в случае ошибки, поэтому там проверка априори бесполезна
Аноним 10/01/21 Вск 01:22:00 1906256847
Кому не лень, не могу найти инфу на счет того как в ларавеле обработать <select> в форме. Пишу $newItem->category = $req->input('category'); , но работает это только для инпутов как я понимаю, так же $newItem->category = $req->get('category'); не работает
10/01/21 Вск 13:41:35 1906408848
>>1905832
>Вы должны сначала изучить базовый синтаксис
Дык для этого задачки и нужны. Ты не запомнишь синтаксиса, если просто прочтешь учебник. Нужно ручками его набирать.
Аноним 10/01/21 Вск 17:39:10 1906640849
Для меня пока самое неприятное в веб девелопменте - это то, что у html нет переменных. Я просто хочу взять с помощью php данные из БД и передать эти данные в переменную html, но насколько мне известно у html нет переменных, поэтому приходится делать какую-то безумную конструкцию, где 2 языка скрещиваются и может быть оно заработает. А вы что думаете, джентльмены?
Аноним 10/01/21 Вск 18:26:58 1906707850
>>1849078 (OP)
Знатоки, пожалуйста, помогите советом кто может. Есть цель создать маленькую веб-библиотеку для своих. Планируется хранить в библиотеке книги в формате pdf, epub, fb2, mobi и т.д. Хочу сделать там форму загрузки, где можно указать аннотацию, название, автора и т.п. а также загрзуть обложку и собственно сам файл с книгой. Тут встаёт вопрос как правильно всё хранить чтобы было не стыдно и всё работало? В гугле говорят что если файлов не много то можно хранить в базе данных. Но файлы там хранятся в двоичном формате. Пожалуйста подскажите урок где показанно как правильно делать загрузку файлов и самое главное как их оттуда вытаскивать. Хочется чтобы на странице с книгой помимо данных о книге отоброжалась обложка как картинка и была кнопка скачать которая бы собственно давала прямую ссыль для скачки книги. Заранее всех благодарю.
Аноним 10/01/21 Вск 19:06:11 1906744851
Шифрование паролей не нужно?
Аноним 10/01/21 Вск 19:24:41 1906758852
Снимок экрана ([...].png 196Кб, 1366x768
1366x768
критикуйте
Аноним 10/01/21 Вск 19:39:47 1906772853
>>1906758
хотя нафига я верификацию запихал
Аноним 10/01/21 Вск 19:49:24 1906782854
Аноны, посмотрите решение очередной задачки ОПа
https://ideone.com/lPVNoN

До меня правда так и не дошло с этими регулярными утверждениями, как надо было сделать, чтобы preg_split не закидывал в массив точки и etc, если их подряд несколько
Аноним 10/01/21 Вск 23:44:36 1906942855
Аноним 11/01/21 Пнд 13:52:17 1907245856
Ебаный клиентский JS, я прочувствовал эту боль. Как пишешь что то сложнее alert('hello word') , все превращается в говно нечитаемое.
Сука, следующаю часть я уже соберу вэбпаком. И раскидаю классы по файлам, как положено.
Это невыносимо...
Аноним 11/01/21 Пнд 13:52:55 1907246857
>>1907245
п.с.
2500 строк в одном файле, я дурею.
Аноним 11/01/21 Пнд 14:31:36 1907292858
Есть тут те, кто работает уже? Работал почти три года в мухосранской конторе, где нет процесса разработки вообще. Про докер не слышали, пушат в мастер ветку на гите с ебанутыми комментариями типа "соси". ci/cd нет, говнокод в контроллерах и 0 тестов. Щас вообще работы нет тупо сидим чилим. Ни одного синьера, все блять джуны, которые ебашут закрыв глаза, но проекты работают и вроде как денюжку даже приносят, а то бы не держали. Вопрос в тащем та такой, сложно ли мне будет найти норм работку, а то заебало уже сидеть в говне и зарабатывать копейки(25к в серую) Про solid слышал, постоянно дрочу курсы Елисеева и пишу петы, короче стараюсь. Докер тоже ковыряю. Бля помогите советом, как нахуй вылезти из этого болота. Яж даже пул реквесты никогда не далал, боюсь напизжю на собесе и обосрусь потом
Аноним 11/01/21 Пнд 15:19:03 1907401859
Аноним 11/01/21 Пнд 15:19:33 1907402860
>>1907292
>>25к в серую

Лел, чет проиграл. Нужно твой пост скинуть моему одному знакомому, который начал учить похапе с ноля, и через уже 2.5 месяца хочет вкатиться в разработку на вордпрессе.
Пока что влажно мечтает от 150 тыщах.
тоже мухосранск точнее почти мухосранск, город с курортной спецификой
Аноним 11/01/21 Пнд 15:22:02 1907409861
>>1907245
Ну так самый всратый язык на вебе.
Аноним 11/01/21 Пнд 15:22:39 1907410862
>>1907402
Бля, понимаю, что ситуация смешная, но не все за 25к работают, как я. Зарплаты реально большие. Видимо, что я долбаеб
Аноним 11/01/21 Пнд 15:29:09 1907420863
>>1907402
На вордпрессе столько не платят, пусть даже не мечтает.
Аноним 11/01/21 Пнд 15:31:39 1907427864
>>1907401
Ищи инфу в уроке про создание файлового хостинга.
А в БД файлы и правда лучше не хранить - для этого файловая система есть.
Аноним 11/01/21 Пнд 15:32:04 1907428865
>>1907420
Он о них через полгода мечтает, лол.
Аноним 11/01/21 Пнд 15:35:19 1907433866
>>1907292
>Яж даже пул реквесты никогда не далал, боюсь напизжю на собесе и обосрусь потом
Неправильно информацию подаёшь. Надо этот беспредел в подвиг определить - дескать ушёл с прошлого места потому, что тут даж пул-реквесты не делают, и тебе расти некуда как специалисту.
Тебя ещё в жопу поцелуют за такое.
Аноним 11/01/21 Пнд 15:35:20 1907434867
>>1907428
Собственно он мой приятель, и он хороший человек. Но он прям типичный вайтишник, своя карьера у него не сложилась нихуя. Прогинг ему не особо нравится, и единственное зачем лезет - поднять бабла. Это прям идея фикс. И поэтому все разговоры о программировани - в русле зарплат. Серебрянная пуля которая из нищего неудачника сделает успешного человека которому все завидуют. Ага.
Начитался всякой мотивационной хуиты.
Но мож ему прогинг реально зайдет - тогда поглядим как сложится.
Аноним 11/01/21 Пнд 15:35:43 1907435868
>>1907428
Мечтать не вредно. Через пол года будет говорить "ща ща еще немного и 150к только технологиянейм доучу"
Аноним 11/01/21 Пнд 15:38:19 1907441869
>>1907433
Ага, а потом, когда устроюсь, ебану пуш форс с коммитом "сасай лалка". Меня же в первый же день вычислят и выпрут. Бля, три года коту под хвост, какое же я чмо...
Аноним 11/01/21 Пнд 15:41:30 1907448870
>>1907441
>ебану пуш форс с коммитом "сасай лалка"
Тебе объяснят как у них принято, если ты их в известность поставишь как я написал выше.
Опять же - ты об этом в курсе, а значит очень сильно не накосячишь. Хуиту обычно от незнания и непонимания творят.
Аноним 11/01/21 Пнд 15:49:43 1907457871
>>1907292
Помню тестовое делал, результат работы которого просили прислать по почте. Рофлил с них и делал. Потом пытался отправить, но гугл проверил архив и возмущался на типы файлов, и не отправлял их. Я взоржал и скинул им через гугл-диск по ссылке.
Они так и не ответили позже.
Аноним 11/01/21 Пнд 15:57:06 1907465872
>>1907292
Фреймворки какие на работе используешь?
Аноним 11/01/21 Пнд 16:08:46 1907478873
>>1907465
Laravel, немного знаю симфони, на нем петы делал и slim
Аноним 11/01/21 Пнд 16:12:20 1907485874
>>1907448
Найти бы еще компанию, которая возьмет на работу такого бездаря. Даже на собесы идти страшно, хотя после универа еще глаза горели и были норм офферы, а щас тупо сам себе мозги ебу каждый день и этобудет заметно, скорее всего, на собесе
Аноним 11/01/21 Пнд 16:21:16 1907495875
>>1907478
На удаленке за те же скилы дают х4 прайс. И так же срут в проект говнокодом
Аноним 11/01/21 Пнд 16:27:10 1907501876
>>1907478
Если правду пишешь - то ты просто далбоеб и пример человека который в жопе находится только от того что инертный и пассивный овощ.
Люди, которые предприимчивые, на такой хуйне умудряются зарабатывать что диву даешься.
А ты, в наше время, прогер с опытом, лол блядь.
Твои посты опять же доказывают что самое главное в человеке - го личность. Что предприимчивость и активность важнее любого склила
Аноним 11/01/21 Пнд 16:33:45 1907508877
>>1907501
п.с.
Чувак, совет даю - ливай вникуда. Ты явно по жизни овощ ебаный, а значит измениться сможешь только если тебя жизнь начнет заставлять. А то так и будешь сидеть
Аноним 11/01/21 Пнд 16:35:20 1907511878
>>1907434
В отличии от него для меня в программировании деньги - второстепенное. Окончил профильный вуз и устроился на работу. Работу выбирал по принципу нравиться/не нравиться сам продукт. Начальник смог красиво мне это продать и вот я уже 3 года завис на уровне трейни, даже не джуна. Хотел бы устроиться куда-нибудь в badoo, но такого великовозрастного дебила уже не возьмут туда. Знал бы, что так все обернется, не веслал бы за 25к, а устроился сразу с норм зп(хоть какой то профит с этого получил бы)
Аноним 11/01/21 Пнд 16:36:25 1907512879
Аноним 11/01/21 Пнд 16:36:40 1907515880
>>1907511
За 3 года не закралась мысль, что ты что-то делаешь не так?
На hh не заглядывал?
Аноним 11/01/21 Пнд 16:37:38 1907516881
>>1907515
Что я должен был на хх увидеть? Зарплаты?
Аноним 11/01/21 Пнд 16:43:52 1907522882
>>1907516
Массу вакансий с лучшими условиями.
25к - зп уборщицы
Аноним 11/01/21 Пнд 16:47:13 1907525883
>>1907522
Написал же, что не важно было, какая зп. Тем более у меня в мухосранске с 0 вакансий. Удаленку я тогда не рассматривал.
Аноним 11/01/21 Пнд 16:48:08 1907527884
>>1907525
Сейчас удаленка или релокейт не интересуют?
Аноним 11/01/21 Пнд 16:52:38 1907533885
>>1907527
Сейчас уже да. Хочу развиваться, скорее всего поступлю так, как написал анон выше. Уволюсь вникуда и все, чтобы заставить себя искать другую работу, а не сидеть и ныть о том, какой я плохой...
Аноним 11/01/21 Пнд 17:32:50 1907582886
Не, ну 25к за работу с кодом это, конечно, днище. Даже в моей мухосрани зарплата макаки на опенкарте от 30к начинается, а там фактически только плагины накатывать надо и темы.
Аноним 11/01/21 Пнд 17:48:07 1907587887
>>1907582
Спрашивал сложно ли мне будет найти работу с таким бэкграундом, а вы блять упорно про зп пишете, заебали.
Аноним 11/01/21 Пнд 18:05:13 1907595888
>>1907587
>упорно про зп пишете
Тому, что ты дурень.
Аноним 11/01/21 Пнд 18:10:30 1907598889
>>1907595
Это был последний раз, когда я тут что-то спросил. Обосрут, обзовут и скажут, что не понял. Пиздц вы злые
Аноним 11/01/21 Пнд 18:46:01 1907616890
Аноним 11/01/21 Пнд 18:59:13 1907625891
Аноним 11/01/21 Пнд 19:19:07 1907646892
>>1907292
25к после трех лет работы? Вы вордпрессовщики, чишо?
Аноним 11/01/21 Пнд 19:26:49 1907665893
15403852923103.jpg 96Кб, 744x567
744x567
Пачаны, вопрос про CDN.
Где-то видел, что советовали выгружать все либы локально из сети, а тут статейки почитал где говорят, что наоборот надо - получать их из сети мне так тоже кажется.
Может я не учёл какие-то нюансы? Как принято делать в норме для небольшого сайта в контесте "поднять скорость загрузки"?
Аноним 11/01/21 Пнд 19:28:15 1907669894
>>1907646
Читать разучился? Написано же "мухосраньская говноконтора". Не вордпресс, а ларавель.
Аноним 11/01/21 Пнд 19:36:37 1907682895
>>1907669
>мухосраньская говноконтора
А чем ты там занимался? Не могло статься так, что тебя перепродавали раз, так, в 10 дороже?
Ещё инфу слышал, что многие жирные корпорации на аутсорс отдают работу именно вот таким вот "мухосраньским говноконторам".
Аноним 11/01/21 Пнд 19:42:26 1907695896
>>1907682
Это не аутсорс компания, а местная хуйня, которой нужны были свои продукты для повышения продаж франшиз. Никто меня не перепродавал.
Аноним 11/01/21 Пнд 23:40:49 1907920897
Господа, ходил около веба долгое время, решая смежные задачи. Решил залезть на бэк, решил учить php, решил.
Такой вопрос, вот я сейчас читаю "php, js, mySQL", книжка топ, оче широка, но поверхностна. Ещё глушит по голове объяснениями переменных на спичечных коробках, и тому подобным. Классно для начинающих, наверно, но нагоняет на меня скуку.
Плюс пхп там какой-то не такой: старый, дремучий, плюсы не торчат наружу.
Как учить современный пхп, заделитесь курсами и книгами пожалуйста.
Эту книгу я дочитаю энивей, так что буду рад книгам для уже знающих.
Хочу по итогу (ну, как цель) стать жёстким фуллстек челиком, код которого (на php в частности) висит в Лувре.
С меня лучи добра в вашу сторону, снижающие дефицит D3 в организме.
Аноним 12/01/21 Втр 00:48:44 1907954898
>>1907920
>заделитесь курсами и книгами пожалуйста
Читай шапку тред.
Аноним 12/01/21 Втр 08:34:00 1908056899
>>1907695
Короче тебя наебывали три года, прими это.
Есть у меня в кентах есть люди, такие как тот кабанчик на которого ты пашешь.
Там логика простая максимально - плати работникам как можно меньше, а с заказчиков греби как можно больше. Покупай крузак.
Есть девченка знакомая sql разраб, уже лет 7-8 работает в конторе на одного чувака. ЗП - 40 тыщ рублей. И все остальные столько же получают.
Так еще тип этот - манипулятор пиздец какой. За резюме на hh истерики закатывает, мол мы "семья". Сам при этом двух-этажную хату купил.
Короче чувак, отращивай зубы скорее.
Аноним 12/01/21 Втр 08:44:03 1908057900
>>1908056
Ну про "мы семья" я слышал и не раз. Просто прикол в том, что я получается теперь говнокодер, который норм разработку и не видел. Сложно будет на работку устроится вот и боюсь сижу отсюда сваливать, хоть и решил уже, что уволюсь.
Аноним 12/01/21 Втр 10:04:37 1908087901
>>1849078 (OP)
Привет, вкатуну-бекэндеру же нет смысла брать пхп в 2021 году если я живу в дс?
Аноним 12/01/21 Втр 12:40:27 1908165902
>>1908057
Есть у меня такое ощущение что если ты не в условно гугле/яндексе - то перестать быть говнокодером ты сможешь только на личной тяге.
Ожидать что кто то возьмется с нисхуя и тебя учить начнет - очень инфантильно. Ты просто ответственность перекладываешь. Опять же сам обдумай постановку задачи - сидишь ты такой работаешь, и вот вы берете парня, а он - ну я плохо знаю, меня подучить нужно. Как сам к такому отнесешься?
А с другой стороны приходит тип - и заявляет, я тут в своих проектах Action-Domain-Responder навасянил, и по слоям разбил как смог. Понятно что через жопу, дайте посмотрю как у вас сделано.
Совсем другой коленкор же.
Так что делай все сам.
Накопи денег на пару месяцев жизни, ну а дальше ищи удаленку, попутно ищи фриланс. На ларе его не мало.
Я тебе скажу что стагнация - штука липкая, ты обернуться не успеешь, а полгода пройдет, и ты все там же и на том же месте.
Я просто такое проходил.
Пока прям копытом не стучишь, и не действуешь - нихуя не меняется.
Аноним 12/01/21 Втр 12:41:29 1908167903
>>1908087
1300 тыщ вакансий на пхп говорят что ты не прав
Аноним 12/01/21 Втр 12:43:08 1908168904
>>1908087
Какие альтернативы?
Ясен хер, что в дс можешь любой стек выбрать.
Аноним 12/01/21 Втр 13:39:10 1908211905
>>1908167
И что, а на джаву еще больше, я к тому, что если в мухосрани кроме пыхи ничего нет, то тут у меня выбор аж глаза разбегаются.
>>1908168
Альтернативы думаю про ноду или питон сейчас, еще go все вокруг обсуждают.
Аноним 12/01/21 Втр 14:23:43 1908245906
>>1908165
Спасибо за совет.

>он - ну я плохо знаю, меня подучить нужно. Как сам к такому отнесешься?

Да, в таком ключе это даже звучит по тупому, чет я об этом даже и не думал. В общем, все понятно, надо брать себя в руки и ебашить, как в старые добрые, а то рили так и останусь в этой конторке. Еще раз спасибо, анон.
Аноним 12/01/21 Втр 14:34:49 1908249907
>>1908211
>думаю про ноду или питон сейчас, еще go все вокруг обсуждают
Очередной выбиратель что ли? Ну провыбираешь ещё пару лет - как определишься, так приходи. Не вижу смысла тебя уговаривать.
Аноним 12/01/21 Втр 14:41:03 1908257908
>>1908249
Да выбиратель, указал же что я вкатун и пришел узнать, стоит ли нуфагу имено на ваш стек прыгать. Потому что во всем западном интернете пишут, что пыха это путь в никуда, а вот у нас в снг наоборот, что пыха вечна и вообще анаговнет(c)
Аноним 12/01/21 Втр 14:57:02 1908273909
при регистрации хэшируется пароль,но в БД я его вижу.Это нормально?
Аноним 12/01/21 Втр 15:00:14 1908276910
>>1908273
Видишь хэш или сам пароль незашифрованный?
Аноним 12/01/21 Втр 15:02:43 1908278911
>>1908276
я натурально вижу пароль
Аноним 12/01/21 Втр 15:07:32 1908285912
>>1908278
Тогда не нормально
Аноним 12/01/21 Втр 15:12:44 1908287913
>>1908285
$hash=password_hash($password, PASSWORD_DEFAULT);
через это
Аноним 12/01/21 Втр 17:29:33 1908340914
>>1908257
>во всем западном интернете пишут, что пыха это путь в никуда, а вот у нас в снг наоборот, что пыха вечна и вообще анаговнет
И? Тебя смущает наличие у разных людей разного опыта и мнений или отсутствие собственного? А может ты пришёл сюда в ожидании того, что тут сидят свидетели ПХП, которые будут тебя агитировать за вступление в свои ряды и устраивать спецолимпиаду? Да всем насрать.

Тут люди учатся программировать веб в первую очередь, а пхп идёт, скорее, как первый язык. Никто тебе не мешает потом на ноду или го перейти - там ты тоже веб будешь писать по тем же принципам. Алсо чистый пхп почти никому не нужен - будешь ещё учить вёрстку, базы данных, жавускрипт, линуксы и чёрта лысого. Пхп тут процентов 20-30 будет из всего.
Аноним 12/01/21 Втр 18:56:02 1908453915
Подскажите где на проде применяется rabbit mq, какое у него основное применение? Просто, чтобы ставить задачи в очередь? Вот, например, в телеграм боте отправку сообщений через него реализовать норм?
Аноним 12/01/21 Втр 20:21:24 1908543916
>>1908453
>>какое у него основное применение?
Как я понимаю -какие нибудь потенциально тяжелые и долгие задачи разбивать на куски, и выполнять последовательно.
Аноним 12/01/21 Втр 22:25:39 1908674917
>>1908165
Анончик, целую тебя в писю!
Аноним 12/01/21 Втр 22:26:35 1908676918
>>1905327
Для меня это большая проблема, мне совсем не в кайф его учить, мне прям голова начинает болеть в процессе обучения.
Аноним 13/01/21 Срд 14:52:49 1909005919
сап, погромач. я в отчаинии. в начали недели дали таску по переносу товаров с одного сайта движок netcat на более менее норм хуйню тоже какой то cms-шоп но на основе ларки. и вот спустя два с половиной дня ебли я пришел сюда спросить совета у знающих анонов. суть такова: в каталоге имеется 13 категорий, в каждой из них по от n количеству разделов при этом с разными уровнями вложенности в основном от 3 до 5 и на разных соответственно находятся сами товары с ценниками и описаниями. как мне блять эту залупу переносить то?в самом этом неткаде есть экспорт товаров в csv и я могу их разгрузить на новый движок, но проблема в том что он мне позволяет забирать только по одному из подразделов и товаров (естественно без вложенностей). я так делал джва дня и в итоге даже одну категорию из 13 блять не перенес. сегодня вот полдня копался в базе в надежде составить нормальный sql запрос на выборку товаров и разделов с соответственной вложенностью и экспортнуть в csv чтобы хотя бы по одной категории загонять - но всплыли камни в виде того что там бд люто денормализована и все хранится прямо вообще в хаотичном порядке до сих пор гадаю как сайт то с такой структурой ворочается. категории, товары, разделы хранятся вообще в совершенно разных таблицах. я сейчас пытался получить по конкретной категории с использованием вот как раз 3 разных таблиц в итоге получил лишь порядка 30% того что мне надо. покопавшись выяснил что некоторые разделы хранятся в таблице с товарами, а некоторые товары хранятся в таблице с разделами.
так вот, анонсы, как поступать то? дальше колупать базу в надежде чет годное состряпать хотя нервы уже сдают, либо же писать парсер и самому всю инфу вытягивать при этом храня всю структуру вот четенько и так как надо но тут есть проблема - какой то говенный хостинг у заказчика что при определенном кол-ве запросов в час он блочит сайт нахуй и просит оплатить тариф по богаче, либо же забить хуй и дальше ручками переносить ? хотя думаю при такомм раскладе я до марта не закончу лол
алсо, сайт локально не получилось развернуть тк тут нужна какая то древняя блять версия пыхи с соответствующими функциями и коннектами из за чего я наебся и с этой хуйней тоже но в итоге ниче тупо не вышло и я смог ток локально бд у себя держать.
как поступать, анонче? уже охото послать и галеру и заказчика нахуй потому что заебло
Аноним 13/01/21 Срд 15:55:31 1909069920
>>1909005
Делай проще - запускай парсер и собирай базу в том виде, в котором тебе нужно.
Проблемы с хостингом это проблемы только заказчика. Если хочет чтобы ты в его БД ковырялся, то называй ему цену х5 - х10 от текущей и соответствующие сроки.

ИМХО канешн.
Аноним 13/01/21 Срд 16:08:57 1909075921
>>1909005
Перенос напрямую из БД одной CMS в другую это большой геморрой, как я знаю - там со структурой каждый извращается как может + плагины добавляют градуса неадеквата. Это ж не фреймворки, где чистые архитектурки и правильные нормализации для хипстеров, с чем удобно работать.
Аноним 13/01/21 Срд 18:10:23 1909172922
>>1909075
двачую, анонче
>>1909069
попробую так поступить ради выебонов перед начальством. хотя сам уже сейчас sql запросом длинным сбилдил таблицу как мне надо и задача выполнена по факту. но я помолчу - пусть заказчики с пмом погорят )))
Аноним 13/01/21 Срд 19:21:42 1909247923
cacatb.png 671Кб, 808x1108
808x1108
>>1909172
>пусть заказчики с пмом погорят
Типа как ты погорел за эти два дня? Всё првильно = если выгорать, то неодному, чтлб необидно было. хо-хо-хо
Аноним 13/01/21 Срд 19:22:11 1909249924
cacatb.png 671Кб, 808x1108
808x1108
>>1909172
>пусть заказчики с пмом погорят
Типа как ты погорел за эти два дня? Всё правильно - если выгорать, то не одному, чтоб необидно было.
хо-хо-хо
Аноним 13/01/21 Срд 19:23:26 1909251925
15403133764070.png 134Кб, 329x327
329x327
>>1909249
А писал, что не отправил сообщение. Абу - обманщик.
Аноним 13/01/21 Срд 19:58:03 1909279926
Можно как-то получить ключ из такого массива по классу?
const MODELS = [
1 => \App\Models\Huina,
2 => \App\Models\Zalupa
]
То есть models[1] выдаст хуйню, а мне нужно передав хуйню получить 1.
array_search не работает.
Аноним 13/01/21 Срд 20:37:20 1909304927
Пока я страдаю херней, делая сайт на Php, БОГИ уже во всю изучают JavaScript и херачат на нëм титанические сайты будущего.
Аноним 13/01/21 Срд 21:16:04 1909337928
А почему ваш php плох? По мне так это единственный язык, изначально сделанный для своих задач. Работа есть, фреймворки есть, время прилизало всё как надо. В чём проблема, почему мёртв-то?
Аноним 13/01/21 Срд 23:48:41 1909470929
>>1909304
Всё так.
Вот решил таки пристраститься к прекрасному spa, react. Попробовать, полакомиться.
Сыт по горло php шаблонизаторами.
Аноним 13/01/21 Срд 23:52:06 1909473930
>>1909337
Хз.
Пробовал golang пол года на продакшене. После него php показался вполне сносным языком
Аноним 14/01/21 Чтв 07:22:55 1909671931
>>1909279
$data = [
new \App\Models\Huina(),
new \App\Models\Zalupa(),
];
$data = array_filter($data, function ($model){
return $model instanceof\App\Models\Huina;
});

return array_keys($data);
Аноним 14/01/21 Чтв 10:09:02 1909705932
А большие IT-компании вообще юзают пхп? Или это лишь удел ашотовских веб-студий?
Аноним 14/01/21 Чтв 10:57:48 1909724933
Аноним 14/01/21 Чтв 10:59:12 1909726934
Кто- нибудь начал уже собесы проходить? Что спрашивают? К чему вообще готовиться?
Аноним 14/01/21 Чтв 13:00:49 1909793935
Аноним 14/01/21 Чтв 13:38:12 1909808936
14/01/21 Чтв 14:58:16 1909843937
>>1909724
Какие, например? В каких случаях?
Аноним 14/01/21 Чтв 15:17:22 1909856938
>>1909843
Порнхаб например или фейсбук с вк. Но у них своя редакция языка уже.
Так-то фича этого ЯП - быстрое создание приложений и прототипов. Нет смысла тратить сотни денег на кучу java\c++ программистов если можно быстро на пхп запилить и проверить гипотезу на практике.

Вообще около 80% сайтов на пхп работают.

ps если ты жаваскрипт-ребёнок, то учти, что на ноде делать бекенд это пиздец и дно. Жаваскрипт не для бекенда был создан - учи нормальный бек, а не срезай углы.
Аноним 14/01/21 Чтв 15:47:33 1909889939
>>1909856
Ну это понятно, но я же спрашиваю за крупные айти компании.
>ps если ты жаваскрипт-ребёнок, то учти, что на ноде делать бекенд это пиздец и дно.
Нет, я пыхер. Просто как-то приуныл с того, что у меня уже пол группы в епам джунами через курсы по джаве почти с нуля вкатились, а я все еще труп php ковыряю.
Аноним 14/01/21 Чтв 15:53:02 1909893940
>>1909889
Так не ковыряй пхп - учи джаву. Но, вангую, что там ты тоже не вкатишься потому, что даже в пхп не смог.
Дело не в языке, а в тебе.
Аноним 14/01/21 Чтв 16:59:56 1909932941
>>1909893
Да я и не жалуюсь. Пых и его ниша мне нравятся, за сам вкат я не особо беспокоюсь ( я на него еще не так много времени отдал ). Единственное что пугает - это перспективы.
Аноним 14/01/21 Чтв 18:05:27 1909984942
WJKh5rx.png 170Кб, 374x347
374x347
>>1849078 (OP)
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

CREATE TABLE `users` (
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `users` (`first_name`, `last_name`) VALUES
('Mark null', NULL),
('Jenna', 'undefined'),
('0', NULL),
('Peter undefined', 'null');

Нужен скирпт для очискти датабазы. first_name и last_name колонны имеют некорректные значения. Колонна first name имеет значения такие как 'Mark null' или 'Lisa undefined', колонна last name имеет значения такие как 'undefined'. Слова вроде null и undefined надо убрать.

Я ничего не смыслю в php и очень тупой, но задачку надо решить помогите плз~~
Аноним 14/01/21 Чтв 18:44:32 1910029943
image.png 522Кб, 500x367
500x367
Какие вообще курсы есть, кроме вашего? По js, например, у Кантора заебись учебник. Есть что-нибудь подобное по пыхе, может видеокурсы какие-то?
Аноним 14/01/21 Чтв 21:07:55 1910144944
>>1910029
Сам язык освоить не сложно. Тут практически любая литература подойдёт с примерами и задачами.

Проектирование ПО, алгоритмы, фрэймворки — тут одними видеоуроками не обойтись.
Аноним 14/01/21 Чтв 21:12:21 1910152945
Нужно ли мне дальше пилить самопальный сайт,который обосрали гуру из Б и перейти на лару?
Аноним 14/01/21 Чтв 22:11:49 1910214946
>>1910152
Работать идти, а не страдай хуйней
Аноним 14/01/21 Чтв 22:14:29 1910216947
>>1910152
Думаешь все сразу шедевры лепят? Ты б видел какое я говно поначалу делал.

1. Меньше слушай мнение других и больше сам глазами смотри - кто, что и как делает.
2. Всегда доводи до логического конца начатое. Даже если говно получилось.
Аноним 15/01/21 Птн 04:54:58 1910427948
>>1910152
А если тебя обосрут, тоже себя бросишь?
>>1910214
Не ну ты умный, а если он программистоммакакой работать хочет?
Аноним 15/01/21 Птн 05:49:46 1910434949
>>1910029
Laracasts пыха, ооп, ларавел
Елисеев пыха, ооп, фреймворки
Otus по самой пыхе и по фреймворкам
Аноним 15/01/21 Птн 06:00:05 1910436950
>>1910152
В образовательных целях полезно написать без фреймворка.
В работе же чаще используют фреймворки, ту же лару.
Ты в любом случае придешь к фреймворку, своему или популярному
Аноним 15/01/21 Птн 08:15:16 1910452951
>>1909984
UPDATE `users` SET first_name=(SUBSTRING_INDEX(first_name,' ',1)), last_name=(CASE WHEN last_name IN ('undefined', 'null') THEN NULL END)
Аноним 15/01/21 Птн 08:17:14 1910453952
>>1910452
last_name вроде затрется даже если last_name не будет IN ('undefined', 'null'), нужен ELSE
Аноним 15/01/21 Птн 09:47:35 1910476953
>>1910216
Этот анон прям по делу говорит. Слушать вообще никого не нужно.
>>Всегда доводи до логического конца начатое. Даже если говно получилось.
Люто двачую, когда начинаешь доводить до финала - лезет всякая мякотка. Детали которые хуй пойми как реализовывать.
Аноним 15/01/21 Птн 10:37:40 1910487954
фреймворки строятся на require?
Аноним 15/01/21 Птн 10:50:55 1910490955
>>1910487
Реквайрится автолоадер в индексный файл. А дальше через use указываются зависимости в файле
Аноним 15/01/21 Птн 10:52:18 1910491956
Аноним 15/01/21 Птн 10:53:48 1910492957
>>1910490
Наверное его интересует как вьюшки рендерятся в индексный файл.
Аноним 15/01/21 Птн 10:57:05 1910493958
>>1910492
меня интересует как разные куски кода соединяются,особенно если кусков очень много и они иногда даже пересекаются
Аноним 15/01/21 Птн 11:06:44 1910494959
Начал изучать ооп в пхп. Интересует такой вопрос. В некоторых языках, как я понял, объект класса и экземпляр класса - не одно и тоже. В пхп же это просто синонимы или же я тупой ?
Аноним 15/01/21 Птн 11:07:29 1910495960
>>1910493
Почитай про composer и пространства имён.
Аноним 15/01/21 Птн 11:08:51 1910496961
Аноним 15/01/21 Птн 11:08:53 1910497962
>>1910495
а композер тут причем?
Аноним 15/01/21 Птн 11:12:14 1910500963
>>1910497
Обычно его используют для подключения кусков кода, и он же кеширует их, в случае пересечения.
Аноним 15/01/21 Птн 11:26:40 1910507964
>>1910493
В yii через require рендерятся страницы, это точно. Как до рендера работает лень копаться. Думаю по роуту вызывается и выполняется php файл, в нем через пространства имен идет обращение к другим файлам. Но это уже работа php а не фреймворка.
Аноним 15/01/21 Птн 13:07:57 1910565965
>>1910494
>В некоторых языках, как я понял, объект класса и экземпляр класса - не одно и тоже.

Лол
Аноним 15/01/21 Птн 16:32:39 1910767966
>>1910494
>объект класса
Вспомни пожалуйста книжку или страницу, где ты прочитал это словосочетание.
Аноним 15/01/21 Птн 16:44:03 1910774967
>>1910767
Я тоже встречал как-то "объект класса Жираф" или "экземпляр класса Табуретка". Чё такого?
Может читаешь мало?
Аноним 15/01/21 Птн 19:35:54 1910984968
>>1910452
что если undefined первый
Аноним 15/01/21 Птн 19:51:11 1911006969
>>1910452
UPDATE `users`
SET first_name = REPLACE(REPLACE(REPLACE(REPLACE(first_name, " undefined", ""), " null", ""), "null ", ""), "undefined ", "");

UPDATE `users` SET last_name=NULL WHERE (last_name IN ('undefined', 'null'));

Вот сделал решение, как избавиться от REPLACE ов?
Аноним 15/01/21 Птн 19:54:49 1911009970
>>1911006
как проверить если строчка после реплейсов осталась пустой, тогда вставить NULL?
Аноним 15/01/21 Птн 20:02:22 1911019971
>>1911006
UPDATE `users`
SET first_name = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(first_name, " undefined", ""), " null", ""), "null ", ""), "undefined ", ""), "null", ""), "undefined", "");
UPDATE `users` SET last_name=NULL WHERE (last_name IN ('undefined', 'null'));

Даже вот так
Аноним 15/01/21 Птн 20:03:44 1911021972
Аноним 15/01/21 Птн 20:07:17 1911026973
>>1911021
UPDATE `users`
SET
first_name = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(first_name, " undefined", ""), " null", ""), "null ", ""), "undefined ", ""), "null", ""), "undefined", "")
, last_name= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(last_name, " undefined", ""), " null", ""), "null ", ""), "undefined ", ""), "null", ""), "undefined", "")

Вот ещё лучше, какой ещё третий апдейт дай в одну строчку плз
Аноним 15/01/21 Птн 20:08:15 1911031974
Аноним 16/01/21 Суб 00:09:36 1911342975
>>1911031

А у вас только SQL ?
Может лучше подготавливать данные на уровне программного кода ?
Аноним 16/01/21 Суб 02:25:22 1911439976
>>1911342
Двачую - лучше сильно не загоняться на SQL, имея возможность нормально писать логику. Особенно делать такой трэш >>1911026
Онли чтение и запись в нужном виде.

Вообще лучше сильно не загоняться по этому делу иначе получится так, что на проекте 50% логики на SQL и 50% на пхп, что есть дерьмо и размазывание функционала. В прошлом десятилетии этого наелись.
Это имеет смысл если нужно разово что-то такое из БД взять или с таблицами как-то поработать.

ИМХО канешн.
Аноним 16/01/21 Суб 08:55:56 1911496977
Гутен Морген, майн кляйне комраден!
Эс гибт эйн проблем, дас их нихт ферштехен унд дас их нихт ферштехен кан. Их браух хилфе!
/ Дан массив из n чисел, поменять местами наибольшего и наименьшего элемента массива и вывести на экран.
Если есть две или больше наименьший, то выбрать элемент ближе к левому,
а с наибольшим наоборот ближе к правому,
а если все элементы одинаково вывести на экран 'everyone is equal',
а если у массива единственный элемент, то вывести на экран этого же элемента.
simple input:
8 11 7 8 5 3 4 9 17 27 45 1 97 81 1004 74
simple output:
8 11 7 8 5 3 4 9 17 27 45 1004 97 81 1 74
Sample Input 3:
1 -7 8 7 9 7 -7 9 8
Sample Output 3:
1 9 8 7 9 7 -7 -7 8
/
<?php
$array = stream_get_line(STDIN, 1024, PHP_EOL);
$arr = explode(' ', $array);
$a = max($arr);
$b = min($arr);
if (count($arr) == 1)
echo $a;
elseif ($a == $b)
echo "everyone is equal";
else {
foreach ($arr as &$value) {
if ($value == $a) echo $b . " ";
elseif ($value == $b) echo $a . " ";
else
echo $value . " ";
}
}
?>
Аноним 16/01/21 Суб 14:20:44 1911717978
За что не любят CMS-ки типа ВордПресса?
Аноним 16/01/21 Суб 15:12:07 1911754979
Аноны, пытаюсь разобраться с пагинацией в eloquent.
Прожект на slim, в качестве ORM там eloquent.
В зависимости подключилilluminate/pagination
Аноним 16/01/21 Суб 15:17:27 1911760980
>>1911754
бля, случайно половину отправил.
И в файле модели для которой нужна пагинация прописал
use Illuminate\Pagination;
use Illuminate\Pagination\Paginator;

после этого для модели становится доступен метод paginate() ( я кстати так и не понял как это работает. Типа в Model от которого наследуется мой класс Модели елоквен где то захардкодены эти классы? ).
Который работает - если указать paginate(5) - он выдаст первые пять записей.
Но я чет не пойму как в paginate передать номер текущей страницы.
Аноним 16/01/21 Суб 16:52:41 1911923981
Где можно взять готовый интернет магаз? Мне локально развернуть интеграции потренить.
Аноним 16/01/21 Суб 17:26:57 1911985982
WJKh5rx.png 170Кб, 374x347
374x347
>>1911342
>>1911439
извните я очень тупой не пхп не sql отродясь не видал
UPDATE `users`
SET
first_name = TRIM(REPLACE(REPLACE(REPLACE(first_name, "undefined", ""), "null", ""), " ", " "))
, last_name = TRIM(REPLACE(REPLACE(REPLACE(last_name, "undefined", ""), "null", ""), " ", " "));
так сделал
Аноним 16/01/21 Суб 17:46:32 1912014983
>>1911985
Перекатывайся на джаву
Аноним 16/01/21 Суб 17:46:38 1912015984
>>1911717
1. Потому, что эта CMS-ка устарела лет на 10 в технологическом плане и имеет здоровый такой технический долг.
2. Изначально она для блогов, а на ней пытаются лепить всё подряд.
3. На ней почти всегда работают низкоквалифицированные специалисты и после них разгребать никому не хочется.
4. Лапша вместо кода вообще везде - в шаблонах, в плагинах, в темах, в ядре.
5. Зачастую очень хреновая документация плагинов.

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

>>1911923
>готовый интернет магаз
Готовый самому делать надо.
Аноним 16/01/21 Суб 18:28:23 1912034985
1.jpg 57Кб, 665x437
665x437
Братишки, поясните за работу с массивами из гайда.
Для чего перед началом цикла, в котором выбирается рандомное значение из массива, мы вводим переменную $name с пустым значением, если можно ввести переменную в теле цикла? Без строчки с вводом переменной до цикла все работает, проверял.
Алсо, подскажите, пожалуйста, где обмазаться простыми задачками, чтобы закрепить полученные из тутора знания?
Аноним 16/01/21 Суб 18:38:09 1912040986
>>1912034
>$name с пустым значением
Если мы её не введём на 14 строке, то на 21 получается, что мы обращаемся к несуществующей переменной.
Аноним 16/01/21 Суб 18:47:54 1912045987
Я не понял прикола функц sort для массивов
Аноним 16/01/21 Суб 18:49:07 1912047988
Аноним 16/01/21 Суб 18:50:05 1912048989
>>1912047
ну есть сортировка по ключам,по значениям
а эта?
Аноним 16/01/21 Суб 18:53:08 1912049990
>>1912048
я так понял,это как по значению,но на старые ключи забивается болт?
так?
Аноним 16/01/21 Суб 18:54:29 1912051991
Аноним 16/01/21 Суб 19:08:08 1912060992
1.jpg 18Кб, 373x369
373x369
>>1912040
Но мы ведь ее создаем в теле цикла и сразу же выполняем над ней действие циклично. Что не так?
PHP, насколько я понимаю, по умолчанию несуществующей переменной присваивает значение "0". Бля, у меня проблемы с выражением мысли
Например, пикрелейт. Дописывая $name++, переменная $name будет дальше увеличиваться на единицу, с переменной можно выполнять действия, и т.д.
Понятно, если бы к существующей переменной $name нужно было бы добавлять слоги, но по условиям задачи мы составляем $name из ничего. В чем подводные? И почему лучше так не делать? Моветон?
Аноним 16/01/21 Суб 19:21:08 1912069993
>>1912060
>создаем в теле цикла и сразу же выполняем над ней действие
Я думаю, что тебе сперва стоит выучить синтаксис языка - цикл идёт ниже.

>мы составляем $name из ничего
>почему лучше так не делать?
1.
Потому, что нотисы будут: https://ideone.com/n5JN94

2.
Плохая практика - если привыкнешь, то в других языках может вообще не работать такое в большинстве компилируемых языках.
Аноним 16/01/21 Суб 19:32:50 1912080994
>>1912069
>Я думаю, что тебе сперва стоит выучить синтаксис языка - цикл идёт ниже.
Не, я говорил, что в моем случае, когда переменная не указывается до цикла, мы создаем ее в цикле.
>Плохая практика - если привыкнешь, то в других языках может вообще не работать такое в большинстве компилируемых языках.
Во! Спасибо. Жаль, что нет рядом никого, кто бил бы по рукам, когда делаю рабочий, но неправильный код.
Аноним 16/01/21 Суб 19:41:50 1912091995
>>1912080
>мы создаем ее в цикле
Тогда ты, получается, обнуляешь\ставишь дефолтным её значение каждый проход. Переменная создаётся только один раз - когда ты впервые указываешь ей значение.
Сама суть переменных, по простому, в программировании вообще - это указатель на блок памяти, куда ты будешь писать какие-либо данные. Вместо $name можно было бы писать что-то вроде 0xff334ff223a и писать туда данные на заре так и делали, но это нечитабельно чуть более чем полностью - через месяц быстрее заново написать будет, чем разбирать - что в них хранится в ходе работы.
А так - ты его указал один раз и твой скрипт запомнил его, и по названию понятно что в ней лежит.

>Жаль, что нет рядом никого, кто бил бы по рукам
Такое обычно денег стоит. Это азы и никому не интересно их объяснять - я б тоже мимо прошёл, но мне делать нех в этот субботний вечер.
Аноним 16/01/21 Суб 19:42:49 1912092996
пост инкремент-это отложенное увеличение?
выводим текущее значение а уж потом увеличиваем при пов торном вызове?
Аноним 16/01/21 Суб 19:44:00 1912095997
>>1912091
Спасибо, Анонче. Добра тебе!
Аноним 16/01/21 Суб 19:59:12 1912119998
какой в инете есть популярный форум по пхп?
Аноним 16/01/21 Суб 20:10:50 1912130999
Удалённая работа Аноним 17/01/21 Вск 04:38:07 19124061000
Аноны, сап. Есть вопрос, ответа жду только от шарящих в этой теме, так как мне нужен верный ответ.

Я долго думал, как построить свой вопрос правильно, чтоб он прозвучал нормально, но лучше спрошу как есть:

Хочу устроиться джуниором(!) на удалённую работу(!)
Вопрос: есть ли у меня хоть какие-то шансы сделать это неофициально? Говорю как есть: дабы к моим документам не касались левые людиналоговая, мвд, и прочие ребята
Чисто, и как есть: я выполняю свою работу, работодатель мне выплачивает заработную плату на тот банковский счёт, который я укажу. Все довольны, все в расчёте.
Как происходит трудоустройство на удалённую работу вообще? Везде официально оформляют?
Хорошо, а если я, например - захочу поработать на компанию в Украине/Беларуси - меня так же будут официально оформлять?
Чисто опираясь на свой опыт сугубо: какие у меня шансы попасть пыхо-джуном сразу на удалёнку, да ещё и без официального оформления. Фриланс не предлагать, это важно!
Заранее благодарю за ответы. Больше мне не у кого спросить.
Аноним 17/01/21 Вск 07:15:56 19124361001
>>1912406
>Хочу устроиться джуниором(!) на удалённую работу(!)
И тут сразу мимо. Джуны на удаленке не нужны

>есть ли у меня хоть какие-то шансы сделать это неофициально?
Неофициально устроиться можно. Там уж как договоритесь с работодателем

>Как происходит трудоустройство на удалённую работу вообще? Везде официально оформляют?
ТК РФ (серая и белая схемы), ГПХ, ИП, в черную (без бумаг).Чаще всего устраивают по ТК РФ или как ИП.

>Чисто опираясь на свой опыт сугубо: какие у меня шансы попасть пыхо-джуном сразу на удалёнку, да ещё и без официального оформления.
Практически нулевые. На удаленке работодателю не нужен чел, за которым нужно постоянно следить, учить его и переделывать за ним.
Аноним 17/01/21 Вск 09:04:52 19124441002
Запилите перекат
Аноним 17/01/21 Вск 13:01:32 19125211003
1.jpg 72Кб, 774x491
774x491
Ребят, помогите понять задачу про палидром из гайда. Вернее, логика поиска палиндрома мне понятна, но я посыпался на цикле, пикрелейт.
Хочу взять первую и последнюю букву из строки, потом вторую и вторую с конца и т.д. Почему хитрая пыха в первом проходе принимает $i и -$i за ноль, а во втором $i=1, -$i=0; в третьем $i=2, -$i=1 и т.д.? ЧЯДНТ?
Спасибо
Аноним 17/01/21 Вск 13:04:05 19125261004
>>1912521
Вернее
первый: $i=0
-$i=0
второй $i=1
-$i=0
третий $i=2
-$i=-1
самофикс
Аноним 17/01/21 Вск 14:38:51 19126881005
>>1912521
-0=0

На первой итерации ты дважды берешь 1ую букву
Аноним 17/01/21 Вск 15:01:33 19127231006
>>1912406
Суетись. Человек потрясающе эффективен когда хочет. Пинками выбивай из себя выученную беспомощность.
На фриланс пиздуй
Аноним 17/01/21 Вск 16:22:28 19128641007
>>1907427
Спасибо большое, анончик. Очень сильно помог мне!
Аноним 17/01/21 Вск 20:01:09 19132141008
>>1906707

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

>>1912092

Нет. Разница между пре-инкрементом и пост-инкрементом в том, что вернет инкремент:

$a = $x++; // В $a старое значение до увеличения
$b = ++$x; // В $b новое значение

Если ты просто пишешь $x++ или ++$x, не используя результат, то разницы никакой нету.

>>1912060

У тебя пример неправильного кода. При его выполнении выводится нотис: "Undefined variable: name". Так как $name ++ эквивалентно $name = $name + 1 и при вычислении $name + 1 происходит обращение к несуществующей переменной. Нужно поставить в начале $name = 0; чтобы ошибки не было.
Аноним 17/01/21 Вск 20:01:45 19132171009
>>1912049

sort() это сортировка по значению, но ключи теряются, и проставляются заново начиная с 0. Есть сводная таблица с отличиями функций сортировок: https://www.php.net/manual/ru/array.sorting.php

>>1911923

Есть бесплатные движки магазинов вроде Magento, Opencart, погугли.

>>1911760

Возможно, номер страницы надо преобразовать в offset/limit и передавать их.

>>1911496

Найти наибольший (и наименьший) элемент можно так:

максимум = первый элемент;
перебираем все элементы в списке:
- если текущий больше максимума, то максимум = текущий элемент.

Аноним 17/01/21 Вск 20:02:13 19132191010
>>1909984

Здесь можно было бы применить регулярки. UPDATE ... SET x = REGEXP_REPLACE(x, 'undefined|null', '')

>>1910494

Это синонимы. Возможно, в некоторых языках "объектом класса" (class object) называют объект, содержащий информацию о классе, оттого путаница.

>>1910493

Писать руками reqiure утомительно. Обычно используется автозагрузка файлов с классами, описано тут: https://github.com/codedokode/pasta/blob/master/php/autoload.md

>>1908453

Он используется для организации очередей задач. Это нужно, чтобы:

1) сократить время отдачи ответа

Допустим, нам надо при добавлении товара на сайте перестраивать каталог и это занимает 30 секунд. Если мы будем перестраивать каталог прямо в скрипте, то пользователь будет долго ждать ответа. Вместо этого мы кидаем в очередь задание на перестройку каталога и быстро возвращаем пользователю ответ, что все ок. Фоновый скрипт-рабочий разгребет очередь и перестроит каталог.

Или, у нас есть сайт вроде Ютуба и нам надо перекодировать добавляемые пользователем видео. Это может занимать по 10 минут, естественно, тут только очередь задач и поможет.

2) ограничить нагрузку на БД (или на какую-то систему)

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

Или, например, надо при добавлении товара переслать этот товар в какую-то внешнюю систему. Если мы начнем все это делать
прямо в скрипте добавления, то мы сильно нагрузим эту систему (а пользователи будут ждать ответа). Опять же, очередь тут поможет ускорить отдачу ответа и ограничить нагрузку на внешнюю систему (товары будут посылаться в нее по одному по очереди).
Аноним 17/01/21 Вск 20:02:58 19132211011
>>1907665

Считается, что у CDN много точек присутствия и к пользователю он может быть ближе (но по факту, там могут быть точки в зарубежных городах, которые для российской аудитории бесполезны). Из минусов - нужна возня с выгрузкой файлов на CDN при деплое и нужно платить за CDN.

>>1906782

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

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

- до текущей позиции есть точка, или другой знак
- справа от текущей позиции нет точки или другого знака

То есть тут надо использовать утверждения, смотрящие назад и вперед.

>>1906942

Тоже решено верно.
Аноним 17/01/21 Вск 20:03:51 19132231012
>>1906758

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

При ошибке желательно показывать не просто текст ошибки, а форму с заполненными полями. Тут описано, как это сделать: https://github.com/codedokode/pasta/blob/master/forms.md

Экранирование (htmlspecialchars) надо делать при выводе (а не при сохранении в БД), как описано тут: https://github.com/codedokode/pasta/blob/master/security/xss.md

Код желательно разделить на функции: отдельно соединение с БД, отдельно валидация, отдельно сохранение в БД.

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

>>1906744

Нужно хеширование паролей.

>>1906640

Обычно в вебе HTML генерируется через шаблонизатор: https://github.com/codedokode/pasta/blob/master/php/templates.md А в шаблонизаторе переменные есть.

Аноним 17/01/21 Вск 20:04:12 19132241013
>>1905545

> mb_substr($string, $stringPos - 30, 30);

Тут есть риск, что если $stringPos < 30, то получится отрицательное число и будет взят кусок не оттуда (а с конца строки). Это видно в выводе программы:

> Допущена ошибка: .... Пикрандом а так. [Жывотные] Хочу принести тебе прохладную... (жи/ши пиши через И)

> [а-яёА-ЯЁ0-9]+\s+а\s+

Здесь после "а" лучше поставить \b, иначе не сработает, если после "а" идет запятая.

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

>>1904705

Есть ошибка: число 71000 печатается как "семьдесят один тысяча рублей".

> $numberLast2Digits == 11 || $numberLast2Digits == 12 || $numberLast2Digits == 13 || $numberLast2Digits == 14 || $numberLast2Digits == 15 || $numberLast2Digits == 16 || $numberLast2Digits == 17 || $numberLast2Digits == 18 || $numberLast2Digits == 19

Это можно было бы заменить на $last2Digits >= 11 && $last2Digits <= 19.

> (floor(($number - (floor($number / 1000) 1000)) / 100)) 100;

Сотни можно посчитать как floor($number / 100), непонятно зачем так сложно.

> $str = "ноль";
Можно было сразу сюда дописать "рублей", чтобы не делать вызов функции inclineWord().

> if($thousandsDigits == 1 || $thousandsDigits == 2){
> $thousandsWords = smallNumberToText($thousandsDigits, 1);

Вообще, по задумке эту проверку должна была делать функция smallNumberToText. То есть мы передаем ей число и род (мужской, женский), а она сама определяет, какую форму числа брать. В твоем решении 71000 выводится неправильно.
Аноним 17/01/21 Вск 21:24:38 19133951014
>>1913223
>В базу надо класть не пароль в открытом виде, а его соленый хеш.
но пароль пущен через хеширование,не?
Аноним 17/01/21 Вск 22:00:14 19134711015
>>1913395
Соли добавь - одного хеша мало.
Аноним 17/01/21 Вск 22:10:21 19134771016
>>1912688
Хуёво быть тупым и невнимательным. Спасибо, Анончик.
Решил через mb_substr ($text, -$i-1, 1) , но это какие-то костыли, не? Еще вижу вариант в создании двух циклов. Один с начала слова, второй с конца. Перед циклами создать два пустых массива, а в цикле заносить в массив по одному символу из $text. Затем навернуть ещё один цикл, в котором будут сравниваться элементы обоих массивов.
Ещё вот какой вопрос: я использую str_replace (" ", "", $text) для удаления пробелов в $text. А что если, предположим, текст содержит знаки препинания, перенос строки и т.д.? Каждый раз ручками прописывать str_replace для каждого символа?
Аноним 17/01/21 Вск 22:29:49 19134881017
>>1913477
>Решил через mb_substr ($text, -$i-1, 1) , но это какие-то костыли, не?
Подогнал индекс - вполне себе нормальное решение

>А что если, предположим, текст содержит знаки препинания, перенос строки и т.д.? Каждый раз ручками прописывать str_replace для каждого символа?
Регуляркой попробуй
Аноним 17/01/21 Вск 22:36:13 19134911018
Аноним 18/01/21 Пнд 06:01:55 19138131019
15891342752853.jpg 2270Кб, 1920x1080
1920x1080
>>1913221
>могут быть точки в зарубежных городах, которые для российской аудитории бесполезны
Спасибо.
Аноним 18/01/21 Пнд 10:11:27 19138921020
>>1913471
В руководстве написано,что не нужно
Все автоматом
> Настоятельно рекомендуется использовать автоматическую генерацию соли. Данная функция самостоятельно создаст хорошую соль, если вы не будете ей мешать подсовывая свою.

Как было замечено выше, опция salt была объявлена устаревшей в PHP 7.0 и будет вызывать соответствующее предупреждение. Поддержка ручного задания соли может быть удалена в более новых версиях.
Аноним 18/01/21 Пнд 16:05:53 19141451021
>>1913395
>>1913892
Солёный хэш + соль у тебя в переменной $hash, а в датабазу ты загружаешь просто пароль $password.
password_verify нужен не при регистрации пользователя, а когда кто-то хочет зайти в свой аккаунт.
Аноним 18/01/21 Пнд 17:20:58 19142021022
Снимок экрана ([...].png 143Кб, 1366x768
1366x768
>>1914145
>>1914145
ты прав,я допустил логическую ошибку
переделал
Аноним 18/01/21 Пнд 18:03:06 19142671023
>>1914202
а там где bindparam можно заменить ассоц массивом?
Аноним 18/01/21 Пнд 19:48:30 19144351024
я не осилил проверку логина и хэшированого пароля
Аноним 18/01/21 Пнд 20:27:03 19144781025
Снимок экрана ([...].png 121Кб, 1366x768
1366x768
короче,помогите правильно сделать
Аноним 18/01/21 Пнд 20:35:46 19144881026
>>1914478

1) выбираешь из БД по логину хеш пароля
2) функцией password_verify или как-то так проверяешь пароль на правильность
Аноним 18/01/21 Пнд 20:46:10 19145231027
>>1914478
Из базы выбирай только по имени(логину), а не связке логин-пароль. Пароль уже на втором этапе проверяй - когда у тебя пользователь с данными из базы пришёл.
Аноним 18/01/21 Пнд 20:47:21 19145261028
>>1914488
>>1914523

логически это я прекрасно понимаю,но с реализацией пиздец

Аноним 18/01/21 Пнд 20:55:12 19145361029
>>1914526
>реализацией пиздец
1. Посылаешь запрос в бд на получение всех данных пользователя по логину
2. Если результат не пустой, то проверяешь пароль через password_verify, подставляя туда полученный из формы пароль с одной стороны и хеш пользователя из бд с другой
3. Если возвращает true, то ставишь юзеру сессию

Как-то так алгоритм выглядит.
Аноним 18/01/21 Пнд 21:35:13 19145671030
Снимок экрана ([...].png 127Кб, 1366x768
1366x768
выбивает вариант неправильно
Аноним 18/01/21 Пнд 21:43:26 19145741031
>>1914567
Ну значит хеши не совпадают, очевидно.
Аноним 18/01/21 Пнд 21:51:35 19145841032
>>1914574
если отбросить код с верификацией пароля,то он находит точный хэш

Аноним 18/01/21 Пнд 21:55:50 19145901033
>>1914584
Возможно пароль неправильно хешируешь.
Аноним 19/01/21 Втр 10:07:08 19148571034
>>1914202
>>1914567
password_hash() должен возвращать строку в 60 символов, но в базе видно строку намного короче. Какой допустимый размер у поля password? Если он меньше, чем 60 символов, то sql может, в зависимости от настроек, выдавать ошибку или сохранять обрезанную строку.
Аноним 19/01/21 Втр 10:11:50 19148601035
Что должен уметь php программист на ларе, чтобы получать 120к? То, что лару он должен знать - это понятно. Просто вакансии сильно отличаются по требованиям и такое ощущение, что их как-то на похуй составляют.
Аноним 19/01/21 Втр 10:22:42 19148711036
Вопрос.png 6Кб, 678x371
678x371
Хочу сделать так, чтобы в общем диве можно было хранить большое количество внутренних дивов, а показывало только 3. Дальше хочу, чтобы кнопка справа передвигала див, то есть при нажатии должно показывать див номер 2, 3, 4 и так далее. Знаю, что для этого вроде нужен Джаваскрипт, но я не знаю, что искать. Прошу помочь.
Аноним 19/01/21 Втр 10:28:24 19148751037
Аноним 19/01/21 Втр 10:38:53 19148841038
>>1914860
>Что должен уметь php программист на ларе, чтобы получать 120к?
Отвечу на первую часть вопроса, т.к. зп зависит не от того, сколько ты знаешь, а от того в какую фирму и идешь и как себя продашь.

Надо иметь в кармане пару законченных проектов на ларе. И желательно применить различные плюшки фреймворка в этих проектах.
Из мастхева:
- Контроллеры, елоквент модели, релейшены, квери билдер, роутинг, шаблонизатор блейд
- DI - принципы работы, как подключать в проект сторонние либы

Полезно будет изучить другие фишки вроде консольных команд, шедалера, полиморфных связей и т.п.
Аноним 19/01/21 Втр 10:53:33 19148941039
>>1914884
>зп зависит не от того, сколько ты знаешь, а от того в какую фирму и идешь и как себя продашь

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

Спасибо за развёрнутый ответ.
Аноним 19/01/21 Втр 11:04:31 19149051040
>>1914894
>Не могу разобраться, почему вот именно столько они предлагают и от чего отталкиваются
От клиентов фирмы зависит их бюджет.
Региональные фирмы предлагают зп чуть больше, чем в соседнем супермаркете кассиром.
Далее идут фирмы, работающие на дс/зарубеж, у которых филиал в регионе.
В дсах уже на порядок больше зп.
И в топе работа на белых господ.
Аноним 19/01/21 Втр 12:09:30 19149741041
>>1914884
Это же даже не требования на trainee за бесплатно, а основы основ уровня базового синтаксиса.
Аноним 19/01/21 Втр 12:11:07 19149781042
Снимок экрана ([...].png 129Кб, 1366x768
1366x768
>>1914857
Спасибо,но эту ошибку я сам нашел вчера..
Теперь ВРОДЕ все работает
проверь пожалуста код
Аноним 19/01/21 Втр 12:13:43 19149801043
Аноним 19/01/21 Втр 12:19:07 19149861044
Снимок экрана ([...].png 132Кб, 1366x768
1366x768
теперь так
Аноним 19/01/21 Втр 12:45:37 19150321045
Кстати,а почему после очищения таблицы,когда делаешь новую запись,номер id не обнуляется,в моем случае уже 17
Аноним 19/01/21 Втр 13:36:19 19151331046
>>1914986
Зачем к логину добавлять символ переноса строка?
Аноним 19/01/21 Втр 13:36:38 19151341047
Аноним 19/01/21 Втр 13:48:54 19151451048
>>1915133
осталось от чернового варианта,когда пытался вывести переменные.


Аноним 19/01/21 Втр 13:59:01 19151511049
$result = $sth->fetch();

foreach($result as $row)
$login=$row;
$hash=$row;
а такой вариант убог?
Аноним 19/01/21 Втр 13:59:30 19151531050
>>1915145
Еще не понятно, зачем извлекать логин и хеш пароля в цикле while.
Так то ты получаешь запросом одну строку из таблицы и с ней работаешь.
Аноним 19/01/21 Втр 14:00:32 19151541051
Аноним 19/01/21 Втр 14:04:51 19151561052
>>1915153
ну так фетч извлекает все в одну переменную
а мне нужно его содержимое,для проверки хэша и пароля.
и таким макаром все примеры из гугла
Аноним 19/01/21 Втр 14:07:51 19151621053
>>1915153
или ты предлагаешь сразу обратиться к невидимому массиву?
Аноним 19/01/21 Втр 14:11:27 19151641054
>>1915162
$result = $sth->fetch();
$login=$row['login'];
$hash=$row['password'];

Вот что я имел в виду.
В твоем коде много лишних телодвижений.
Аноним 19/01/21 Втр 14:11:52 19151651055
>>1915164
$row = $sth->fetch();
$login=$row['login'];
$hash=$row['password'];
fix
Аноним 19/01/21 Втр 14:16:28 19151711056
>>1915165
Эм,это мне менее очевидно
Аноним 19/01/21 Втр 14:21:11 19151721057
$row = $sth->fetch();
$login=$row['name'];
$hash=$row['password'];

if($login==$name )
{
if (password_verify($password,$hash )) {
echo 'Welcome';
} else {
echo 'Fuck off';
}

}else{
echo"FUCK OFF!";
}
$sth = null;
так?
Аноним 19/01/21 Втр 14:37:55 19151811058
>>1914978
На 18 строке какая-то содомия у тебя и неправильно логику написал. Ты используешь логическое И, тогда как там надо логическое ИЛИ. Т.е. не если пустой логин И пустой хеш, а если пустой логин ИЛИ(or) пустой хеш. Гугли таблицы истинности, которые непонятно зачем проходят ещё в школах и их все забывают.
Сам хеш лучше проверять не вместе с логином, а на 20 строке через ту самую ИЛИ.

А что за детсад с этим 'fuck off' тебе 10 лет что ли? Пиши туда нормально хотя бы: логин или пароль не верны. Это важно - писать именно так чтобы исключить возможность подбора пароля по логину.
Аноним 19/01/21 Втр 14:39:03 19151821059
>>1915181
этот пик не рабочий,я ниже писал об этом
Аноним 19/01/21 Втр 14:43:33 19151831060
Аноним 19/01/21 Втр 14:47:06 19151851061
Почему js тред такой популярный, а тут сидят полтора дровосека?
Аноним 19/01/21 Втр 14:50:12 19151861062
>>1915181
почему ИЛИ,если оба значения должны быть верными для дальнейшего исполнения?
Аноним 19/01/21 Втр 14:52:17 19151871063
вот так
а если имя не верно то
>Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\app\login.php on line 13

Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\app\login.php on line 14
В доступе отказано
Аноним 19/01/21 Втр 14:52:33 19151881064
Снимок экрана ([...].png 117Кб, 1366x768
1366x768
Аноним 19/01/21 Втр 14:57:26 19151941065
>>1915185
Прочекай кол-во вак на жс и на пыху.
Ну и на бекенде есть альтернативы, а на фронте только жс.
Аноним 19/01/21 Втр 14:58:46 19151961066
>>1915186
Тебе достаточно проверить пустоту одного из параметров: логин, пароль. Если пуст один из них - выдаешь ошибку. Нет смысла проверять второй.
Аноним 19/01/21 Втр 15:05:02 19152071067
>>1915186
>>1915196
Так называемый fail fast.
Проверяем условие провала. В данном случае, ты же не залогинишь человека без логина? Неважно, дал ли он пароль, если нет логина.
Соответственно мы проверяем, дал ли человек логин, если нет -
сразу шлем нафиг.
В коде как-то так выглядит:

if (emtpy($login)) {
return false; // представим, что у нас есть метод, проверяющий, заполнены ли логин и пароль. false - не заполнены
}

if (empty($password)) {
return false;
}

return true;
Аноним 19/01/21 Втр 15:12:46 19152211068
>>1915187
>В случае успешного выполнения функции возвращаемое значение зависит от режима выборки. В случае неудачи, функция всегда возвращает false.
Результат фетча проверить надо.
if ($row) {
//достаешь логин, пароль из роу
}
Там он ебануто результат выдает: либо массив полей строки бд, либо фелс

Или так:
if (!$row) {
return; //сворачиваем работу, или кидаем ошибку о том, что не смогли достать учетку из бд
}
Аноним 19/01/21 Втр 15:31:38 19152511069
Снимок экрана ([...].png 121Кб, 1366x768
1366x768
Аноним 19/01/21 Втр 19:16:58 19155081070
>>1914857

Убери цикл while() и используй просто один вызов $sth->fetch для получения строки из БД. Учти, что он может вернуть false, если строка не найдена и это надо проверять.

Также, проверку можно бы вынести в функцию, чтобы вызывать ее как:

if (is_valid_login($name, $pasword)) {
...
}

Когда ты получаешь значения из $_POST, их там может не быть и это вызовет ошибку. Используй ??, например $x = $_POST['x] ?? '';
Аноним 19/01/21 Втр 19:44:57 19155311071
>>1914871

В CSS тебе надо сделать, чтобы внутренние дивы выводились последовательно, без переносов. Для этого можно использовать flexbox, с запретом переноса. Чтобы были видны только 3 дива, нужно поставить overflow: hidden.

Что касается JS, то его надо изучать сначала, вряд ли получится "подсмотреть" быстро нужную функцию. За прокрутку элемента отвечает свойство scrollLeft, определить позицию элемента на экране можно с помощью getBoundingClientRect(), размеры элемента с помощью offsetWidth.

>>1915032

Потому что там есть отдельный счетчик и очищением таблицы ты его не сбросил. Сбросить счетчик можно запросом вроде ALTER TABLE tbl AUTO_INCREMENT = 100.


Аноним 19/01/21 Втр 19:46:11 19155331072
привет всем знатокам php. вопрос такой - нужно написать сайт с авторизацией, заполнением нескольких полей и их сохранением в табличку. мысли сделать это все на mysql с двумя бд: одна для хранения логинов и паролей, вторая для сбора инфы с сайта. скажите, я верно мыслю? или есть какой-то способ попроще
Аноним 19/01/21 Втр 19:51:56 19155411073
>>1915533
Тебе не 2 бд нужны, а 2 таблицы в 1 бд
Аноним 19/01/21 Втр 19:58:50 19155491074
Сессии-гемморойная тема?
Аноним 19/01/21 Втр 20:01:13 19155521075
>>1915541
точно, спасибо, я что-то уже немного крышей еду
Аноним 20/01/21 Срд 00:08:44 19158521076
>>1849078 (OP)
В чём преимущества PHP перед Python?
Аноним 20/01/21 Срд 01:14:13 19159281077
Аноним 20/01/21 Срд 08:32:28 19160781078
>>1915852
Тебе для каких целей ответ нужен?
Аноним 20/01/21 Срд 12:43:17 19161681079
Аноним 20/01/21 Срд 13:31:07 19162031080
>>1916168
Выбор стека для работы веб макакой?
Аноним 20/01/21 Срд 13:35:30 19162081081
>>1916203
Целюсь на фриланс в долгосрочной перспективе, так-что хочу чтоб в первую очередь для меня удобно было.
Аноним 20/01/21 Срд 13:41:54 19162111082
>>1916208
Тогда попробуй какой-то заказ сделать на том и на другом - увидишь разницу
Аноним 20/01/21 Срд 16:26:52 19163601083
>>1916211
Но для этого мне нужно будет изучить два этих языка, я спрашиваю для того чтобы сократить время вкатывания, в будущем допускаю изучения второго по мере надобности.
Аноним 20/01/21 Срд 16:40:32 19163741084
>>1916360
Ты их по году собрался изучать каждый?
Банально посмотри кол-во вакансий, стек технологий в них и зп по каждому из языков и решись.
Так то языки решают одни и те же задачи. Особой разницы при разработке под веб не почувствуешь
Аноним 21/01/21 Чтв 00:32:59 19167661085
Я правильно понимаю что пыха пытается взять лавры питона? Судя по производительности у них может получиться.
Аноним 21/01/21 Чтв 03:49:47 19168041086
Какие бест практис для админ секции сайта? Насильно генерировать длинный пароль для юзеров(админов) не давая возможность придумать свой, прятать /admin в какой-то /admin_cG9rYSB5b2tl (что в принципе не имеет особого смысла кроме неудобства для всех), что еще можете подсказать? Можно еще после например 5-10 неудачных логинов банить айпи
Аноним 21/01/21 Чтв 04:09:57 19168081087
>>1916804
>длинный пароль для юзеров(админов)
Я обычно рандомный генерю только для разработчика ака root админки, а редакторы контента пускай сами себе выбирают - максимум что можно сделать на их уровне это попортить контент.
У тебя должно быть разделение прав в админке.

>прятать /admin в какой-то /admin_cG9rYSB5b2tl (что в принципе не имеет особого смысла кроме неудобства для всех)
Имеет - боты ходят по сети и стучатся в известные пути админок. Если сайт отдал 404, то они отстают от этого адреса.

>после например 5-10 неудачных логинов банить айпи
Принято не банить, а ставить тротлинг - возможность повторной попытки логина через, например, минуту. Это сводит к 0 брут-атаку с перебором.

>>1916766
Как пытается?
Аноним 21/01/21 Чтв 11:38:26 19169991088
>>1916808
а как сделать тротлинг?
Аноним 21/01/21 Чтв 12:04:22 19170091089
>>1916766
Скорее пытается взять лавры джавы, судя по направлению развития языка.
Но так и остается языком для бизнесменов-нищуков
Аноним 21/01/21 Чтв 12:51:31 19170291090
>>1916999
При попытке логина инкрементишь в каком-то хранилище счетчик запроса на +1, записываешь время, ключом для хранилища выбираешь айпи запроса + что-то сверху, ну и смотришь чтобы не превышало
21/01/21 Чтв 14:39:53 19171091091
16077242545480.jpg 95Кб, 991x1024
991x1024
Пацаны мы в бамплимите?
Аноним 21/01/21 Чтв 14:46:36 19171121092
Я снова на связи.
А сделать аккаунт юзера осмысленным.
Вот он есть в БД,но нужно сделать страничку для него.
Вот допустим php нашел юзера в БД,дальше че?
Аноним 21/01/21 Чтв 16:11:10 19171971093
>>1917112
А ты что делаешь то?
Обычно юзер/учетка - вспомогательная сущность для доступа к другому функционалу приложения.
Какой у тебя функционал?
Аноним 21/01/21 Чтв 16:13:49 19172001094
>>1917197
ну для начала,переход на страничку,а там оформлено красиво учетка,где можно загрузить фоточку или заебенить пост,ну ты понел
Аноним 21/01/21 Чтв 16:16:03 19172031095
>>1917200
>>1917200
и шоб в адресной строке строке никнейм или айди был
Аноним 21/01/21 Чтв 16:28:21 19172111096
>>1917200
>>1917203
Это надо роутинг делать.
Прикрутить сторонний, либой свой накостылять
Аноним 21/01/21 Чтв 16:30:22 19172151097
>>1917211
так как сделать ,чтобы входить в свой аккаунт?
Аноним 21/01/21 Чтв 16:33:07 19172171098
>>1917215
Можно через куки сделать
Аноним 21/01/21 Чтв 16:35:14 19172181099
>>1917217
ну вот я щас про куки читаю
если я правильно понимаю,в конце login кода поставить куки и ссылку на пустую страницу аака?
Аноним 21/01/21 Чтв 16:37:00 19172191100
>>1917218
Ну да. При логине пишешь куку о том, что юзер залогинен и потом редиректишь куда там надо
Аноним 21/01/21 Чтв 17:10:38 19172501101
>>1917219
а как вставить ссылку в пхп код?
Аноним 21/01/21 Чтв 17:33:20 19172691102
Этот тред закончился, переходите пожалуйста в новый: >>1917260 (OP)

Если вам не ответили, можете напомнить о себе в новом треде.
Аноним 22/01/21 Птн 15:32:16 19180951103
>>1915852
Нету никаких. Иди изучай питон, это стильно модно и молодежно. Лучший язык человечества. Рекомендую записаться на какой-нибудь месячный курс, после него сразу можешь идти устраиваться на работу.
Аноним 22/01/21 Птн 18:01:07 19182111104
>>1913224
>Есть ошибка: число 71000 печатается как "семьдесят один тысяча рублей".

Вроде что-то накарябал, проверь если не сложно, спасибо что заметил ошибку.
https://ideone.com/eAXWdN
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов