Главная Юзердоски Каталог Трекер NSFW Настройки

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 1037 100 334
Клуб изучающих PHP #127 /php/ Аноним 30/04/22 Суб 00:18:11 2347129 1
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.

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

Предыдущий тред был тут: >>2241613 (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 - это что-то вроде их хабра.

Вот неофициальный роадмап (карта того, что желательно изучить): https://miro.com/app/board/o9J_lbUUBBQ=/

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания 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? — Да, однозначно. Посмотри любую вакансию.
Оформление кода Аноним 30/04/22 Суб 00:19:16 2347130 2
Код лучше писать аккуратно и оформлять, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на 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/
Аноним 30/04/22 Суб 14:49:23 2347315 3
16236178381240.jpg 69Кб, 1516x1076
1516x1076
> 2k2k2
> PHP
Аноним 30/04/22 Суб 15:34:21 2347372 4
>>2347315
>любой год
>упоминать в качестве мёртвого языка что-либо кроме того, что действительно мертво, а не занимает охуиллиард процентов рынка
>что-то кроме кобола, иными словами
Аноним 30/04/22 Суб 18:24:45 2347483 5
Php.jpeg 49Кб, 530x342
530x342
Аноним 30/04/22 Суб 19:28:59 2347518 6
>>2347315
>2k2k2
>аниме на аве
>мать в канаве
Аноним 01/05/22 Вск 01:38:15 2347788 7
ку,захотел написать бота для тг на php. Я правильно понимаю,чтобы он постоянно работал сервер должен быть постоянно включенным и я должен постоянно обновлять страницу со скриптом?
кто шарит, объясните ,пожалуйста, как это все работает
Аноним 02/05/22 Пнд 04:21:45 2348364 8
Аноним 02/05/22 Пнд 06:59:12 2348375 9
>работал эникеем и сталкивался с хуйней под названием битрикс
>решил стать веб макакой
>именно в этот момент западные компании сьебнули с России
>теперь все бэкенд вакансии для джунов/трейни это ебучее битрикс болото
Ну и хули делать то? Копаться в этой параше с надеждой на то что через год-два перекачусь в что-то нормальное?
Аноним 02/05/22 Пнд 08:32:35 2348383 10
Сап, я возможно, не по адресу, но в шапке увидел знакомые слова (HTML + CSS). Вопрос такой: если нужно создать сайт в одно лицо, то как обычно вы поступаете с фронт-стороной? Верстаете все руками или на каких-то быстрых конструкторах? на каких? Вообще мое основное это java бэк, но наша контора настолько оптимизирована, что приходится разбираться в совсем непривычном
Аноним 02/05/22 Пнд 12:44:16 2348484 11
Сап, как поставить библиотеку на хост через композер?
Аноним 02/05/22 Пнд 13:34:12 2348522 12
>>2348375
Битрикс на пхп сделан?
Аноним 02/05/22 Пнд 15:13:10 2348580 13
Когда стоит переходить к изучению фреймворка?
Аноним 02/05/22 Пнд 17:10:30 2348708 14
>>2347129 (OP)
4 года назад я увидел этот тред, меня завлек анимешный и ламповый гайд и я решил стать web разрабом.
Какая же это была ошибка.
Поработал только 4 месяца версталой
Аноним 02/05/22 Пнд 18:06:35 2348742 15
>>2348708
>версталой
>пэхапэ тред
Где связь?
Аноним 02/05/22 Пнд 18:31:05 2348753 16
>>2347788
обновлять постоянно страницу - плохая идея. предполагаю, что бота делаешь через getUpdates, такой бот в бесконечном цикле получает и обрабатывает новые сообщения. запускать надо через php cli, а не обновлять постоянно страницу.
если хочешь хостить на хостинге для сайтов - только webhook. через апи указываешь ссылку на скрипт, телега сама будет слать туда новые события то ли в php://input, то ли в $_POST, не помню
Аноним 02/05/22 Пнд 19:14:37 2348781 17
>>2348742
Неясно.
Для несведущих: пыха это про бекенд, а вёрстка - про фронтенд.
Я понимаю если бы он в фуллстеки вкатился, но нет же.
Аноним 02/05/22 Пнд 19:16:00 2348782 18
>>2348742
ВЕРСТАЛОЙ НА WORDPRESS, ПОПРОШУ!!!!
А если серьезно, увидел задание с таблицей и студентами, охренел, подумал, что лучше стану Frontend... ну и понеслось. А если бы не этот анимешный тред, к web разработке может бы не притронулся.
Справедливости ради, сложным для меня в задании со студентами являлась именно верстка
Аноним 02/05/22 Пнд 19:21:13 2348784 19
>>2348580
Бамп вопросу. Из проектов есть ту ду лист, список студентов из шапки треда,что-то вроде галереи, сайт с отображением погоды (юзал API)и расписание для разных групп универа. Могу ли я перейти к изучению ларавеля?
Аноним 02/05/22 Пнд 19:23:38 2348786 20
Аноним 02/05/22 Пнд 19:27:23 2348791 21
>>2348786
Спасибо блять. Спрашиваю мнение шарящих челов, ты к таким относишься?
Аноним 02/05/22 Пнд 19:35:49 2348797 22
>>2348791
Ты задал дебильный вопрос и получил соответствующий ответ.

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

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

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

А дибильных вопросов задавать не нужно.
Аноним 02/05/22 Пнд 19:43:17 2348804 23
Аноним 02/05/22 Пнд 19:47:58 2348809 24
>>2348804
Ты меня не обидел. Не волнуйся.

Через две-три недели вернись в тред и расскажи, как идут дела. Сделаешь хорошее дело для других растущих ребят.
Аноним 02/05/22 Пнд 19:49:29 2348810 25
Аноним 02/05/22 Пнд 20:17:57 2348830 26
>>2348383
Bootstrap или другой CSS-фреймворк. Изучается быстро, даёт вполне невырвиглазный результат, если соблюдать основные правила дизайна (вроде "не более 3-х цветов на странице"), классно не получится, но для нетребовательного заказчика сойдёт.
А если нужно что-то красивое и "вкусное", есть бесплатные template'ы, но вот если потом придётся что-то серьёзно поменять на странице, будет беда...
Аноним 02/05/22 Пнд 20:35:10 2348840 27
>>2348484
установить сам composer.
инициализировать проект (composer init)
вызвать composer require author/package
А затем пойти читать в доках, как работает сам композер, какие у него есть команды, что такое /vendor/autoload.php, стандарт PSR-4 и так далее
Аноним 02/05/22 Пнд 21:26:35 2348865 28
>>2348840
Установить кампозер на хост?
Заранее сори за тупой вопрос
Аноним 02/05/22 Пнд 21:56:08 2348878 29
>>2348865
в ispmanager есть shell-клиент, через него можно запустить composer.phar
Аноним 03/05/22 Втр 02:12:24 2348965 30
>>2348784
Можешь перейти к поиску работы
Аноним 03/05/22 Втр 03:07:58 2348971 31
>>2348784

Давно пора. Только если ты хочешь познакомиться с чуть более правильным использованием ООП и готов к x10 сложности, то попробуй Симфони.
Аноним 03/05/22 Втр 19:45:19 2349540 32
Тестирую апишку через постман. Вставляю туда свой json и отравляю реквест, но как мне его принять в laravel?
Аноним 03/05/22 Втр 21:07:46 2349575 33
>>2349540
Мб так
$data=file_get_contents('php://input')
Аноним 03/05/22 Втр 21:52:53 2349597 34
>>2349575
Почему эта тема стала всплывать постоянно?
Аноним 03/05/22 Втр 21:54:25 2349598 35
>>2349597
Не понимаю что в твоём сообщении значит тема
Аноним 03/05/22 Втр 21:56:16 2349599 36
>>2349598
Прием json в пхп через file_get_contents('php://input')
Аноним 03/05/22 Втр 21:59:49 2349604 37
Аноним 03/05/22 Втр 22:09:33 2349612 38
Аноним 03/05/22 Втр 23:02:48 2349630 39
>>2349575
Как отправить курл запрос с джейсоном с серв1 на серв2 и принять джейсон? Надеюсь, понятно обьяснил
Аноним 04/05/22 Срд 01:46:32 2349658 40
Шалом, няши. Хочу однажды проснуться fullstack, решил начинать с бэкэнда, тянуло к разным языкам (Go, Js, Sisyarp), но я вот остановился и подумал.

PHP это

1) 75% веба
2) Легкий вкат на начале, но такие же возможности роста, а вакансий больше.
3) Базовая база веба, а его понимание для фуллкека это хлеб

И подумал таки изучать PHP

This is right way?
Аноним 04/05/22 Срд 09:56:46 2349736 41
>>2349658
Фуллкеку должно быть поебать на язык: PHP, JS/TS, Python, Ruby, Go, Java/Scala, C#. Я рекомендую начинать с сишки, чтобы ты понимал как оно всё работает. Как напишешь свой первый веб-сервер поверх epoll и первое расширение для sqlite, то можешь браться за свою скриптопарашу.
Аноним 04/05/22 Срд 10:58:32 2349793 42
>>2349658
>Легкий вкат на начале
Так бывает вообще сейчас?
Аноним 04/05/22 Срд 17:01:36 2350098 43
Аноним 04/05/22 Срд 17:51:39 2350126 44
Аноним 04/05/22 Срд 19:55:35 2350209 45
shop.lenovo.com
как они это сделали вместо lenovo/shop.com
Аноним 04/05/22 Срд 20:43:52 2350238 46
Аноним 04/05/22 Срд 22:03:25 2350277 47
предложили поменять стек с symfony + api platform на nestJS
кайфану от смены стека или не?
Аноним 06/05/22 Птн 15:07:38 2351277 48
JSLzp.png 125Кб, 1280x800
1280x800
Привет, пхпач.
Как реализовать кодинг на сайте, как на пикриле ?
Аноним 06/05/22 Птн 16:49:59 2351337 49
Аноним 06/05/22 Птн 17:24:52 2351368 50
>>2351277
отправлять код на сервер, запускать новую копию интерпретатора в изолированном окружении, возвращать ответ
Аноним 06/05/22 Птн 21:52:36 2351563 51
Если кто-то работал с библиотекой telegram bot sdk, помогите.
Не приходят обновления через getWebhookUpdates (). С чем это может быть связано? Setwebhook сделал, все норм.
Аноним 07/05/22 Суб 00:51:14 2351687 52
Аноним 07/05/22 Суб 02:19:17 2351698 53
Аноним 07/05/22 Суб 02:42:27 2351707 54
>>2351698
телеграм присылает события только по https, гугли letsencrypt, там бесплатные сертификаты
Аноним 07/05/22 Суб 03:15:11 2351713 55
>>2351707
Лучше nginx в режиме reverse proxy + certbot сразу нагуглить.
Аноним 07/05/22 Суб 18:37:49 2351984 56
Где работку искать?
Аноним 07/05/22 Суб 21:46:05 2352104 57
fdg.jpg 48Кб, 637x301
637x301
Заебало на хуй, запилите уже блять в шапку треда как эту пыху устанавливать
Аноним 07/05/22 Суб 22:30:52 2352138 58
Аноним 08/05/22 Вск 11:55:46 2352387 59
nestjs.png 75Кб, 1335x874
1335x874
>>2350277
>nestJS
Хуйня перехайпленная. Там нет ничё такова, чего не было бы в express.js. Так, чисто синтаксическим сахарком посыпали, добавили декораторов, которые вообще нихуя не делают. Серьёзно, ты почитай их документацию, они прямо говорят типа "ну да, мы знаем, что всё это одной строчкой обычным express / fastify делается". И сами же приводят список аналогичного кода. Там есть ноль целых хрен десятых полезного функционала: роли, валидации, orm. Но я не думаю, что ради валидаций стоит ставить такого слона на сервер. В остальном, проще поставить обычный express-generator, он плюс-минус mvc тебе сгенерирует.
Аноним 08/05/22 Вск 12:18:24 2352404 60
>>2352387
По крайней мере там typescript и DI из коробки. Уверен что на проекте
1) для чужого дяди
2) когда нет времени вылизывать код
3) на рынке куча интересных вакансий, я на проекте долго не задержусь...
ты непременно будешь ковырять вилкой говнокод, в котором
4) нет тестов, потому что говнокод не реально протестировать
Так выглядит рядовой проект на express
Аноним 08/05/22 Вск 14:03:04 2352486 61
>>2352404
И чё DI? Они дополнительную сложность добавили в проект. Там, где можно было обычной функцией/классом обойтись, придётся заводить ебучие сервисы, контроллеры, фабрики, хуябрики. А что толку? Ничего же принципиально нового они не дают. Это дрочка ради самой дрочки. Синтаксический сахар.
Аноним 08/05/22 Вск 16:06:55 2352608 62
>>2352104

В твоем репозитории скорее всего нету пакета с данной версией. Надо сделать так:

- сначала обновить информацию о доступных пакетах их репозиториев:

sudo apt-get update

- сделать поиск по слову php и отсортировать результаты:

apt-cache search php

- затем установить выбранный пакет:

sudo apt-get install название пакета

Аноним 08/05/22 Вск 16:08:49 2352614 63
>>2352486

Ты, по моему, просто не понимаешь, что такое DI. Смысл DI не в том, чтобы городить лишние фабрики, а чтобы решить проблему получения зависимостей для функции или класса.
Аноним 08/05/22 Вск 18:16:12 2352741 64
Какова производительность гонять json из фронта в пхп?
Аноним 09/05/22 Пнд 11:37:21 2353091 65
>>2352741
всё хорошо
такие вещи вообще не должны бескопоить в 99% случаев
Аноним 09/05/22 Пнд 12:37:17 2353121 66
Что лучше random_int или mt_rand?
Аноним 09/05/22 Пнд 12:40:24 2353123 67
Как можно запилить в проекте старую версию композера и ларавеля? Предположим на опен сервере выставил седьмую пыху, и нужно все в районе 2017 года, как это все устанавливать в domains?
Аноним 09/05/22 Пнд 13:13:17 2353140 68
Поставил PHP8.1, закинул свой проект, который писал под 5 версию. Охуел от числа ошибок и варнингов. Ошибки исправил, большинство варнингов - тоже. Никаких плюсов от перехода на новую версию не заметил.
Аноним 09/05/22 Пнд 13:20:51 2353144 69
>>2353140
Прекрашай тролить тупостью.
Аноним 09/05/22 Пнд 23:45:08 2353588 70
Ищу компаньона на собственный проект. Вкачу в докер, на простых задачах выучим yii2, познакомимся с работой через api, расскажу за композер. Проект ноукоммерс зарплаты не будет, пилю его для себя. Для чего мне это, спросишь ты, а я тебе не отвечу. Проект уже приелся т.к пилю его больше года, плюс времени стало меньше. Помогу со всеми вводными что бы ты мог вкатиться в it. С тебя знания php и yii2 хотябы на минималках. Интересно? Пиши в телегу @hcan359
Аноним 10/05/22 Втр 10:38:19 2353688 71
16492992064690.jpg 24Кб, 423x222
423x222
Аноним 12/05/22 Чтв 00:30:14 2354991 72
>>2353123
Все не надо, разобрался
Аноним 12/05/22 Чтв 00:35:46 2354993 73
какой же ларавель саил копрокал пиздец просто
я бы уже образ быстрее ручками собрал припердолив нжинксу чем разбираться почему что и где не дает установить нужные зависимости
Аноним 12/05/22 Чтв 00:36:23 2354995 74
про то что этот кал с мускулем из коробки не запустил пустой проект я даже и говорить не буду
Аноним 12/05/22 Чтв 01:18:53 2355001 75
Аноним 12/05/22 Чтв 04:20:05 2355019 76
в итоге я пытался прикрутить стандартную регистрацию на laravel/breeze. Ок, прикрутил, пытаюсь зарегистрироваться - хуйня какая-то, connection refused. Гуглю часов 6, и потом, чисто случайно, меняю DB_HOST 127.0.0.1 на mysql (имя контейнера), и, о чудо, работает. Но теперь у тебя явно вопрос - а нахуя я вообще трогал DB_HOST и поломал, но все намного интереснее - DB_HOST=127.0.0.1 выдает ошибку при попытке сделать миграцию артисаном. Да. В итоге у меня теперь интересная последовательность действий - меняю дб хост, делаю миграцию, меняю дб хост обратно. Пиздец ваш ларавель дерьмо блядь.
Аноним 12/05/22 Чтв 04:21:34 2355020 77
DB_HOST=mysql выдает ошибку*
быстрофикс
Аноним 12/05/22 Чтв 09:44:01 2355082 78
>>2355019
Макакен, в докере разберись, а не куски .env из гугла копипасти.
Аноним 12/05/22 Чтв 16:35:52 2355274 79
так ладно еблан все таки я а не писавший саил
Аноним 12/05/22 Чтв 16:36:11 2355275 80
так ладно еблан все таки я а не писавший саил
Аноним 12/05/22 Чтв 16:57:40 2355287 81
>>2355019

Контейнер докера чем-то напоминает виртуальную машину. Внутри него есть свои виртуальные сетевые карты.

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

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

А если ты хочешь со своего компьютера подсоединиться к сервису внутри контейнера (например, к БД), ты тоже должен использовать IP-адрес контейнера или DNS-имя, а не 127.0.0.1

То есть, представляй себе, что каждый контейнер это как отдельный компьютер со своим адресом.
Аноним 12/05/22 Чтв 17:03:21 2355293 82
>>2355082

Ты даешь неправильный совет. Если анон сейчас начнет читать документацию Докера, он половину не поймет.

В данном случае сначала надо изучить основы сетевых технологий: что такое сетевой интерфейс, сокеты Беркли (не вебсокеты), протоколы IP, UDP, TCP, что такое маршрутизация и пакеты, система DNS, файл hosts, команды ifconfig, ss, ping.

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

И после этого можно читать документацию Докера.

Докер это не инструмент для новичков-вкатышей. Это для тех, кто знает Линукс и сетевые технологии и свободно ориентируется в командной строке.
Аноним 12/05/22 Чтв 17:08:15 2355298 83
>>2355293
То, что ты перечислил, в моем понимании для вкатуна в бек подразумевается, иначе всё как магия выглядит.
Аноним 12/05/22 Чтв 17:12:36 2355302 84
Аноним 12/05/22 Чтв 17:45:41 2355316 85
>>2353121

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

То есть, там есть формула, по которой из предыдущего числа получается следующее. И он каждый раз применяет эту формулу.

Приведу упрощенный пример, как можно генерировать псевдослучайные числа (mt_rand устроен во много раз сложнее, я же специально упростил логику для понимания). Пусть у нас формула для генерации следующего числа (y) из предыдущего (x) такая:

y = (11 * x + 7) % 10

%10 значит "остаток от деления числа на 10", то есть, последняя цифра из числа.

Если мы возьмем начальное значение x = 1 и подставим в формулу, то получим новое случайное число y = (11 * 1 + 7) % 10 = 18 % 10 = 8. Если мы подставим в формулу 8, то получим 5. И так далее.

Последовательность чисел, которые сгенерирует генератор, состоит из 10 цифр и выглядит так:

1 8 5 2 9 6 3 0 7 4 1 8 5 2 9 ....

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

(если тебе интересно, откуда я знаю эту формулу и числа в ней, то читай википедию: https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D0%B3%D1%80%D1%83%D1%8D%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4 )

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

Для генератора выше, если ты получил числа 8 и 5, то ты знаешь, что дальше он выдаст число 2.

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

Вот еще пример, где нельзя использовать такой генератор. Допустим, у тебя на сайте сделан вход через код в СМС. То есть, ты вводишь номер телефона, сайт генерирует случайный код и высылает его в СМС. Злоумышленник, зная, что ты используешь mt_rand(), несколько раз вводит свой номер и получает несколько кодов подряд. Имея эти коды, он рассчитывает, в каком месте последовательности находится генератор и предсказывает, какие следующие коды будут сгенерированы. После этого он вводит номер телефона жертвы и угаданный код, и получает доступ к его аккаунту.

То есть, mt_rand подходит для ситуаций, где не критично, если кто-то угадает числа.

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

Если тебе нужно генерировать много криптографически надежных чисел с большой скоростью, то придется раскошелиться на аппаратный генератор случайных чисел. Или использовать современный процессор, в который такие генератор часто встроен (если ты конечно доверяешь Intel или AMD и веришь, что американское правительство не встроило закладки в этот генератор, чтобы обчистить твое казино, прочитать твои сообщения и взломать СМС-коды на твоем сайте).
Аноним 13/05/22 Птн 12:13:16 2355654 86
DREAM MACHINES ТОП!
Аноним 13/05/22 Птн 15:10:00 2355756 87
Привет, Анон, подскажи, оформлял список преимуществ, создал див, сделал его флексом, размеры накидал дочерним и вышло 2 ряда по 4 преимущества, вроде бы все как хотел, но стоят преимущества слева-справа почти впритык, в тз виден отступ пикселей 10-20 без указания его, якобы он такой дефолтный, но почему у меня нет?
Аноним 13/05/22 Птн 20:38:41 2355985 88
>>2355756

А почему отступ должен быть? Отступы надо делать либо с помощью margin/padding, либо сделав ширину элементов меньше, чтобы осталось свободное место.

То есть, если у тебя 2 колонки и ширина элемента равна 50%, то отступа не будет. А если ты сделаешь ее 45%, то оставшиеся 10% превратятся в отступ между колонками.

Если ты не задаешь ширину элемента в флексбоксе явно, то она рассчитывается автоматически по алгоритму shrink-to-fit, про который я написал урок: https://github.com/codedokode/pasta/blob/master/html/shrink-to-fit.md#%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-shrink-to-fit

Аноним 14/05/22 Суб 06:33:42 2356093 89
Товарищи, а можете починить ссылку на учебник из шапки?
Аноним 14/05/22 Суб 20:05:01 2356438 90
>>2356093

Спасибо за информацию. К сожалению, продление предыдущего домена стоит 10 долларов, а смена домена бесплатная, потому мы переехали.

Ссылка на учебник: https://codedokode.github.io/phpbook

Если кому-то захочется скачать учебник на компьютер, то заходите на https://github.com/codedokode/phpbook и нажмите зеленую кнопку Code, там выберите Download ZIP.
Аноним 14/05/22 Суб 20:29:19 2356454 91
>>2356438
Спасибо за труд. Подскажи пожалуйста хороший курсик по ларе, на примере блога там например, еще раз спасибо.
Аноним 15/05/22 Вск 13:26:43 2356826 92
Ajax еще актуален?
Аноним 15/05/22 Вск 13:30:50 2356828 93
php11.PNG 69Кб, 982x920
982x920
Аноним 15/05/22 Вск 14:20:13 2356843 94
>>2356828
В цикле ты обращаешься только к тому, который отправляешь в функцию.

Обращайся к тому, который ты переопределяешь

Вместо $l->val, используй $c->val
Аноним 15/05/22 Вск 14:27:16 2356845 95
image.png 18Кб, 433x391
433x391
>>2356828
И, возможно, так будет лучше
Аноним 15/05/22 Вск 14:36:12 2356847 96
>>2356845
Спасибо.
Алсо, торжественно клянусь впредь использовать нормальные имена переменных, даже когда печатаю с тапка телефона.
Аноним 15/05/22 Вск 14:50:09 2356855 97
>>2356828
А эти структуры данных вообще нужны в разработке веб-сайтов? Тем более с нуля, а не основе библиотек?
Аноним 15/05/22 Вск 23:41:55 2357161 98
Господа ПХПшники может кто подскажет как хитро реализовать следующую задачу:
Есть страничка на пхп, нужно не дожидаясь загрузки контента (хтмл) отправлять get request на определенный урл. Отправлять не блокируя остальной код. На респонс плевать, главное очень быстро и не дожидаясь респонса и не блокируя рендер контента кидать реквест на определенный урл.
Аноним 16/05/22 Пнд 03:50:33 2357222 99
>>2357161

Мб заслипать на секунду
Аноним 16/05/22 Пнд 09:05:36 2357253 100
>>2357222
ПХПшники нэвэр чейндж
Один спрашивает как сделать хуйню, другой ему рандомную хуйню советует
Аноним 16/05/22 Пнд 10:24:24 2357277 101
Аноним 17/05/22 Втр 00:00:33 2357639 102
>>2357161
Если я правильно понял (если вообще реально понять хуйню, у которой даже название есть - xy problem), можно открыть tcp соединение через сокет, сформировать get запрос (это несложно - там всего лишь текст), отправить и.. всё, response можно не считывать.
Аноним 17/05/22 Втр 19:41:34 2358201 103
xcv.jpg 126Кб, 1440x254
1440x254
Как фиксить?
Аноним 18/05/22 Срд 01:04:50 2358305 104
image.png 131Кб, 758x727
758x727
сап тред, просматривал видеоуроки по шаблонам проектирования и столкнулся с непониманием тех строк которые подчеркнул. Зачем они нужны, объясните кто нибудь.
Аноним 18/05/22 Срд 01:27:27 2358311 105
>>2358305
Кажись понял,это чтобы вернуть ссылку на текущий объект
Аноним 18/05/22 Срд 01:42:38 2358316 106
Запрос на url - ошибка 401
Затем запрос на на домен/challenge
Опять запрос на то же url - успешно, код 200

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

Что это за 2ch.hk/challenge? Для чего это? Каким образом это защищает сайт?
Аноним 18/05/22 Срд 01:48:54 2358319 107
>>2358311
Не текущий объект, а объект messenger внутри текущего объекта.
Аноним 18/05/22 Срд 02:53:27 2358328 108
Аноним 18/05/22 Срд 08:04:30 2358351 109
подскажите сайт где можно взять шаблон блока фотогалереи для своего лендинга, бесплатно, а то я подписался на простой лендинг а не умею нифига
Аноним 18/05/22 Срд 23:26:29 2358862 110
>>2357639
Добавлю, что частично response сосчитать всё-таки нужно, чтобы убедиться, что реквест дошёл. Например, status-line. Но сделать это можно в самом конце.
Аноним 19/05/22 Чтв 02:06:56 2358914 111
>>2358316
Разобрался, это Cloudflare, защита от ддос атак.

Пиздец вы твари, сложно было 2 слова написать. Теперь я понимаю, почему этот тред мертвый.
Аноним 19/05/22 Чтв 03:11:33 2358924 112
>>2353688
Что не так, школьник? yii2 уже ~8-9 лет и все работает

Любой фреймворк это набор компонентов
роутер
контроллер с коллбеками и работа с данными и отображение.
Ну и рюшечки типа проверка почты, отправка и все такое.

Аноним 19/05/22 Чтв 09:42:22 2358991 113
>>2358924
держи в курсе, борщехлеб
Аноним 19/05/22 Чтв 15:44:23 2359204 114
Аноним 20/05/22 Птн 11:07:07 2359696 115
16217031796450.jpg 295Кб, 1083x1080
1083x1080
Ну что вкатуны, как дела? А я сижу, пью кофе дома и работаю на немецкий продукт. Ну как работаю, уже час двачи листаю.
Когда то я был как вы, в 2019м году открыл ПХП, установил линукс и начал писать коды эти ваши. А теперь я сижу в тепле и наслаждаюсь весной, пока быдло на заводах за копейки пашет, может на обеде поеду покатаюсь по дорожкам в лесу.

мимо symfony/react developer
Аноним 20/05/22 Птн 11:33:03 2359711 116
>>2359696
Идут два данмера по Алинору и видят волшебную лавку, на прилавке сидит альфик и лукаво размахивая хвостом, говорит данмерам:
- За 99 септимов превращу в имперца
Уримал покопался у себя в карманах и нашел 98 септимов, а Азарат у себя 100 септимов. Азарат говорит другу
- Давай испытаем заклинание на мне. Если все пройдет успешно, то я отдам тебе лишний септим и ты тоже станешь имперцем.
- Давай! - обрадовался Уримал.
Зашел Азарат вместе с альфиком в лавку и через пять минут из лавки выходит статный имперец.
- Скорее же давай мне септим. обрадовался Уримал.
- Найди себе работу чумазый попрошайка!
Аноним 20/05/22 Птн 12:51:14 2359803 117
>>2359696
Какой линукс установил?
Аноним 20/05/22 Птн 13:28:43 2359840 118
>>2359711
Анектодды двумя блоками ниже.
Аноним 20/05/22 Птн 15:02:52 2359943 119
php2.jpg 72Кб, 640x1280
640x1280
php1.jpg 65Кб, 640x1280
640x1280
python.jpg 75Кб, 640x1280
640x1280
react.jpg 67Кб, 640x1280
640x1280
>>2359696
Да нормально, все - по совету местного анона вкатился по подписке на хекслет, в итоге за 3 месяца освоил больше чем за весь прошлый год.
По поводу на рыка труда, мне с дивана кажется, что на пыхе все более менее норм, по сравнению с тем же фронтом и питоном, если говорить про офисные джуновские ваки.
Как нашел удаленку на западного барина? Или ты галеру РАБотаешь? Скок платят? Че молодым-задорным посоветуешь?
Аноним 20/05/22 Птн 16:05:31 2360010 120
>>2359943
Да конечно на пыхе збс, конкуренции мало, а работы валом.
Я в офисах не работал, сразу удалёнку нашёл на галере(но нормальной, с долгими продуктами без легаси), там 1,5 года проработал. Сейчас удалёнка на продукт на западного барина.

Молодым дам важный совет как найти работу:
- Сделать хотя бы один проект нормальный на гитхабе и задеплоить на хост куда-нибудь.
- Самому искать МАЛЕНЬКИЕ компании, где НЕТ ЭЙЧАРОВ. Там ты вероятность оффера будет 95% и сразу со старта платят.

Кто поопытнее и ищет вторую работу:
Сделать полезную-интересную composer-либу и залить на packagist.
Аноним 20/05/22 Птн 17:15:15 2360074 121
>>2360010
Какой проект ты делал?
Аноним 20/05/22 Птн 17:51:56 2360099 122
>>2360074
>А где?
>А покажи?
>А мне?
Чужой опыт на себя не натянешь, чел


мимо шел
Аноним 20/05/22 Птн 17:56:33 2360107 123
>>2360099
Мне просто интересно, причём здесь на себя натягивать
Аноним 20/05/22 Птн 20:11:07 2360219 124
>>2358201

Сообщения с Deprecated можно игнорировать — это лишь предупреждения. Важная информация в конце:

composer не нашел файл composer.json в текущей директории (PhpStormProjects).

Скорее всего ты запустил команду не из той папки. Нужно сначала перейти в папку с проектом, а потом запускать композер. Перейти можно командой

cd имя-директории



Аноним 20/05/22 Птн 20:15:39 2360226 125
>>2358305

Я тоже не очень понимаю, в чем смысл этого кода. Есть такой подход, когда функции-сеттеры (которые задают какой-то параметр) заканчиваются строкой return $this; и это позволяет вызывать их по цепочке:

$someObject->setA(1)->setB(2)->setC(3);

Но зачем возвращать $this->messenger, я не очень понимаю. Может, это какая-то ошибка?

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

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

@return MessengerInterface

Так не нужно делать. Если ты уже указал тип возвращаемого значения, не не надо его писать второй раз.
Аноним 20/05/22 Птн 20:51:26 2360246 126
>>2360226
>У функции указан тип возврата MessengerInterface и зачем-то в комментариях это указано второй раз:
>@return MessengerInterface

1) PHPStorm считает по-другому
2) Документация инструментами генерится из PHPDoc а не тайпхинтов

мимо
Аноним 21/05/22 Суб 00:57:22 2360366 127
>>2360010
>Да конечно на пыхе збс, конкуренции мало, а работы валом.

Это такой троллинг? Или ты про западный рынок. В этой стране уже с опытом 10 лет за еду работы в айти не найти, тем более на пыхе
Аноним 21/05/22 Суб 09:20:39 2360439 128
Аноним 21/05/22 Суб 09:59:13 2360453 129
>>2360366
>В этой стране уже с опытом 10 лет за еду работы в айти не найти
А что случилось? Почему же никто не хочет с нами работать?
Аноним 21/05/22 Суб 18:58:30 2360759 130
>>2360246

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

При этом, PHPStorm умеет парсить тайп-хинты и использовать их для анализа и подсказок. Также и другие анализаторы вроде phpstan умеют читать тайп-хинты.

Что касается PHPDoc, то я не вижу упоминания в документации, что он не умеет парсить тайп-хинты.
Аноним 21/05/22 Суб 19:39:22 2360780 131
>>2360759
Вообще да. PHPDocumentor из
class App
{
public function test(): array
{
return [];
}
}

сгенерил

public test() : array<string|int, mixed>
Аноним 21/05/22 Суб 19:43:42 2360785 132
>>2360780
Но все же я не могу в тайпхинте указать дженерик, так что я могу его указать в phpdoc, а тайпхинт array оставить для проверок в рантайме.
Аноним 21/05/22 Суб 21:17:47 2360854 133
Аноны где работу искать в инете по php?? готов работать но не могу ничего найти
Аноним 21/05/22 Суб 21:27:33 2360864 134
Аноним 21/05/22 Суб 23:04:14 2360900 135
Тут есть, кто хоть немного в блейде понимает?

Хочу понять, какая структура должна быть у шаблонов.

Вот есть базовый шаблон с повторяющимся хедером, футером, посередине вставляется @yield content, назовем его app.blade.php. Дальше я создаю дочернюю страничку, пусть будет about, которая наследуется от базового шаблона app, описываю секцию, хуе-мое, блять. И таких страничек будет штук 5. Потом я осознаю, что в эти 5 страничек нужно вставить абсолютно одинаковый кусочек кода, не слишком маленький, но и не на 100 строк. Как бы мне это сделать красиво и без копипаста?
Аноним 22/05/22 Вск 02:17:59 2360970 136
>>2360785

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

>>2360900

В твиге есть макросы для этого, наверно и в блейде что-то есть.Гугление показывает, что есть директива include: https://laravel.com/docs/9.x/blade#including-subviews

Также, там есть компоненты: https://laravel.com/docs/9.x/blade#components


Аноним 22/05/22 Вск 03:20:21 2360980 137
>>2360854
Да нету работы больше спасибо пыне, выкатываемся
Аноним 22/05/22 Вск 11:25:55 2361053 138
image.png 548Кб, 980x707
980x707
>>2360980
Но ведь внутренний рынок остается?
Аноним 22/05/22 Вск 19:15:44 2361319 139
Перед изучением laravel стоит изучить шаблоны проектирования?
Аноним 22/05/22 Вск 22:54:30 2361416 140
ИБ Аноним 23/05/22 Пнд 00:51:48 2361469 141
КрКодаТипа.jpg 122Кб, 960x720
960x720
Аноны привет. Мне очень нравится PHP, но пишу я на Golang, где "приложение компилируемое".

Вопрос такой: Что, если я напишу "самописный" движок сайта или сайт(сервис) на PHP, он раскрутится и кто нибудь(кабанчик подсуетится) отожмёт его у меня или возьмёт исходный код немного подправит, изменит "шаблон" и запустит свой аналогичный сайт? Что мне в этом случае делать? Какие методы защиты кода на PHP существуют: бэкдор для своего человека, супер пользователь вшитый в код, обфускация кода? Как защищаете Вы(Ваша контора) свой проект, как защищают крупные компании использующие PHP(Производители коммерческих CMS например)?

Аноним 23/05/22 Пнд 02:57:45 2361536 142
>>2361469
Ты в курсе, что пыха серверный язык? Как кабанчик у тебя его отожмет, если он на хостинге крутится, а не в браузере? Ты по сути даже не его видишь, а результат его работы.
Аноним 23/05/22 Пнд 03:18:13 2361538 143
>>2361536
В курсе конечно, но в "некоторой" стране можно доступ получить за деньги практически к любым данным. Например к SMS переписке или детализации звонков. Я не знаю как в остальных странах, но предполагаю не сильно лучше. Тем более в некоторых странах требуют, что бы "хостился" именно на их территории, если хочу их домен. Представь какой нибудь "Губер" или "Сенатор" в стране третьего мира захочет получить данные с сервака - думаю ничто ему не помешает или я не прав?
Аноним 23/05/22 Пнд 03:53:30 2361541 144
Аноним 23/05/22 Пнд 09:01:00 2361563 145
>>2361538
Чел, когда на тебя покусятся кабаны с такими возможностями у тебя будет своя СБ, а тебя самого будут интересовать больше яхты, а не твой пионерский говнокод.
Аноним 23/05/22 Пнд 10:22:13 2361604 146
>>2361563
Спасибо за мечты, но в успех я не очень верю. Возможно я пессимист.По теме: Есть знакомый - относительно взрослый дядя, Program Engineer (надеюсь правильно написал должность) который работает на иностранцев. Он тоже пишет, что, если идея которую ты реализуешь годная, то бабки появятся и уже потом будешь думать о безопасности, производительности, оптимизации кода и тд.
Аноним 23/05/22 Пнд 10:44:35 2361609 147
>>2360366
Работы валом, что на местных, что на западных. Тем более на пыхе.
Я как только год опыта получил - просто игнорил местных, зачем, если есть западные продукты с западной зар.платой и западными условиями.
Аноним 23/05/22 Пнд 12:03:41 2361641 148
Здрасьте, что щас с фрилансом на пыхе и реально ли студенту-перваку ворваться на этот дикий запад? Прогал на си, писал сайтики на дженге, на ней же апишку писал, к пыхе не притрагивался но хочу на ней фрилансить.
Аноним 23/05/22 Пнд 16:01:53 2361792 149
>>2360900
Если где-то есть повторяющиеся элементы, выносишь их в отдельный файл .blade.php и импортируешь в те, которые нужно. Если есть необходимость его чуток видоизменять (текст, картинки, что-то показывать/убирать и т.д.), то blade шаблоны умеют принимать переменные и с их помощью можно колдовать над шаблонами как хочешь.
Аноним 23/05/22 Пнд 18:17:16 2361957 150
>>2361053
Давно занят, да и сам по себе он маленький
Аноним 23/05/22 Пнд 19:14:13 2361998 151
IMG202205231911[...].jpg 64Кб, 1080x660
1080x660
Вопрос к знатокам, насколько это сложно?
Аноним 23/05/22 Пнд 21:12:41 2362065 152
>>2362016
Там же еще подмена ойпи нужна, так что еще про мультипрокси не забудь.
Аноним 24/05/22 Втр 16:07:01 2362379 153
1562139349156.jpg 70Кб, 669x702
669x702
Аноним 24/05/22 Втр 18:36:02 2362486 154
>>2347129 (OP)
Сука, ну как искать работу? Мрази требуют пхп, ооп, хуяпе, вью, джс, тесты. Коммерческого полгода, а по сути ничему не научился толком. С каждой вакансии в ахуе
Аноним 24/05/22 Втр 19:15:28 2362524 155
>>2362486
А где ты работал и че умеешь?
Похожая проблема, но я только в феврале вкатился
Аноним 24/05/22 Втр 19:29:03 2362534 156
>>2362486
>ооп
>джс
>тесты
Это все баззворды, которыми на собесе в голову срут и используют, чтобы непонравившегося кандидата зарубить. В реальности у тебя будет код-лапша без всяких там солид, просто раздробленный по куче классов/методов, и ajax запросы/таблички на жквиери на фронте.
>вью
Тебя наебать хотят, будешь макакой фулстеком.
Аноним 24/05/22 Втр 19:33:45 2362538 157
Аноним 24/05/22 Втр 19:57:07 2362561 158
>>2362538
Фронтофреймворк, который будешь выдрачивать дольше, чем пхп до уровня мидла.
Аноним 24/05/22 Втр 20:37:07 2362590 159
>>2362534
А что тогда надо знать чтобы устроиться?
Аноним 24/05/22 Втр 21:30:48 2362628 160
>>2362625
>простые морды, если я бэкендер
ПРостые морды для бэкендера это jquery + bootstrap, как показывает моя личная практика, лучше уж так чем говнокод на SPA.
Аноним 24/05/22 Втр 21:51:29 2362637 161
>>2362628
Почему обязательно говнокод с vue? Пишу чисто, функционально на vue 3 как на реакте. С jquery у тебя в 99% случаев на проектах встретится говнокод. На жиквери можно компоненты писать в виде плагинов, но все любители жиквери предпочитают лапшу.

мимо
Аноним 24/05/22 Втр 21:57:46 2362642 162
>>2362637
>функционально на vue 3
>как на реакте
Ты насрал в штаны, дружище. Во vue нет функциональных компонентов, а те, что там называются "функциональными" представляют из себя ничего более, чем статичную рендер-функцию без ветвлений внутри.
>С jquery у тебя в 99% случаев на проектах встретится говнокод.
У тебя и с реактом/вью 99% встретится говнокод, но в отличии от жиквары - он еще и будет с горой бойлерплейта, который без траты огромного количества времени не разберешь.
Аноним 24/05/22 Втр 22:04:58 2362645 163
>>2362642
Извини, но я в твои в штаны не срал. Это ты сам наделал. cоmposition api позволяет функциональный код писать насколько это возможно в жс и даже использовать this не дает.
Аноним 24/05/22 Втр 22:06:36 2362646 164
>>2362645
>cоmposition api
>функциональный код
Хватит позорится уже. Твой composition api это буквально конактенация стрех строк: "export default { setup(){" . <Текст твоего компонента> . "}}". Где ты тут функциональное программирование увидел?
Аноним 24/05/22 Втр 22:10:02 2362648 165
>>2362645
Потому что код полностью на функциях, без использования контекста. Тебе никто не мешает его использовать вместе с какой-нибудь ramdajs
Аноним 24/05/22 Втр 22:11:47 2362650 166
>>2362524
Немного пыхи, лару, апи писал, постман, докер, гит. Вот сейчас учу вью, но сука, не хочется распыляться
Аноним 24/05/22 Втр 22:14:12 2362653 167
>>2362650
И не распыляйся. Сам себе какаху в карьере сделаешь. Учи БД, куберы, рабиты и так дале. И английский язык
Аноним 24/05/22 Втр 22:14:42 2362655 168
>>2362648
В JS даже контекст можно реализовать на замыканиях. Отсутствие контекста и преобладание функций - не гарантирует использования парадигмы ФП. Тот же composition api функционален только в момент инициализации, потом у тебя все равно появляется тобой ненавистный контекст, в отличии от реакта - где весь жизненный цикл компонента выполнен в виде функций. Исключение в виде ErrorBoundary не рассматриваем
Аноним 24/05/22 Втр 22:19:10 2362659 169
>>2362655
И шо? Я против реакта ничего не говорил. Я же не шизик чтобы искать чистые идеальные формы, в практических приземленных вещах как веб фреймверки
Аноним 24/05/22 Втр 22:23:22 2362661 170
>>2362650
Уволили? Через сколько времени после вката устроился?
Аноним 24/05/22 Втр 22:30:37 2362667 171
>>2362655
Кстати раз ты такой спец покажи мне где этот контекст появляется?
setup() {
const = reactive({test: 'hello world'});

provide('HEHE', () => {
//
})

onMounted(() => {
//...
})

watchEffect(() => {
...
})
}
Аноним 24/05/22 Втр 22:40:22 2362670 172
>>2362667

Кстати в вуе 3 не принято писать defineComponent({setup() {
а принято вообще чисто на функциях и макросах

<script lang="ts" setup>
defineProps({
propName: {
...
}
})

watchEffect(() => {
//})
</script>
Аноним 24/05/22 Втр 23:06:31 2362683 173
>>2362667
Прямиком после выполнения метода setup, когда неожиданно все, что возвращалось из него становится полями объекта внутри прокси, доступ к которым из метода render осуществляется через with(this){}
Аноним 24/05/22 Втр 23:15:10 2362687 174
>>2362683
А разве если в реакте мы залезем в метод render или shouldComponentUpdate нам this не нужен будет?

render() {
...
this.props
...
}

не писал не когда?
Аноним 24/05/22 Втр 23:25:11 2362696 175
>>2362687
В реакте в 2022 методы используются только в единичных случаях, все остальное уже на функциях.

function Example(props){
return <div>{props.value}</div>
}
Аноним 24/05/22 Втр 23:27:32 2362698 176
>>2362696
Ну так вуе заставляет тебя в метод render лезть в 2022? Кстате необходимость shouldComponentUpdate тебя сейчас может заставить класс написать
Аноним 24/05/22 Втр 23:29:08 2362700 177
>>2362698
>вуе заставляет тебя в метод render лезть в 2022?
Не заставляет, если ты используешь вуй для генерации статичного HTML. Во всех остальных случаях - заставляет, просто через костыль with, потому что иначе код на вуе побил бы все рекорды по размеру бойлерплейта.
Аноним 24/05/22 Втр 23:30:33 2362702 178
>>2362698
> необходимость shouldComponentUpdate тебя сейчас может заставить класс написать
Не заставит. useMemo и useCallback
Аноним 24/05/22 Втр 23:36:41 2362708 179
>>2362700
расшифруй пожалуйста. я писал разные многоуровневые меню и, таблицы с динамически подгужаемым контентом в ячейках и всякую другую SPA муру и нигде не использовал render
Аноним 24/05/22 Втр 23:37:58 2362711 180
>>2362708
>я писал разные многоуровневые меню и, таблицы с динамически подгужаемым контентом в ячейках и всякую другую SPA муру и нигде не использовал render
<template> в твоем вуй файле это ничто иное, как render()
Аноним 24/05/22 Втр 23:40:51 2362716 181
братья помогите,не открывается в браузере дебагбар ларавеля(его просто нет),что делать как фиксить? все сделал по гайдычу,хз почему не работает
Аноним 24/05/22 Втр 23:41:21 2362717 182
>>2362711
>jsx это ничто иное как render
И шо? Где потерян гешефт?
Аноним 24/05/22 Втр 23:42:36 2362718 183
>>2362717
Гешефт в том, как туда данные попадают. В рякте - через область видимости, а в вуе/классовом рякте - через контекст.
Аноним 24/05/22 Втр 23:44:40 2362719 184
>>2362716
Это же сторонний пакет. Ты его ставил?
Аноним 24/05/22 Втр 23:46:21 2362722 185
Аноним 24/05/22 Втр 23:53:38 2362723 186
>>2362718
А доку читал?

The Debugbar will be enabled when APP_DEBUG is true.
Аноним 24/05/22 Втр 23:54:36 2362724 187
>>2362722
>>2362723
насрали тут фронтендом извините промазнулся
Аноним 25/05/22 Срд 01:02:59 2362751 188
>>2362723
Уже фиксанул, появилось когда изменил сервер на апач
Аноним 25/05/22 Срд 01:15:24 2362759 189
Вкатился на работу джуном чуть больше месяца назад, вроде и закрываю таски, но очень тяжело вносить изменения в проект которому уже больше чем полгода и у которого твоего кода меньше процента. Иногда бывает за день пишу 5-10 строчек, и то после подробных объяснений ментора, бывают дни без единой строчки кода. Как фиксить? Наверное мерить работу в строках неправильно, но сколько строк в день - норм? Сроков как таковых нет, но мне кажется что если я продолжу вот так писать в среднем 15 строк в день меня уволят нахуй.
Аноним 25/05/22 Срд 02:27:40 2362785 190
>>2362759

Мерь в джесонах и ретурнах!


Все хорошо будет
Аноним 25/05/22 Срд 05:41:33 2362809 191
>>2362759
Расскажи как вкатывался. Что на собесах спрашивали?
Задачки с литкода давали? Лайвкодингом заставляли заниматься? Про пет-проекты узнавали?
И как ты вообще пробился, если сейчас на одну вакуху 10000 курсовичков и вкатышей?
Аноним 25/05/22 Срд 06:21:29 2362811 192
Можно истории про вкат и трудоустройство перенести в другой тред? Тут не всем нужна РАБота, некоторые ради своих проектов сидят.
Аноним 25/05/22 Срд 06:48:02 2362817 193
Меня удивляют завидки, которые говорят, что пыха давно мертва, ведь почти все сайты на ней крутятся, в том или ином виде.
Дайте мне пример языка/фрейма/платформы, где можно так же легко и непринужденно за пару вечеров сделать работоспособный набросок проекта, где было бы такое живое комьюнити, что ответы на все твои вопросы уже есть на форумах, а если произошел экстраслучай, то пыха настолько простая, то можно методом тыка и экспериментов решить проблему самому и даже не понять, как это получилось.
Аноним 25/05/22 Срд 07:23:58 2362823 194
>>2362817
>Меня удивляют завидки, которые говорят, что пыха давно мертва
Это из той же серии что и про мёртвые рельсы. Эти дауны, чванливо заявляющие о мёртвых языках только и могут что словоблудить почём зря.



Аноним 25/05/22 Срд 07:52:20 2362829 195
>>2362661
Куда уволили, что? Не понял.
Устроился по дружбе
Аноним 25/05/22 Срд 09:44:04 2362864 196
>>2362817
Студенты тупые-зелёные такое говорят, которые с проектами не сталкивались даже. У PHP один минус - нет крупных проектов вроде амазона. Пыха это джава, только для мелких-средних проектов.
Работы валом, зар.платы как у всех, вкатиться легче, поднять проект легко, сервера копейки стоят, скорость отменная у пыхи.
Оно и хорошо что хейтят с другой стороны - меньше вкатунов, меньше конкуренции у новичков.

>>2362759
Ты полностью проект развернул? Базы должны быть полностью заполнены данными, все пароли предоставлены, все зависимости и утилиты установлены. Документации нет там? Главное проект полностью разверни, плюс в проектах всегда есть костыли, о которых ты можешь не знать.
Аноним 25/05/22 Срд 09:52:10 2362867 197
>>2362864
> нет крупных проектов вроде амазона
Фейсбук же
Аноним 25/05/22 Срд 10:15:29 2362885 198
>>2362867
Ну может, но я не знаю всм берут ли туда на работу или там и так бородатых дядек хватает.
Т.е. при релокейте мне кажется сложно на пыхе найти работу уровня айти-гиганта. Ну это и так, на любителя, может кому важно и мечтает попасть в корпорацию какую.
Аноним 25/05/22 Срд 10:21:23 2362889 199
>>2362885
> может кому важно и мечтает попасть в корпорацию какую.
Да нахуй они нужны. Я там не работал, но слышал в этих корпорациях платят меньше рынка. И это не только IT компании касается. Зато представляю какой там дрочь, субординация и прочая корпоративная шиза, которую я блять просто терпеть ненавижу.
Аноним 25/05/22 Срд 11:07:30 2362907 200
>>2362889
Аналогично. Мне маленькие ламповые продукты-компании больше нравятся, где контроля нет, пишешь себе код когда вздумается и не паришь голову.
Аноним 25/05/22 Срд 17:37:02 2363170 201
haha.webm 226Кб, 640x360, 00:00:04
640x360
>>2362907
>пишешь себе код когда вздумается
Аноним 25/05/22 Срд 19:16:44 2363289 202
>>2362648

Позвольте вмешаться. Не могу пройти мимо.

Вы почему-то ограничиваете выбор "хорошим" SPA на Vue и "ужасным" древним jQuery. Как будто нет других вариантов.

Но, на мой взгляд, реализация произвольного проекта как SPA имеет множество недостатков:

- очень медленная начальная загрузка, требующая передачи огромного объема данных
- при этом у разработчиков почему-то не хватает ума впечь нужные данные прямо в страницу, и они делают ajax-запросы
- разработчики не умеют правильно проектировать API, чтобы при переходах между страницами отправлялся бы единственный запрос, а не много
- страница не отображается при единственной ошибке в любом компоненте, в то время как при использовании HTML ошибка загрузки одного CSS/JS файла или картинки не препятствует отображению страницы
- с реактивным стилем написания кода легко сделать так, что приложение будет потреблять много CPU
- написание SPA требует по сути написать два приложения: серверное и клиентское. Значительно увеличивается объем работы.
- мне не нравится идея делать каждую кнопку отдельным файлом. Это выглядит красиво в концепции, но с таким кодом тяжело работать, прыгая по файлам на 10 строчек. Вы в коде тоже каждую функцию в отдельный файл выносите?
- необходимость возиться со сборщиками и упаковщиками кода. На большом проекте, конечно, они все равно понадобятся, но на маленьком можно обойтись и без них.
- проблемы с поисковой оптимизацией

Наконец, вы предполагаете, что использование реактивных фреймворков обеспечивает лучшую архитектуру. Но я открываю случайный блог и вижу, как автор пишет fetch() прямо в компоненте. Для тех, кто не понимает - это как если бы в PHP вы писали SQL-запросы и всю логику в HTML-шаблоне. Это вы называете лучшей архитектурой? Это же даже протестировать нормально не получится.

Или возьмите тот же Redux. Они предлагают сделать гигантский switch на 100 опций и на нажатие любой кнопки клонировать все состояние.

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

Лично мне из клиентских библиотек понравился preact (это не реакт). Его идея в том, что у него мало возможностей, но зато он весит всего несколько килобайт и позволяет при желании писать компоненты без компиляции и сборщиков. Если у вас есть простая интерактивная форма, то вполне возможно, что реализация одной формы на preact подойдет гораздо лучше, чем переделка всего приложения на SPA на популярном фреймворке, с весом бандлов под мегабайт и сложным процессом сборки.
Аноним 25/05/22 Срд 19:38:49 2363329 203
>>2362655

> В JS даже контекст можно реализовать на замыканиях.

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

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

Ты случайно не намекаешь на использование хуков вроде useState()? Я видел много хвалебных постов про эти хуки, но когда решил прочесть документацию и разобраться, то ужаснулся. То, что подают как лучшее решение, на самом деле превращает код в лапшу в стиле "функция возвращает функцию, которая возвращает функцию".

Вот, например, кусочек из Реакта (отсюда https://reactjs.org/docs/hooks-intro.html ):

function Example() {
[count, setCount] = useState(0);
...

А вот, как это выглядит с использованием ООП:

class Example {
counter = new Counter();

render() {
...

Плюсы кода с ООП:

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

Такое ощущение, что люди готовы усложнять код, лишь бы не использовать ненавистные классы. То, что делается на хуках, ,можно сделать аналогично на ООП, только без костылей.
Аноним 25/05/22 Срд 19:43:19 2363340 204
>>2363329

Ой, там в примере кода наверно надо писать

counter = new Counter(this);

а то counter не сможет пнуть компонент, чтобы он обновился.
Аноним 25/05/22 Срд 22:05:35 2363414 205
>>2363289
>- очень медленная начальная загрузка, требующая передачи огромного объема данных
Решается SSR
>- при этом у разработчиков почему-то не хватает ума впечь нужные данные прямо в страницу, и они делают ajax-запросы
Решается фреймворками вроде next и nuxt
>разработчики не умеют правильно проектировать API, чтобы при переходах между страницами отправлялся бы единственный запрос, а не много
Решается http/2
>- страница не отображается при единственной ошибке в любом компоненте, в то время как при использовании HTML ошибка загрузки одного CSS/JS файла или картинки не препятствует отображению страницы
Во первых, нужно писать код таким образом, что бы он не выкидывал ошибки. Во вторых, в любом фреймворке есть возможность отлавливать ошибки аналогично try/catch и выводить юзеру соответствующую инфу/производить другое действие/etc.
>- написание SPA требует по сути написать два приложения: серверное и клиентское. Значительно увеличивается объем работы.
Не согласен. Ты в любом случае будешь писать клиентское приложение (html + js+css) и бэк (любой язык на твой выбор).
>- мне не нравится идея делать каждую кнопку отдельным файлом. Это выглядит красиво в концепции, но с таким кодом тяжело работать, прыгая по файлам на 10 строчек. Вы в коде тоже каждую функцию в отдельный файл выносите?
Ну так не делай, сделай в одном файле 20 кнопок и экспортируй. Кто тебе запрещает?
>- необходимость возиться со сборщиками и упаковщиками кода. На большом проекте, конечно, они все равно понадобятся, но на маленьком можно обойтись и без них.
Тут согласен, да. Я так с cmake не заморачивался как с вебпаком.
>- проблемы с поисковой оптимизацией
Решается SSR
>Это вы называете лучшей архитектурой?
Нет, выводить отдельную функцию для AJAX запроса и передавать данные из неё в компонент через контекст/провайдИнжекты накмного практичнее.
> Это же даже протестировать нормально не получится.
То, что fetch можно мокать ты не слышал?
>Они предлагают сделать гигантский switch на 100 опций и на нажатие любой кнопки клонировать все состояние.
Что ты понимаешь под "всем состоянием"? Тебе никто не мешает вывести в отдельное хранилище логику работы с кнопкой и мутировать только его.
>Если вы хотите сделать переход между страницами сайта без перезагрузки, то вам не нужен SPA.
Проиграл. Если вы хотите сделать Single Page Application вам не нужен SPA. Сам свои высеры читаешь?
> Если вы пишете интернет-магазин или развлекательный ресурс с постами и лайками, вам даром не нужен SPA
>Если же вы пишете высокоинтерактивное приложение, например, редактор электрических схем или мобильную версию Инстаграма, то вам пригодится SPA.
Тут даже без комментариев.

Аноним 25/05/22 Срд 22:20:46 2363431 206
>>2363329
>Классы читать гораздо проще.
Когда у тебя в классе есть конструктор и пара методов - несомненно. А вот когда у тебя компонент переваливает за сотню строк все значительно хуже. В функциональщине в таких случаях ты точно знаешь что у тебя за состояние и что за метод его мутировал, а вот в классах...
Когда у тебя в состоянии больше одного поля код превращается в лапшу. Попробуй сделать компонент с 3 считчиками и 3 кнопками, которые увеличивают соответствующий ей счетчик и потом посмотри на количество бойлерплейта. Аналогичная проблема происходит, когда ты пытаешься расширить логику компонента, в функциональном компоненте тебе просто надо один раз написать useState, в классовом тебе надо менять единственное состояние компонента, возможно далеко не в одном месте. Аналогичная проблема в компонентах вуя, которые не используют композишн.
Ну и на последок: классы из-за своей специфики в JS работают медленно.
Аноним 26/05/22 Чтв 01:07:54 2363538 207
>>2362809
На собесе спрашивали по синтаксису, фишки ларавела, солид, рест. Никаких задач и кода. Правда было условие, что для отклика нужно приложить свой пет-проект. У меня был простой файлообменник на ларе. Как отправил пет проект, через пол часа уже договорились о собесе, там не ответил на примерно 15% вопросов (по фичам лары в основном), сам собес где-то минут 20 длился, на след день написали с оффером. Было 20 откликов на эту вакансию, но уверен что большинство не посмотрели что нужен петпроект или надеялись без него договориться. Вопросы совсем простые были, я хз в чем сложность у предыдущих кандидатов была, я даже не готовился, это был первый собес, планировал просто узнать какие вообще требования и вопросы, резюме за 15 минут нарисовал
Аноним 26/05/22 Чтв 05:16:52 2363567 208
>>2363414
> Я так с cmake не заморачивался как с вебпаком.
Почему бы не использовать cmake вместо вебпака? Нахуя все жрут кактус?
мимо
Аноним 26/05/22 Чтв 07:25:27 2363585 209
>>2363567
Потому что в таком случае cmake будет использовать webpack. cmake - это замена gulp или grunt, а не вебпака.
Аноним 26/05/22 Чтв 10:50:08 2363725 210
>>2363414
> Решается SSR
Как у ангуляра с SSR?
Аноним 26/05/22 Чтв 11:07:01 2363741 211
>>2363725
С SSR у него отлично, даже получше чем у рякта с вуем. А вот с изоморфным роутингом дела обстоят не очень...
Аноним 26/05/22 Чтв 11:09:32 2363742 212
>>2363567
У вебпака лучше интеграция со всякими фронтовыми штуками, вроде SCSS, JSX/Vue, SVG, транспиляции под старые браузеры.
Аноним 27/05/22 Птн 00:30:30 2364330 213
>>2363538
сколько времени прошло с момента вката до работки?
Аноним 27/05/22 Птн 18:15:28 2364965 214
>>2347129 (OP)
Доброго времени суток, форумчане. Просветите в вопросе о микросервисах.
Знаю что есть разные протоколы для связи между сервисами, типа http, amqp. И так вот: допустим есть микросервис-шлюз на него делает запрос пользователь(хочет что-то получить). Шлюз в свою очередь дергает нужный микросервис путём помещения job'a в очередь rabbitmq. В итоге обмен данными между сервисами происходит асинхронно, каким тогда образом шлюз должен дождаться ответа от сервиса, чтобы вернуть пользователю?

Я подозреваю что в таких случая общение между сервисами реализуется по другому, например http.
А такой синхронный тип общения между сервисами самый частный получается rabbitmq редко юзается?
Аноним 27/05/22 Птн 19:37:53 2365022 215
Сап, какие проекты сделать на пыхе, js для портфолио? Работаю 5 месяцев, знаний везде по немногу
Аноним 27/05/22 Птн 19:53:53 2365032 216
>>2365022
Так если ты работаешь, зачем делать какие-то проекты? Просто расскажешь про свой опыт работы, что делал там.
Аноним 27/05/22 Птн 19:55:36 2365034 217
>>2362817
рельсы ларавель без неприятного привкуса
Аноним 27/05/22 Птн 20:48:16 2365059 218
>>2365032
Делаю всего по немногу прост. Так сказать подавашка. Хотелось бы гит заполнить чем-то полноценным. К тому же, в резюме то надо что-нибудь показать. А то на собес и не позовут
Аноним 27/05/22 Птн 23:31:32 2365148 219
16531626185420.png 2700Кб, 2456x1736
2456x1736
После реализации файлообменника из шапки на yii уже можно пытаться найти работу, или стоит потерпеть и сделать ещё и крупный проект из шапки на laravel/symphony?
А на удалённую работу вкатиться получится?
Аноним 28/05/22 Суб 07:31:52 2365223 220
>>2365059
Ну если ты хочешь заполнить гит, сделай то, что тебе действительно нужно.

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

Но если тебе нужен проект ради проекта, можешь просто взять из шапки.
Аноним 29/05/22 Вск 00:51:03 2365996 221
Аноним 29/05/22 Вск 11:38:00 2366172 222
image.png 9Кб, 552x125
552x125
Вопрос по Yii2.
В туториале ошибка валидации отображается красным цветом. Почему у меня черный? Как сделать красным?

На stackoverflow есть только один топик с такой проблемой. Решения предлагаются такие
1. В лоб прописать css.
2. Залезть в vendor и нахимичить с ассетом бутстрапа.

Я правильно понимаю, что вторым лучше не заниматься?
Есть ли другие способы кроме прописывания css?
Аноним 29/05/22 Вск 13:12:47 2366277 223
>>2366172
Зачем ты учишь этого г мамонта?
Аноним 29/05/22 Вск 13:19:40 2366280 224
16507049471600.jpg 40Кб, 1018x683
1018x683
>>2366277
Учусь использовать фреймворки на простых примерах, затем хочу перейти на лару или симфонию.
Аноним 29/05/22 Вск 13:54:07 2366328 225
>>2366280
Начинай с лапы сразу
Аноним 29/05/22 Вск 14:01:58 2366348 226
>>2366328
Я правильно понимаю, что с ней будет проще найти работу, чем с симфонией?
Аноним 29/05/22 Вск 17:32:13 2366497 227
>>2366348
Ты хоть что нибудь выучи для начала, тебе не о работе надо думать. Первую работу ты найдешь минимум через год обучения. Выдержишь?
Аноним 29/05/22 Вск 21:04:06 2366652 228
>>2366497
Как фрейм вообще можно учить? Это ж не анатомия тебе и не французский язык. Его надо понять и применять. Попробуй-ка выучи для меня набор гаечных ключей, их форму, размерный шаг, допуск до микрона. Ты спросишь, нахуя? Да просто так. Ты скажешь, нет, пошел отсюда нахуй, когда они понадобятся, я просто откручу гайку или болт и все. Так же и тут.
Учить надо пыху или французский, потому что его применение в чистом виде нихуя тебе не даст. Что в разговоре, что в кодировании. Его нужно применять с какой-то целью. Считай, что язык это отдельные слова. А фреймворк это грамматика, словарный запас, пунктуация, и все в одном флаконе. Найди себе француженку и пизди с ней на ларавеле.
Аноним 29/05/22 Вск 21:35:09 2366667 229
16488814974381.png 2978Кб, 999x1863
999x1863
>>2366652
Анон, меня ведь не обманывают глаза при поиске вакансий на hh?
Laravel действительно самый популярный фреймоворк в рф на данный момент с которым будет проще всего устроиться?
Аноним 29/05/22 Вск 21:40:29 2366670 230
>>2366667
Без понятия, я никогда в жизни не работал программистом. Более того, я не знаю, что сейчас популярно на галерах. Но твой месседж звучит логично.
Аноним 29/05/22 Вск 22:25:18 2366709 231
Аноны, помогите мыслями. Такая задача: есть сервис (фронт на вью) и апишка (бек на ларавел). Как мне сделать jwt авторизацию в данном случае? Погуглил и ничего путного по теме нет. Алсо, резонно ли вообще разделять так сервисы? Или проще все в один проект запихнуть?
Аноним 29/05/22 Вск 22:28:09 2366710 232
>>2366667
С ларавелем иногда возникает ощущение, что в нем ничего нет по сути, как на голой пыхе пишешь.
Самое ценное кверибилдер, некоторые мидлвары по умолчанию, очереди, простенькое DI, как раз такое какое нужно для мелко средних проектов (не в пример симфони). Коллекции - обычно спорят о их нужности, но пользоваться ими легко.
Научился пользоваться моделями и кверибилдером, который возвращает коллекцию моделей - понял 50% ларки. Главное разобраться как модели устроены и работают с данными из запросов с помощью магических методов (все данные в модели хранятся в массиве атрибутов).
полезные утилиты config, env, app_path, storage_path и др.
Миграции
Все остальное вторично. Всякие там форм реквесты.
Аноним 29/05/22 Вск 22:37:22 2366716 233
>>2366709
Гуглил плохо. Но авторизацию на jwt делать плохо. jwt хорош кода имеет короткий срок гидности и тебе не нужно рефреш токены всякие выдумывать.
Аноним 29/05/22 Вск 23:28:06 2366738 234
>>2366716
Лучше бы по теме сказал что-нибудь
Аноним 29/05/22 Вск 23:37:29 2366746 235
Аноним 30/05/22 Пнд 00:01:34 2366756 236
>>2366746
Аутентификации и авторизации точнее. Для авторизации однократных действий жвт подходит. Например схема с жвт авторизацией
1) Фронтенд проходит обычную сессионную аутентификацию на ларке. У фронтенда есть кукисы что пользователь залогинен.
2) Есть микросервис, который тоже торчит в интернет. Например отправка сообщений в телегу. Микросервис не должен позволять отправлять сообщения кому попало. Но микросервис сам не занимается авторизацией пользователя на отправку.
3) Фронтенд говорит ларке дай жвт на отправку сообщения. Поскольку фронт аутентифицирован в ларкиной сессии, он получает жвт
4) Фронтенд посылает команду микросервису отправить сообщение и дает ему этот жвт.
5) Микросервис делает запрос ларке на проверку жвт. Если все ок то микросервис отправляет сообщение в телегу.
6) Все этот жвт больше не нужен.
Аноним 30/05/22 Пнд 18:42:36 2367329 237
Сап. Подскажите, как называется штука, которая позволяет избежать get-запросов на странице и вместо этого генерить отдельную "директорию". Например, как у вк: vk.com/id111 вместо того, чтобы было vk.com/profile.php?id=111
Аноним 30/05/22 Пнд 18:57:47 2367342 238
>>2367329
Чпу(Человеко понятные ссылки)
Аноним 30/05/22 Пнд 19:41:31 2367384 239
>>2367342
Ссылки вроде не с буквы "у" начинаются.
Аноним 30/05/22 Пнд 19:43:03 2367385 240
Аноним 30/05/22 Пнд 19:43:37 2367386 241
>>2366710
Человека, который не написал ни одного крупного проекта на чистой пыхе видно издалека.
Аноним 30/05/22 Пнд 19:45:01 2367387 242
Аноним 30/05/22 Пнд 20:40:12 2367435 243
>>2367386
Шито поделать, рыбак рыбака видит из далека...
Аноним 30/05/22 Пнд 20:41:29 2367439 244
>>2367435
>из далека
Знаешь значение?
Аноним 30/05/22 Пнд 20:45:41 2367441 245
>>2367439
Шито поделать, издалека мы, нехрамотные.
Аноним 30/05/22 Пнд 22:37:28 2367570 246
Я хочу написать сайт с главной страницей(там будет текста много), картинками и кнопкой: "Скачать". Смогу ли я написать такой сайт на чистом html ?
Аноним 31/05/22 Втр 00:49:15 2367626 247
>>2367570
При большом желании да, но советую все же потратить некоторое время на изучение css.
Аноним 31/05/22 Втр 07:35:35 2367685 248
>>2367570
Одностраничный сайт с кнопкой скачать.
Мужик, под статью не попади))
Аноним 31/05/22 Втр 10:56:40 2367801 249
>>2367626
Что там изучать? Просто смотришь какие стили тебе надо и копипастишь.
Аноним 31/05/22 Втр 12:51:24 2367871 250
Здравствуйте.
Гайд по вкату в шапке треда актуален?
Планирую вкатываться, но по php как то мало гайдов. В основном все дрочат фронтенд, там каждый пук обсосан до мелочей
Аноним 31/05/22 Втр 13:17:02 2367893 251
>>2366280
Озон таки стал челочником
Аноним 31/05/22 Втр 15:31:10 2367994 252
>>2366667
Популярный - да, насчет проще устроится только если 10 лет опыта
Аноним 31/05/22 Втр 20:50:15 2368285 253
>>2365148
Yii-шник с полугодовалым стажем, планирую сваливать на ларку. Взяли на первую работу после курсов от webformyself (есть на ютуб), когда предоставил в качестве резюме магаз оттуда. Yii для старта конечно подойдёт, но вот потом начинаешь задумываться о более вкусных штуках, особенно когда скроллишь hh. Так что советую подумать, оно тебе надо?
Аноним 31/05/22 Втр 21:46:19 2368297 254
>>2368285
Сколько учился до первой работы, если не секрет?
Аноним 01/06/22 Срд 00:55:32 2368386 255
Есть смысл сейчас это покупать?
https://www.chitai-gorod.ru/catalog/book/1095225/
Если нет, что можете посоветовать?
Сорри за копи-пост с ньюфаг-треда, надо уже к завтрашнему дню подобрать книгу в подарок.
Аноним 01/06/22 Срд 07:21:49 2368458 256
image.png 9Кб, 562x49
562x49
image.png 7Кб, 538x38
538x38
>>2368386
Ну главу про JS я бы точно оттуда читать не стал. jQuery в 2022 2019 тоже это нечто.
Аноним 01/06/22 Срд 21:01:05 2369065 257
Сап. Есть ли какие-нибудь решения, чтобы быстро собрать фронт на vue? Что угодно, что может помочь
Аноним 01/06/22 Срд 21:19:25 2369076 258
Аноним 01/06/22 Срд 22:05:48 2369105 259
Аноним 01/06/22 Срд 23:19:38 2369146 260
>>2369105
>>2369065

>cli
НИ В КОЕМ СЛУЧАЕ НЕ ИСПОЛЬЗУЙ!
Используй официальный тулинг в виде vite, который разрабатывается самим автором vue. Он, кстати, поддерживает не только vue.
https://vitejs.dev/guide/
Аноним 01/06/22 Срд 23:36:34 2369169 261
Аноним 01/06/22 Срд 23:59:48 2369207 262
>>2369169
Главное не используй cli. Это не просто мусор весом в несколько сотен мегабайт, туда еще и периодически всякие трояны попадают. гугли node-ipc
Аноним 02/06/22 Чтв 00:34:13 2369221 263
>>2369076
>2016
Так она еще старее вышеуказанной книги.
Аноним 02/06/22 Чтв 11:11:02 2369441 264
Подскажите, нужно при нажатии на bootstrap'овский button вызвать vue компонент. Как это сделать?
Аноним 02/06/22 Чтв 11:26:05 2369458 265
>>2369441
addEventListener('click', ()=>{вызываешь vue компонент })
Аноним 02/06/22 Чтв 15:24:29 2369673 266
Насколько сильно изменился laravel с 2018 года? Суть в том, что я учу фронтенд фреймворк vue. А язык php знаю лишь чуть чуть, прошёл часть учебника по php до ООП из ОП-поста этого треда. И я хочу посмотреть на youtube примеры приложений на vue с бэкендом. Очень часто на youtube попадаются плейлисты, где делают приложение в связке laravel и vue. Дело в том, что эти плейлисты старые, годов 2018 - 2020.

Насколько сильно с 2018 года laravel изменился? Будут ли у меня в 2к22 году тонны ошибок из-за того, что я пытаюсь запустить старый код 2018 года?
Аноним 02/06/22 Чтв 16:00:06 2369713 267
>>2369673
Посмотри какая версия laravel в курсе и устанавливай ту же
Аноним 02/06/22 Чтв 17:30:32 2369804 268
Подскажите сайтов с макетами bootstrap. Интересуют отдельные части для копирования. Например, columns, rows и подобное, а не полный функционал
Аноним 02/06/22 Чтв 19:24:39 2369902 269
>>2369673
>Насколько сильно с 2018 года laravel изменился?
Ох, не о ларавеле тебе беспокоится надо...
Аноним 02/06/22 Чтв 19:28:57 2369907 270
>>2369902
Говори, что знаешь.
Аноним 02/06/22 Чтв 19:33:26 2369915 271
>>2369907
Главное - насколько ты сильно изменился с 2018 года.
Аноним 02/06/22 Чтв 19:40:59 2369933 272
>>2369907
vue, который был в 2018 уже не котируется
Аноним 02/06/22 Чтв 19:55:10 2369964 273
>>2369673
Ларка-то 5 от 9 не прям особо сильно отличается отличается, конечно, в дохуя местах, но основа та же самая по сути своей и синтаксис не менялся, а вот вуй...
Аноним 02/06/22 Чтв 20:56:18 2370017 274
16516845965770.jpg 16Кб, 184x184
184x184
Аноны. Вопрос по ларе.
Создаю кастомное правило валидации что запись существует в бд можно было бы конечно дефолтный exists сделать но там бы спагетти получлось и прикол в том что первичный ключ это uuid. И если формат неверный, то мое правило все равно пытается отработать и закономерно 500 ошибка что uuid имеет неверный формат. Как правильно поправить?
Аноним 02/06/22 Чтв 22:40:22 2370101 275
Аноним 02/06/22 Чтв 22:49:54 2370110 276
>>2370101
Первое правило стоит на проверку uuid. Кастомное стоит вторым.
Аноним 02/06/22 Чтв 22:54:52 2370114 277
Аноним 02/06/22 Чтв 23:51:34 2370166 278
>>2370114
Не совсем подходит. Я короче заимплиментил какой то там интерфейс и у меня в правило валидатор записывается. И там я уже проверяю есть ли ошибка или нет.
В любом случае спасибо за отклики.
Аноним 04/06/22 Суб 15:23:29 2371457 279
Как можно обмазаться реактивностью и не обосраться с СЕО?
SSR не предлагать, слишком жирно получится для моего небольшого сайтика.
Аноним 04/06/22 Суб 21:37:43 2371760 280
>>2371457
Рендери страницу синхронно вместе с загрузкой страницы
Аноним 04/06/22 Суб 21:39:39 2371764 281
>>2371760
Тавтология получилась. В общем, тебе надо при загрузке страницы сразу запускать полный её рендер, без ожидания асинхронных запросов и подобного
Аноним 05/06/22 Вск 00:34:51 2371863 282
Сап, <router-link> во vue заворачивает всё в тег <a>, соответсвенно сбиваются стили. Как этого избежать? Может знает кто...
Аноним 05/06/22 Вск 01:35:43 2371877 283
>>2371863
>>2371863
В смысле сбиваются? У чего? Роутер-линк это и есть тег а, в соответствии с ним и стилизуй.
Аноним 05/06/22 Вск 12:06:11 2371946 284
>>2362759
>Сроков как таковых нет
Сроки ставят либо на типовые задачи, либо отбитые долбоёбы с фриланс-бирж всем подряд. Если пишешь кастомный функционал, то никакие сроки тебе ставить не будут - как их считать то? Ну скажут тебе неделю на какую-то таску, а там неучтены костыли будут, и выйдет 2. И хули толку от этих сроков тогда? Пальцем в небо. Обычно смотрят чтобы ты коммиты делал, а не волынил по неделе.

>мне кажется что если я продолжу вот так писать в среднем 15 строк в день меня уволят нахуй.
Классика, лол.

>Наверное мерить работу в строках неправильно
В закрытых тасках меряют обычно. Таски закрываются значит всё правильно идёт. Остальное от лукавого.
Аноним 05/06/22 Вск 13:05:10 2371987 285
>>2371863
Нахуй ты ссылки пытаешься завернуть не в <a>? Совсем больной?
ответ на твой вопрос буквально на первой ссылке в гугле
Аноним 07/06/22 Втр 11:57:27 2373577 286
>>2373567
>подводные?
no hire с подтвержденным попытом 5 лет, работающими в проде приложухами. Даже не отказывают, а просто собесят и съябывают в закат.
Аноним 07/06/22 Втр 12:02:57 2373586 287
>>2373567
Подводные в том, что все эти знания нужно применять в проекте. Сами по себе они бессмысленны. На собеседовании вопросы задают так: "С вставить нужное работал? А с вставить нужное?"

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

Все моя субьективщина и опыт, на истину не претендую. Но у меня было так.

>>2373582
Украина не европа.
Аноним 07/06/22 Втр 12:10:53 2373598 288
>>2373593
Ну слушай, так то и на senior вакансии требования на бумажке совсем не сложные. Такое же знание пхп, ларавел, вью, гит. Но вот опыт работы с этим, вот что важно. Я первую работу нашел спустя примерно 4 месяца, с учетом того, что меня устроил друг. Только через год работы я начал немного понимать, что к чему.
Знания из курсов и роадмапов вообще не пригодились по сути. Советую как можно скорее искать работу, там научишься.
Аноним 07/06/22 Втр 12:13:42 2373603 289
>>2373598
Так тебя же не возьмут просто так если нихуя толком не знаешь.
Аноним 07/06/22 Втр 12:16:29 2373610 290
>>2373603
Пройдя парочку курсов на ютубе и изучив основные термины ты тоже нихуя знать не будешь. Порочный круг.
Аноним 07/06/22 Втр 14:07:02 2373742 291
>>2373610
Я и не спорю, сам что-то читаю-смотрю всякую фигню а практики нет толком, и воз и ныне там. Просто говорю, без знакомства вряд ли возьмут.
Аноним 07/06/22 Втр 22:39:25 2374284 292
>>2373742

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

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

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

>>2373598

Senior по определению предполагает наличие опыта. Не имея опыта, ты никак не можешь стать Senior, только стажером или джуниором.

Аноним 07/06/22 Втр 22:54:44 2374303 293
>>2373586

Ты можешь применять знания в личных проектах. Вот, для примера, блог одного человека, который решил каждые пару месяцев делать по маленькому и в идеале прибыльному проекту (правда, у него уровень не джуниора и он делал проекты не для поиска работы, но блог сам по себе довольно вдохновляющий): https://tinyprojects.dev/

> будут гонять по вопросом пыхи, ларавел джс и т.д.

Это приходится делать, потому что в резюме все Львы Толстые, а по факту нет.

Аноним 07/06/22 Втр 23:45:27 2374385 294
>>2374303
Личные проекты это не прод. Я хз какой у тебя уровень, раз ты можешь такое сравнивать.

>Это приходится делать
Ну делай, мне с такими не по пути
Аноним 08/06/22 Срд 00:04:01 2374398 295
>>2373567

У меня ощущение, что помеченные синим блоки (nice-to-have) это тоже обязательно. Знать только красные блоки будет маловато. Как это так - знать SELECT, но не знать JOIN. Никуда не годится.

С другой стороны, знать Yii и Wordpress не требуется, если вы с ними не планируете работать.

Не хватает основ линукса и командной строки. Не хватает шаблонизаторов. Не хватает ORM и связанных с ними паттернов: ленивая загрузка, identity map, unit of work.

Насчет паттернов: много бесполезных паттернов вроде registry или service locator, абстрактная фабрика, и мало полезных вроде паттернов для ORM или паттернов для работы с БД (TableGateway, Data Mapper).

Насчет ООП. Тут, увы, материалов по ООП мало (вообще, во многих учебниках и туториалах с ООП беда). В Роадмапе я вижу ООП рассматривается всего лишь с двух сторон:

- синтаксис классов и объектов со ссылкой на документацию
- паттерны проектирования со ссылкой на сайты или книги

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

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

Вот этой информации вы не найдете в документации по PHP. Она описывает только синтаксис. И не найдете в книгах по паттернам, так как они рассчитаны на тех, кто уже знает ООП. А если вы полезете в паттерны, не зная ООП, то толком ничего не поймете.

И мне кажется, по этой причине, то есть из-за непонимания, у людей "ООП" ассоциируется с чем-то излишне переусложненным. Хотя это очень полезная и важная идея, улучшающая качество кода.

По ООП роадмап дает ссылку на oodesign, а там по сути рекламируются две книги:

1) Head First OO Analysis & Design. Я пролистал книгу, и она не объясняет что такое ООП, а предполагает, что читатель это уже знает. Примеры кода на Java (она довольно похожа на PHP). В первой же главе есть сеттеры и геттеры, и никто не объясняет, чем они лучше, чем публичные свойства. Опять же, предполагается, что читатель знает про инкапсуляцию.

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

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

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


Аноним 08/06/22 Срд 00:11:43 2374409 296
>>2374398
>Посередине между этими двумя направлениями не хватает важной вещи: самой концепции ООП, понимания, зачем оно нужно, какие плюсы дает, где и как его использовать (без паттернов) и где его использовать не надо, и как его использовать правильно.
>Вот этой информации вы не найдете в документации по PHP. Она описывает только синтаксис. И не найдете в книгах по паттернам, так как они рассчитаны на тех, кто уже знает ООП. А если вы полезете в паттерны, не зная ООП, то толком ничего не поймете.
Меткое наблюдение, и где вот этот промежуточный слой добывать, методом собственных проб и ошибок?
Аноним 08/06/22 Срд 00:21:28 2374420 297
>>2362759

От 50 до 200-400 за 8 часов. 50, если ты значительную часть времени занимался проектированием или реверс-инжинирингом.

>>2371457

Что у тебя за сайт, что тебе понадобился клиентский рендеринг? Блог? Интернет-магазин? Корпоративный сайт? Там выгоднее рендерить все на сервере. SPA там не нужен, он только ухудшит скорость загрузки и удобство пользования сайтом. И поисковую оптимизацию.

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

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

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

То есть, у меня ощущение, что SSR мало когда нужен. Для классических сайтов с текстом и картинками мы рендерим все на сервере и отдаем HTML. А для приложений не нужна индексация интерактивной части приложения в поисковике, достаточно индексировать текстовые страницы и сгенерированный контент.

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

Если у тебя что-то промежуточное, например, аналог Инстаграма, то тут придется извернуться, чтобы картинки и индексировались гуглом, и просматривались через SPA. Инстаграм, как я понимаю, генерирует для Гугла отдельную страницу для каждого пользователя. То есть, он отдает Гуглу только контент (картинки), но не приложение с лентой, лайками, комментариями, подписками.
Аноним 08/06/22 Срд 00:30:15 2374424 298
>>2369804

Документация по bootstrap чем плоха? Там как раз готовые примеры кода, которые можно копировать.

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

>>2369673

Без ООП и паттернов работы с БД за Ларавель браться нельзя. Это не фроеймворк для не знающих ООП или ORM.

>>2366756

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

Я думаю, что твой пример больше бы подошел для случая, когда один сайт дает другому разрешение что-то сделать. Иначе описанная тобой схема просто не имеет смысла.
Аноним 08/06/22 Срд 00:38:13 2374449 299
>>2366709

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

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

Например, ты пишешь приложение для подбора цветовых схем и без использования вью получается куча лапши, которую ты хотел бы упростить за счет грамотного применения архитектуры MVC и data-binding. Даже в этом случае, возможно, что ты сделаешь не все приложение на SPA, а лишь интерактивный блок с редактором схем.

> Как мне сделать jwt авторизацию в данном случае?

При логине фронтенд отправляет на бекенд запрос на авторизацию. В запросе содержится логин и пароль. В ответе от сервера приходит JWT токен с содержимым вроде { "id": id пользователя, "issued": время выдачи }.

После этого фронтенд добавляет этот токен во все запросы, которые требуют авторизации.

Никакого рефреша не нужно. Если ты хочешь, чтобы пользователь никогда не перелогинивался, то разрешаешь использовать токен вечно. Если хочешь чтобы он логинился заново каждый месяц, то ставишь соответствующее ограничение и отказываешься принимать слишком старый токен.
Аноним 08/06/22 Срд 00:40:39 2374452 300
>>2366652

Набор гаечных ключей "учить" не надо. А набор сверл или фрез? А станок с ЧПУ? Или ты предлагаешь взять первую попавшуюся фрезу (не зная, для каких материалов она подходит) и нажимать случайные кнопки на станке?

Ты долго на работе не задержишься с таким подходом.
Аноним 08/06/22 Срд 00:53:00 2374470 301
>>2366172

То, что в папке vendor это сторонние библиотеки и править там что-то просто глупо. Так как при обновлении библиотеки все твои правки будут перезаписаны.

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

>>2364965

А зачем в твоем примере rabbit? Его добавление выглядит как лишнее усложнение. Проще отправлять запросы напрямую.

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

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

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

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

То есть, попробуй при проектировании подумать, зачем тебе нужна очередь и что она дает. Никто не проектирует архитектуру наугад, каждое решение на чем-то основывается, есть причина, почему делают так, а не иначе.
Аноним 08/06/22 Срд 01:05:15 2374480 302
>>2363431

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

Я ничего не понял. Если ты напишешь компонент на 1000 строк, используя useState, он вряд ли будет легче для понимания, чем ООП-компонент на 1000 строк. Решение тут состоит в том, чтобы не писать слишком большие компоненты, а не заменить ООП на его имитацию через костыли.

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

В ООП мы можем вынести логику подсчета в класс Counter и создать три экземпляра класса:

class DemoComponent {
#counter1 = new Counter(this);
#counter2 = new Counter(this);
#counter3 = new Counter(this);

render() {
...
}
}

Не вижу, чтобы этот код был бы сложнее чем код с использованием useEffect/useState. По моему, он даже проще.

Про расширение компонента я не очень понял, где это надо и как тут хуки могут помочь.

> классы из-за своей специфики в JS работают медленно.

Это же просто неправда. Я буквально вчера читал вот это вот описание, как работа с объектами оптимизируется в вебките: https://webkit.org/blog/10308/speculation-in-javascriptcore/

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

ООП наоборот логичнее, так как ты в нем создаешь все поля и методы один раз при создании объекта, а с хуками ты объявляешь поля заново при каждом вызове функции рендеринга. Это просто противоречит здравому смыслу.
Аноним 08/06/22 Срд 01:12:53 2374485 303
>>2363414

>>Если вы хотите сделать переход между страницами сайта без перезагрузки, то вам не нужен SPA.
> Проиграл. Если вы хотите сделать Single Page Application вам не нужен SPA. Сам свои высеры читаешь?

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

Вконтакте, если мне не изменяет память, когда-то работал по такой схеме.

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

>>- очень медленная начальная загрузка, требующая передачи огромного объема данных
>Решается SSR
Мы придумали себе проблему и героически ее решаем.

>>разработчики не умеют правильно проектировать API, чтобы при переходах между страницами отправлялся бы единственный запрос, а не много
> Решается http/2
Это не поможет, если следующий запрос зависит от предыдущего.

> Не согласен. Ты в любом случае будешь писать клиентское приложение (html + js+css) и бэк (любой язык на твой выбор).

Да, только вывод данных на стороне сервера проще, так как нам не надо делать никаких аякс-запросов, нам не нужно никакое хранилище, не нужно поддерживать его в корректном состоянии ит.д. То есть, вывести профиль пользователя на сервере в разы проще, чем на клиенте.
Аноним 08/06/22 Срд 01:17:24 2374489 304
>>2374385

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

>>Это приходится делать
> Ну делай, мне с такими не по пути

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

>>2374409

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

По многим темам нет хороших уроков, например по HTTP на русском я как-то искал информацию и ничего толком не нашел. По концепциям ORM тоже нету ничего.
Аноним 08/06/22 Срд 02:10:37 2374503 305
>>2374485
А если тебе нужно вывести профиль пользователя, чат и проводки из бухучета, а на другой странице чат, баланс и интерактивные видоуроки по системе, а если нажимаешь на кружочек сверху, то чат уезжает в угол и счезает , а вместо чата открывается профиль пользователя, а если в проводках нажмешь на символ человечка, то открывается модальное окно с исхдящим звонком к коллеге, а если коллега начнет редактировать провоки у себя, то ты будешь видеть у себя изменения... абырвалг ... абырвалг ...
Аноним 08/06/22 Срд 13:32:30 2374723 306
>>2374480
>навигацию без перезагрузки без многомегабайтного SPA и API не реализовать?
SPA это и есть навигация без перезагркузки.
Аноним 08/06/22 Срд 13:59:23 2374766 307
>>2374489
Как связаны отбор компетентных специалистов и вопросы по пхп, ларе? Если человек имеет опыт, проекты, нахуя ему знать в чем там отличие =, == и === (как пример).

Я не беру в расчет такие компании как вк, яндекс и подобные. Где кандидатов куча и они отсеивают их алгоритмами, которые в работе не применяешь
Аноним 08/06/22 Срд 22:05:13 2375254 308
>>2374981
бери и пиши (при наличии знаний должно занять пару часов), что тебе ннада?
Аноним 09/06/22 Чтв 10:49:25 2375529 309
Можно ли сделать свою имаджборду используя ларавел?
Аноним 09/06/22 Чтв 10:55:43 2375532 310
Аноним 09/06/22 Чтв 10:56:13 2375533 311
Аноним 09/06/22 Чтв 19:37:57 2375913 312
>>2375820
Могу предположить несколько вариантов:
1. Попробуй использовать App без первого слэша.
2. Сначала require, потом всё остальное.
Аноним 09/06/22 Чтв 20:19:00 2375926 313
>>2375820
путь то покажи слева. неправильный роут указал, нет там контроллера
Аноним 09/06/22 Чтв 20:55:05 2375949 314
>>2375928
В чем там дело-то было? Я этих композиторов даже не касался пока, тут просто бы разобраться с базой.
Аноним 09/06/22 Чтв 21:12:11 2375973 315
>>2350209
А зачем это вообще делать?
Аноним 09/06/22 Чтв 22:42:45 2376017 316
>>2375928
Небось в композер.жсон забыл корень автолоада указать, да?
Аноним 10/06/22 Птн 00:58:28 2376102 317
>>2374420
Какие 400 строк в день? Иногда на фикс одного бага в две строки уходит 6 часов.
Аноним 10/06/22 Птн 01:01:35 2376103 318
>>2376102
Я так понимаю самое сложное это доказать что ты не верблюд и пройти собес?
Аноним 10/06/22 Птн 04:21:58 2376127 319
>>2374981

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

Для более глубокого понимания разработки я бы советовал так же покрывать код тестами. Они тебе помогут убедиться, что код написан правильно и помогут обнаружить проблему, если ты вдруг при рефакторинге что-то сломаешь.
Аноним 10/06/22 Птн 09:54:12 2376222 320
>>2376127
Вкатунам тесты кажутся чем-то нереально сложным, обычно. Вряд ли он это будет делать.
Хотя ничё вообще сложного в этом нет. Достаточно видосиков посмотреть немного.
Аноним 10/06/22 Птн 12:54:48 2376348 321
>>2376276
ну естественно то над чем ты сейчас работаешь ты будешь тестировать (дебажить) через дебаг или вручную. тесты не для этого - тесты для поддержания кода. чтобы последующие правки ничего не поломали. к тому же они документируют код, по тесту можно понять чего ждет (и не ждет) метод. плюс в системах со сложными связями это может помочь, т.к. иногда при правках одного места ломается другое, а заметить сразу не выходит. а тут поправили че надо, запустили юнит тесты и убедились в том, что вероятно все нормально
но то что нерабочий тест бесполезен это правда, и на поддержание тестов тоже нужны ресурсы и время, которое иногда выделить сложно..
Аноним 10/06/22 Птн 15:09:11 2376441 322
Что пишут на пхп серьезного?
Аноним 10/06/22 Птн 16:54:32 2376523 323
>>2376441
На нем сегодня половина интернета. Достаточно серьезно?
Аноним 10/06/22 Птн 16:56:37 2376528 324
>>2376523
Только половина интернета это говноблоги на вордпресе.
Аноним 10/06/22 Птн 17:16:55 2376547 325
>>2376528
Так, ну и что для тебя тогда "серьезный проект"?
ВК достаточно серьезный?
Аноним 10/06/22 Птн 17:42:57 2376568 326
image 3Кб, 94x51
94x51
Аноны, кто-нибудь работал с библиотекой TinyButStrong? Реально ли используя ее сделать скрипт, который будет объединять несколько docx файлов в один?
Аноним 10/06/22 Птн 18:18:05 2376614 327
Аноним 10/06/22 Птн 20:08:11 2376699 328
>>2376272

Насчет неймспейсов, можешь почитать урок https://github.com/codedokode/pasta/blob/master/php/autoload.md если остались какие-то непонятные моменты.

Насчет фреймворка, то вот на что стоит обратить внимание:

Ты в composer.json использовал и auto-load, и autoload и require. Чтобы не сомневаться, открой документацию по composer https://getcomposer.org/doc/04-schema.md и проверь, какие ключи там можно использовать в конфиге. Удали некорректные ключи.

> class Request{
> public function getPath(){
> $path = $_SERVER['REQUEST_URI'] ?? '/';

Это не очень правильно, точнее совсем не правильно. У тебя класс Request всегда берет данные из глобальных переменных. Это значит, что ты к примеру не можешь создать Request с какими-то вручную заданными данными. Более того, непонятно вообще в чем тогда смысл создавать объект Request, если можно было просто сделать функции вроде getPath(), которые делают то же самое.

Лучше будет, если в Request данные будут храниться в полях и будет можно создать его как с вручную заданными параметрами, так и на основе глобальных переменных. Ты можешь посмотреть на класс Request из Симфони: https://github.com/symfony/symfony/blob/6.2/src/Symfony/Component/HttpFoundation/Request.php#L290

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

> $path = substr($path, 0, $possition);
Для этого есть стандартная функция parse_url().

> if($callback === false){
> echo "404";
При ошибке 404 надо не выводить на экран число 404, а отдавать правильные заголовки с кодом 404. Но в любом случае, это не задача роутера что-то выводить. Логичнее было бы вызвать какой-то заранее определенный обработчик.

Вообще, роутер ничего не выводит. Он лишь определяет, какой обработчик надо вызвать. Если твой роутер не только разбирает URL, но и вызывает обработчик, то это правильнее называть Front Controller.

Насчет Yii, ты можешь изучить его для начала как относительно простой фреймворк, но если ты захочешь взять что-то посовременнее, то есть микрофреймворк Slim и Symfony.
Аноним 10/06/22 Птн 20:11:40 2376701 329
>>2376276

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

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

Или ты захочешь обновиться с PHP7 на PHP8, опять же, надо все вручную перепроверять.

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

Отсутствие тестов приводит к тому, что разработчики боятся делать какие-то большие изменения, а просто дописывают свой код, не заботясь об архитектуре.
Аноним 10/06/22 Птн 22:15:02 2376809 330
IMG202206102214[...].png 1542Кб, 1019x1668
1019x1668
>>2376699
хех, ты исправил папку где я уже не работал, я на время отложил разработку мвс фреймврка из за того что мало что пока знаю, уже сегодня-завтра перепишу по новой всё, что бы выглядело нормально


>Насчет неймспейсов
да с этим я уже разобрался не беда

>Также, советую ставить тайп-хинты у функций

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

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

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

да я уже заметил, я уже на 6 уроке, тобишь почти прошёл, буду ещё доку читать и разбираться более глубоко, в yii2 прям досконально хорошо реализована модель мвс


>то есть микрофреймворк Slim и Symfony

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


Я впринцыпе довольно сильно зайнтересован в изучений пыхи потмоу планирую много времени изучать

Не знаю как правельнее выразиться, но скажу как есть

дай свои контакты телеги/слаки/матрикс/что угодно, я буду переодичестки писать и спрашивать всякую интеерсную хуйню, я вижу ты кое что да знаешь. будет интересно попиздеть, если что заранее модешь написать мне в телегу @suityan
Аноним 11/06/22 Суб 12:51:27 2377124 331
Сап, хочу вернуть boolean значение из sql запроса для проверки существования email
function emailExists($email)
{
$conn = new mysqli('localhost', 'root', 'somePass', 'Students');
return $conn->query("Select case when exists(select * from students where email='$email')
then cast(1 as bit)
else cast(0 as bit) end ;");
}
Однако выдает ошибку синтаксиса sql near 'bit) else cast(0 as bit) end' at line 2.
В чем собственно ошибка и как ее можно исправить?
Аноним 11/06/22 Суб 13:12:55 2377135 332
>>2377124
Почему бы просто не вернуть пхпшный булеан?
Аноним 11/06/22 Суб 13:19:53 2377138 333
>>2377135
А как в таком случае определить зависимость от запроса в бд?
То есть мне нужно, чтобы функция возвращала true при наличии записи с указанной почтой, и соответственно false при ее отсутствии.
Аноним 11/06/22 Суб 14:42:04 2377176 334
>>2377139
...WHERE `email`=:mail LIMIT 1
Вроде как-то так
Аноним 11/06/22 Суб 16:36:41 2377241 335
>>2377124
Сделал так в итоге, сяп за помощь)
$search=$conn->query("select * from students where email='$email';");
return$search->num_rows;
Аноним 11/06/22 Суб 19:53:46 2377376 336
>>2377241
$email = "vasya@mail.ru'; DROP DATABASE;";
Аноним 11/06/22 Суб 19:59:55 2377380 337
1622423576173.jpg 22Кб, 346x387
346x387
Аноним 11/06/22 Суб 20:05:56 2377387 338
>>2377138

Ты можешь просто посчитать, сколько записей в базе есть с такой почтой. Если 0, то email не занят. Если 1 или больше, то занят.

То есть не надо писать сложную логику в запросе, когда проще получить количество и проверить его средствами PHP.
Аноним 11/06/22 Суб 20:06:54 2377390 339
Аноним 11/06/22 Суб 20:32:22 2377408 340
Вот вы делаете сайты на работе, а потом заказчику надо что-то там добавить/исправить, как это реализуется?
Аноним 12/06/22 Вск 01:39:52 2377539 341
Ну вот вы выучили language_xи может даже какие-то фреймворки/либы, далее что?
Вы понимаете что сейчас рыночек схлопнулся, и если вы не мид+ от 3х лет, то конкуренция очень большая.
Требуются знающие кадры чтобы сходу делать упругие вещи, там задачи реально не тривиальны.
Аноним 12/06/22 Вск 12:33:15 2377691 342
>>2377539
я вообще программистомвебмакакой работать не собираюсь =)
12/06/22 Вск 13:09:09 2377725 343
>>2377539
ну все во вкусно и точку пойдем работать и жрать воду с хлебом, че доебался
Аноним 12/06/22 Вск 13:21:36 2377733 344
>>2377691
с какой целью тогда изучаешь и тратишь время?

>>2377725
лучше контент менеджегером программировать всякое на аштимел всякое для адинце
Аноним 12/06/22 Вск 13:25:36 2377736 345
Блять как резюме писать?
Аноны которые уже нашли работку, покидайте свои
Аноним 12/06/22 Вск 14:11:23 2377782 346
>>2377736
https://spb.hh.ru/employer?hhtmFrom=main


с подобным уровнем самостоятельности тебе непросто будет не то что даже найти роботу, а элементарно жизненные вопросы какие-то решать
12/06/22 Вск 15:29:58 2377847 347
>>2377733
для кого-то это как в дотку пошпилить, написать пару строчек
а с утра на заводик пойти =)
Аноним 12/06/22 Вск 17:12:09 2377988 348
>>2377847
но быть упругим специалистом получающим $3k+ намного кайфовее же.
Аноним 12/06/22 Вск 17:21:06 2377998 349
>>2377782
Я написал резюме, лежит на hh и ждёт пока его прочтут, просто мне кажется что оно хуевое
Аноним 12/06/22 Вск 17:45:05 2378020 350
>>2377998
лол, имитация деятельности. (типа оправдание для себя -- ну смарите, что-то же делаю)

реально оценивай себя >>2377539

этого мягко говоря не достаточно, но это твой выбор.


12/06/22 Вск 17:56:50 2378030 351
>>2377988
ну бля не всем дано иметь зп чтобы покупать нефтяные вышки нахууу
12/06/22 Вск 18:15:45 2378045 352
>>2378030
а ваще мне настолько похуй стало на поиск стажировок на пыхомакакена, что я просто уже f# дрочить стал фор фан. именно фарш, который вообще не выстрелит
Аноним 12/06/22 Вск 19:15:55 2378108 353
>>2378045
Чего не golang какой-нибудь?
Алсо что за "упругие" (вещи, специалисты и тд)?
Аноним 12/06/22 Вск 19:29:49 2378120 354
>>2378030
это не что-то запредельное или недоступное, >>2378030
качественно работаешь, проявляешь трудолюбие в своем деле, после этого приятные цифры уже вопрос времени.

>>2378045
такое себе развлечение.

>>2378108
со временем поймешь.



13/06/22 Пнд 09:35:10 2378527 355
>>2378108
Потому что дотнет очень классный
Аноним 13/06/22 Пнд 19:02:11 2378884 356
>>2378527
дотнет говно для пидоров.
Аноним 13/06/22 Пнд 19:37:16 2378923 357
Аноним 13/06/22 Пнд 20:24:07 2378950 358
>>2378923
Да мне похуй, я битрикс макака на 7.4 сидеть всю жизнь буду наху.
Аноним 13/06/22 Пнд 21:28:00 2378987 359
>>2378950
соболезную )))))))))))))))))))))))))))))))))))))))))))))))
Аноним 13/06/22 Пнд 22:23:30 2379049 360
Чем лучше Джумла и Друпал Вордпресса??
Аноним 13/06/22 Пнд 22:54:39 2379078 361
>>2378923
Как мне обновить openserver и чтобы все перенеслось кстати?
Аноним 13/06/22 Пнд 22:55:55 2379080 362
>>2379078
так это только альфа,причем фичи так себе
Аноним 13/06/22 Пнд 22:57:18 2379081 363
>>2379080
Да у меня вообще старая пыха там, 7я.
Аноним 14/06/22 Втр 02:20:28 2379152 364
>>2379141
здоровья котику :3(перевод получил?)
Аноним 14/06/22 Втр 02:41:51 2379158 365
>>2379141
Если ты не наживаешься на доверчивых людях, то сделай себе кредитку (в Тинькофф например тебе просто на следующий день после заполнения формы на сайте привезут домой и можно уже пользоваться) или подключи овердрафт на дебетовой карте и возьми эти жалкие 1300 рублей, за займ на 6 дней даже проценты платить не придётся, сколько взял столько вернёшь.
Аноним 14/06/22 Втр 10:08:51 2379300 366
>>2377539
Смотри офисные вакансии за прелелами ДСов - там конкуренции как не было так и нет.
Аноним 14/06/22 Втр 13:45:05 2379443 367
>>2347129 (OP)
Подскажите, пожалуйста, самую простую SQL инъекцию для тестирования поля
Аноним 14/06/22 Втр 14:07:15 2379463 368
Аноним 14/06/22 Втр 14:22:51 2379474 369
>>2379463
Чет не слишком ли радикально базу удалять? Хотя почти просто, согласен
Аноним 14/06/22 Втр 17:29:35 2379632 370
А почему
<? php
echo "hello!";
?>

не выводиться через xampp?
Аноним 14/06/22 Втр 17:31:23 2379637 371
>>2379632
<? php
Тут не должно быть пробела
Аноним 14/06/22 Втр 17:33:40 2379638 372
Аноним 14/06/22 Втр 17:37:14 2379645 373
>>2379637
а как сделать,чтобы две команды не печатали 2 слова в одну строку?
Аноним 14/06/22 Втр 17:45:51 2379653 374
Аноним 14/06/22 Втр 17:46:58 2379654 375
>>2379645
Если работаешь в консоли, а не в браузере, то
echo "hello!\n";
Аноним 14/06/22 Втр 18:30:16 2379672 376
Какой есть самый примитивный фреймворк на пхп?
Аноним 14/06/22 Втр 23:02:27 2379918 377
Аноним 14/06/22 Втр 23:49:20 2379935 378
Аноним 14/06/22 Втр 23:59:26 2379948 379
>>2379672

Slim, это микрофрейморк. Но если ты собираешься изучать его код, то придется поднапрячься.
Аноним 15/06/22 Срд 00:31:45 2379959 380
Аноним 15/06/22 Срд 00:37:20 2379960 381
image.png 150Кб, 973x990
973x990
image.png 88Кб, 612x412
612x412
Я долбоёб или так и должно быть?
Аноним 15/06/22 Срд 09:16:50 2380082 382
>>2366277
А что надо учить?
Документация у yii2 охуенная, курсов полно. Всяких библиотечек полно
Аноним 15/06/22 Срд 09:37:26 2380098 383
Аноним 15/06/22 Срд 11:00:15 2380167 384
>>2374398
>ООП
На торрентах - Дмитрий Елисеев. Скорость x2
Аноним 15/06/22 Срд 11:04:08 2380170 385
>>2374981
На торрентах - дмитрий лаврик php и альберт степанцев profit
Там как раз mvc пилят с нуля по типу yii2. ORM которая возвращает объекты, view на основе буферизации с $this->render('main', ['model' => $model])
Аноним 15/06/22 Срд 11:05:24 2380172 386
>>2375820
На пике Visual studio? Если на пиратку поставить оно мне винду не заблокирует проверкой?
Аноним 15/06/22 Срд 11:14:24 2380178 387
>>2380172
Это полу-опенсорсный VSvode, ничего не заблокирует
Аноним 15/06/22 Срд 11:25:13 2380192 388
>>2380082
На нем никто уже не пишет
Аноним 15/06/22 Срд 11:35:10 2380208 389
>>2380192
>На нем никто уже не пишет
Пишут. Глупо отказываться от такого простового фреймворка у которого все есть без пердолинга.
Аноним 15/06/22 Срд 14:10:59 2380337 390
>>2380082
Ларавел или симфони
Аноним 15/06/22 Срд 15:20:43 2380417 391
>>2379653
>Изучи html
Кстати есть какой-нибудь хороший сжатый справочник-памятка? Я как-то по верхам нахватался и часто путаю/забываю вещи. inb4 htmlbook
Аноним 15/06/22 Срд 16:33:57 2380468 392
>>2380417
Там нечего запоминать.
Аноним 15/06/22 Срд 16:36:58 2380470 393
>>2380337
Вообще без разницы, это просто инструмент, который будешь использовать. Важно понимание как оно работает просто. А по фреймворку базовые вещи за вечер освоить можно.

Если фанбой какой-то то можно так достаточно долго в скорлупе просидеть, но это ваше дело
Аноним 15/06/22 Срд 16:40:37 2380477 394
Аноним 15/06/22 Срд 22:01:33 2380701 395
>>2380695
>vs code
Целый день пытался включить там дебаггер для пыхи, в конце концов настроил, но как им пользоваться так и не научился.
Аноним 15/06/22 Срд 22:20:17 2380708 396
>>2379960

В этой задаче в учебнике под спойлером есть правильная цифра - 61270 р.

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

Попробуй поменять сумму кредита на 4 000 и проверить расчеты вручную. Должно получиться 6123 р.
Аноним 15/06/22 Срд 22:23:56 2380709 397
>>2380172

VS Code бесплатный, но с телеметрией. Заметь, что есть еще VSCodium, в котором вырезана телеметрия, но какие-то расширения могут отсутствовать.

Если ты хочешь писать PHP код в нем, то стоит поставить дополнительные расширения для автодополнения и проверок кода.
Аноним 15/06/22 Срд 22:41:23 2380710 398
Аноним 15/06/22 Срд 23:00:32 2380719 399
>>2380706
Я видел эти гайды, во-первых, у меня open server, а во-вторых, все равно не работало по ним пока я не добавил php.debug.executablePath в settings.json
Аноним 16/06/22 Чтв 13:57:04 2381073 400
Сап, слоны. Вкатываюсь в Laminas (a.k.a. Zend framework). Использую phpstorm и nginx. Не понимаю, как их подружить. Вот у меня есть nginx с конфигом, который хуй пойми, работает ли. Есть в phpstorm скелет приложения, который я могу запустить на встроенном веб-сервере пыхи через терминал. А как сделать так, чтобы nginx взял весь этот код и начал юзать? Нужен просто правильный конфиг, и сервер автоматически будет подключать интерпретатор на запросах, а phpstorm - это чисто редактор текста? Или я всё равно должен как-то запускать сервер в phpstorm?
Аноним 16/06/22 Чтв 14:03:09 2381082 401
>>2381078
Он у меня есть. Я так понял, они чисто в конфиге дружатся?
Аноним 16/06/22 Чтв 18:03:57 2381271 402
Объясните пожалуйста, зачем нужна буферизация? Не проще сначала написать header/setcookie, потом уже все остальное?
Аноним 16/06/22 Чтв 18:27:15 2381289 403
>>2381287
Короче это нужно практике, если приспичит хедер где-то в середине файла вывести?
Аноним 17/06/22 Птн 04:31:08 2381555 404
Аноним 17/06/22 Птн 06:55:29 2381586 405
Установил Open server,создал файл с хеллоу ворлдом,запускаю,вместо сообщения какой то Index of,name,last modified,size,description.Что не так?
Аноним 17/06/22 Птн 07:58:50 2381594 406
>>2381586
В конфиге пропиши, что индексный файл может иметь форматы html, php.
Аноним 17/06/22 Птн 09:33:42 2381635 407
>>2381586
>>2381594
Странно, у меня все из коробки работало, правда у меня далеко не самая последняя версия. Они там что-то подкрутили в конфиге?
Аноним 17/06/22 Птн 09:48:57 2381652 408
>>2381271

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

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

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

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

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

Анон >>2381287 упомянул, что буферизация может ускорить отдачу контента. Такое возможно, но маловероятно. Такое бывает, если ты не используешь буферизацию и твой сервер отдает контент очень медленному клиенту, до которого долго идут данные. То есть, ты в PHP делаешь

echo "<html>";

И PHP стоит и ждет, пока клиент примет и подтвердит получение данных. Но сейчас обычно PHP отдает контент не клиенту напрямую, а в nginx, а nginx принимает данные быстро и охотно, потому такая ситуация маловероятна (и кстати по этой причине nginx способен улучшить производительность сервера).

Что касается кук и заголовков, то обычно во фреймворках их напрямую никто не ставит, а используют объект Response, потому проблемы с их отправкой нету. Буферизация для этого не нужна.
Аноним 17/06/22 Птн 10:51:08 2381695 409
>>2381073
> Laminas (a.k.a. Zend framework)
Где это используют?
Аноним 18/06/22 Суб 11:43:05 2382608 410
Не понял как найти эту тему в мануале (это наверное не по пхп вопрос вообще), я хотел узнать поподробнее про строку пути, вот например <a href='index.php'>Ссылка</a>(в данном случае вызывается файл из самого корня), когда в папке домена много подпапок и там тоже есть такой же файл index.php.
Мне надо было сделать <a href='../index.php'>Ссылка</a> чтобы вернуться к корректному файлу скрипта в одной из подпапок, так вот не хотелось бы экспериментировать, а знать правила построения пути к файлам.
Аноним 18/06/22 Суб 12:03:21 2382618 411
>>2382610
https://puzzleweb.ru/en/html/8_links2.php
Все, нашел. Теперь только небольшой вопрос чем отличается просто 'index.php' от './index.php', по идее оба одинаково вызовут из текущей директории файл.
Аноним 18/06/22 Суб 13:00:04 2382667 412
Сап, пыхари. Собираюсь в php вкатываться, живу в России. Есть три вопроса:

1. Сильно ли порушился внутренний рынок вакансий внутри страны после 24-го? Уменьшились ли зарплаты? Если да, то насколько в среднем?

2. Насколько я понял, php не востребован в Европе/США, но при этом востребован в России и странах СНГ. Действительно ли расклад такой, или я ошибся в своих наблюдениях?

3. Реально ли выйти на вакансию джуниора? Слышал краем уха, что php-джуниоры не нужны, и работодатели в РФ ищут как минимум миддлов.
И я-то в принципе мог бы поработать годик на фрилансе, и соврать, что у меня был коммерческий опыт.
Если бы не одно но: крупные фриланс-биржи уходят из России, а финансовой подушки хватит мне месяцев на 10, не больше.
Если буду пахать часов 9-10 в день без выходных, то смогу ли выйти на позицию джуниора через 10 месяцев, или лучше вкатываться в какой-нибудь другой язык?

Заранее спасибо за ответы и информацию.
Аноним 18/06/22 Суб 13:21:07 2382687 413
Программировать прикольно,но нет идей для чего и что создавать.
мимо просто любитель
Аноним 19/06/22 Вск 06:18:25 2383283 414
>>2382608

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

http://example.com/page.html?a=1#target - это полный URL
//example.com/page.html?a=1#target - без схемы
/page.html?a=1#target - без authority (хост, порт и авторизация)
?a=1#target
#target - тут остался только последний кусочек от URL

Это расписано тут: https://github.com/codedokode/pasta/blob/master/network/urls.md
Аноним 19/06/22 Вск 06:31:26 2383287 415
>>2382687

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

Впрочем, иногда их удается реализовать. Например, я недавно задался вопросом: какие слова и сочетания слов мы чаще всего используем в коде? Проанализировал код большого проекта, выбрал самые часто встречающиеся сочетания и добавил их как сниппеты в редактор. На все это ушло несколько часов.

Например, напечатав prifqi я получаю

private function |(): ?int {

}

pri значит private, f - function, q = ?, i = int

Кстати, самые часто употребляемые слова это $this-> и return. Я сделал для них сниппеты с буквами t и r. Ну и дополнительные сочетания вроде rn для return null.

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

Я даже поймал себя на мысли, что может быть имеет смысл это как-то автоматизировать, чтобы IDE анализировала проект и автоматически выдавала самые вероятные подсказки (используя теорию вероятности) вместо редко используемых функций или классов.
Аноним 19/06/22 Вск 06:33:18 2383288 416
>>2382687

Ну и может тебе будет интересно почитать блог, человек создает всякие простые проекты и даже с некоторых пытается заработать какую-то копеечку: https://tinyprojects.dev/projects

Аноним 19/06/22 Вск 12:02:02 2383425 417
>>2382667
> Насколько я понял, php не востребован в Европе/США, но при этом востребован в России и странах СНГ. Действительно ли расклад такой, или я ошибся в своих наблюдениях?

Не ошибся.
Если хочешь перекот в Европу, то паралельно изучай Golang.
Аноним 19/06/22 Вск 14:26:04 2383566 418
>>2347129 (OP)
Сап, php'ач!

Аноны, как настроение? Можно, я для поддержания общения буду иногда задавать тупые вопросы, на которые мог бы найти ответы в гугле или в документации, сюда? Здесь ведь все мои друзья, и мне интересно мнение анонов!

Заранее благодарен.

Чем отличается echo от print_r? Что лучше использовать?

Мимо вкатун, хех. Желаю всем отличного дня, а себе - удачи.
Аноним 19/06/22 Вск 15:30:07 2383646 419
>>2383566
П.С. И почему если из 100 извлечь квадратный корень, записать в переменную, то var_dump выводит - float? А если же озвести в квадрат, то var_dump выводит - int? Вроде ведь и 10 и 10000 - целые числа? Или это - вопрос высшей математики уже?
Аноним 19/06/22 Вск 15:32:05 2383650 420
>>2383646
П.С. Или так происходит потому, что в данном случае 10 - это результат как бы деления, поэтому результат в итоге считается дробным?
Аноним 19/06/22 Вск 15:35:14 2383653 421
Аноним 19/06/22 Вск 15:39:39 2383658 422
>>2382667
> Слышал краем уха, что php-джуниоры не нужны, и работодатели в РФ ищут как минимум миддлов.
Правда. Но если IRL вакансию и можно найти(в крупных городах, естественно), то на удалёнке скорее всего лососнёшь тунца. Никому не нужен джуниор на удалёнку. Даже хороший и толковый.
Аноним 19/06/22 Вск 15:41:23 2383662 423
>>2382667
> Если буду пахать часов 9-10 в день без выходных, то смогу ли выйти на позицию джуниора через 10 месяцев, или лучше вкатываться в какой-нибудь другой язык?
И да, не сможешь.

>>2383658-кун.
Аноним 19/06/22 Вск 15:51:50 2383673 424
>>2383653
Я это написал же.
Вопрос в другом - Почему это значение именно float, а не int? Получается, потому что квадратный корень можно извлекать и из дробных чисел, поэтому для удобства приняли, что даже если результат от извлечения корня будет целым, то просто везде будем писать float, чтобы не делать лишних движений?

Но дробное число при возведении в квадрат тоже может быть дробным, а целое - будет целым, но после возведения 100 в квадрат возвращается int.
Аноним 19/06/22 Вск 20:04:35 2383830 425
>>2383646

Это хороший и довольно интересный вопрос.

Возможно, ты подумал, что целые числа всегда имеют тип int. Это не так.

Тип int позволяет представлять целые числа от примерно -9×10¹⁸ до 9×10¹⁸ (в 64-битной версии PHP, в 32-битной предел около 2 миллиардов). Числа этого типа представлены точно, то есть каждая цифра в таком числе правильная. Мануал: https://www.php.net/manual/ru/language.types.integer.php

Тип float позволяет хранить и дробные, и целые числа примерно от -10³⁰⁸ до 10³⁰⁸ (в 64-битной версии). Этот тип неточный и сохраняет только первые 14-16 цифр числа, а остальные цифры теряются (но их количество не теряется). Хуже того, многие дробные числа вроде 0.1 нельзя точно представить в формате float. Также этот тип интересен тем, что в нем есть отрицательный ноль -0, минус и плюс бесконечность и NaN, "не число". NaN можно получить, если вычислить sqrt(-4). Мануал: https://www.php.net/manual/ru/language.types.float.php

Как видишь, целое число может быть и типа int, и типа float. Обычно целые числа представлены типом int, но они могут превратиться в float если выйдут за допустимые пределы или если станут дробными. Например, если ты поделишь int(5) на int(2), то получишь float(2.5).

Функция вычисления корня возвращает тип float. Так сделано, потому что корни чаще получаются дробными, чем целыми и функция, которая всегда возвращает int, была бы бесполезна.

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

Перечитай написанное выше: float это приближенный тип. Если после извлечения корня из 10 000 ты получил float(100), то ты не можешь быть уверен: это точно 100 или это на самом деле 100,000 000 000 000 000 1 и последняя цифра просто не сохранилась. Так как мы не можем гарантировать, что там ровно 100, мы не хотим преобразовать число в int. Обычно, если число превратилось во float, в int оно само уже не вернется.

Конечно, эту проблему можно решить: можно преобразовать результат в int, возвести в квадрат и сравнить с исходным числом. Если они совпадут, значит, результат действительно целый. Но это надо заморачиваться и писать дополнительный код, и наверно просто никому это не нужно (но ты можешь написать свою функцию, которая будет это делать, если есть желание).


Аноним 19/06/22 Вск 20:07:13 2383832 426
>>2383566

echo может выводить только строки и числа. print_r и var_dump выводят данные любых типов, например, массивы. print_r и var_dump предназначены больше для отладки, чем для использования в реальном коде. Выбирай, что использовать, в зависимости от ситуации.
Аноним 19/06/22 Вск 23:33:57 2383971 427
>>2347129 (OP)
Заливаю проект на прод сервер. Проект laravel + vue. Сервер работает, но фронт выдает ошибку 404 (redirected you too many times.).
Нода установлена. В чем проебался? На локальном работает все заебок. Видимо, вью установлен как-то неправильно. Может, делал кто-нибудь подобное?
Аноним 20/06/22 Пнд 01:40:25 2384053 428
Аноним 20/06/22 Пнд 07:18:31 2384124 429
Аноним 20/06/22 Пнд 16:19:47 2384455 430
>>2382667
>1. Сильно ли порушился внутренний рынок вакансий внутри страны после 24-го? Уменьшились ли зарплаты? Если да, то насколько в среднем?
Сильно - вакансий в разы меньше стало.

>2. Насколько я понял, php не востребован в Европе/США, но при этом востребован в России и странах СНГ. Действительно ли расклад такой, или я ошибся в своих наблюдениях?
В РФ тоже почти не востребован - все на ноде делают. Или питоне.

>3. Реально ли выйти на вакансию джуниора? Слышал краем уха, что php-джуниоры не нужны, и работодатели в РФ ищут как минимум миддлов.
Да. На позицию джунов ищут миддлов, на позицию миддлов - синьёров. Без опыта делать там нечего, тем более сегодня.

>Если буду пахать часов 9-10 в день без выходных, то смогу ли выйти на позицию джуниора через 10 месяцев, или лучше вкатываться в какой-нибудь другой язык?
Лучше в питон тогда - там легче учиться. Или в жс.
Аноним 20/06/22 Пнд 19:15:49 2384677 431
Что вообще спрашивают на собеседованиях? Лучше честно отвечать "не знаю" или булшитить что-нибудь?
Аноним 20/06/22 Пнд 20:54:02 2384748 432
>>2384455

> В РФ тоже почти не востребован - все на ноде делают.

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

Ну и твое утверждение не проходит проверку на hh:

разработчик php, вся Россия - 3432 вакансии
разработчик node, вся Россия - 1311 вакансий
разработчик python, вся Россия - 4315 вакансий

Ты бы потратил минуту, прежде чем выдавать свои фантазии за реальность.

Что касается Питона, он мне нравится и я его использую (numpy, sympy, sqlalchemy, плюс в нем есть библиотеки для нейросетей), он дает высокую скорость написания кода, но в нем нет проверки типов в рантайме, mypy выдает очень много левых предупреждений, и его производительность, как я понимаю, ниже, чем у PHP, так как в Питоне больше ценят простоту кода, чем оптимизацию.
Аноним 20/06/22 Пнд 20:55:36 2384752 433
>>2384677

Погугли вопросы к собеседованию. Новичков без опыта спрашивают по теории, то есть, то, что описано в официальном мануале PHP, ООП, реляционные СУБД, джойны, транзакции, блокировки, внешние ключи. Какие фреймворки/библиотеки знаешь.
Аноним 20/06/22 Пнд 21:25:27 2384778 434
>>2384748
Да не пишут бек на ноде без тайпскрипта уже. Инкрементальную компиляцию почти не замечаешь. Типизация в общем лучше чем в пхп 8, но в пыхе добавляют фичи в язык"шоб было как у шарпе с жавой", а в js мало кардинальных улучшений.
Аноним 20/06/22 Пнд 21:29:59 2384783 435
>>2347129 (OP)
Есть спецы по вордпрессу? Есть один сайт. Залез в базу, а там в поле post_content таблицы wp_posts текст поста хранится с html тегами. Это нормально? Пробовал гуглить, но ничего не нашел.
Аноним 20/06/22 Пнд 21:45:09 2384793 436
>>2384748
Сейчас вроде Go становится популярным.
Аноним 20/06/22 Пнд 21:45:51 2384794 437
>>2384748
>разработчик php, вся Россия - 3432 вакансии
80% - параша уровня завода по заёбистости и зарплате. Что смыс циферками мерятся если на пыхе 90% это сайтики на вп и битриксе, а у остальных нормальная разработка?
Аноним 20/06/22 Пнд 21:48:11 2384797 438
>>2384783
Для ВП это норма. С другой стороны как ты пост с разметкой сохранишь? Правда в норме это не норма нихуя и БД там полный ад.
Аноним 20/06/22 Пнд 22:17:54 2384825 439
>>2384748
вакансии по питону по разным областям, не только по вебу. Плюс преподавателей курсов ищут )
Аноним 20/06/22 Пнд 22:28:23 2384832 440
>>2384748
963 вакансии по запросу «django or flask not преподаватель»
Аноним 20/06/22 Пнд 23:02:37 2384849 441
>>2384832
сори неправильно посчитал. По России 826 получается.
Аноним 20/06/22 Пнд 23:41:21 2384864 442
>>2384455
>Лучше в питон тогда - там легче учиться. Или в жс.
Мда блат. Если ищешь полегче - курьером.

Нужно учить то что востребовано и на что есть спрос там где живешь/собираешься работать.

По пайтону при поиске будешь конкурировать со студентами/выпускниками которых плотно штрунделировали по алгоритмам на этом самом пайтоне не один год.





Аноним 21/06/22 Втр 00:05:15 2384873 443
>>2384864
> Нужно учить то что востребовано и на что есть спрос там где живешь/собираешься работать.
И что же востребовано в России? PHP? Кулстори, Боб. Кулстори. Расскажи ещё.
Аноним 21/06/22 Втр 00:57:02 2384879 444
>>2384873
Дык, открой вакансии и посмотри... Symfony/Laravel, как везде. Плюс вордпресс для школоты.
Аноним 21/06/22 Втр 01:17:12 2384881 445
>>2384873
Бозе, ну вороти нос, ага))

На пьиЭйчьПьи работает ~80% всех сайтов. Это нужно дорабатывать и обслуживать. На рыночке в целом спрос есть.

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




Аноним 21/06/22 Втр 01:36:16 2384887 446
Через heredoc php функции вызываются вообще? Например date() чтобы вывести у timestamp'а из бд.
Аноним 21/06/22 Втр 01:45:16 2384889 447
>>2384887
конечно,
просто напиши cli-утилиту/скрипт на php,
можно даже с параметрами,
и вызывай с помощью интерпретатора, а-ля /bin/php
Аноним 21/06/22 Втр 01:47:56 2384891 448
>>2384889
Не, я просто думал он типа echo работает, в крайнем случае фигурными скобками выделить как значения.
Аноним 21/06/22 Втр 01:51:09 2384893 449
Аноним 21/06/22 Втр 01:54:54 2384894 450
>>2384893
Ну вот я выбираю записи из бд, мне их надо на страницу все отобразить, а там у каждой записи timestamp вместо времени человеческого, как поступить лучше?
Аноним 21/06/22 Втр 01:57:32 2384896 451
Аноним 21/06/22 Втр 02:01:58 2384898 452
>>2384896
Не знал про такое, спасибо. Читаю эти книги по пхп и как рыба об лед бьюсь, в жизни все равно вещи по-другому делают. Хз как устраиваться куда-то вообще.
Аноним 21/06/22 Втр 02:03:44 2384899 453
>>2384898
если освоишь ООП, MVC и Solid -- иди пили Symfony/Laravel, за них платят по-человечески
Аноним 21/06/22 Втр 02:05:04 2384900 454
>>2384899
Да я уже про деньги не думаю, мне бы хоть за еду, лол.
Аноним 21/06/22 Втр 02:14:47 2384905 455
>>2384900
А что ты уже умеешь, и где обитаешь?
Аноним 21/06/22 Втр 03:54:25 2384944 456
Аноним 21/06/22 Втр 04:50:58 2384945 457
Пытаюсь создать проект Laravel , ввожу команду php composer.phar create-project --prefer-dist laravel/laravel mysite , получаю сообщение To enable extensions, verify that they are enabled in your .ini files:
- C:\php\php.ini
Что это означает и что делать?

Аноним 21/06/22 Втр 07:33:07 2384978 458
>>2384945

У тебя не установлены (или установлены, но не включены в php.ini) какие-то расширения PHP, которые требуются для Laravel. Какие именно, должно быть написано в сообщении об ошибке.
Аноним 21/06/22 Втр 08:07:09 2385001 459
image.png 98Кб, 947x613
947x613
Как в шаге установки модуля получить введенные данные в инпут?

Почему через GET/POST не получается вытащить данные с инпута? Битрикс их куда-то в другое место сохраняет или как?

Я пробовал и вручную указывать метод и пост и гет, но толку ноль.
Аноним 21/06/22 Втр 09:28:00 2385025 460
>>2385001
Всё пацаны, разобрался. Сейчас у меня что-то данные с чекбокса не хотят устанавливаться. Думаю туплю где-то как обычно.
Аноним 21/06/22 Втр 09:28:46 2385026 461
>>2385001
Через контекст, а с него через $request оказывается надо всё брать.
Аноним 21/06/22 Втр 11:08:52 2385081 462
Аноним 21/06/22 Втр 11:33:06 2385104 463
Аноним 21/06/22 Втр 11:40:01 2385117 464
>>2385104
А, это эксклюзивно к битриксу относится, я так и думал. Кстати как ты его начал изучать? У меня в регионе вроде пользуется спросом, в вакансиях зачастую идет вместе с пхп.
Аноним 21/06/22 Втр 14:13:59 2385258 465
Аноним 21/06/22 Втр 14:26:02 2385269 466
const от define() отличается ведь, да? Там в комментах мануала пишут что-то про время доступа или что-то в этом роде.
Аноним 21/06/22 Втр 20:17:46 2385716 467
Можно ли базовыми средствами зашифровать(или как там) передачу данных с формы на сервер?
Аноним 21/06/22 Втр 20:38:15 2385745 468
>>2385117
Начинал в 2019 в июне вкатываться. Начал с фронта как и большинство вкатунов. Потом забросил, даже не осилив жс. Потом через 3 месяца снова начал пытаться, у меня случилось горе, и я снова сдался. Потом через полгода начал изучать C# по метаниту, прошел где-то до делегатов, охуел от сложности всего и снова сдался.
Потом я наконец пришел в пхп, его уже довольно основательно изучил по разным ресурсам, уже и задачи на кодварсе решал, правда несложные, максимум 5кую. Параллельно немного изучил sql и фронт. Ну и тоже периодически бросал, возвращался и так вот до начала этого года. С начала года начал пытаться в Битрикс, т.к. подумал, что это изи вкат во ВСЕХ планах. Но оказалось изи вкат только в плане количества вакансий и меньшей конкуренции.

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

Щяс вот на обучении был в компании одной с середины мая, все задания сдавал вовремя, жду результатов. Могу и на стажировку попасть. Хотя все мне на дваче говорили, что это плохая компания, раз она набирает на стажировку не сразу, а после какого-то обучения. Типа это неправильно. Как по мне, а как еще отсечь полных аутов и незаинтересованных людей? Если только набирать сразу джунов, но они почему-то не делают этого. Нас из 50 человек вкатунов осталось меньше 10-ти. Обучение ес что бесплатное было.

В общем, за всё время вкатунства, это первый раз, когда мне удалось зайти так далеко, да еще и заинтересоваться всей этой темой. Я седня сдал ласт задание и был нереально рад, что смог его сделать. Завтра уже продолжу учиться с радостью. Щяс позволю себе посмотреть аниме перед сном.

Аноним 21/06/22 Втр 20:41:04 2385751 469
Аноним 21/06/22 Втр 20:41:52 2385753 470
>>2385745
>Щяс позволю себе посмотреть аниме перед сном.
ненадо, а то опять случится горе и ты сдашься
Аноним 21/06/22 Втр 20:57:16 2385764 471
>>2385745
Я вообще конкретно про битрикс интересовался, может хорошие курсы или книги, но твоя история тоже интересна. У меня тоже уже несколько раз руки опускались и сам я очень медленно все делаю в плане обучения. Там наверное надо бац-бац кабанчикам быстро все.
Аноним 21/06/22 Втр 21:05:57 2385771 472
>>2385751
О, спасибо. Все подробно и понятно.
Аноним 21/06/22 Втр 21:12:42 2385782 473
>>2385764
Ну хорошие курсы только от самого битрикса, еще можно посмотреть Михаила Базарова. Остальное только по крупицам собирается с опытом и гуглением.
Аноним 21/06/22 Втр 21:24:59 2385797 474
Почему полям класса все равно надо писать модификатор public (иначе не пропускает интерпретатор), вроде там public по-дефолту должен быть?
Аноним 21/06/22 Втр 23:40:33 2385872 475
Аноним 21/06/22 Втр 23:52:21 2385879 476
>>2385872
Ну вот написано же
>Свойства класса могут быть определены как public, private или protected. Свойства, объявленные без явного ключевого слова области видимости, определяются как общедоступные (public)
Я делаю вывод что можно объявлять без указания области видимости и будет назначено public. Так вот я не могу просто написать свойство класса $x без всего, пишет ошибку.
Аноним 22/06/22 Срд 07:47:50 2385959 477
>>2385879
>можно объявлять без указания области видимости и будет назначено public
Схуяли? И зачем вкатышу вообще об этом думать?
Аноним 22/06/22 Срд 11:18:19 2386063 478
>>2385751

> Определять константу почти всегда лучше с помощью define(), потому что тут больше возможностей и меньше вариантов «поймать» ошибку.

Это неправильный вывод. Объявлять лучше с помощью const, так как это более чистый синтаксис и он (наверно) лучше понятен статическим анализаторам кода. define можно использовать только если const не работает.
Аноним 22/06/22 Срд 11:18:52 2386064 479
>>2385716

Если использовать протокол HTTPS, то все передаваемые и получаемые данные шифруются.
Аноним 22/06/22 Срд 11:21:37 2386067 480
>>2385797

Да, такая рекомендация есть в стандартах. Я думаю, это ради читаемости, чтобы было видно, что поле публичное, а не то, что ты пока не решил, каким его сделать.
Аноним 22/06/22 Срд 12:11:45 2386118 481
>>2386067
Просто мне показалось странным, что методы пропускает без указания, а свойства нет. Там похоже ноги растут из старых версий пыхи где надо было var писать.
Аноним 22/06/22 Срд 12:36:12 2386149 482
image.png 53Кб, 945x532
945x532
Аноним 22/06/22 Срд 12:47:19 2386160 483
image.png 15Кб, 588x285
588x285
ну что за хуйня? уже весь интернет перелопатил. Заливаю проект на сервер, а он выдает 404. Хотя на локальном все отлично работает. в чем ошибка то блять?
Аноним 22/06/22 Срд 13:49:17 2386222 484
Правь .htaccess
У тебя скорее всего рут сайта на папку public поставлен.
Аноним 22/06/22 Срд 15:10:27 2386300 485
>>2386273
Так полно вакансий где нужен опытный разраб пхп, чтоб переписывать код на го.
Аноним 22/06/22 Срд 15:14:55 2386309 486
>>2386300
Что там, по скорости такой прирост?
Аноним 22/06/22 Срд 15:23:15 2386323 487
Аноним 22/06/22 Срд 15:58:09 2386372 488
Привет всем. Как себя чувствует пхп в плане вакансий в настоящее время? Стоит вкатываться? Развивается ли пхп или загнивает?
Аноним 22/06/22 Срд 16:06:11 2386383 489
Аноним 22/06/22 Срд 16:10:32 2386389 490
>>2374485
>достаточно добавить известную библиотеку на десяток килобайт, которая перехватывает клики по ссылкам и грузит страницы аяксом. Мы получаем переходы без перезагрузки, отличную поисковую оптимизацию, не написав ни строчки клиентского кода.

что за библиотека?
Аноним 22/06/22 Срд 16:12:48 2386394 491
>>2375820
что за цветовая схема?
Аноним 22/06/22 Срд 17:28:29 2386449 492
>>2386372
как обычно, вакансий полно -- открой сам и посмотри
Аноним 22/06/22 Срд 23:55:09 2386753 493
image.png 1338Кб, 1376x764
1376x764
>>2386372
Сижу обновляю приложение на РНР, которое я написал на заказ в одно лицо на
plain PHP + MariaDB + Bootstrap +JS/jQuery + SCSS + Gulp + RabbitMQ + Java.

Бизнес, основанный на этом приложении, принёс владельцам около 1 млрд рублей за 5 лет. Я получил за это время свои скромные 2-3 М, параллельно работая над другими подобными проектами.

Работать буду до утра, и могу ответить на вопросы по программированию и фрилансу.
хуи не сосу, бочку не делаю
Аноним 23/06/22 Чтв 01:23:15 2386780 494
>>2386778
В вопросе тебе стоило бы указать версию РНР и тип БД.
Попробуй так:

$statement->execute();
$statement->setFetchMode(PDO::FETCH_ASSOC);
while($row = $statement->fetch()) {
print_r( $row );
}
Аноним 23/06/22 Чтв 01:25:40 2386781 495
>>2386778
Не по теме конечно, но писал бы ты лучше альтернативным синтаксисом, а то выглядит как блевота, честно говоря.
Аноним 23/06/22 Чтв 03:32:58 2386810 496
есть ли смысл писать на php8? или лучше сидеть на 7.4? просто многие либы как будто не поддерживают восьмерку и работают на ней хуево
Аноним 23/06/22 Чтв 03:34:00 2386811 497
>>2386753
сколько потребовалось чтобы вкатиться в работу?
Аноним 23/06/22 Чтв 07:03:07 2386841 498
>>2386811
вкатиться на первые копейки -- пара месяцев после курсов (в сертифицированном обучающем центре, очно)

на +- норм деньги -- стандартные 10 000 часов коммерческого опыта
Аноним 23/06/22 Чтв 07:04:37 2386842 499
>>2386808
открой код страницы и посмотри, что там на месте изображений
Аноним 23/06/22 Чтв 08:17:08 2386848 500
>>2386807
<? php foreach(): >?
#code
<php endforeah; ?>
Аноним 23/06/22 Чтв 10:27:07 2386923 501
>>2386841
Какой раньше вкат легкий был, сейчас уже после никаких курсов не возьмут
Аноним 23/06/22 Чтв 10:50:54 2386942 502
Как обновить opensever без настраивания всего заново и потери существующих БД?
>>2386923
А сейчас как вкатываются вообще тогда?
Аноним 23/06/22 Чтв 16:54:48 2387257 503
>>2386942
> А сейчас как вкатываются вообще тогда?

Никак, джуны не нужны, сделаешь пару пет проектов, 18 летний тимлид обоссет на собесе и пойдешь с лицом лягушки на завод
Аноним 23/06/22 Чтв 17:32:27 2387295 504
>>2387257
На заводе пишут на пыхе? Или ты имеешь в виду гайку крутить?
Аноним 23/06/22 Чтв 19:32:03 2387421 505
>>2387257
>18 летний тимлид
Нах в такие уебанские конторы ходить, лол.
Я стал отказываться от таких цирковых собеседований (могу себе позволить)
Аноним 23/06/22 Чтв 22:37:22 2387509 506
>>2387295
На завод только с ВО прогеров берут, а вкатуны гайки крутить, да
Аноним 23/06/22 Чтв 23:08:47 2387521 507
>>2387509
Ну у меня бакалавриат по ит, толку.
Аноним 23/06/22 Чтв 23:30:10 2387532 508
>>2387521
так ты умеешь что-то или нет?
Аноним 24/06/22 Птн 01:53:17 2387578 509
>>2387532
Define "что-то". Могу из формы значения в базу писать и потом выводить их через echo. Но так никто не делает ведь да, там какие-то шаблонизаторы нужны и т.д.
Аноним 24/06/22 Птн 09:17:26 2387636 510
>>2386160

Тебе браузер пишет - слишком много редиректов. Скорее всего твой сайт редиректит сам на себя.

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

>>2386389

Пиджакс, на vanilla js, 6 Кб в сжатом виде. https://github.com/MoOx/pjax

Меня удивляет, что люди не знают про такую библиотеку и начинают изобретать велосипеды на реакте.
Аноним 24/06/22 Птн 09:26:39 2387638 511
>>2386778

Это PDO? Тогда в нем есть fetchAll(). Однако, в него не надо передавать текст SQL запроса. Ты ведь уже указал текст запроса при вызове prepare(). Вот мануал (и там есть примеры кода с fetchAll): https://www.php.net/manual/ru/pdostatement.fetchall.php

Кто выдает ошибку? Твоя IDE или при выполнении кода реально возникает ошибка?

Не надо писать цикл с fetch, если тебе нужны все записи, то лучше использовать fetchAll().

Также, при выводе данных на странице нужно использовать htmlspecialchars, чтобы не было уязвимости XSS и чтобы все символы корректно вставлялись в HTML, как описано тут: https://github.com/codedokode/pasta/blob/master/security/xss.md
Аноним 24/06/22 Птн 09:31:42 2387640 512
Аноним 24/06/22 Птн 09:37:04 2387643 513
Аноним 24/06/22 Птн 10:40:09 2387678 514
>>2387643
Я читал урок и в принципе понимаю как поделить обработку формы и "шаблон", который вызывает через action этот обработчик, но вот этих сторонних шаблонизаторов не касался.
Сейчас на чистом не пишут, только фреймворки и CMS? И предполагается что джун уже знает это все чтобы с 1го дня с этим работать?
Аноним 24/06/22 Птн 13:57:54 2387826 515
Не могу определиться какой вариант лучше использовать.

От тебя жду ответ - какой вариант предпочтешь и почему.
Код: 3v4l.org/sJMke
Аноним 24/06/22 Птн 14:09:30 2387831 516
>>2387826

Есть еще вариант с array_reduce, по моему, в плане читаемости вариант с циклом лучше и короче, только скобку лучше перенести:

foreach ($enjoyers as $e) {
$sum += $e->getSomething();
}

Также, в коде с array_map желательно закрывающую скобку ставить в начале строки

echo array_sum(array_map(
....fn($e) => $e->getSomething(),
....$enjoyers
));

array_map выгодно использовать, когда вызов функции умещается в одну строку:

$ids = array_map('intval', $iids);
Аноним 24/06/22 Птн 16:40:13 2387949 517
Аноним 24/06/22 Птн 22:40:17 2388356 518
image.png 8Кб, 545x77
545x77
>>2387831
Ну да, вышло короче на одну функцию.

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

Спасибо.
Аноним 24/06/22 Птн 22:53:02 2388360 519
>>2387918

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

mysql -uroot users

Если происходит такая же ошибка, то придется немного заморочиться.

Тут https://askubuntu.com/a/763359 пишут, что теперь подсоединиться к mysql как root можно только если ты залогинен в систему как root. Работать из-под root это очень плохая идея, потому нужно создать в MySQL нового пользователя и дать ему права на все базы данных. Для этого коннектимся к БД, используя sudo:

sudo mysql -uroot

Далее, создаем нового пользователя БД:

CREATE USER 'имя пользователя'@'localhost' IDENTIFIED BY 'пароль';

Обрати внимание на @localhost - это значит, что пользователь сможет подключаться только с твоего компьютера, снаружи под ним нельзя зайти.

Далее, даем новому пользователю все виды доступа ко всем таблицам всех баз данных:

GRANT ALL PRIVILEGES ON звездочка.звездочка TO 'имя пользователя'@'localhost' WITH GRANT OPTION;

И применяем изменения:

FLUSH PRIVILEGES;

Если ты хочешь дать доступ не ко всем базам данных, а только к одной, то пиши ... PRIVILEGES ON базаданных.звездочка ...

После этого проверь, что логин работает:

mysql -uпользователь -pпароль

Если все ок, то впиши данные в свой скрипт.

Мануал:

CREATE USER https://dev.mysql.com/doc/refman/8.0/en/create-user.html
GRANT https://dev.mysql.com/doc/refman/8.0/en/grant.html

Чтобы увидеть всех пользователей, выполни запрос

Аноним 24/06/22 Птн 23:43:44 2388380 520
>>2387678
Ну где-то и на яве пишут, джун сейчас во-первых никому не нужен, во-вторых да, должен знать все и больше
Аноним 25/06/22 Суб 00:25:09 2388396 521
>>2388380
Ну охуенно, а где нужны джуны тогда? Сейчас вроде "дефицит айти специалистов".
Аноним 25/06/22 Суб 00:34:06 2388400 522
в общем спустя какое-то время подумал - нафиг это программирование, вот это всякое айти там да.
бездушно это, не лежит действительно к этому душа так сказать.

Аноним 25/06/22 Суб 01:26:18 2388438 523
Аноним 25/06/22 Суб 06:15:14 2388464 524
>>2388396
>>2388400
Ну в битрикс вкатывайся. Там не нужны алгоритмы, надо просто разбираться в самом битриксе, в ООП, в MVC, которое у битры немного другое, немного скуль, немного фронт. Хотя где-то много фронта, т.к. нет отдельного, по-разному короче.

Я к тому, что тут проще вкатиться, конкуренция меньше, знаний надо меньше. Надо лишь разобраться в устройстве всего битрикс фреймворка и всё.
Аноним 25/06/22 Суб 13:49:55 2388622 525
>>2386222
>>2387636
Спасибо, ошибка действительно была из-за непрвильно выставленного рута сайта
Аноним 25/06/22 Суб 13:51:55 2388625 526
>>2388396
Действительно дефицит, только как ты написал СПЕЦИАЛИСТОВ. А джун нахуй нужен? Чтобы его учить? Ты хоть 2 года учи дома за проектами свой ларавел, разработка это совсем другое. В компании будешь учиться с нуля, это никому не нужно
Аноним 25/06/22 Суб 14:59:37 2388671 527
>>2388625
Ну и откуда кабаны хотят новых "мидлов" тогда получить?
Аноним 25/06/22 Суб 15:28:32 2388691 528
>>2388671
Обучать есть смысл, если работа узкопрофильная. А на пхп у кабана всегда найдется работник с подходящим опытом. Даже если поиск будет долгим это профитнее чем учить новичка с нуля.
Аноним 25/06/22 Суб 15:28:33 2388692 529
>>2388671
Да им поебать, придет человек хорошо, не придет итак деньги капают, вакансия есть не просит
Аноним 25/06/22 Суб 16:06:17 2388742 530
>>2388625

Ты не прав. Джун, если он дома тщательно изучил HTML, CSS, PHP, ООП, фреймворк, СУБД, алгоритмы, проектирование интерфейсов, очень полезен.

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

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

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

Естественно, везде речь идет о сообразительном джуне, готовом разбираться в коде и любящем читать англоязычную многостраничную документацию. Если это какой-нибудь выпускник курсов по информатике, которого учили только числа Фибоначчи считать, или вкатыш, не понимающий ООП и не желающий читать мануалы, но считающий, что он заслуживает средней зарплаты по отрасли, то конечно, толку от него 0.
Аноним 25/06/22 Суб 16:14:26 2388749 531
>>2388742
Откуда вы это берете пздц. Тут одни диваны-вкатыши сидят? Какие-то абстракции в голове придумываете, как можно джуна занять и за что ему все таки заплатить. Такое может написать только тот, кто в компании никогда не работал
Аноним 25/06/22 Суб 16:37:41 2388785 532
>>2388749
Расскажи реальную ситуацию из собственного опыта.
Аноним 25/06/22 Суб 17:07:52 2388807 533
>>2388785
Рассказываю, джунов никто не берет, нигде, хантят одних и тех же людей туда сюда, делают проектики, потихоньку зарабатывают
Аноним 25/06/22 Суб 21:41:54 2389009 534
image.png 24Кб, 314x186
314x186
image.png 87Кб, 250x367
250x367
кароче решил изучить этот ваш пиэйчпи. буду каждую неделю теперь отписывать об результатах. сам я работаю полу эникеем полу админом так что я не вкатывальщик, похуй искать работу по этой залупе или нет посмотрим. до этого програмирование вообще не изучал по факту(так в шараге проходили но я ничего не делал)
Аноним 25/06/22 Суб 23:18:01 2389088 535
>>2388749

Открываем hh, выбираем "без опыта", получаем вакансии: https://hh.ru/search/vacancy?area=1&area=113&experience=noExperience&search_field=name&search_field=company_name&search_field=description&text=%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA+php&from=suggest_post

Ну и может быть, как опытный, ты расскажешь никогда не работавшему в компании человеку, кто у вас занимается прикручиванием форм обратной связи, перекрашиванием кнопок и правкой текста условий использования сайта? Исключительно сениоры с 10 годами стажа?
Аноним 26/06/22 Вск 00:31:19 2389154 536
>>2389009
Принтер почини мне, компьютерщик
Аноним 26/06/22 Вск 00:44:16 2389170 537
>>2389009
Я умею подключаться к mysql, делать запросы, еще могу решать задачки на кодварсе, еще задачки с ОП книги, еще... Синтаксис ООП знаю, но применять пока не умею, только собираюсь писать свой фреймворк по гайду. Потом мб свой целиком зделаю, хотя зачем, тут ведь главное понять внутренности плюс-минус, а потом уже переходить к популярным фреймворкам типа битрикса или ларавель или симфони. Оттуда уже делать какой-то проектик, хотя это сложно когда нет поставленной задачи, за которую тебе заплатят. Но один проект заставить себя можно сделать. Правда до конца не получилось пока ни разу.

Держу в курсе.
Аноним 26/06/22 Вск 01:16:17 2389201 538
>>2389170
>Zdelau
xdddddd
>derju v kurse
ok. pohui.
Аноним 26/06/22 Вск 09:14:07 2389273 539
Аноним 26/06/22 Вск 09:14:50 2389274 540
>>2389170
>собираюсь писать свой фреймворк по гайду
Есть гайд?
Аноним 26/06/22 Вск 11:06:28 2389329 541
>>2389274
Ну степ бай степ гайд только. Но есть и статья просто с подсказками. Загуглиш сам.
Аноним 26/06/22 Вск 11:40:08 2389352 542
>>2389273

Такой синтаксис называют "грамматика". Грамматика - это набор правил, который определяет, как можно составлять конструкции (вроде выражения или оператора if) из элементов. Имея грамматику, мы можем разобрать (распарсить) программу на отдельные части.

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

Например, мы можем сказать, что выражение 2 + 2 это не-терминал, так как оно составлено из трех терминалов: ЧИСЛО 2, +, ЧИСЛО 2.

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

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

Например, лексическая грамматика может выглядеть так:

ЦИФРА (не-терминал) - это '0', '1', ... '9'
БУКВА это 'a'...'z'
ПОДЧЕРКИВАНИЕ это '_'
ЦЕЛОЕ_ЧИСЛО - это одна или более ЦИФР
ИМЯ_ПЕРЕМЕННОЙ - это '$', затем (БУКВА или ПОДЧЕРКИВАНИЕ), затем 0 или более (ЦИФР, БУКВ или ПОДЧЕРКИВАНИЙ)

Здесь ЦИФРА - это не-терминал. Но в синтаксической грамматике ЦИФРА и ИМЯ_ПЕРЕМЕННОЙ будут уже терминалами, и они могут использоваться так:

ПРИСВАИВАНИЕ - это ИМЯ_ПЕРЕМЕННОЙ, '=', ВЫРАЖЕНИЕ

Правила грамматики по-английски почему-то называют productions.

Для описания правил грамматики есть стандартные синтаксисы вроде BNF (очень старый и неудобный), ABNF, EBNF.

В спецификации используют свой стандарт, которые расплывчато описан тут https://phplang.org/spec/09-lexical-structure.html#grammars

Аноним 26/06/22 Вск 13:48:36 2389453 543
>в общем спустя какое-то время подумал - нафиг это программирование, вот это всякое айти там да.
бездушно это, не лежит действительно к этому душа так сказать.


>>2388464
у меня вопрос вообще не в том что не осилил, это не проблема в чем-то разобраться.


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







Аноним 26/06/22 Вск 16:51:05 2389635 544
>>2389329
Ну раз тебе тяжело ссылку на гайд дать, то я не скажу в какой книге разрабатывается фреймворк на PHP.
Аноним 26/06/22 Вск 17:08:28 2389653 545
>>2389635
https://habr.com/ru/post/654983/

https://stackoverflow.com/questions/1831610/how-to-develop-a-mvc-framework-from-scratch - тут рекомендуют сначала хорошо разобраться в MVC на уже существующих фреймворках. Хотя на других ресурсах рекомендуют сделать свой по гайдам, чтоб разобраться в нутре MVC фреймворков.
Трудно сказать, что лучше. Выбери свой путь. Я решил изучать уже существующие. Сначала один, потом другой для сравнения. Потом мб напишу свой для развития.

https://www.youtube.com/watch?v=6ERdu4k62wI - классика, очередное видео FreeCodeCamp.

Сам я ничего из этого не пробовал, просто погуглил за тебя, чтоб ты сказал мне книгу.
Аноним 26/06/22 Вск 17:38:31 2389689 546
Есть ли разница между != и <> сравнением, может по приоритету? Или это для тех кто пришел из других языков (не знаю где правда такой оператор сравнения).
Аноним 26/06/22 Вск 18:01:34 2389711 547
>>2389689
<> является стандартом SQL. Наверное оттуда.
Аноним 26/06/22 Вск 18:02:31 2389712 548
>>2389689
Разницы нет. Обычно юзают !=
Аноним 26/06/22 Вск 22:28:28 2389961 549
image.png 16Кб, 632x157
632x157
>>2389689
По примеру с постгрес, он потом сам конвертирует != в <>
Аноним 27/06/22 Пнд 18:02:54 2390529 550
После колледжа есть шанс найти работу?
Аноним 27/06/22 Пнд 18:09:43 2390540 551
>>2390529
Я после шараги 2 месяца чилил, потом за 2 нашел)
Был на двух собесах, на первом сначала отказали, потом через неделю написали на почту "вы ещё не трудоустроились?"
Ну а я уже был на другом месте. Как-то легко меня берут.
Аноним 27/06/22 Пнд 20:05:27 2390637 552
>>2348810
Эй, анон, если ты еще тут. Прошло уж два месяца вместо двух недель.

Как твои успехи?
Аноним 27/06/22 Пнд 20:18:49 2390654 553
>>2390637
Хихихм, привет. Лару учил откровенно говоря мало, так как учёба и другие обстоятельства. Дописал файлообменник до вида более менее, решал задачи, структуры данных какие-то реализовывал, сейчас пишу сайт с новостями, на чистой пыхе. С июля (закончится сессия как раз) буду дрочить лару и жс, проектом на ларе будет форум (имидж борда, кто как хочет). В общем-то, все неплохо, хотя могло быть намного лучше
Аноним 27/06/22 Пнд 20:19:56 2390659 554
Почему sql запросы так долго выполняются? Я например беру данные с бд и сравниваю их с данными из формы и это происходит долго, секунды 2(да для меня это долго)
Аноним 27/06/22 Пнд 20:22:11 2390664 555
>>2390654
А, по поиску работы. Разослал в компании 4 наверное. В одной посмотрели резюме но ответа не было, в другой отказали (я решил мало ли меня удалённо могут взять, написали что возможно вернутся к моей кандидатуре, но это пиздеж очевидный ) и в других нашли разработчика до того как даже глянули резюме. Как-то так
Аноним 27/06/22 Пнд 20:52:21 2390701 556
>>2390659

Это не очень нормальная цифра. Обычно запросы занимают миллисекунды или меньше.

Во-первых, дело может быть не в запросе, а в чем-то другом. Попробуй запустить консоль MySQL (если ты используешь MySQL) и выполнить запрос напрямую с параметром SQL_NO_CACHE:

SELECT SQL_NO_CACHE x FROM y WHERE ... ;

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

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

EXPLAIN SELECT x FROM y ...;

Документация (может быть сложновата для начинающего): https://dev.mysql.com/doc/refman/8.0/en/explain.html

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

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

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

Аноним 27/06/22 Пнд 20:53:18 2390702 557
>>2390654
Кинь проект, посмотрю =)
мимо проходящий
Аноним 27/06/22 Пнд 21:16:43 2390717 558
>>2390702
Возможно,как сделаю. Хуйня в том что я верстать не умею :)
Аноним 27/06/22 Пнд 21:17:18 2390719 559
>>2390717
да просто ссылку на гит скинь, я фронт не хочу смотреть, чисто как ты на бэке писал
Аноним 27/06/22 Пнд 21:28:50 2390729 560
>>2390719
дай свой телеграм,не хочу здесь кидать
Аноним 27/06/22 Пнд 21:31:28 2390732 561
Аноним 27/06/22 Пнд 21:31:47 2390733 562
>>2390729
черт, кинул, а не сохранилось
Back1ng
Аноним 27/06/22 Пнд 22:26:15 2390770 563
Подскажите где посмотреть примеры кода других людей? Интересует php laravel
на гитхабе только? а как искать? пишу в поиск laravel, а там одни package (либо вообще элементарные проэкты вроде блогов), а мне проекты интересно посмотреть
Аноним 27/06/22 Пнд 23:13:44 2390807 564
>>2389653
Учти только, что MVC это минимальная база для джуна. По-хорошему ещё надо микросервисную архитектуру понимать, а там уже SOLID, юнит-тесты, обязательный ООП, полезно знать структуры данных хотя бы базовые и прочее такое. Хотя если собираешься на вордпрессе говнокодить, то необязательно. Но учти, что это именно программерская база, а не только веб-макаки.
Аноним 27/06/22 Пнд 23:49:20 2390825 565
Аноним 27/06/22 Пнд 23:59:09 2390832 566
>>2390807

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

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

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

Также, можно услышать, что микросервисы позволяют использовать разные языки программирования. Согласен, если у тебя высоконагруженный сервис, то можно, как Вконтакте, писать свои хранилища на Си или на Расте, или Го. Но если ты не способен осилить эти языки, то наверно микросервисы тебе не очень-то и нужны.
Аноним 28/06/22 Втр 00:01:28 2390833 567
>>2390832
Что такое микросервисы в это контексте, через soap когда пересылаются данные?
Аноним 28/06/22 Втр 01:28:34 2390867 568
>>2390832
>ООП и юнит-тесты никак не связаны с микросервисами
Связаны напрямую.

>Наоборот, монолит, скорее всего окажется лучше и удобнее, чем гора микросервисов
Для чего окажется? Для какого проекта? Приведи примеры.

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

>А компания анона использует микросервисы, потому что прочитали про них в блоге.
Какая компания? Можно конкретику?
Аноним 28/06/22 Втр 11:53:27 2391089 569
avatars-BhtsUJ0[...].jpg 17Кб, 240x240
240x240
>>2347129 (OP)
Ананас, подскажи что лучше начинать учить вместе с php, сервер apache или ngnix на linux?

Установил на второй ноут ubuntu, никогда им не пользовался но вроде весело все идет, сейчас думаю какой сервер поставить. О apache двойственные впечатления, пердолинг с htaccess заебал для статичных сайтов (учился), и говорят он устарел вообще и тормозит быстродействие.PHP разработчики пользуются же VDS а не виртуальными серверами как я понял?(git там,laravel) я же по сути любой сервер(ngnix или apache) на этот VDS могу поставить, и панель управления типа ispManager? Правильно мыслю или лучше все учить для рынка?
Аноним 28/06/22 Втр 12:15:44 2391110 570
>>2391089
Можешь позже изучить пердолинг серверов, мне за полгода работы один раз пришлось менять конфиг нжинкса, я про него на тот момент нихуя не знал, но за пару часов нагуглил и пофиксил, больше ни разу его не приходилось трогать
Аноним 28/06/22 Втр 12:33:37 2391121 571
Если бы вы сейчас вкатывались в серверную часть веба чтобы начали учить python/django или pho/laravel. На питоне могу писать простенькие скрипты по работе, но есть ощущение что на позицию джуна бекендера на пистоне не найти, а на пхп есть хоть какие-то шансы. Вообще задумка такая, что нати работу на пхп и как более менее втянусь голанг учить. Норм план или хуйня, айти в РФ всё и вообще надо огород сажать?
Аноним 28/06/22 Втр 14:16:58 2391229 572
>>2347129 (OP)
Сап, аноны. Убедительная просьба не кидаться говном, мб есть тут люди шарящие за битрикс.
Как отсортировать элементы в catalog.section по конкретному значению множественного свойства типа список?
Т.е. есть свойство "Тэги", значения "Популярное", "Рекомендуемое" и т.д. У элемента могут быть выбраны хоть все сразу. Мне же нужно отсортировать каталог по этому свойству, чтоб сначала шли элементы у которых проставлено значение "Популярное"
Аноним 28/06/22 Втр 14:21:01 2391233 573
>>2391089
А нахрен тебе апачи и энжникс? Это не задачи разработчика, а ебаться тебе придется с тем что будет. Тут уже все от звезд на небе зависит
Аноним 28/06/22 Втр 14:24:29 2391238 574
>>2390867
Хули ты тут высрал? Анон прав, монолит в подавляющем большинстве выигрывает, хотя бы тем что его разрабатывать проще.
На кой хуй ебаться с кучей сервисов маленькой команде разработчиков, когда речь идет о небольшом интернет магазине? Или у тебя все разрабатывают огромные проекты по типу какого-нибудь контакта?
Аноним 28/06/22 Втр 14:32:16 2391248 575
>>2391121
>python/django
Абсолютно бесполезная хуйня без задач, которая умерла не успев достичь популярности. Node во всем лучше.
Аноним 28/06/22 Втр 14:58:01 2391280 576
>>2391248
На году вакансий почти нет. Либо для мидлов минимум. Мне интересно в плане поиска работы в первую очередь.
Аноним 28/06/22 Втр 18:15:14 2391485 577
Анончики, можете сразу полить меня говном, но все же.
Я устраиваюсь в некоторую контору, не на программерскую должность, и тестовое задание получил в виде требования написать модуль с использованием связки ZF1+extJS3.4.

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

Можете порекомендовать как и откуда вообще начать с этим работать?
Повторюсь, я из совершенно другой сферы микроконтроллеры/асм/си, и для меня всё это вот ПИЗДЕЦ как сложно.

Аноним 28/06/22 Втр 18:54:47 2391552 578
1522592353462.gif 2712Кб, 304x200
304x200
>>2391485
Нахуя давать тестовое по левым вещам?
Аноним 28/06/22 Втр 18:58:09 2391562 579
>>2391552
Потому что у них другого нет, это госконтора. Потому что так вышло, что начальник хочет этого, независимо от того чем я буду заниматься.
Аноним 28/06/22 Втр 22:52:30 2391723 580
>>2390833

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

Данные можно пересылать и через SOAP, но сейчас обычно используются более современные технологии вроде HTTP+JSON, JSON-RPC, ProtocolBuffers, Thrift, очереди сообщений и тд.

>>2390867

Пример: я хочу получить какие-то данные из БД. В монолите я просто захожу в консоль MySQL, пишу запрос с 8 джойнами (а я хорошо умею использовать джойны) и получаю нужные данные. В микросервисном проекте я должен потратить во много раз больше времени, писать какие-то кастомные скрипты, чтобы добиться того же. Хотя, может есть какая-то компания, которая за большие деньги дает возможность делать поиск в распределенных базах данных?

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

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

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

Пример 4: в монолите я жму на название функции и перехожу к ее определению. А в микросервисе я попадаю на функцию отправки запроса в другой сервис и не могу перейти к определению в один клик.

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

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

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

А что, что ты пишешь про тесты, я вообще не понял. Тесты без проблем используются в монолитных проектах.
Аноним 28/06/22 Втр 23:08:08 2391730 581
>>2391248

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

Нода вообще сейчас занимает странное место. Если ты хочешь удобный язык, пожертвовав скоростью выполнения, то есть Питон. Если ты хочешь высокую скорость, то есть Раст, если ты хочешь удобную асинхронность и высокую скорость, то есть Го. А какие плюсы у Ноды?
Аноним 28/06/22 Втр 23:14:22 2391734 582
>>2391485

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

https://github.com/zendframework/zf1/blob/master/INSTALL.md

> Zend Framework requires no special installation steps. Simply download the framework, extract it to the folder you would like to keep it in, and add the library directory to your PHP include_path

Ну и ты бы написал, что за ошибки пишет композер, может у тебя просто чего-то не установлено?

Я из любопытства посмотрел страницу zf1 на packagist, и там из зависимостей только PHP >= 5.2.11. Я также из любопытства сделал composer.phar require zendframework/zendframework1 и он установился без ошибок на моем Линуксе.
Аноним 29/06/22 Срд 01:31:11 2391781 583
Xammp или OpenServer?
Аноним 29/06/22 Срд 03:59:50 2391822 584
изображение.png 45Кб, 1893x562
1893x562
>>2391734
Анончик, всё заработало, просто вручную без компостера раскидал.
Добра тебе.
Аноним 29/06/22 Срд 08:32:14 2391879 585
>>2391781
У нас на работе почти все OpenServer используют.

мимо битриксоид
Аноним 29/06/22 Срд 10:07:55 2391923 586
>>2391781
Установить линукс и LAMP
Аноним 29/06/22 Срд 10:47:38 2391950 587
>>2391781
Open server позволяет выбирать версию пыхи, апача/нгинкса, субд без переустановок, просто меняя в настройках ospanel.
Аноним 29/06/22 Срд 12:22:31 2392024 588
Вот тут кто-то нахваливает Ноду, а давайте посмотрим на реальный код на Ноде, написанный профессиональными разработчиками:

https://github.com/npm/cli/blob/latest/workspaces/arborist/lib/arborist/build-ideal-tree.js

const _applyUserRequestsToNode = Symbol('applyUserRequestsToNode')
...
await this[_applyUserRequestsToNode](tree, options)
...
async [_applyUserRequestsToNode] (tree, options) {

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

Также, в Ноде очень неудачно выбрали слово const для однократно присваиваемых переменных. Константа это неизменное значение, и имена констант обычно пишутся большими буками:

const GRAVITY = 9.81;
const MONTHS = ['Jan', 'Feb', ...];

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

const cant_change_this = [];
cant_change_this.push(1); // никаких ошибок

Как было бы сделать правильно: использовать другое слово, например, val, и запретить изменение содержимого однократно присваиваемой переменной. Хотя, последнее может быть сложно реализовать. Но константами это точно назвать нельзя.

И еще, почему-то разработчики на Ноде не любят называть вещи своими именами и объявляют функции как константы, то есть вместо:

function some_name(some_arg1 = 5, some_arg2 = 6) { return some_arg1 == some_arg2; }

Пишут

const some_name = (some_arg1 = 5, some_arg2 = 6) => some_arg1 == some_arg2;

Очевидно, что первый вариант намного лучше: прочитав первое слово, уже понятно, что перед нами функция. А во втором варианте нужно прочесть всю строку, и найти в ней стрелку, спрятанную среди знаков равенства, прежде чем поймешь, что у нас функция, замаскированная под константу.
Аноним 29/06/22 Срд 12:45:22 2392033 589
>>2392024

Кстати, приватные свойства в JS все-таки недавно добавили. Однако, там много чего не хватает, например:

- автогенерация конструктора
- автогенерация геттеров/сеттеров

То есть, если у меня есть класс

class Test {
#someProperty;
}

То я хочу, чтобы я мог добавить какую-то пометку вроде @property и JS для меня сгенерировал бы конструктор, который заполнит это свойство и геттеры-сеттеры, которые позволят мне обращаться к этому полю:

let test = new Test(10);
test.someProperty = 20;

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

При этом, естественно, я бы хотел выбирать, что сделать:

- сгенерировать геттеры и сеттеры
- сгенерировать только геттеры
- перенаправить обращение к свойству в выбранную мной функцию
- сгенерировать конструктор или методы вроде "получить все свойства"/"обновить все свойства"
- сгенерировать методы для сравнения или хеширования объектов

Так что я не понимаю того анона, который сказал, что Нода лучше Питона, хотя в Питоне описанное выше есть, а в Ноде нету. Это есть в Питоне, в Свифте, в C# если не путаю.
Аноним 29/06/22 Срд 12:56:20 2392041 590
>>2392033
Питон хуйня потому что из-за этих ебаных отступов трудно копипастить.
Аноним 29/06/22 Срд 13:14:43 2392064 591
>>2392041

Ты пишешь странные вещи. Во-первых, копипастить нет никаких проблем, если твой редактор поддерживает команды "увеличить отступ" и "уменьшить отступ" (все нормальные редакторы кроме какого-нибудь легаси времен DOS это поддерживают).

Во-вторых, если ты копипастишь код на JS, тебе точно так же надо поддерживать в нем правильные отступы.
Аноним 29/06/22 Срд 13:19:57 2392069 592
Вот еще наблюдения насчет кода менеджера пакетов npm. Названия функций, взятые из одного файла:

const rpj = path => readFile(path, 'utf8')

Кто догадается, что значит rpj?

const readBinDir = async (path, data) => {
const add_id = data => {

Каждый называет функции как хочет, никакого единообразия.

Ну и, конечно, ужасный синтаксис со стрелками. Стрелочные функции предназначены для ситуаций, когда функция маленькая и передается в какую-то другую функцию:

array.map(e => e.name)

Это не значит, что слово function устарело и теперь надо везде писать громоздкую и плохо читаемую конструкцию с const. Я подозреваю, это функциональщики хотят сделать JS код похожим на их функциональные языки, где функции объявляются через равенство. Но JS это не функциональный язык и у него есть свой синтаксис, и код должен быть читаемым, а не похожим на твой любимый функциональный язык.
Аноним 29/06/22 Срд 13:21:09 2392070 593
>>2392041

И да, кстати, что тебе мешает настроить редактор или написать плагин, чтобы при вставке он исправлял отступы сам?
Аноним 29/06/22 Срд 13:24:19 2392073 594
Вот еще проблема из JS кода:

er => {
if (er.code === 'EJSONPARSE') {

Похоже, разработчик на Яваскрипте не слышали, что можно делать разные классы исключений и проверять эти классы. Тогда хотя бы IDE будет подсказывать и проверять их имена.
Аноним 29/06/22 Срд 13:29:09 2392078 595
Вот еще кусок из npm. Такое ощущение, что этот код сгенерирован обфускатором, а не написан человеком:

https://github.com/npm/cli/blob/latest/workspaces/arborist/lib/arborist/build-ideal-tree.js#L327

.then(root => this[_global] ? root
: !this[_usePackageLock] || this[_updateAll]
? Shrinkwrap.reset({
path: this.path,
lockfileVersion: this.options.lockfileVersion,
resolveOptions: this.options,
}).then(meta => Object.assign(root, { meta }))
: this.loadVirtual({ root }))


Это же просто тяжело читать. Ужасный стиль кода. Я не робот, чтобы в уме разбирать такие выражения.
Аноним 29/06/22 Срд 13:30:47 2392080 596
>>2392078

Ну и отдельно минус им за то, что нагородили там кучу .then вместо использования await. Эта асинхронность в Ноде полезна в 1% случаев и только мешается в 99%.
Аноним 29/06/22 Срд 13:32:37 2392082 597
Аноним 29/06/22 Срд 13:34:14 2392084 598
>>2392082

Если такой код написали функциональщики, то, конечно, желания когда-либо использовать функциональные языки у меня поубавилось. Императивный код однозначно лучше хотя бы тем, что в нем не пишут return на 70 строк и гору из then.
Аноним 29/06/22 Срд 13:37:14 2392090 599
>>2392080
Так это одно и тоже по сути - await это синтаксический сахар просто, который так же работает через промисы, просто декларация более привычная, но это так же асинхронно работает.
Аноним 29/06/22 Срд 13:38:04 2392091 600
>>2392073
Они пишут свои скрипты в notepad++
Аноним 29/06/22 Срд 13:39:35 2392093 601
>>2392090

Читается лучше.

let x =await getX();
let y = await getY(x);

Против горы из коллбеков.

А еще лучше, конечно, использовать язык, где есть блокирующие функции и await не нужен.
Аноним 29/06/22 Срд 13:40:58 2392095 602
Аноним 29/06/22 Срд 13:48:00 2392103 603
>>2392093
Ну да, await дает некое удобство, но все равно продолжает оставсть асинхронным.

Так в ноде же вроде есть блокирующие и неблокирующие операции: типа readFile() и readFileSync()
Аноним 29/06/22 Срд 13:54:49 2392108 604
Нашел на мозилле ресурс для основательного изучения JS, подписка 5 лет и довольно дешевая. Но первые 7 глав бесплатны.

https://learnjavascript.online/
Аноним 29/06/22 Срд 14:05:21 2392115 605
>>2392108
есть же наш православный сайт для изучения JS

learn.javascript.ru
Аноним 29/06/22 Срд 14:09:21 2392121 606
Аноним 29/06/22 Срд 14:40:21 2392143 607
>>2392024
>Какие костыли им приходится изобретать из-за отсутствия приватных свойств.
Уже как несколько лет есть.
> это запутывает при чтении кода
Запутывает только тебя, когда ты пишешь на JS больше одной недели - привыкаешь.
> "константы" в Ноде не такие уж и постоянные
Потому что объекты передаются по ссылке. Тут абсолютно логичное поведение. Для неизменяемых объектов в JS есть Object.freeze
>Очевидно, что первый вариант намного лучше
Нет, не очевидно. Ты забываешь про минификацию
>найти в ней стрелку
Зачем ты ищешь стрелку, если тебе IDE цветом показывает, что это функция? Даже если ты в блокноте пишешь код, то наличие скобок после = сразу говорит о том, что эта функция.
>>2392033
>пометку вроде @property
Уже есть в планах на 2023.
>в Питоне описанное выше есть
А в ноде есть нормальная асинхронность, лучшая производительность, интеграция с SPA-фреймворками, более дешевая цена разработки.
Аноним 29/06/22 Срд 14:42:27 2392144 608
>>2392073
Причем тут вообще JS, если это очевидная проблема макаки-формошлепа, который это писал? Говнокодить можно и на питоне и на пыхе и на чем душе угодно.
Аноним 29/06/22 Срд 14:50:04 2392146 609
>>2392144
Ну вообще есть концепция, одна из, что исключения нужно использовать при критических ошибках в логике программы, а если речь идет об ожидаемом поведении: вроде как пользователеь что не так ввел - то тут лучше воспользоваться паттерном увдедомлений.
Аноним 29/06/22 Срд 15:04:09 2392156 610
>>2392143

> привыкаешь.
А зачем привыкать к плохому?

>> "константы" в Ноде не такие уж и постоянные
> Потому что объекты передаются по ссылке. Тут абсолютно логичное поведение.

Зачем мы используем const? Чтобы сказать читателю кода, что эта переменная не изменится, и чтобы защититься от случайного изменения. Если ты массивы и объекты при этом разрешаешь изменять, то весь смысл const теряется. const для массивов и объектов по сути ничего не значит.

И это точно не константа.

>>Очевидно, что первый вариант намного лучше
> Нет, не очевидно. Ты забываешь про минификацию
Ты пишешь странные вещи. При чем тут минификация? Я говорю про исходный код, который мы пишем и читаем, мне неинтересно, как он поменяется при минификации. Мне безразлично, если минификатор перепишет константы на функции или наоборот.

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

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

Если уж ты упоминаешь IDE, то я замечу, что IDE может так же подсвечивать другим цветом переменные, которые не меняются, и слово const становится ненужным - просто ставь везде let и пусть IDE подсвечивает их разными цветами.

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

только вот код на Ноде, судя по npm, нечитаемая лапша.
Аноним 29/06/22 Срд 19:31:07 2392345 611
Сколько версий PHP нужно знать в общем? PHP5/7/8 верно? Перечитывать документацию?
Аноним 29/06/22 Срд 20:07:05 2392382 612
Ого, очень рад, что тред жив и ОП ещё тут спустя столько лет! Когда-то тоже тут сидел и много задачек решал, даже делал калькулятор с парсингом дробных значений и вектор в стиле ФП. Сейчас работая фуллстеком столкнулся с необходимостью синхронизировать код между PHP и TS/Dart, вручную это делать было утомительно, а автоматические решения не удовлетворяли требованиям - какие-то инструменты вроде grpc заставляют всю архитектуру приложения менять, какие-то инструменты вроде swagger заставляют писать большие yml/json. Подумал, что было бы удобно просто отметить нужные PHP-классы и как-то одной командой получить TS/Dart. Сделал, в проде больше чем полгода: https://github.com/riverwaysoft/dto-converter

Что думаете? Под капотом работа с AST и кодогенерацией. Планирую добавить больше документации (сейчас её мало так как in-house инструмент) + описать внутреннее устройство в большой статье на хабре.
Аноним 29/06/22 Срд 20:16:58 2392393 613
Снимок экрана 2[...].png 42Кб, 1392x788
1392x788
Аноним 29/06/22 Срд 22:41:28 2392490 614
>>2392345
Да можешь с первой начать, че там читать то, ну =)
Аноним 29/06/22 Срд 23:11:57 2392513 615
>>2392382

Я когда-то давно тоже делал конвертацию PHP классов в JS, чтобы можно было работать с моделью и на сервере и на клиенте. Правда там все было в разы примитивнее, копировались только константы и публичные поля, и еще, по моему, генерировались геттеры/сеттеры, чтобы модель могла слать события при изменении свойства (вью слушало эти события и обновляло картинку на экране).

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

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

Что касается swagger, то для PHP есть инструменты для его генерации через DocBlock-аннотации. Хотя, если у тебя есть хорошие DTO, то может быть swagger можно генерировать как-то из них. Swagger хорош как язык документирования API, то есть ты передаешь коллегам не кучу TS-классов со словами "на, разбирайтесь", а человеко- и машинночитаемую документацию.

Ну и иногда в описанной тобой ситуации за основу берут описание класса/интерфейса на IDL. Это не конкретный язык, а скорее разновидность языка. Пример IDL можно увидеть в спецификациях DOM, в исходных кодах Chrome/Firefox.
Аноним 29/06/22 Срд 23:14:07 2392515 616
>>2392345

5 не нужна, можно изучить последнюю версию + прочитать на сайте PHP список изменений между последней версией и PHP7.4. У них есть удобный список того, что поменялось в каждой версии: https://www.php.net/manual/ru/migration81.php
Аноним 29/06/22 Срд 23:25:07 2392524 617
PDO::quote может все равно пропускать sql-инъекции?
Аноним 30/06/22 Чтв 09:26:36 2392686 618
>>2392524

Не должен, если использовать правильно. То есть, только для подстановки чисел или строк в SQL-запрос. Это безопасно:

$safeX = $pdo->quote($x);
$pdo->execute("SELECT ... WHERE x = $safeX");

Но если ты используешь quote для каких-то других целей (например, для защиты от XSS), применяешь quote 2 или более раз, или экранируешь данные в одном месте программы, а используешь их совсем в другом месте, то там могут быть уязвимости.

Но лучше просто использовать плейсхолдеры.
Аноним 30/06/22 Чтв 09:55:21 2392697 619
16411396300660.jpg 45Кб, 604x340
604x340
Здравствуйте, имеется сайт с видео на ларавел. Все видео рассортированы по категориям. Но нужно чтобы видео листались в рандомном порядке, но не совсем в рандомном, а так чтобы пользователь смог посмотреть все видео без повторов. Подскажите, пожалуйста, как это лучше реализовать?
Аноним 30/06/22 Чтв 12:08:08 2392771 620
Screenshot2022-[...].png 25Кб, 393x557
393x557
Open server в phpmyadmin не пускает, уже все перебробовал, сталкивался кто?
Аноним 30/06/22 Чтв 12:13:44 2392777 621
Оставил отклик на работу на работу в которой нужен 3 летний опыт. Контора в Нидерландах, я знаю все что им требуется Laravel/Vue.js но опыта у меня 3 годового в и сфере нет, только неофициальный. Плюс нет портфолио, но я чую что могут взять, короче что делать? Начну работать научусь же да?
Аноним 30/06/22 Чтв 12:58:44 2392812 622
>>2392771
Дефолтный юзер это root без пароля. Или ты по какому-то своему старому логину не можешь зайти?
Аноним 30/06/22 Чтв 13:06:11 2392815 623
>>2392771
А все, надо было пароль root
Аноним 30/06/22 Чтв 13:09:33 2392818 624
>>2392777
Поможешь мне с моим вопросом? >>2392697

А я тебе расскажу про работу в Европе. У меня кореш устроился в Нидерландсую контору как раз месяц назад.
Аноним 30/06/22 Чтв 13:10:26 2392819 625
Аноним 30/06/22 Чтв 13:17:27 2392822 626
16497492826180.mp4 574Кб, 480x360, 00:00:09
480x360
Аноним 30/06/22 Чтв 16:20:20 2392950 627
Кинули на новый проект - там ни документации, нихуя. Только куча кода с которой непонятно как работать т.к. там везде интеграции с внешним сервисом. В чатике поддержка минимальная и в основном все молчат. ПМ уже просит какие-то сроки, а у меня проект даже не поднят потому, что я неебу как с ним работать.
Мне валить из конторы?
Аноним 30/06/22 Чтв 17:20:09 2393003 628
>>2392950
Ни примеров нихуя, откуда нам знать что ТЕБЕ делать? Ты программист или кто?
Аноним 30/06/22 Чтв 17:31:47 2393016 629
>>2392950

Омежка, спокойно, никуда валить не нужно. Пишешь тимлиду/сеньору и просишь помочь развернуть проект и провести краткий экскурс о струтуре проекта, после чего приступаешь к макакингу за 300кк/нс.
Аноним 30/06/22 Чтв 19:33:10 2393073 630
>>2393003
>Ни примеров нихуя, откуда нам знать что ТЕБЕ делать?
Каких примеров? Причём тут моя таска? Ты о чём вообще?

>>2393016
>Пишешь тимлиду/сеньору
Он тоже в чатике сидит и ему похуй по-моему.
Вообще не понимаю нахуй так делать тогда - давать человеку неизвестный проект без какого-то введения. Они ждут, что я сам изучу за неделю то, что они за 2-3 года напилили?
Аноним 30/06/22 Чтв 20:55:25 2393133 631
png-transparent[...].png 11Кб, 920x453
920x453
Начал учить php, а мне сказали что php для лохов. Обзывались вордпрессом и битриксом.
Аноним 30/06/22 Чтв 21:13:54 2393141 632
>>2393133
Так и есть, в пхп самая высокая конкуренция среди всех языков и с него перекатываются на другие типо питона или го, а ты берешь и вкатываешся в пхп в 2022ом лол
Аноним 30/06/22 Чтв 21:45:47 2393155 633
Как вставлять картинки например в какой нибудь пост, который форматируется пользователем? Я должен тело поста перевести в html и сохранить его в базу данных в тело? Или распарсить как-то?
Аноним 30/06/22 Чтв 21:46:25 2393157 634
>>2393133
Лучший язык так-то.
Аноним 30/06/22 Чтв 22:15:45 2393182 635
1656616540428.jpeg 447Кб, 1366x2048
1366x2048
>>2393155
Не понял твоей мысли.

Картинки хранишь на жёстком диске.
В базе данных создаёшь таблицу в формате "id | путь до картинки".
В таблицу с постами добавляешь столбец, где хранишь id картинки либо null, в случае, если ее нет.

Для поста создаёшь html шаблон. В случае, если у поста есть картинка, то ты в шаблон вставляешь тег наподобие <image src="post->imagePath">.

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

Мимо двухмесячный вкатыш, возможно мой способ не оптимальный
Аноним 30/06/22 Чтв 22:27:10 2393197 636
>>2393182
Да но что если ты захочешь удалить картинку или изменить порядок в посте?
Аноним 30/06/22 Чтв 22:41:31 2393208 637
1.jpg 13Кб, 473x272
473x272
Я правильно понимаю, что инклюдить по относительному пути не получится, если например подключать через третий файл, ведь там будет уже другой дополнительный с другим относительным путем. Пример:
interface.php в корне.
file1.php в папке script : include "../interface.php";
file2.php в корне: include "script/file1.php";
Фатал ошибку выдает, тут походу получается с точки зрения file2, что interface лежит по идее как просто include "interface.php".
Аноним 30/06/22 Чтв 22:54:19 2393221 638
1656618855200.jpeg 175Кб, 1280x937
1280x937
>>2393197
1. Удаляешь картинку из хранилища и строчку из таблицы.

2.1. Меняешь порядок чисел в массиве, если тебе нужно изменить порядок прикрепленных картинок.
2.2. Если же тебе нужно иметь возможность вставить картинку в разные места поста, то просто даёшь юзеру добавить метку для картинки.

2.2. Подробнее:
Тело поста ты все равно хранишь в базе данных в формате text, так что ничего не мешает сделать как-то так.

"Lorem lorem lorem
Lorem lorem
@image
Lorem lorem ipsum
Lorem"

Ты сам можешь придумать как улучшить, если что-то не нравится.
Аноним 30/06/22 Чтв 22:56:09 2393223 639
1656618968259.jpeg 14Кб, 360x303
360x303
Аноним 30/06/22 Чтв 23:59:42 2393256 640
>>2393073

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

- может, есть папки с документацией в формате txt или md?
- может, есть shell-скрипты?
- если есть файл composer.json, то наверно надо установить зависимости с помощью composer. А может в этом файле даже прописано действие для установки?
- если есть bower.json, то наверно это библиотеки для фронтенда
- если есть package.json, то это точно библиотеки для фронтенда. Также там в секции scripts могут быть какие-то полезные команды
- если есть Makefile, то в нем могут быть полезные команды
- а может есть Докерфайл? Тогда, возможно, проект запустится в Докере. А даже если нет, то из него можно извлечь полезную информацию

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

После этого попробуй запустить проект. Если падает с ошибкой - разберись, от чего она возникает и поправь.
Аноним 01/07/22 Птн 00:13:31 2393265 641
>>2393256
>попробуй запустить проект
Да это не проблема так-то.
Проблема в том, что это не сайтик, а пачка бекенда с кучей шелл-скриптов которые должны как-то тянуть данные из внешнего источника и обновлять их по кд. Как это должно всё работать я хз - там одних только контроллеров больше сотни и шелл-обработчиков под 50. Документации нет - там не принято её вести. База данных пустая - я её структуру даже не знаю.
Комментариев в коде тоже нет в 2х файлах не считается.
Дело в том, что я не джун уже и у меня нет проблем просто поднять проект.

Как с этим работать я хз.
Аноним 01/07/22 Птн 00:18:13 2393270 642
>>2393265
>должны как-то тянуть данные из внешнего источника
В смысле нескольких источников. Оно там всё повязано друг на друга и везде токены-хуёкены под разный стафф.
Поддержки на это всё я получаю минимум - один пук в чатик в день.
Аноним 01/07/22 Птн 00:21:25 2393273 643
image.png 190Кб, 500x395
500x395
>>2393265
Юнит-тестов тоже не завезли.
xdebug не настроен - там принято вардампом пидорить как диды.
Аноним 01/07/22 Птн 00:24:11 2393277 644
>>2393223
Спасибо, а glob() путь берет относительно места нахождения файла, из которого он вызывается?
Аноним 01/07/22 Птн 00:31:07 2393279 645
>>2393273
>Юнит-тестов тоже не завезли.
Всмысле юнитов там тоже нет - гадят прямо в контроллерах. Тестировать нечего.

я набухался сегодня - пошло оно всё
Аноним 01/07/22 Птн 00:54:36 2393283 646
>>2393073
>Он тоже в чатике сидит и ему похуй по-моему.
Ты читать умеешь? Ты пишешь не в ЧАТИК, а пишешь НАПРЯМУЮ тимлиду. Если не отвечает - звонишь на телефон. Если не берет - идешь к его непосредственному руководителю. Повторяешь до победного конца, постоянно идя к руководителю выше.
>Они ждут, что я сам изучу за неделю то, что они за 2-3 года напилили?
Нахуй ты меня, т.е. гиза на дваче об этом спрашиваешь? ПМа своего спроси лучше.
Аноним 01/07/22 Птн 07:26:04 2393329 647
>>2393141
>в пхп самая высокая конкуренция среди всех языков.
С хуяли, если я только и дело слышу про питон и жаба скрипт. У меня последнее время ощущение, что питон учат все, школьники, домохозяйки, деды в доме престарелых, зэки в тюрячке. Да на питон статистически больше вакансий, но если их забрать там около половины это датасосайенс и машинпукинги всякие, мне это не интересно, мне не интересен матан. Да и эти направления как правило нужны в крупных компаниях с бигдатой, а там дохуя бюрократии и требуют вышку, то есть я уже проигрываю конкуренцию любому дауну 4 года отсидевшему в ВУЗе. Я просто хочу веб делать, а веба на питоне меньше, соответственно и шансы на трудоустройство уменьшаются. Голанг вообще говорят нет смысла вкатываться с нуля, ибо там ищут людей которые уже имеют опыт веб разработки.
Аноним 01/07/22 Птн 07:31:45 2393330 648
>>2393133
Хз, язык интересный, очень удобный особенно для первого, работы дохуя на PHP. Варианты развития есть большие. Почти весь бэкенд, особенно новых сервисов VK написан на пыхе. Они свои фреймворки пишут и много полезных штук. Так же начали выбирать снова пых как основной язык для разработки в Сбере. Еще достаточную часть в Авито и Баду

Изучаешь пхп + ларавель и в дополнение к этому вторым языком учишь js, и считай продался в любую компанию на хайофер.
Аноним 01/07/22 Птн 14:55:03 2393616 649
>>2393330
Спасибо, что потушил мой пукан.
Аноним 01/07/22 Птн 15:15:27 2393624 650
>>2393330
Удел пхп это блондинки и лендинг страницы
Аноним 01/07/22 Птн 15:20:11 2393635 651
>>2393616
Вордпресс и прочие cms это ебаный кал, да, даже те, которые на основе симфони сделаны и в целом современные, но вот писать на голом симфони/ларавеле кайфово. Функционала из коробки дохуя, код красивенький, если изъебнешься даже по солид хуелид будет, фреймворки стабильные, гарантировано известно, что никуда не денутся, и никакой зумерский нитакойкаквсе фреймворк их не вытеснит как это регулярно происходит в мире жс. Один минус - пхп же, скорость работы говно, плюс после языка, живущего один реквест, интуитивно тяжело переключаться на какую-нибудь ноду.
Аноним 01/07/22 Птн 17:07:45 2393729 652
>>2393635
То есть мне отказываться от вакансии на битрикс? Я думал что норм ща всё будет... Думал потом как-нибудь перейду на этот ларавель, но сейчас надо потерпеть как говорится.
Аноним 01/07/22 Птн 17:15:13 2393733 653
>>2393729
Ты уже выучил битрикс? Что читал?
Аноним 03/07/22 Вск 03:39:39 2394852 654
>>2392697
Очевидно, придётся хранить
- либо каждое просмотренное человеком видео,
- либо случайно сгенерированный порядок клипов и положение просмотра в нём
Аноним 03/07/22 Вск 04:25:48 2394856 655
photo2017-11-30[...].jpg 103Кб, 1280x819
1280x819
>>2387578
>>2387643 - это не я отвечал.

вообще, мне, например, нужен человек для поддержки приложения на чистом РНР. Если интересно, напиши в ТГ https://t.me/your_future_life
Аноним 03/07/22 Вск 10:41:30 2394896 656
>>2394852
Дап, но в каком виде это лучше хранить?
Аноним 03/07/22 Вск 12:57:03 2394964 657
>>2383830
О, благодарю, анон.
Тебе надо преподом быть)) Нормально разъясняешь.
Аноним 03/07/22 Вск 12:58:43 2394968 658
Аноним 03/07/22 Вск 13:44:41 2395021 659
>>2393133
>а мне сказали что php для лохов
Так и есть, а чего ты хотел от знания скриптоязыка? Думал сучки будут течь, а бояре из нормальных языков будут первыми руку тянуть?
Аноним 03/07/22 Вск 17:38:28 2395252 660
1656859067724.mp4 2834Кб, 480x854, 00:00:24
480x854
Кто-то работает из под линукс?
Как быть с правами доступа?

Например:
1. Я поднимаю проект на ларавель в докере
2. Композер из контейнера с php генерирует мне файлы и папки фреймоворка.
3.1. Пытаюсь открыть сайт в браузере и получаю permission denied error.
3.2. Пытаюсь отредактировать файлы через редактор и получаю access denied retry as sudo.
4. Прописываю
# chmod -R 777 ./
5. Казалось бы, все хорошо, но если сгенерировать миграцию
(Через $ docker exec -ti project_app bash)
$ php artisan make:migration create_orders_table
И попробовать отредактировать миграцию, то снова 3.2.

Как быть? Что править? Мне надо себя закинуть в какую-то группу? Но миграция, например, генерируется с правами 600, и добавление в группу мне явно не поможет.

Как навсегда забыть о проблемах с правами доступа к файлам? Не прописывать же мне после каждого действия
# chmod -R 777 ./
Да и небезопасно это явно.
Аноним 03/07/22 Вск 18:37:50 2395310 661
>>2394896
Блять, в любом, которое меньше места занимает. Массив id через разделитель + одно число-курсор/положение в этом плейлисте.
Аноним 03/07/22 Вск 18:49:59 2395320 662
>>2395252
Дело в владельце файлов, нужно как вариант синхронизировать айди юзера www-data в контейнере с айди твоего пользователя в системе.
Аноним 04/07/22 Пнд 00:05:46 2395664 663
Объясните зачем нужен докер? я не понимаю, много раз читал но все равно не пойму, зачем тратить кучу времени на всю эту настройку и т.п если можно просто на сервере поднять lemp залить с гита проект и все?
Аноним 04/07/22 Пнд 10:33:15 2395814 664
16089852525510.png 1006Кб, 2359x1749
2359x1749
>>2395310
>Массив id через разделитель + одно число-курсор/положение в этом плейлисте.

А если у меня допустим 5000 видео в каждой категории, и каждый час добавляются новые видео в каждую категорию? Надо чтобы пользователь при открытии видео из категории 1 видел при пролистывании далее только видео из категории 1. И еще нужно учесть что id видео будут не порядку, тк некоторые видео могут быть удалены из-за жалоб.
Аноним 04/07/22 Пнд 14:14:48 2395937 665
>>2395664
>зачем тратить кучу времени на всю эту настройку и т.п если можно просто на сервере поднять lemp залить с гита проект и все?
Я не спец по докеру, но чтение любой статейки о докере в принципе даёт ответы на твои вопросы. Самое банальное зависимости, ты обновил приложение, запускаешь, а тебе выдаёт "пук пук версия пэхапэ 7.4 больше не поддерживается, требуется обновление мням", докер позволяет избежать этой хуйни. Или ты обновился, а там баг, хочешь вернуться на предыдущую версию, а зависимости библиотеки всякие уже обновлены, надо и их откатывать, это превращается в череду жопной боли и тд. Гораздо проще завалить контейнер и просто поднять новый с предыдущей версией где бага не было. Конечно можно тупо сделать снэпшот машины перед обновлениями и потом откатить но это не бест практикс я думаю. Так же у тебя может там на тачке ещё что-то крутиться которое будет требовать другие зависимости, будет конфликт, то есть придётся для каждой приложухи свою виртуалку заводить, это как бы шиза и нерациональное расходование ресурсов сервака. Ну и типо безопасность, изолированность от ОС.
Я это как-то так вижу, сам работаю админом, могу сказать что админа докер избавляет от лишнего пейна и горения в заднице.
Аноним 04/07/22 Пнд 14:21:09 2395944 666
manglo-09-720x4[...].jpg 25Кб, 720x425
720x425
>>2395252
>>2395664
Двачую. Зачем нужен докер?

Стеки типа php/composer/laravel(и тд)/vue не нуждаются же в пердолинге (разве что с версией php)?
Типа чего, я например laravel с его богатством офицальных фреймворков буду изобретать велосипед? Я слышал Laravel вообще может на ВИРТУАЛЬНОМ ХОСТИНГЕ размещаться с обычной php.

в чем я не прав? VDS с Git конечно нужен чисто для проффесиональной деятельности и совместной работы, адекватного деплоя и дебаггинга , а ДОКЕР ЗЕЧЕМ?
Аноним 04/07/22 Пнд 16:41:09 2396064 667
15868781996230.gif 8964Кб, 400x295
400x295
>>2395944
>ДОКЕР ЗЕЧЕМ
Для тех кому на работе неделями делать нехуй и они придумывают как сделать абстрактные абстракции в изолированных контейнерах чтобы занять себя хоть какой-то видимостью работы. Потом ПМу гордо заявляется чем ты занимался вместо реализации полезных фич или дебага.

Особенно охуенно когда требуют докер, но не дают рабочую машину - типа ставь на свою и тяни всю херь сам к себе и ебись с этим. Прям дногалерное нищебродское айти такое.
Нет никаких проблем поднять рабочий сервак с гитом для каждого разраба чтобы он там работал изолированно. Правда для этого надо отдельно девопса иметь, но у говна для этого нет денег обычно и они эту хуиту на разрабов скидывают - чтобы они сами докер пердолили.
Аноним 04/07/22 Пнд 18:19:27 2396147 668
>>2388464
Найс тролишь долбоеб
Аноним 04/07/22 Пнд 18:43:22 2396164 669
Аноним 04/07/22 Пнд 18:44:23 2396167 670
Как делают роутинг по-уму?
Аноним 04/07/22 Пнд 19:22:17 2396197 671
>>2396147
А что не так? Всё по факту.
Аноним 04/07/22 Пнд 20:27:27 2396254 672
16528861833320.jpg 56Кб, 370x369
370x369
Аноним 04/07/22 Пнд 20:59:33 2396274 673
16565209021771.png 356Кб, 600x450
600x450
>>2396147
Ну блядь, чем не годится сервер с lamp/lemp и системой контроля типа git/hub/lab/gitea? Я просто новичок, неужели мне эту поебень учить? У php-шников ведь есть composer, symphony, laravel, мне что для работодателей нужно учить докер?

Как бы не проблема, но есть ли смысл. Бэкенд на js/node если в проекте, смысл вижу. Фронтенд и система микросервисов там неебическая какая-то тоже. А на php звучит как-то неуместно
Аноним 04/07/22 Пнд 21:20:27 2396286 674
>>2396274
Тебе не нужен контроль версий если нечего контролировать, у тебя не такие большие проекты чтобы их заносить по веткам, в будущем когда научишься кодить поймешь зачем это нужно и только тогда выучишь. Сервера никакие ставить тебе не надо, ты можешь скачать готовые стаки, но они однокнопочные, просто запустил и работаешь, в твоем случае тебе даже не нужно никакие конфиги писать. Composer это менеджер пакетов для PHP, упрощает работу в разы, Symfony и Laravel это вообще фреймворки, один строится поверх другого. Докер тебе нужен как раз таки чтобы не заморачиваться с серверами. Микросервисная архитектура пишется на PHP причем повсеместно и это нормальная практика использовать PHP в связке с JS для этого путем разделения фронтов.
Аноним 04/07/22 Пнд 22:27:48 2396341 675
Сап пр. Допустим я делаю SPA приложение, оформляю авторизацию через token, передаю токен в заголовках.
Это фиксит csrf да, но теперь если я захожу создать функционал приватных фоток, чтобы их видели не все пользователи.
Я не могу создать просто тег img с сылкой на фотку, т.к это отправляет GET запрос, а он токо кукисы передают, собственно поэтому токен не передается. Получается мне нужно делать запрос на мой роут фоток, чтобы он мне скинул в бейс64?
Тогда стоит вопрос кеширования. Мне его самому пилить?
Делают ли адекватные парни передачу токена в хедерах? Или я че-то не выкупаю.
Как в ВК это реализованно? Они генерируют случайную ссылку которая временно работает и потом по ней может пройти любой чел?
Аноним 05/07/22 Втр 12:11:57 2396721 676
Привет, анон
Есть какие нибудь адвайс листы со списком программ на пыхе? типа рулетки? Надо бы тренировать себя, а в чем реализоваться хз
Аноним 05/07/22 Втр 16:08:42 2397014 677
Я правильно понимаю, что лучше делать запрос к бд через PDO? это типа унивирсальный запрос для всех БД типа mysql/nosql/redis/postgresql(и тд названия не знаю, глупенькай)?

лучше PDO умолчанию использовать?
Аноним 05/07/22 Втр 17:08:19 2397082 678
Аноним 05/07/22 Втр 20:37:45 2397237 679
>>2397014
Да, вот только в Битриксе пдо не юзают.
Аноним 05/07/22 Втр 20:57:10 2397251 680
>>2396064
>дногалерное нищебродское айти
Судя по твоему высеру, ты ничего другого и не видел.
Когда придется столкнуться с крупным микросервисным приложением, тогда расскажешь, как тебе просто все поднять без докера на локальной машине
Аноним 05/07/22 Втр 21:01:03 2397253 681
Аноним 05/07/22 Втр 22:02:02 2397285 682
4m7kx3.jpg 61Кб, 500x622
500x622
>>2397251
Дружок пирожок, а на сравнительно старом ноуте на ubuntu докер нормально работать будет? или нужно неебаться с стационарный комп собирать? Я слышал на винде он лагает пиздос и требовательный, это правда?
Или от проекта зависит?

Может кто знает
Аноним 05/07/22 Втр 22:26:42 2397296 683
>>2397285
Я имею ввиду php стеки вчастности
Аноним 05/07/22 Втр 23:45:52 2397352 684
>>2397285
Я слышал докер не пашет только на win7, а линухи/10 нормально.
Аноним 05/07/22 Втр 23:47:59 2397354 685
Вот у меня есть таблица с каким-то списком, и сверху поисковая строка. Как по уму сделать, чтобы AJAXом эту таблицу выводить динамически? Всю полностью запихнуть в heredoc скрипта сервера, а в шаблоне в какой-то div элемент ее писать?
Аноним 06/07/22 Срд 00:05:41 2397372 686
>>2397354
>Как по уму сделать, чтобы AJAXом эту таблицу выводить динамически?
Что ты подразумеваешь под "по уму"? Самый простой вариант - сделать кнопку "Поиск", при нажатии на котороую делать запрос и обновлять данные в таблице.
Аноним 06/07/22 Срд 00:26:43 2397392 687
>>2397372
Короче я продублировал всю таблицу и в скрипте, и в шаблоне(где обернул ее в div). При вбивании в строку поиска после каждого символа с помощью обработчика onkeyup у inpuy она аяксом полностью заменяется. Скорее всего для больших реальных таблиц БД это очень нерационально по производительности, но для небольших объемов пойдет по идее.
Аноним 06/07/22 Срд 00:55:49 2397418 688
>>2397392
хх.ру недавно добавили аякс на поиске, я аж вздрогнул, подумал может приснилось, что самый крупный снг сайт по поиску работы додумался сделать себе фичу 15-летней давности
Аноним 06/07/22 Срд 01:04:52 2397426 689
>>2397418
Кстати про хх.ру, люди собеседуются только один раз в в какую-то фирму и попадают типа в блеклист после отказа, или это нормальная практика собеседоваться туда же через какой-то промежуток времени?
Аноним 06/07/22 Срд 01:09:46 2397429 690
>>2397426
Да не, просто второй раз собеседоваться можно через 1-2-3-4-5-6 месяцев. В ультратоп компаниях мб через год.

А в блеклист можно попасть, если ты поведешь себя по-свински. Типа нагрубишь и нахуй пошлешь, или договоришься на собес, а сам не появишься и т.д.
Аноним 06/07/22 Срд 01:45:17 2397442 691
почему ларавел такое говнище?
Аноним 06/07/22 Срд 02:24:20 2397451 692
>>2395814
>>2396254
Меня (и никого из программеров) не прикалывает, когда собеседник свои "допустим" выдумывает на ходу и по частям.

Поэтому бесплатно думать и отвечать уже не буду.

Что мешало описать полные требования в первом посте?
Аноним 06/07/22 Срд 04:37:44 2397460 693
>>2397253
Потому-что битрикс это ебаное говно созданное тупыми ебланами наебывать ссаных гоев.
Аноним 06/07/22 Срд 04:39:54 2397461 694
Аноним 06/07/22 Срд 04:47:55 2397462 695
>>2397354
Зачем тебе heredoc? Ты хочешь всунуть туда таблицу?
Один из грамотных вариантов это послать запрос на твой скрипт сервера который отправит данные в application/json формате, получить ответ и запарсить с помощью ajax, вывести таблицу с помощью директив пыхи. Если нужно обновить данные просто отправляешь свой поисковой post запрос, который потом принимаешь там же и выводишь таким же образом соответствующую информацию.
Аноним 06/07/22 Срд 04:50:27 2397463 696
Аноним 06/07/22 Срд 10:46:37 2397614 697
>>2397462
Да просто во всех примерах ajax'а которые я пока видел там скрипт что-то выводит через echo, а js это присваивает свойству innerHTML какого-то элемента документа.
Если не затруднит, можешь кинуть пример того, о чем ты говорил?
Аноним 06/07/22 Срд 13:19:04 2397788 698
>>2397251
Долбоёб дногалерный, ты?
Работаю над крупным распределённым приложением без всякого докера.
Аноним 06/07/22 Срд 13:49:49 2397831 699
>>2391730
> Если ты хочешь удобный язык, пожертвовав скоростью выполнения, то есть Питон. Если ты хочешь высокую скорость, то есть Раст, если ты хочешь удобную асинхронность и высокую скорость, то есть Го. А какие плюсы у Ноды?
Зачем выбирать из говен когда есть решётки с asp.net которые обладают всем вышеперечисленным?

>>2392108
>основательного изучения JS
Чтобы основательно запомнить все баги/костыли этих помоев существующих ради управления DOM'ом надо ещё денег заплатить?

>>2396064
Ох уж эта боль ждуна который предпочтёт на каждый проект ставить на ОСь тонны говна вместо того, чтобы просто набрать в консоли: docker-compose up
Заебись наверное накатывать кучу хуйни и запускать через костыли проект, а потом на новом проекте ставить другие костыли пока твоя ОСь не упадёт нахуй от такого кол-ва мусора в системе.

>>2397788
>Работаю над крупным распределённым приложением
Из всех зависимостей в котором пыха, мускуль и апач?
Аноним 06/07/22 Срд 16:28:35 2397967 700
Как получить трассировку приложения в пыхе. Подразумевается не вывод стектрейса, а полноценный дебажный лог php-приложения т.к. в нем есть различные джобы и прочая фоновая активность надеюсь не слишком всрато объяснил
Пытался заюзать поделие азиатов, но на 8-ом пыхе не собирается https://github.com/Qihoo360/phptrace
Есть ли еще аналоги phptrace?
Аноним 06/07/22 Срд 16:31:35 2397971 701
>>2397967
Не вывод стектрейса в странице*

быстрофикс
Аноним 06/07/22 Срд 17:50:07 2398035 702
>>2397831
>Чтобы основательно запомнить все баги/костыли этих помоев существующих ради управления DOM'ом надо ещё денег заплатить?
Я заплатил, но там норм базу дают.
Аноним 06/07/22 Срд 18:07:18 2398054 703
image.png 4Кб, 118x37
118x37
image.png 7Кб, 221x41
221x41
image.png 6Кб, 251x123
251x123
image.png 22Кб, 740x548
740x548
>>2398035
Самое главное постичь баги этого недоязыка с динамической типизацией, почему NaN !== NaN и прочие фичи
Аноним 06/07/22 Срд 18:16:21 2398063 704
image.png 668Кб, 652x552
652x552
>>2398054
>4 пик
Что это за хуйня
Аноним 06/07/22 Срд 18:26:36 2398072 705
>>2398054
>NaN !== NaN
>1.1*1.1
>'2'+ '2' - '2'
То ли дело в православном C++! Там то по другому все работает, да?
Аноним 06/07/22 Срд 20:37:01 2398156 706
image.png 140Кб, 966x417
966x417
image.png 232Кб, 864x624
864x624
Сап, камни!

Нужна следующая помощь:

Есть форма для создания тестов с вопросами (пик 1)
Также, есть вопросы. Для них тоже есть форма (пик 2)
Логично, что тест и вопросы связаны один-ко-многим.

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

Вопрос:
Я правильно понимаю, что для того, чтобы одним запросом отправлять на сервер данные "вложенных форм" нужно копать в сторону JS?
Можете подсказать, какая реализация будет более выигрышной?
Аноним 06/07/22 Срд 20:59:54 2398164 707
>>2398156
Нормально ли, если кнопка "сохранить тест" будет сначала отправлять по пути example.com/tests/store, по которому в таблицу с тестами запишется тест; а затем в цикле, в количестве раз, равному количеству вопросов, будет отправлять по пути example.com/questions/store, по которому в таблицу с вопросами запишется вопрос, связанный с тестом через поле с id теста?
Аноним 06/07/22 Срд 21:25:39 2398181 708
>>2398156
Может быть в Laravel через TestController можно сделать что-то типа

$test = Test::create($testFormData);
$questions = $test->questions()->create($questionFormData);

??
Аноним 06/07/22 Срд 21:56:08 2398205 709
Как же всё-таки сделать динамическую форму, которая будет сохранять данные в несколько таблиц одновременно?
Аноним 06/07/22 Срд 22:21:28 2398226 710
>>2398205
>Я правильно понимаю, что для того, чтобы одним запросом отправлять на сервер данные "вложенных форм" нужно копать в сторону JS?
Разве что только для динамического добавления элементов в вопросы.

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

Структура таблицы:

Тесты
— id
— name

Вопросы
— id
— test_id
— text

Ответы
— id
— question_id
— text

Цепляешь таблицы друг за другом, а внутри скрипта создаешь отношения.
Аноним 06/07/22 Срд 22:25:45 2398228 711
>>2398226
Да, это я понимаю.
Но как мне реализовать форму, чтобы из нее данные попадали в таблицы тестов, вопросов и ответов? Из TestController.store делать редирект в QuestionController.store а оттуда в AnswerController.store?
Аноним 06/07/22 Срд 22:45:41 2398244 712
>>2398226
Нормально ли будет если кнопка "добавить вопрос" будет добавлять в форму следующую структуру вида:

</input type="text" name="question_{i}">
</input type="text" name="answer_{i}">
Где i - номер вопроса в тесте

И в контроллере я буду парсить по question_ . '#\\d#' и answer . '#\\d#'

И для каждого блока, где i одинаковый, я буду вызывать редирект в Question controller и оттуда в AnswerController.

Разве пользователь не сможет подменять i через браузер? Это ведь будет все ломать?
Аноним 07/07/22 Чтв 00:01:18 2398291 713
>>2398286
У меня intelephense vscode тоже не видел интерфейс, реализованный в классе, пока я не открыл файл с ним в новой вкладке. Видимо баг у них, либо надо как-то док-комментами @ показывать это.
Аноним 07/07/22 Чтв 09:29:29 2398402 714
>>2398181
Внезапно, оказалось, что можно.
И подобных методов достаточно:

$test->save($comment);
$test->saveMany([$comment1, $comment2]);
$test->create($commentData);
$test->createMany([$commentData1, $commentData2]);


Тогда вопрос следующий:
Как внутри формы выделять блоки вопрос-ответ? Разве POST-запрос может иметь уровни вложенности?
Аноним 07/07/22 Чтв 09:32:46 2398404 715
>>2398402
Фикс.
Конечно, $test->comments()->save($comment).
Аноним 07/07/22 Чтв 10:01:39 2398421 716
>>2398409
Из консоли ты можешь подключиться к базе данных через этого юзера? Менять пароль для юзера пробовал?
Аноним 07/07/22 Чтв 10:55:11 2398471 717
>>2398409
Выше в треде у анона была такая же проблема.
Аноним 07/07/22 Чтв 11:15:57 2398495 718
>>2398475
Чего там, ошибка в конфиге или через судо надо запускать?
Аноним 07/07/22 Чтв 11:48:51 2398518 719
>>2393277

glob(), как и большинство других функций, берет пути относительно рабочей директории процесса. То есть, если рабочая директория это c:\data\, и ты пытаешься открыть файл a\b.txt, то PHP будет пытаться открыть c:\data\a\b.txt.

В ОС вроде Linux/MacOS/Windows у каждого процесса есть "рабочая директория". Ты можешь получить ее функцией getcwd() и изменить функцией chdir(). Собственно, рабочая директория придумана как раз для того, чтобы не надо было писать полные пути к файлам, а можно было использовать относительные.

Если ты запустил скрипт из командной строки, то рабочая директория это директория, которая была текущей на момент запуска скрипта (это не директория, где находится скрипт). Например, если текущая папка была

c:\data\

и ты запустил команду

php c:\scripts\1.php

То рабочей директорией будет c:\data\. В линуксе все аналогично, только слеши наклонены в другую сторону и нет букв у дисков.

Если твой скрипт запускается веб-сервером (то есть, ты открываешь страницу в браузере), то рабочая директория непредсказуема и ты не должен на нее полагаться. Ты можешь явно поменять ее с помощью chdir(), если ты хочешь иметь какое-то предсказуемое значение, но лучше генерировать пути относительно какой-то константы вроде ROOT_DIR или относительно папки скрипта __DIR__.
Аноним 07/07/22 Чтв 11:50:41 2398522 720
>>2398518

А, еще. Рабочая директория наследуется при запуске нового процесса. Поэтому, когда ты запускаешь скрипт из командной строки, то PHP наследует рабочую директорию от оболочки. Рабочая директория не зависит от того, в какой папке расположен сам скрипт.
Аноним 07/07/22 Чтв 12:17:30 2398536 721
>>2395252

Докер запускает программы внутри "контейнера", если упростить, то контейнер это что-то вроде легкой виртуальной машины. Программа в контейнере изолирована от основной системы: она может видеть другие файлы и папки, другие сетевые интерфейсы, и других пользователей.

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

https://docs.docker.com/engine/reference/builder/#user
https://docs.docker.com/engine/security/userns-remap/

Например: мы настраиваем, что пользователь mysite на хосте соответствует пользователю root в контейнере. Мы запускаем программу в контейнере как root, и если она создает файл, то она видит его владельца как root, но на хосте его реальный владелец виден как mysite.

Это называется linux user namespaces и container uid mapping. Они описаны в мануале по Линуксу: https://man7.org/linux/man-pages/man7/user_namespaces.7.html

Там, кстати, написано, что можно просмотреть маппинги для контейнера через /proc/{id процесса на хосте}/uid_map. Под каким пользователем на хосте запущен контейнер, ты можешь увидеть в /proc/{id процесса на хосте}/loginuid

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

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

Работа с Докером требует знания командной строки, shell и основ Линукса. Докер это не магическая кнопка, которая сама решит все проблемы.


Аноним 07/07/22 Чтв 12:46:34 2398557 722
>>2395664

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

- определенные версии библиотек PHP
- определенная версия PHP (у тебя нет желания тестировать каждое изменение кода со всеми предыдущими и будущими версиями PHP)
- определенные расширения к PHP
- определенные утилиты командной строки (например: для конвертации PDF в картинку)
- определенная версия PostgreSQL
- определенные плагины к PostgreSQL
- определенная версия redis
- определенная версия nginx

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

Установка тоже может быть нетривиальной. Например, чтобы установить какую-то нативную библиотеку (не на PHP), тебе может понадобиться ее скомпилировать, а для этого нужно сначала установить определенную версию компилятора, и определенные версии зависимостей этой библиотеки.

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

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

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

- линуксовые менеджеры пакетов вроде apt или rpm могут не содержать нужной программы в репозитории, или не содержать нужной версии, или содержать версию, собранную с другими настройками (например, утилита есть, но она не поддерживает какой-то формат данных).
- в разных дистрибутивах пакет с одной программой может называться по-разному. В одном это пакет convert, в другом это libconvert, а в третьем convert-utils. Непонятно, как в документации все это описать.
- линуксовые менеджеры пакетов не умеют ставить программу с произвольными настройками компиляции
- линуксовые менеджеры пакетов умеют ставить программы только глобально и не позволяют поставить две версии одной программы или установить программу в произвольную папку. Одному проекту нужна утилита convert версии 1.5, а другому версии 1.7, и обе поставить невозможно.
- линуксовые программы и утилиты часто хардкодят пути к файлам. Например, программа позволяет хранить настройки только в /etc/hosts. Что делать, если у тебя 2 проекта и в каждом нужны свои настройки, непонятно.
- наконец, линуксовые менеджеры пакетов не работают под Windows или Mac

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

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

То есть, вместо того, чтобы сделать правильный универсальный менеджер пакетов, просто сделали кривой костыль на shell-скриптах, что очень часто принято делать в мире Линукс. Для PHP-библиотек есть композер, для Rust-библиотек есть Cargo, только для Сишного хлама требуются такие костыли.

Мне кажется, правильное решение было бы таким:

- сделать менеджер пакетов вроде cargo/composer для Си. Он должен уметь скачивать исходный код и зависимости и компилировать их под любую платформу с любыми настройками.
- сделать платформу или несколько платформ, которые позволяют писать код на Си кроссплатформенно. Большинству утилит не нужны какие-то навороченные API, им хватает чтения файлов и работы с сетью.
- сделать убер-менеджер пакетов, который сам ничего не ставит, а умеет лишь устанавливать и запускать другие менеджеры. Например, если твоему проекту нужны библиотеки на Го, Ноде и Rust, то он установит соответствующие менеджеры и все что им нужно, и попросит их установить нужные библиотеки и программы. Не глобально, а в папочку с проектом.
Аноним 07/07/22 Чтв 12:56:12 2398566 723
>>2398557
а из-за этой виртуальной машины производительность не падает на продакшене? а если несколько докеров на одном сервере, всё нормально с этим, можно не волноваться?
Аноним 07/07/22 Чтв 13:01:13 2398570 724
>>2396167

Используют готовую библиотеку или фреймворк для роутинга, а не пишут велосипед. Или ты имел в виду, как правильно придумать URL для страниц? У меня есть старый пост по теме: https://gist.github.com/codedokode/772a4ccc03e41d6b7cba

>>2396274

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

>>2396286

Микросервисная архитектура, я надеюсь, все же не используется повсеместно, так как для большинства небольших и средних проектов это просто выбрасывание денег на ветер. Я же писал где-то выше про это >>2390832 >>2391723

Аноним 07/07/22 Чтв 13:04:43 2398577 725
>>2398566

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

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

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

Часто, Докер используют только для разработки, но не на продакшене.
Аноним 07/07/22 Чтв 13:06:56 2398578 726
image.png 16Кб, 468x125
468x125
image.png 40Кб, 203x174
203x174
Я опять с тестами, вопросами и ответами
Выяснил, как можно передавать массивы в POST-запрос, но теперь меня терзают смутные сомнения.

Например, я буду динамически добавлять блоки вопрос-ответ в форму как на пик1.

Но что, если сильно хитрый юзер решит подменить $i в
<input type="text" name="questions[$i][text]">?

разве это не может все мне сломать?
Аноним 07/07/22 Чтв 13:10:43 2398583 727
>>2398578
Есть ли способ как-то детектить изменения в html форме, навязанные юзером?

В динамической форме ведь не сработает сохранять начальное состояние формы и сравнивать с формой, пришедшей от клиента?
Аноним 07/07/22 Чтв 13:13:31 2398587 728
>>2396341

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

Можно вернуться к кукам и использовать их. Также, ты можешь сгенерировать ссылку с токеном в ней вроде /img/ds6ds6fshdf7sdfhsf539sdfsdf/selfie.jpg или selfie.jpg?token=dhd7f8f8f7df77df. Но это не очень безопасно, так как такая ссылка может попасть в поисковики. Например, ты пересылаешь ссылку по скайпу, скайп сливает ссылку в Bing, Bing индексирует картинку и делает ее всем доступно. Или глупый пользователь сам выложит где-нибудь ссылку и будет жалеть.

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

Защищаться от CSRF можно двумя способами:

1) проверять HTTP-заголовок Origin
2) CSRF-токеном

Аноним 07/07/22 Чтв 13:18:35 2398593 729
>>2397014

Да, но PDO только для SQL-баз данных и не работает с redis.

>>2397285

Под Линуксом используются контейнеры, потому оверхед маленький. Но:

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

Аноним 07/07/22 Чтв 13:21:35 2398598 730
>>2397354

Если у тебя таблица небольшая и не хранится в базе данных, то проще просто целиком засунуть ее в тело страницы в виде JSON и добавить JS библиотеку, которая позволяет брать данные из JSON и выводить постранично с поиском.

> обработчика onkeyup

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

Аноним 07/07/22 Чтв 13:27:58 2398600 731
>>2397354

А вообще, если ты хочешь получить адекватный ответ, то сформулируй:

- примерное количество строк в таблице и сколько примерно байт занимают данные или сколько там символов
- должна ли таблица индексироваться поисковиками или это неважно
- что важнее: немного подождать загрузки, но потом быстро искать, или быстро загрузить страницу, а искать не так быстро. То есть, если поиском почти никто не пользуется, то второй вариант лучше, а если наоборот, люди заходят и делают много поисков подряд, то лучше первый вариант
- быстрый ли интернет у пользователей. Например, если страница используется только внутри компании, то можно считать, что интернет очень быстрый.
Аноним 07/07/22 Чтв 13:38:16 2398608 732
>>2397967

В xdebug есть трассировка? в которую попадает каждый вызов функции: https://xdebug.org/docs/trace

>>2398054

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

>>2398156

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

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

Аноним 07/07/22 Чтв 13:49:04 2398620 733
>>2398608
О, спасибо за совет с сохранением значений из прошлого вопроса!
Навигацию и перетаскивание я планировал реализовать позднее.

У меня проблема с организацией структуры инпутов в форме.
Я ведь правильно понимаю, что я должен передавать серверу массив вопросов? А как правильно организовать инпуты, чтобы результатом стало что-то вроде пикрил? А может мне не нужно делать вложенные массивы, а обойтись линейным?>>2398608
Аноним 07/07/22 Чтв 13:51:23 2398623 734
>>2398156

Теоретически, ты можешь обойтись без JS, чистым HTML. В HTML можно использовать имена полей с индексами вроде

question[1][text]
answer[1][1][text]

В PHP они придут массивами. Мануал: https://www.php.net/manual/ru/faq.html.php#faq.html.arrays

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

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

Тут тоже есть решение - JS-библиотека pjax умеет перехватывать отправку формы, отправлять AJAX-запрос и обновлять страницу из результатов. Но и тут есть проблема, что состояние страницы теряется, так как поля пересоздаются заново.

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

Так что да, тут нужен JS. Начать можно с того, что сделать добавление/удаление/перестановку вопроса, вариантов ответов через JS. А отправку оставить классическим способом. Потом добавить бекап данных, восстановление из бекапа, отправку формы аяксом.

Чтобы просто добавить вопрос или вариант ответа ты можешь сделать шаблон в теле страницы с помощью тега <template> и JS-скриптом клонировать данные из DOM шаблона и вставлять в DOM страницы. То есть, это будет работать без отправки запроса на сервер.

И не забудь об оптимизации пользовательского опыта. Желательно сделать добавление вопросов максимально просто. Например, сделать поле "текст вопроса", и когда пользователь что-то в нем печатает, автоматически появляются остальные поля (тип ответа, варианты ответов) и поле для следующего вопроса.

Можно также добавить сбоку мини-карту, в которой видны в уменьшенном масштабе все вопросы, правильно ли они заполнены и можно быстро перейти к любому из них.
Аноним 07/07/22 Чтв 13:53:17 2398625 735
>>2398156

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

Если с этим совсем сложно, то можно на стороне JS генерировать временные id, которые легко отличить от настоящих.
Аноним 07/07/22 Чтв 13:55:45 2398632 736
>>2398164

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

Лучше будет в JS собирать все данные и отправлять одной пачкой в формате JSON. Чтобы операция была атомарной: или тест создан целиком со всеми вопросами, или произошла какая-то ошибка.

Аноним 07/07/22 Чтв 14:05:54 2398655 737
>>2398164

Также, если ты хочешь более красивые URL, то используй:

POST /tests/ для создания нового теста
PUT /tests/124/ для обновления теста с id

Также, ты можешь сохранять тест в процессе создания как бекап, например, каждые 60 секунд отправляя его на POST /tests/draft/{draft id}/, но эти данные должны сохраняться как "черновик", а не вносить изменения в реальный тест, пока пользователь не подтвердит желание перезаписать тест.

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

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

Без версионирования будут проблемы, если кто-то сдал тест на 100%, потом в тест добавили вопросы, и у него оценка автоматически снизилась. Или уже, поменяли текст вопроса, и его ответ стал неправильным. Если не использовать версионирование, то придется запрещать редактировать тест, если кто-то уже проходил его.
Аноним 07/07/22 Чтв 14:07:49 2398657 738
>>2398598
>>2398600
Да я просто изучаю ajax немного, думаю это на собесах тоже спрашивают, никаких требований естественно. Просто подумал про производительность такого подхода.
>Это устаревший подход, надо использовать событие input
Ты имеешь в виду oninput? Почему-то на htmlbook.ru нет его, они не обновляют сайт или там просто неполная информация? На w3schools естественно нашел.
Аноним 07/07/22 Чтв 14:12:09 2398660 739
>>2398181

Это называется сериализация (преобразование объектов в массивы и обратно). Ты можешь использовать возможности Ларавель, или сериализаторы вроде JMSSerializer, Symfony Serializer.

>>2398205

Ты отправляешь все данные одной пачкой. На сервере ты:

- при создании создаешь граф из объектов (Тестов, Вопросов, Вариантов Ответов)
- при редактировании ты загружаешь объекты из БД и обновляешь их пришедшими данными

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

Далее ты валидируешь и если все ок, то сохраняешь объекты обратно в БД. В Ларавель по моему для этого надо вызывать save() у каждого объекта, а в Data Mapper вроде Доктрины достаточно просто вызвать $em->flush() и она сама все сохранит.

Не забудь обернуть сохранение в транзакцию, чтобы не было такого, что при ошибке половина изменений сохранилась, а половина нет.
Аноним 07/07/22 Чтв 14:27:31 2398678 740
>>2398205

То есть, принцип такой:

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

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

> Но как мне реализовать форму, чтобы из нее данные попадали в таблицы тестов, вопросов и ответов? Из TestController.store делать редирект в QuestionController.store а оттуда в AnswerController.store?

У тебя будет одна точка входа в контроллере (TestController.store), которая получает большой JSON с данными и создает/обновляет модели. Нет такого правила, что ты можешь создавать Вопросы только в QuestionController. Не нужно делать редиректы.

Также, я советую не писать все в контроллере (это называется "толстый контроллер" и быстро превращает код в лапшу), а разбить код на функции и поместить их в сервисы, например, сделать сервис создания и редактирования тестов TestEditService. Вот пример с использованием версионирования тестов:

- в контроллере принимаем JSON и превращаем его в массив массивов
- вызываем TestEditService#deserializeTest(array $data): Test для преобразования жуткого массива массивов в граф из объектов Test, Question, Answer
- вызываем TestEditService#validateTest(Test $test): Error[] для валидации теста
- вызываем TestEditService#loadTest(int $id) для загрузки предыдущей версии теста из БД
- вызываем TestEditService#createNewVersion(?Test $old, Test $new), которая обнаружит изменения и создаст новую версию теста. Если вопрос изменился, то мы создаем новый вопрос, если нет, то мы включаем в новый тест вопрос из старого теста, чтобы не множить сущности без необходимости.
- если все ок, то редиректим на просмотр теста или возвращаем JSON с успешным результатом

Заметь, что такое разделение кода позволяет тестировать функции по отдельности. Ты можешь, например, вызвать deserializeTest() и проверить, что возвращается правильный набор объектов. Потом протестировать следующую функцию итд. Конечно, в идеале тестировать с помощью автоматических тестов.
Аноним 07/07/22 Чтв 14:30:49 2398688 741
>>2398244

Не изобретай велосипед. В именах полей можно использовать индексы массива, вроде question[1]. Если ты будешь собирать данные из формы с помощью JS, то можно либо самому писать библиотеку для этого, либо использовать готовую вроде https://www.npmjs.com/package/@jalik/form-parser

Эта библиотека собирает данные из формы в массив массивов и поддерживает квадратные скобки в именах полей.

Аноним 07/07/22 Чтв 14:33:14 2398691 742
Аноним 07/07/22 Чтв 14:51:09 2398708 743
>>2398495

Тут отвечали: >>2388360

В новых версиях MySQL подключиться как root можно только через sudo, потому надо для сайта создать отдельного пользователя MySQL с паролем.

>>2398578

Прислать тебе могут что угодно: массив вместо строки, строку вместо массива, массив вложенностью в 100 уровней и тд. Твой код должен надежно работать в любой ситуации.

Ты можешь попробовать прикрутить Ларавелевскую валидацию данных запроса:

https://laravel.com/docs/9.x/validation#quick-writing-the-validation-logic
https://laravel.com/docs/9.x/validation#validating-arrays

или что-то другое.

Обрати внимание, что тут фактически два уровня валидации:

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

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

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

Также, иногда массив из запроса превращают не сразу в модели, а в объекты-DTO, назначение которых перенести информацию из контроллера в сервис. То есть:

- принимаем массив, и создаем объекты-DTO
- передаем в сервис эти объекты и он на их основе вносит изменения в модель или в БД

Отличие DTO от моделей:

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

DTO используют, например, когда у тебя в модели 50 полей, а в форме всего 5 и тебе удобнее передать небольшой объект. Или когда данные в форме хранятся в другом формате, не как в модели. В Ларавеле есть что-то вроде DTO: https://laravel.com/docs/9.x/validation#creating-form-requests но эти "DTO" очень сильно завязаны на формы и могут испортить архитектуру.

Аноним 07/07/22 Чтв 14:53:12 2398709 744
>>2398583

Проще всего отправлять всю форму на сервер и там сравнивать с данными из БД.

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

Такой обработчик можно использовать, чтобы выдавать предупреждение при попытке закрыть вкладку с несохраненными изменениями или для бекапа формы в localstorage или на сервер.
Аноним 07/07/22 Чтв 14:56:50 2398713 745
>>2398583

Еще можно преобразовать форму в JSON и сравнить с изначальным JSON. Наверно, в JS есть библиотеки для сравнения JSON.

>>2398620

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

То есть:

questions[1][text]
questions[1][answers][2][text]
questions[1][answers][2][correct]

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

question_text[1]
question_points[1]
answers_text[16]
answers_correct[16]
Аноним 07/07/22 Чтв 14:59:19 2398716 746
Аноним 07/07/22 Чтв 16:41:03 2398785 747
>>2398713
Выходит так, что радио-кнопки должны иметь разные имена
name="questions[1][answers][1][correct]"
name="questions[1][answers][2][correct]"
name="questions[1][answers][3][correct]"


Но ведь это приведет к тому, что они больше не будут составлять одну группу? Здесь тоже надо использовать JS?
Аноним 07/07/22 Чтв 17:45:09 2398837 748
>>2398785

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

Вариант с разными именами нужен, если у нас чекбоксы.
Аноним 07/07/22 Чтв 18:10:57 2398865 749
Имеет ли смысл писать свой роутер? В ТЗ сказали реализовать ToDO используя как можно меньше кода, а я никогда не писал роутер, отказался от работы.
Аноним 07/07/22 Чтв 19:11:05 2398925 750
>>2398570
>Используют готовую библиотеку или фреймворк для роутинга, а не пишут велосипед. Или ты имел в виду, как правильно придумать URL для страниц? У меня есть старый пост по теме:
Ну и то, и то. А как там вот в уроке url'ы без названия скрипта с расширением php в конце - это в htaccess надо как-то переадресацию настраивать уметь в каждой папке?
Аноним 07/07/22 Чтв 19:32:39 2398945 751
>>2398865
Это же тред про обучение. Для обучения -- да, стоит, раз есть пробелы.
Аноним 07/07/22 Чтв 22:30:22 2399090 752
>>2398925

Способ переадресации зависит от используемого сервера.

В Apache используется mod_rewrite, это модуль, который переписывает URL согласно правилам до тех пор, пока URL не перестанет меняться: https://httpd.apache.org/docs/2.4/rewrite/intro.html

В Nginx обычно просто все запросы, не соответствующие статическим файлам, перенаправляют на index.php, как тут в конце страницы, только SCRIPT_FILENAME надо присвоить "/index.php": https://nginx.org/ru/docs/beginners_guide.html

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

/posts/{id}/

В таком случае роутер должен дополнительно извлечь значения параметров из URL и вернуть их.
Аноним 07/07/22 Чтв 22:45:07 2399103 753
>>2398945
Ну значит я правильно сделал, а на будущее всем скажу, что при устройстве на работу все чему учит ОП - учитывается. И я не говорю, что я сомневался, просто убедился.
Аноним 07/07/22 Чтв 22:53:16 2399110 754
>>2398867
Используй бинарные типы, TRUE/FALSE.
Аноним 07/07/22 Чтв 23:02:58 2399117 755
>>2398865
На джуна собеседовался?
Я тоже не знаю, как такое делать. Надо наверное фреймворк какой-то начать изучать и там смотреть как сделали.
Аноним 07/07/22 Чтв 23:08:34 2399120 756
Аноним 07/07/22 Чтв 23:09:34 2399122 757
Просили написать свой роутер и использовать пару контроллеров и как можно меньше кода. У них фреймворк на симфони.
Аноним 07/07/22 Чтв 23:12:38 2399124 758
>>2399120
На кого если не секрет?
У меня в мухосрани на стажера есть вакансия, там в требованиях только php (и/или JS). Вот думаю, что на тестовом будет.
На джуна уже фреймворк/цмс требуют знания, я этого не касался пока вообще.
Аноним 08/07/22 Птн 00:23:17 2399168 759
>>2399124
На фуллстака по Laravel/Vue. Однако я указал в навыках, что знаю PHP вот меня и попросили в ТЗ роутер написать, а я уже и забыл как это делать. ЗП попросил 1500$.
Была еще контора которая на 3000 евро, дали ТЗ сделать CRUD приложение, которое я сделал, но там конкуренция получше меня была, пришлось пососать. Но я вынес из этого, что мне нужно повысить свой уровень и потом пытаться снова, либо пойти джуном поработать, параллельно обучаться дальше в темпе.
Аноним 08/07/22 Птн 02:10:39 2399219 760
>>2399103
Подтверждаю, даже для битрикса спросили почти все.
Аноним 08/07/22 Птн 02:12:13 2399222 761
>>2399124
На джуна не во всех вакансиях требуют фреймворки/смс, но в любом случае это будет огромным плюсом.
Аноним 08/07/22 Птн 02:48:22 2399229 762
такой вопросик
если бы вы сейчас начинали изучать что то, стали бы учить пыху или что то другое?
Аноним 08/07/22 Птн 02:53:54 2399230 763
>>2399229
Я сам пыхарь но посоветовал бы изучить JS, а потом пыху.
Аноним 08/07/22 Птн 07:13:59 2399255 764
Аноним 08/07/22 Птн 11:18:43 2399357 765
>>2398867

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

Аналогично для чекбоксов, передаются только отмеченные чекбоксы, их name и value.

С помощью JS данные можно передать в любом формате. Но если ты будешь использовать такой же формат, как и браузер, то сможешь воспользоваться готовыми библиотеками вроде той, что я приводил выше.
Аноним 08/07/22 Птн 13:03:05 2399470 766
Есть ли смысл учить VUE3, если я сейчас прохожу конкретный учебный курс php/js/laravel?

Javascript и PHP вроде как, довольно самодостаточными языками стали, а приложения на андроид и юбер-фронтенд-стартапы на ноде я не планирую делать. Про то, что он используется в Laravel я знаю, но просто стоит ли тратить время, если он сдуется за ненадобностью, или же он необходим потому-что голый джаваскрипт недостаточно фунцкионален?
Аноним 08/07/22 Птн 13:13:27 2399483 767
>>2399470
Если не знаешь JS то не лезь пока во фреймворки, вне зависимости от того где ты будешь его использовать нужно знать ванильный JS. Потом фреймворки будут легче даваться.
Аноним 08/07/22 Птн 13:14:21 2399485 768
serial-experime[...].jpg 226Кб, 1280x1024
1280x1024
>>2399430
ты на русском общаешься или узбекском?
>правельно сылку
>мол как должна
>сылка
>свой маму ибал

Вы всерьез идете программировать?
Аноним 08/07/22 Птн 13:15:01 2399486 769
Аноним 08/07/22 Птн 13:26:12 2399522 770
Аноним 08/07/22 Птн 13:57:19 2399589 771
>>2399470
Ну для галки стоит изучить, это же недолго и несложно. Во многих вакансиях видел такое требование, иногда оно шло как "плюс".
Аноним 08/07/22 Птн 14:06:13 2399605 772
Аноним 08/07/22 Птн 14:19:04 2399636 773
Аноним 08/07/22 Птн 14:19:53 2399638 774
>>2399636
В том что ты можешь изучить больше, но бесплатно.
Аноним 08/07/22 Птн 14:34:00 2399653 775
>>2399605
Обоснуй?

про вакансии и отзывы похуй, у меня есть контент и план учебы, мне все нравится - там от базы, протоколы/html/css, до проектов,и включает почти полные курсы по этим языкам (js/php) и фреймворкам (yii,laravel). Мало того, я взял с большой скидкой
Аноним 08/07/22 Птн 15:02:34 2399693 776
drk1.jpg 44Кб, 1200x675
1200x675
>>2399653
Отдельно отмечу тренажеры, и поддержку наставников в чате ( моем случае). Менеджеры хорошие, отзывчивые, даже решил одну проблему в свою пользу (в другой конторке меня бы нахуй послали сходу даже не сомневаюсь).

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

тоже думал что курсы нахуй не нужны
Аноним 08/07/22 Птн 18:25:24 2399942 777
>>2399693
А думать вас там тоже учат на курсах? Я хуею с вас, учиться нужно не по курсам, а делая что-то, создавая. Какие из вас программисты, когда вам нужно с ложечки подавать информацию? Я бы понял, если бы вы брали курсы по каким то сложным вещам, где реально нужен человек, который поможет разобраться во фреймворке и т.д (И то на ютубе полно информаций), но такие простые вещи объяснять это просто пиздец.
Аноним 08/07/22 Птн 19:16:14 2399981 778
>>2399942
Нахуй мне твой ютуб, с него тоже у меня есть видео. Я предпочитаю и официальную документацию, и спижженые видеокурсы и тд. С хуяли ты взял что я не собираюсь самостоятельно что-то делать?

Там просто структуризированная информация, по главам, аккуратно, с тренажерами и самое главное в мире PHP - современный код, а не легаси хуйня 12летней давности, или пустое дерьмо от васяна для ютабчека из разряда ВЕСЬ ВУЕ ЗА ЧАС.
Я ебал все на разных сайтах искать, (есть отличные материалы не спорю) где каждый порит хуйню в меру своей испорченности, зачем мне тратить время?

Еще раз напомню что ОПчик тоже молодец, мне нравится стиль изложения и затронутые им темы
Аноним 08/07/22 Птн 19:40:34 2400002 779
Вкатываюсь в битрикс, уже раздали нам задачи, пора их делать. И тут что-то я начал сомневаться. Меня прям раздирает депрессняк от битрикса. Я все время думаю, что мог бы сразу вкатиться в ларавель и больше никуда не выкатываться с него, а не изучать этот битрикс, знания которого я считаю лишними для себя. Все время вспоминаю слова анонов про то как плохо быть битриксоидом, что потом никуда ты не перекатишься, так мол и повязнешь в нем и т.д.

У меня есть 2 варианта: вкатываться в Laravel и осенью искать оффлайн работу по всей России, либо продолжать тут вкатываться в битрикс, зато удаленно сразу. В планах после вката в битрикс параллельно вкатываться в ларавель потихоньку и через полгода начать пытаться проходить собесы по ларавелю.

Будут ли учитывать мой опыт на битриксе? Или это наоборот хуево, что я был битриксоидом и нахватался "плохой практики кода"? Что посоветуете? Забыть про битрикс и хуячить ларавель сразу?

Я устал сомневаться. Наверное изначально не стоило лезть в битрикс...
Аноним 08/07/22 Птн 20:48:17 2400087 780
изображение.png 225Кб, 624x750
624x750
В пыхе полный ноль, но срочно надо разобраться в этом куске кода. Что тут происходит, и где может быть подвох?
Аноним 08/07/22 Птн 22:00:58 2400199 781
image.png 40Кб, 731x639
731x639
Мне вот интересно, когда уже колесо сансары даст оборот и мы снова вернемся к написанию нативных форм?
Аноним 08/07/22 Птн 22:14:13 2400205 782
>>2400087
Ладно, уточню запрос что возвращают Session::get, или где про это почитать? В официальных доках ларавеля никакого описания
Аноним 08/07/22 Птн 22:14:36 2400206 783
>>2400205
Тире пропустил, ну да и ладно
Аноним 08/07/22 Птн 22:46:53 2400215 784
>>2399981
Бля когда работать начнёшь просто ахуеешь :)
Аноним 08/07/22 Птн 23:39:42 2400238 785
Аноним 09/07/22 Суб 01:50:43 2400273 786
>>2400199
За это и не люблю ЖС и его фреймворки. Потому, что постоянно вижу кашу из кода и тегов в файлах. Читается как говно и выглядит как говно.
Хуже всего когда такой ещё и в ПХП умеет - тогда жди файлы из адовой мешанины пхп+хтмл+жс где всё во всё завёрнуто, что неделю пить придётся в попытке развидеть.
Аноним 09/07/22 Суб 03:10:09 2400294 787
Аноним 09/07/22 Суб 03:33:33 2400298 788
>>2400294
Поподробнее.
Просто я сам новичок и мне интересно
Аноним 09/07/22 Суб 03:34:04 2400299 789
>>2400298
Поподробнее пожалуйста
Аноним 09/07/22 Суб 03:52:23 2400301 790
>>2400298
Когда дадут ТЗ все что ты изучал на курсах окажется не нужным.
Аноним 09/07/22 Суб 05:13:59 2400308 791
image.png 426Кб, 800x800
800x800
Когда другие пиздострадают по ЕОТ, ты пиздострадаешь на сообщения тяночки из HR конторы которая дала ТЗ и напрямую тебя отшила и ты знаешь почему.
Аноним 09/07/22 Суб 11:18:30 2400406 792
В задаче про кредит в банке постоянно бесконечный цикл получается, вроде бы все правильно же делаю
https://onlinephp.io/c/d9f7d
Аноним 09/07/22 Суб 12:08:25 2400418 793
>>2400406
Условие остановки цикла $max < 10000 никогда не выполнится.
Аноним 09/07/22 Суб 12:30:11 2400433 794
>>2400418
А блять, это же отдельная переменная
Аноним 09/07/22 Суб 15:36:28 2400622 795
>>2400273
Пыха гораздо больше говно. Это я тебе говорю как человек, которому за сутки пришлось искать дыры в жс и пыхе, перед этим вообще их не зная. Если в жскоде я разобрался на лету, то с пыхой долблюсь уже довольно долго, и это ещё не предел
Аноним 09/07/22 Суб 18:54:45 2400856 796
>>2400622
>перед этим вообще их не зная
Так тебе и мнение рано иметь - я то оба языка знаю и работаю на них.
Аноним 09/07/22 Суб 19:59:02 2400901 797
>>2400856
Ну так я тебе мнение со стороны говорю. Пыха — кусок полупереваренного кала без нормальной документации к своим говнофреймворкам и с синтаксисом, который невозможно нормально читать
Аноним 09/07/22 Суб 22:05:38 2400997 798
>>2400901
Толсто

Че мамка сеня приготовила?
Аноним 09/07/22 Суб 22:32:04 2401023 799
>>2400901
Так-то у пхп одна из топовых документаций, даун. Что к языку, что к Ларавелям. Просто ты её не читал или не понял в силу скудоумия.
Аноним 09/07/22 Суб 23:32:29 2401061 800
>>2401023
Продолжаешь оправдывать это кал, потому что за него тебе платят? Глупо
Аноним 09/07/22 Суб 23:54:30 2401080 801
>>2401061
Что глупо, шиз? Работать за деньги? А может срать на пхп в треде про пхп глупо?
Аноним 10/07/22 Вск 06:06:56 2401189 802
>>2401023
Кстати поддвачну, у пыхи топ документация среди всех языков, на которых я работал. У симфони неоч, конечно, но её достаточно по крайней мере.
Аноним 10/07/22 Вск 10:30:11 2401227 803
>>2401061
Не кормите зеленого.
Аноним 10/07/22 Вск 11:53:52 2401272 804
Мне 39 лет, возможно ли с нуля изучив php найти работу?

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

Я знаю о чём говорю, потому что сам ищу уже 3 года работу, мне 36. Я не с нуля, я сайты делал всю жизнь на фрилансе (на php и js). Сейчас сайты на фрилансе готовы делать за 500 рублей + отзыв, масса желающих, это и выпускники курсов, и выпускники вузов без опыта, и такие как я, кто раньше на этом пытался заработать на жизнь.

Сейчас клиентов на сайты поубивилось, этому есть целый ряд причин:
мелкие/средние сайты в целом сдают позиции на фоне Youtube, Instagram и т.д.
многие отрасли заняли крупные игроки (напр взять вакансии - если раньше были сайты с вакансиями в каждом городе, то сегодня это несколько крупных федеральных игроков, если взять интернет-магазины - то сейчас всё подминают под себя федеральные площадки, имеющие федеральную логистическую сеть, где вам проще стать их партнёром и продавать всё с их площадки, т.к. весь народ тусуется там, это и озон, и вайлдбериз и т.д., в сша ранее всё аналогично было до тех пор, пока не остался один амазон и walmart и так во всех сферах)
всю остальную мелочевку под себя взяли wix'ы и прочие конструкторы сайтов, где все сами себе лепят сайты либо заказывают слепить что-нибудь на этих площадках фрилансеров, а это, как я уже писал, 500 рублей + отзыв и 2 дня работы (но это надо ещё конкурс выиграть на эту работу, т.к. желающих попотеть за эти деньги немеряно).


Так что на фрилансе не от хорошей жизни, а от того, что на работу никого не берут. Моя ошибка была в том, что я вовремя не ушёл из этой отрасли в более перспективную, нужно было уходить либо с PHP, либо с сайтостроения (пытаться устраиваться в финтех джуном лет 10 назад, пока ещё это было возможно, ибо в сайтостроении как программист не прогрессируешь, наоборот - деградируешь, стек технологий устаревает), либо вообще из IT. Меня не берут из-за отсутсвия опыта работы в команде и опыта коммерческой разработки на том или ином фреймворке. Я бы и рад получить этот опыт, но негде. Работодатели дообучать старичков не готовы. Если вам за 30, вы не будете сидеть сутки решать ненужную вам задачку из спортивного интереса (а в 20 я с удовольствием сам это регулярно проделывал).

Джунам без знания готового стека компании двери сейчас везде закрыты, если только по знакомству. Там, где вы в вакансиях видите джун, по факту на собесе будут спрашивать за миддла. Т.е. ООП, паттерны проектирования, GIT, работа в команде, опыт работы с фреймворком X, будут смотреть, можно ли сразу вам будет кинуть задачу и ждать результат, не контролируя каждый шаг. Т.е. им нужен готовый человек, которого не нужно обучать, на это сейчас работодатели уже не идут, ибо нет надобности. Конкурс - по 100 человек на одну вакансию джуна. Из 100 точно найдётся тот, кто уже работал с их стеком в другой конторе, нет смысла кого-то обучать, дураков нет, деньгами работодатели не разбрасываются. А джун сейчас везде указывают лишь для того, чтобы платить по-джуновски. Когда указывают миддл, знайте, что спрашивать будут по знаниям на senior'а, а платить как миддлу.

откуда ветер дует

В интернете есть куча "реальных" историй успешных успешников, вкатившихся в айти, но ответьте себе честно, вы сами то в это (тыц, тыц, тыц) верите? Не чувствуете, чем это всё попахивает? Подумайте, куда побежит добрая половина желающих вкатиться, вдохновившись подобными историями и "честными" комментариями под ними? Не на курсы ли какие-нибудь? Более того, разоблачали уже и кучу таких "вкатышей" и в youtube (да-да, пропаганда не ограничивается текстовыми постами). Сегодня в IT больше всех зарабатывают продавцы лопат. Золота для самих золотоискателей нет.

Подытожим:
Игнорируйте в интернете истории успешных успешников (не важно, посты ли это, или комментарии под ними, или это в youtube "Канал вкатившегося в IT 60 летнего таксиста"), всё, что вам нужно, это мониторинг сайтов вакансий и понимание того, как там всё происходит на самом деле, т.е. немного поэкспериментируйте, не начиная изучать само программирование, прощупайте почву.
Не смотрите на количество самих вакансий. Хрюши отрабатывают свои копейки. Им нужно показывать видимость своей работы. По факту, когда начнёте рассылать отклики, то увидите, что лишь 60% откликов вообще ими открываются (hh показывает, открывали или нет отклик), т.е. почти половину ваших откликов вообще никто не увидит. Но иногда вас могут даже пригласить на собеседование, однако если вы не миддл, то будет пара каких-нибудь вопросов, не имеющих отношение ни к джуну, ни к программированию вообще, и фраза "если что мы вам перезвоним", а хрюша отметит у себя в тетрадке +1 к списку проведённых за день собеседований (при этом за результатом собеседования вы ещё будете бегать неделю, а там как правило про вас уже забывают сразу по его окончании).
Отговариваю ли я вас изучать программирование? Нет, вовсе нет, но подходить к этому вопросу со стороны экстренного поиска нового источника средств к существованию нужно с трезвой головой и пониманием некоторых вещей, упомянутых мной выше. Иначе можно остаться вообще с голой задницей. Программисты низшего звена (высшего - это своего рода управленцы, их много и не нужно, это как в отделке - нужны Равшан, Джамшут и 1 насяльника), коих большинство, сегодня примерно в том же положении, что и таксисты/риелторы. Только в таксомоторку и агентство недвижимости проще устроиться на работу.
Аноним 10/07/22 Вск 13:26:28 2401324 805
>>2401272
Так душно пишешь поговорил с пастой.
И еще с нотокой заговора, уныло. Фриланс блядь, я бы на твоём месте жопу а офис понес если деньги нужны.
Конечно таксист или охранник с курсов нехуя не получит, английский сам по себе для простых людей сложен, тем более технический.
Сайт за 500р? Одностраничный лендинг? Даже лендинг никто не станет делать что за пиздобольство

Короч вали нахуй, и забери ссобой свою пасту
Аноним 10/07/22 Вск 14:15:48 2401391 806
>>2400901
Согласен, к битрикс фреймворку доки нет нормальной и не будет никогда.
Аноним 10/07/22 Вск 14:49:23 2401443 807
>>2401189
>симфони неоч
У Симфоны да. У Ларки годная - там тоже сайт целый для этого. Сайт и сообщество, да не одно. И это не включая обычного погуглить где на любой вопрос ответ найдётся.
Аноним 10/07/22 Вск 15:11:59 2401467 808
>>2401391
но Битрикс это цмс! или нет?
Аноним 10/07/22 Вск 15:24:09 2401484 809
>>2401467
Некоторые поехавшие его фреймворком называют. Как и Вордпресс иногда лольно почитай статейки с самоподдувом где они пытаются натянуть MVC на ВП.
Привыкай.
Аноним 10/07/22 Вск 16:38:56 2401592 810
>>2401272

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

Ну и знание ООП или git это скорее требования к джуниору.

Обучиться можно и самому.
Аноним 10/07/22 Вск 23:57:38 2402115 811
>>2399229
В идеале, все языки начинаются с C (на котором все остальные языки и написаны).

Хорошая новость: синтаксис РНР +- похож на С++, так что это не самый плохой язык для обучения.
Аноним 10/07/22 Вск 23:59:58 2402117 812
14663933427080.jpg 138Кб, 1000x700
1000x700
>>2400002
если расширить твои сомнения:

есть пидорские/санкционные/вендорские/частные технологии,

а есть святой Open Source.

Выбор очевиден какбэ.
Аноним 11/07/22 Пнд 00:01:54 2402118 813
>>2402115
Кстати, хоть кто-нибудь работал с управлением памятью на РНР?

Да, есть и такое, и в байтоёбские конторы типа VK это активно требуют.
Аноним 11/07/22 Пнд 01:47:04 2402167 814
>>2402117
>есть пидорские/санкционные/вендорские/частные технологии,
Это Битрикс?
>а есть святой Open Source.
А это Laravel?

Если ты за Ларавель, то всё, твёрдо и чётко бросаю Битрикс. Осенью после свадьбы друга поеду в какой-нибудь рандом-город работать на святом Open Source Framework. Спасибо за правильное мнение, Анон. Родина тебя забудет.

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

А пока придётся работать сборщиком ягод в лесу... Но это и хорошо. Лето всё-таки, надо успеть надышаться свежим воздухом.
Аноним 11/07/22 Пнд 04:05:37 2402212 815
>>2402167
>Спасибо за правильное мнение, Анон
Велкам. Давай, продышись там.
А зачем ехать? Можно ведь удалённо.

> зачем эта компания перешла с лары на битрикс
Заказчики редко имеют своё мнение.

+ мб предыдущую версию сделали так хуёво или сложно или дорого, что даже битрикс показался выходом
Аноним 11/07/22 Пнд 07:05:23 2402227 816
image.png 12Кб, 472x120
472x120
Господа, после фреймворка что лучше изучить? из вариантов js или WP
js знаю на уровне скопировать код из документации и натянуть его на свои нужды, ну и немного промисы.
Цель трудоустроится.
В моем представлении js будет требоваться на галере, а WP для фриланса, так ли это?
И сильно ли сложен wp по сравнению с фреймворками(мой-yii2)
Аноним 11/07/22 Пнд 16:25:46 2402662 817
>>2402227
Ну как сказать, хочешь норм функционал сайта изучай js.
Аноним 11/07/22 Пнд 16:57:03 2402689 818
image.png 526Кб, 1196x670
1196x670
>>2402227
>В моем представлении js будет требоваться на галере, а WP для фриланса, так ли это?
Бля, пчёл, ты бы хоть почитал, что это и для чего используется, для начала. Уж представляю, что ты там на yii2 клепаешь..
Аноним 11/07/22 Пнд 19:17:22 2402796 819
>>2402689
Я прекрасно понимаю что и куда.
Я спрашивал конкретно про приоритеты.
Аноним 12/07/22 Втр 23:14:34 2404047 820
Где учить ларавель ?
Аноним 13/07/22 Срд 02:34:46 2404135 821
Аноним 13/07/22 Срд 11:13:10 2404222 822
Какого уровня тестовое задание для стажеров может быть по пыхе?
Аноним 13/07/22 Срд 11:37:07 2404237 823
>>2404222
отпиздить фронтендера
Аноним 13/07/22 Срд 12:10:40 2404266 824
>>2404237
Скорее получить пизды от фронтендера за уебищную структуру ответа метода.
Аноним 13/07/22 Срд 17:08:04 2404673 825
Решил перекатиться по-быстрому из ts/nestjs в php/laravel. Реально ли за 2 недельки осуществить перекат? Есть понимание всяких там ооп, grasp, solid. Есть знания sql, postgresql, typeorm. Планирую по-быстрому освоить синтаксис пхп за первую недельку, а за вторую пробежаться по документации и переписать свой пет проджект на ларавел. Достаточно ли этого, чтобы начать рассылать резюме на php junior вакансии?
Аноним 13/07/22 Срд 18:59:50 2404767 826
>>2404673
Какие могут быть причины такого переката? Я вот думаю в обратную сторону перекатиться
Аноним 14/07/22 Чтв 17:38:03 2405383 827
>>2404767
внатури,
я наоборот хочу перекат в ts/vue с пихи, а ты тут такой человекнаоборот
Аноним 14/07/22 Чтв 19:44:34 2405475 828
>>2405383
Так laravel теперь с VUE в комплекте, нахуй на js фреймворки перекатываться то, нового пердолинга с js хочеться?

Не понимат

Лучше тогда на go пиздовать

А чем я неправа?
Аноним 14/07/22 Чтв 23:10:25 2405623 829
>>2405475
>laravel теперь с VUE в комплекте
Ну да, на вуе же свсем жс не надо знать что бы формошлепать.
Аноним 15/07/22 Птн 08:59:41 2405878 830
>>2405623
ну это то понятно что VUE на JS, но если менять структуру вообще, (работу с базами данных) есть вариант либо на nodejs перейти и подобные JS фреймворки
либо на GO, слышала что с PHP именно на него переходят

он жи современен типа многопоточен что то такое
Аноним 15/07/22 Птн 12:40:07 2406033 831
>>2405475
>laravel теперь с VUE в комплекте
Тебе необязательно его ставить - старый добрый Блейд никуда оттуда не девался. В целом не очень понимаю нынешнюю политику Лары, куда стремятся понапихать всего побольше и помоднее - однажды оно их не туда заведёт.
Аноним 15/07/22 Птн 17:05:42 2406261 832
>>2405475
я смотрю на оферы (европка)
не вижу нихуя о ларавел и вю

а вот вю + тс очень много
+ нюкс

и зп очень даже

да и мне просто заходит вюха очень
Аноним 15/07/22 Птн 17:20:19 2406275 833
>>2406261
тс это typescript? нюкс это что такое?
вюха блядь. зачем так разговариваеш?
Аноним 15/07/22 Птн 17:42:07 2406290 834
Аноним 15/07/22 Птн 18:45:59 2406343 835
>>2406275
>нюкс
крудошлеп, пора учится РЕАЛЬНОЙ разработке. Nuxt это.
Аноним 15/07/22 Птн 18:49:04 2406347 836
>>2406261
Ну так да, зачем лишнее звено в виде PHP, когда условный Next/Nuxt/Gatsby/Remix и что там еще есть справляются точно также, если не лучше?
Аноним 15/07/22 Птн 19:42:47 2406381 837
>>2406347
>лишнее звено в виде PHP

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

Понимаешь, как бы это по научному сказать, PHP это пенитрация, временами даже двойная пенитрация. А джс это полувялый, который суют на полпалки, смекаешь?
Аноним 15/07/22 Птн 19:48:07 2406387 838
>>2406381
>Врятле жс будет хорошо работать с базами данных
С каких пор с БД работает язык, а не ORM? И нода при таком сценарии отработает быстрее, чем пыха.
>для глюченных игрух на юнити
С каких пор юнити понимает жс?
> да кнопочки анимировать
жс не анимирует кнопочки, анимирует кнопочки DOM api
Аноним 15/07/22 Птн 19:50:13 2406389 839
>>2406381
>Врятле жс будет хорошо работать с базами данных
Ну да, то ли дело пыха.
мимо фанат LINQ в C#
Аноним 15/07/22 Птн 20:39:07 2406416 840
>>2406387
>С каких пор юнити понимает жс?
Игры на Unity3d пишутся в связке C# +js.
>>2406389
>фанат LINQ в C#
Как веб вообще связан с твоим C# муха навозная
Аноним 15/07/22 Птн 21:02:19 2406430 841
>>2406416
>Игры на Unity3d пишутся в связке C# +js.
Нет, там свой говноязык, похожий на js, но им не являющийся.
>Как веб вообще связан с твоим C#
Речь шла про БД, не про web. По работе с БД js и PHP одинаково посасывают у C#. js чуть посасывает глубже
Аноним 15/07/22 Птн 21:26:14 2406446 842
>>2406347
Глянул Remix, это они в мире js изобрели фуллстек фреймворки через 10 лет после того, как они померли?
Аноним 16/07/22 Суб 18:31:31 2407024 843
Есть ли адекватные PHP программисты по типу жс ниндзи только по PHP?
Аноним 16/07/22 Суб 19:23:21 2407076 844
>>2407024
>жснинзя
>адекватный
>смотреть видео
>по js
>и php

Что тебе не хватает книг и тренажеров? Статей там. Видео же как интро можно воспринимать, но на серьезных щщах смотреть видосы по php это грех вообще какой-то, лучше с нуля что нибудь самому высирать и пользоваться официальной документацией, и гуглить по вопросам на stackoverflow

Или купить комплексный курс по языку с тренажерами и теорией
Аноним 16/07/22 Суб 20:21:10 2407102 845
>>2407076
Мне кажется, что людям тяжело переходить от теории к практике, я сам такой. Вот эти видео, где кто-то что-то пишет, как бы являются промежуточным звеном.
Аноним 16/07/22 Суб 20:46:23 2407118 846
>>2406446
10 лет назад они померли потому что появились рякты и вуи, сейчас вновь оживают но уже на фундаменте ряктов и вуев.
Аноним 16/07/22 Суб 22:05:34 2407225 847
>>2407076
>Что тебе не хватает книг и тренажеров? Статей там.
Порекомендуй книги и статьи, тренажеры, пожалуйста.
Аноним 16/07/22 Суб 22:39:54 2407250 848
>>2407118
Через 10 лет изобретут суперреакт и супервуй, фуллстак фреймворки опять сдохнут, а через 20 лет придумают (((новые))) фуллстак фреймворки на основе суперреакта и супервуя?
Аноним 17/07/22 Вск 00:20:37 2407325 849
>>2407250
Да, потом колесо сансары даст новый оборот и все пойдет по новой
Аноним 17/07/22 Вск 14:56:05 2407827 850
Без названия.jpg 6Кб, 190x265
190x265
>>2407225
Курсы/тренажеры по PHP:
ну во первых курс о ОПа, а шапке треда
https://ru.hexlet.io/courses/php-basics
https://htmlacademy.ru/profession/backender-solo (платный)

Статьи:
https://habr.com/ru/hub/webdev/
https://habr.com/ru/hub/php/
https://habr.com/ru/company/skyeng/blog/666626 (книги)

Документация:
https://www.php.net/manual/ru/
https://laravel.su/docs/8.x/installation

(по JS ахуенные тренажеры, книгу можно скачать на трекере https://learn.javascript.ru/intro#itogo?map )

Возможно в интернете есть еще тренажеры, нужно просто искать
Аноним 17/07/22 Вск 20:08:36 2408142 851
Аноним 19/07/22 Втр 00:12:25 2409410 852
>>2406347

Как ты можешь сравнивать JS с PHP, если в JS все асинхронное и тебе придется писать await через строчку, а в PHP ты просто пишешь бизнес-логику и не мучаешься?

Если уж ты хочешь сравнивать, давай сравнивать PHP и Python, например.

>>2406387

> И нода при таком сценарии отработает быстрее, чем пыха.

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

> С каких пор с БД работает язык, а не ORM?

А в JS вообще есть что-то наподобие Доктрины (Data Mapper)? А то я вижу, как разработчики React и Redux передают туда-сюда огромные нетипизированные массивы и мне вспоминается Друпал лет так 10 назад, когда там тоже все было на массивах.

Аноним 19/07/22 Втр 01:22:00 2409434 853
Как на линуксе удобней всего локально запускать пхп и sql ? Например на винде через опен сервер в два клика можно развернуть, есть в линухе аналог?
Аноним 19/07/22 Втр 05:46:17 2409482 854
Аноним 19/07/22 Втр 07:24:02 2409493 855
>>2406387
>С каких пор с БД работает язык, а не ORM?
Гуглим что такое ORM и на чём оно пишется. это абстракция, написанная, внезапно, с помощью яп

>И нода при таком сценарии отработает быстрее, чем пыха.
Мнение неграмотного вкатунца не очень важно.
Аноним 19/07/22 Втр 17:41:58 2410026 856
Аноним 19/07/22 Втр 20:16:28 2410189 857
Сап двач, мне надо отправить 45000 записей в базу данных(просто одно слово, всегда разное ), как это сделать максимально быстро? Я делал стандартно INSERTом и получается пиздец как медленно, какие настройки в бд (для phpmyadmin) поставить чтобы ускорить выполнение?
Аноним 20/07/22 Срд 00:18:09 2410377 858
>>2410189

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

Также, есть статья в мануале:

https://dev.mysql.com/doc/refman/8.0/en/optimizing-innodb-bulk-data-loading.html
https://dev.mysql.com/doc/refman/8.0/en/insert-optimization.html
Аноним 20/07/22 Срд 01:59:35 2410424 859
>>2410377
у меня вообще все операции с бд проходят как будто медленнее чем должны,намного медленнее (мб дело в опенсервере)
Аноним 20/07/22 Срд 15:19:37 2410803 860
изображение.png 71Кб, 778x474
778x474
Аноны, что это за хуйня, на штор ругается? Фетч пробовал прожимать.
Аноним 20/07/22 Срд 22:17:55 2411173 861
>>2407024
>Есть ли адекватные PHP программисты по типу жс ниндзи только по PHP?
вообще никогда не видел полноценный блог по пхп/беку
но запомнились эти три:
1. Дмитрий Елисеев - наверное годная вода по ооп и архитектуре(не для начинающих), вроде у него основной контент платный
2. Дмитрий Афанасьев - разбор ларавел
3. Виктор Зинченко - для новичка нормальный курс пхп старт
Аноним 20/07/22 Срд 22:44:40 2411218 862
Где есть инфа как работает mysql ? Не в плане создания баз и прочего, а именно его принцип работы на компьютере, как запускается, как делает запросы и хранит свои базы и прочее, в гугле только что такое СУБД и как джойны селекты делать, даже в книгах не нашел
Аноним 20/07/22 Срд 23:07:13 2411242 863
photo2016-05-23[...].jpg 67Кб, 503x600
503x600
Получил сегодня оффер на 360К гросс, стек: PHP/MySQL.

Пишу, чтобы сказать: на РНР есть жизнь (хотя меня щас обосрут и скажут, что это копейки, на что отвечу, что я особо и не старался).

Так что, сомневающиеся, не сдавайтесь, есть свет в конце 10 000 часов тоннеля.
Аноним 21/07/22 Чтв 00:22:43 2411324 864
image.png 1672Кб, 908x1280
908x1280
>>2411242
немного добавлю, что это включало linux, devops, jira, git, rabbitmq, bootstrap, js, jquery, angular, + fluent/upper-intermediate tech english + some soft & management skills
Аноним 21/07/22 Чтв 00:33:22 2411338 865
14348797347.jpg 18Кб, 448x256
448x256
Аноним 21/07/22 Чтв 00:33:49 2411339 866
Аноним 21/07/22 Чтв 15:00:06 2411756 867
>>2411218

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

> как запускается

Самый простой способ - просто открыть консоль и вручную запустить программу в консоли (это называется foreground mode). Но обычно вручную ее не запускают, а настраивают автоматический запуск при загрузке ОС. В Линукс это называется "демон" (daemon) и реализуется, например, через systemd, в Windows это называется "служба" (service). То есть при установке на Windows MySQL добавляет службу, и таким образом, запускается когда загружается ОС.

Подробнее гугли про службы Windows или про демоны в Linux.

> хранит свои базы

Базы данных хранятся в файлах, в Linux они расположены в /var/lib/mysql, в Windows по моему в C:\ProgramData\MySQL\. Есть два варианта - либо каждая таблица хранится в отдельном файле, либо все таблицы хранятся в одном огромном файле.

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

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

Общая архитектура InnoDB: https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html

Подробно про формат хранения данных на диске: https://dev.mysql.com/doc/refman/8.0/en/innodb-on-disk-structures.html

> как делает запросы

Запрос парсится, строится план запроса (какие таблицы или индексы читать, что искать) и выполняется.

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

Парсить SQL-запросы относительно сложно, потому тебе прощу будет передавать запросы в виде массивов вроде:

[
'type' => 'select',
'from' => 'some_table',
'where' => ['x', '=', 10]
]

Если есть какие-то еще вопросы, задавай.
Аноним 21/07/22 Чтв 16:50:14 2411934 868
>>2411756
Я не он, но чем именно являются индексы "физически", что они позволяют ускорять поиск?
Аноним 21/07/22 Чтв 17:17:40 2411975 869
>>2411934
Могут быть B-деревом, хеш-таблицами или другими хитровыебанными видами деревьев, на хабре есть серия статей про индексы PostgreSQL правда, но не суть, у mysql индексы попроще ощутимо
Аноним 21/07/22 Чтв 18:58:52 2412065 870
image.png 38Кб, 1101x831
1101x831
А как правильно сохранять значения в полях динамически созданной формы?
Если бы форма была статическая, я бы просто на oninput у каждого поля повесил функцию, которая запишет данные в LocalStorage.

Можно повесить один обработчик на форму, чтобы отслеживал значения каждого поля и сохранял их в LocalStorage, а потом, при обновлении страницы, генерировать форму на основе данных из хранилища и заполнять соответствующими значениями?
Аноним 21/07/22 Чтв 20:45:10 2412149 871
>>2412065
можно, мы тебе разрешаем всем двачом
Аноним 21/07/22 Чтв 22:02:32 2412309 872
1658430127394.mp4 2384Кб, 406x720, 00:00:28
406x720
>>2412149
Это будет валидным, а главное рабочим решением?
Аноним 22/07/22 Птн 00:03:16 2412442 873
>>2412309
если сделаешь рабочим -- будет валидным
Аноним 22/07/22 Птн 00:03:42 2412444 874
Аноним 22/07/22 Птн 00:28:05 2412471 875
>>2411934

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

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

aaaa@example.com, 243
aab@example.com, 154
...
zxy@example.com, 90654

Чтобы найти email в таком списке мы можем использовать метод деления пополам, то есть, взять середину списка и сравнить с нашим email. Если наш email меньше, то взять середину первой половины списка и сравнить, если больше то взять середину второй половины. И так далее.

То есть, на каждом шаге мы уменьшаем список возможных вариантов в 2 раза. За 20 шагов (log2 от миллиона) мы можем найти любой email или понять, что такого в списке нет.

Более того, так как индекс содержит только email, он меньше, чем таблица и может быть даже поместится в память целиком, что еще сильнее ускорит поиск по нему, так как диск, даже SSD, намного медленнее, чем память.

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

Поэтому для индексов обычно используют деревья (гугли структуру данных "двоичное дерево" и "красно-черные деревья"). Мы организовываем email в дерево, и для миллиона записей сбалансированное дерево будет иметь высоту в 20 узлов. То есть, от корня до любого листа можно дойти за 20 шагов.

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

Хеш-таблицы тоже можно использовать для индекса, но они позволяют искать только по равенству (WHERE x = 10), а деревья позволяют искать так же по условиям больше/меньше, WHERE x > 10, находить mIN(x) и MAX(x) и быстро брать N первых/N последних записей.
Аноним 22/07/22 Птн 00:39:09 2412477 876
>>2412065

Да, лучше с помощью addEventListener повесить обработчик. И желательно ограничить частоту его срабатывания, например, не чаще чем раз в 10-15 секунд, а то у тебя на каждое нажатие клавиши будет выполняться код и писать данные на диск. Это может замедлить работу браузера.

Если пользователь успешно сохранил тест на сервер, то мы удаляем бекап. Или если он в форме создания нажал на "Отмена".

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

Если пользователь не сохранил тест (это может быть только если у него упала вкладка или браузер), и снова заходит на создание теста, и есть бекап, то можно вывести вопрос: вы не сохранили тест, восстановить данные или нет? Если нет - то бекап удаляется.

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

Это можно решить таким образом: при загрузке страницы мы генерируем случайный id и сохраняем бекап с этим id. При восстановлении мы просто берем первый сохраненный id и восстанавливаем из него. После того, как пользователь успешно его сохранит, восстанавливаем второй бекап итд.
Аноним 22/07/22 Птн 10:27:11 2412643 877
>>2411756
А индексы делаются автоматически, или их нужно вручную создавать?

А обращаться к ним через специальную комманду нужно?

мимо-другой-анон
Аноним 22/07/22 Птн 13:07:51 2412798 878
>>2412643

Индексы создаются вручную. Ты можешь при создании таблицы в CREATE TABLE указать их (самый частый пример - когда ты указываешь PRIMARY KEY, KEY это и есть индекс) либо добавить их позже с помощью CREATE INDEX:

https://dev.mysql.com/doc/refman/8.0/en/create-index.html

Индексы не надо указывать в запросе, так как считается, что планировщик MySQL лучше понимает, когда их надо использовать, а когда нет. Но можно указать, чтобы они использовались /не использовались с помощью USE INDEX или IGNORE INDEX: https://dev.mysql.com/doc/refman/8.0/en/index-hints.html

Посмотреть, какие индексы используются в запросе, можно приписав перед ним EXPLAIN или EXPLAIN ANALYZE (это дает информацию в другом формате), например,

EXPLAIN SELECT a FROM b WHERE c = 10;
EXPLAIN ANALYZE SELECT a FROM b WHERE c = 10;

Мануал: https://dev.mysql.com/doc/refman/8.0/en/explain.html
Аноним 22/07/22 Птн 13:16:52 2412808 879
>>2412643

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

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

Также, бывают составные и функциональные индексы. Составной индекс делается на 2 или более колонок и позволяет быстро искать по сочетанию этих колонок. То есть, индекс на колонки (a, b) позволяет быстро искать по условиям:

WHERE a = 1 AND b = 2
WHERE a = 1
WHERE a =1 AND b > 2
WHERE a > 1

Но он не позволяет ускорить поиск по WHERE b = 1 (подумай, почему, если хочешь разобраться).

Типичный пример: у нас есть таблица лайков, а ней 100М записей и мы хотим быстро узнать: ставил ли пользователь 123 лайк пользователю 456? Запрос будет вида

WHERE user_id = 123 AND liked_user_id = 456

и тут составной индекс по (user_id, liked_user_id) позволит сделать поиск очень быстро. Также, такой индекс позволит быстро узнать, кому пользователь ставил лайки. Но не позволит узнать, кто ставил пользователю лайки.

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

WHERE a + b = 5
или WHERE LOWER(username) = 'ivan'

Обычный индекс по колонкам a и b тут не поможет (подумай, почему). А функциональный индекс по выражению a+ b или по LOWER(username) поможет.

Мануал: https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-functional-key-parts


Аноним 22/07/22 Птн 17:11:20 2413061 880
Как сгенерить рандомный пароль/соль? random_bytes нечитаемую хрень вываливает, и у меня функция crypt тоже нечитаемые символы генерит.
Аноним 22/07/22 Птн 17:59:25 2413169 881
>>2412477
> не чаще чем раз в 10-15 секунд
Дядь, надо не по интервалу сохранять, а когда юзер заблюрил форму.
>Если да, то удаляем бекап.
Нет гарантий, что ты успеешь его удалить до того, как браузер убьет вкладку.
>>2412065
Лучший вариант - сохранять на сервере раз в N секунд и отдать юзеру. Используя уникальный ключ при этом, да.
Аноним 22/07/22 Птн 18:00:20 2413170 882
Аноним 22/07/22 Птн 19:31:14 2413326 883
В JS я использую eslint и расширение для vscode, которое при сохранении файла исправляет все ошибки (добавляет точки с запятой в конце, двойные кавычки заменяет на одинарные, исправляет отступы, удаляет лишние переносы строк, и т.д.). Как добиться подобного в PHP?
Аноним 22/07/22 Птн 20:17:42 2413394 884
Аноним 22/07/22 Птн 21:12:28 2413476 885
А шо там по C10k у php? Как решается проблема?
Аноним 22/07/22 Птн 21:33:24 2413522 886
Сап. У меня есть БД с таблицей пользователей, у которых различные столбцы (имя, фамилия, возраст и т.д.), после определенной выборки через SELECT... WHERE ... осталось, допустим, 4 пользователя. Каким образом я могу создать 4 уникальных JSON(внутри которых key - столбец, value - значение столбца) и передать в XHR, чтобы вывести этих 4-х пользователей с данными?
Аноним 23/07/22 Суб 00:13:42 2413628 887
>>2413394
Криптографический генератор присутствует, большего не нужно.
>>2413326
Т ыбы хоть 30 секунд на гугол потратил. Аналог prettier - Intelliphense, аналог еслинта - noverify есть другие линтеры
Аноним 23/07/22 Суб 00:17:41 2413631 888
>>2413061

Ты правильно делаешь, что используешь криптографическую функцию, а не предсказуемый генератор вроде mt_rand.

Ты можешь использовать random_int и преобразовывать числа в символы с помощью массива:

$chars = mb_str_split("abcdefg....789");
$char = $chars[random_int(...)];

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

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

Если поделить количество попыток подбора на скорость перебора, то ты получишь сколько времени в среднем нужно на подбор пароля.
Аноним 23/07/22 Суб 00:21:36 2413636 889
>>2413169

Вкладка или браузер могут упасть независимо от того, когда пользователь что-то "заблюрил". Точно так же может отключиться свет в процессе набора.

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

И что страшного? Лучше лишний раз предложить восстановить документ, чем лишний раз потерять его.

Сохранять на сервере хорошо, но требует постоянное и надежное соединение с Интернетом. И безлимитный трафик. Если эти условия выполняются, то да, можно сохранять данные в тест в статусе "черновик", например.
Аноним 23/07/22 Суб 00:24:10 2413642 890
>>2413326

Есть php-cs-fixer, он не подходит?

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

>>2413476

Так же, как и в других языках. На практике, правда это не очень нужно, так как есть другие языки вроде Го (а для бизнес-логики лучше PHP).

>>2413522

С помощью json_encode?

Аноним 23/07/22 Суб 01:00:25 2413668 891
>>2413631
Спасибо за уделённое внимание, но мне нужна была простая автогенерация. Функцию-то я влепил, как в гуглах... в код, но делать это хочется для в можно меньшем количестве случаев: и чтобы код не раздувался, и чтобы силы на это лишние не тратились.
Аноним 23/07/22 Суб 07:10:34 2413740 892
08n-02954jg948.jpeg 7Кб, 225x225
225x225
На ровном месте!

password: 1234512345
salt: QWERTYqwerty
crypt: $1$QWERTYqw$Z8oTXgHYxGQxpq6hSwz8h.
execute: useradd --no-create-home --password "$1$QWERTYqw$Z8oTXgHYxGQxpq6hSwz8h." cow
https://pastebin.com/x0Mb3T06

Не логинется. А в shadow следующее -
cow:.:19196:0:99999:7:::
Иногда что-то появляется. Но эффект тот же.
Аноним 23/07/22 Суб 09:20:15 2413791 893
Аноним 23/07/22 Суб 11:19:50 2413852 894
>>2413740

Попробуй запустить команду вручную и посмотреть, не выводит ли она какие-то ошибки или сообщения.
Аноним 23/07/22 Суб 11:22:12 2413857 895
>>2413740

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

Также, посмотри, нет ли в параметрах команды спецсимволов, которые надо экранировать. Например, знак доллара в bash это спецсимвол.
Аноним 23/07/22 Суб 11:23:14 2413859 896
>>2413740

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

echo useradd ...

И посмотреть, что выведется.
Аноним 23/07/22 Суб 11:53:50 2413889 897
HD-wallpaper-ha[...].jpg 118Кб, 800x741
800x741
ВОПРОС НА МИЛЛИОН

На российском рынке вакансий, больше котируется Symfony или Laravel? По вашим наблюдениям?

hh-вакансий
symfony-290
laravel-389

Крупные фирмы на которые я натыкаюсь, почему-то symfony используют. Он мне НЕ нравится, все начиная от логотипа/названия коверканного, и вообще кажется устаревшим. Но если деняки будут платить, и других аналогов в РФ нет - то буду его выдрачивать. Или стоит держать курс на Laravel?
Аноним 23/07/22 Суб 12:18:07 2413921 898
>>2413889
> Он мне НЕ нравится, все начиная от логотипа/названия коверканного, и вообще кажется устаревшим.
Оу, ты тоже оцениваешь "технологию" по логотипу?
Аноним 23/07/22 Суб 13:06:09 2413962 899
>>2413889
Что это за компании?
Аноним 23/07/22 Суб 13:09:35 2413965 900
>>2411756
Оу, спасибо анончик за такой развернутый ответ
Аноним 23/07/22 Суб 13:28:53 2413980 901
>>2413921
ну все с друг другом связано, я суеверный дизайнер-анальник.

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

>>2413962
незнаю, рандомно выбираю с понравившихся сайтов, с вакансий на hh. Просто смотрю стек студий, и часто вижу почему то блядь symfony.
lamoda, creonit.ru - последние на которые я натыкался.
Аноним 23/07/22 Суб 13:44:38 2413989 902
>>2413857
>надо экранировать
Кавычки!!
--password '%s'"
Ты прав, стирались доллары и творилась дичь...
Аноним 23/07/22 Суб 14:49:19 2414028 903
>>2413889
У меня в мухосрани yii требуют (ну и цмс в довесок), причем не 2й, что там вообще может быть на нем?
Аноним 23/07/22 Суб 15:36:27 2414057 904
>>2413889

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

Ты бы изучил лучше, например, насколько удобно писать автоматизированные тесты под оба фреймворка. Насколько удобны их ORM. И тд.
Аноним 23/07/22 Суб 15:37:44 2414058 905
>>2414028

Устаревший код. Но, справедливости ради, Yii не выглядит сложным фреймворком, наверно в нем можно за день-два разобраться.
Аноним 23/07/22 Суб 15:51:40 2414063 906
>>2414028
>что там вообще может быть на нем?
Вонючее легаси. Если за эту работу предлагают меньше 150к, то шли нахуй - пусть сами в своём говне ковыряются.
Аноним 23/07/22 Суб 16:32:17 2414079 907
>>2414058
Всегда какие-нибудь подводные вылазят.
>>2414063
Какие 150к в мухосрани, лол?
Аноним 23/07/22 Суб 18:23:11 2414183 908
>>2414079
>Какие 150к в мухосрани, лол?
Такие, пчел. Если у них там на Йи первом всё крутится, значит проект выстрелил и деньги есть. И сам проект на месте будет сложным, нахуеверченным и, скорее всего, засратым за годы разработки. В дополнение к этому обвешанным всяким разным софтом.
Вообще похуй уже мухсрань там или нет. На легаси за маленькие деньги не ходят. Вообще в разработку за маленькими деньгами не ходят иначе просто в ДС яндекс-курой устроиться и не ебать мозг.
Аноним 23/07/22 Суб 21:57:02 2414324 909
>>2414183
Да, охуенно, просто всем переехать в ДС и в хуй не дуть.
Аноним 23/07/22 Суб 22:31:00 2414341 910
>>2414324
Вопрос не в переезде, а в том, что ты хуй человека найдёшь задёшево который в этом будет сидеть и копаться. Джуна ты не посадишь на легаси - он обосрётся, мидл тоже не дурак задёшево работать.
Ну и да - причём тут мухосрань вообще? ИТ-продукты обычно работают в глобальном вебе и деньги отовсюду идут, и их ДС, и из ДС2, и из остальных мухосраней. Просто не будь долбоёбом и не вписывайся за копейки под предлогом классического кабанского пиздежа "мы бедные несчастные из мухосрани".
Аноним 23/07/22 Суб 22:32:20 2414342 911
>>2414341
>под предлогом классического кабанского пиздежа "мы бедные несчастные из мухосрани"
Мне один тоже что-то подобное любил втирать, а в ВК у него что не фотачка, то пальмы вокруг. На дураков рассчитано же.
Аноним 24/07/22 Вск 11:17:00 2414562 912
Как раз сегодня видел ваку на Yii с легаси. Сразу пишут, что большая кодовая база, не берут никого ниже миддла, обещают 250к.
Про мухосрани ни слова.
Аноним 24/07/22 Вск 13:27:48 2414687 913
>>2414562
> не берут никого ниже миддла
Ты не журналист случайно? Формулировки пиздец, конечно.
Аноним 24/07/22 Вск 13:48:06 2414705 914
Господа аноны, обращаюсь к вам с вопросом вкатывания.

Учил iOS разработку на свифте и все было неплохо, но тут произошёл хохлокризис и меня переполняют сомнения по поводу мобилок (малое количество джун/стажер вакансий и страх, что Тим Кук насрёт хуйни ), думаю сменить вектор обучение на бэк с пыхой.

Правильно ли я поступаю или лучше не рыпаться и дальше сидеть на мобилках?
Аноним 24/07/22 Вск 14:40:50 2414753 915
>>2414562
Не, там было как раз на джуна, и к юии был 1-с битрикс и битрикс фреймворк(в чем вообще разница?) в довесок.
Аноним 24/07/22 Вск 14:53:03 2414757 916
16544280734740.jpg 83Кб, 640x640
640x640
Плиз, хелп. Не рендерится дочерний шаблон в связке yii2+twig. Поставил последнюю версию Yii2 и сверху накатил плагин yiisoft/yii2-twig версии 2.4

Задал вопрос на тостере, но никто тоже не знает. Тут читать удобнее -> https://qna.habr.com/q/1180564

Что я делаю: создаю материнский шаблон layouts/main.twig
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<h1>Главная страница</h1>
{% block content %}{% endblock %}
</body>
</html>


Создаю дочерний шаблон home/index.twig и наследуюсь от главного
{% extends "@app/views/layouts/main.twig" %}

{% block content %}
Дочерняя страница
{% endblock %}


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

Что я упускаю? Вроде бы с точки зрения синтаксиса все верно. Элементарные примеры же.
Аноним 24/07/22 Вск 15:25:40 2414791 917
Стал мидлом на бумаге и нихуя до сих пор не понимаю, как работает PHP-FPM, как на уровне процесса работает PHP программа, как работает параллелизм и как веб-сервер обрабатывает сразу несколько запросов, если есть только 1 PHP процесс. Где можно почитать про все эти общие вещи работы самого PHP?
Аноним 24/07/22 Вск 15:53:54 2414850 918
>>2414791
ПЫХОВСКУЮ СПЕКУ ЧИТАЙ, ПИДОРАС УДАЧЛИВЫЙ
Аноним 24/07/22 Вск 20:12:04 2415289 919
Подскажите, как отправлять письма? есть сайт, где пользователям приходят сообщения в личку, оповещение о каких-то действиях и т.п

Хочется это так же посылать на почту, но как это делают обычные сайты?

Я погуглил и нашел что многие пишут юзать mailgun, а там ценник 35 баксов за 50к писем. И пишут что через smtp какой нибудь яндекс почты все письма будут в спам улетать...

Я сомневаюсь что всякие там форумы платят по 100 баксов в месяц что бы уведомления посылать на почту...
Аноним 24/07/22 Вск 22:59:02 2415454 920
>>2415289
Чем тебя стандартный почтовый сервер не устраивает?
Аноним 25/07/22 Пнд 00:36:30 2415495 921
>>2414687
Не. Там так и написано мидл\синьор. Никаких джунов и тд, что логично.

>>2414753
>к юии был 1-с битрикс и битрикс фреймворк
Ой нахуй-нахуй. Это совсем какая-то лютая параша. Просто проходи мимо таких вакух - это помои.
Аноним 25/07/22 Пнд 17:24:22 2416096 922
Часто вижу вью рядом с ларавелем. Это норма или работодатели хотят понавесить лишнего на разрабов? Просто не совсем понятно как оно - вроде и бек делай, но в то же время и дизайнерские изъёбства реализуй на фронте. Это как вообще? Говно ведь получится когда всё один человек делает. Или нет?
Аноним 25/07/22 Пнд 19:49:57 2416272 923
>>2416096
>Это норма или работодатели хотят понавесить лишнего на разрабов?
Просто ларка решила запрыгнуть в уже едущий поезд SPA.
>Говно ведь получится когда всё один человек делает.
Да
Аноним 25/07/22 Пнд 19:56:23 2416279 924
изображение.png 1556Кб, 960x1280
960x1280
Посоветуйте среду разработки, что-то типа open server, только под линукс.
Аноним 25/07/22 Пнд 21:33:00 2416349 925
Сап двач,столкнулся с проблемой. Пишу сайт который сокращает ссылки и пытаясь выгрузить его на хостинг нереально соснул хуйца,выкидывает исключение в классе,хуйня в том что на локалке такое исключение не выкидывает(выкидывало,но я пофиксил немного переделав базу данных) и все пашет норм,в чем может быть проблема? я уже день ебусь с этой хуйней
Аноним 25/07/22 Пнд 22:56:51 2416487 926
>>2416279
Под линукс нативно всё ставится - гугли LAMP. А ещё там докер нативный есть, если через контейнеры хочешь.
Вообще под линукс никаких проблем с разработкой по нашему стеку нету.
Инструкций в интернете - вагон.

>>2416272
>Да
И всем норм типа? Они говноеды?
Аноним 25/07/22 Пнд 23:20:08 2416509 927
>>2416487
>И всем норм типа?
Да
>Они говноеды?
Они выполняют задачи бизнеса минимальными вложениями
Аноним 26/07/22 Втр 00:11:11 2416543 928
>>2414757

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

Для начала проверь вариант с кешем, что возможно закешировалась старая версия шаблона. Далее, попробуй дописать что-нибудь в оба шаблона и посмотри, выведется ли текст или нет.
Аноним 26/07/22 Втр 00:19:56 2416547 929
>>2414791

Если ты хочешь хорошо разобраться в этой теме, то придется начать с истории. Прочитай про устаревший протокол CGI (он устаревший, но зато очень простой), разберись как он работает. Затем почитай про протокол FastCGI.

Тут вскользь упомянуто, что делает fpm: https://www.php.net/manual/en/install.fpm.php

PHP-FPM это менеджер процессов и сервер. То есть, он (менеджер) запускается, запускает какое-то количество рабочих процессов и открывает порт для приема запросов по протоколу FastCGI. Когда приходит запрос, он передает его рабочему. Если рабочий падает, он запускает нового. Я правда не уверен насчет тонкостей: например, передает ли менеджер новое соединение рабочему или же куча рабочих просто совместно открывают один порт и ядро Linux передает соединение случайному рабочему?

> как на уровне процесса работает PHP программа

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

> как работает параллелизм

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

> как веб-сервер обрабатывает сразу несколько запросов, если есть только 1 PHP процесс.

Один FPM процесс и много рабочих процессов.
Аноним 26/07/22 Втр 00:28:57 2416549 930
>>2414791

Тут среди описания настроек тоже можно подчерпнуть кое-какую информацию: https://www.php.net/manual/en/install.fpm.configuration.php

>>2415289

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

Как минимум, нужно: не внесенный в спам-листы IP, корректный обратный DNS, настроить SPF/DKIM, обрабатывать случаи недоставки письма (то есть не пытаться 10 раз отправить письмо на один и тот же несуществующий адрес), отправлять письма только на подтвержденные email, сделать ссылку и заголовки для отписки от рассылки, реагировать на случаи, когда кто-то отправляет твое письмо в спам и отписывать его, итд.

Вот, например, на mail ru есть подробная информация:

https://help.mail.ru/developers/mailing_rules
https://help.mail.ru/developers/notes

Есть возможность отслеживать доставляемость писем: https://help.mail.ru/developers/postmaster

Думаю, аналогичная информация есть и у Гугла. Читай, изучай.



Аноним 27/07/22 Срд 12:03:26 2417617 931
Я хочу сохранять данные формы в localStorage, чтобы пользователь мог вернуться к ее заполнению позже. При этом удалять эти данные при занесении их в бд на сервере.

form.onsubmit явно не подойдёт, т.к. сервер может выдать ошибку валидации и вернуть пользователя на страницу.
Как можно отправить на клиент событие сохранения в базу данных?

Я знаю про sessionStorage, но мне кажется он не подойдёт для моих целей?
Аноним 27/07/22 Срд 12:12:35 2417623 932
Аноним 27/07/22 Срд 12:21:52 2417628 933
Аноны, поясните мне за try / catch. Вот у меня есть MVC приложение. Контроллер дёргает репозиторий, репозиторий дёргает ресурс, ресурс дёргает непосредственно базу. Куда следует вешать try/catch? На самый нижний уровень, т.е. на момент исполнения запроса? Или он должен быть на всех уровнях абстракции? Но тогда ведь будет пиздец как много дублирующегося кода и много лишних проверок.
Аноним 27/07/22 Срд 22:02:02 2418053 934
>>2417617
>Как можно отправить на клиент событие сохранения в базу данных?
Ручками отправляй форму через fetch и проверяй ответ.
Пример:

async function sendForm(){
const form = document.querySelector('form');
const fd = new FormData(form);
const resp = await fetch(''/path/to/endpoint", {method: "post", body: fd});
if (!resp.ok) throw new Error(resp.status);
}

потом в момент, когда тебе нужно отправить форму:
try {await sendForm(); } catch (e) {
// пришел ответ с кодом не 2xx или нет соединения...
}



Аноним 27/07/22 Срд 22:27:14 2418073 935
Аноним 27/07/22 Срд 23:12:03 2418098 936
Аноним 27/07/22 Срд 23:59:21 2418122 937
>>2417628

Для чего тебе try/catch? Если ты ловишь какое-то конкретное исключение, то ты ставишь try вокруг функции, которая его выбрасывает.

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

- https://github.com/codedokode/pasta/blob/master/php/exceptions.md#%D0%BB%D0%BE%D0%B2%D0%B8%D0%BC-%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F

- https://github.com/codedokode/pasta/blob/master/php/exceptions.md#%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%B2-%D0%B2%D0%B5%D0%B1-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D1%85
Аноним 28/07/22 Чтв 14:02:08 2418424 938
>>2418122
Спасибо. Ну я в целом хочу понять хорошие практики использования этого блока, общую тактику их использования. А то везде туториалы только по синтаксису, но нигде не объясняют концепцию.
Аноним 28/07/22 Чтв 14:28:17 2418446 939
>>2347129 (OP)
Ебать у тебя крутой учебник, ОП. Почему решил заняться такой благотворительностью? Это типа проект на портфолио или ты как хобби этим занимаешься? Не думал создать цыганские платные курсы? Я бы даже задонатил за труд, не будь я нищим стажёром-вкатуном.
Аноним 28/07/22 Чтв 17:26:12 2418555 940
как же я ллюблю ПХП1
Аноним 28/07/22 Чтв 22:03:12 2418766 941
>>2418555
Чем отличается первая версия пыхи от последней?
Аноним 30/07/22 Суб 01:26:22 2419569 942
Как после установки пыхи настроить extension-ы ? Помню там че-то раскомментировать надо для дальнейшей работы но мануал как обычно не завезли
Аноним 30/07/22 Суб 09:19:57 2419643 943
>>2418766
он был пьяненький скорее всего, это "!"

мимополоскун
132123 31/07/22 Вск 03:07:04 2420541 944
сява-клоун.gif 2582Кб, 498x365
498x365
Доброй ночи. Сам хочу стать вкатуном и в моем мухосранске есть только 1 +- достойная контора.
https://tula.hh.ru/vacancy/67619851?from=employer&hhtmFrom=employer
Можете пожалуйста подсказать, что нужно с нуля учить\готовить для вкатунства в эту хуйню, как вообще называется эта хуйня(Я так понял это фуллстек). На руках имеется неоконченная шарага и минимальные знания в c++ и python. Если не сложно накиньте курсы или литературу которую стоит начать изучать для людей с пониженным IQ. Заранее всем спасибо.
Аноним 31/07/22 Вск 05:39:12 2420563 945
Аноним 31/07/22 Вск 11:26:28 2420645 946
>>2420541
Битрикс учи. Будь патриотом ебать. Люби всё русское
Аноним 31/07/22 Вск 13:15:09 2420687 947
>>2419569

Ты не написал, какая у тебя ОС.

Если это Windows, то многие расширения идут в комплекте с PHP и единственное, что надо сделать для их включения - это раскомментировать или дописать в php.ini строчку вида extension=something.dll

Если расширение не идет в комплекте, то надо скачать подходящую dll c http://pecl.php.net/ и точно так же дописать строчку.

Расположение файла php.ini можно узнать, если выполнить php-скрипт с командой

<?php

phpinfo();

Если у тебя Линукс, то расширения ставятся через стандартный менеджер пакетов вроде apt, а если расширения в нем нет, то командой pecl install (если я не путаю).
Аноним 31/07/22 Вск 13:18:26 2420692 948
>>2418446

Однажды кто-то сделал тред по изучению языка Перл, а я решил сделать тред по изучению PHP. Какой-то умный анон написал, что это лучше оформить в виде сайта, чтобы материал не потерялся и примерно за 1 или 2 вечера сайт был нарисован, сверстан и запрограммирован.

Изначально учебника не было, я просто рисовал картинки с пояснениями в фотошопе и прикладывал к постам.
Аноним 31/07/22 Вск 13:21:29 2420695 949
>>2420541

Написано же в вакансии:

> Что мы ожидаем от вас:
> — хороший уровень знаний PHP/MySQL
> — отличный уровень знаний HTML/CSS/JS/jQuery
> — опыт разработки сайтов на 1С-Битрикс

Это и учи.
Аноним 31/07/22 Вск 13:22:54 2420701 950
>>2420541

Кроме самого PHP, изучи ООП и посмотри какой-нибудь фреймворк вроде Laravel.
Аноним 31/07/22 Вск 13:24:20 2420704 951
>>2420695
Я просто не понимаю в какой последовательности, хотелось бы какой-нибудь гайд, или ссылку на курсы, которые я скачаю слитые, чтобы это начать задрачивать. Есть огромное стремление вкатиться за год, т.к в моей шараге этот год последний, я ебал в армию идти, да и сама вакансия интересует. Проходил один раз практику на местном оружейном заводе. Там ахуенный мужик был, дал нам офис и компы и пояснял за веб. За 2 недели с нуля сделали +- простенький многостраничник на HTML+Css, потом начал заебывать с реактом но мы не успели и практика кончилась
Аноним 31/07/22 Вск 13:27:00 2420711 952
>>2420704
А ну и bootstrap был еще, ахуенный конструктор, мне зашло
Аноним 31/07/22 Вск 13:56:13 2420746 953
>>2420704
>я ебал в армию идти
а зачем учишь тогда, все равно же в армию идти?
Аноним 31/07/22 Вск 14:00:35 2420749 954
>>2420746
откосить по IT, да и есть шанс что просто сам не пойду, я очень больной
Аноним 31/07/22 Вск 19:25:34 2421038 955
>>2416549
>>2416547
Спасибо большое! Появилось понимание наконец-то. Вот только про одновременную работу несколько процессов так и не понял. Допустим, у меня есть один PHP-FPM в докере, без демонов, он же может обрабатывать только 1 запрос одновременно по идее. Или нет?
Аноним 31/07/22 Вск 20:29:34 2421135 956
Сап, кто-нибудь пишет на laravel + vue? Мне нужно сделать верификацию через почту и затем сделать возможность заблокировать доступ к некоторым роутам для неверифицированных пользователей. Но laravel:auth я не могу использовать, хотя в нем все это есть. Как быть? Хуярить костыли или уже есть где-то готовое решение? Помоги, анончик
Аноним 31/07/22 Вск 20:58:37 2421181 957
Аноним 31/07/22 Вск 21:50:08 2421235 958
>>2416349
если бы ты сформулировал нормально, тебе бы ответили
Аноним 31/07/22 Вск 22:07:47 2421249 959
Аноним 31/07/22 Вск 23:03:30 2421312 960
>>2421181
Причем здесь гарды? Мне нужен полностью пак с регистрацией и верификацией, у меня еще jwt в проекте, что усложняет задачу. Проверку я догадался сделать
Аноним 01/08/22 Пнд 00:09:52 2421392 961
>>2421038

PHP-FPM это только менеджер. Для обработки запросов он запускает рабочие процессы, и ты в конфиге задаешь их количество.
Аноним 01/08/22 Пнд 21:11:55 2422059 962
Используют ли JWT-токен в монолитных проектах? Где можно почитать про его использование в php?
Аноним 01/08/22 Пнд 21:43:46 2422104 963
При создании контроллера в laravel перестал стартовать сервер. Вот что выдает. Что выдает гуго пробовал- не помогает. Плиз может кто объяснить что сделть
>>>UnexpectedValueException

Invalid route action: [MainController].

at D:\OpenServer\domains\laravel\vendor\laravel\framework\src\Illuminate\Routing\RouteAction.php:92
88 */
89 protected static function makeInvokable($action)
90 {
91 if (! method_exists($action, '__invoke')) {
➜ 92 throw new UnexpectedValueException("Invalid route action: [{$action}].");
93 }
94
95 return $action.'@__invoke';
96 }

1 D:\OpenServer\domains\laravel\vendor\laravel\framework\src\Illuminate\Routing\RouteAction.php:47
Illuminate\Routing\RouteAction::makeInvokable()

2 D:\OpenServer\domains\laravel\vendor\laravel\framework\src\Illuminate\Routing\Route.php:190
Illuminate\Routing\RouteAction::parse()
Аноним 01/08/22 Пнд 21:49:37 2422115 964
>>2422104
методом подбора решил
Route::get('/', action: 'MainController@index');

с остальными вариантами не работало
Аноним 01/08/22 Пнд 22:00:36 2422128 965
>>2422115
> Теперь страница выдает:
Illuminate \ Contracts \ Container \ BindingResolutionException
PHP 8.0.14
9.22.1
Target class [MainController] does not exist.

Ставился laravel, node.js и sass.
Аноним 01/08/22 Пнд 22:08:21 2422146 966
>>2422128
Напиши полный путь до контроллера или добавь его в import.
Что-то подобное попробуй и нажми на подсказку, путь сам вставится:
Route::get('/', action: App/Http/Controllers/MainController::class, index)
Аноним 02/08/22 Втр 01:38:33 2422310 967
image.png 55Кб, 479x538
479x538
сап двач,стоит следующая задача: вызывается функция с аргументом в виде ссылки(какая-то страница например https://yopta.ru),функция извлекает все ссылки с этой страницы,и по этим ссылкам делает то же самое(то есть тоже извлекает уже с этих страниц другие ссылки),и так 5 раз. Мой код на пике,как можно ускорить это? (все ссылки со всех страниц отправляются в бд)
Аноним 02/08/22 Втр 13:27:03 2422589 968
Аноним 02/08/22 Втр 16:23:48 2422743 969
>>2422310
Я кстати заметил что он у меня в бесконечную рекурсию по итогу улетает
Аноним 02/08/22 Втр 17:24:48 2422809 970
>>2422743
$count надо static сделать, не? Я если честно рекурсию так и не осилил на примере той задачи о пути из шапки, не могу представить в голове процесс.
Аноним 02/08/22 Втр 22:08:25 2422998 971
>>2422589

Для отправки запросов можно просто использовать curl в параллельном режиме, потоки тут не нужны. Хотя, конечно, можно разделить получение страниц и поиск ссылок.
Аноним 02/08/22 Втр 22:15:31 2423005 972
>>2422809

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

[1, 2, [3, 4, [5, 6, [7], 8], 9]]

1) Надо посчитать сумму чисел в таком массиве. В пустом массиве сумма равна 0.
2) Надо преобразовать его в одноуровневый плоский массив

Проверить, что значение является массивом, можно функцией is_array().

Задача два. Дан список категорий вида:

[
'Хлебобулочные изделия' => ['Хлеб', 'Булка', 'Лаваш'],
'Кондитерские изделия' => [
'Торты' => ['Из бисквита', 'Вафельные'],
'Пирожные',
'Печенье'
];

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

Хлебобулочные изделия (3)
Хлебобулочные изделия / Хлеб (0)
Хлебобулочные изделия / Булка (0)
...

И так далее.

Сделаешь эти, можешь попросить еще. Или можешь попросить подсказку, если непонятно. В обоих случаях нужна рекурсия и обход дерева.
Аноним 02/08/22 Втр 22:16:40 2423007 973
>>2422809

static использовать не надо, так как он будет накапливаться, если функцию вызвать несколько раз подряд. static вообще лучше избегать.
Аноним 03/08/22 Срд 02:30:10 2423106 974
>>2422998
Они разделены, просто не показал этого
Аноним 03/08/22 Срд 19:35:07 2423841 975
image.png 13Кб, 348x186
348x186
image.png 90Кб, 1146x376
1146x376
Есть правила валидации как на пик1.
Как выводить ошибки валидации для каждого конкретного, сгенерированного с помощью JS, поля? Как передать индексы вопроса/ответа из JS в PHP?
Аноним 03/08/22 Срд 22:46:03 2424094 976
>>2423841
как -- решительно. Из вопроса непонятно, что тебе мешает.
Аноним 04/08/22 Чтв 00:39:58 2424175 977
>>2423841

Не очень понятно, как у тебя устроен процесс обработки формы. (1) Ты отправляешь форму на сервер обычным POST, там она валидируется и выводится заново? (2) Ты используешь pjax? (3) Или же ты отправляешь AJAX-запрос из JS кода, он валидируется и возвращает список ошибок?

На скриншоте у тебя код шаблона нового вопроса, который вставляется в DOM при добавлении вопроса?

Если у тебя классическая стандартная отправка формы без AJAX, то тогда сервер проверяет данные и при ошибках выводит форму заново с ошибками (эта логика описана в моем уроке https://github.com/codedokode/pasta/blob/master/forms.md ). Но в Laravel почему-то сделано немного не так: там при ошибках сервер помещает их в сессию, делает редирект на страницу формы и форма выводится с добавлением ошибок из сессии.

Для проверки массивов ты используешь описанный тут синтаксис со звездочками: https://laravel.com/docs/9.x/validation#validating-nested-array-input (если я ничего не путаю). Чтобы вывести ошибки в таком случае, нужно разобраться, как их получить из переменной $errors, которая относится к классу MessageBag. Тут вроде описан синтаксис со звездочкой: https://laravel.com/docs/9.x/validation#working-with-error-messages . Но если тебе надо получить ошибку с определенным номером, я бы попробовал просто добавить номер, в стиле $errors->get('question.0.text'). Естественно, так как ты выводишь блоки в цикле, номер можно брать из переменной: $errors->get("question.$i.text").

Ты можешь также изучить код класса MessageBag и поискать подходящие методы в нем: https://laravel.com/api/9.x/Illuminate/Support/MessageBag.html . Ты также можешь попробовать сдампить объект $errors и посмотреть, какие ключи у ошибок в нем.

Что касается шаблона нового вопроса, то в данном сценарии него не надо добавлять ошибки, так как в новом, еще не отправленном на сервер вопросе не может быть ошибок.

---

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

---

Если у тебя отправка формы через AJAX, то по-видимому, надо делать так. JS код собирает данные формы в JSON и отправляет на сервер. На сервере они валидируются (используй синтаксис со звездочками по ссылке выше) и получается объект с ошибками. Он преобразуется в JSON и возвращается в качестве ответа на запрос. JS код убирает старые ошибки из DOM и добавляет полученные из JSON.

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

Также, для шаблона нового вопроса рекомендуется использовать тег <template>. Чтобы он случайно не отобразился в старых браузерах, добавь ему display: none.

Спрашивай, если что-то непонятно.
Аноним 04/08/22 Чтв 01:45:18 2424195 978
>>2424175
Json как принять на сервере?
Аноним 04/08/22 Чтв 14:01:16 2424601 979
Аноним 04/08/22 Чтв 18:58:53 2424815 980
>>2347129 (OP)
Так как php работает по умирающей модели, возник вопрос. Выходит, что никакие постоянные соединения невозможны? Хочется иметь постоянное соединение с клиентом.
Аноним 04/08/22 Чтв 19:13:22 2424826 981
>>2424815
Наверное не правильно сформулировал вопрос. Если php всегда умирает, то постоянные соединения бессмысленны. Как сделать чтобы он не умирал? Накостылять event loop?
Аноним 04/08/22 Чтв 19:31:31 2424835 982
>>2347129 (OP)
Где вообще почитать про умирающую модель выполнения php приложения и как это использовать? На английском не получается нагуглить, не знаю как сформулировать запрос, выдает только мнения о том, умер или умрет ли php.
Аноним 04/08/22 Чтв 19:50:16 2424837 983
16584992088670.png 216Кб, 600x570
600x570
Аноны, у меня к вам очень важный вопрос. Смогу ли я вкатиться в работу пыхарем за полгода, если буду учиться часов 10 в день?(больше не получится). Финансов осталось с трудом на полгода, в моей мухосрани не берут даже на днище-работу(а если и берут, то кидают), родители поддержать никак не смогут; так что у меня полгода, не больше.

Если да, то что учить, на что держать курс?
Я собираюсь зубрить базовый PHP + ООП + MVC(по курсам Дмитрия Трепачёва + книга Котерова + книга Лукьянова), SQL/MySql, Laravel(так же по курсам Трепачёва + книга Кириченко/Дубовика), Git, PDO.

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

Возможно ещё подтяну Composer и Docker, но я сильно сомневаюсь, что успею выучить ещё и эти две технологии.

Смогу ли я с вышеперечисленными знаниями отыскать хотя бы стажировку? Не в своей перди, офк. Ради этого я могу взять небольшой кредит, и переехать в Москву/СПб/Екатеринбург и так далее.
+Задействую вакансии на удалёнке, но я очень сильно сомневаюсь, что кому-либо нужны джуниоры/стажёры удалённо.

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

Картинка для привлечения внимания.
Аноним 04/08/22 Чтв 20:16:59 2424858 984
>>2424837
За пол года до какого уровня, чтобы что знать и уметь? Нужно понимать, что нельзя просто заучить что-то и ты становишься программистом. Нужно не запомнить теорию, а понимать, и самое важно уметь что-то делать. Если нужно бысто обучиться основам, то PHP для этого подходит, но самый короткий путь это верстка с переходом во фронтенд.
Аноним 04/08/22 Чтв 20:23:56 2424867 985
Аноним 04/08/22 Чтв 20:32:38 2424877 986
>>2424837
>Смогу ли я вкатиться в работу пыхарем за полгода
не сможешь
>если буду учиться часов 10 в день
это так не работает
>в моей мухосрани не берут даже на днище-работу
это что за мухосрань такая?

Найди себе работу, чтобы были деньги на еду, а в свободное время сиди и спокойно, без спешки изучай пыху или что-нибудь другое. В тот же 1С вкатиться проще, чем в веб.
Аноним 04/08/22 Чтв 20:45:50 2424886 987
>>2424837
> Смогу ли я вкатиться в работу пыхарем за полгода, если буду учиться часов 10 в день?
Не сможешь, выгорание никто не отменял.
>в моей мухосрани не берут даже на днище-работу(а если и берут, то кидают)
курьером, таксовать можно (если права есть), в ту же пятерочку/магнит, летом точно туда набирают студентоту, ну в любом случае ищи работу чтобы хотя бы жить на минималках
Аноним 04/08/22 Чтв 20:51:44 2424891 988
>>2424837
Не знаю, анон. Учусь последние 4 месяца по 5+ часов в день. Работу еще не нашел, но чувствую, что осенью все получится.
Аноним 04/08/22 Чтв 20:53:22 2424893 989
>>2424877
>не сможешь
>>2424886
>Не сможешь

Это субъективное мнение. Один чувак вкатился в мобайл за 2 месяца. Как, спросите вы? Очень просто. Занимался по 16 часов в день.
Аноним 04/08/22 Чтв 21:18:45 2424908 990
>>2424893
> Один чувак вкатился в мобайл за 2 месяца.
Это похоже на ошибку выжившего.
>>2424891
>чувствую, что осенью все получится.
ну тогда расскажешь осенью о своих успехах
Аноним 05/08/22 Птн 06:06:41 2424942 991
>>2424908
>так ни можна
>ко-ко-ко
>врёти
Аноним 05/08/22 Птн 11:51:16 2425075 992
>>2424877
> В тот же 1С вкатиться проще, чем в веб.
Двачую, если такие жесткие ограничения по времени и деньгам, я бы туда шел, а не в пыху.
Аноним 06/08/22 Суб 19:52:52 2426454 993
>>2424837
К сожалению не сможешь.
Аноним 07/08/22 Вск 07:28:34 2426827 994
>>2424837
>Смогу ли я вкатиться в работу пыхарем за полгода, если буду учиться часов 10 в день?
Тупой вопрос. Это ты нам скажи, сможешь ли ты за N часов научиться?

>>2426454
>К сожалению не сможешь.
Тупой ответ.
Аноним 07/08/22 Вск 19:00:20 2427445 995
>>2424835

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

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

Тебе не надо читать ничего специально про PHP, тебе стоит разобраться в: сокетах Беркли (не вебсокетах), протоколе FastCGI (который использует PHP-FPM), как вообще работает веб-сервер.

Так что постоянные соединения возможны.
Аноним 07/08/22 Вск 19:02:07 2427448 996
>>2424837

Начинай тогда с верстки и JS, если не успеешь выучить PHP, то хотя бы верстальщиком попробуешь устроиться.
Аноним 07/08/22 Вск 19:35:14 2427464 997
>>2424837
Учи питон лучше, сразу дата аналитиком пойдешь
Аноним 07/08/22 Вск 20:11:27 2427509 998
>>2427464
Двачую, можно написать парсер для хх.ру и считать себя сеньор дата-саентистом и архитектором в добавок.
Аноним 07/08/22 Вск 23:54:05 2427754 999
Приветули, анонасы, кто вкатывался в международные фриланс биржи? Сложно пробиться? Можно будет на фрили переметнуться хотя бы на 50-70% деняк от текущей зпшки? Сколько по времени займет?
Аноним 08/08/22 Пнд 09:02:20 2427845 1000
>>2427445
>Умирает не сам процесс PHP, а PHP скрипт
Это же одно и то же. Запустил файл на выполнение - запустился процесс. Выполнился код из файла - процесс умер. Сам модуль php-fpm может и не умирает, он может вообще на Си написан. Только вот экземпляр виртуальной машины PHP умирает после выполнения кода. Если взять например node.js, то там не так. После выполнения кода из файла, виртуальная машина не завершается, а ждет. Поэтому можно спокойно создать вебсокет соединение и обрабатывать его.

>Но ты можешь не использовать PHP-FPM, а написать свой сервер, который откроет порт, и будет принимать запросы и их обрабатывать и при этом ничего не будет очищаться.
Так для нужен бесконечный цикл. Иначе код выполнится и php умрет. Чтобы не быть голословным, дай ссылку где можно прочитать про все что ты написал.
Аноним 08/08/22 Пнд 14:47:23 2428105 1001
>>2427845

> Это же одно и то же. Запустил файл на выполнение - запустился процесс.

Нет. Неправильно. Процесс php не умирает после выполнения скрипта, а переходит к выполнению следующего скрипта. Один процесс PHP может выполнить множество скриптов. Почитай, что такое "процесс" в операционной системе для понимания.

То, что ты описываешь, было в протоколе CGI, но он использовался в 90-е годы и твоя информация, мягко говоря, устарела. FastCGI (который используется в PHP-FPM) как раз и придуман, чтобы процессы не требовалось постоянно перезапускать.

> Если взять например node.js, то там не так. После выполнения кода из файла, виртуальная машина не завершается, а ждет.

Неверно. Если я запускаю скрипт как node index.js, и в нем нет того самого бесконечного цикла, то процесс node завершается после выполнения скрипта. То есть нода работает точно так же, как и PHP в CLI-режиме. PHP может выполнить скрипт и завершиться, или он может открывать порты и асинхронно обрабатывать поступающие данные, не завершаясь. Как и нода.

> Чтобы не быть голословным, дай ссылку где можно прочитать про все что ты написал.

Вот пример неумирающего сервера: https://sergeyzhuk.me/2017/06/22/reactphp-chat-server/

Что касается остального, то я думаю, что тебе надо читать про сокеты Беркли, что такое процессы в ОС, что такое системные вызовы, то есть общую теорию. Потом может быть изучить библиотеки вроде ReactPHP, почитать их код, или Amphp (он мне не нравится, синтаксис с yield уродливый, и там много глобального состояния, а я не люблю глобальные переменные и потому amphp я использовать не хочу). Ты хочешь прочесть мануал "как сделать неумирающий сервер на PHP" и пропустить изучение теории, но так не получится. Я тебе выше дал как раз такую статью, но ты из нее ничего не поймешь без знания теории.

> Так для нужен бесконечный цикл.

Так сделай бесконечный цикл, кто тебе запрещает?
Аноним 08/08/22 Пнд 15:47:11 2428176 1002
Нужно мнение,собеседуюсь на вакансию где надо работать с cms,насколько это зашкварно работать с cms ебучими?
Аноним 08/08/22 Пнд 16:06:18 2428197 1003
>>2428176
в рашке зашквар, в святой омерике заебись
Аноним 08/08/22 Пнд 16:24:46 2428216 1004
>>2428176
у меня на районе за такую хуйню обоссывают лицо
Аноним 11/08/22 Чтв 17:57:43 2430717 1005
image.png 216Кб, 1920x1330
1920x1330
поясните плз насколько заебно отредактировать шаблон или впихнуть свою верстку в вордпресс?


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

там нужно кодить или просто конфиги прописать?
Аноним 11/08/22 Чтв 20:45:01 2430920 1006
Как-то тред заморозился в последнее время.
Аноним 13/08/22 Суб 02:05:59 2432269 1007
Сап. Нужно реализовать считывание переноса строк. То есть, если я при записи текста внезапно перенес строку, чтобы это учитывал php, добавляя запись в бд именно такой текст, какой я написал, а не сплошной. Как это сделать?
Аноним 13/08/22 Суб 21:23:24 2432975 1008
>>2432269
Насколько я помню, переносы строк сохраняются в базу данных, т.к. являются спецсимволом.
Если мне нужно было отобразить текст с переносами, то я включал переносы css-правилом. Возможно, если загонять текст в тег <pre>, то переносы тоже сохранятся. Я не проверял.
Аноним 14/08/22 Вск 00:39:33 2433107 1009
>>2432975

В теге <pre> нет ничего магического и ты можешь включить принудительные переносы в любом теге с помощью правила white-space.
Аноним 14/08/22 Вск 08:55:20 2433196 1010
Аноним 14/08/22 Вск 13:37:30 2433478 1011
>>2432269
Константа такая есть: PHP_EOL
Аноним 14/08/22 Вск 18:05:54 2433888 1012
>>2432269
Считывание откуда? Из терминала aka stdin?
Вот так:
<?php
$str = "";
while($line = fgets(STDIN)) {
$str .= $line;

}
echo $str;

?>;

Будет вечно считывать данные из терминала пока ему не прилетит EOF (CTRL+D в юниксе и CTRL+Z в шиндоусе)
Аноним 14/08/22 Вск 21:54:09 2434171 1013
Блядь, слонята, помогите. Как в композере откатить пыху до 7.4? Сижу на арче. Я вроде уже прописал в жсоне php: 7.4, но когда я прописываю composer install, он выдаёт
Root composer.json requires php ^7.4 but your php version (8.1.7) does not satisfy that requirement.
Аноним 15/08/22 Пнд 15:13:56 2434894 1014
Аноним 15/08/22 Пнд 17:20:11 2435034 1015
>>2434171
Тебе не в композере надо пыху откатывать на на ОСи интерпритирующей пыху, тебе же русским языком написано: but your php version (8.1.7) но ваша версия 8.1.7. Либо в композере пропиши: ^8.1
Аноним 16/08/22 Втр 14:26:00 2435828 1016
Есть какой-нибудь сервис с бесплатным тиром, через который можно было бы отправить емэйл? Я просто хочу сделать кнопку "забыл пароль" на своём говнопетпроекте. А гуглятся только сервисы по массовой рассылке писем, я не уверен, что это то, что мне нужно.
Аноним 17/08/22 Срд 00:58:14 2436621 1017
>>2435828
А, неважно, я понял, можно даже просто гугловской почтой пользоваться smtp.gmail.com А когда локально на компе приложение запускаешь, есть mailhog, чтобы не отправлять настоящие емэйлы.
Аноним 17/08/22 Срд 17:56:48 2437371 1018
Ваш пхп больше не нужен, для серьезных вещей есть джава (ваш симфони с доктриной это и есть джава с гибернейтом), для быстрого прототипирования golang или node.js

Те, кто с этим спорят, просто отрицают очевидное и боятся потерять работу.

Вопросы?
Аноним 17/08/22 Срд 19:28:08 2437509 1019
Аноним 17/08/22 Срд 19:31:08 2437513 1020
>>2423005
>>2423007
https://onecompiler.com/php/3yd93tntm
Как еще тогда без статики хранить промежуточное значение между вызовами функции? Глобальные переменные использовать еще хуже ведь по идее.
https://onecompiler.com/php/3yda5qxf7
Не могу найти ошибку во второй, самое печальное я даже не знаю где в дебаггере поставить точку, чтобы понять промежуточные значения. Не могу наверное на базовом уровне даже понять концепт, только подгонкой под ответ что-то получить.
Аноним 17/08/22 Срд 22:59:25 2437802 1021
>>2437509
Не, я же не пехапешник
Аноним 19/08/22 Птн 12:13:36 2439316 1022
>>2437513

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

> Как еще тогда без статики хранить промежуточное значение между вызовами функции?

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

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

Итак, у нас задача посчитать сумму элементов массива. Мы можем написать функцию, которая получает на вход массив и возвращает эту сумму. Логика функции такая:

- пусть сумма = 0
- обходим элементы массива по очереди:
- - если это число, то прибавляем его к сумме
- - если это массив, то вызываем себя рекурсивно, получаем сумму элементов в массиве, и прибавляем возвращенное значение к сумме
- возвращаем сумму

Как видишь, задача решается без глобальных переменных.
Аноним 19/08/22 Птн 12:23:23 2439329 1023
>>2437513

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

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

function countCategories(array $categs): int { ... }

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

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

Кондитерские изделия / Торты / Из бисквита

Здесь "Кондитерские изделия / Торты" - это родительские категории, а "Из бисквита" это текущая. Проще всего просто явно передавать в функцию вывода список родительских категорий, то есть функция должна иметь вид:

function printCategories(array $categs, array $parents = [])

Здесь $parents как раз и содержит ["кондитерские изделия", "Торты"].
Аноним 19/08/22 Птн 12:38:05 2439347 1024
>>2437513

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

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

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

Есть набор программ, и у программ есть зависимости. То есть, чтобы поставить программу A, нужно сначала установить программы B и C. Зависимости описаны в массиве такого вида:

программа => массив зависимостей, например:

[
'config-parser' => ['yaml-parser', 'json-parser'],
'json-parser' => ['libjson'],
'framework' => ['config-parser', 'twig', 'doctrine'],
'doctrine' => ['pdo'],
'twig' => ['lexer']
]

Тебе дан массив зависимостей и название программы (например: 'framework'). Напиши функцию, которая выведет полный список программ (включая все зависимости), которые надо установить.

К примеру, чтобы установить config-parser, нужно поставить yaml-parser и json-parser, и для json-parser требуется еще libjson. Не используй статические/глобальные переменные.

И вот еще четвертая задача, посложнее. Раньше мы только обходили деревья, а теперь надо их модифицировать. Тебе дано математическое выражение, которое состоит из чисел, переменных, сумм и произведений (то есть, в нем используется только сложение и умножение). Математическое выражение представлено в виде массива, в котором сначала идет знак операции, а потом переменные, числа или вложенные выражения. Например:

['+', 'x', 'y', 5] значит x + y + 5
['*', 'x', 2, 3] значит x * 2 * 3
['*', ['+', 'a', 'b'], 5] значит (a + b) * 5

Задача: напиши функцию, которая упрощает выражение, заменяя в нем суммы или произведения из 2 или более чисел на одно число. То есть:

2 + x + 5 => 7 + x
(2 + x + 1) * 2 * (x + y) * 5 => (3 + x) * 10 * (x + y)

Тут конечно можно голову сломать, но ты попробуй, а если что, попроси подсказку. Как и ранее, не используй глобальные/статические переменные.
Аноним 19/08/22 Птн 17:58:39 2439797 1025
Поставил в магическим способом docker и symfony. Пока пофиг на докер, работает и ладно, а что делать с симфони? Там есть только папка контроллер и все. Как пилить модули. Как вообще должен выглядеть структура нормального проекта на симфони? На yii и laravel проще все как-то.
Аноним 19/08/22 Птн 18:13:05 2439813 1026
>>2439797
ты меня спрашиваешь?
Аноним 19/08/22 Птн 18:19:04 2439817 1027
А ты знаешь? Я бы хотел посмотреть на структуру проекта на симфони
Аноним 19/08/22 Птн 18:20:44 2439820 1028
>>2439817
у православных американцев по спрашивай в реддите
эта доска мертва как и сам пхп
Аноним 19/08/22 Птн 18:26:43 2439829 1029
Не взяли в германию потому что 30 минут в режиме онлайн вардмапил свой код в попытках решить это тестовое задание. Если интересно
https://pad.riseup.net/p/um6r06DgiSF1souTMcFq
Аноним 19/08/22 Птн 18:32:28 2439834 1030
>>2439820
Нашел на гитхабе пару проектов. Спасибо.
Аноним 19/08/22 Птн 23:08:07 2440189 1031
>>2439829
По ссылке нихуя нет полюбому лажа какая-нибудь в виде написать сортировку слиянием или что-то такое же тривиальное
Аноним 20/08/22 Суб 09:35:07 2440378 1032
>>2439829
Не работает ссылка. Рассказывай что за тестовое
Аноним 20/08/22 Суб 10:24:54 2440393 1033
image.png 15Кб, 935x272
935x272
function examples(): \Generator
{
yield 'empty string' => ['', 1000, ''];
yield 'small string' => ['text', 1000, 'text'];
yield 'max length less than text length' => ['text', 3, 'tex'];
yield 'small string with dots' => ['text. text! text.', 1000, 'text. text! text.'];
yield 'trim text without sentences' => ['text, text (text text);', 15, 'text, text (tex'];
yield 'trim text by dot' => ['text text. text.', 12, 'text text.'];
yield 'trim with zero as max length' => ['text.text', 0, ''];
yield 'trim with negative max length' => ['text text. abc', -2, ''];
yield 'trim multibyte text' => ['Für über 30-Jährige wird für Erst- und Auffrischungsimpfungen Moderna verwendet, ausgenommen sind Schwangere und Stillende. Für die Zweitimpfungen wird BioNTech verwendet, wenn der Impfzyklus damit begonnen wurde.', 150, 'Für über 30-Jährige wird für Erst- und Auffrischungsimpfungen Moderna verwendet, ausgenommen sind Schwangere und Stillende.'];
yield 'trim with multiple dots' => ['Bislang (Stand 9.1.) wurden in München insgesamt 2.573.163 Impfungen durchgeführt (1.058.319 Erst- und 1.003.629 Zweitimpfungen sowie 511.215 Drittimpfungen). Impfungen durch (1.2) Betriebsärzt*innen wurden bislang nicht erfasst. Die Münchner Impfquote liegt damit, bezogen auf die Gesamtbevölkerung, bei den Erstimpfungen bei 71,1 %, bei den Zweitimpfungen bei 67,4 % und bei den Drittimpfungen („Boosterimpfung“) bei 34,4 %.', 200, 'Bislang (Stand 9.1.) wurden in München insgesamt 2.573.163 Impfungen durchgeführt (1.058.319 Erst- und 1.003.629 Zweitimpfungen sowie 511.215 Drittimpfungen).'];
yield 'trim text with length equals to max length' => ['text. text.', 11, 'text. text.'];
yield 'trim with sentence separator at max length position' => ['first sentence. second sentence. text!', 32, 'first sentence. second sentence.'];
yield 'trim by ...' => ['first sentence. second sentence... other text.', 40, 'first sentence. second sentence...'];
yield 'advanced: trim by question mark' => ['text. text? text', 15, 'text. text?'];
yield 'advanced: trim by exclamation mark' => ['text? text. text! text text. text.', 25, 'text? text. text!'];
yield 'advanced: trim by question exclamation mark' => ['text. text?! text text text', 15, 'text. text?!'];
yield 'advanced: trim by exclamation question mark' => ['text. text!? text text text', 15, 'text. text!?'];
}

echo "<pre>";

foreach (examples() as $topic => [$original, $length, $expected]) {

$result = truncate($original, $length) === $expected;
if ($result === false) {
echo "-" . $topic . '<font color="red"> - FAIL!</font>' . "\n";
} else {
echo "-" . $topic . '<font color="green"> - CHECK!</font>' . "\n";
}
}

echo "</pre>";
Аноним 20/08/22 Суб 17:23:10 2440853 1034
>>2439797

Симфони не навязывает какой-то определенной структуры, потому тебе логичнее было бы спросить "как должна выглядеть структура проекта на php".

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

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

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

И тд. Надеюсь, ты видишь логику. Заметь, что некоторые модули тут отвечают в основном за интерфейс или API, а некоторые за внутреннюю бизнес-логику. То есть, тебе надо подумать, как разбить твое приложение на компоненты, чтобы внутри компонента был код, который тесно связан друг с другом, сами компоненты слабо связаны между собой. И заметь, что некоторые модули содержат контроллеры/шаблоны, а некоторые нет. Нет такого требования, чтобы каждому модулю соответствовала какая-то страница на сайте.
Аноним 20/08/22 Суб 17:40:47 2440876 1035
Аноны, переходите в новый тред >>2440871 (OP)

Этот тред закончился, если вас пропустили, напомните о себе в новом треде.
Аноним 21/08/22 Вск 18:02:01 2442056 1036
>>2440853
Благодарю. Можно еще вопрос кастельно модулей, раз у тебя есть опыт с ними. Как быть с классами которые связывают несколько классов из разных модулей? Например класс КлиентТелевизор связывающий классы Клиент из модуля клиентов с классом Телевизор из модуля телевизоров.
Аноним 22/08/22 Пнд 13:09:23 2442717 1037
>>2439797
Ну такую же структуру как в ларавель сделай, в чём проблема? Ты хоть доку или книгу по симфе почитал?

>>2442056
Через DI и autowiring. Всё в доке есть как создать сервис, в том числе с зависимостью другим сервисом, читай, пробуй.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов