Сохранен 1028
https://2ch.hk/pr/res/2687463.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

#php PHP Тред #666 /php/

 Аноним OP 03/05/23 Срд 17:12:23 #1 №2687463 
image.png
image.png
image.png
ТРЕД КОНСУЛЬТАЦИЙ И ИЗУЧЕНИЯ PHP.
Формируем нетоксичное коммьюнити! Держите себя в руках, воздержитесь от оскорблений.

Предыдущий тред: >>2663903 (OP)

PHP это интерпретируемый язык программирования с динамической типизацией.
https://en.wikipedia.org/wiki/PHP

На PHP работают 80% веб-сайтов и сервисов, в том числе и множество высоконагруженных проектов.
PHP широко применяется в финтехе, телекоме, вебе.
PHP широко поддерживает все основные базы данных, включая Postgres, Percona/MySQL, ElasticSearch и т.д.
Поддерживает управление памятью и прочее байтоёбство.

Плюсы: Куча работы, в том числе на начальном уровне.
Минусы: Много хейтеров.

Q&A:
Q: Скорость
A1: После версии 7 вообще не вопрос. Например, тут https://habr.com/ru/articles/718186/ -- результаты, близкие к C/C++.
A2: Все использую Opcache и Memcache для сохранения данных между процессами.
A3: PHP действительно быстрый, но жрёт память

Q: Ошибки приведения типов
A: declare(strict_types=1)

Q: Асинхронность
A: Все без каких-либо проблем используют брокеры сообщений, ветвление процессов или расширения для асинхронности. Подробнее: https://habr.com/ru/articles/451916/

Q: Где можно попробовать
A1: для новичков https://onlinephp.io || https://www.google.com/search?q=php+sandbox+online
A2: для изучения баз данных, SQL https://www.apachefriends.org/ru/index.html (а для редактирования устанавливаем IDE)
A3: для изучения реального применения и DevOps: любая виртуализация (Vagrant+Virtualbox, Windows WSL)
A4: для своего проекта в онлайн подойдёт практически любой виртуальный хостинг (я юзаю Sprinthost || для выбора: shared.menu )

Q: Чем редактировать PHP проекты
A1: IDE PHPStorm / IntellijIdea -- но они платные
A2: Как альтернатива -- Netbeans, Eclipse с плагинами PHP

Q: Актуальный набор навыков для успешного вката в нормальные конторы
A:
- ООП, SOLID/GRASP, MVC
- HTTP/REST (если хотите в веб)
- Безопасность на уровне OWASP TOP10
- SQL (Postgres, MySQL)
- PHPUnit, TDD
- Патерны программирования
- PSR
- PHP фреймворки, по примерному убыванию зарплат:
Symfony > ModX > Laravel > Yii > Slim > Битрикс > Wordpress
- ORM (Doctrine)
- Git
- Брокеры сообщениений (RabbitMQ, Kafka)
- Linux, shell
- Docker, виртуализация
- (для fullstack) Frontend: HTML/CSS/SCSS, Bootstrap, реактивные фреймворки
- Английский язык для чтения документации

Q: Работа
A: Например https://hh.ru/search/vacancy?text=PHP + Куча бирж

Q: ТГ-чатик для поддержки и обмена опытом по программированию
A: https://t.me/programming_ru_group

-- копия шапки про обучение --
Как учить, что читать:
Добро пожаловать в клуб востребованных и незаменимых людей.
Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки, печем печенье и даже делаем простые сайты! Зачем? Кто-то хочет изменить мир, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Остальные треды есть в архиве: https://phpclub.tech/ (там есть поиск, так что можно легко найти обсуждение какой-то задачи или ответы на свой старый пост) или ищутся в гугле по словам "клуб изучающих php" и в архиваче.

Мейлач лежит, модератор зверствует? Есть запасной тред на доброчане: /s/res/23225.xhtml#i46467

Форматируй свой код, если хочешь, чтобы его читали.

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

С чего начать

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

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Visual Studio Code, Netbeans PHP или PhpStorm (с ним будет удобнее).

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка 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
- Еще более сложная и долгая задача на Yii/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony/Doctrine
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

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

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

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

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

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

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: https://getjump.github.io/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/

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

У автора учебника нет аккаунтов и групп вконтакте, в фейсбуке, в твиттере, все "пхп-треды" там поддельные.
Аноним 03/05/23 Срд 17:25:54 #2 №2687484 
И сразу базу в тред: https://dev.1c-bitrix.ru/learning/
Аноним 03/05/23 Срд 18:37:46 #3 №2687557 
Как написать круд на чистом РНР без фреймворков и библиотек?
Аноним 03/05/23 Срд 18:46:54 #4 №2687566 
>>2687557
switch $_SERVER[REQUEST_METHOD] {
case GET:
mysqli_query($db, SELECT * FROM ...);
}
Аноним 03/05/23 Срд 19:18:44 #5 №2687591 
>>2687484
Принимается!
https://symfonycasts.com/ туда же
Аноним 03/05/23 Срд 23:20:19 #6 №2687771 
image.png
Довайте обсудим best practices деплоя/CI/CD PHP-приложений.

Можно на примере symfony + gitlab,
Можно (ещё лучше) на примере абстрактного deploy.sh и абстрактной приложухи без привязки к фреймворкам.
Аноним 03/05/23 Срд 23:26:26 #7 №2687775 
>>2687566
>mysqli_query
Так делать скорее не нужно, уже есть PDO.
В остальном, вполне себе способ.
Аноним 04/05/23 Чтв 03:31:02 #8 №2687857 
>>2687771

blue-green deploy позволяет делать деплой без даунтаймов
Аноним 04/05/23 Чтв 07:54:02 #9 №2687879 
>>2687566
А как осуществлять маршрутизацию запросов?
Аноним 04/05/23 Чтв 09:53:57 #10 №2687895 
Дак сейчас на РНР пишут REST API приложения и отдельно фронт или MVC с шаблонизаторами?
Аноним 04/05/23 Чтв 10:51:13 #11 №2687903 
>>2687895
Какой шаблонизатор, уже давно реакт и вуе.
Аноним 04/05/23 Чтв 10:54:26 #12 №2687906 
>>2687879
через раскидывание файлов по папкам, апач найдет своих
Аноним 04/05/23 Чтв 11:33:31 #13 №2687925 
Покупал ли кто-то лицензии PHPStorm в последнее время? Везде выкупили, где ищу, на платиру и прочих маркетах нет ничего.
Аноним 04/05/23 Чтв 11:44:15 #14 №2687930 
>>2687925
Чем VS Code не устраивает?
Аноним 04/05/23 Чтв 11:44:51 #15 №2687931 
>>2687925
Сбрасываю триал постоянно.
Аноним 04/05/23 Чтв 12:06:30 #16 №2687951 
>>2687925
https://3.jetbra.in/
Аноним 04/05/23 Чтв 12:30:36 #17 №2687964 
>>2687951
Почему не сделают, что просто запускаешь crack.exe и всё ломается, а лучше сразу ломаную версию выложить?
Аноним 04/05/23 Чтв 13:24:01 #18 №2688013 
>>2687895
> Дак сейчас на РНР пишут REST API приложения и отдельно фронт или MVC с шаблонизаторами?

Server side рендеринг щас далеко не мейнстрим. Отдельня залупа на ноде пукающая вопросы на бэк это мейнстрим

Везде где позволяет задача будет делаться отдельный фронт. Так проще команды организовывать. Щас так даже на ебучем битриксе делают
Аноним 04/05/23 Чтв 14:12:25 #19 №2688061 
>>2687951
Мне страшновато эти кряки юзать, не хочу код компании или креды слить куда-то и пизды получить. Да и свой комп можно покоцать.
Аноним 04/05/23 Чтв 14:25:16 #20 №2688074 
>>2687895
И так и так, формируй задачу себе по силам, по срокам и по знаниям.

>>2687930
Ничем не устраивает, просто несравнимый функционал.
VS Code только для новичков на старте обучения ОК, и то из бесплатных лучше взять NetBeans или Eclipse.

>>2687964
Тут две причины, одну ты можешь не понять: это культура сферы разработки ПО. Вторая, более приземлённая: вредоносные модификации всевозможных кряков.
Аноним 04/05/23 Чтв 15:39:56 #21 №2688142 
>>2688074
Получается без пхпшторма не стать пхп-разработчиком?
Аноним 04/05/23 Чтв 15:58:08 #22 №2688166 
>>2688142
Все так.
Аноним 04/05/23 Чтв 16:00:32 #23 №2688169 
>>2688166
Джависты тоже сидят все на идее, но у них хотя бы есть коммьюнити версия, а тут только платная.
Аноним 04/05/23 Чтв 16:19:12 #24 №2688183 
>>2688169
>Джависты тоже сидят все на идее, но у них хотя бы есть коммьюнити версия, а тут только платная.

А есть ли способ заплатить им деньги? Я бы заплатил, но сука нельзя же
Аноним 04/05/23 Чтв 16:20:54 #25 №2688184 
>>2688183
Дак в том и дело, что безвыходная ситуация
Аноним 04/05/23 Чтв 16:34:41 #26 №2688202 
>>2687951
Как же всё через жопу сделано! Даже readme нормально написать не смогли. Непонятно что вставлять, а что комментарий.
Аноним 04/05/23 Чтв 16:45:00 #27 №2688214 
>>2688184

Я просто регаю новое мыло раз в месяц, лол
Аноним 04/05/23 Чтв 19:16:28 #28 №2688408 
>>2687463 (OP)
Вопрос по порядку исполнения скрипта. Имею ввиду, когда обработчик доходит до функции, то он ждет пока она исполнится, или запускает функцию и сразу дальше по коду идет?
Аноним 04/05/23 Чтв 20:28:16 #29 №2688478 
>>2688408

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

В программе инструкции выполняются сверху вних, строго по очереди (исключение - циклы и ветвления if/switch). Соответственно, интерпретатор не может одновременно выполнять функцию и что-то другое.
Аноним 04/05/23 Чтв 22:29:09 #30 №2688597 
>>2688142
Ну почему, можно попробовать юзать NetBeans / Eclipse.
Не уверен, что там есть вот прям абсолютно весь функционал PHPStorm, но и то лучше VSCode.

>>2688183
Попроси кого-нибудь из знакомых, ну или в интернете сервис найди.

>>2688408
Программы на РНР по-умолчанию синхронны, асинхронность частично описана в ОП-посте.
Аноним 05/05/23 Птн 10:01:56 #31 №2688795 
>>2688478
>исключение - циклы и ветвления if/switch
А тут что? Тоже по очереди не?
Аноним 05/05/23 Птн 10:12:26 #32 №2688799 
>>2688597
VS Code грузится за 2 секунды и работает даже на слабых ПК, а PHPStorm грузится полчаса и лагает даже на мощных машинах.
Аноним 05/05/23 Птн 10:32:13 #33 №2688817 
>>2688799
>PHPStorm грузится полчаса и лагает даже на мощных машинах
Неправда. К тому же ее возможности несопоставимы с VSCode.


У меня на i9 10x5.7 GHz + 64 GB RAM + NVIDIA 3070 не лагает, но это можно считать минимумом для комфортной работы, хотя никакого инпут-лага, зависаний итд, так что если будете собирать компьютер под PhpStorm берите ТОЧНО лучше.
Аноним 05/05/23 Птн 11:29:44 #34 №2688862 
>>2688817
Какие там возможности? Вот сейчас установил и хеллоуворлд работает только в консольный вывод, а делать php -S localhost шторм уже не умеет, выдаёт миллион ошибок. Но мне проще самому команду ввести, которая везде описана, чем разбираться в тупых конфигах шторма, которые они к тому же из версии в версию постоянно меняют, поля перетасовывают. К чему такой геморрой за свои же деньги!?
Аноним 05/05/23 Птн 11:33:57 #35 №2688866 
>>2688862
>Какие там возможности?
Автодополнения, рефакторинга, навигации, git, отладка, разбор кода очень хороший, в VSCode конечно не только автодополнение по токенам, но оно такое убогое, что именно так оно и выглядит, как автодополнение из SublimeText, для примера попробуй открыть проект на Laravel или Bitrix, тебе PhpStorm почтив всегда будет давать правильное автодополнение, импортировать нужные классы, из этого же проистекает нормальный рефракторинг и все что я выше описал. Ну и кроме того доп.возможностей миллион, когда постоянно работаешь даже не замечаешь всех удобств, поэтому трудно тебе выдать полной список.
Аноним 05/05/23 Птн 11:34:41 #36 №2688868 
>>2688862
И ты конечно же чисто случайно не заскринил эти глупые ошибки.
Аноним 05/05/23 Птн 12:04:15 #37 №2688883 
phpstormtitlebar.jpg
>>2688868
Сам разобрался.

Лучше подскажите как в убунте объединить строку заголовка с менюшкой.
VS Code позволяет такое объединение.
Аноним 05/05/23 Птн 14:35:21 #38 №2688995 
>>2688883
https://youtrack.jetbrains.com/issue/IDEA-199526/Need-an-option-to-remove-the-title-bar-on-Linux#focus=Comments-27-6866274.0-0
Аноним 05/05/23 Птн 15:57:12 #39 №2689105 
>>2688995
Получается VS Code всё-таки лучше?
Аноним 05/05/23 Птн 16:04:32 #40 №2689121 
>>2687463 (OP)
Подскажите бесплатный публичный CI-сервис, чтобы за один тест можно было тестировать несколько версий PHP.
Мне нужно протестировать версии, начиная с 7.2 (я на 95% что всё работает), у старых пакетов, которые я написал, когда актуальной была 7.2
Scrutinizer может только одну версию за раз.
Travis был идеальным вариантом, пока не перестал быть бесплатным. $3 единоразово я бы отдал, но $60 за пакеты, которыми сам не пользуюсь, отдавать не хочу.
Свой публичный сборочный цех на Гитлабе поднимать не хочу по причинам выше.
Аноним 05/05/23 Птн 17:12:27 #41 №2689194 
>>2689105
Получается так. А еще у него иконка охуенная. Как по мне очевидная победа.
Аноним 05/05/23 Птн 18:00:05 #42 №2689243 
>>2689121
Локальный скрипт с Docker?
Аноним 05/05/23 Птн 18:13:57 #43 №2689258 
>>2689243
и как тут сделать зелёный баджик "all tests passed"?
Аноним 05/05/23 Птн 18:43:22 #44 №2689282 
>>2689258
if exit_code = 0 then
echo 'all tests passed' > badgik.md
else
echo 'tests failed' > badgik.md
end

README.md
include badgik.md
Аноним 05/05/23 Птн 19:31:52 #45 №2689349 
пиздец.gif
>>2689282
Аноним 06/05/23 Суб 00:27:17 #46 №2689596 
>>2689349
Эпоха айфоно соевых куколдов прошла, время суровых действий.
Аноним 06/05/23 Суб 10:19:49 #47 №2689764 
17E13C88-9A06-48E9-9C0E-CFD67C528736.jpeg
Давайте обсудим best practices по хранению логов и мониторингу приложений.

Кстати, elastic stack больше недоступен из РФ? Ищем замену?
Аноним 06/05/23 Суб 10:21:44 #48 №2689765 
>>2689764
Эластично и точка.
Аноним 06/05/23 Суб 10:26:36 #49 №2689768 
>>2689765
Смешно, а логи-то где хранить
Аноним 06/05/23 Суб 11:06:44 #50 №2689783 
>>2689764
>best practices по хранению логов и мониторингу приложений
storage/laravel.log
Аноним 06/05/23 Суб 11:32:27 #51 №2689797 
>>2689764
Ну кому надо у того компания сингапурская лицензии закупает. Третье правило ведения бизнеса в раиссе.
Аноним 06/05/23 Суб 15:28:26 #52 №2689958 
>>2689783
Это для маленьких

>>2689797
Да это понятно. А если без неудосбств?
Аноним 06/05/23 Суб 15:41:15 #53 №2689965 
>>2688795

if позволяет пропускать команды в зависимости от условия. Цикл позволяет выполнять команды по несколько раз подряд.
Аноним 06/05/23 Суб 15:42:36 #54 №2689966 
>>2688866

в VSCode можно подключить LSP сервер и будет полноценное автодополнение, хотя там есть баги, так что надо готовиться немного поковыряться в конфигах.
Аноним 06/05/23 Суб 16:35:54 #55 №2690018 
>>2689966
Я про LSP и говорю.
Аноним 06/05/23 Суб 17:47:26 #56 №2690110 
>>2687463 (OP)
Посоветуйте годных гайдов/роликов как дизайнить рест апи
Аноним 06/05/23 Суб 18:44:26 #57 №2690168 
>>2690110
https://sd.blackball.lv/books/17529?mode=read
Аноним 06/05/23 Суб 23:53:54 #58 №2690421 
Радио, под которое хорошо работается последние несколько лет:
https://www.youtube.com/watch?v=zMCOFQ_w03Q

Ещё рабочий фоновый лайфхак (можно совмещать с радио):
https://coffitivity.com/
Аноним 07/05/23 Вск 00:24:40 #59 №2690430 
Нахуя нужен yii если есть лара или симфони? Лара же намного удобнее чем yii, в чем смысл yii и почему он до сих пор во многих вакансиях?
Аноним 07/05/23 Вск 00:49:21 #60 №2690440 
>>2690430
ле га си
Аноним 07/05/23 Вск 01:50:58 #61 №2690478 
>>2690440
скоро будет yii3 и симфони с ларой можно будет помечать как @deprecated вотувидити
или не увидити https://www.yiiframework.com/yii3-progress
Аноним 07/05/23 Вск 08:08:05 #62 №2690524 
>>2690478
Зачем он нужен, когда есть отечественный противозачаточный фреймворк https://spiral.dev/ который к тому же сплав пыхи и гошки.
Аноним 07/05/23 Вск 09:54:44 #63 №2690550 
Screenshot 2023-05-07 095050.png
>>2690524
>AOP
И сразу нахуй. Отличный генератор лапшичной фабрики. Очень приятно после недели дебаггинга узнать что кто-то дохуя умный перехватил твой хуй и он теперь летит в твое очко.
Аноним 07/05/23 Вск 10:15:18 #64 №2690557 
>>2690550
Любой средний проект на пыхе со сроком жизни 3+ лет на проде - это тонны манкипатченной лапши и выполнение тасок с дебагером в зубах как-можно быстрее на отъебись.
Аноним 07/05/23 Вск 11:46:02 #65 №2690587 
>>2690557
Ну во первых не любой. Если следить, проводить код ревью и вовремя хуярить по рукам, то к третьему году оно только начнет подгнивать.

Другое дело если в системе by design поощряется внедрение любого поведения в любое место. С первого дня. Я даже представить не могу как это контролировать, какие могут быть правила когда никаких правил. Просто расслабиться и тонуть в говне.
Аноним 07/05/23 Вск 21:46:56 #66 №2691362 
>>2690557
Как будто в других языках не так.
За все не скажу, но крайней мере в больших Java/Spring приложений с кучей Maven-зависимостей, всё со временем стремится развалиться точно так же. Про JavaScript и говорить нечего.

Думаю, это отражение физического закона энтропии.

Но, кстати, давайте обсудим лучшие практики XDebug. Можно на пальцах, чем он лучше print_r?
Аноним 07/05/23 Вск 21:57:35 #67 №2691370 
>>2691362
Это для поддержки классического дебага в иде, все языки имеют такие инструменты для этого.
Но на деле пользуются принтами, лол.
Аноним 07/05/23 Вск 21:59:58 #68 №2691372 
>>2691370
Несколько раз пытался привыкнуть, так и не понял, что в нём такого полезного... мб попробую ещё раз.

https://www.youtube.com/watch?v=5QrdFpxbkzA

А что думаешь за профайлинг? Есть на примете инструмент, который бы подсвечивал тормозной код?
Аноним 07/05/23 Вск 23:04:18 #69 №2691436 
>>2690550
>>2690524

Вообще, есть ли в приципе на PHP КРОВАВЫЙ ЭНТЕРПРАЙЗ? Всей фреймворки популярные это Rapid App Development, а шоб энтерпрайзы пилить огромные и 300 лет работающие что-то есть?

В принципе кроме symfony не похоже чтобы что-то для этого было. Вроде где-то там был Laminas, но где на него хоть 1 вакансия?
Аноним 07/05/23 Вск 23:59:26 #70 №2691493 
>>2691436
Хейтеры будут говорить, что нет.

На практике, сейчас работаю над финтех/банковским enterprise приложением, которому ~15 лет, и которое работает в >80 странах... ЗП около 400 (понимаю, что не предел).

Когда собрал ачивки/компетенции из ОП-поста, таких предложений стало поступать довольно много.
Аноним 08/05/23 Пнд 00:18:30 #71 №2691514 
>>2691493

Стек какой?

Тоже работаю над финтех стартапом(буду кекать если над одним и тем же)
Аноним 08/05/23 Пнд 01:07:53 #72 №2691545 
>>2691372
>А что думаешь за профайлинг? Есть на примете инструмент, который бы подсвечивал тормозной код?
Я не он, но открываешь файл от профайлера и там тормозные функции и так показаны, зачем нужна подсветка в IDE не особо ясно.
Аноним 08/05/23 Пнд 07:23:08 #73 №2691615 
>>2691370
Всегда пользуюсь xdebug
1) Точку легче поставить чем писть print_r
2) Брекпоинт можно поставить в процессе выполнения
3) Видно сразу все значения переменных.
4) Можно смотреть значение выражений
5) Самое крутое это условные брекпоинты. Часто в цикле какая-то функция выполняется. Легко сделать брекпоинт, который срабатывает при определенных значениях аргументов
6) Бывает полезно пошагово выполнять код и смотреть что попадает в переменные и что просходит на разных уровнях коллстака
Аноним 08/05/23 Пнд 07:35:01 #74 №2691619 
>>2691615
Ты перекатился из какого-то существующего только в иде языка?
Аноним 08/05/23 Пнд 07:43:11 #75 №2691627 
>>2691619
Не понял вопроса... Я в пыху не перекатывался, а вкатывался лет шесть назад.
Аноним 08/05/23 Пнд 07:53:01 #76 №2691630 
>>2691493
>сейчас работаю над финтех/банковским enterprise приложением, которому ~15 лет
>ЗП около 400 (понимаю, что не предел)
>таких предложений стало поступать довольно много
Перетолстил.
1) 15 лет возраст конечно солидный, но не для пхп. Это сейчас на нем можно писать почти как на джаве. А 15 лет назад пхп заслуженно звался говноязыком, пригодным для создания двухстраничных сайтов на коленке. Никакими "приложениями" тогда даже не воняло.

2) Зп. 400 сумма вполне реальная, так бывает. Но. В россии 300+ это уровень тимлида, техлида, лида разработки, как хочешь назови - человека который не пишет код. Даже если в вакансии это не написано 99% что тебя заставят управлять командой.

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

Так что чтобы грамотно напиздеть нужно было написать: сейчас работаю лидом над финтех/банковским enterprise, зп 300, задавайте свои ответы.
Аноним 08/05/23 Пнд 09:33:26 #77 №2691669 
Я вот не пойму, надо учить фронт типа реакта, вью, ангуляра или нет? Или можно просто писать всё на шаблончиках и не парится?
Аноним 08/05/23 Пнд 10:01:16 #78 №2691682 
>>2691669
Можешь не напрягаться пока, но думаю, что в итоге все перекатятся на клиентские морды.
Аноним 08/05/23 Пнд 10:04:14 #79 №2691685 
>>2691682
Я слышал, что в сишарпе иногда берут джунов, которые хорошо знают сишарп и асп.нет, а фронту их учат на работе. Есть ли такое в РНР?
Аноним 08/05/23 Пнд 11:00:10 #80 №2691713 
>>2691685

На реакте или вью пхпшники не пишут. Либо у вам будет отдельный фронт, либо там надо будет выдать данные в виде таблицы с отчетом, в бутстрапе накаляеаешь
Аноним 08/05/23 Пнд 11:00:34 #81 №2691714 
>>2691685

На реакте или вью пхпшники не пишут. Либо у вам будет отдельный фронт, либо там надо будет выдать данные в виде таблицы с отчетом, в бутстрапе накаляеаешь
Аноним 08/05/23 Пнд 11:37:07 #82 №2691774 
>>2691713
Почему тогда больше половины вакансии требует знания фронта?
Аноним 08/05/23 Пнд 12:40:05 #83 №2691836 
>>2691774
Чтоб ты вьебывал как конь за копейки. "Почему" ебать.
Аноним 08/05/23 Пнд 18:04:47 #84 №2692191 
Что выбрать вкатуну для первой РАБоты: Yii 1.1 с гибридным графиком в продуктовой компании или битрикс на удаленочке в обычной вебстудии? Я сам больше склоняюсь к битриксу, выглядит более "стабильным" в нынешней непростой экономической ситуации - на нем тупо больше вакансий, плюс умудрились пролезть во всякий крупняк, который занимается эскпортом (металлурги, золотодобыча, нефтегаз и т.п.).
Аноним 08/05/23 Пнд 18:37:52 #85 №2692219 
Почему тип возвращаемый из функции указывается в паскаль-стиле, а тип параметров функции в си-стиле? Почему фигурные скобочки для классов и функций расставляются как в сишарпе, а конструкции типа циклов в джава-стиле? Почему нельзя было выбрать какой-то один стиль, а не городить гибрид из всего на свете?
Аноним 08/05/23 Пнд 19:16:36 #86 №2692245 
>>2692219
Потому что это не изначальный дизайн, а наслоения фекальных масс.
Аноним 08/05/23 Пнд 19:25:30 #87 №2692256 
>>2692191
Битрикс кал. Вот и думай.
Аноним 08/05/23 Пнд 21:25:24 #88 №2692388 
>>2692256
Yii1 тоже кал, php тоже кал.

Я бы битрикс брал, лоль
Аноним 08/05/23 Пнд 23:18:53 #89 №2692484 
>>2692388
Yii просто старый, но его делали адекватные люди, в чем-то талантливые. А не студенты за корку хлеба как битрикс.
Аноним 08/05/23 Пнд 23:22:24 #90 №2692488 
>>2691774

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

Или: сделать вывод рекламных акций на сайте.

Как ты это будешь делать без фронтенда?
Аноним 08/05/23 Пнд 23:25:16 #91 №2692494 
>>2692219

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

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

Возьми тот же Си++ например, от него плеваться хочется, десятилетия легаси, нет проверки на переполнение в математических операциях, а люди на нем пишут.
Аноним 09/05/23 Втр 01:06:44 #92 №2692590 
>>2692494
>нет проверки на переполнение в математических операциях,
Не баг, а фича, так как на этап компиляции решение этой проблемы вынести нельзя, то придется делать кучу проверок в рантайме, что отрицательно скажется на производительности и нарушит один из столпов ЦПП.
Уверен, что уже давно есть какая нибудь йоба-функция/опция компилятора, которая это реализует. Это же плюсы, нахой.
Аноним 09/05/23 Втр 07:21:47 #93 №2692706 
>>2692484
> А не студенты за корку хлеба как битрикс.
И тех наебали, потом допиливали другие, потом третьи, потом решили переписать всё на D7, но и там как-то не доделали. А вот отдел маркетинга хавает хлебушек с икрой и продает это говно как горячие пирожки
Аноним 09/05/23 Втр 09:01:46 #94 №2692726 
Что нужно знать и уметь в БД на мидла?
Аноним 09/05/23 Втр 09:14:17 #95 №2692735 
>>2692726
Все.
А что ты планируешь "не знать"? Типа если миддл, то запросы оптимизировать не надо или что? Вот дадите лычку сеньора пойду про индексы читать, а пока по дудошу вам сервер.
Аноним 09/05/23 Втр 09:16:42 #96 №2692737 
>>2692735
Как запросы оптимизируються кроме добавить индексы туда где explain показывает что не используються индексы?
Что нужно знать еще?
Аноним 09/05/23 Втр 09:19:13 #97 №2692740 
>>2692735
Скажем так, какая литература способна дать мидла по БД?
Одной книги mysql викрам васвани - хватит?

И еще, должен ли мидл уметь в репликацию, шардирование, партицирование, масштабирование горизонтальное?
Аноним 09/05/23 Втр 09:54:03 #98 №2692795 
>>2692737
Тебе и ебли с индексами хватит.
Вот тебе пример, который выше обсуждали.
MySql. Есть три таблицы: товары, заказы и таблица связей товар_id -> заказ_id. По таблице связей индекс (товар_id, заказ_id). Тебе нужно найти товары в двух заказах 15 и 22. Ты пишешь запрос:
SELECT DISITINCT(товар_id)
FROM заказ
LEFT JOIN товар_to_заказ AS
ON заказ.id = товар_to_заказ.заказ_id
WHERE заказ.id IN(15,22);

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

>>2692740
>Скажем так, какая литература способна дать мидла по БД?
>Одной книги mysql викрам васвани - хватит?
Не знаю такой литературы. Я учился по отдельным статьям и доке. По MySql знаю только где дока хорошая https://www.mysqltutorial.org/ . А по постгресу лучшие курсы тут https://www.postgrespro.ru/education/courses

>И еще, должен ли мидл уметь в репликацию, шардирование, партицирование, масштабирование горизонтальное?
Тебя нормальный админ, даже не dba, к управлению базой никогда не подпустит, будь ты хоть сеньор помидор. Если она ляжет выебут сначала его, потом опять его, а только потом тебя. Даже если виноват ты, с него спросят какого хуя он тебе доступ дал. Так что делать репликацию и шардирование тебе не светит. А вот знать как работать с партицированными таблицами и репликами надо.
Аноним 10/05/23 Срд 02:56:36 #99 №2693632 
>>2692590

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

Неверно. Каждая операция обращения к оперативной памяти требует проверки (например, что не нарушены права доступа к странице памяти, что страница не выгружена в своп) и никто не жалуется. А уж переполнение при сложении проверять на аппаратном уровне гораздо проще, чем доступ к памяти.
Аноним 10/05/23 Срд 02:57:23 #100 №2693633 
>>2692590

Также, Swift делает такие проверки и никто не жалуется. Хотя конечно лучше было бы, если бы процессоры были не такими убогими и делали проверки аппаратно. Почему так не сделано?
Аноним 10/05/23 Срд 04:33:14 #101 №2693640 
>>2693632
ЕМНИП в интелах при переполнении флаг всегда автоматически устанавливается
Аноним 10/05/23 Срд 04:36:19 #102 №2693641 
>>2693640
так что претензии скорее к компиляторам, чем к железу
Аноним 10/05/23 Срд 14:59:57 #103 №2694182 
Кто-нибудь учился у Альберта? Норм курс?
Аноним 10/05/23 Срд 15:13:19 #104 №2694190 
image.png
Есть тут битриксойды? Как скрыть эти блоки - хедер, левую секцию и желательно футер тоже. Кароче как сделать просто пустую страницу, но сам шаблон остался именно этот?

В режиме правке ничё не нашлось, в файлах пока тока слова из меню получилось убрать...
Аноним 10/05/23 Срд 15:16:54 #105 №2694194 
>>2692191
Мб лучше выбрать смежную компанию (бус + лара/симф/йюи)? Туда легче попасть в плане конкуренции, чем на чистый фреймворк.

Годик отработать и уйти на чистый фреймворк уже, считай с опытом будешь, пусть и не 100% времени, но кого ебет, если ты реально работал с этим фреймворком и реально имеешь знания.
Аноним 10/05/23 Срд 16:39:45 #106 №2694286 
phpassert.jpg
Написал юнит-тесты и нарочно сделал ошибку в тестируемой функции, чтобы проверить. Но ничего не выдаёт ни через консоль, ни через браузер.
Как вообще пишут тесты в РНР?
Аноним 10/05/23 Срд 16:49:41 #107 №2694299 
>>2694286
Это пизда.
Полный набор: магические числа, однобуквенные названия перменных, ассерты которые хуй поми что ассертят.
Функцию еще нужно было назвать d для полной обфускации.
Аноним 10/05/23 Срд 16:58:25 #108 №2694306 
>>2694299
Это функция вычисления дискриминанта квадратного уравнения. А однобуквенные переменные - это коэффициенты квадратного уравнения, прямиком из предметной области.
Аноним 10/05/23 Срд 17:15:50 #109 №2694336 
>>2694306
Во первых. Тебе о том и говорят что надо писать так чтобы понятнее было. Я увидев disc сразу подумал что это какой-то discount. Потому что формула дискриминанта b^2 - 4ac, а у тебя ерунда какая-то написана.

Во вторых. Раз уж пишешь ЮНИТ тесты, почитал бы что в пхп считается юнитом. Объект. У тебя должен быть объект DiscriminantCalculator, который будет принимать объект QuadraticEquation. Вот тогда может идти речь о каком-то юнит тесте.
Аноним 10/05/23 Срд 18:34:57 #110 №2694409 
Всё равно не понимаю, в чём преимущество пхпшторма? Всё тоже самое делается в вс коде, но при этом не надо ничего грузить полчаса, да и выглядит более стильно.
Аноним 10/05/23 Срд 18:53:55 #111 №2694421 
Screenshot 2022-10-22 161630.png
Screenshot 2022-10-21 125727.png
Screenshot 2022-10-22 161540.png
Screenshot 2022-10-21 125712.png
>>2694409
Сто раз говорено было: в VSCode поддержка пхп держится на кривых камунити плагинах, которые нихуя не поддерживаются. VSCode блядь не предназначен нахуй для коммерческой разработки на пхп. Поэтому и "учиться" на нем нет смысла, все равно на работе придется ставить шторм.
Аноним 10/05/23 Срд 19:19:32 #112 №2694436 
>>2694182
Я пробовал смотреть - ну такое, мне не зашло, мало практики. Тот же Лаврик получше будет. Если ты за деньги собрался что-то покупать, то тут могу посоветовать только подписку на Хекслет.
Аноним 10/05/23 Срд 19:36:25 #113 №2694448 
>>2694421
Как можно оптимизировать пхпшторм, чтобы он быстро грузился и не лагал?
Аноним 10/05/23 Срд 19:40:07 #114 №2694451 
>>2694448
Никогда он не лагал. Я на G3258 штормом пользовался и все норм было. И это с рабочими проектами под гиг размером.
Аноним 10/05/23 Срд 19:41:15 #115 №2694454 
>>2694448
https://www.dns-shop.ru/product/94e74a2e3944ed20/processor-amd-ryzen-9-7950x-oem/
Аноним 10/05/23 Срд 19:43:54 #116 №2694455 
>>2694451
У меня на i9 10x5.7GHz изредка подлагивает, но в целом более менее. На i3-10100 работать было крайне сложно, как и на AMD Ryzen 7 5700U.
Аноним 10/05/23 Срд 19:52:38 #117 №2694463 
>>2694455
Охуительные истории. В шторме все закешировано перекешировано. Один раз индексацию проекта подождал и все летает.
Аноним 10/05/23 Срд 19:54:30 #118 №2694465 
>>2694463
Ты просто заторможенный или типо того.
Аноним 10/05/23 Срд 22:37:25 #119 №2694552 
>>2694190
Понимаю, что пишу не по делу. Соре. Бля, найди нормальную работу, а не занимайся этой хуйнёй из 2007 года, лучше уж фронтендером быть.
Аноним 11/05/23 Чтв 10:00:56 #120 №2694702 
>>2694552
Ну у них есть проекты и на ларе. Правда почему-то сказали, что учат сначала битриксу, что типа потому что он легче, но мне что-то не верится. Скорее всего на таких как я вешают всю лапшу с битрикса, а синьорам уже дают проекты на ларе.

Но я если честно не могу больше терпеть. Хочу побыстрее работать начать, пусть даже за 15-20к, но зато вайти. Я бы мог подзадротить полгода еще и стать ларавелистом, но это еще не факт что я бы потом работу нашел за месяц. Вполне возможно ушло бы еще полгода на поиск работы, итого ушел бы год допустим, а тут почти 100% я уже через 2 месяца буду работать.

Я просто заебался жить с родителями, я хочу свою микрохату, чтоб в тишине и туда-сюда. А там уже как стану битриксойдом мб перекачусь мб нет похуй уже.
Аноним 11/05/23 Чтв 10:05:40 #121 №2694703 
>>2694702
Хороший план. Эти компоненты находятся в самом шаблоне /bitrix/templates/XXX/header.php
Аноним 11/05/23 Чтв 10:06:01 #122 №2694704 
>>2694190
>>2694552
Кстати решение нашел. Надо создать файл с таким же путем как в ядре bitrix/templates/furniture_red/header.php в папке local/. Всё что в папке local, оно переписывает всё что в bitrix/

Так мы можем изменять компоненты, хедеры, футеры, всё что угодно.
Аноним 11/05/23 Чтв 10:07:38 #123 №2694706 
>>2694703
Да, я уже разобрался, спасибо.
Аноним 11/05/23 Чтв 12:16:24 #124 №2694852 
Анончики, сколько примерно нужно часов времени, чтобы выучить php + laravel?
Аноним 11/05/23 Чтв 12:19:45 #125 №2694858 
>>2694852
Примерно 1488.
Аноним 11/05/23 Чтв 12:24:58 #126 №2694869 
Кто работает бекендером, расскажите какие у вас типовые задачи и что было самое сложное(несколько примеров)
Аноним 11/05/23 Чтв 12:28:11 #127 №2694871 
>>2694858
ок, пойду у чатгпт тогда спрошу
Аноним 11/05/23 Чтв 17:59:15 #128 №2695249 
>>2694702
Все правильно делаешь, я потратил полгода на ларку устроился на первую работу к ипешнику и был уволен через 3 дня, типа недостаточно знаю.
Искать вторую работу на ларе хз сколько займет по времени, поэтому сейчас откликаюсь на стажировки по битриксу...
Жалею, что сразу не пошел в битрикс, сейчас бы уже полгода опыта было.
Аноним 11/05/23 Чтв 18:18:22 #129 №2695257 
>>2694286

У тебя, скорее всего, не включены assert в php.ini:

https://www.php.net/manual/ru/info.configuration.php#ini.assert.exception
https://www.php.net/manual/ru/ini.core.php#ini.zend.assertions

В PHP обычно тесты пишут не чистым кодом, а на фреймворках вроде phpunit. Но для твоей функции хватит и ассертов.

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

Лучше проверять решение другим методом - например, подстановкой решения в уравнение.
Аноним 11/05/23 Чтв 18:19:20 #130 №2695258 
>>2694336

> Раз уж пишешь ЮНИТ тесты, почитал бы что в пхп считается юнитом. Объект.

Неверно. Юнит это один независимый компонент программы, который не обязан быть объектом, это может быть и функция.
Аноним 11/05/23 Чтв 18:20:16 #131 №2695259 
>>2693640

В x86 нет автоматического выброса исключений при переполнении. То есть корректная программа требует больше инструкций, чем некорректная, игнорирующая ошибки при вычислениях. Глупо же сделано.
Аноним 11/05/23 Чтв 19:31:41 #132 №2695318 
>>2695259
Ты хотел сказать программные прерывания?

https://web.itu.edu.tr/kesgin/mul06/intel/instr/into.html
Аноним 11/05/23 Чтв 19:43:44 #133 №2695324 
>>2694869
переложи жсон из базы на фронт
переложи жсон приходящий с фронта в базу

накузьмичить минио в проект
Аноним 11/05/23 Чтв 19:53:15 #134 №2695328 
>>2695258
В теории CS да.
А на практике в современном пхп приложении "просто функции" взяться неоткуда. У тебя автозагрузщик работает по PSR-4, а по PSR-4 один файл = один класс. Да и по всем бест пракстис у тебя приложение - объект, который создается в index.php и все что внутри тоже объекты.

Тебе даже просто переменные $a, $b, $c негде получить кроме как из другого объекта. Если ты их из базы получил, то орм объекты возвращает, а если их пользователь ввел, то у тебя по PSR-7 RequestInterface.

Самое смешное что сам тест тоже объект и подчиняется тем же самым правилам и стандартам PSR.
Аноним 11/05/23 Чтв 22:42:44 #135 №2695513 
>>2695249
Не надо жалеть о прошлом, ты хотел лучшей жизни как и все мы. Главное, что ты что-то делал и в итоге придешь к работе. На битриксе очень часто бывают стажировки.

Например, YLab набирают каждые полгода, там конкурс обычно под конец 10 человек всего. Еще mcart (эм си арт), тоже где-то раз в полгода, тоже конкурс 10-15 человек. И есть еще и еще.

Можно самому прокачаться хотя бы немного, потом пробовать откликаться напрямую к компаниям через их сайт. Вот списки партнеров:
https://www.1c-bitrix.ru/partners/list.php?page=1#p1212092

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

Единственное, что их курсы очень тяжело читаются, но инфа годняк. Еще советую вступить в тг группу, в поиске прям напиши "битрикс", там их всего 2. Отвечают там быстро, если что непонятно. На глупые или легко гуглящиеся вопросы поливают говном обычно.
Аноним 11/05/23 Чтв 22:50:04 #136 №2695524 
>>2691630
Зачем пиздеть-то?

Должность как раз тимлид.
Аноним 11/05/23 Чтв 23:21:18 #137 №2695535 
>>2695524
>Должность как раз тимлид.
Харош. Малаца. Пиздишь как надо.

Теперь нужно научиться говорить по тимлидски.
1) Тимлид не говорит "Я делаю" или "Я работаю". Тимлид всегда говорит "мы работаем". Это что-то типа компенсации за то что сам он код уже не пишет. Он сидит на этих бесконечных ебаных совещаниях и сильно переживает что не может заняться "делом".

2) Тимлид хорошо относится только к проекту который сам стартанул. Про легаси тимлид говорит "мы сейчас переписываем это говно на 7.4".

Теперь можно продожить фразу:
Сейчас работаю лидом над финтех/банковским enterprise, зп 300. Переписываем это говно на актуальную версию, задавайте свои ответы.
Аноним 12/05/23 Птн 01:47:20 #138 №2695618 
>>2695318

Нет, я имел в виду команду сложения с проверкой на переполнение. INTO это отдельная команда, которую надо дописывать руками и у нее какие-то проблемы есть в современных версиях процессоров.
Аноним 12/05/23 Птн 06:27:35 #139 №2695635 
>>2695324
А если скажут пилить интеграцию вариативного товара с 1с?
Аноним 12/05/23 Птн 06:47:17 #140 №2695640 
>>2695635
>А если скажут
То будешь пилить
Какие видел магазины на пыхе, везде было разделение на товары и торговые предложения со своим набором характеристик.
Впрочем меня заставляли EAV пилить, когда я был почти стажером.

мимо
Аноним 12/05/23 Птн 13:27:21 #141 №2695942 
>>2695640
А как 1с выгрузка выглядить? Я как-то открыл эксель - там все на русском и строк дохуя и хуй пойми как это все парсить.
Вариативный товар так выглядит - денормализовано? И так же храняться в бд, в одной строке?
Кроссовки nike air max, белые, 45 размер 5500руб
Кроссовки nike air max, белые, 43 размер 5500руб
Кроссовки nike air max, красные, 36 размер 5500руб

Или так, нормализовано и все по таблицам?
Как вообще всю эту хуйню парсить и разносить?

И еще, как поддерживать синхронизацию и целостность данных, чтобы состояние товаров(в наличии, или нет, сколько купили и тд) из 1С отражалось на сайте. Это репликацию пилить или что. Не проще блядь одну БД иметь а не так и так?

И почему характеристики товаров в поле JSON в MySQL не хранят?
пилори 12/05/23 Птн 13:50:26 #142 №2695978 
Screenshot 2023-05-12 134346.png
У меня предъява к вашему гайду из шапки.
Автор(ы) написали что программисты говорят о "присваивании", но ведь в данном случае речь об "инициализации". Значение ведь мы не меняем, а задаём. Это конечно мелочь и в целом все говорят как попало, но всё таки в гайде имхо всё должно быть максимально точно, чтобы не порождать лишнюю путаницу у людей читающих это.
Аноним 12/05/23 Птн 19:41:44 #143 №2696472 
>>2695978
Инициализация это в жс например "let arr;", в пхп это знак $, Т.е. $arr это уже инициализация, а $arr = [1, 2, 3]; это уже и инициализация и присваивание.

Ну я вкатун конечно могу быть не прав но так я считаю.
Аноним 12/05/23 Птн 20:01:57 #144 №2696493 
>>2695978
>>2696472
Это не применимо к пыхе.
О инициализации может идти речь, когда есть и только декларация с обозначением типа.
Аноним 12/05/23 Птн 20:54:15 #145 №2696581 
>>2695942
>И еще, как поддерживать синхронизацию и целостность данных, чтобы состояние товаров(в наличии, или нет, сколько купили и тд) из 1С отражалось на сайте. Это репликацию пилить или что. Не проще блядь одну БД иметь а не так и так?
например через крон синхронизировать из бд 1с в бд твоего приложения/сервиса
Аноним 12/05/23 Птн 21:06:01 #146 №2696600 
>>2696493
$arr; - variable declaration
$arr = []; - variable initialization

Но в целом тебе не похуй ли? Ты же веб-макакер але. У меня на собесе спрашивали про функции для работы с массивами и строками лол. Мне кажется тут вот реально бессмысленно душнить.
Аноним 12/05/23 Птн 21:14:50 #147 №2696618 
>>2696600
Это выражение, а не декларация.
Мне-то похуй, это анон ГЛУБОКО РАЗБИРАЕТСЯ, потом тоже станет похуй.
Аноним 13/05/23 Суб 10:45:22 #148 №2696991 
Снимок экрана 2023-05-13 в 10.35.14.png
Нормально, чи не?
Задача: функции и новый айпад.
https://onlinephp.io/c/3e4c4
Аноним 13/05/23 Суб 11:08:42 #149 №2697008 
>>2695257
Кстати, зачем он постоянно отключен по-дефолту?

В чём причина, в скорости?

Кто-нибудь проводил измерения, насколько он тормозит?
Аноним 13/05/23 Суб 11:10:40 #150 №2697011 
>>2695535
Детский сад. Зачем мне соответствовать твоим фантазиям?
Аноним 13/05/23 Суб 11:44:55 #151 №2697035 
>>2696991
по хорошему, все эти значения надо выносить в констант, а в целом - норм
Аноним 13/05/23 Суб 14:40:03 #152 №2697178 
>>2697011
Так то не для меня. Я-то сразу выкупил что это чушь. Это на потом. Через пару тредов опять ворвешься и расскажешь про банковский продукт на пхп. Только теперь сделаешь поправочку на дату когда в пхп ооп добавили. И все поверят, и зааплодируют. И пхп станет наконец ЕНТЕРПРАЙЗ.
Аноним 13/05/23 Суб 15:34:18 #153 №2697234 
>>2697178

А щас не энтерпрайз?
Аноним 13/05/23 Суб 16:32:52 #154 №2697303 
>>2697234
Щас веб макакинг аля жава для бедных. А будет такое..
пилори 13/05/23 Суб 18:00:24 #155 №2697378 
изображение.png
Решил задачку про Палиндром пикрилом
Я макака?

https://ideone.com/w8HO1r
Аноним 13/05/23 Суб 18:26:30 #156 №2697400 
>>2697378
Да ты хуйню напесал. Можно было не выёбываться и просто в две строчки написать:

if (strrev($palindromeCheck) == $palindromeCheck) {
echo "Это палиндром";
} else {
echo "Это не палиндром";
}

А ты выёбывался как ебанный клоун с каунтами, ещё какой-то хуйнёй.
пилори 13/05/23 Суб 18:29:31 #157 №2697404 
>>2697400
А, это мемчик, да. А то я уже расстроился от такой резкой критики.
Аноним 13/05/23 Суб 19:36:59 #158 №2697457 
>>2697378
Почитай про Two Pointers Algorithm.
Аноним 13/05/23 Суб 19:49:41 #159 №2697464 
изображение.png
>>2697457
Почитал. Спасибо. Попробую завтра переписать задачку при помощи этого алгоритма.
Аноним 13/05/23 Суб 20:41:59 #160 №2697492 
>>2697035
Поясни, пожалуйста, я не понял, куда и как вынести.
Аноним 13/05/23 Суб 21:05:28 #161 №2697510 
>>2697303

Да уже ничем не хуже java, тупо маркетинг java хуй пробьешь, ни C#, ни Kotlin, ни PHP её не сдвинет.

А так языковых проблем мешающих хуячить на Java нет.

Это такая же хуйня с python на рынке CMS-решений. Питон как язык прекрасно для них подходит, но как бы занято
Аноним 13/05/23 Суб 21:12:55 #162 №2697520 
>>2697492

Он тебе грит чтобы ты значения, которые не меняются типа payout делал константами

const PAYOUT = 42;
echo PAYOUT;

Вырабатывай привычку сразу, если не меняется - константа. Глобальная переменная - плохо, константа - норм
Аноним 13/05/23 Суб 21:45:26 #163 №2697573 
>>2697510
>Да уже ничем не хуже java
Да ты ебанулся. А примеры приведешь?
Аноним 13/05/23 Суб 22:25:59 #164 №2697606 
>>2697520
ок, понятно
Аноним 14/05/23 Вск 00:36:15 #165 №2697819 
>>2697573

Какие примеры? Примеры когда сложный энтрпрайс левел софт писался бы на PHP?

Ну skyeng. Ну slack мессенджер.

Тут скорее нужны примеры че такого может Java а PHP не может.

Типизация? Завезли максимально удобную.
ООП-ха? Ну есть
Удобный менеджер зависимостей? Ну есть
Производительность? Не такая как у java, но норм. Да и язык не будет ботлнечить.

Чего тебе бля не хватает в пыхе для финтех-залупы какой-нибуь, лэл
Аноним 14/05/23 Вск 01:25:44 #166 №2697837 
>>2697520

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

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

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

Мне кажется, ты делаешь ошибку, думая, что в коде вообще не должно быть цифр или строк, а все их надо заменить на константы. Не надо.
Аноним 14/05/23 Вск 01:31:44 #167 №2697839 
>>2697837

Чел, тут смысл не в том "меняется ли оно по логике", а меняется ли оно по коду. Понятно что это тестовый пример, и в реале ты бы эти данные брал либо из запроса, либо из базы, либо еще откуда-то.

Просто типа хорошо делать привычку "ставить константу пока не запруфано обратное", потому что так ты легко видишь в каких частях кода состояние, а в каких просто константа
Аноним 14/05/23 Вск 01:32:28 #168 №2697840 
>>2697839
upd: в реале все что связано с деньгами бы делали на java
Аноним 14/05/23 Вск 01:32:32 #169 №2697841 
>>2695978

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

Мне кажется, если мы начнем разделять это на "инициализацию" и "присваивание", то мы все усложним для изучающих. В PHP переменные создаются автоматически, их не требуется объявлять или инициализировать.

Кроме того, как я понимаю, инициализацией называют задание начального значения переменной при объявлении. Но в PHP нет объявления переменных. Поэтому, наверно, термин "инициализация", взятый из низкоуровневых языков, здесь не применим.
Аноним 14/05/23 Вск 01:33:59 #170 №2697842 
>>2696991

решено верно, на твой развесистый if можно было бы заменить на функцию вроде min/max.
Аноним 14/05/23 Вск 01:35:49 #171 №2697843 
>>2697008

Я думаю, там заложена идея, что проверки должны делаться при тестировании, а в продакшене не нужны. Но как по мне, лучше вариант, когда проверки делаются всегда, чтобы кривой код сразу выявлялся, а не много месяцев спустя, когда окажется, что в БД и всех отчетах за последние 3 месяца неправильные данные.
Аноним 14/05/23 Вск 01:40:31 #172 №2697844 
>>2697378

Ты все переусложнил. В PHP много готовых функций и лучше использовать их. Например, для удаления пробелов подойдет str_replace или strtr.
Аноним 14/05/23 Вск 01:41:07 #173 №2697845 
>>2697378

А для переворота массива можно использовать функцию array_reverse.
Аноним 14/05/23 Вск 01:43:43 #174 №2697848 
>>2697510

Вообще, не соглашусь, Java конечно мощнее PHP, и в плане библиотек, и в плане возможностей языка. Он используется и в Google, и в Yandex. Но писать на Java медленнее, чем на PHP. А это значит, что разработка сайта обойдется бизнесу дороже.
Аноним 14/05/23 Вск 01:45:40 #175 №2697849 
>>2697839

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

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

Чтобы заменить число в данном примере кода на константу (читай: усложнить код), должна быть веская причина. Назови ее.
Аноним 14/05/23 Вск 04:02:03 #176 №2697862 
Screenshot 2023-05-14 034219.png
>>2697819
Slack давно сбежал с пхп на язык со статической типизацией и дженериками.
Ну skyeng. Что skyeng? Кто это блядь вообще? Это система управления аэропортом? Или учет финансов? Очередной сайтик, без нагрузки, без ответственности. Для пхп идеально.

>Типизация? Завезли максимально удобную.
Бля, не позорься. Вот какой должна быть нормальная типизация https://en.wikipedia.org/wiki/Algebraic_data_type Просто блядь посмотри на пикрелейтед и прикинь что люди уже много лет пишут вот так, а тебе и дальше сидеть в говне.

>ООП-ха? Ну есть
Пчел. Ридонли поля добавили когда? Год назад? А теперь даю инфу: половина ооп кода на пхп это геттеры. А может и больше половины нахуй. Дженерики введут аккурат к технологической сингулярности.

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

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

>Чего тебе бля не хватает в пыхе для финтех-залупы какой-нибуь, лэл
Инфраструктуры и сервисов, которые десятилетиями писались на той же жабе. Ты вот знаешь насколько симфони безопасен? А знаешь контору, которая проведет аудит и поручится за его безопасность? На жабе с этим проблем нет, есть компании, есть инструменты для аудита. Вот тебе и финтех, бабка.
Аноним 14/05/23 Вск 08:16:20 #177 №2697891 
>>2697819
Нет типа BigDecimal, соответственно нельзя хранить деньги без потери точности.
Аноним 14/05/23 Вск 12:12:55 #178 №2697997 
>>2697862
> знаешь насколько симфони безопасен? А знаешь контору, которая проведет аудит и поручится за его безопасность? На жабе с этим проблем нет, есть компании, есть инструменты для аудита

В этом году проходили, всё норм
Аноним 14/05/23 Вск 12:17:31 #179 №2698003 
>>2697997
Анус ставишь?
Аноним 14/05/23 Вск 12:31:19 #180 №2698010 
>>2698003
Хуи сосёшь? Ты чё тут на буквах такой дерзкий? Хули я тебе бесплатно должен что-то доказывать, когда есть тупо факты?
Аноним 14/05/23 Вск 12:43:36 #181 №2698031 
Шапка актуальная? Хочу себе сайт запилить на пыхе для личных нужд. Сам являюсь жс-макакой. Как у вас дела с типизацией? Как я помню пхп такая же динамическая дрисня как жс, но у нас есть тс, а у вас как дела с этим обстоят? Еще присматриваюсь к пхп как к области где смогу подучить ооп, это релевантный язык для таких целей?
Аноним 14/05/23 Вск 12:52:25 #182 №2698043 
>>2698031
Да, вполне актуальная.
В PHP настраивается типизация, можно включить строгую командой

php declare(strict_types=1)

в начале скрипта.
Аноним 14/05/23 Вск 13:02:40 #183 №2698060 
>>2697891
Пчел, не душни, bcmath изобрели

>>2697862

> Algebraic data type

В пхп не завезли какой-то синтаксический сахар из ФП. Никогда не понимал этот дроч на сахар, мне во

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

Мне composer нравится больше чем те с которыми я пробовал работать, npm, pip, maven

> Пчел. Ридонли поля добавили когда? Год назад? А теперь даю инфу: половина ооп кода на пхп это геттеры. А может и больше половины нахуй. Дженерики введут аккурат к технологической сингулярности.

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

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

А как в go с дженериками, эксепшонами, и adt? А ООП там как вообще поживает?

Пиздец дрочь на фичи и вкусовщину. Прочему в каком-нибудь go работать с json-ом и маршалить и размаршивалить его это такая ебучая блять боль? Почему там if err != nil?

Че нельзя сделать удобно как array в php, изи конвертишь в json и из него, ваще каеф.

Да и в java JSONObject это какой-то ад. Просто можно скопировать из PHP?

> Ты вот знаешь насколько симфони безопасен?

Не жаловались

> На жабе с этим проблем нет, есть компании, есть инструменты для аудита.

Безопасность зависит от языка программирования. У меня все
Аноним 14/05/23 Вск 13:08:14 #184 №2698068 
>>2698043
Ты хотел сказать "В начале каждого файла".
Аноним 14/05/23 Вск 13:11:39 #185 №2698074 
>>2698068
Он же заражающе работает.
Аноним 14/05/23 Вск 13:12:58 #186 №2698075 
>>2698060
>Безопасность зависит от языка программирования. У меня все
>Mixed передай
Вот тебе бабка и финтех. Вот и ентерпрайз.
Аноним 14/05/23 Вск 13:14:18 #187 №2698077 
>>2698074
Поражающе. Погугли что пхп гении говорят о том чтобы можно было strict types Один раз выставить как параметр.
Аноним 14/05/23 Вск 13:41:51 #188 №2698115 
изображение.png
>>2697844
>>2697457
Думаю теперь у меня хорошо получилось.
https://ideone.com/iE2T2P
Аноним 14/05/23 Вск 13:41:57 #189 №2698116 
Блядь, как же Зандстра тяжело идет, пиздец просто. Вот паттерн Декоратор и казалось бы что тут сложного, но этот уебан начинает рассказывать предысторию, пре клетки в игре цивилизации и как она модифицируеться, короче тема паттерна где-то в облаках, а твой мозг загружаеться абстракциями той игры ебаной а не паттерном и вот когда к паттерну все подходит, мозг тупо перегружен, оперативка забита. Пиздец и написан еще как-то по уебански
Аноним 14/05/23 Вск 14:11:27 #190 №2698142 
>>2698116
А нахуй в 2к23 читать КНИГИ? Еще может бумажную купил, лол? Все уже давно есть на сайтах, ютубе и тиктоке, с интерактивностью и плейграундами.
Аноним 14/05/23 Вск 14:12:39 #191 №2698143 
>>2698142
Поют и танцуют про паттерны?
Аноним 14/05/23 Вск 14:21:39 #192 №2698151 
>>2698060
Фишка го не конструкциях языка, а в том, что на нём можно быстро гонять байтики и пишутся программы проще и быстрее, чем в си.
Аноним 14/05/23 Вск 14:24:30 #193 №2698153 
>>2698116
Обязательно вообще эту Зандастру читать? Альберт сказал, что ничего читать не надо, он всё на курсе даст.
Аноним 14/05/23 Вск 14:41:16 #194 №2698174 
>>2698151

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

>>2698075
> Вот тебе бабка и финтех. Вот и ентерпрайз.

Меня вчера взломали хакеры, потому шо миксд передал
Аноним 14/05/23 Вск 15:09:15 #195 №2698216 
>>2698174
>Меня вчера взломали хакеры, потому шо миксд передал
Ты передал хуй пойми че хуй пойми куда. Так и пишется банковский софт.
Аноним 14/05/23 Вск 15:20:22 #196 №2698236 
>>2698216
Так в PHP генерики через phpdoc делаются давно уже.
Аноним 14/05/23 Вск 15:41:39 #197 №2698268 
>>2698236
>через phpdoc
Чел, а у тебя в коде private используется? Так ты замени все private на public и в phpdoc указывай что это на самом деле private. Что тут может пойти не так, ты же в КОММЕНТАХ написал.
Аноним 14/05/23 Вск 15:46:36 #198 №2698274 
Бля, пацаны, мне грусно. Хочу писать финтех-тырпрайз. Куда ливать с PHP? Java? Go?
Аноним 14/05/23 Вск 15:54:33 #199 №2698284 
>>2698274
А зачем тебе тырпрайз? Денех мало?
Аноним 14/05/23 Вск 15:56:02 #200 №2698287 
>>2698284

Хочется быть настоящим программистом. Заебался перекладывать json из запроса в базу/кафку/еще куда-то.

Хочется настоящего сурового айти
Аноним 14/05/23 Вск 16:01:53 #201 №2698294 
>>2698287
Про кафку напиздел. Нет у тебя кафки. Таких врунишек как ты в настоящие программисты не пустят.
Аноним 14/05/23 Вск 16:21:52 #202 №2698313 
>>2698268
Для комментов есть всякие чекеры, а они то в банкософте должны быть? Не?
Аноним 14/05/23 Вск 16:24:53 #203 №2698317 
>>2698313
Так ты private в public уже начал переделывать или че?
Аноним 14/05/23 Вск 17:15:55 #204 №2698369 
>>2698174
На на РНР скорость выполнения программ ниже. Разработчикам приходится писать миллион встроенных функций, чтобы компенсировать медленное выполнение программ на РНР.
Аноним 14/05/23 Вск 19:13:15 #205 №2698480 
>>2698294
>Про кафку напиздел. Нет у тебя кафки

Есть, а хуле такого? Инструмент и инструмент. Но я с ней не работаю напрямую, там ж для этого код уже написан. Я интеграцией внешних платежек занимаюсь, тема довольно однообразная и тупо ебка json'а по документации.

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

Чивооооооооооо
Аноним 14/05/23 Вск 20:31:37 #206 №2698558 
Нужны ваши советы, 5 лет страдал хернёй в гос.конторе, поддерживал код на php 5 и jquery. Фреймворки не щупал, mvc тоже. Подскажите как сейчас выстроить правильный путь, вроде не совсем новичок, а вроде по текущим меркам нихрена не знаю
Аноним 14/05/23 Вск 21:01:02 #207 №2698596 
>>2698558
Вкатывайся в Bitrix, плавно перейдешь от того что ты знаешь (поддержка сайтов на jquery и php 5) к современным проектам на D7 Framework.
Аноним 14/05/23 Вск 21:08:02 #208 №2698602 
Аноны, знакомый попросил ему написать интернет-магазин для своего бизнеса. Я понимаю, что интернет магазины интернет магазину рознь, но все же, сколько с него брать?
Аноним 14/05/23 Вск 21:28:25 #209 №2698623 
>>2698602
цена https://aspro.ru/ + лицензия на битрикс

и после этого за каждый час свою сумму, начиная с установки
Аноним 14/05/23 Вск 21:30:58 #210 №2698626 
>Есть, а хуле такого? Инструмент и инструмент.
Видишь, я же говорил что нету у тебя кафки. Такие глупые вопросы задаешь.
Инструмент ебать. У тебя нет задач под этот инструмент. Ты еще напизди что у тебя хадуп.
Аноним 14/05/23 Вск 21:52:35 #211 №2698647 
>>2698623
Спасибо.
Аноним 14/05/23 Вск 22:54:10 #212 №2698720 
>>2697849
>Назови ее.
что такое 1.04, 1.03, 1.02, к чему оно относится?
Аноним 14/05/23 Вск 22:59:53 #213 №2698735 
>>2698153
Что за Альберт? Можно сссыль?
Аноним 14/05/23 Вск 23:02:51 #214 №2698739 
>>2698294
>Про кафку напиздел. Нет у тебя кафки.
Есть и кафка и кроллик, но у кафки проблема в либах поддерживающих её и почти полном отсутствии информации в случае, если что-то пошло не по плану.
Аноним 15/05/23 Пнд 00:13:05 #215 №2698828 
>>2698739
>Есть и кафка и кроллик, но у кафки проблема
Да, в природе есть кафка. И у кафки дохуя проблем. А чтобы получить пользу нужно хотя бы миллион сообщений в секунду. Которые ты на пхп хуй отправишь и получишь, потому что пхп клиенты кафки нихуя не держат коннект и не поддерживают фичи актуальной версиии. И у тебя каждый ack будет 300мс отрабатывать.

Но самая главная проблема что у тебя никакой кафки нет, и нахуя ты пиздишь непонятно.
Аноним 15/05/23 Пнд 00:52:05 #216 №2698852 
>>2687463 (OP)
Я ебнулся да, почему у меня результат 15.05.2023?

$now = time();

$tomorrow = $now + 86400;

$format_str = 'd.m.Y H:i:s';

$result = date($format_str, $tomorrow);

echo $result;
Аноним 15/05/23 Пнд 00:59:37 #217 №2698854 
>>2698852
Дату машины чекай
Аноним 15/05/23 Пнд 01:02:48 #218 №2698855 
>>2698852
Скорее всего, у тебя таймзона utc, там ещё 13.
Алсо, strtotime('+1 day', time())
Аноним 15/05/23 Пнд 08:14:56 #219 №2698936 
>>2698735
https://pr-of-it.ru/teachers/1.html
Аноним 15/05/23 Пнд 10:01:50 #220 №2699046 
ссылка на учебник не работает
Аноним 15/05/23 Пнд 13:03:36 #221 №2699207 
>>2699046
Да :(
И как мне теперь учиться
Аноним 15/05/23 Пнд 13:46:15 #222 №2699277 
>>2699207
http://www.php.net/ && ( https://dev.1c-bitrix.ru/learning/ || https://developer.wordpress.org/ )
Аноним 15/05/23 Пнд 14:17:17 #223 №2699312 
>>2699277
пох, просто подожду пока встанет сайт с уроками
он же встанет?
Аноним 15/05/23 Пнд 14:45:35 #224 №2699333 
>>2699312
Можно зайти на гитхаб ОПа и скачать этот учебник в архиве, распаковываешь и запускаешь index.html
Аноним 15/05/23 Пнд 19:15:11 #225 №2699774 
>>2698828
я не тот анон с которым ты спорил, но я был на проекте с кафкой
Аноним 15/05/23 Пнд 19:48:33 #226 №2699810 
>>2699774
А я сидел в одной комнате с президентом. Вывод из этого какой? Я с ним знаком? Нет. Я могу как-то этим фактом воспользоваться? Нет. Ну и нахуй ты это высрал?
Аноним 16/05/23 Втр 02:02:00 #227 №2700147 
image.png
image.png
Почему битриксоиды такие консервативные? КАКИЕ НАХУЙ 720p в 2020+ году АЛЛО? Есть редкие видосы где 1080p, но блять серьезно, что им мешает сделать фуллхд, а не этот обрезок? Я же так ослепну!!!

Только зумер с канала "Я кодер" сделал фуллхлд. Все скуфы делают почему-то 720p.
Аноним 16/05/23 Втр 03:29:39 #228 №2700156 
>>2700147
Ебать, чуть не блеванул с кода на пиках.
Любому хуесосу, который будет пиздеть что битрикс это нормально, нужно тыкать этими скриншотами в ебало и хуярить по почкам.
Аноним 16/05/23 Втр 06:25:04 #229 №2700188 
>>2700147
Прежде всего это не битриксоиды, а скуфы. Вопрос зачем ты смотришь это обучение по легаси? Ты реально хочешь писать вот этот код? Лучше смотри по D7 хотя бы что то, у нас например React на фронте, а битрикс на бекенде.

>>2700156
Битрикс это не просто нормально, это вообще очень круто, древний код, если написан без хаков, нормально работает на новых версиях, и скуфы в 2к21 без переучивания могут продолжать через FileZilla писать свои компонентики.
Аноним 16/05/23 Втр 10:35:55 #230 №2700349 
>>2700156

Что не так?

Ты на работу идешь за деньгами, чел. На PHP весь код хуйня
Аноним 16/05/23 Втр 12:39:28 #231 №2700529 
Screenshot 2023-05-16 122719.png
>>2700188
А какого хуя пикрелейтед в шаблоне делает? Это приколы от скуфа или он просто делает как в битриксе принято?

На пхп без хаков писать нельзя. https://bugs.php.net/bug.php?id=62004 Вот охуенный баг, который не позволяет перейти на вторую строку в файле. Пофикшено только в восьмой версии. Везде где нужно прочитать вторую строку файла используется хак. Че там в древнем говнокоде битрикса кроется одному аллаху известно.
Аноним 16/05/23 Втр 12:44:25 #232 №2700534 
Screenshot 2023-05-16 122600.png
Screenshot 2023-05-16 123950.png
>>2700349
Когда в вакансии пишут ООП, то хотят чтобы пикрелейтеда в коде не было. Это не читаемая поебень. Никаких денег не хватит чтобы на ежедневной основе нырять в этот кал. А самое главное это нахуй не надо, вокруг полно нормальных компаний с нормальными проектами. Даже интересные бывают.
пилори 16/05/23 Втр 15:23:32 #233 №2700741 
Блядь, ваще не могу въехать в регулярки. Хоть убей. Эта ебучая проверка как будто ваще абсолютно рандомно происходит. Я просто смотрю на то, что написал и не могу понять как она из этого где-то засчитывает, а где-то не засчитывает. Просто, блядь, прочитываю раз за разом свой шаблон и НЕ ВИЖУ как ебучий if там находит единицу
(задача с номерами)

чо покурить чтоб въехать?
Аноним 16/05/23 Втр 15:27:24 #234 №2700748 
>>2700741
https://regex101.com/
Аноним 16/05/23 Втр 15:31:17 #235 №2700750 
>>2700534
Простейший код, разобраться можно сразу же после изучения циклов и if, пишешь не напрягая себя всякими абстракциями, скорости работы не требуют.

>>2700529
Не вижу на скрине чего то ужасного, как ты вообще живешь если на все так реагируешь?
Аноним 16/05/23 Втр 15:33:32 #236 №2700755 
>>2700748
Только ещё больше запутывает. Вставляю туда свой шаблон, он ваще матчей не видит (я про заготовку из урока, где уже введены строки номера). В коде - матчи видит (даже больше чем надо). Обратные слеши нигде не использовал, если что.
Аноним 16/05/23 Втр 15:36:26 #237 №2700757 
>>2700755
>>2700748
А нет, то проблема с флагами, которые слетают если скопировать что-то в поле. Окей, флаги проставил.
Теперь по 3 матча на одну строчку. Это как вообще.

В общем, как и сказал, этот сайт запутывает ещё сильнее, ибо помимо регулярных выражений нужно ещё разбираться как работает конкретно этот сайт. Мне бы пока разобраться просто с кодом.
Аноним 16/05/23 Втр 15:55:50 #238 №2700775 
pic1.jpg
pic2.png
Добрый день.
Подскажите по двум вопросам на пиках (1, 2) соответсвенно:
1й - почему дублируется вывод одной и той же переменной при дебаге.
2й - почему phpstan показывает ошибку "Parameter #3 $subject of function preg_replace expects array|string, string|null given.", я понимаю, что функция preg_replace может вернуть null в случае ошибки, но даже если не будет совпадения с регуляркой в переменной $result будет присвоено значение из $matches.

>>2700757
Я всегда проверяю регулярки на regex101, без этого сайта сложнее разобраться, а осваивать его там нечего.
Аноним 16/05/23 Втр 16:13:58 #239 №2700803 
>>2700775
Ну хуй знает. Я вот проставил в своей регулярке ^ и $. Это значит что регулярка должна всей строке соответствовать, так? Этот сайт мне в одной строчке номера находит в итоге по 2 матча. Каким образом он это умудряется делать?
Аноним 16/05/23 Втр 16:19:00 #240 №2700808 
>>2700803
сложно прочитать твои мысли, отправь сюда ссылку на свою регулярку на regex101 и будет понятно что там и как
Аноним 16/05/23 Втр 16:21:50 #241 №2700812 
>>2700808
Да мне и самому сложно. Я уже сотый раз переписываю и если честно, то в голове каша шо пиздец.
Притом, что я уже второй день пытаюсь осилить эту задачу.
https://regex101.com/r/TOB6z5/1
Аноним 16/05/23 Втр 16:32:03 #242 №2700828 
>>2700750
>Простейший код, разобраться можно сразу же после изучения циклов и if
Так ты разобрался? Что проверяет этот код?

>Не вижу на скрине чего то ужасного, как ты вообще живешь если на все так реагируешь?
Живу НОРМАЛЬНО. Хожу по тротуару а не посреди шоссе, ем ртом, а не жопой. Невероятно скучная жизнь.

Тебе сука в каждой книге от википедии до сраного букваря написали: представление не обрабатывает введённые данные пользователя. НЕ ОБРАБАТЫВАЕТ СУКА. Не шлет запросы в базу, нихуя не вычисляет. Шаблон берет данные и выводит их на экран.

Потому что цель всех этих паттернов и MVC отделить поведение. Чтобы было это поведение в одном месте. Чтобы работать с ним было проще.
Аноним 16/05/23 Втр 17:11:22 #243 №2700894 
>>2700534
Почему в РНР так выделяют ООП? В других языках тоже есть ООП, но в вакансиях про это не пишут.
Аноним 16/05/23 Втр 17:13:17 #244 №2700898 
Снимок экрана 2023-05-16 в 16.44.21.png
>>2700812
Совпадение регулярного выражения должно быть для всей строки, а у тебя частичные совпадения.
Вертикальная черта (ИЛИ) здесь работает так - найти совпадение слева от начала шаблона до нее или справа от нее до конца шаблона.
Также у тебя допускаются пробелы, а если их будет не 1, а больше (т.е. должен быть квантификатор *)?

Сначала раздели задачу:

найти +7 ИЛИ 8 - это одна группа (то что в круглых скобочках). Также между +7 могут быть пробелы (от 0 до много), перед 8 тоже самое;

- после 1й группы перед цифрой - могут быть пробелы, скобки, тире делаешь символьную группу[]
потом цифра, потом снова эта символьная группа и все повторяешь десять раз.

Регулярка сложновата для начала, я на ней также подвисал. Есть курс по регуляркам на торрентах от webformyself (можно посмотреть на 1.5 скорости), есть книги Бен Форта (простая быстро осваивается) и Джефри Фридла (сложная для новичка).

В моем 1й вопросе (там где 2 скрина) есть эта регулярка, как вариант, так как можно делать по разному.
Аноним 16/05/23 Втр 17:13:40 #245 №2700899 
>>2700894
Потому что пхп был ооп не всегда, и до сих пор существуют вот такие говна >>2700147 .
Аноним 16/05/23 Втр 17:39:39 #246 №2700943 
>>2700898
>или от начала шаблон и до конца
А как тогда вообще мне ставить это ИЛИ? В том-же +7 или 8. Получается он либо найдёт просто +7 без ничего, либо полные номера с 8...?
>не один
А зачем ставить больше одного пробела?
Аноним 16/05/23 Втр 18:15:56 #247 №2700997 
>>2700828
>Так ты разобрался? Что проверяет этот код?
Ну когда я был начинающим битриксоидом, то и сам такое писал, мозг не умер, поэтому ничего сложного не вижу и сейчас.

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

MVC это не какой то идеал к которому все должны стремиться.
пилори 16/05/23 Втр 18:23:19 #248 №2701004 
image.png
Бля, ну наконец у меня получилось.

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

Оцените, аноны, а то мож снова хуйню сделал.

https://ideone.com/2jpnDr
Аноним 16/05/23 Втр 18:27:13 #249 №2701012 
>>2700997
Ты сракой не виляй. Что проверяет этот код?

>MVC это не какой то идеал к которому все должны стремиться.
Дожили блядь. Какой нахуй солид, какие нахуй стратегии. Дегенераты не в состоянии MVC освоить.
Аноним 16/05/23 Втр 19:42:06 #250 №2701159 
>>2699810
а нахуя ты высираешь что кафки нет пиздаболище
Аноним 16/05/23 Втр 19:51:42 #251 №2701175 
>>2701004
Убери лишние экранирующие бекслеши и внеси в один символьный класс скобки (), и используй квантор {}, чтобы не повторять одно и тоже 10 раз.
[]\d[]{}
Аноним 16/05/23 Втр 19:57:31 #252 №2701180 
>>2701159
Слепой ты хуесос. Я написал что у сеньора пиздабола нет кафки. Он с ней блядь не работает.
Аноним 16/05/23 Втр 21:13:35 #253 №2701264 
>>2701012
Если бы MVC и прочая чушь на которую ты молишься была бы так полезна, то программисты используя все это обошли бы битриксоидов в несколько раз, и разрабатывать новые проекты на нем стало бы просто невыгодно. Но этого не происходит, как думаешь, почему?

И вообще, вот слова создателя PHP:
У нас есть такие вещи, как приватные свойства. У нас есть абстрактные методы. У нас есть все эти вещи, которые ваш учитель информатики сказал вам использовать. Меня вообще не волнует эта хрень.
Аноним 16/05/23 Втр 22:14:49 #254 №2701324 
>>2701264
База. Согласен на сто процентов.
Пхп каловый язык для диких макак, которые право от лево не отличают. Мвц шмвц, правила какие-то. Правила для долбоебов. А абстракции для кончелыг.
Мы - битриксоиды на работе катаемся ебалом по клавиатуре, а вечером сморим серики про ментов под сиську пива. Мы веб элита, нам он и нахуй не нужон мвц ваш.
Аноним 16/05/23 Втр 22:24:39 #255 №2701332 
>>2701324
Именно так, пока дауны дрочат свои паттерны, мы просто вкатываемся на изичах, через три года получаем сертификаты и зп в 200к, спокойно делаем работу, в 17:00 закрываем крышку ноутбука и живем, пока цивилизованные макаки отличающие лево и право, и дрочат свои фреймворки в свободное казалось бы время.
Аноним 16/05/23 Втр 22:30:47 #256 №2701335 
>>2701332
Согласен. Ассенизатором тоже нужно кому-то работать. А если говном воняет, то просто шампунь подушистее надо купить.
Аноним 16/05/23 Втр 22:31:27 #257 №2701336 
>>2701324
>>2701264
>>2701012
>>2700997
>>2700828
Вы бы хоть разобрались в вопросе. В битре mvc немного иначе работает. Тут компонент отвечает и за представление и за контроллер.

>>2700529
Во-первых, этот чел не скуф, ему где-то 25-35 лет. Во-вторых, он сделал это, потому что не знал, как приписать класс к форме, хотя это можно реализовать иначе, но тоже будет по качеству около этого кода. Так что да, битра в редких случаях диктует свой код так сказать. С другой стороны можно и не подключать хедер форму от модуля битрикса, а оставить свою.
Аноним 16/05/23 Втр 22:34:00 #258 №2701337 
>>2701335
Хз, мне нравится, открыл файл через FileZilla, поредактировал и все. Ты то небось постоянно свои фабрики абстраные дрочишь, я бы поспорил где хуже. Код, повторяюсь, примитивный, в любом компоненты битрикса примерно такой же.
Аноним 16/05/23 Втр 22:39:13 #259 №2701341 
Screenshot 2023-05-16 123950.png
>>2701337
Хуйлуша примитивный. Ты мне так и не расшифровал что это за поебень на пике.
Аноним 16/05/23 Втр 22:48:34 #260 №2701354 
>>2701341
Разве я должен что то разъяснять такому хуесосу как ты? Нет конечно. Получи хотя бы базовые сертификаты 1С, потом может я обращу на тебя внимание. Есть ощущение что ты шиз который работает только корзиночкой у мамы.
Аноним 16/05/23 Втр 22:56:12 #261 №2701360 
>>2701336
>Во-вторых, он сделал это, потому что не знал, как приписать класс к форме
Нихуя подобного. Он это сделал потому что ему тег формы какого-то хуя в $arResult пришел. И моя претензия была не в том что он его поменял, а в том ГДЕ он это сделал.

>Так что да, битра в редких случаях диктует свой код так сказать.
Это "битра" ему надиктовала вместо нормального объекта с человеческими названиями свойств и комментариями высирать в шаблон уебищный массив $arResult? Это "битра" ему надиктовала вместо $form->printErrors() высирать эти ебанутые условия?
Аноним 16/05/23 Втр 22:56:51 #262 №2701361 
>>2701354
Просто ты нихуя не понял, вот и бычишь.
Аноним 16/05/23 Втр 23:01:58 #263 №2701364 
>>2701361
Чел, ты агрессивное хуйло это раз, во вторых у меня все сертификаты при себе, в третьих что я тебе должен сказать про этот код помимо того что он меняет поля массива от CIblockProperty? Мне че полностью его видео смотреть разбираться? Ты по 2 строкам из Spring весь контекст понимаешь?
Аноним 16/05/23 Втр 23:34:20 #264 №2701393 
14122079907939.jpg
>>2701364
>Мне че полностью его видео смотреть разбираться?
В этом и разница между читабельным кодом и нечитабельной хуйней, еблан ты сертифицированный.

Вот этот дегенерат сука.
https://dev.1c-bitrix.ru/support/forum/forum6/topic52271/

$propertyValue->isString() || $propertyValue->isNumber()

Объединяются в метод isPrintable()

if($propertyValue->isPrintable()) {
$property->changeType($propertyType::TEXTAREA_PROPERTY)
}

Оборачивается в метод disableTextareaEditor(), где в комментарии, сука ты ебаная, объясняется что мы тут костылим.

А в шаблоне одна строчка. Одна блядь строчка.
$property->disableTextareaEditor()

Тебе твои сертификаты надо, собака сутулая, на лбу вырезать, чтобы от тебя нормальные люди за сто метров на другую сторону улицы переходили.
Аноним 17/05/23 Срд 02:22:34 #265 №2701519 
>>2701393
Не пойму ты что доказать-то хочешь? Всё работает, ну и что костыли, они и в твоём сраном спринге имеются, и в современном голенге будут. Это работа, расслабься, просто делай её как тебе велят боссы и всё. Ты как сумасшедший дотер рассуждаешь и кричишь всюду, что дота говно, но сам играешь и каждый день хочешь еще.
Аноним 17/05/23 Срд 02:59:27 #266 №2701530 
>>2701519
>Всё работает, ну и что костыли
Ты, мудила гороховый, со всему своими сертификатами нихуя не понял что там в коде происходит. И никто бы никогда не понял, если бы этот говнокодер на форуме не спросил.

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

Одно радует, в годный проект таким хуесосам вход заказан. А сертификаты битрикса ничего кроме смеха у нормальных людей не вызывают.
Аноним 17/05/23 Срд 09:30:09 #267 №2701626 
autoload.jpg
Почему не работает автозагрузка? Что я делаю не так?
Аноним 17/05/23 Срд 09:36:01 #268 №2701630 
>>2701626
Читать не умеешь?
Аноним 17/05/23 Срд 09:53:06 #269 №2701646 
>>2701630
Альберт ещё не рассказывал про spl и у него обычный __autoload работает.
Аноним 17/05/23 Срд 10:11:48 #270 №2701666 
>>2701646
Откатывайся на какой-то древний похапе тогда, где эта хуйня не была депрекейтед.
Аноним 17/05/23 Срд 10:58:29 #271 №2701714 
>>2701646
Сколько ты заплатил за курс? И какого хуя вообще? Тебе не хватило шапки?
Аноним 17/05/23 Срд 11:11:18 #272 №2701723 
>>2701714
Я пират, скачал курс с торрентов и смотрю. Потом пытаюсь делать домашки. Если бы я заплатил за курс, то у Альберта бы и спросил.
Аноним 17/05/23 Срд 12:16:33 #273 №2701777 
splautoload.jpg
>>2701666
Написал spl сам. Вроде даже работает.

Только не понял, нафига было менять? Чем старая функция была хуже? Лучше бы делали автосборщик типа мавена как в джаве, а не эти костыли.
Аноним 17/05/23 Срд 12:25:04 #274 №2701785 
2023-05-17132414.png
>>2687463 (OP)
>даже делаем простые сайты!

что по вашему простые сайты? Я вот написал свой сайт с нуля (PHP,Bootstrap,Mysql,JS) радиокаталога с базой данных, интересно какой это уровень Middle или Junior?
Аноним 17/05/23 Срд 12:27:46 #275 №2701787 
>>2701393
То есть ты по двум строкам из Spring и Symfony точно скажешь что и для чего они делают? Нет конечно. Видно что ты завистливый дурачек которые изучает свои паттерны и никуда устроиться не можешь, получил бы сертификат, может взяли бы тебя джуном, возможно даже к нам в компанию, поучил бы тебя как код писать. А то тебя даже примитив пугает. По ссылке не ходил.
Аноним 17/05/23 Срд 12:28:06 #276 №2701788 
>>2701785
Это уровень вебмакака-хелловорлд.
Аноним 17/05/23 Срд 12:29:18 #277 №2701789 
>>2701785
Это простой сайт, но ты можешь уже с ним устраиваться, тыкать вместо диплома.
Аноним 17/05/23 Срд 12:34:01 #278 №2701792 
>>2701788
покажи уровень не вебмакаки-хелловорлда

>>2701789
То есть на должность Junior'a в принципе подойдет?
Аноним 17/05/23 Срд 12:41:44 #279 №2701797 
>>2701792
Что-то понавороченнее пары запросов и пагинации.
Это сейчас даже до круда не дотягивает.
Аноним 17/05/23 Срд 12:41:47 #280 №2701798 
>>2701792
>То есть на должность Junior'a в принципе подойдет?
Возможно Intern если опыта работы нету, но да, можешь устраиваться, откликаться смело.
Аноним 17/05/23 Срд 12:46:00 #281 №2701803 
>>2701798
спасибо

>>2701797
это не мой потолок, просто нужны задачи.
Аноним 17/05/23 Срд 13:03:36 #282 №2701817 
>>2701175
>лишние
А где они лишние? В уроки написано, что нужно двумя бекслешами экранировать.
>внеси в один символьный класс скобки ()
Это не понял.
Аноним 17/05/23 Срд 13:13:12 #283 №2701832 
image.png
>>2701175
>>2701817
Всё, понял про скобки. И бекслеши убрал, они сейчас в двойном количестве не нужны, что-ли? Или я неправильно понял урок...
https://ideone.com/Mo4BK6
Аноним 17/05/23 Срд 13:22:42 #284 №2701852 
>>2701832
В классах вобще не нужно экранирования, только для ] и - не в начале или конце, если он нужен как символ, а не обозначение диапазона.
пилори 17/05/23 Срд 13:56:45 #285 №2701903 
image.png
>>2701852
Понял. Сделал ещё короче. Спасибо за подсказки.
пилори 17/05/23 Срд 14:27:04 #286 №2701934 
Screenshot 2023-05-17 142520.png
Почему в уроке на пункте про большие строки, точка с запятой ставится на отдельной от EOF строки, если всё работает и так - EOF;
Аноним 17/05/23 Срд 14:47:32 #287 №2701949 
>>2701934
В пхп оно пришло транзитом через перл из шелла. В обоих вообще строго должна быть строчка только с этим идентификатором, чтобы оно было валидным.
Видимо, автор перестраховывается, имев или имея дело с ними ещё и там. В пыхе менее строго.
Задачи про граммаНаци пилори 17/05/23 Срд 18:31:58 #288 №2702293 
image.png
image.png
Делал под конец дня и мозги уже изрядно кипели, есть чувство что нахуевертил говно-кода даже для себя. Или всё таки пойдёт? Или переделать? Вроде работает
https://ideone.com/rnDA2e - вывод ошибки
https://ideone.com/4VLZ34 - исправление и вывод двух версий текста

Не всматривайтесь в текст большой строки, он потраченный
Аноним 17/05/23 Срд 20:40:39 #289 №2702412 
image.png
>>2702293
Можешь засунуть регулярки в массив, чтоб не дублировать код.
Аноним 17/05/23 Срд 22:57:24 #290 №2702616 
Планирую свичнутся с лары в симфони, какие подводные?
Аноним 17/05/23 Срд 23:03:17 #291 №2702619 
>>2702616
Никаких. Что ты вообще услышать-то хочешь? Различия можешь в интернете почитать. Будет первое время непривычно. Если ты макакер, то может быть сложно будет.
Аноним 17/05/23 Срд 23:21:56 #292 №2702637 
>>2702619
>Что ты вообще услышать-то хочешь?
Какие подводные при свиче с одного фреймворка на другой, не будут ли на собесах кривить лицо из-за опыта исключительно с другой технологией?
Аноним 17/05/23 Срд 23:27:31 #293 №2702644 
>>2702637
С определенного момента в карьере тебя про фреймворки вообще перестанут спрашивать. Ну было и было, а у нас вот так.
Аноним 17/05/23 Срд 23:31:10 #294 №2702645 
>>2702644
Спасибо, няш, это и хотел узнать.
Аноним 18/05/23 Чтв 02:56:39 #295 №2702762 
>>2702645
И кому ты веришь? Какому-то залётышу или тупо вкатышу? Ты же просто блять хотел чтоб тебе это написали. В чём поинт, мэн?
Аноним 18/05/23 Чтв 05:04:26 #296 №2702779 
https://github.com/awesomebitrix/awesome-bitrix

Вкатунцам в битрикс.
Аноним 18/05/23 Чтв 08:30:11 #297 №2702796 
Обязательно на линух перекатываться чтоб на пхп кодить?
Аноним 18/05/23 Чтв 11:04:27 #298 №2702917 
Как выкатиться из PHP? Заебался писть на неполноценном языке.

>>2702796
> Обязательно на линух перекатываться чтоб на пхп кодить?

Если у тебя новая винда, считай линукс ты уже себе поставил, лол. WSL-ки хватает
Аноним 18/05/23 Чтв 14:02:43 #299 №2703093 
>>2702917
WSL медленная, особенно в артизане.
Аноним 18/05/23 Чтв 15:23:43 #300 №2703193 
>>2703093
>WSL медленная, особенно в артизане.

Тогда ставь линукс, нахуя тебе винда если у тебя комп игры не тянет
Аноним 18/05/23 Чтв 16:02:22 #301 №2703233 
>>2702796
Для начала можно поставить какой-нибудь Денвер или ОпенСервер
Аноним 18/05/23 Чтв 16:50:18 #302 №2703305 
>>2703233
Говорят попен сервер это кал из 2к10.
Аноним 18/05/23 Чтв 17:04:35 #303 №2703314 
>>2703305
Денвер это вообще из нулевых, лол.
пилори 18/05/23 Чтв 18:14:25 #304 №2703451 
image.png
image.png
Не могу решить задачу про очепяточников. А именно не могу понять, как мне определять какое слово русское, а какое английское. Пикрил - то что я уже сделал, а именно научился находить слово с опечаткой и кидать его в массив.
Первое что приходит на ум - подсчитать количество русских и английских букв, каких букв больше, значит те буквы мы и не трогаем, а другие меняем.
Но что если будет слово, например:
Of
Букв одинаково. Русская о, в английском слове. Как я должен в программе понимать что это именно о нужно заменить, а не f. Вариант про то, что буква f не имеет аналогов в кириллице - тоже не годится, ибо придумать слово где обе буквы двузначные, аля какое-нибудь or, где r похожа на г - не так уж и сложно.

Помогите пожалуйста, я не понимаю.
Условия задачи на пик2. Подсказка помогает с самой простой частью (поиска слов с опечаткой), но совсем не помогает в самой главной проблеме.
пилори 18/05/23 Чтв 18:21:27 #305 №2703470 
>>2703451
Единственное предположение, что автор подразумевает, что понимать из какого языка слово - должны мы сами, и ручками получившиеся в массиве слова менять под условия задачи.
Но тогда красивого и универсального решения не получится и работать такой код будет только под один набранный текст, а автор хочет, чтобы я лез на какие-то гос.закупки и там "применял" программу. Но как? Программу ведь переписывать для этого надо.

Стойкое ощущение, что я упускаю какой-то момент, но не могу понять какой.
Аноним 18/05/23 Чтв 19:16:01 #306 №2703562 
>>2703451
тебе же понятно описано - первую замененную букву -> значит с какой буквы (русской или ангельской) начинается слово, таковым оно и является
пилори 18/05/23 Чтв 21:26:45 #307 №2703695 
>>2703562
>значит с какой буквы начинается слово, таковым оно и является
Я же уже привёл пример с:
Оf
По твоему это русское слово? Первая буква же русская.
Ну или возьмём слово
Cock
Где заменили две с на кириллицу. Тоже русским слово стало?

В том то и дело, что программа во многих случаях не сможет определить точно какая буква является заменённой, пока программа не определит точно язык этого слова. Я вот нагуглил пару программ от анонов, они все фейлятся на слове cock, выделяя букву о.
Аноним 19/05/23 Птн 00:51:20 #308 №2703853 
>>2703695
В задаче нет условия, что слова должны существовать, зато есть условие выделить первую букву другого алфавита в []. Тебе сразу надо научится делать именно то, что сказано, а не так, как лучше.
Аноним 19/05/23 Птн 13:17:34 #309 №2704214 
>>2703853
>в задаче нет условия, что слова должны существовать
Не совсем понял, что ты подразумеваешь под этим. Как эти слова не должны существовать? А это тогда что:
"...дан текст, содержащий слова на русском и английском языках..."
Ну вот дан текст, в котором СУЩЕСТВУЮТ СЛОВА, они содержатся в нём, это слова на конкретных языках...
>зато есть условие выделить первую букву другого алфавита в [].
Я повторяюсь в 10й раз. Как программа должна узнавать КАКОЙ АЛФАВИТ В СЛОВЕ "ДРУГОЙ", а какой СВОЙ? Я должен сам программе это "сообщать" и для каждого отдельного слова писать отдельную регулярку? Лол, так а зачем мне тогда вообще регулярки, я просто вот так сделаю:
echo "Слова с опечатками..."
А потом перепишу сам с клавиатуры эти слова по нормальному и допечатаю для слов эти скобки квадратные:
echo "Слова без опечатки..."
Вариант в 2 строчки куда лучше массивной ебли с регулярками.

Если я туплю, что я вполне допускаю, то просто скинь мне вариант рабочей программы, да и всё. Я посмотрю как надо было сделать и пойду дальше по урокам.
пилори 19/05/23 Птн 13:28:10 #310 №2704228 
Ладно, пока оставлю эту задачу и пойду дальше по урокам.
Но я всё ещё жду ответов от экспертов!!
Аноним 19/05/23 Птн 13:30:05 #311 №2704232 
бро у тебя учебник который день не работает((
пилори 19/05/23 Птн 13:31:13 #312 №2704237 
>>2704232
Чего не скачаешь его просто не пеку?
Аноним 19/05/23 Птн 16:04:45 #313 №2704486 
2023-05-1916-02-36.png
ba9.png
Аноним 19/05/23 Птн 17:49:57 #314 №2704645 
>>2704486
Там на хекслете есть подписка за 4к в месяц - лучший способ освоить пхп
пилори 19/05/23 Птн 18:24:29 #315 №2704692 
image.png
Я сделаль
https://ideone.com/DYkv6m
Аноним 19/05/23 Птн 18:26:36 #316 №2704694 
>>2704645
10 месяцев не дохуя ли?
Аноним 19/05/23 Птн 18:48:28 #317 №2704733 
>>2704486
Вот у них написано 10 месяц с нуля. То есть у них есть какое-то предполагаемое время освоения материала.
Почему в часах нельзя написать? Все по разному занимаются, у кого-то после работы один час есть, а кто-то может по 12 часов каждый день ебашить.
Мне не понравилось как у них обставлено всё на сайте, как-то всё скрытно как будто меня хотят наебать
Аноним 19/05/23 Птн 19:15:51 #318 №2704788 
>>2704694
Это не курс с учителем, а просто курс на сайте интерактивный и с проектами.
Аноним 19/05/23 Птн 19:45:49 #319 №2704857 
>>2704694
Можешь и быстрее пройти, есть люди которые за 5-6 месяцев управлялись, у меня где-то год ушел
>>2704733
>как-то всё скрытно как будто меня хотят наебать
Зайди на ту же хтмлакадемию или яндекс практикум - там нет возможности учиться по подписке, сразу анальные кредиты на 200к, здесь такая возможность есть. То что у них дизайн ебловатый - это да, раньше в лендосах были на демонстрационные проекты, сейчас их убрали зачем-то
Аноним 19/05/23 Птн 19:52:10 #320 №2704875 
>>2704733
>раньше в лендосах были ссылки на демонстрационные проекты
Вот как здесь, например, еще и курсы кликабельны
https://ru.hexlet.io/programs/php-oop
Аноним 19/05/23 Птн 19:58:48 #321 №2704890 
>>2704857
>где-то год ушёл
И сколько ты занимался в среднем? С какой регулярностью?

Хуй знает, пачаны. В моём представлении все эти курсы - это как взять серьёзный учебник и расписать его с весёлыми картиночками и разбавляющими водными текстами, дабы не перегружать клиентуру количеством информации на лист а4.
Ну и когда речь идёт про курсы на большую специальность, то авторы ещё связывают несколько таких учебников сразу в 1 программу, дабы ты не искал ничего дополнительно. Но так ли долго всё это искать? Гуглишь родмапу на интересующую профессию и просто изучаешь всё что там написано по учебникам и видео. Сильно хуже будет результат что-ли? Ну да, не сможешь написать наставнику с проблемой, чтобы получить ответ "гугли". Будешь иногда затупливать и тратить время на поиск.
Однако мне кажется, что когда человек хочет стать "программистом" - он хочет научиться нормально деньги зарабатывать. А тут с тебя требуют мало того, что время на обучение (которое не бесплатно само по себе), так ещё и дополнительно 50-100-200 тысяч. Оправданы ли такие траты? В моём представлении они могут быть оправданы, если ты уже миллионер (баксовый), либо 300к наносек, но нах тебе тогда эти курсы.

Может у меня сформировалось неправильное представление из-за влияния медиа?
Аноним 19/05/23 Птн 20:16:45 #322 №2704916 
>>2704890
>И сколько ты занимался в среднем? С какой регулярностью?
Каждый день, я даже время за компом трекал у меня получилось в среднем 2 часа.
> все эти курсы - это как взять серьёзный учебник и расписать
Для меня хорошие курсы это не учебник, а задачник. Хекслет так и построен - несколько сотен задач несколько проектиков, к которым дается необходимый, но структурированный минимум инфы и ссылку на доп. инфу если она тебе нужна. Сколько я не искал, ничего подобного по пхп кроме хекслета не нашел, зато нашел кучу всяких уебанов типа гоши дударя, хауди хо и марлин дева.
Аноним 20/05/23 Суб 00:14:54 #323 №2705096 
>>2704857
> Можешь и быстрее пройти, есть люди которые за 5-6 месяцев управлялись, у меня где-то год ушел
Год на пыху? Серьёзно?
Аноним 20/05/23 Суб 03:01:27 #324 №2705141 
>>2698720

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

calculateCredit(rate: 1.02, ...)

В такой ситуации я не вижу смысла делать это константой. Или ты в коде

$count += 1;

Число 1 тоже предлагаешь заменить на константу?
Аноним 20/05/23 Суб 03:03:01 #325 №2705143 
>>2697862

Ок, по твоему мнению, PHP плохой. Напиши, на какой язык ты предлагаешь его заменить, а я объясню чем он хуже PHP и почему ты глуптвоя идея глупа.
Аноним 20/05/23 Суб 03:05:17 #326 №2705144 
>>2697862

Также, ты дал ссылку на Википедию про ADT [1], и там в разделе "Языки, в которых есть ADT", указан C++ и Python. Ты серьезно? Тогда и PHP включайте в список, у нас тоже энумы есть.

[1] https://en.wikipedia.org/wiki/Algebraic_data_type
Аноним 20/05/23 Суб 03:07:23 #327 №2705146 
>>2697862

И еще. Ты пытаешься тут принизить PHP, пишешь, что там ООП плохой, менеджер пакетов плохой, а объясни тогда, почему пишут на Си, в котором вообще ничего нет, в котором руками надо зависимости скачивать и поп папочкам раскладывать? А он популярен тем не менее. Вконтакте, например, на нем микросервисы писал для хайлоада.
Аноним 20/05/23 Суб 03:09:57 #328 №2705148 
>>2698151

Вот смотри, ты пишешь "на нем (Го) программы пишут быстрее". Так это и плюс PHP, на нем программы пишутся быстрее, чем на Си или Го. Ты бы попробовал логично рассуждать, а не плеваться, и все бы понял. Время разработки это деньги, чем быстрее пишется код, тем меньше денег уходит из кармана владельца бизнеса.
Аноним 20/05/23 Суб 03:15:37 #329 №2705149 
>>2698115

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

$palindromeCheck - неудачное название, так как эта переменная не содержит в себе "проверку на палиндром". Назови это просто $input (входные данные).

$palindromeCheckArray - не надо к массивам приписывать слово array. Назови это просто $letters (буквы).

$leftCheck - лучше просто $leftPos.

Решение верное. Но есть и другой способ: раз уж у тебя есть массив букв, то можно было бы использовать тут array_reverse для его переворота и сравнения с исходным массивом через === (массивы можно сравнивать, смотри мануал: https://www.php.net/manual/ru/language.operators.array.php ).
Аноним 20/05/23 Суб 03:19:47 #330 №2705151 
>>2698369

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

Мне вообще Питон нравится, но в нем нет нормальной типизации и он медленнее PHP.
Аноним 20/05/23 Суб 03:37:06 #331 №2705152 
>>2705149
Спасиб анон. Я над названиями не думаю прям совсем, пишу просто первый образ пришедший в голову, так что особо вчитываться в смысол не нужно. Просто стараюсь не оставлять названия в духе $a или $b, а писать хуйню подлиннее.
Это всё-таки не какой-то серьёзный проект, а просто проходные задачки
Аноним 20/05/23 Суб 04:02:33 #332 №2705153 
>>2699046
>>2699207

Извиняшки, у бесплатного провайдера доменов сейчас проблемы, потому заходим через гитхаб: https://codedokode.github.io/phpbook/
Аноним 20/05/23 Суб 04:08:32 #333 №2705156 
>>2700741

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

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

Ну и вроде в регулярках совсем немного конструкций, давай я их перечислю:

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

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

Если ты никак не можешь понять, в чем ошибка, запости регулярку или ссылку на regex101.
Аноним 20/05/23 Суб 04:21:24 #334 №2705158 
>>2700757

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

>>2700775

Видимо, phpstan не понимает, что тут preg_replace не может вернуть null (null возвращается, если ты сделал ошибку в регулярке или строка для замены содержит некорретнные коды utf-8 символов).

Тут с одной стороны вроде как и правильное замечание, но с другой, такое замечание маловероятно и больше отвлекает. Я поискал баг-репорты, и похоже, автор phpstan не желает это исправлять: https://github.com/phpstan/phpstan/issues?q=is%3Aissue+preg_replace+is%3Aclosed

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

В таком случае ты мог бы разобраться с конфигурацией phpstan, добавить конфиг и в нем отключить эту ошибку: https://phpstan.org/user-guide/ignoring-errors
Аноним 20/05/23 Суб 04:25:17 #335 №2705159 
>>2700812

У тебя есть вертикальная черта, и она делит твою большую регулярку на две части:

^A|B$

Это надо читать так: строка должна совпасть либо с ^A (то есть A должно быть в начале строки) либо с B$ (то есть, B должно быть в конце строки).

Поэтому у тебя и получается 2 совпадения: первое с ^A, второе с B$.

Чтобы символ | не разрывал всю твою регулярку, используй круглые скобки:

^....(A|B)....$

Тогда скобки ограничат область действия вертикальной черты. Ну то есть

abc(def|ghi)jkl значит "или abcdefjkl, или abcghijkl".
Аноним 20/05/23 Суб 04:28:39 #336 №2705160 
>>2700943

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

...(\+7|8)....

> А зачем ставить больше одного пробела?

Пользователь может трясущимися руками ввести 2 пробела вместо одного и с виду номер выглядит для человека нормально. А регулярка его не примет. Это плохо.
Аноним 20/05/23 Суб 04:35:07 #337 №2705161 
>>2701264

> Если бы MVC и прочая чушь на которую ты молишься была бы так полезна

Она полезна с ростом проекта. Если у тебя сайт из 4 PHP файлов по 100 строк каждый, то может быть тебе и не нужны фреймворки, ООП и MVC. Без них может получиться проще.

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

> Но этого не происходит, как думаешь, почему?

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

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


Но я не думаю, что тут какой-то хитрый расчет. Просто Битрикс реально старый и его писали не самые лучшие разработчики, вот они и сделали все на хуках и массивах.
Аноним 20/05/23 Суб 04:40:39 #338 №2705162 
>>2701777

Старый автозагрузчик мог быть только один, так как в PHP нельзя сделать 2 функции __ autoload(). Это значит, что если ты подключал 2 фреймворка и 20 библиотек, и каждая из них хотела свой автозагрузчик, то это было невозможно сделать.

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

Хотя при использовании composer мы в итоге имеем ровно 1 автозагрузчик.
Аноним 20/05/23 Суб 04:41:33 #339 №2705164 
>>2701777

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

Это есть, назвается composer. Ты просто в composer.json описываешь правила и он генерирует тебе автозагрузчик.
Аноним 20/05/23 Суб 04:42:58 #340 №2705165 
>>2701785

Это уровень задачи про студентов из шапки. Ну то есть учебный проект для получения знаний, где-то с ним тебя возьмут стажером, где-то может джуниором.
Аноним 20/05/23 Суб 04:45:19 #341 №2705166 
>>2701785

И у тебя что-то между пагинацией и таблицей отступов нет. Почему? И у таблицы в заголовке одной ячейки не хватает, наверно ты в нее & nbsp забыл поставить? И надо писать "название радио", а не "имя".
Аноним 20/05/23 Суб 04:54:09 #342 №2705168 
>>2701832

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

\. - искать точку
\+ - искать плюс
\\ - искать бекслеш
\$ - искать доллар

Но это в чистой регулярке. А мы обычно пишем ее внутри PHP-строки в кавычках.

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

echo "\\"; - выведет 1 бекслеш

Это нужно, так как конструкция бекслеш + символ используется для вставки разных специальных символов: https://www.php.net/manual/ru/language.types.string.php#language.types.string.syntax.double

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

$regex = "/\\./" - искать точку
$regex = "/\\\\/" - искать 1 бекслеш

Но у строк есть особенность: если ты пишешь бекслеш + какой-то символ, которые не образуют комбинацию, то PHP оставляет их как есть. Ну например, нет комбинации бекслеш + точка, поэтому если т напишешь \. то в строку эти 2 символа вставятся как есть. И получается, что регулярку \. можно написать 2 способами:

"/\\./" - совсем правильно
"/\./" - тоже допустимо

Поэтому комбинации вроде \. \+ \[ \( можно писать с одним бекслешем. А вот чтобы искать бекслеш, придется писать 4 штуки. И чтобы искать долллар, придется писать \\$, так как \$ просто вставляет символ доллара:

echo "\\$" - выведет \$
echo "\$" - выведет $

Надеюсь, понятно объяснил.

Кстати, в строках в одиночных кавычках магических комбинаций меньше и там можно почти всегда писать 1 бекслеш (кроме случаев когда ты ищешь сам бекслеш - тут их надо 4 штуки).

Если у тебя сложности, то просто сделай echo "регулярка" и увидишь как твои бекслеши интерпреируются.
Аноним 20/05/23 Суб 05:13:33 #343 №2705170 
>>2704232

Извиняшки, пока что починил временно, чтобы на гитхабе открывалось: https://codedokode.github.io/phpbook/

Почисти кеш в браузере, если тебя редиректит на phpbook.
Аноним 20/05/23 Суб 05:18:49 #344 №2705171 
>>2703451

Смотри, какая вещь. Концепутально неважно, русское слово или английское, важно, есть ли в нем опечатки или нет.

Поэтому ты можешь выбрать любой алгоритм определения:

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

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

> Букв одинаково. Русская о, в английском слове. Как я должен в программе понимать что это именно о нужно заменить, а не f.

Можно сделать один язык приоритетнее другого и в случае равенства выбирать его.
Аноним 20/05/23 Суб 05:31:42 #345 №2705175 
Зделайте отдельный тред по Битриксу. И гайд запилите пожалуйста. Инфу приходится по крупицам собирать, иногда даже задавать вопрос в тг чате битрикса и оттуда узнавать инфу. Кароче жду треда по битриксу, по-другому не буду вкатываться. Тьвёрдо и чётко - как любят двачеры.
Аноним 20/05/23 Суб 06:02:42 #346 №2705179 
>>2705096
>Год на пыху? Серьёзно?
Это ток на хекслете, я еще до него ковырялся. Считаю, что это еще неплохой результат, куча народу учится в универах по 4 года, а потом в техподдержку. А тебе за какое время надо?
Аноним 20/05/23 Суб 07:54:34 #347 №2705202 
>>2705179
Так в универах учат всякий юзлес кал. А по сколько часов ты занимался?
Аноним 20/05/23 Суб 08:14:26 #348 №2705208 
изображение.png
>>2705202
>А по сколько часов ты занимался?
>Каждый день, я даже время за компом трекал у меня получилось в среднем 2 часа.
В редкие дни выходило 4 часа. Но два часа это прям чистое время над чтением-думанием-гуглежом без поссать/покурить/подрочить, больше учебы в меня тупо не влазило. Так это время можно смело на 2 умножать.
Аноним 20/05/23 Суб 10:28:23 #349 №2705272 
>>2705141
ещё раз, что такое - 1.02, 1.03, 1.04? Ответ -то процент в банках, и в банке процент может сменится. По хорошему, такая инфа бы с апи банка приходила, но в таком микропримере все равно было бы неплохо вынести константы в словарь, чтоб отличать в каком банке какой процент. А по поводу $count+=1, в зависимости от контекста в котором это применяется. Если при каком-то условии в коде к $count прибавлялась бы не только единица, то скорее всего да.
Аноним 20/05/23 Суб 10:44:50 #350 №2705299 
>>2705179
Можешь посоветовать в каком порядке приблизительно лучше изучать хекслетовские курсы чтобы более менее органично они шли как по уровню понимания так и по уровню сложности?
Аноним 20/05/23 Суб 14:12:53 #351 №2705502 
image.png
>>2705156
>>2705158
>>2705159
>>2705160
>>2705168
Вау, анон, спасибо за такие подробные ответы.
>Не отказывайся от regex101.
Да, я уже въехал. Он и правда удобен, особенно когда надо со скобками работать всякими. И в регулярках +- разобрался, теперь бы запомнить все функции которые в уроках перечислены... Особенно в повторении.
>>2705171
Всё равно в итоге будет криво+косо, тут по хорошему, наверное, надо подключать какие-то библиотеки которые заточены на определение языка слова. Потому что самому это реализовать = целый проект абу точно делает капчу из слов. Сомневаюсь что задача автором задумывалась настолько объемной.
Аноним 20/05/23 Суб 14:26:49 #352 №2705511 
>>2705208
Но ты же нашёл работу по итогу?
Аноним 20/05/23 Суб 14:27:46 #353 №2705512 
изображение.png
>>2705299
Профессию по пхп можно по подписке проходить, без наставника. Оплачиваешь подписку на любой трек/курс, потом переключаешься на саму профессию.
Аноним 20/05/23 Суб 14:45:42 #354 №2705522 
>>2694448
Никак, это глючное говно на любом компе лагает как сучка

>>2694454
У меня райзен и пхпшторм стабильно вешается
Аноним 20/05/23 Суб 14:56:07 #355 №2705528 
>>2705522
Неплох PHP Intelephense для vscode, с купленным (или спиженным) ключем. С ключем навигация по коду есть и переименование массовое
Главное после установки не забыть @builtin php выключить
B настройках прописать "files.associations": {"*.module": "php"}
Аноним 20/05/23 Суб 14:58:04 #356 №2705531 
>>2705511
Ну вроде нашел, искал с февраля, щас на испытательном вторую неделю в битрикс-галерке. За время поисков успел поработать на ип кабанчик, который меня уволил через 3 дня за то, что не умею работать с очередями и не знаю про сервисный слой 🤡
Аноним 20/05/23 Суб 15:06:10 #357 №2705537 
>>2705528
С Bitrix нормально не работает.
Аноним 20/05/23 Суб 15:10:48 #358 №2705544 
>>2705537
А что не работает? Оно даже с ларкой работает? где магия на магии. Половина кода на статических фасадах, где методы декларированы только в phpdoc.
Аноним 20/05/23 Суб 15:11:42 #359 №2705547 
>>2705544
s/ботает?/ботает,
Аноним 20/05/23 Суб 16:59:35 #360 №2705703 
>>2705143
Typescript.

>Тогда и PHP включайте в список, у нас тоже энумы есть.
А у меня хуй огромный. Ну как хуй, залупа уже огромная, а хуй пока нет. Давай запишем меня в список людей с огромным хуем?

>объясни тогда, почему пишут на Си, в котором вообще ничего нет
Так все, ушла эпоха. В ядре линукса и винды уже пишут на расте. А в расте все есть. Замечательный язык.
Аноним 20/05/23 Суб 18:04:39 #361 №2705776 
>>2705544
Даже не дает автокомплит для $USER и $APPLICATION, не говоря про действительно сложные вещи.
Аноним 20/05/23 Суб 18:28:07 #362 №2705798 
vscodephp.png
>>2705776
пилори 20/05/23 Суб 18:36:06 #363 №2705814 
image.png
Я сделоль прогу с йодой
https://ideone.com/wjwuvy
Аноним 20/05/23 Суб 18:53:57 #364 №2705831 
>>2705798
Ты не понял, автокомплит должен быть после $APPLICATION->

В шторме такое есть, так что вскод пока не подходит.
Аноним 20/05/23 Суб 19:07:51 #365 №2705839 
vscodephp.png
>>2705831
Аноним 20/05/23 Суб 20:34:31 #366 №2705935 
>>2705528
А зачем вообще эти расширения? VS Code из коробки поддерживает РНР.
Аноним 20/05/23 Суб 22:17:08 #367 №2706017 
image.png
image.png
image.png
>>2687463 (OP)
Сделал задание про айфон в кредит, результат вроде верный выдает, но когда я глянул пример кода, то выглядел он совсем по другому. Так вот, я вообще правильно задание сделал или нет ?
Аноним 20/05/23 Суб 23:15:59 #368 №2706080 
>>2705839
И че это? $APPLICATION это объект CMain https://dev.1c-bitrix.ru/api_help/main/reference/cmain/index.php

И должны выводится его методы, в PhpStorm все ок.
Аноним 21/05/23 Вск 07:26:32 #369 №2706189 
>>2705935
он только покрас синтаксиса поддерживает + автодополнение встроеных в пхп функций и суперглобалс + снипеты
Чего нет
1) Корректное автодополнение методов
2) Переход к определениям (в том числе к трейтам), имплементациям
3) Переименование классов неймспейсов сразу со всеми зависимостями и директориями
2 и 3 вообще мастхев
Аноним 21/05/23 Вск 07:31:45 #370 №2706193 
>>2706189
+ до кучи нужно еще поставить официальное расширение xdebug
Аноним 21/05/23 Вск 07:50:33 #371 №2706205 
>>2705158
Спасибо за ответ.
Аноним 21/05/23 Вск 10:06:22 #372 №2706273 
>>2705512
Можно ссылочку?
Аноним 21/05/23 Вск 10:12:05 #373 №2706278 
>>2705531
> уволил через 3 дня за то, что не умею работать с очередями и не знаю про сервисный слой 🤡
О, ты наверняка шаришь. Вот ты прошёл курсы, замечаешь ли что тебе не хватает знаний и что какую-то важную информацию там опустили?
Аноним 21/05/23 Вск 13:41:37 #374 №2706437 
>>2706273
>Можно ссылочку?
Это скрин из профессии по пхп. Подписываешься, например, на этот трек https://ru.hexlet.io/programs/php-oop , потом открываешь профессию https://ru.hexlet.io/programs/php и вступаешь в нее. Там тот же роадмап будет в личном кабинете.
>>2706278
Ну собственно работа с докером, очередями, редисом, работа с апи - как получение данных из чужого апи, так и дизайн своего. Еще рекомендую навернуть годную книгу "Архитектура сложных веб приложений" Аделя Файзрахманова, там как раз есть про сервисный и доменный слой еще и с примерами на ларе.
Числа прописью пилори 21/05/23 Вск 18:52:03 #375 №2707008 
Фуф, сделаль (вроде) эту программку. Получилось, конечно, мега-грязно, как мне кажется. Хотя если глянуть на то, сколько у опа ушло строк, то не слишком длиннее (особенно если учесть, как компактно оп вставил массив).

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

https://ideone.com/anwEbe
Аноним 21/05/23 Вск 19:00:08 #376 №2707030 
>>2707008
Я там чуть фиксанул регулярку на пустые "тысячи":
https://ideone.com/8fn2iD
Аноним 21/05/23 Вск 19:08:05 #377 №2707041 
>>2707008
Как-то пиздец нагромождено.
По-моему, его надо нарезать через вайл, а не через ебанутые ифы, как у тебя, будет в сто раз компактнее.
Аноним 21/05/23 Вск 22:30:51 #378 №2707374 
Сделать шаблон комплексного компонента news. На главной подключить news.list, на детальной news.detail
(Дополнительно) Сделать разбивку по разделам

Кто-то шарит, что значит "разбивка по разделам"? Стоит ли задавать такой вопрос наставнику по стажировке? Или это супертупой вопрос, который можно нагуглить?

Просто как я понял раздел это тупо папка, там делаем страницу и тд. Или это надо юзать компонент section - это имеется в виду?
Аноним 21/05/23 Вск 22:42:45 #379 №2707393 
>>2707374

Разделы:
Экономика, политика, че там у хохлов, спорт, искусство

Я так понял. Спроси у стажера так ли ты понял че значат разделы.
Аноним 21/05/23 Вск 22:43:55 #380 №2707396 
>>2707374

Я так понял должно быть в базе значение на то какой раздел, и если выбрал "такой" то только такой. А как показывать, на одной все, или разные запросы - думаю за тобой выбор
Аноним 21/05/23 Вск 23:09:00 #381 №2707461 
>>2707374
Я помню, как мне дал подобное ТЗ челик, знакомый только по совместных пьянкам, я был в то время йоба-кодер на асме z80 и i8080, ЛОУРЕАТ каких-то местечковых премий по паскалю, который я не знал.
Мне бросили в ебало книжку по дотнету 1.1, передовому в то время инструменту. Я выучил и делал что-то. Контора была съемной квартирой в центре, где мы тусили.
Дальше мне лень описывать. Один из тех квартирных челиков добился успеха, получил какие-то лычки от мс, выступал на конвентах, потом в всякие менеджеры, сейчас тем же занимается в омерике.
Что стало с остальными это интересно, тот ололо-кабаныч был из золотой молодёжи, скоре всего замутил что-то новое, или сьебал куда-то в Сен-Тропе.
Аноним 22/05/23 Пнд 02:14:51 #382 №2707610 
>>2707393
>>2707396
Не, пацаны, это битрикс, если вы не поняли, тут всё по-другому. Я видел один сайт на битриксе, там были разделы: личный кабинет пользователя, страница регистрации/авторизации, главная страница и тд. Т.е. как-то так.

Но в моем задании есть только одна страница есть, для которой будет использоваться компонент news.detail, а какие еще разделы я чет вообще не пойму.

>>2707461
Не понял о чем ты.
Аноним 22/05/23 Пнд 05:10:53 #383 №2707641 
Хабр QA.png
Если невозможно узнать маску подсети, которую выставил провайдер, чтобы задать диапазон адресов, тогда как моча может банить этот пул адресов?

Вот например я вайпаю тред, перезагружая роутер, моча банит подсеть. Как конкретно она по моим айпишникам узнает к какой подсети они относятся и банит её?
Аноним 22/05/23 Пнд 06:11:50 #384 №2707650 
>>2707641
Тебе в it-тред в /wrk, там много админов и сетевиков сидит
Аноним 22/05/23 Пнд 06:44:40 #385 №2707657 
>>2707374
>Стоит ли задавать такой вопрос наставнику по стажировке?
Ясен хуй, стоит, на то он и наставник, чтобы на тупые вопросы отвечать
Аноним 22/05/23 Пнд 08:33:14 #386 №2707676 
>>2705166
>И у тебя что-то между пагинацией и таблицей отступов нет. Почему?

Так задумано, для экономии места на экране смартфона.

>>2705166
>И надо писать "название радио", а не "имя".

тут соглашусь
Аноним 22/05/23 Пнд 08:38:16 #387 №2707678 
>>2705166
немного доработал проект
https://douq.ru/UNH
Аноним 22/05/23 Пнд 17:52:09 #388 №2708335 
Вот не пойму, если теперь через шаблонизаторы не пишут, то надо обязательно учить JS с фронтовым фреймворком каким-то?
Аноним 22/05/23 Пнд 20:41:25 #389 №2708573 
>>2701777

В твоем коде ошибка. Если такого файла нет, то require_once выдаст ошибку. А автозагрузчик не должен быть с ошибками.

Ты должен сначала проверить, что файл существует, и только тогда его инклудить, а если он не существует, то ничего не делать.
Аноним 22/05/23 Пнд 20:42:46 #390 №2708576 
>>2701803

В шапке есть задача сделать сайт TestHub, попробуй сделать например на Symfony или Laravel, если хочется что-то посложнее.
Аноним 23/05/23 Втр 01:33:50 #391 №2708810 
>>2707008

Хорошо, что работает, но над кодом надо поработать. Код переусложнен и содержит копипасту.

У тебя в функции spellSmallNumber все тело обернуто в огромный if:

если (условие) {
...тысячи строчек...
}

Не надо так. Надо перевернуть условие, чтобы получилось:

если (не выполняется условие) {
показать ошибку;
}

...тысячи строчек...

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

> if($int/100 >= 1) {
Это можно упростить до $int >= 100

> $int % 100
Это выражение повторяется там раз 15. Нужно вынести его в переменную.

Наконец, функция spellSmallNumber чрезмерно улсожнена. Там много сложных вычислений, хотя ее логика несложная:

- если в числе есть сотни, добавляем слово для них
- если $int % 100 больше 0, но меньше 21, то добавляем слово для десятков-единиц
- иначе, если $int % 100 > 0, добавляем слово для десятков и, если они есть, то для единиц

Я вижу тут ровно 3 if (+ 1-2 if для учета женского рода). У тебя же порядка 10 if и else. Твой алгоритм переусложнен, в нем есть повторы, его тяжело читать и нужно упростить.

> $result = $word.' '.$word1;
Вместо этого удобнее добавлять слова в массив, а в конце функции склеить его через implode().

В функции getWordForm условие тоже переусложнено. Там всего-то нужно проверить:

- если число оканчивается на 11-19, возвращаем 3-ю форму (рублей)
- если оканчивается на 1, то 1-ю форму (рубль)
- если на 2-4, то "рубля"
- иначе, "рублей"

> ($int >= 5 && $int <= 20) ... ($int % 100 <= 19 && $int % 100 >= 5)

Первое условие здесь избыточно.

> $int % 100 % 10;
Здесь не нужно делить на 100.

В функции spellNumber много копипасты. Например, есть 3 места, где выисляется число единиц. Нужно убрать повторяющийся код и сделать функцию проще и короче.
Аноним 23/05/23 Втр 01:35:39 #392 №2708811 
>>2706437

Одна из ценностей платных курсов это наличие наставника. Без наставника просто платить деньги за доступ к учебнику, мне кажется, не всем подойдет.
Аноним 23/05/23 Втр 01:40:59 #393 №2708812 
>>2706017

> for ($credit; ...

Здесь первое выражение ($credit) ничего не делает - оно просто читает значение переменной $credit и отбрасывает результат. Ты можешь либо перенести создание переменной $credit в for:

for ($credit = 40000; ...

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

for ( ; ...

Ты также можешь заменить if на функцию min() или max(), попробуй это сделать.
Аноним 23/05/23 Втр 01:54:03 #394 №2708814 
>>2705814

> $str = preg_replace('/^[а-яё]/u', $firstLetterUpper, $str);
тут не нужен preg_replace, тут можно просто отрезать все после 1-й буквы с помощью mb_substr.

> $textSentences = [];
Эта строка не нужна. Также, переменную лучше назвать просто $sentences.

> $textSentences[$keySentence] = makeLowerCase
Здесь можно использовать $textSentences[] = ... для краткости.

> $sentenceWords[$keySentence] = preg_split...
> $sentenceWords[$keySentence] = array_reverse(...

Здесь лучше использовать временную переменную, например $words, вместо массива $sentenceWords.
Аноним 23/05/23 Втр 01:56:29 #395 №2708816 
>>2705272

Не, ты переусложняешь код бессмысленно.

Эти цифры каждая встречаются ровно один раз. Их назначение понятно из названия функции и аргумента функции, в которую они передаются. Константы здесь вводить не требуется.
Аноним 23/05/23 Втр 01:59:30 #396 №2708819 
>>2705152

Лучше учись с самого начала придумывать хорошие названия, погугли, как это делать, если не понимаешь. А то не привыкнешь, будешь потом тестовое задание делать и это станет минусом.
Аноним 23/05/23 Втр 02:09:32 #397 №2708820 
Почему в сберхуйне на php мидла просят техническую вышку в требованиях, а на другие бэк языки (или вообще в каком-нибудь фронтенде) ее не требуют, они ебанутые совсем?
Аноним 23/05/23 Втр 02:19:40 #398 №2708823 
>>2704692

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

пробел, за ним знак препинания

3-я и 4-я регулярки тоже сложноваты, их можно упростить до:

знак, за ним буква
знак, за ним больше 2 пробелов

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

буква ,буква

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

То есть, тут лучше сделать регулярки попроще, пусть даже мы не сможем из-за этого применить их все за один раз. Читабельность и понятность кода важнее.
Аноним 23/05/23 Втр 04:24:01 #399 №2708835 
>>2708820
Они так ОТСЕИВАЮТ кандидатов.
Вышка + пхп = долбоеб клинический. Нахуй такое чучело надо?
Аноним 23/05/23 Втр 08:17:25 #400 №2708863 
16819890306410.jpg
Пожалуйста скажите что в 2к23 году можно вкатиться в PHP
26лвл РНН недогосподин, мама устала работать, и мне её жалко, хочу сам её кормить
Аноним 23/05/23 Втр 08:32:54 #401 №2708869 
>>2708835
И что теперь? Если у меня вышка, то нельзя РНР учить что ли?
Аноним 23/05/23 Втр 08:50:03 #402 №2708877 
>>2708869
Нельзя. Надо учить жабу или шарп. Остальное только за счет кабаныча, если ему надо.
Аноним 23/05/23 Втр 09:37:06 #403 №2708913 
>>2708877
Я учил джаву, но там нет вакансий на джуна. Все вкатуны рисуют опыт 3+ лет.
Аноним 23/05/23 Втр 09:57:39 #404 №2708920 
>>2708863
> Пожалуйста скажите что в 2к23 году можно вкатиться в PHP

Можно конечно, язык для работяг
Аноним 23/05/23 Втр 10:23:10 #405 №2708932 
>>2708920
Спасибо. Буду учить.
Аноним 23/05/23 Втр 10:29:38 #406 №2708936 
image
>>2708863
> 26лвл
> РНН недогосподин, мама устала работать, и мне её жалко, хочу сам её кормить
Идеальная история жизни для вката в IT.
Аноним 23/05/23 Втр 10:30:30 #407 №2708938 
>>2708936

Считается ли пыха IT, кста?
Аноним 23/05/23 Втр 10:31:23 #408 №2708939 
>>2708938
ПХП - это полноценный язык программирования
Аноним 23/05/23 Втр 10:32:11 #409 №2708940 
>>2708938
Пыха? Нет. Пыпыха? Да.
Аноним 23/05/23 Втр 10:33:33 #410 №2708944 
Уже месяц учу РНР, но всё равно постоянно в голову лезут мысли, что надо учить джаву. Как с этим бороться?
Аноним 23/05/23 Втр 10:34:16 #411 №2708945 
>>2708944
У меня так в играх постоянно. Начинаешь за мага, а потом все время кажется, что надо рестартить и начинать за воина.
Аноним 23/05/23 Втр 10:36:01 #412 №2708946 
>>2708939

Ну а в принципе если ты пишешь код на PHP ты считаешься прям настоящим программистом? Я вот ссусь говорить что я в айти работаю, т.к. не уверен
Аноним 23/05/23 Втр 10:37:50 #413 №2708949 
>>2708944

Лучше Java учи, хоть настоящим программистом будешь, я щас постоянно жалею, что выбрал PHP

>>2708945
В этом плане PHP это испорченный класс в Morrowind
Аноним 23/05/23 Втр 11:19:05 #414 №2708992 
>>2708946
На каком фреймворке пишешь? Если симфони, то говори всем, что джавист. Если ларавель - дотнетчик. А если на каком-то другом, то гофер, там у них всё равно миллион всяких библиотек и фреймворков, единого стандарта нет.
Аноним 23/05/23 Втр 11:22:44 #415 №2708999 
16819890306410.jpg
>>2708936
>Идеальная история жизни для вката в IT.
Вполне стандартная. Тем более для двача
я вкачусь посоны
Аноним 23/05/23 Втр 11:25:06 #416 №2709004 
>>2708949
На джаве нет таких классных курсов от Альберта как на РНР
Аноним 23/05/23 Втр 11:31:41 #417 №2709006 
>>2708992
>На каком фреймворке пишешь?

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

>>2709004

Классные курсы я в своей жизни видел только 1 раз, это курсы на otus.ru
Аноним 23/05/23 Втр 11:38:25 #418 №2709014 
>>2709006
На отус просто презенташку зачитывают и преподам пофиг на всё. Прям видно на сколько им наплевать.
Аноним 23/05/23 Втр 11:42:20 #419 №2709017 
>>2709014

Единственный недостаток что презенташка видео но нет PDF-конспекта.

Мб курсы разного качества
Аноним 23/05/23 Втр 11:47:21 #420 №2709022 
>>2708999
Вкатишься, анон. Все анончики, которые побежали в IT от отчаяния, уже вкатились и зарабатывают вкусные сотыги.
Аноним 23/05/23 Втр 12:04:53 #421 №2709040 
>>2709022
Ты хотил сказать на пыхе дрюкают сайты статейники, заходя на прод по ssh, и правя код через midnight comander, и перезапуская кэш через WP Rocket?
Аноним 23/05/23 Втр 13:30:14 #422 №2709191 
16819890306410.jpg
>>2709022
Спасибо. Что не говори даже слово помогает.
Аноним 23/05/23 Втр 14:20:17 #423 №2709236 
>>2709040
Сложна. Через фтп фаром.
Аноним 23/05/23 Втр 14:22:33 #424 №2709240 
>>2709040
Ну да и что? Тебя ебет или что? Твоя задача выполнять таски и получать котлету, какая разница что там и как?
Аноним 23/05/23 Втр 15:09:43 #425 №2709269 
>>2708945
У меня в играх куча созданных персонажей разных классов и ни за одного до конца не прошёл. Так и с программированием - учу уже 4 или 5 язык, но до сих пор ни куда не устроился.
пилори 23/05/23 Втр 15:16:02 #426 №2709275 
>>2708810
>>2708814
>>2708823
Спасибо за подробные ответы. Буду применять рекомендации.
Аноним 23/05/23 Втр 15:36:45 #427 №2709309 
>>2708812
Спасибо большое за ответ. Я правильно понимаю что мне нужно просто вместо блока if добавить строку
$maxPayment = min($credit, $maxPayment);
Аноним 23/05/23 Втр 15:42:43 #428 №2709326 
начал проходить бесплатный курс по основам пыхи на хекслете. уже на 10 задании. пожелайте успехов, аноны!
Аноним 23/05/23 Втр 16:27:39 #429 №2709383 
>>2709236

У меня батя через путти mc запускает
Аноним 23/05/23 Втр 17:06:09 #430 №2709448 
>>2709383
Ну это именно для шиндовиков такой костыль по образу и подобию тех олдскульных коммандеров. В линупсе оно в целом редко применяется, максимум какой-то рейнджер.
У меня стандартно тмукс, хотя раньше тоже баловался мс.
Аноним 23/05/23 Втр 17:46:10 #431 №2709544 
image.png
>>2709448
>максимум какой-то рейнджер.

Литерали ват. Эта петушна не двухэкранная? Мой батя плеваться будет с такого говна

sudo apt install mc
Аноним 23/05/23 Втр 17:48:56 #432 №2709549 
>>2709544
Двухпанельность была для копирования с дискет на дискеты и с дискет на винт, потом просто по традиции.
Аноним 23/05/23 Втр 17:53:04 #433 №2709555 
>>2708944

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

Да и вообще, полезно расширять кругозор и изучать новые языки.
Аноним 23/05/23 Втр 18:00:55 #434 №2709558 
image.png
>>2709549
ЧИВОООО БЛЯТЬ?

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

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

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

>>2709555
> Сможешь приложения под Андроид писать, например.

И как там в 2016ом? Котлитн уже давно. Да и похуй, разработка под андроид и веб не похожи между собой, то что ты можешь веб писать не значит что у тебя мобили получится делать
Аноним 23/05/23 Втр 18:07:47 #435 №2709562 
>>2709558
С автокомплитом вменяемым это делается быстрее, чем дрочить папочки руками.
Разница в том, что в никсах единая точка монтирования, в шиндах каждое устройство это отдельная точка монтирования.
Аноним 23/05/23 Втр 18:15:22 #436 №2709567 
>>2709562
>С автокомплитом вменяемым это делается быстрее, чем дрочить папочки руками.

Чел, можно настроить копирование по регулярке, можно копировать консолью, а глядеть на содержимое папок в mc.

Не кипешуй, нормальный mc.

Тебе кажется что двухпанельный файловый менеджер не нужен потому что ты не работаешь особо с файлами
Аноним 23/05/23 Втр 18:20:10 #437 №2709574 
>>2709567
Чел, я сам на десктопе шиндовик и пользуюсь фаром и при необходимости гоняю его по sftp вместо scp для трансфера файлов.
Но при сеансе ssh мне нахуй не нужен двухпанельный коммандер, там другие традиции, mc это именно костыль.
Аноним 23/05/23 Втр 18:30:37 #438 №2709580 
>>2709574

А ты шо рили меняешь код сайтов на проде?

Какой сэк, шо платят? Фриланс?
Аноним 23/05/23 Втр 18:38:36 #439 №2709593 
>>2709580
Не знаю, с чего можно было сделать такой вывод. Меняюю конфиги и прочие хуитки через ссх в тмуксе и виме.
Стеки ахуенные, загибай пальцы. Делаю шелл, авк, перл, пхп, питон. Раньше делал руби, пока он не сдох. Планирую катиться ещё в ноду.
Аноним 23/05/23 Втр 18:43:18 #440 №2709600 
>>2709593
Алсо, единственная моя официальная работа была на шарпе. Сейчас на нём нихуя не делаю, но если оче надо, то что-то бы нахуевертил, но у меня знания примерно версии 2 дотнета, так что это сомнительная хуйня.
Аноним 23/05/23 Втр 18:51:08 #441 №2709611 
>>2709593
>Планирую катиться ещё в ноду.

ЧТОБЫ ЧТО БЛЯТЬ.

Ладно го
Аноним 23/05/23 Втр 19:05:06 #442 №2709623 
>>2709611
Чтобы решать задачки вроде вот тут у меня такая проблемка за сто баксов за пять минут, что по почасовому рейту много больше моего уровня, и не ходить на работу.
В целом, направление моей работы это что-то вроде пентеста, но не безопасность, а автоматизация процессов, в том числе серо-черная и продажа СОЛЮШЕНОВ, опробованных такой работой.
Аноним 23/05/23 Втр 19:11:39 #443 №2709628 
В пыхе есть что-то типо Spring Data JPA?
Аноним 23/05/23 Втр 19:20:26 #444 №2709637 
>>2708811
Это да, но ментора можно найти в чатиках, многие даже бесплатно помочь готовы - а вот годных задачников по пхп кот наплакал. Там кончно есть подписка с персональным ментором, но стоит в районе 20к/месяц.
Аноним 23/05/23 Втр 19:23:46 #445 №2709639 
>>2708863
Ну я вроде вкатился на той неделе , правда в битрикс, 28лвл.
Аноним 23/05/23 Втр 19:31:17 #446 №2709645 
>>2708944
"Лучшее враг хорошего". Пыху в полне можешь рассматривать как подмножество джэвы. Современный пхп это язык-франкенштейн, который очень много позаимствовал от джавы. А вообще обучение кодингу можно рассматривать как инвестицию, а хорошая инвестция контр-интуитивна. Пока миллионы джэва-джунов бьются о стену из отказов эйчарок, ты относительно спокойно сможешь пролезть на РАБотку.
Аноним 23/05/23 Втр 19:32:41 #447 №2709646 
Стикер
>>2709326
Аноним 23/05/23 Втр 19:52:34 #448 №2709664 
>>2709628
>Spring Data JPA
Bitrix Data Manager
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&CHAPTER_ID=05748
Аноним 23/05/23 Втр 20:56:49 #449 №2709688 
>>2709664
Это не совсем оно, это обычная ORM, я именно про магию, где пхп сам по имени метода в интерфейсе составляет имплементацию и запрос
Аноним 23/05/23 Втр 21:28:38 #450 №2709716 
>>2709688
Дожили блядь. Уже орм им сложна, магии мала. Надо шоб пернул в микро, а тебе хуяк пиздык и магия все сделала.
Аноним 23/05/23 Втр 21:37:11 #451 №2709727 
>>2709716
Мне не сложно ОРМ, я поинтересовался, а не делал ли кто такую вещь-нейм.
Аноним 23/05/23 Втр 22:30:28 #452 №2709747 
>>2709727
Поинтересовался бы для начала есть ли у пхп аналог JPA. Спецификации хуефикации. Создатели пхп вот такие челики >>2701264 с вот такими мыслями. Нет тут нихуя и не будет.
Аноним 23/05/23 Втр 23:53:00 #453 №2709811 
>>2709747

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

>>2709688

В Доктрине есть магические методы вроде findByLastname. Если нужно больше, то есть findBy, в который можно передать условия и сортировки. Хотя на практике они редко бывают полезны в силу ограниченных возможностей. Обычно нужно писать запрос.
Аноним 23/05/23 Втр 23:53:49 #454 №2709813 
О, капчу сделали черно-белой. Я писал пару тредов назад, что цветная капча сильно облегчает распознавание и видимо это наконец-то поняли.
Аноним 24/05/23 Срд 03:21:56 #455 №2709864 
>>2708946
Говори что ты веб-разработчик, а уж дальше их дело причислять тебя к айтишникам или нет.
Аноним 24/05/23 Срд 06:52:08 #456 №2709890 
>>2709811
В элоквенте есть куча магических мтодов. Самая мякотка - это метод with у кверибилдера. С помощью with ларовцы оптимизируют запросы
Аноним 24/05/23 Срд 08:39:38 #457 №2709916 
Сегодня приснился сон, что на вечере встреч с сокурсниками я сказал, что учу РНР и меня все обсмеяли.
Аноним 24/05/23 Срд 08:44:53 #458 №2709918 
>>2709916
>обсмеяли
Есть за что. Пыху учат обычно на втором курсе, чтобы на третьем уже подрабатывать.
Аноним 24/05/23 Срд 11:20:23 #459 №2710045 
>>2709688
Тебе что конкретно то нужно?
Аноним 24/05/23 Срд 11:45:13 #460 №2710069 
Если я учил джаву, то лучше симфони учить, а не ларавель?
Аноним 24/05/23 Срд 13:10:14 #461 №2710146 
16819890306410.jpg
>>2709639
Рад слышать, что вкатился. Мотивация для меня. Сколько перед трудоустройством самообучался?
Аноним 24/05/23 Срд 14:58:35 #462 №2710248 
>>2706437
А по сколько уроков в день ты проходил?
Аноним 24/05/23 Срд 16:06:59 #463 №2710354 
>>2710146
Всем вкатунцам на заметку, дефицит программистов такой что вас будут обучать за деньги, лучшее что вы можете найти это 1C-Bitrix, самый продвинутый фреймворк+CMS для успешных людей, потом сможете еще и Bitrix24 подтянуть, и/или 1С.

Проходите этот курс:
https://academy.1c-bitrix.ru/training/course/5862/

И если можете все повторить по нему, и более менее понимаете что вы делаете повторяя действия, то смело идите отзываться на вакансии, и вкат вам обеспечен. Курс конечно не пройти без знаний PHP и HTML, но вы можете их изучать пока его проходите, то есть смотрите урок, что то непонятно изучаете, поняли, продвинулись по курсу Bitrix дальше, и так до конца.
Аноним 24/05/23 Срд 16:55:16 #464 №2710441 
>>2710354
>дефицит программистов такой что вас будут обучать за деньги
За деньги наши или кабанчиковые? Вроде бы нет дефицита никакого
Аноним 24/05/23 Срд 17:47:31 #465 №2710513 
>>2710441
За деньги кабан кабаныча разумеется, не большие, в регионах могут и 20к платить за такое, но это лучше чем за бесплатно обучаться дома без возможности спросить что то у людей, реальных задач, разнообразных проектов, еще кабан кабаныч может и курсы предоставить какие то. Есть дефицит, или его нет не важно, хотя мне кажется что есть, главное есть данная ситуация, и это очень лакомно.
Аноним 24/05/23 Срд 18:45:36 #466 №2710617 
>>2710354
Альберт расстроится, если я пойду в Битрикс
Аноним 24/05/23 Срд 19:47:36 #467 №2710706 
>>2687463 (OP)
На Битрикс нужно написать простой пример "обработчик платежной системы".
Я глянул здесь
https://g-rain-design.ru/blog/posts/payment-handlers-bitrix-d7/
Но я так и не понял, за что отвечают функции
initiatePay
getPaymentIdFromRequest
getIndicativeFields
isMyResponseExtended
processRequest
Для чего они нужны?
>initiatePay
>Это самая главная функция в обработчике, в ней можно, например, добавить к параметрам обработчика
Что за параметры? Для чего они нужны?
Аноним 24/05/23 Срд 20:20:23 #468 №2710749 
>>2709544
VIFM попробуй, почти те же яйца но ЗЛОЕ (vimифицированные хоткеи и подход), или
Аноним 24/05/23 Срд 20:54:44 #469 №2710781 
>>2710706
initiatePay вроде нужны для дополнения к полям, которые есть в админке.
Вот для чего нужна функция
getIndicativeFields()
И что с ней сделать?
Аноним 24/05/23 Срд 21:15:38 #470 №2710794 
>>2710706
Скачай плагин на платежную систему и скопируй модуль просто, модифицируй под свое.
Аноним 24/05/23 Срд 21:48:53 #471 №2710832 
>>2710794
Мне нужно именно как в курсе
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=7847&LESSON_PATH=3913.3516.4776.7351.7847
Но в самом курсе инфы мало
Аноним 25/05/23 Чтв 07:21:29 #472 №2710993 
16819890306410.jpg
>>2710354
Походу добротный подгон от /bратишки. Будем посмотреть обязательно
Аноним 25/05/23 Чтв 07:26:22 #473 №2710995 
>>2710354

А потом не будет мучительно больно что мало того что не настоящем ЯП пишешь, так еще и на не настоящем фреймворке где деньги платить надо?
Аноним 25/05/23 Чтв 08:36:25 #474 №2711021 
>>2710354
Поясни, кстати, за сорта битрикса. Я так понимаю 1с-битрикс это CMS, где сайты можно мышкой накликивать и одновременно фреймворк, а битрикс24 это уже готовая CRM из компонентов этого фреймворка? Т.е. она сильно больше самого 1с-битрикс?
Аноним 25/05/23 Чтв 08:49:06 #475 №2711023 
Ona ne tvoya.mp4
Музыкальная пауза
Аноним 25/05/23 Чтв 09:23:37 #476 №2711039 
>>2710354
>И если можете все повторить по нему, и более менее понимаете
А как ты поймёшь этот курс? У Битрикса, мягко говоря ужасная дока, даже знаний php и mySql недостаточно, чтобы понимать все это.
Инфы мало, если не за кем повторить, то этот курс почти бесполезен. Там видео курсы есть
https://dev.1c-bitrix.ru/learning/dev.php
Но этого вообще недостаиочно.
На youtube в основном про натяжку сайта на Битрикс, а не разработку
Аноним 25/05/23 Чтв 09:28:05 #477 №2711042 
1684178962351979.jpg
>>2711039
Как вкатываться то тогда блядь если всё так плохо и непонятно
Аноним 25/05/23 Чтв 09:34:37 #478 №2711044 
ваыаыв.png
>>2711042
Аноним 25/05/23 Чтв 09:35:35 #479 №2711045 
>>2711042
Я не хотел тебя демотивировать, может тот анон прав, и сейчас вакансий на Битрикс много, но ля, дока у них просто ужас.
Очень нужно, чтобы было за кем повторить. Вот есть статьи от мр. Капучино
https://mrcappuccino.ru/blog про битрикс
Но этого тоже не достаточно. Вот реально интересно, как можно самостоятельно вкатиться в Битрикс если не считать натяжку
Аноним 25/05/23 Чтв 09:46:50 #480 №2711052 
>>2711045
>Я не хотел тебя демотивировать
Да нормально всё, я в техподдержке год отмотал это пиздец, губа с глазом перестали дёргаться только спустя 3-4 месяца после увольнения.
Какой-то кривой докой меня не напугать
Аноним 25/05/23 Чтв 10:01:36 #481 №2711063 
>>2711045
Спасибо за мистера капучино
Аноним 25/05/23 Чтв 11:28:10 #482 №2711179 
>>2710995
ЯП вполне настоящий, решает реальные задачи, а не абстрактные как часто бывает, посмотри кто его использует.

>>2711021
Все так.

>>2711039
Да вроде все ок, что там ужасного не пойму? Полностью тему не раскрывают, но если что то непонятно то можно еще один курс найти на их сайте конкретно по инфоблокам итд.
Аноним 25/05/23 Чтв 11:34:07 #483 №2711188 
>>2711045
У него по D7 полезная информация, но имхо это начинающему не особо и надо, классы какие то, гитлист к аспро компоненту дописал и нормально. Это можно получить с офф.сайта. Более глубокие знания можно уже получить на работе, работая с проектами, советуясь с коллегами.

Copy: >>2711042
Аноним 25/05/23 Чтв 15:08:54 #484 №2711489 
А если в битрикс вкатываться CSS надо учить? HTML как арэшки щас погрыз а вот CSS чё то пиздык какой-то.
Аноним 25/05/23 Чтв 15:53:03 #485 №2711529 
image.png
Почему $this работает как замыкание use()?
В js например так не сработает и там var that = this надо делать

class A
{
private $zhopa = '111111111111111';

public function getFunc()
{
$hui = 222222222222222;

return function () use ($hui) {
echo $this->zhopa;
echo PHP_EOL;
echo $hui;
};
}

}

class B {

private $zhopa = 777777777777;

public function run($callback)
{
$hui = 88888888888888888;
$callback();
}
}

$a = new A();
$b = new B();

$b->run($a->getFunc());
Аноним 25/05/23 Чтв 16:22:54 #486 №2711570 
>>2711179
>Все так
Т.е. с начала надо освоить 1с-битрикс, а потом уже б24? Если меня сразу хотят головой в б24 окунуть - сильно тяжко будет?
Аноним 25/05/23 Чтв 16:33:32 #487 №2711599 
>>2710248
> А по сколько уроков в день ты проходил?
По-разному, если курс простой то мог за день 4-5 пройти, если сложный то над одним уроком мог по нескольку дней сидеть. Если долго не мог решить задачу, смотрел решение учителя, у меня практически в каждом курсе по 1-2-3 подсмотренных задачи.
Аноним 25/05/23 Чтв 16:39:00 #488 №2711617 
>>2710146
Два года, первый год проебал на рытье в инфоциганской помойке в поиске курсов, второй год уже нормально учился, при чем половина второго года ушла на ларавель
Аноним 25/05/23 Чтв 17:00:58 #489 №2711659 
>>2711529
Сам нашел https://www.php.net/manual/ru/functions.anonymous.php
Пример #5 Автоматическое связывание $this
Аноним 25/05/23 Чтв 17:29:39 #490 №2711712 
>>2711570
Нет, потому что не все знания от 1С-Битрикс применимы к Битрикс24, и наоборот. Скорее всего будешь вызывать API из своих скриптов, и именно дорабатывать Битрикс24 тебя не заставят, только писать внешние программы.
Аноним 25/05/23 Чтв 17:31:17 #491 №2711716 
>>2711570
Поэтому тяжко не будет, вот документация на API https://dev.1c-bitrix.ru/rest_help/

Задачи будут в стиле у клиента день рождение, значит создать задачу о поздравлении, по сути вызвать метод на получение клиентов с датой рождения сегоднешнего дня, и если они есть посоздавать задач.
Аноним 25/05/23 Чтв 20:17:55 #492 №2711934 
>>2711599
я на бесплатном на хекслет по пхп по одному решаю, больше физически не могу.
Аноним 26/05/23 Птн 00:13:06 #493 №2712083 
>>2687566
Нуачо. Вполне себе действенный метод для микросервиса. Я бы ещё посоветовал бы накатить workerman и запустить http worker и там все прописать.
Аноним 26/05/23 Птн 00:50:09 #494 №2712112 
>>2711529

Потому, что в JS сделано глупо.
Аноним 26/05/23 Птн 01:06:52 #495 №2712118 
>>2702293

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

> (\S+\,\S+)|(\S+\;\S+)|(\S+\?\S+)|(\S+\:\S+)

Просто написать "не-пробел, за ним запятая или вопрос или ..., за ними снова не-пробел".

> \s+но\s+
А это сработает на слово "но", независимо от того, есть перед ним запятая или нет. Лучше исправить так:

буква, за ней пробелы, за ней "но", за ним граница слова

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

+ * ? \ ( ) [ ] { } . | ^ $

Остальное можно не экранировать.

По второй задаче: вместо этого

> (\,)|(\;)|(\?)|(\!)|(\:)

Можно было просто использовать кваратные скобки, и в них эти символы экранировать не надо.
Аноним 26/05/23 Птн 01:11:00 #496 №2712120 
>>2709309

Да, так будет короче и читабельнее.
Аноним 26/05/23 Птн 01:15:09 #497 №2712122 
>>2711042

Если тебе непонятно, то это обычно из-за того, что ты не выучил какие-то базовые вещи.

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

Подучи PHP, HTML, ООП, MVC, ORM, почитай про фреймворки, и тд. И тогда, я думаю, легко сможешь освоить это.
Аноним 26/05/23 Птн 01:16:40 #498 №2712124 
>>2711489

А что сложного в CSS? Это просто технология для расстановки прямоугольников по странице.
Аноним 26/05/23 Птн 08:30:52 #499 №2712174 
Нужно изучать докер? Или пхпшнику достаточно настроить обычный LAMP на серваке?
Аноним 26/05/23 Птн 09:42:22 #500 №2712223 
image.png
>>2711617
пожалуйста накидай годных курсов/сайтов. Мне нужны денюжки на кушать я запасы проедаю уже. А в техподдержку больше не хочу, я бухать начал от того что там работал
Аноним 26/05/23 Птн 09:45:46 #501 №2712228 
>>2712174
Достаточно знать как заливать файлы на хостинг и менять там версию.
Аноним 26/05/23 Птн 09:45:55 #502 №2712229 
>>2712174
сейчас вся разработка под докером идёт
Аноним 26/05/23 Птн 09:46:40 #503 №2712231 
>>2712223
Альберт Profit Степанцев. Пишешь ему: "я перат, но хочу учиться" и он тебе ещё скидку сделает.
Аноним 26/05/23 Птн 09:46:41 #504 №2712232 
>>2712229
Неправда, до 200к можно вполне работать без докера.
Аноним 26/05/23 Птн 10:05:01 #505 №2712246 
>>2712231
Альберт Степанцев, ты?
Аноним 26/05/23 Птн 11:26:03 #506 №2712303 
Какой же битрикс ёбнутый, я сегодня 6 часов ковырялся в нем и так и не зделал нихуя сука.
Аноним 26/05/23 Птн 11:33:13 #507 №2712312 
>>2712303
А че делал?
Аноним 26/05/23 Птн 11:39:17 #508 №2712319 
image.png
>>2712312
Мне надо было вывести новости по разделам инфоблока. То есть на старнице должны быть переключатели как у яндекса, а по клику на название раздела выводились бы новости из этого раздела. Я нашел несколько вариантов, но все силы потратил еще вначале на то чтоб сделать через чистый js, в итоге чистый жс мне пишет что нет функции addEventListener, как я понял это не работает в битриксе и надо юзать их библиотеку, чтоб заработало, но я не осилил.

Потом пробовал через menu.section, через каталог секшон, но чето ниче не получилось. Надо наверное завтра снова пробовать, может мозг обновится и придут какие-то мысли хз.
Аноним 26/05/23 Птн 11:48:24 #509 №2712330 
>>2712174
> Нужно изучать докер? Или пхпшнику достаточно настроить обычный LAMP на серваке?

Докер полезно изучить даже для себя, я теперь всегда только с ним и работают. Это как git, типа можно и бе него но удобно ж епт
Аноним 26/05/23 Птн 12:20:20 #510 №2712374 
>>2712330
закрой свою пасть
Аноним 26/05/23 Птн 12:36:28 #511 №2712383 
>>2712319
addEventListener это функция из браузера, битрикс с ней ничего не делает.

Тебе нужно просто взять компонент новостей, задать ему url для разделов, типо /news/sport/ это раздел а /news/sport/moya-krutaya-statya это ссылка на новость, сделать файл ext-menu где просто будешь брать секции и вставлять их как будто у тебя есть разделы настоящие https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3254

По сути нужно лишь передвинуть один компонент, изменить настройки в нем и меню, и написать строк 10 кода.
Аноним 26/05/23 Птн 12:38:04 #512 №2712385 
>>2712319
Задача очень просто делается, спроси у них на форуме как это делается если не понял что я написал, со знанием того как и что делается это можно за 10 минут сделать лениво.
Аноним 26/05/23 Птн 12:42:07 #513 №2712391 
>>2712385
>>2712383
А это страница будет обновляться или без обновления будет происходить смена разделов? Мне надо чтоб прям на странице чел мог кликнуть по интересующему его разделу новостей и увидеть оттуда новости.
Аноним 26/05/23 Птн 12:50:52 #514 №2712408 
>>2712391
Будет переход на другую страницу. Тебе по заданию нужно сделать без перехода, если нет я бы отказался от этой идеи. Но если по заданию, то сделай сначала с переходом по url, и уже потом навешивай на меню событие onclick, и загружай по ajax новый контент в компонент новости.

https://denisbunakov.ru/blog/zapiski-razrabotchika/ajax-v-1c-bitriks/
Аноним 26/05/23 Птн 13:17:55 #515 №2712436 
>>2712408
>Тебе по заданию нужно сделать без перехода
Это дополнительное задание, но я думаю нет смысла не делать это. Чем больше я узнаю и сделаю, тем проще мне будет на работе. А если я не смогу это сделать, значит надо набраться знаний еще.

Спасибо. На канале "Я - кодер" чел сделал через catalog.section.list, но у него там вёрстка своя, думаю вот еще попробую скопирну его верстку и сделаю как он.

Вообще конечно нужен бы какой-нибудь суперкурс 2023 по битриксу от синьора битриксоида, чтоб прям много-много всего рассмотрел, чтоб еще видео было в 1080p, чтоб всё по делу и чётко. И еще бесплатный - на ютубе.
Аноним 26/05/23 Птн 14:33:18 #516 №2712508 
Капец тут битриксойдный клуб образовался. А ведь полгода-год назад посчиталось бы зашкваром не осуждаю, сам в битриксе
Аноним 26/05/23 Птн 14:53:34 #517 №2712571 
>>2712508
Щяс битрикс это проходной билет. Почти в любой норм компании, которая разрабатывает на битрикс, есть так же задачи по 3 основным фрейворкам. А еще на битрикс они пишут чисто ооп, никакого старого ядра.
Аноним 26/05/23 Птн 17:57:01 #518 №2712870 
сайт визитка.png
>>2712124
>>2711489
Короче разобрался с HTML и CSS немножко. Курочка по зёрнышку клюёт ебатб. Когда открыл урок по ПХП и на пороге появился ХТМЛ я тут же жидко насрал в штаны и подумал ну его нахуй.

А ща намана разобрался ебатб. Ниче служнава в этих ваших ХТМЛ И КСС ебатб

Тыкаться надо тыкаться самому постоянно ебатб. Уроки смотришь нихуя не понятно
Аноним 26/05/23 Птн 18:05:23 #519 №2712880 
>>2712571
Вопрос к знатокам: Правильно ли я понимаю что про ХТМЛ и КСС можно по сути забыть щас. Ну я вкурил как оно работает в общем плане. Как КСС файл устроен, .классы там ебатб и т.д.

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

Поясните хуёвы ли план
Аноним 26/05/23 Птн 18:06:24 #520 №2712882 
>>2712880
А ну и так же ООП курю
Аноним 26/05/23 Птн 19:15:18 #521 №2712978 
>>2712880
отличный план вкатывался также только без битрикса ||правда на первом проекте приходилось на блейде и vanilla.js бахать но потом пересадили чисто на бек||
Аноним 26/05/23 Птн 20:45:59 #522 №2713087 
изображение.png
Написал вот такой код для разделения прав доступа. Позже планирую заменить if на swtch. Чем он плох?
Код учебный, для лабы по SQl
Аноним 26/05/23 Птн 20:52:06 #523 №2713093 
>>2713087
Как минимум sql injection.
Аноним 26/05/23 Птн 23:17:08 #524 №2713211 
никогда не использовал mysqli* функции сразу начал с PDO
в чем я не прав?
Аноним 26/05/23 Птн 23:18:16 #525 №2713212 
>>2713087
ты смешиваешь V и M из паттерна MVC, прочитай про это.
Аноним 27/05/23 Суб 01:04:13 #526 №2713256 
>>2712870

Не хочешь наши простые задачки на CSS порешать? Они правда довольно старые, но зато относительно простые и для решения одной задачки не надо много изучать, так что ты быстро почуствуешь уверенность в себе: https://github.com/codedokode/pasta/blob/master/html/html.md
Аноним 27/05/23 Суб 01:05:20 #527 №2713257 
>>2712880

Ты можешь перенести HTML/CSS на потом, если сейчас нет времени, но все равно скорее всего их придется изучать. Ну как ты придешь в фирму, тебя попросят меню перекрасить, а ты скажешь, я этого не умею? Ну тогда на этом испытательный срок и закончится.
Аноним 27/05/23 Суб 01:14:51 #528 №2713261 
>>2713087

Проблемы твоего кода:

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

Надо сделать все это отдельно. В виде отдельных функций с понятными названиями. Например:

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

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

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

const RANG_ADMIN = 3;

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

Ну и еще, не подставляй переменные в SQL запрос, прочти про инъекции: https://github.com/codedokode/pasta/blob/master/security/sql-injection.md

Не храни пароли в открытом виде, соли их: https://github.com/codedokode/pasta/blob/master/security/password-hashing.md

При выводе экранируй данные для предотвращения XSS: https://github.com/codedokode/pasta/blob/master/security/xss.md

Ну и наконец, желательно вынести весь HTML в отдельный файл-шаблон: https://github.com/codedokode/pasta/blob/master/php/templates.md

Если вас такому коду учат, то это плохо. На работу с таким кодом тебя не возьмут. Срочно переучивайся.
Аноним 27/05/23 Суб 02:56:57 #529 №2713290 
image.png
Примерно так в ларавеле устроено?
Сами для каких целей используете Pipeline + middleware?
Такая схема сложная в реальной разработке или делают проще?
На пике самописный фрейм, не мой. Каждая верхний объект оборачивает нижний, туда идет реквест, наверх идет респонс по psr7
Аноним 27/05/23 Суб 05:18:42 #530 №2713309 
>>2713093
Про это знаю. В этот раз можно не делать защиту от них.
>>2713212
Спасибо
>>2713261
Спасибо за развернутый ответ.
>Если вас такому коду учат
Не учат. Нам преподают mysql. Сейчас надо создать бд, нормализовать её, написать к ней веб-приложение с системой регистрации, в котором создать админа, юзера и гостя после чего вывести запросы к бд в браузер. Веб-программирование не преподавали. Совсем. БД я написал и уже нормализовал.
Аноним 27/05/23 Суб 06:30:39 #531 №2713320 
>>2711934
Это норм, у меня в среднем так и выходило
Аноним 27/05/23 Суб 07:34:13 #532 №2713331 
>>2713087
Сейчас в РНР пишут в ООП стиле, поэтому необходимо использовать PDO и делать классы-обертки для твоих сущностей в базе.
Аноним 27/05/23 Суб 08:13:41 #533 №2713339 
изображение.png
>>2712223
Аноним 27/05/23 Суб 08:59:28 #534 №2713347 
сите тупа.png
>>2713257
>>2712870
Перекрас меню ты имеешь ввиду типа тупо в CSS цвет поменять? Ну вот я умею

>>2713256
О, спасибо за задачки. Базар жок, порешаем.
Аноним 27/05/23 Суб 09:01:51 #535 №2713348 
image.png
>>2713339
Дай б-г здоровья таким анонам как ты. Анон никогда в беде не бросит. Сохранил и буду двигаться по роудмапу
Аноним 27/05/23 Суб 14:01:56 #536 №2713497 
Что такое битрикс?
Аноним 27/05/23 Суб 17:06:30 #537 №2713663 
>>2713497

>>2711021
Аноним 27/05/23 Суб 17:43:26 #538 №2713672 
>>2713497
Битрикс ето кал.
Аноним 27/05/23 Суб 21:24:40 #539 №2713789 
>>2704916
Что не так с марлин дев?
Аноним 28/05/23 Вск 16:38:33 #540 №2714189 
>>2712508
Двачую, резко тред превратился в сборище говноедов, хз откуда столько набежало, с работы на заводе всех поперли чтоле, с этого >>2713339
вообще охуел, лаврика смотреть, читать котерова, шли бы уж сразу в 1С тогда

>>2713497
Конструктор сайтов для снг макак
Аноним 28/05/23 Вск 16:52:38 #541 №2714198 
>>2713347

Перекрашивание это хорошо, но еще надо подтянуть позиционирование, то есть свойства display, float, position, задачки как раз про это.

>>2713339

А зачем вы так хекслет рекламируете? Типа они пару раз упомянули функциональное программирование и половина /pr бежит их рекламировать?
Аноним 28/05/23 Вск 17:10:28 #542 №2714215 
я принес свой говнокод с курса , памагите 4 имени и цифра индекс массива <?php
$a=readline();
$b=readline();
$c=readline();
$e=readline();
$z=readline();
$myarr=array($a,$b,$c,$e,$z);
echo $myarr[$z];
?>
Аноним 28/05/23 Вск 17:19:59 #543 №2714228 
>>2714189
Ну давай предложи свои варики.
Аноним 28/05/23 Вск 17:28:23 #544 №2714242 
>>2714198
>А зачем вы так хекслет рекламируете?
Предложи курс по пыхе лучше, я вот не смог найти
Аноним 28/05/23 Вск 18:23:51 #545 №2714299 
>>2714215
>памагите
>$c
>$e
Как тебе помочь? Эвтаназия в РФ запрещена.
Аноним 28/05/23 Вск 18:42:01 #546 №2714314 
>>2714215
echo $myarr[4]; //выедет значение которое было в $z
Или создавай массив по другому
$myarr = [
'a' => $a,
'b' => $b,
....
'z' => $z
];
Аноним 28/05/23 Вск 18:49:07 #547 №2714324 
>>2714299
спасибо прийду еще
Аноним 28/05/23 Вск 18:50:23 #548 №2714327 
>>2714314
спасибо там всратая задача и я тупой, ща принесу
На стандартный вход подается 4 строки и число от 0 до 3 (индекс). Все на отдельных строках.

Вам нужно считать 4 строки и сделать их элементами массива myarr в такой же последовательности, в которой они вводятся. В результате у вас должен быть массив myarr с четырьмя элементами. После этого нужно вывести элемент массива myarr с указанным индексом.
Аноним 28/05/23 Вск 18:51:22 #549 №2714329 
>>2714314
то есть 5 цифра выдает из массива значение
Аноним 28/05/23 Вск 18:53:32 #550 №2714331 
>>2714314
похоже я лоу аку
Аноним 28/05/23 Вск 18:56:40 #551 №2714333 
>>2714314
так что пывышаем айку Верно решили 443 учащихся
Из всех попыток 22% верных
Аноним 28/05/23 Вск 18:57:28 #552 №2714336 
>>2714198
Спасибо за совет про позиционирование. Щас вот всё таки решил пару дней поковырять чисто HTML, там КСС буду ковырять с задачками!
Аноним 28/05/23 Вск 18:59:21 #553 №2714341 
>>2714314
>>2714299
пацаны я решил так что сам еще не дегенерат
<?php
$a=readline();
$b=readline();
$c=readline();
$e=readline();
$z=readline();
$myarr=array($a,$b,$c,$e);
echo $myarr[$z];
?>
Аноним 28/05/23 Вск 19:00:57 #554 №2714344 
>>2714215
хекслет?
Аноним 28/05/23 Вск 19:10:37 #555 №2714354 
>>2714344
не степик
Аноним 28/05/23 Вск 21:18:46 #556 №2714509 
>>2714354
там хуёвый курс какой-то, тот что бесплатный.
Аноним 28/05/23 Вск 21:19:05 #557 №2714510 
хотя , их там несколько
Аноним 28/05/23 Вск 21:41:50 #558 №2714526 
>>2714509
кому как
Аноним 28/05/23 Вск 21:51:39 #559 №2714531 
>>2714509
желаю тебе добра и успехов, ведь мнение всего лишь мнение))
Аноним 29/05/23 Пнд 01:28:11 #560 №2714620 
>>2714242
Я PHP изучал по php.net, даже не знаю что может быть лучше
Аноним 29/05/23 Пнд 08:57:57 #561 №2714719 
>>2714341
В натуре пхп проклятый язык. Только сюда тянутся дегенераты, которые даже алфавит не осилили.
Аноним 29/05/23 Пнд 11:16:38 #562 №2714846 
>>2714719
жалко у нас челы агрессивные водятся и еще пытаются конкурентов отвадить))) я еще работать готов дешевле чем ты )))))
Аноним 29/05/23 Пнд 11:17:57 #563 №2714849 
>>2714719
он не хуже других, а еще и похож на многие
Аноним 29/05/23 Пнд 12:22:12 #564 №2714937 
Может всё таки можно писать на РНР в VS Code?
Аноним 29/05/23 Пнд 12:45:59 #565 №2714966 
>>2714937
Я даже на целероне ставил PhpStorm, потому что несмотря на ужаснейшие тормоза этой жабопрограммы, он делает работу настолько удобной и простой, что можно и потерпеть, в VSCode текст быстрее набирался, и небыло фризов, но работа с git отстой, автодополнения можно сказать нету, кучи фишек и гибким чекеров ошибок нету, отладчик так себе.
Аноним 29/05/23 Пнд 12:47:16 #566 №2714968 
>>2714937
Можно, но по функционалу конкретно для пхп это 2/5, а пхпшторм это 5/5.
Аноним 29/05/23 Пнд 15:13:29 #567 №2715198 
>>2714966
>на целероне
Запускал на Core2Duo и не дождался момента, когда можно было бы вводить код.

>>2714968
Я раньше в notepad++ писал и норм было. Даже сайтик для одной конторы сделал и мне 15к за него заплатили. А теперь видите ли надо какую-то монструозную иде ставить, чтобы писать сайты.
Аноним 29/05/23 Пнд 15:25:59 #568 №2715217 
>>2715198
>Я раньше в notepad++ писал и норм было. Даже сайтик для одной конторы сделал и мне 15к за него заплатили.
Сайтики за 15к можно во встроенном редакторе из админки битрикса писать.
Аноним 29/05/23 Пнд 17:03:07 #569 №2715363 
>>2715198
>Я раньше в notepad++ писал и норм было
А что собственно было "норм"? Че заебатого?
Аноним 29/05/23 Пнд 17:23:03 #570 №2715415 
>>2715363
Там подсветка синтаксиса есть и этого было достаточно.
Это сейчас все избалованы, что иде сама пишет код. А тогда и такие мелочи были приятны.
Аноним 29/05/23 Пнд 17:41:20 #571 №2715456 
>>2715415
>Это сейчас все избалованы, что иде сама пишет код. А тогда и такие мелочи были приятны.
Когда тогда? За 10 лет до появление notepad++ IDE уже использовались.
Аноним 29/05/23 Пнд 19:20:45 #572 №2715684 
>>2715198
ИДЕ это просто удобно. Тебе сразу показывает какие методы там есть, где какие ошибки, можно задебажить.

Твои слова можно сказать по-другому: "Зачем жить, если мы все равно умрем?"
Аноним 29/05/23 Пнд 22:44:50 #573 №2715866 
>>2715415
>Там подсветка синтаксиса есть и этого было достаточно
Достаточно для чего? Чтобы ебашить баги в прод? А если подсветку убрать еще заебаче станет?

>Это сейчас все избалованы, что иде сама пишет код. А тогда и такие мелочи были приятны.
Пиздец, какой же там сквозняк в кукухе если дебаггер и статический анализатор превратились в "баловство". А гит это походу та самая мелочь, которая булки слишком расслабляет.
Аноним 30/05/23 Втр 15:27:53 #574 №2716473 
>>2715866
>гит
Как по мне скопировать проект в отдельную папку надёжнее, чем полагаться на какие-то мутные схемы гита. Читал, что можно легко всё запороть, если неправильно команды ввести.
Аноним 30/05/23 Втр 16:53:14 #575 №2716565 
>>2716473
так только по началу кажется, в дальнейшем поймешь, что системы контрля версий наше все
Аноним 30/05/23 Втр 17:58:53 #576 №2716616 
>>2714242
>я вот не смог найти

Поисковик гугля и ютуба не смог найти?
Аноним 30/05/23 Втр 18:20:08 #577 №2716633 
>>2716473
>скопировать проект в отдельную папку надёжнее, чем полагаться на какие-то мутные схемы гита
Тебе как вообще, мутные схемы не мешают в интернет выходить? Мобильный телефон не слишком мутная технология? А компудахтер?
Код гусиным пером в самый раз писать, а на сервак голубями отсылать, а то схема мутная получается слишком.
Аноним 30/05/23 Втр 19:15:18 #578 №2716729 
image.png
>>2687463 (OP)
>PHP фреймворки
>ModX
Так это фреймворк или CMS?
Аноним 30/05/23 Втр 20:00:40 #579 №2716772 
Снимок экрана 2023-05-30 в 19.55.14.png
Задача: Клавиша shift
Аноны, прошу посмотреть решение, что нужно поправить, что не так.

https://ideone.com/JHhI3o
Аноним 30/05/23 Втр 21:09:37 #580 №2716845 
>>2714509
обоснуй
Аноним 31/05/23 Срд 08:06:19 #581 №2717070 
>>2716772
С написанием все в порядке, а вот с ОПИСАНИЕМ все плохо.

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

1) Ты вводишь новые бизнес правила в своем коде. Как они звучат? Это зависит от того понял ли ты задачу.
"Первая буква в предложении должна быть заглавной".
"Перед знаками препинания нет пробелов"
"После знаков препинания один пробел"

Исходя из этих правил тебе и нужно именовать переменные в коде.
Ты вроде частично даже начал: firstChar, sentence. Но почему-то на этом остановился. Почему makeFirstCharUpperCase принимает text, да еще и массив? Нам нужно сделать первую букву ПРЕДЛОЖЕНИЯ заглавной. Почему firstChar превратился в upperChar? У тебя нет "upperChar" у тебя есть "upperCase". Это же логично и наглядно, когда ты сначала получаешь firstChar, а потом делаешь его upper.

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

2) Твоя функция makeFirstCharUpperCase делает несколько неожиданных вещей.
Откуда там trim? Ты не написал что функция удаляет пробелы, ты написал что она делает первую букву заглавной. Почему она принимает массив, а возвращает строку? Я реально несколько минут думал как массив $sentences после preg_replace превратился в строку. А он превратился в строку раньше, почему-то внутри makeFirstCharUpperCase. Что опять таки меняет тип переменной.

3) У тебя совершенно нет структуры в функции fixText.
Что тебе по сути нужно сделать? Разбить входящий текст на массив предложений sentences, потом применить к этому массиву набор функций-правил. Первое правило делает первую букву заглавной, второе правило меняет пробелы, третье правило делает все кроме первой буквы ловер кейсом, например. Потом собрать предложения в текст и вернуть.

Если все замечания поправить, то получится вот так https://3v4l.org/hkjXO . Просто и понятно.
Посмотри на код с 60 строки. Именно этот код будет постоянно на глазах, с ним будут работать. Тебе не нужно лезть внутрь функций чтобы понять что мы делаем - все наглядно и читаемо с первого взгляда.
Аноним 31/05/23 Срд 19:45:02 #582 №2717888 
>>2717070
Спасибо за подробный ответ.
Аноним 31/05/23 Срд 20:38:13 #583 №2717945 
16849396908370.jpg
Это норма, если нэймспейс не совпадает с расположением на диске?
Аноним 31/05/23 Срд 21:50:47 #584 №2718014 
>>2717945
https://www.php-fig.org/psr/psr-4/
Аноним 31/05/23 Срд 22:43:45 #585 №2718054 
пацаны, там дотнет стал кроссплатформенным, теперь не нужно есть говно.
Аноним 31/05/23 Срд 22:47:25 #586 №2718057 
>>2718054
Как там в 2к10? Он уже сто лет на линупсе, только вот лучше он не стал. PHP делает своё дело, шарп делает другое дело.
Аноним 01/06/23 Чтв 04:17:56 #587 №2718170 
>>2718057
Вылезай из крио-камеры, он официально кросс и не плохо показывает производительность. При этом нет тухлой жабьей овер-ресурной пародии на веб. И не надо плюваться от бойлерплейтного Го
Аноним 01/06/23 Чтв 08:14:55 #588 №2718199 
>>2718054
Приходи, когда он станет ещё и обратносовместимым. И не будет жесткой привязки к версиям дотнета.
Аноним 01/06/23 Чтв 09:34:55 #589 №2718242 
Почему нельзя использовать двойные кавычки? Некоторые преподаватели даже ставят сразу двойку, если увидят в коде студента двойные кавычки. Чем они так плохи?
Аноним 01/06/23 Чтв 09:49:07 #590 №2718247 
phpstormnotfound.jpg
Ну и чем ваш PHPStrom так хорош? Я думал, что в VS Code нет полноценной поддержки фреймворков, поэтому некоторые методы он не видит. А оказалось, что шторм тоже ничего не видит и не знает. Дак какой смысл использовать это лагающее чудовище, если результат тот же самый?
Аноним 01/06/23 Чтв 09:57:07 #591 №2718251 
>>2718247
Плагин laravel поставь.
Аноним 01/06/23 Чтв 10:17:20 #592 №2718259 
paidpluginlaravel.jpg
>>2718251
Они ещё плагины продают!
Аноним 01/06/23 Чтв 10:24:37 #593 №2718264 
Screenshot 2023-06-01 102039.png
>>2718247
>это лагающее чудовище
Откуда вы лезете блядь? У меня шторм запускается меньше чем за секнду. А плагины все "покупаются" там же где и лицензия.
Аноним 01/06/23 Чтв 10:26:10 #594 №2718266 
>>2718259
Из альтернатив сидеть на блокноте с подсветкой VSCode
Аноним 01/06/23 Чтв 10:56:09 #595 №2718298 
>>2718247
//ctrl + shift + enter - auto semicolon
//alt + insert - autocomplete construct
//ctrl + alt + L - reformat code
//ctrl + alt + shift + L - reformat file/code
//ctrl + D - скопировать строку вниз
//double shift - поиск, можно задать шорткат для многих вещей, например для emmet - Surround with Emmet
//ЛКМ, потом alt + enter - импортируем класс
//ctrl + W - выделить строку для редактирования
//х2-ЛКМ по слову, затем alt + J - выделяем поочередно все одинаковые строки
//затем нажимаем стрелку влево, затем зажимаем ctrl + shift и потом можем выделять
//вправо или влево все выделенные строки
//ctrl + P в аргументах метода, так можно увидеть, что ожидает на вход метод, что можно получить
//shift + f6 - rename all the same

//LARAVEL
//alt + Enter на Post ($post = Post::find(1);) - импротировать класс (use App\Models\Post;)
Аноним 01/06/23 Чтв 11:12:03 #596 №2718315 
>>2712223
ну как ты там анон? учишься?
Аноним 01/06/23 Чтв 11:52:15 #597 №2718343 
>>2718264
А сам шторм почему такой функционал не предоставляет? Они за что деньги берут? За красивые кнопочки что ли? А если хотите ещё чтобы методы находились, то покупайте платные плагины.
И ведь по-любому кто-то ведётся и покупает это всё. Хотя слово покупает тут не уместно, потому что они требуют постоянных платежей, т.е. тебе дают этот функционал на время, пока им денежки отстёгиваешь.
Аноним 01/06/23 Чтв 12:17:34 #598 №2718362 
>>2718343
Там же магия а не просто методы.
Аноним 01/06/23 Чтв 12:19:34 #599 №2718363 
Screenshot 2023-06-01 121411.png
>>2718343
Уася, со штормом идёт по умолчанию только 91 плагин.

>А если хотите ещё чтобы методы находились, то покупайте платные плагины.
Это плагины от третьих лиц, чучело. Причем рядом с ними спокойно лежат бесплатные плагины. И чтобы кто-то заплатил тебе бабос за то что можно получить бесплатно нужно сделать очень охуенный плагин, смекаешь?

>И ведь по-любому кто-то ведётся и покупает это всё.
Уася, я ни разу в жизни не покупал лицензию шторма, мне её покупал работодатель. Так же как и лицензию на слак и джиру. Ты если узнаешь цену лицензии на джиру для компании с 1к человек, то у тебя волосы на жопе зашевелятся.
Аноним 01/06/23 Чтв 12:27:02 #600 №2718373 
>>2718363
>слак и джиру
Нафига они нужны? Без них сайты не получается писать что ли?
Аноним 01/06/23 Чтв 12:46:57 #601 №2718401 
>>2718373
Конфлюенс забыл, figma и vcs хранилище (github, gitlab, bitbucket).

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

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

Причем это мималОчка. Для средненького проектика.
Поэтому если кого-то из этих людей нет, то нужно сразу понимать что либо тут никто никуда не спешит (чего блядь не бывает, все спешат), либо кто-то безбожно кроит и кого-то хотят загрузить двойной или даже тройной работой.
Аноним 01/06/23 Чтв 15:59:35 #602 №2718592 
гiт.jpg
Ещё в VS Code всегда показывается счётчик незакоммиченных файлов, в пхпшторме такого нет и потому всегда забываю коммитить. Начинаю делать следующую фичу и потом вспоминаю, что забыл прошлую закоммитить.
Аноним 01/06/23 Чтв 17:02:24 #603 №2718686 
Screenshot 2023-06-01 170150.png
>>2718592
Во первых есть какой-то плагин, который это показывает.

А во вторых КАВО? Какого хуя ты разные фичи в одной ветке делаешь?
В шторме есть таск менеджер. Он подсасывает с твоего таск трекера твои таски и к каждой таске привязывает ченджлист и гит ветку. Ты можешь НЕ коммитить текущие изменения и просто переключится на другую таску. При этом автоматически зачекаутится нужная ветка и поменяется ченджлист. Это полезно если нужно быстренько что-то в другой ветке поменять и не лезть руками что-то стешить, анстешить.
Но до такой хуйни чтобы в ОДНУ ветку разные таски хуярить и как-то коммитами их разбивать ни один долбоеб не догадался ещё.
Аноним 01/06/23 Чтв 17:07:52 #604 №2718695 
>>2718686
Да. "context" на скрине это открытые файлы. Переключаешься на таску а шторм помнит с какими файлами ты работал.
Аноним 01/06/23 Чтв 18:38:22 #605 №2718772 
>>2718199
Там как раз все обратно совместимо. Твой говнокод 3х летней давности запуститься на новом дотнете.
Аноним 01/06/23 Чтв 19:47:12 #606 №2718842 
Может мне кто-нибудь сказать, почему когда i становится 25, то после нее идет не i = 26, а i = 1?
https://ideone.com/gzpdyO
Вкратце:
Этот код гуляет по массиву, отсчитывая по 5 элементов.
Останавливается на 5-ом, удаляет его из массива.
И начинает гулять дальше, начиная с 6-го элемента.
Если элемент до этого был удален, то он пропустит его.
Т.е. будет гулять так: 3, 4, 6, 7, 8, пропустив удаленную 5.
Все хорошо работает, пока выбывшее число не 24.
В массиве после 24-рех идет 26.
25, как пустое место, он пропускает и должен начать с 26-го.
Но. Он начинает заново. Я не понимаю где i меняется на 1.
Аноним 01/06/23 Чтв 19:49:01 #607 №2718843 
>>2718363

> со штормом идёт по умолчанию только 91 плагин.

Это ничего не значит, так как это могут быть какие-нибудь плагины нужные 0.1% пользователей, как тот же phing на твоем скриншоте.
Аноним 01/06/23 Чтв 19:55:32 #608 №2718847 
Screenshot 2023-06-01 195247.png
>>2718843
Нихуя ты зрячий. А DatabaseTools, который заменяет десяток ПРИЛОЖЕНИЙ ты и не заметил. С подсветкой синтаксиса в коде, когда ты буквально можешь на любую колонку в тексте нажать ctrl+q и увидеть таблицу схему и всю хуйню.
Аноним 01/06/23 Чтв 20:17:17 #609 №2718867 
>>2718772
Ничего не запустится. Я пробовал изучать асп по книжке 3 летней давности и столкнулся с тем, что примеры не работали, так как требовали того старого дотнета. Про запуск же готового проекта тут и речи быть не может, он просто не запустится.
Аноним 01/06/23 Чтв 20:21:14 #610 №2718872 
redis.png
>>2718843
Нихуя, добавили поддержку редиса наконец-то официально. Вот зачем нахуй нужен шторм. Чтобы вот такой кайфарик тебе дарили. Чтобы ты прямо во время дебага кеш чекал в один клик.
Аноним 01/06/23 Чтв 20:28:46 #611 №2718882 
>>2718867
Поставил бы старый дотнет, хотя ты наверняка кушал какое-то переиздание еще до core версии дотнета.

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

Особенно когда есть официальная документация или даже тот же https://metanit.com/sharp/
Аноним 01/06/23 Чтв 20:40:01 #612 №2718904 
>>2718882
Там дотнет 2.1 был. Книжка Фримана если что.
Я не буду в дотнет возвращаться, потому что РНР оказался в разы круче. Теперь жалею, что потратил столько времени на сишарп этот.
Аноним 01/06/23 Чтв 20:47:50 #613 №2718919 
>>2718842
Ладно, думаю, я сам разобрался откуда там 1.
Аноним 01/06/23 Чтв 20:57:08 #614 №2718932 
>>2718401
Хз что за огород ты тут нагородил. В битре всё делает либо один либо два человека.
Аноним 01/06/23 Чтв 21:07:58 #615 №2718944 
>>2718932
Ну земля пухом этим долбоебам, хули. Полы в офисе они, надеюсь, сами не моют?
Аноним 01/06/23 Чтв 22:15:28 #616 №2718998 
>>2718904
>С одного из хороших статик языков общего назначения, перекатился в динамикудресню ограниченного использования.
>Радуется этому.
Теперь я понимаю почему ты не мог поднять веб сервер, который представляется из коробки в IDE по одному клику.
Аноним 01/06/23 Чтв 22:30:59 #617 №2719007 
сайт пенчеса.png
>>2718315
Да анонче, пока пхп трогал только мельком. Сижу по пару часов в день в среднем ковыряю html/css, а именно решил что как только запилю "сайт"
по вот этому гайду https://www.youtube.com/watch?v=SpCUuyZZTp8&t=882s
то начну в пхп

На 90% "сайт" уже готов, но как-то затянуло немножко, хочу прям поковыряться посидеть поиграться с этим ПРОЕКТОМ.

1-2 дня ковыряюсь с сайтом пены и сажусь за ПХП короче. Там дальше html и css буду покуривать мимоходом уже в процессе так сказатб
Аноним 02/06/23 Птн 00:00:32 #618 №2719052 
>>2718919
Все-таки я смог решить эту задачу (наверное!)
Долго, конечно, до меня доходило что нужно дописать в коде
https://ideone.com/ZJTPRh
Аноним 02/06/23 Птн 11:54:34 #619 №2719362 
>>2719007
Ты завязал со стримингом что ли?
Аноним 02/06/23 Птн 11:58:06 #620 №2719367 
core21.jpg
>>2718998
Я не мог поставить дотнет 2.1 на линукс. Точнее поставил, но он не работал, а выдавал ошибку, что невозможно создать проект. Проблема заключалась в том, что дотнет анально привязан к библиотекам SSL. Если ОС ставит более свежие, то хваленое поделие микрософт уже не способно работать.
Аноним 02/06/23 Птн 14:25:09 #621 №2719522 
>>2718944
Лол я думал везде давно удаленка есть, а оказывается вне битрикса одни колхозники
Аноним 02/06/23 Птн 14:42:27 #622 №2719543 
>>2719367
Do cker значение знаешь?
Аноним 02/06/23 Птн 15:35:59 #623 №2719600 
>>2719362
Да
Аноним 02/06/23 Птн 22:12:29 #624 №2720034 
image.png
>>2713256
Очень годные задачки.

Если б не задачки эти, то тема позиционирования в CSS вообще бы мимо меня прошла

ну и по скринам "сайта" моего оно и видно
>>2713347
>>2719007

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

Короче сначала сам пробую рвя волосы на жопе делать задачу, потом если чё подсказки смотрю.
Аноним 03/06/23 Суб 08:46:21 #625 №2720235 
>>2719543
И как докер мне поможет настроить рабочее окружение? Это всё равно, что набирать код вслепую, а потом отправлять его в докер и надеяться, что там нет ошибок. Очень не удобно.

А вот в случае РНР в любом линупс-дистрибутиве уже есть пакеты для LAMP, просто пишешь нужные команды и всё ставится.
Вот сейчас у меня стоит РНР 8 и Ларавель 10, а учусь по книжке по Ларавелю 5 с РНР 7 и всё прекрасно работает. Вообще ни разу не столкнулся с ситуацией, что какой-то код не работает в новой версии. Для шарписта это наверно трудно осознать, ведь там в каждой версии всё переворачивают с ног на голову и надо по сути по новой учить язык и фреймворк.
Аноним 03/06/23 Суб 08:50:39 #626 №2720238 
>>2720235
>пакеты для LAMP
Пчел. В коммерческой разработке эта параша не используется. Какой нахуй апач. Какой мускуль. Про совместимость версий вообще пушка. Дура, ты бы почитал какой пиздец в пхп с изменениями конвертации типов в разных версиях. В пхп двойное равно просто блядь нельзя использовать.
Аноним 03/06/23 Суб 09:04:00 #627 №2720241 
>>2720238
В РНР ты оперируешь простыми типами, а в сишарпе для этого накручивают сложные крольчатки. Один LINQ чего стоит и даже сами разработчики не знают какой именно тип он выплёвывает, поэтому там и придумали всякие var или dynamic, что ещё хуже, чем не строго типизированные переменные в РНР.
Так что это миф, что в строго типизированных язык прям рай. Я изучал их, там говна не меньше.
Аноним 03/06/23 Суб 09:38:49 #628 №2720247 
>>2720238
В коммерческой разработке вообще используют CI/CD. Просто пукаешь коммитами и оно само как-то там собирается и запускается. А я говорю про рабочую среду, про твой редактор кода и твой интерпретатор/компилятор. Тебе так или иначе нужно, чтобы всё работало на твоей машине, а не в докер-контейнере.
Аноним 03/06/23 Суб 09:44:43 #629 №2720249 
>>2720247
Тебе нужно чтобы все работало как на сервере. А на сервере все будет в докере. Потому что проект нужно поднимать десятки раз если не сотни, а с докером это делается одной командой и все поднимается вместе с сеткой.
Аноним 03/06/23 Суб 09:56:23 #630 №2720253 
>>2720241
Типы во входящих данных всегда приходится определять самому. Даже в ебаном хаскеле у тебя с получением данных из базы будут такие же проблемы как с LINQ. Только вот в пхп эти проблемы литерали везде. Вот тут >>2716772 парень поменял тип данных в переменной несколько раз в одной функции и даже не заметил. Потому что пхп это поощряет, высирая в стандартной библиотеке функции, которые принимают и строку и массив и аллаха, а возвращают вообще все что можно, и результат и false и null блядь.

Имаджинирую твое ебало когда ты будешь сидеть и с дебаггером ловить когда это вдруг строка стала массивом, а когда обратно строкой.
Аноним 03/06/23 Суб 09:58:15 #631 №2720255 
>>2718251
Второй день использую и что-то пользы от него с гулькин нос. Большую часть методов также не видит и надо ручками дописывать. Если в том же вс коде знаешь, что ничего нет, то просто смело пишешь код дальше, а тут каждый раз надеешься на подсказку, а тебе фиг и расстраиваешься. Так что даже в моральном плане шторм не лучше вс кода.
Аноним 03/06/23 Суб 10:03:54 #632 №2720259 
>>2720253
Ну да, а в твоём сишарпе ввели типы, не допускающие null, но в итоге они всё равно могут оказаться с null. Только теперь программисту больше писанины с вопросиками к каждому типу.
Ещё всякие оболочки на классах выдумывают, чтобы можно было хранить там данные разных типов, или вообще через рефлексию крутят.
Аноним 03/06/23 Суб 10:10:06 #633 №2720262 
>>2720259
Ты вообще понимаешь разницу между "некоторые типы", которые ты закрываешь своим типом и забываешь навсегда. И ЛЮБАЯ ПЕРЕМЕННАЯ МОЖЕТ БЫТЬ ДРУГОГО ТИПА НА СЛЕДУЮЩЕЙ СТРОЧКЕ?. Ты хоть обговниться, но система типов в пхп это дно, хуже наверное только ванильный жабаскрипт, да и то берешь тайпскрипт и кайфуешь.
Аноним 03/06/23 Суб 10:13:09 #634 №2720265 
>>2720255
Ты какую-то хуйню поставил. https://laravel-idea.com/docs/generation
Аноним 03/06/23 Суб 11:10:59 #635 №2720288 
typephp.jpg
>>2720262
В РНР уже давно можно ограничивать по типу параметры функций/методов и свойства классов.
Аноним 03/06/23 Суб 11:36:13 #636 №2720303 
Screenshot 2023-06-03 113241.png
>>2720288
Нахуй ты лезешь в разговор если не понимаешь о чем речь?

Пикрелейтед человек написал функцию на ебанутом пхп.
preg_split возвращает массив.
preg_replace возвращает массив.
Какого хуя функция возвращает строку, которая к тому же может быть null и не падает с исключением?
Аноним 04/06/23 Вск 01:34:07 #637 №2720991 
CSScyryu.png
Во тьме ночной постигаю КСС! Спасибо автору за задачи! https://github.com/codedokode/pasta/blob/master/html/html.md
Аноним 04/06/23 Вск 01:52:12 #638 №2721002 
>>2720249

Во-первых, на продакшене часто Докер как раз не используют, он для всяких некритичных сред вроде dev/test

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

Ну то есть, Докер полезен, но пользуются им только из-за отсутствия нормальных альтернатив.
Аноним 04/06/23 Вск 01:57:54 #639 №2721005 
>>2720253

Эта особенность не так и плоха. Например, БД возвращает тебе число строкой, а ты его складываешь и не надо писать преобразование в int вручную. Если ты все равно бы написал это преобразование, то почему бы его не сделать автоматически? Уменьшаем объем кода.

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

А правильно делать так: у строки должен быть метод для итерирования по байтам, по codepoints, по графемным кластерам:

for byte in s.bytes():
...

for byte in s.chars(): // по графемным кластерам
...

Кстати, в C# сделано так же глупо как и в Питоне.
Аноним 04/06/23 Вск 01:59:40 #640 №2721007 
>>2720265

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

Эти генераторы кода вообще глупая вещь, нужно писать фреймворк так, чтобы генерировать ничего не требовалось.
Аноним 04/06/23 Вск 02:02:28 #641 №2721008 
>>2720303

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

Ты просто почему-то решил, что если перемнная называется $sentences, то в ней массив. А в ней строка.
Аноним 04/06/23 Вск 10:04:39 #642 №2721079 
>>2721008
Чучело. В том и вопрос: куда делся массив? Массив сука где? Весь этот код выглядит так будто в нем идет работа с массивом. Ты попытаешься туда что-то добавить и все это ебнется.
Аноним 04/06/23 Вск 10:06:01 #643 №2721080 
>>2721007
Я дал ссылку на плагин. Или ты сомневаешься что он в состоянии по доке покликать? Я вот тоже начал сомневаться.
Аноним 04/06/23 Вск 10:35:16 #644 №2721089 
>>2721002
Снова здарова. Просто назови хоть одну крупную компанию, которая не использует докер. В сотый раз готов услышать "пук" и проследить как ты съебываешь в закат.
Аноним 04/06/23 Вск 12:30:27 #645 №2721144 
>>2718904
>Там дотнет 2.1 был
Как там в 2018 году? Попробуй мне на пхп запустить что-то 5 летней давности. Ппц.
Аноним 04/06/23 Вск 12:33:07 #646 №2721146 
>>2719367
Нахер тебе 2.1, когда там седьмой дотнет. Ты еще на php4 сидишь?
Аноним 04/06/23 Вск 12:44:28 #647 №2721155 
Снимок.JPG
Смотрю соцсеть про Цукерберга
Аноним 04/06/23 Вск 19:01:39 #648 №2721413 
image.png
Что это за хуйня? Как исправить?
Аноним 04/06/23 Вск 19:03:00 #649 №2721416 
>>2721413
Выводится после попытки выполнить команду:
curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash
Аноним 04/06/23 Вск 20:22:42 #650 №2721506 
>>2721079

Не надо уводить в сторону. Ты утверждал, что PHP позволяет вернуть массив из функции, у которой стоит тайп-хинт ?string. Я тебе указал, что ты ляпнул глупость, не проверив. В PHP надежная система типов, а ты не прав.

То, что в коде неудачно названы переменные и ты что-то не так понял это не проблема PHP, это твоя проблема.
Аноним 04/06/23 Вск 20:24:13 #651 №2721508 
>>2721089

Ты пост прочел? Я написал, что Докер плохо спроекированное решение, имеет уродливый дизайн и представляет собой набор костылей. Вдобавок требует рута, имеет API и поэтому представляет собой одну большую потенциальную уязвимость. При чем тут количество компаний, которые его используют?
Аноним 04/06/23 Вск 20:26:11 #652 №2721510 
>>2721413

А можно целиком лог? Имя лога написано на скриншоте (.csm_setup_...) А то так не очевидно, у тебя только несколько строк видно.
Аноним 04/06/23 Вск 20:27:40 #653 №2721512 
>>2721508
>на продакшене часто Докер как раз не используют
>Кто не использует?
>пук
Предсказуемо.
Аноним 04/06/23 Вск 20:28:38 #654 №2721516 
>>2721506
>Ты утверждал, что PHP позволяет вернуть массив из функции, у которой стоит тайп-хинт ?string
Ты в глаза ебешься? Где я это утверждал?
Аноним 04/06/23 Вск 20:47:56 #655 №2721535 
>>2721516

Достаточно вернуться на пару постов назад:

>>2720303

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

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

Кстати, говоря о тайп-хинтах, сейчас многие современные языки используют похожую на PHP систему, когда не требуется указывать типы везде. Вот пример из C#:

var str = "1"; // тип не указан
Аноним 04/06/23 Вск 21:03:53 #656 №2721547 
задачи на кубик.png
Добрый вечер!
Прошел задачку с кубиками и ии, долго не мог понять почему выводит синтакс ошибку на else, думал может пропустил чего
Гуглил и понял, лишние точки с запятой ставлю, после условий они не нужны, в данном случае по крайней мере.
Еще ставил везде exit, после каждого блока, оставил только в конце, и вот назрел вопрос, exit ставить после каждого блока так же уместно, или нет?
Аноним 04/06/23 Вск 21:06:01 #657 №2721551 
>>2721547
upd сейчас проверил код еще раз, else так и в ошибку уходит, а esleif все в порядке, нареканий никаких нет, менял местами обе конструкции - ошибки, все получается только с elseif, в чем дело?
Аноним 04/06/23 Вск 21:29:00 #658 №2721567 
>>2721535
>Из этого не очень связного текста видно
Ебанько, очевидно что возвращается строка, функция же НЕ ПАДАЕТ. Я тебе об этом написал. И спросил: если preg_split возвращает массив, откуда блядь возникла строка тогда? И еще спросил: причем тут нахуй null? Откуда там может null появиться сука?

И можешь мне не рассказывать что нулл возвращает функция потому что в доке так написано бла бла бла. Вопрос какого хуя оно так написано? Почему эта ебаная функция вместо падения срет говном в результат? Причем эта залупа ИНОГДА сука выдает варнинг, а иногда молча срет нулл. Как твоя функция может высрать нулл вместо строки нахуй, куда эта ебаная строка делась блядь, почему не пустая строка. Просто блядь фрактал отсоса а не язык.
Аноним 05/06/23 Пнд 01:42:00 #659 №2721668 
>>2721547

В конструкции else/ifelse точки с запятой не нужны:

if (условие) {
команда 1;
команда 2;
} else {
команда 3;
}

exit ставить тут тоже не нужно, так как программа сама завершится, когда дойдет до конца скрипта.
Аноним 05/06/23 Пнд 13:49:15 #660 №2722130 
Добрый день, задачу с банком можно решить без count ?
Аноним 05/06/23 Пнд 14:55:49 #661 №2722209 
pflfxf ghj ,fyr.png
Подскажите, задача с банком(вкладом), написал цикл до миллиона, теперь хочу понять сколько лет пройдет с начала вклада до его миллиона. Не могу догнать что-то, такое чувство, что или функцию надо неизвестную мне, или все настолько просто, что я переусложнил себе задачу. Отдаленное представление о том как выполнить это есть, но написать не могу потому что, не знаю как. Подумал может еще один цикл запустить, нос разными условиями(действиями), но опять же в мануале написано, что этого делать не стоит. Прикреплю цикл по миллиону.
Аноним 05/06/23 Пнд 14:58:21 #662 №2722212 
>>2722209
upd нашел ответ в интернете, все оказалось как я и думал, переусложнил себе задачу
Аноним 05/06/23 Пнд 23:17:19 #663 №2722799 
>>2719007
Молодец. Я примерно такой же путь делал. Верстка цсс потом пыхи.
Вкатился.
Единственное о чем жалею-слишком долго сидел с цсс, начал изучать media верстку на разные экраны и проебал на это месяца 4.
Лучше бы сразу пыху учил.
Аноним 05/06/23 Пнд 23:46:43 #664 №2722814 
>>2722209

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

>>2722130

Ты имеешь в виду функцию count()? Она там не нужна. А для чего, по твоему, она там может пригодиться?
Аноним 06/06/23 Втр 00:22:11 #665 №2722833 
>>2722814
Я искал функцию которая поможет мне посчитать количество действий в цикле, чтоб вычислить количество лет по прошествию к миллиону
Аноним 06/06/23 Втр 10:32:30 #666 №2722963 
>>2722833
Писал бы ты на джс - с легкостью пакет нашел бы который это делает лол. Уверен что он есть. Они вообще любую хуйню что длинее 1 строчки пакуют и реиспользуют. А потом у них половина интернета отваливается из за индуса который выпиливает свою хуйню из открытого доступа.
В ахуе с ленивых пориджей
Аноним 06/06/23 Втр 13:05:46 #667 №2723099 
как учебник открыть((
Аноним 06/06/23 Втр 15:40:40 #668 №2723349 
Снимок экрана 2023-06-06 в 15.39.51.png
>>2723099
У меня все открывается.
Аноним 06/06/23 Втр 17:29:46 #669 №2723579 
>>2723349
автор учебник выдал бан по айпи лол)) >>2687463 (OP)>>2687463 (OP)
оп разбань меня , у меня в старт листе в хроме учебник стоял
Аноним 06/06/23 Втр 18:36:05 #670 №2723698 
pic1.png
pic2.png
Задача: Yoda Speak.

Прошу анонов посмотреть мое решение.

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

https://ideone.com/dR3Zc2
Аноним 08/06/23 Чтв 14:02:47 #671 №2725791 
>>2723698
Братан, я уже говорил что сначала тебе нужно определиться с чем ты работаешь и что ты собираешься делать. По шагам. Выпиши себе все действия в столбик на русском. Ты пойми, что как ты эти действия не распихивай по функциям их меньше не станет, а когда их все увидишь, то станет проще их разделять и группировать.

1) Ну вот смотри. Что у тебя в этой задаче изменилось по сравнению с предыдущей? Добавился новый концепт: слово. Нам с массивом слов нужно что-то делать. А где у тебя происходит создание массива слов? А нету, у тебя сразу слова задом на перед возникают.

2) Что означает "makeSentemces"? Ты их как иисус создаешь? Ты их генерируешь? У нас есть концепт: текст состоит из предложений (это не всегда так представь себе), мы разбиваем текст на предложения. Так и напиши: splitTextToSentences(string $text): array.
"makeReverseWordsInSentence" тоже ерунда какая-то. Во первых если ты переставляешь местами слова в предложении, то почему у тебя предложения на выходе нет? Ты разбиваешь предложение на слова И переставляешь слова местами. Опять неожиданное поведение. Надо разделить на две понятные функции: splitSentenceToWords(string $sentence): array и reverseWords(array $words): array. "makeYodaStyleText" тут автор задачи походу сам Йоду подрубил, makeTextInYodaStyle звучит по человечески.

И завязывай с этим ебучим ideone, эта параша работает кое как да еще и заблокирована нахуй. Все разработчики уже лет десять как пользуются https://3v4l.org .
Аноним 09/06/23 Птн 16:15:32 #672 №2727166 
>>2712223
По теории, если вопросы возникают - советую посматривать курсы от отус, они нормально расжевывают как все работатет
Аноним 09/06/23 Птн 21:18:15 #673 №2727726 
>>2687463 (OP)
>>1008826 (OP)
Что такое отложенная инициализация?
Для чего она нужна?
Как паттерн Одиночка помогает ее реализовать?
>Отложенная (ленивая) инициализация (англ. Lazy initialization) — приём в программировании, когда некоторая ресурсоёмкая операция (создание объекта, вычисление значения) выполняется непосредственно перед тем, как будет использован её результат.
Но разве без отложенной инициализации мы не делаем так же? Мы инициализируем объект тогда, когда это нам нужно. Мы можем инициализировать объект и без нужны, но зачем нам это?
Аноним 09/06/23 Птн 21:25:52 #674 №2727740 
>>1008826 (OP)
Почему паттерн одиночка нарушает принцип единственной ответственности? Потому что в классе описывается инициализация объекта?
Как этот паттерн маскирует плохой дизайн?
Пишут про проблемы с мультипоточностью. Относится ли этак проблема к PHP?
И требует постоянного создания MOCK Объектов для юнит тестирования. Зачем?
Аноним 09/06/23 Птн 23:52:02 #675 №2727952 
>>2727726
>Что такое отложенная инициализация?
>Для чего она нужна?
Ну вот есть у тебя сервис, который ходит в базу. А для этого нужно создать объект коннекшена. Ты можешь сделать так что коннектиться будет сразу при создании объекта сервиса, а можешь так чтобы коннектилось только когда идешь в базу.

>Как паттерн Одиночка помогает ее реализовать?
Синглтон помогает убедиться что инициализация произойдет только один раз. И у тебя не будет двух коннекшенов к базе.

>Мы инициализируем объект тогда, когда это нам нужно
Ты похоже неправильно понимаешь слово "инициализируем". Объект нужно создать, и передать его туда где он используется. Без этого код работать не будет. Так вот то что ресурсоемкая операция будет выполнена это еще не точно. Может мы в базу и не полезем, может у нас кеш есть. А вот то что объект нужно создать это обязательно.

>>2727740
>Почему паттерн одиночка нарушает принцип единственной ответственности? Потому что в классе описывается инициализация объекта?
Это одна из причин. Объект должен заниматься своей бизнес логикой. В современном приложении есть специальные сервисы, которые занимаются подсчетом инстансов и менеджментом зависимостей.

>Как этот паттерн маскирует плохой дизайн?
Никак не маскирует. Все сразу понятно.

>Пишут про проблемы с мультипоточностью. Относится ли этак проблема к PHP?
Не относится. Пхп однопоточная параша.

>И требует постоянного создания MOCK Объектов для юнит тестирования. Зачем?
А как ты его создашь? У него же конструктор запривачен. Это хоть мокнуть можно. А если добавишь своему синглтону статический метод getInstance, то вообще пизда - ты и не мокнешь нихуя, да и мокать нихуя не придется т.к. ты метод со статикой внутри нормально не протестируешь.
Аноним 10/06/23 Суб 02:01:59 #676 №2728017 
16839131442820.png
>>2722799
Я ушел в нихуянеделательный запой на дней 5. Короче покурил немного за SQL , самую прям базу основу.
По итогу я познакомился с HTML , CSS , SQL и Линукс еще знаю учил его пару лет назад, тоже там основы.

За пыху сажусь, вышеперечисленное будет куриться по мере возникающих задач моих маняпроектов для портфелио
Аноним 10/06/23 Суб 02:03:42 #677 №2728018 
>>2722799
А по итогу эта media верстка тебе пригодилась?
Аноним 10/06/23 Суб 09:05:38 #678 №2728053 
1.jpg
>>2725791
>А где у тебя происходит создание массива слов? А нету, у тебя сразу слова задом на перед возникают.
Да, здесь я изначально думал разделить на 2 функции, но потом решил сократить код.

Поправил, вроде норм https://3v4l.org/la0hi/refs
Аноним 10/06/23 Суб 16:19:52 #679 №2728425 
>>2728053
Ну почти.

1) $reversedWords[count($reversedWords) - 1] = makeFirstCharLowerCase($reversedWords[count($reversedWords) - 1]);
Если сидишь и думаешь че за хуйня здесь написана, то будь уверен написана хуйня. Не ленись разбивать сложные выражения на части и давай этим частям понятные названия. И не надейся что ключи в массиве будут именно такие, которые ты ждешь. Ты не можешь заставить отправлять в твою функцию массив с определенными ключами. Поэтому используй специальные функции: array_key_exists, array_key_first итд
$lastWordKey = array_key_last($words);
$lastWord = $reverseWords[$lastWordKey];
$reversedWords[$lastWordKey] = makeFirstCharLowerCase($lastWord]);

Как еще проще? Если массив небольшой, до тысячи элементов. То можно использовать array_shift pop итд
$lastWord = array_pop($reverseWords);
$lowerCaseLastWord = makeFirstCharLowerCase($lastWord]);
array_push($reverseWords, $lowerCaseLastWord);

А можно еще проще. Ты забыл что можно сделать lowerCase ДО перемешивания.
Аноним 11/06/23 Вск 06:22:22 #680 №2729062 
4d2f3131990326ab2221a42d6b6954d2.jpg
вощем я тут подумал
Аноним 11/06/23 Вск 15:40:48 #681 №2729352 
>>2727952
Смотри, пишут, что Синглтон помогает реализовать отложенную инициализацию.
public static function getInstance()
{
$subclass = static::class;
if (!isset(self::$instances[$subclass])) {
self::$instances[$subclass] = new static();
}
return self::$instances[$subclass];
}
Вот этот код помогает ее реализовать? Типа если есть существующий объект, то ее возвращает, если нет, то создает новый и возвращает его? В этом и есть смысл отложенной инициализации в Одиночке?
Пожалуйста, я запутался, объясни мне, что такое отложенная инициализация максимально по простому.
Аноним 11/06/23 Вск 16:09:30 #682 №2729388 
И если смотреть в пример, как он обеспечит глобальный доступ, если мы перескочим на другой скрипт, к примеру при помощи
header('Location: '.$new_url);
, объекты сохранятся?
https://github.com/RefactoringGuru/design-patterns-php/blob/main/src/RefactoringGuru/Singleton/RealWorld/index.php
Аноним 11/06/23 Вск 20:13:09 #683 №2729599 
>>2723579

Анон, тебя никто не банил. Сайт размещен на гитхабе. Возможно, твой провайдер по какой-то причине ограничивает доступ к гитхабу. Надо использовать ссылку https://codedokode.github.io/phpbook/ а не старые домены в зонах ga или gq.
Аноним 11/06/23 Вск 20:28:22 #684 №2729614 
>>2727726

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

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

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

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

Вот код без отложенной инициализации:

$service = new Service(); // создается сервис и проводится тяжелая инициализация, хотя сам сервис пока не нужен

// ... где-то позже ..

if ($condition) {
$service->doSomething();// используем сервис
}

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

Вот код с ленивой инициализацией:

$service = null; // создаем переменную для сервиса

// ... где-то позже ...

if ($condition) {
if ($service === null) {
$service = new Service(); // ленивая инициализация, если объекта еще нет
}
$service->doSomething(); // используем сервис
}

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

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

Я советую тебе изучить Dependency Injection, в этом уроке более подробно описан этот прицип и тебе станет понятнее, в чем недостатки синглтонов: https://github.com/codedokode/pasta/blob/master/arch/di.md
Аноним 11/06/23 Вск 20:51:33 #685 №2729647 
>>2727740

> Почему паттерн одиночка нарушает принцип единственной ответственности?

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

> Как этот паттерн маскирует плохой дизайн?

Этот паттерн сам по себе плохой дизайн.

> Пишут про проблемы с мультипоточностью.

Думаю, что это глупость пишут. При использовании блокировок Синглтон может быть потокобезопасным. Для PHP Это неактуально, так как многопоточность в нем обычно не используют.

> И требует постоянного создания MOCK Объектов для юнит тестирования. Зачем?

Ты наверно не разбираешься в тестировании, раз задаешь этот вопрос. Почитай тогда сначала урок по тестированию: https://gist.github.com/codedokode/a455bde7d0748c0a351a

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

function convert_btc_to_rouble(float $btc): float
{
$client = BtcRateClient::getInstance(); // синглтон
$rate = $client->getBtcInRoubles(); // получаем с сервера курс
return $btc * $rate;
}

Как видно из кода, у этой функции есть зависимость - объект BtcRateClient, с помощью которого она получает курс биткойна с сервера криптобиржи.

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

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

function convert_btc_to_rouble(BtcRateClient $client, float $btc): float
{
return $client->getBtcInRoubles() * $rate;
}

Теперь мы можем тестировать эту функцию. Чтобы она не лезла в интернет, мы сделаем мок (моки бывают разных видов, это будет stub):

// наследование нужно, чтобы пройти проверку типов
class BtcRateClientStub extends BtcRateClient
{
// подменяем функцию на нашу
public function getBtcInRoubles(): float
{
return 500_000;
}
}

Теперь в тесте мы создаем поддельный клиент и передаем его в функцию:

$stub = new BtcRateClientStub();
$result = convert_btc_to_rouble($stub, 10);
// проверяем правильность расчетов
if ($result != 5_000_000) {
echo "Ошибка, ожидалось 5_000_000, а получилось $result";
exit(1);
}

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

interface BtcRateClientInterface
{
public function getBtcInRoubles(): float;
}

В функции в качестве типа указывают интерфейс:

function convert_btc_to_rouble(BtcRateClientInterface $client, float $btc): float ...

И на основе интерфейса создают 2 класса: реальный клиент BtcRateClient и фейковый для тестов BtcRateClientStub. Функция принимает любой из них.
Аноним 11/06/23 Вск 21:04:36 #686 №2729688 
>>2729614
Спасибо большое за ответы, но я не совсем понимаю, каким образом Singleton реализует ленивую инициализацию, ведь в твоем примере проверяют существование объекта перед выполнением определенного действия
if ($service === null) {
$service = new Service(); // ленивая инициализация, если объекта еще нет
}
$service->doSomething(); // используем сервис
}
А в Singleton есть метод, getInstance(), который просто создает объект. Я правильно понимаю, что getInstance() сам по себе не реализует ленивую инициализацию?
А вот такой пример уже реализует
$config1 = Config::getInstance();
$config1->setValue("login", $login);
Ведь так?

Я не совсем понимаю, что подразумевают под инициализацией. Если мы создаём объект через new, а у объекта пустой конструктор, то мы его просто создали или еще и проинициализировали?
Аноним 11/06/23 Вск 21:04:57 #687 №2729689 
>>2729614
Спасибо большое за ответы, но я не совсем понимаю, каким образом Singleton реализует ленивую инициализацию, ведь в твоем примере проверяют существование объекта перед выполнением определенного действия
if ($service === null) {
$service = new Service(); // ленивая инициализация, если объекта еще нет
}
$service->doSomething(); // используем сервис
}
А в Singleton есть метод, getInstance(), который просто создает объект. Я правильно понимаю, что getInstance() сам по себе не реализует ленивую инициализацию?
А вот такой пример уже реализует
$config1 = Config::getInstance();
$config1->setValue("login", $login);
Ведь так?

Я не совсем понимаю, что подразумевают под инициализацией. Если мы создаём объект через new, а у объекта пустой конструктор, то мы его просто создали или еще и проинициализировали?
Аноним 11/06/23 Вск 21:26:58 #688 №2729727 
>>2729689

Без ленивой инициализации ты создаешь объекты в начале программы, хотя может быть они никогда и не понадобятся. С ленивой ты создаешь их при первом использовании.
Аноним 11/06/23 Вск 21:28:23 #689 №2729728 
>>2729689

> А вот такой пример уже реализует
> $config1 = Config::getInstance();
> $config1->setValue("login", $login);

Неприавльно. Должно быть так:

$config = Config::getInstance(); // Читает конфиг
echo $config->getValue('login');
Аноним 11/06/23 Вск 21:44:13 #690 №2729749 
>>2729689

> Я не совсем понимаю, что подразумевают под инициализацией. Если мы создаём объект через new, а у объекта пустой конструктор, то мы его просто создали или еще и проинициализировали?

Для простоты считай, что инициализация это выполнение конструктора. Но в общем инициализация - это действия, после которых объект готов к исопользованию. Например, у объекта Config из твоего примера после инициализации все значения параметров уже заполнены.
Аноним 11/06/23 Вск 22:15:49 #691 №2729775 
>>2729728
Опять запутал.
Чем твой пример отличается от моего? Тем, что ты уже используешь готовый результат? Почему мой пример не подходит, а твой подходит?
Аноним 11/06/23 Вск 22:23:01 #692 №2729782 
Снимок экрана 2023-06-11 в 22.16.06.png
>>2728425
>Если сидишь и думаешь че за хуйня здесь написана, то будь уверен написана хуйня. Не ленись разбивать сложные выражения на части и давай этим частям понятные названия.
Понял.

>Ты не можешь заставить отправлять в твою функцию массив с определенными ключами. Поэтому используй специальные функции
Почему? Моя функция splitSentenceToWords() возвращает обычный массив с индексацией с нуля, последний индекс n-1. Или это общий совет, применимый ко всем случаям работы с массивами?
Аноним 11/06/23 Вск 22:39:19 #693 №2729813 
>>2729782
>Или это общий совет, применимый ко всем случаям работы с массивами?
Да. Посмотри что делает с ключами, например array_ushift. Ты сам можешь не знать что ключи поменял, снаружи массива это никак не проверить. В идеале конечно нужно использовать объекты: коллекции, стеки, очереди итд.

Ты опять не заметил что можно сделать ловер кейс до перемешивания.
Аноним 11/06/23 Вск 23:47:13 #694 №2729922 
>>2729813
Я заметил, долго тупил думал, сделал так как было мне проще.
Аноним 12/06/23 Пнд 00:02:59 #695 №2729942 
>>2729922
Привыкай применять функции к набору данных. По сути ты строишь пайплайн для обработки массива words.
1) Делаем так
2) Потом вот так
3) И наконец вот так
У тебя этот стройный порядок нарушен тем что ты лезешь что-то получать, что-то менять. Грамотное именование конечно помогает, но все равно это выглядит странно.

$words = toLowerCase($words);
$words = reverseWords($words);
$words = capitalizeFirstWord($words);

Согласись, читается гораздо проще чем возня с first last и модификацией массива.
Аноним 12/06/23 Пнд 00:05:41 #696 №2729945 
изображение.png
Заметил такой код у одного гуру.
Нахуя цикл по массиву, если можно сделать так
echo $arr['key'];
Нахуя его весь обходить и сравнивать ключи, а если совпал то вывести.
P.S это не pub/sub, так что нет двух массивов с одинаковыми ключами
Аноним 12/06/23 Пнд 00:08:43 #697 №2729952 
>>2729945
А хули ты будешь делать если нет этого ключа? А хули если его там МОЖЕТ НЕ БЫТЬ?
Аноним 12/06/23 Пнд 00:13:16 #698 №2729956 
>>2729952
>А хули ты будешь делать если нет этого ключа?
if (isset($x['r']))
Съеби, вкатун
Аноним 12/06/23 Пнд 00:25:14 #699 №2729972 
>>2729956
Ну во первых array_key_exists. А во вторых "хули если этого ключа может не быть"?
Аноним 12/06/23 Пнд 00:37:46 #700 №2729986 
>>2729972
>А во вторых "хули если этого ключа может не быть"?
Другие ключи не нужны. Одна операция - найти один ключ и запустить коллбек.
Аноним 12/06/23 Пнд 02:27:26 #701 №2730007 
>>2722833

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

for ($i = 0, $sum = 0; $sum < 1_000_000; $sum += 1_000, $i++) {
...
}
Аноним 12/06/23 Пнд 02:47:34 #702 №2730010 
>>2723698

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

В phpDoc вместо array<string> можно писать более кратко string[]

try ... catch здесь можно не писать - PHP по умолчанию при исключении сам выводет подробности ошибки (если, конечео, у тебя в php.ini включен вывод ошибок с помощью директивы display_errors).

В общем, неплохо.

>>2725791

Справедливости ради, здесь разбиение на функции сделано более-менее адекватно. Что касается разбиения предложения на слова, то да, можно вместо функции, которая и разбивает, и переворачивает сделать функцию, которая только разбивает, так как для переворота у нас уже есть array_reverse. Так будет чуть чище код.

Что касается названий, то я бы предложил:

- разбить текст на предложения: splitIntoSentences. Слово text можно не писать, так как аргумент и так называется $text
- разбить на слова: splitIntoWords

> reverseWords(array $words): array.

Эта функция не нужна, так как есть array_reverse.

> "makeYodaStyleText" тут автор задачи походу сам Йоду подрубил, makeTextInYodaStyle звучит по человечески.

Гм, по моему something style something вполне норм с точки зрения англ. языка.Вот пример из словаря: https://dictionary.cambridge.org/ru/%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9/style

> Japanese-style management
> antique-style furniture

Ну и если брать современные тенденции, то функцию можно вообще назвать yodize().
Аноним 12/06/23 Пнд 02:48:11 #703 №2730011 
>>2725791

Справедливости ради, 3v4l предназначен для сравнения одного и того же кода в разных версиях PHP.
Аноним 12/06/23 Пнд 02:50:54 #704 №2730012 
>>2728053

Я думаю, reverseWords не нужна, так как она дублирует существующую функцию array_reverse.
Аноним 12/06/23 Пнд 02:55:54 #705 №2730015 
>>2728425
>>2728053

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

Мне кажется, ты уже переусложняешь задачу. В данной задаче можно принять, что функция разбиения на слова возвращает массив с индексами от 0 до N-1. Также, ты берешь array_key_last от $words и используешь ее с reverseWords, что странно.

array_key_last() читается чуть лучше, чем count() - 1. А переменную lastWordKey я бы не стал заводить:

$words[array_key_last($words)] = makeFirstCharLowerCase(
$words[array_key_last($words)]
);

Вариант с array_pop тоже хороший.
Аноним 12/06/23 Пнд 02:58:42 #706 №2730016 
>>2729388

Нет. При загрузке страницы с редиректом браузер делает 2 HTTP-запроса и выполняются 2 скрипта:

- браузер делает запрос на /news, запускается скрипт, он возвращает редирект на /news/today. Скрипт завершается, все переменные уничтожаются
- браузер делает запрос на /news/today, запускается новый скрипт с нуля

Кстати, как ты можешь заметить, из-за редиректа время загрузки страницы увеличивается, потому что надо сделать 2 запроса вместо одного.
Аноним 12/06/23 Пнд 03:01:06 #707 №2730017 
>>2729775

Я не так понял твой пример, у тебя тоже ленивая инициализация. Так как ты создаешь Config только когда он тебе понадобился, а не в начале программы.
Аноним 12/06/23 Пнд 03:08:44 #708 №2730019 
>>2729813

Тут я не согласен. В данной задаче гарантируется, что функция разбиения на слова вернет массив с ключами от 0 до N-1. Можно для надежности еще указать это в комментарии, чтобы сомнений не было.

К сожалению, стандарт phpDoc не позволяет указать это, но phpstan (анализатор кода) содержит такую возможность:

@param list<string> $words

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

Мне кажется, тут не надо придумывать сложности на ровном месте и делать поддержку для случаев, когда ключи идут не по порядку.
Аноним 12/06/23 Пнд 03:10:32 #709 №2730020 
>>2729945

У тебя на скриншоте проверяется не ключ, а поле $definition['name'].
Аноним 12/06/23 Пнд 04:07:24 #710 №2730027 
>>2730019
Речь о том что ключи массива в пхп вещь по определению не надежная и не проверяемая. Причем в самом пхп есть куча функций, которые эти ключи меняют. Сегодня у тебя гарантируется, а завтра кто-то сделает array_merge с ассоциативным массивом. И будет прав, между прочим, потому что никаких ограничений с твоей стороны на это нет. А еще веселее будет если этот самый ассоциативный массив будет получаться иногда. Гарантированы часы веселья с курением логов и поиском этого бага.

Вместо того чтобы думать где ты уверен, а где не уверен, ты просто используешь функции и закрываешь этот вопрос для себя навсегда. А еще лучше как я уже сказал вместо массивов использовать объекты.
Аноним 12/06/23 Пнд 12:48:04 #711 №2730197 
image.png
image.png
image.png
>>2687463 (OP)
Кто-нибудь проходил книгу: Symfony. Быстрый старт? Почему у меня контроллер не находит? И ещё заодно вопрос почему домен локалхост работает, а если писать 127.0.0.1 выдаёт ошибку?
Аноним 12/06/23 Пнд 13:14:31 #712 №2730212 
image.png
>>2730197
>127.0.0.1
https://github.com/symfony/symfony/issues/1693
Может тут что-то похожее.

У чела https://www.youtube.com/@codewithdary вот на пике. Он зделал через
symfony console make:controller MoviesController
Аноним 12/06/23 Пнд 13:27:29 #713 №2730228 
>>2730212
Через консоль тоже пробовал, всё равно не робит. В качестве сервера использую уже встроенный в симфони
Аноним 12/06/23 Пнд 18:10:32 #714 №2730475 
>>2730027
>>2730019

Спасибо за ответы.
Аноним 12/06/23 Пнд 21:49:48 #715 №2730679 
>>2730197

Если Симфони работает в продакшен-режиме, то он не заметит, что ты добавил аннотацию в контроллер и не перестроит таблицу роутинга. Нужно выполнить команду php /bin/console cache:clear для очистки кеша.

Какое окружение ты указал в APP_ENV или в .env? Описано тут: https://symfony.com/doc/6.2/the-fast-track/ru/5-debug.html#upravlenie-konfiguraciami-okruzenij

Также, ты можешь вывести список всех роутов командой php bin/console debug:router и проверить, есть там твой роут или нет.

Также, прописаны ли в config/routes/attributes.yaml параметры controllers:/resource:/path: ?

> И ещё заодно вопрос почему домен локалхост работает, а если писать 127.0.0.1 выдаёт ошибку?

Потому что мало писать IP-адрес, нужно указать еще порт 8000, то есть http://127.0.0.1:8000/
Аноним 13/06/23 Втр 09:49:37 #716 №2731059 
16866200298471.png
16866200298502.png
16866200298533.png
16866200298460.png
Пикрил, если все с нуля так ебошить как на пиках - какой уровень? джун, мидл, сень?
Аноним 13/06/23 Втр 13:44:25 #717 №2731350 
>>2731059
пиздец как каникулы начались сразу в треде появляются вот такие кадры с 50 IQ
Аноним 13/06/23 Втр 14:22:50 #718 №2731419 
>>2731059
Вангую кадры со скринкастов Елисеева
Аноним 13/06/23 Втр 18:41:10 #719 №2731752 
>>2731059

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

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

В скриншотах мне не нравится код с Pipeline, выглядит как переусложненное решение.

В Доктрине ты делаешь ошибку, используя в поле comments и массив, и коллекцию одновременно. Это как раз пример вещи, которую обычно изучают на практическом опыте. Также, сейчас вроде можно использовать настоящие аннотации, а не phpDoc.
Аноним 13/06/23 Втр 18:42:32 #720 №2731757 
>>2731059

Ну и код очень простой, блог с комментариями. В реальных проектах будут сотни таблиц и сложная логика.
Аноним 14/06/23 Срд 14:14:10 #721 №2732683 
image.png
image.png
>>2730679
Короче с контроллерами разобрался, была проблема в файле роутс как у этого чела с симфоникаста. Почему то, хоть и указано что руководство для 6-ой версии https://symfony.com/doc/6.2/the-fast-track/ru/index.html, но в строчке с созданием проекта стоит версия 5.4...
А вот с ip так и не понял в чём дело, порты добавляю. При этом если запускать nginx то там именно по ip странички спокойно открываются.
Аноним 14/06/23 Срд 17:39:15 #722 №2732868 
>>2687463 (OP)
Есть дистрибутив битрикса на версию php 7.4? Они сделали обновление, что теперь только с php 8 можно ставить, однако сам битрикс не ставится на 8 версию, а установщик не пускает устанавливать дальше, если нет 8 версии php.
Аноним 14/06/23 Срд 21:58:31 #723 №2733287 
Братцы, знаю Питон и JS. Нужно быстро вкатиться в ПХП!
Что и как делать, чтобы побыстрее?
Я уже знаком с веб фреймворками из Питона.
Аноним 15/06/23 Чтв 10:13:52 #724 №2733608 
>>2733287
>Братцы, знаю Питон и JS.
>Я уже знаком с веб фреймворками из Питона.
Так че не работаешь то на Питоне?

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

>Что и как делать, чтобы побыстрее?
Есть шапка треда, там написано. И тред полистай, тоже были подобные вопросы.
Аноним 15/06/23 Чтв 11:02:42 #725 №2733654 
>>2733608
Чё ты ваще таким чепухам отвечаешь. Шапку он не видит , в гугле он забанен. Диагноз очевиден
Аноним 15/06/23 Чтв 11:12:30 #726 №2733664 
>>2733608
Без опыта работы работу не найти. На питоне вакансий почти нет. На ЖСе по 100 человек на одно место.
Шапка пустая, ничего для меня там нет.

Я по Питону видел такие самоучители по которым можно было быстро освоиться, имея опыт из других языков.
Хочу такой же для пхп.
Аноним 15/06/23 Чтв 13:37:33 #727 №2733828 
>>2732868
Я месяц назад через скрипт bitrixsetup.php устанавливал на опенсервере. Всё работает.
Аноним 15/06/23 Чтв 15:05:20 #728 №2733932 
>>2733664
А хули осваиваться? Если ты в джанго шаришь, то открывай доку ларавеля и читай. Все будет понятно сразу. А если не шаришь, то пиздуй в шапку как все остальные и не еби мозги.
Аноним 15/06/23 Чтв 23:33:44 #729 №2734540 
>>2695942

https://github.com/beeyev/phpmyadmin-docker-lightweight
Аноним 17/06/23 Суб 02:33:10 #730 №2736039 
>>2733664

> На ЖСе по 100 человек на одно место.

Если ты PHP будешь изучать так же, как JS, то и результат скорее всего будет аналогичный.
Аноним 17/06/23 Суб 06:10:36 #731 №2736062 
>>2733664
>Без опыта работы работу не найти
Дак нарисуй опыт
Аноним 18/06/23 Вск 21:37:38 #732 №2737691 
Насколько хуево писать SQL запрос в laravel?
Пытался как-то вывернуться с моделями, но в итоге заебался и чистый SQL написал, мне что-то подсказывает что это не очень хорошая практика
Аноним 18/06/23 Вск 23:12:47 #733 №2737759 
на работе запрещают использовать laravel collection и carbon. Тя же ло...
Аноним 19/06/23 Пнд 12:18:35 #734 №2738035 
>>2737691

Это нормально, при использовании ORM, использовать обычные SQL-запросы. Например, часто выгоднее получить какую-то сумму одним запросом, чем выбрать тысячи сущностей и считать эту сумму на стороне PHP.

Но если ты не смог написать запрос лишь из-за плохого знания ORM, то очевидно это не повод переходить на SQL.
Аноним 19/06/23 Пнд 16:32:10 #735 №2738384 
>>2737691
Если есть задача сбить "узкое горлышко" и оптимизировать sql запрос-тогда лучше делать прямой sql запрос.
В любом другом случае я бы советовал использовать модели т.к. они визуально понятней, как и для тебя будут (в дальнейшем) так и для другого разработчика.
>>2738035
этот прав
Аноним 19/06/23 Пнд 19:24:38 #736 №2738641 
>>2737759
У тебя тимлид тоже скуф-долбаеб?
Аноним 19/06/23 Пнд 20:35:24 #737 №2738694 
16641736014340.jpg
>>2737759
Мне охуенно интересно, а с какой формулировкой? Они кому-то нашептали что порежут всех нахуй или просили жертвоприношений?
Аноним 19/06/23 Пнд 20:49:37 #738 №2738702 
>>2738694
>с какой формулировкой
зачем, если можно всё сделать обычным форичем и датетаме.
Аноним 19/06/23 Пнд 20:52:05 #739 №2738704 
>>2737759
А как результат запроса получаете? квери билдер ведь коллекцию возвращает
Аноним 19/06/23 Пнд 20:52:52 #740 №2738705 
>>2738704
коллекцией, а потом как массив форичем
Аноним 19/06/23 Пнд 21:00:49 #741 №2738711 
>>2738705
А что с этим не так?
Аноним 19/06/23 Пнд 21:02:18 #742 №2738714 
>>2738711
все так, просто привык пользоваться методами коллекций, без них немного непривычно
Аноним 19/06/23 Пнд 21:02:35 #743 №2738716 
>>2738702
Это типа цитата?

>>2738705
Пиздец. Дали обезьянам микроскоп. Про коллекции ларавеля блядь целую книгу написали. Декларативное программирование, хуе мое.
https://perdosrijaya.org/files/jurnal/HE3SJor0rHCAn1MW6MZlbZ6y4U3tKpGGzF722NWJ.pdf
>а потом как массив форичем
Он нам и нахуй не нужон как грится
Аноним 20/06/23 Втр 12:15:41 #744 №2739189 
Отозвался на вакуху с зп чуть ниже рынка - похуй, думаю, посмотрю что там. Не сразу понял почему их письмо улетело в спам на почте. Когда открыл - знатно охуел.
Как вам тестовое с ТЗ на 40 страниц, господа? Взялись бы на два дня сроком?
Аноним 20/06/23 Втр 12:30:25 #745 №2739215 
>>2733664
>Шапка пустая, ничего для меня там нет.
Тогда хули спрашиваешь если сам всё знаешь?
Аноним 20/06/23 Втр 13:22:51 #746 №2739291 
>>2739189
лей его сюда, посмеемся вместе
Аноним 20/06/23 Втр 14:33:37 #747 №2739373 
>>2739291
Не, мало ли диванон. Не хачу.
Там ТЗ на полноценный функционал, с описанием моделей, урлов, какие нужны ответы, валидация, авторизация и тд. Какой-то полноценный бекенд хотят под видом тестового.
Я погуглил по конторе - какие-то нонеймы со спизженным названием.
Аноним 20/06/23 Втр 14:36:58 #748 №2739377 
>>2739373
>какие-то нонеймы со спизженным названием
И судя по всему они даже гугл-почту заебали раз их посылки она автоматом в спам отсылает.
Аноним 20/06/23 Втр 18:14:11 #749 №2739620 
>>2687463 (OP)
Сейчас прохожу стажировку и у нас скорее всего будут очень дотошно спрашивать на аттестации, поэтому я хочу хорошо подготовиться
Одна из тем - это KISS, DRY, YAGNII. Но я не знаю что мне рассказывать помимо того, что KISS - это делай проще, DRY - не повторяйся, а YAGNII - не реализуй то, что не описано в документации.
Но этого же не достаточно, что можно ещё сказать? В DRY есть что то типа единственного источника. А что ещё? Есть Немчинский, он там много чего рассказал, но я не уверен, что это правда. Такое ощущение, как будто половина принципов KISS было взято из YAGNII и не понятно, относится ли принцип облегчение интерфейса (графического вроде) к KISS?
Аноним 20/06/23 Втр 21:24:48 #750 №2739857 
>>2739620
>Одна из тем - это KISS, DRY, YAGNII
Это тест на лоха. Ты должен четко и уверенно ответить что это баззворды двадцатилетней давности, вся суть которых сводится к "нормально делай - нормально будет".
А если у апологета этой хуйни нет конкретной метркики соблюдения этих "принципов", это вообще верунство и эзотерика.
Аноним 20/06/23 Втр 21:55:41 #751 №2739873 
>>2739373
Нахуй шли это говно и всё. Есть тестовое - значит 1000 человек на место, оно тебе надо?
Просто нагугли пхпшные конторки мелкие и сам пиши им, без всякого говна возьмут за еду. Я никогда тестовые не делал, даже собеседований полноценных не было ещё, 3 года опыта.

Всё что надо - ты должен иметь проект на гитхабе, чтобы его показывать как ты пишешь код, этого достаточно.
Аноним 20/06/23 Втр 21:57:05 #752 №2739874 
>>2739620
Пример приведи DRY, этого достаточно.
Аноним 20/06/23 Втр 22:04:55 #753 №2739878 
>>2737759
Потому что КАЛЛЕКЦИЯ от слова кал))
Эта штука удобная, но медленная и дебажить сложнее. Но вообще всё от проекта зависит, не удивляйся.

Чем меньше слоёв абстракций и чем ближе к исходному результату запроса, тем быстрее работает приложение.
Однажды ты вообще поймёшь что даже ларавель это неповоротливое говно, постепенно будешь юзать лишь пакеты, потом вообще к чистой пыхе на воркерах придёшь)
Аноним 20/06/23 Втр 22:13:20 #754 №2739881 
>>2737691
А многие вещи на ORM и не сделать. Вообще если средне-сложные запросы, то советую научиться писать чистые SQL-запросы, причём прямо в базе без приложения, а потом уже переписать в билдере.

Этим будешь отличаться от макак, которые до сеньёрства дорастают и не могут даже запрос оптимизировать, не умеют даже having-ом пользоваться.
Аноним 20/06/23 Втр 22:19:37 #755 №2739885 
>>2731059
Елисеев долбаёб в бабушкином свитере, который отпахал на Zend и колленых фреймворках, а теперь пихает эту архитектуру в симфони и ларавель.

Крайне не советую его смотреть, он неактуальный. Вообще лучше не смотреть пиздаболов, которые никогда не работали с симфони, но выпускают свои говнокурсы по 100500 технологиям и фреймворкам, о которых узнали лишь в доке.
Аноним 20/06/23 Втр 23:41:06 #756 №2739964 
>>2739878
>удобная, но медленная
Чучело, ты бы хоть открыл блядь на гитхабе код этой коллекции. Это буквально обертка над форычем. А нужна она чтобы вместо трех строчек бойлерплейта писать одно слово.

>дебажить сложнее
Эта коллекция покрыта тестами от и до. В её разработку и тестирование вложены тысячи человекочасов. Все что там могло "сломаться" давно было сломано и пофикшено.

>Чем меньше слоёв абстракций и чем ближе к исходному результату запроса, тем быстрее работает приложение.
>постепенно будешь юзать лишь пакеты, потом вообще к чистой пыхе на воркерах придёшь)
Перечисляю вещи, которые тебе нужны чтобы ты мог назвать свой код "приложением".
1) Абстракция приложения внезапно
2) Http пайплайн. Да, все эти Request, Response, Url и прочее. По psr-7 конечно. Неделька ебли если будешь писать сам.
2) Конфиг. А конфиг нужно где-то хранить и внезапно уметь парсить. Открой спецификацию по YAML и попробуй написать по ней парсер. Когда забъешь хуй и начнешь хранить в массивах сразу поймешь нахуя придумали YAML.
3) DI контейнер. Вот сюрприз, чтобы иметь возможность писать на "чистой" пыхе нужно все сервисы получать через него, чтобы он в соответствии с конфигом все что нужно куда нужно прокидывал.
Тут дела ничинают становится веселыми. Потому что 90% пхп сеньоров написание DI контейнера не осилят. Но давай представим что ты забил на рекурсивные ссылки и как-то за месяцок справился.
4) ORM. Тут на самом деле только один вариант, потому что как-то работать на "чистой пыхе" с базой можно только посредством дата маппера. То есть только Doctrine. А доктрина это самый сложный софт написанный на пхп вообще. Если самописный di контейнер еще как-то можно представить, то самописная доктрина это просто невозможно.

Короче. Все в точности наоборот. Чем более "чистым" ты хочешь видеть свой код, тем более сложные абстракции тебе придется для этого задействовать. Хочешь не зависеть от конфига? Используй di контейнер, концепцию которую половина людей просто не поймет, а внутренне устройство вообще никто кроме автора без доки не раздуплит. Хочешь не наследоваться от сторонних библиотек, не вскрывать класс обязательными сеттерами и сохраняться в базу? Используй дата маппер, со всеми его идентити мапами, юнит оф ворками и прочей хуйней.

В том-то и суть что использовать ларавель гораздо проще концептуально. Отнаследовался один раз и все работает. Тебе не надо хитрожопым способом пытаться отследить изменения всех возможных объектов. Не надо городить прокси, чтобы как-то за вменяемое время заполнить приватные свойства.
Аноним 21/06/23 Срд 00:04:54 #757 №2739980 
>>2739873
>Нахуй шли это говно и всё
Разумеется. Им не сотрудник нужен, а лох, который бесплатно напряжётся.
Аноним 21/06/23 Срд 00:26:12 #758 №2739995 
>>2739964
>Потому что 90% пхп сеньоров написание DI контейнера не осилят
А чего там сложного? Просто список факторей, возвращающих уже настроенный и готовый к работе объект. При инициализации этих объектов он сам себя передаёт в фабрику для получения конфигов. Всё остальное - уже навороты. Пишется такое за полдня с перекуром.

мимо
Аноним 21/06/23 Срд 00:30:52 #759 №2740002 
>>2731059
Там ничего особенного - обычный ООПшный код.
Аноним 21/06/23 Срд 01:06:03 #760 №2740019 
>>2739995
>А чего там сложного? Просто список факторей
Сразу видно что ты не то что в этих 10%, ты даже не сеньор.

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

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

Дальше.
Некоторые сервисы нужно создавать только один раз. То есть нужно хранить инстансы. С менеджментом этих инстансов заебов будет куча.

Дальше.
В объект А нужно передать объект Б, в который нужно передать объект А, а мы А еще не создали. Циклические зависимости. Это настолько сложная хуйня, что я сразу предложил эту тему просто скипнуть.

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

И все это производит баги баги баги баги. Ты только тестировать эту хуйню будешь неделю. И все равно все не протестируешь и регулярно будешь подрываться на какой-то очередной кипишь: что-то не создалось, не то создалось, не передалось, инстанс пропал, кеш протух, хеш не тот, хуй в рот.
Аноним 21/06/23 Срд 04:27:23 #761 №2740037 
>>2739885
а что смотреть тогда?
Аноним 21/06/23 Срд 08:40:03 #762 №2740127 
>>2739964
>Это буквально обертка над форычем.
Блять, вкатун. Тебе сказали сеньёры с 10летним стажем твоей комманды не использовать коллекции, но ты язык в жопу засунул, в жизни слова сказать на дейлике не можешь опытным и прибежал сюда мериться яйцами со мной на двачах.
Давай ты замеришь перфоманс, количество памяти твоя обёртка и массива, потом обмажешь себя говном на камеру?

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

>>2740037
На английском смотреть. Но фреймворк это такая залупа, которой 95% вещей не нужны. Например ну никто в нормальной конторе не пишет фронтенд на бэкенде, отсюда тот же symfony/form с твигом, авторизаций, говновалидациями и горой зависимостей нахуй не нужны.
Поэтому по ютубчику посмотри то да сё, напиши своё, используй гугл и доку, а уж на работе полноценно вкатишься в симфони.
Аноним 21/06/23 Срд 10:44:55 #763 №2740208 
Screenshot 2023-06-21 102235.png
Screenshot 2023-06-21 102308.png
>>2740127
>язык в жопу
>мериться яйцами
>обмажешь себя говном на камеру?
У вас в пгт все так изъясняются или это только ты фантазируешь об обмазывании говном и лизании жопы?
Вот тебе тест с коллекцией на 400к записей через форыч и через коллекцию (форыч). Разница в пределах погрешности.
https://3v4l.org/T1eDo
https://3v4l.org/tZruZ
Что блядь было очевидно. Обертка в функцию нихуя не стоит, а содержимое коллекции хранится в том же самом массиве.

>Реализовать ссаный паттерн, который всеми используются, ебать сложно, нихуя себе
>)
Двс тоже везде используется. Реализуешь двс в гараже на токарном?

>Но фреймворк это такая залупа, которой 95% вещей не нужны.
Ты там солей въебал? Фреймворку нужны вещи? А сиги этот фреймворк у тебя не стреляет?
Фреймворк это просто набор библиотек. В симфони di (ссаный паттерн, написан в перерывах между крудами) вообще не будет загружать сервисы, которые не используются. symfony/form с твигом даже в память блядь не попадут если ты их не используешь.

Я уж не говорю что все фреймворки сто лет как поделены на отдельные библиотеки, которые ты сам в композере прописываешь. Пиздуй дальше искать вылизывания очка и обмазывание говном, используя гугл.
Аноним 21/06/23 Срд 10:56:39 #764 №2740216 
>>2740019
>Сразу видно что ты не то что в этих 10%, ты даже не сеньор.
Причина тряски, вайти?

>Ты физически не сможешь создать объект не передав эти параметры в конструктор.
Ты не можешь передать в конструктор параметры в месте его инициализации? Хуёво быть тобой?

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

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

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

>В объект А нужно передать объект Б, в который нужно передать объект А, а мы А еще не создали. Циклические зависимости. Это настолько сложная хуйня, что я сразу предложил эту тему просто скипнуть.
Эту хуйню маме рассказывай. Я уже ответил на эту твою детскую проблему: При инициализации этих объектов он сам себя передаёт в фабрику для получения конфигов, точно так же можно получать любые объекты из него, ВНЕЗАПНО, в процессе инициализации других объектов.

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

>
Аноним 21/06/23 Срд 11:14:06 #765 №2740245 
>>2740127
>Например ну никто в нормальной конторе не пишет фронтенд на бэкенде, отсюда тот же symfony/form с твигом, авторизаций, говновалидациями и горой зависимостей нахуй не нужны.
Если у вас не пишут - не факт, что везде так, у нас, был такой проект один и немаленький.
Или, например, для того чтобы по-бырику накидать MVP для проверки гипотезы как раз именно через шаблонизаторы и делают. Потом уже никто не мешает разделять фронт с беком и фреймворк позволяет это безболезненно сделать.
Аноним 21/06/23 Срд 12:42:15 #766 №2740406 
>>2740216
>Ты не можешь передать в конструктор параметры в месте его инициализации? Хуёво быть тобой?
А какие блядь параметры? У тебя указан первым параметром интерфейс какой-то хуйни. Где ты будешь брать реализацию? А если реализации две? Как ты поймешь что параметр нужно брать из контейнера или из конфига? Бля, чучело, ты просто попытайся хотя бы примерно написать что-то подобное.

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

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

>В простом исполнении покатит
Покатит для чего? Сказать "мама смари я написал конфиг" наверное покатит. А кто будет проверять что все конфиги подгрузились? Кто будет проверять что ничего не дублируется и не перезатирает друг друга? Кто всю эту хуйню будет кешировать?

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

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

>Попробуй просто поработать с любым контейнером напрямую и поймёшь, что сама идея там простая
Дура, ты бы хоть попытался это написать. Может тогда до тебя бы дошло, что писать по фабрике на каждый класс это максимально тупая идея. Да хули смеяться, даже писать по конфигу на каждый класс это мартышкин труд.
Аноним 21/06/23 Срд 15:18:24 #767 №2740585 
>>2740019
Дай ссылку на код кеша в пакете Symfony, чет либо сложности не нахожу, либо его самого.
Аноним 21/06/23 Срд 15:21:56 #768 №2740592 
>>2740406
>У тебя указан первым параметром интерфейс какой-то хуйни
Речи о рефлексиях сейчас не идёт, ребёночек. Это уже навороты и их необязательно городить если делаешь всё на коленке. Всё прекрасно можно указать в конфигах - куда какие интерфейсы идут.

В общем, потушись, дитятко. Хуйню городишь.
Аноним 21/06/23 Срд 15:23:37 #769 №2740596 
>>2740585
Просто он называется не "кеш", а dumper. https://github.com/symfony/dependency-injection/tree/6.3/Dumper
Аноним 21/06/23 Срд 15:34:47 #770 №2740612 
>>2740406
>Поэтому VarDumper из того же симфони умеет такие циклические зависимости находить.
Передаёшь в фабрику сам контейнер и из него достаёшь нужную зависимость онлайн. Если у входящей зависимости есть какая-то другая, то она точно так же в своей фабрике принимает этот же контейнер и точно так же получает из него что надо точно так же онлайн. Всё.
Ты ж просто необучаемый истеричный дурачок.
Аноним 21/06/23 Срд 16:39:24 #771 №2740662 
>>2740612
>Передаёшь в фабрику сам контейнер и из него достаёшь нужную зависимость онлайн. Если у входящей зависимости есть какая-то другая, то она точно так же в своей фабрике принимает этот же контейнер и точно так же получает из него что надо точно так же онлайн. Всё.
Что "всё" мудень? Мне за тебя загуглить что такое циклические ссылки или что? https://medium.com/@johann.pardanaud/about-circular-references-in-php-10f71f811e9
По английски не понятно?
https://3v4l.org/MhPOH Читай по слогам RECURSION. Для пхп это ОБЫЧНОЕ ДЕЛО. А твой "контейнер" если попытается такой объект создать жидко пернет и обмякнет, чучело. Причем из конфига этого объекта ты нихуя не поймешь, потому что там все будет правильно написано, и придется тебе перелопатить все конфиги, а потом еще и что-то отрефакторить. А все это время прод будет лежать. Бля, да кому я объясняю, ты же, чучело, на серьезном ебале думал что типа написал кароч код и ебанул его в мастер, ну а хули должно работать. И похуй что это точка пересечения всего приложения и если там баг, то у тебя тупо весь сервис встанет.
Аноним 21/06/23 Срд 16:48:05 #772 №2740670 
16543503433920.jpg
>>2740592
Быстро ты сдулся. Начали с замены фреймворков, а закончили "хуйней на коленке". И кому твоя хуйня на коленке нужна? Ты бы еще uml схему ебанул и радовался что паттерн "реализовал". Пиздец гений. Конфиги у него кароч на массивах, а на каждый класс он создает фабрику и конфиг по всем параметрам.

Пикрелейтед твое ебало, когда где-то в конфиге джун перепутал вложенность массивов, а конфиг размером больше, чем код всего приложения.
Аноним 21/06/23 Срд 17:14:19 #773 №2740697 
>>2740670
>Начали с замены фреймворков
Я мимошёл, истеричка. Спросил >>2739995 и ты начал истерику.
Вангую, что никакой работы у тебя нет и не было никогда - ты ж ебанутый на голову. Кто с тобой работать будет?
Аноним 21/06/23 Срд 17:19:26 #774 №2740708 
>>2740662
>Читай по слогам RECURSION. Для пхп это ОБЫЧНОЕ ДЕЛО
Ты всё равно начинаешь с какого-то одного объекта, вайти. Часто это просто конфиг и переменные окружения, которые требует большинство интеграций, составляющих ядро приложения. Хуй ты инициализируешь какой-то объект рекурсивно самим собой.
Перестань хуйню писать и позориться.
Аноним 21/06/23 Срд 17:36:08 #775 №2740726 
>>2740708
>Хуй ты инициализируешь какой-то объект рекурсивно самим собой.
В предыдущем же посте я тебя тыкал ебалом в рекурсию, которую ты сам создал. Потому что блядь создание объекта с резолвом зависимостей это принципиально рекурсивный процесс. И так же будет с любым другим рекурсивным процессом. Именно поэтому каждый di контейнер в любом фреймворке умеет такие ситуации обрабатывать. Ясный хуй, ведь ни одно более менее крупное приложение без этого бы не работало нихуя.

Ты же оказался неспособен не то что подобный сервис создать. Ты блядь с третьего поста только раздуплил о чем вообще речь идет. На серьезном ебале пытался рассказывать тривиальную хуйню о том кто кого куда передает. Тебе блядь даже в голову не пришло что передавать можно бесконечно.
Аноним 21/06/23 Срд 17:39:47 #776 №2740730 
>>2740697
>тряска
>истеричка
>истерика
>ты ж ебанутый на голову
Ну хоть не про говно и вылизывание очка. Хотя тоже очень показательно.
Аноним 21/06/23 Срд 22:12:57 #777 №2740997 
>>2740127
>Тебе сказали сеньёры с 10летним стажем твоей комманды не использовать коллекции, но ты язык в жопу засунул, в жизни слова сказать на дейлике не можешь опытным и прибежал сюда мериться яйцами со мной на двачах.
я >>2737759 не он >>2739964 анончик...
Аноним 22/06/23 Чтв 10:54:59 #778 №2741238 
>>2740596
Пиздец, в битриксе тоже любят через sprintf навалить кодогенерации для своих классов.
Аноним 22/06/23 Чтв 11:09:03 #779 №2741250 
>>2740997
Так очевидно, что та манька без работы сидит.Она элементарно не понимает как работают контейнеры и пытается гнать тут пургу. Причем делает это очень истерично.
Ты бы стал работать с таким ебанутым? У меня бы она через неделю вылетел с работы, пересравшись со всеми.
Аноним 22/06/23 Чтв 11:13:56 #780 №2741256 
>>2741238
Жить захочешь - не так раскорячишься. Проблема-то в том что рефлексия в пхп работает слишком медленно. Вот и приходится выдумывать какие-то ебаные прокси как в доктрине.

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

Прямо сейчас проекты потихоньку засираются говном, которое взойдет только через несколько лет. В джаве даже без проблем с перфомансом рефлексии говна хлебнули с этими атрибутами. Теперь очередь "джавы для бедных".
Аноним 22/06/23 Чтв 11:31:11 #781 №2741281 
>>2741250
Шизик, ты уж определись.
Либо
>элементарно не понимает как работают контейнеры
Либо
>Это уже навороты и их необязательно городить если делаешь всё на коленке

Давай я кароч использую заклинание по удалению тебя из треда. Работает безотказно.
Скинь сюда свой код. Покажи нам как ты написал di контейнер.
Ну или перни "я никому ничего не обязан" и съеби в закат.
Аноним 22/06/23 Чтв 13:03:20 #782 №2741333 
>>2741281
Именно потому, что ты не понимаешь как работает этот паттерн, ты не понимаешь где основной функционал, а где навороты, истеричка.
Аноним 22/06/23 Чтв 13:49:01 #783 №2741373 
>>2741333
>как работает этот паттерн
Чучело, ты вообще понимаешь что di контейнер это не "паттерн"?
Аноним 22/06/23 Чтв 14:16:43 #784 №2741408 
>>2741373
Причина тряски?
Аноним 22/06/23 Чтв 16:18:20 #785 №2741508 
У меня есть таблица A, у нее есть поле entity_id, которое может указывать на строку таблицы B либо на строку таблицы C. Какой тип выбрать? Хочется что бы он хранил еще и тип таблицы на которую он указывает, B или С.
Аноним 22/06/23 Чтв 17:23:30 #786 №2741615 
test.png
>>2741508
>Хочется что бы он хранил еще и тип таблицы на которую он указывает, B или С.
Так не делается. Одна колонка - один внешний ключ из одной таблицы.

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

Думаю что ты уже и сам понял что сделать джойн с твоей entity у тебя не получается. И ни одна орм с таким работать не будет.
Вот тебе пример нормальной схемы с типом. Примерно так оно все и делается. Рекомендую хотя бы в википедии почитать про реляционные базы и нормализацию данных.
Аноним 22/06/23 Чтв 17:44:52 #787 №2741637 
>>2741615
Уверен почти где то возможность так сделать есть, хоть БД и выглядят убожеством из 50х годов.

>Думаю что ты уже и сам понял что сделать джойн с твоей entity у тебя не получается.
Возможно с точки зрения стандарта SQL не получится, но я проблем не вижу, сделать вилку, если тип B то выбрать такие поля из таблицы B, если тип C то выбрать другие поля, в поле A.entity_id.TYPE вернуть "B" или "C"
Аноним 22/06/23 Чтв 18:16:44 #788 №2741679 
>>2741637
>Уверен почти где то возможность так сделать есть, хоть БД и выглядят убожеством из 50х годов.
Тебе ни одна современная nosql база не даст такую хуйню сделать.
Проблема не в хранении, запихать ты можешь куда угодно что угодно. Проблема в эффективном получении этих данных.

>Возможно с точки зрения стандарта SQL не получится, но я проблем не вижу, сделать вилку
С точки зрения стандарта SQL ты пользуешься реляционной базой и хранишь реляционные данные.
С твоим подходом тебе на каждую строку в таблице нужно сделать действие по извлечению "типа" и подстановке его в запрос. Тебе нужна будет одна строчка, а придется проверить весь миллион. Каждый раз. Я уж не говорю что после того как ты нашел тип тебе нужно таблицу заджойнить. У половины строк тип B - джойним B, а у одной строки тип С - джойним С. Ко всем строкам. И к строкам типа B тоже, лол.

Короче.
Очевидно что у тебя ошибка в схеме и ты занимаешься ерундой. Как ты и написал реляционным базам под полтинник лет и все проблемы давно обсосаны и решены. Давай рассказывай что ты пытаешься сделать сто пудово очередной EAV для товаров
Аноним 22/06/23 Чтв 19:54:01 #789 №2741843 
>>2741679
Не понимаю почему ты думаешь что это будет точно неэффективно, это можно было бы представить внутренне как entity_b_id, entity_c_id с правилом что только один из них может быть не NULL.
Аноним 22/06/23 Чтв 20:25:20 #790 №2741883 
>>2741373
а что это?
Аноним 22/06/23 Чтв 21:13:32 #791 №2741935 
>>2739373

Анонушка, а сколько там моделей и URL? Если там 2-3 модели, то вряд ли это настоящий бекенд. А ТЗ на 40 страниц может быть, чтобы проверить твою внимательность и усердие.
Аноним 22/06/23 Чтв 21:20:01 #792 №2741940 
>>2739620

Это важные принципы, но тебе надо не заучивать определения, а думать чуть-чуть глубже. Почему мы должны применять эти принципы? Какую выгоду они дают? Если ты инженер, то ты должен уметь обосновать любое решение: почему лучше делать так, а не иначе (а не отвечать "потому, что так написано в учебнике").

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

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

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

Вот примерно так ты должен рассуждать.
Аноним 22/06/23 Чтв 21:21:23 #793 №2741941 
>>2739857

Это не баззворды. Если ты не будешь объяснять людям про DRY, то они будут дублировать код и получать проблемы из-за этого.
Аноним 22/06/23 Чтв 21:25:48 #794 №2741945 
>>2740127

> количество памяти

Вот тут звучит неправдоподобно. Никто через ORM не получает больше нескольких сотен сущностей, значит памяти там много потратиться ну вообще никак не может. Да и вообще, веб-скрипты много памяти не потребляют, ну типичная цифра от 5 до 50 мегабайт, и я не понимаю, зачем при таких смешных цифрах что-то экономить.
Аноним 22/06/23 Чтв 21:29:38 #795 №2741948 
>>2740127

> Например ну никто в нормальной конторе не пишет фронтенд на бэкенде, отсюда тот же symfony/form с твигом, авторизаций, говновалидациями и горой зависимостей нахуй не нужны.

Какую ты глупость сейчас написал. Ты, вместо того, чтобы использовать готовые библиотеки валидации, сделал убогую самоделку без тестов и документации на JS, и делаешь валидацию только на клиенте?

Ну и твое SPA годится только для админок, морду сайта все равно надо делать на твиге, а не на тяжелых тормозных JS фреймворках.
Аноним 22/06/23 Чтв 21:35:18 #796 №2741954 
>>2741508

Это похоже на "наследование таблиц", и там есть 3 паттерна, single table inheritance, class table inheritance и еще какой-то table inheritance.

Один из вариантов решения - сделать 2 поля, b_id и c_id и добавить ограничение CHECK, запрещающее ставить оба поля. Одно поле сделать нельзя, так как не получится прописать внешний ключ.
Аноним 22/06/23 Чтв 21:59:13 #797 №2741987 
>>2741948
>Ну и твое SPA годится только для админок, морду сайта все равно надо делать на твиге, а не на тяжелых тормозных JS фреймворках.
https://nextjs.org/docs/pages/building-your-application/rendering/server-side-rendering
Аноним 22/06/23 Чтв 22:25:31 #798 №2742011 
>>2741843
>Не понимаю почему ты думаешь что это будет точно неэффективно
Я телепат нахуй. Хули тут думать? Сделай эксплейн запроса и увидишь.

>это можно было бы представить внутренне как entity_b_id, entity_c_id с правилом что только один из них может быть не NULL
Ага. Можно еще дохуя всего сделать. Это называется "нормализация данных". Умные люди придумали как правильно хранить данные в реляционном виде чтобы они были связаны, не противоречили друг другу и чтобы ты не городил хуйни.

Ну в общем-то дальше говорить не о чем. Сделать так как тебе захотелось у тебя не получится, тут спорить не о чем - это просто невозможно. Ты либо расскажешь что пытаешься сделать (по прежнему ставлю сотку что пытаешься запихнуть в базу свойства товаров) и тебе расскажут как это правильно делается. Либо ты пойдешь долго и мучительно искать в гугле то же самое.
Аноним 22/06/23 Чтв 22:53:09 #799 №2742028 
>>2741883
>а что это?
Обычный сервис. Ты же не называешь "конфиг" паттерном.
Есть SOLID принцип DIP "принцип инверсии зависимостей". Если коротко, то он про то что твой код должен зависеть интерфейсов.
Есть паттерн DI "dependency injection (инъекция зависимостей)". Он про то что зависимости нужно создавать снаружи твоего кода и передавать внутрь уже готовыми.
И наконец есть "сервис" DIC "dependency injection container". У него по сути всего пара методов "get" и "has" и он может создать абсолютно любой объект в твоем приложении и в соответствии с паттерном DI и принципом DIP передать в этот объект все его зависимости.

Короче, весь смысл "паттерна" это передавать в конструктор или метод готовые объекты. К тому как устроен внутри DI контейнер это никакого отношения не имеет. Бля, да это любому миддлу очевидно, потому что сам контейнер спрятан за интерфейсом. Какая нахуй разница как он работает.
Просто очередное доказательство того что этот >>2741333 баран просто пишет знакомые слова, совершенно не понимая их смысла.
Аноним 22/06/23 Чтв 23:21:54 #800 №2742054 
>>2742011
>Сделай эксплейн запроса и увидишь.
Максимум два джойна или что я должен увидеть? У меня нет никакой задачи просто интересно.
Аноним 22/06/23 Чтв 23:32:48 #801 №2742060 
>>2741941
>Если ты не будешь объяснять людям про DRY, то они будут дублировать код и получать проблемы из-за этого.
А если не будешь им объяснять что нужно снимать штаны когда писоешь, то они будут ссать прямо в штаны?

Пчел. Это называется трюизм - общеизвестная избитая хуйня. Да еще и без конкретного определения и способа измерения.

>>2741940
>KISS говорит о том, что не надо проектировать какую-то сложную систему, когда можно написать простой код.
Сложность системы ты так примерно прочувствовал? Определение "простого кода" нам подгонишь? В каких единицах измеряется "простота кода"? В прикинутых к носу хуях?

>Да, может быть этот код будет не так эффективен и не так расширяем
Как померял "расширяемость" кода? Почему простота уменьшает расширяемость? Как простота уменьшает эффективность (каво блядь)? Создание вменяемого интерфейса это упрощение или усложнение кода?

>DRY это очень важный принцип. Если ты дублируешь код 2 или более раз, то это очень плохо. Во-первых, при чтении кода коллеге придется читать обе копии
Тут я сразу подахуел. Какие еще нахуй копии? Как такая копия вообще может возникнуть? Типа какой-то еблан скопировал класс и написал "у нас теперь два таких, не забудьте менять оба одновременно"? Более высосанного из пальца примера не придумать.
Про два раза тоже хуй пойми откуда ты взял. Я например слышал про https://en.wikipedia.org/wiki/Rule_of_three_(computer_programming) .

На вопросы можешь не отвечать - они риторические. Просто хотел показать что ты на самом деле нихуя не объяснил.
Твой DRY будет бесполезной (а может и вредной) хуйней до тех пор пока в его определении не будет конкретно прописано: какие корабли, сколько истребителей сколько повторений, сколько строк можно повторять, как рефакторить: когда извлечение в метод, когда в класс? Про KISS вообще ничего говорить не хочу - максимально абстрактная обтекаемая хуйня, под которую можно что угодно подтянуть.
Аноним 22/06/23 Чтв 23:34:29 #802 №2742063 
>>2742054
Я ебу что ты видишь? Запрос скинь.
Аноним 23/06/23 Птн 00:16:07 #803 №2742104 
>>2741987

Гора кривых костылей, лишь бы твиг не изучать. Это никак не отменяет того факта, что у тебя будет грузиться куча тяжелого JS и первые несколько секунд страница не будет ни на что реагировать.
Аноним 23/06/23 Птн 00:18:03 #804 №2742108 
>>2742060

> Сложность системы ты так примерно прочувствовал? Определение "простого кода" нам подгонишь? В каких единицах измеряется "простота кода"?

Ты даешь дизайнеру задачу нарисовать современный, лаконичный и продающий дизайн. В чем ты собрался его измерять? Можно я просто в пейнте за 5 мин набросаю и заберу деньги?
Аноним 23/06/23 Птн 00:22:32 #805 №2742112 
>>2742060

> Почему простота уменьшает расширяемость?

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

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

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

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

И так далее. Странно, что ты этого не знаешь. Я таких примеров могу привести множество.
Аноним 23/06/23 Птн 00:25:51 #806 №2742113 
>>2742060

> Как такая копия вообще может возникнуть?

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

если рейтинг > 5000 то показать ссылку

если рейтинг > 5000 то показать блок сбоку

...

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

Такое ощущение, что ты пишешь бессмысленные вещи просто ради спора. Почему ты решил что "копия" это когда копируешь класс целиком?
Аноним 23/06/23 Птн 00:26:21 #807 №2742114 
>>2742104
35 кб это очень много, да
Аноним 23/06/23 Птн 00:52:00 #808 №2742136 
>>2742060

> Твой DRY будет бесполезной (а может и вредной) хуйней

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

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

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

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

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

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

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

В пользу гайдлайнов говорит опыт развития программирования и других творческих видов деятельности, а что ты можешь сказать в пользу своей позиции? Просто тебе так кажется? Я не вижу никаких аргументов в твоем посте. Я в защиту принципа DRY привел конкретные последствия, которые будут, если в проекте он нарушается.
Аноним 23/06/23 Птн 00:52:56 #809 №2742139 
>>2742114

Покажи мне SPA сайт, у которого весь JS евсит 35 Кб. Что попусту спорить. Или покажи SPA сайт, который нравится тебе, а я скажу, сколько на нем весит JS.
Аноним 23/06/23 Птн 00:56:11 #810 №2742140 
>>2742060

> А если не будешь им объяснять что нужно снимать штаны когда писоешь

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

Программист без опыта тот же ребенок, если подумать.
Аноним 23/06/23 Птн 01:30:32 #811 №2742152 
>>2742136
>Инженер не должен выбирать решения наобум (как ты предлагаешь делать), он должен сравнивать плюсы и минусы. Правила (точнее, гайдлайны) помогают это делать.
Я тебе только что показал что DRY это не правило. И не гайдлайн. Как ему следовать? Каждые две повторяющиеся строки выносить в отдельную функцию? В отдельный объект? Щас ты начнешь телегу про то что нужно "пользоваться здравым смыслом" и делать все на чуечке. Но пользы для начинающего программиста в этом ноль.

>Гайдлайны
>пользу гайдлайнов
>Вероятность возникновения бага
Пошел хуйню молоть. Что конкретно из твоего потока сознания должен понять начинающий программист? "Нормально делай - нормально будет". Никакой конкретики. Ну кароч сложно не делай, а делай не сложно. Как это "не сложно"? Да хуй его знает.

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

Для начинающего пхп программиста:
1) Поставить phpcs https://github.com/squizlabs/PHP_CodeSniffer . И настроить в шторме чтобы он постоянно сканировал код и показывал ошибки. От замечательно проконтролирует и формат и такие штуки как количество параметров в функции и цикломатическую сложность.

2) Поставить плагин https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended- Он подсветит кучу ошибок типа таких https://github.com/kalessil/phpinspectionsea/blob/master/docs/architecture.md и даст объяснение почему так.

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

>>2742140
То есть если бы тебе в детстве не показали что штаны надо снимать, ты бы всю жизнь сидел в обоссаных штанах? Или вывел бы теорию обоссанных штанов? В штаны не нужно ссать, это не удобно, воняет и все пачкает. Необходимо ссать так чтобы штаны воняли как можно меньше. Бля получилось вполне конкретное правило. Есть метрика "вонь штанов" предложен способ решения проблемы "ссать так чтобы вони было меньше". У меня просто такую абстрактную невнятную хуйню как KISS не получается выдумать.
Аноним 23/06/23 Птн 12:31:22 #812 №2742506 
>>2742152
>2) Поставить плагин https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended- Он подсветит кучу ошибок типа таких https://github.com/kalessil/phpinspectionsea/blob/master/docs/architecture.md и даст объяснение почему так.

Спасибо за полезный совет. Я думал, что phpstan достаточно, а оказывается нет.

Другой анон.
Аноним 23/06/23 Птн 12:34:22 #813 №2742511 
>>2742139
Зачем мне это делать? Я тебе уже сказал что оверхед составляет 35кб, дальше сам думай.
Аноним 23/06/23 Птн 12:55:23 #814 №2742541 
>>2742506
А вот phpstan я не рекомендую использовать, особенно с пхп 8+.
У них там питзда с багами https://github.com/phpstan/phpstan/issues
Чтоб ты понимал у симфони на 266 пулл реквестов 575 открытых issue.
А в phpstan на 9! пулл реквестов 872 открытых и 5к закрытых.
При этом размер и сложность проектов просто слон и моська.
И это тулза, которая должна проверять правильность чужого кода. Просто пиздец.
Аноним 23/06/23 Птн 12:57:07 #815 №2742544 
>>2742511
>Зачем мне это делать
Чтобы подтвердить что твои слова это не пердеж в лужу. Либо пруфай, либо глохни, гнида.
Аноним 23/06/23 Птн 14:21:26 #816 №2742657 
>>2742544
Очевидно что любой сайт с контентом будет весить больше 35кб, ведь 35кб это оверхед от nuxt.js на клиенте, советую тебе, прежде чем огрызаться, посидеть в readonly, почитать что нибудь умное, поэкспериментировать с различными фреймворками, например собери минимальную страницу на nuxt, замерь размер и убедишься в моей правоте.
Аноним 23/06/23 Птн 14:35:40 #817 №2742672 
>>2742657
>например собери минимальную страницу на nuxt
Да чет как-то не хочется.
Если даже чучело, которое в этой хуйне шарит и эту хуйню пропагандирует, не в состоянии высрать минимальный перфоманс чек. То мне эта поебень тем более не нужна.
Аноним 23/06/23 Птн 14:53:15 #818 №2742685 
>>2687463 (OP)
Сколько по времени займёт вкат в битрикс, если заниматься по часа 4 в день? Уровень знаний примерно на могу что-нибудь написюнькать на ларавель, типо блога.
Аноним 23/06/23 Птн 15:00:33 #819 №2742691 
>>2742685
Мне хватило 20 часов примерно, потом пошел на работу там уже всему научили, знал только что есть php_init.php и как инфоблоки создавать в админке.
Аноним 23/06/23 Птн 15:12:05 #820 №2742711 
>>2742691
10 лет назад вкатывался?
Аноним 23/06/23 Птн 15:14:51 #821 №2742716 
>>2742711
2 года назад
Аноним 23/06/23 Птн 17:41:09 #822 №2742855 
>>2742511

Понятно, просто привести пример сайта ты не можешь. Ну не беда, я умею гуглить по запросу "examples nuxt js sites". Возьмем сайт https://tochka.com/ как пример. При загрузке страницы там грузится 1,43 Мб (после распаковки получается 3,1 Мб). Что-то не похоже на твои 35 Кб.

Еще, кстати, при загрузке там делается бесполезный AJAX-запрос на https://tochka.com/data/filestore/tariff.json, хотя эти данные можно было бы встроить в страницу.

Ну и конечно куда же без веб-шрифтов, там грузится 454 Кб шрифтов, до загрузки которых текст не отображается.

Заметь, что это сайт, на который выделен значительный бюджет, и который наверняка оптимизирован. Что творится с низкбюджетными сайтами, можно только гадать.
Аноним 23/06/23 Птн 17:47:04 #823 №2742861 
>>2742855
Ты просто тупой, именно вообще не понимаешь не связей, не причин, не понимаешь как что то доказать или опровергнуть, зачем то начал какие то json приводить в пример, шрифты, это все можно было допустить и на jquery.
Аноним 23/06/23 Птн 17:55:21 #824 №2742873 
>>2742541

phpstan очень сложный.

>>2742152

Вот смотри, у дизайнеров есть свои гайдлайны: https://developer.apple.com/design/human-interface-guidelines Там почти нигде нет роботизированных критериев, и нет программ для их проверки, но их пишут и им следуют и это работает.

Точно так же работают и принципы/гайдлайны вроде DRY или SOLID.

PHPCs сработает только на явную дичь (огромные блоки кода скопированы) и не заметит приведенный мной пример ошибки, где несколько раз копируется условие "если у пользователя рейтинг > 5000". Хотя там дублируется всего 1 строка, это нарушение принципа DRY.

> Щас ты начнешь телегу про то что нужно "пользоваться здравым смыслом" и делать все на чуечке. Но пользы для начинающего программиста в этом ноль.

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

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

> Ну кароч сложно не делай, а делай не сложно. Как это "не сложно"?

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

Ты пытаешься все формализовать, но это плохо. Вот, например, в каких-то компаниях есть требование писать phpDoc к каждому публичному методу. И они к функции countUsers, чтобы пройти проверку, пишут комментарий counts users (phpstorm, кстати, сам любит вставлять такие бесполезные сгенерированные комментарии phpdoc и захламлять код. Не знаю, какой идиот туда добавил эту функцию). Как ты формализуешь правило "комментировать функции, но не писать бесполезные комментарии"?
Аноним 23/06/23 Птн 17:56:15 #825 №2742875 
>>2742861

Нет, ты тупой, придумал цифру в 35 Кб, но не можешь показать единственный пример сайта SPA, на котором не более 35 Кб JS.
Аноним 23/06/23 Птн 18:30:22 #826 №2742925 
>>2742716
Получается уже 2 года битриксойдом работаешь, как полёт? Или чем то другим занимаешься?
Аноним 23/06/23 Птн 21:55:15 #827 №2743084 
>>2742925
Нормально, уже управляю небольшой командой, если что то конкретное хочешь узнать то спрашивай, 150к зп пока что, но удаленка и много можно чилить.
Аноним 23/06/23 Птн 22:25:21 #828 №2743105 
>>2743084
Добавлю. Я тоже Laravel немного знал, думаю блог мог бы написать, но никогда не осиливал до конца, поэтому за 2 года такой прогресс, там люди еще более скромного уровня приходили.
Аноним 24/06/23 Суб 01:37:09 #829 №2743217 
>>2742873
Бля, клоун. Ты этот гайдлайн читал вообще?
>Always give people multiple ways to interact with your app
>making sure that the objects they need to use are within their field of view
>if your app is running in a Full Space, you may need to request access to information about a person’s head pose
Это конкретные правила. По этому гайдлайну любая обезъяна может сделать проверку.
А у тебя вместо гайдлайна "ну кароч не делай сложно". Ну и не дублируй код. Но вот этот можно дублировать. А вот бизнес логику нельзя. Что такое бизнес логика и как её отличить? Нууу это сложно.
В то же время у дизайнеров: делай это, делай вот так, используй это, это не делай, это можно не делать, это хорошо бы сделать если есть время, данные для этого возьми отсюда.

>PHPCs сработает только на явную дичь (огромные блоки кода скопированы)
Phpcs сработает на то на что ты его настроишь. Есть куча стандартов типа такого https://github.com/slevomat/coding-standard

>и не заметит приведенный мной пример ошибки, где несколько раз копируется условие "если у пользователя рейтинг > 5000"
Из этого следует что все условия должны быть вынесены в методы? В классы? Есть такой паттерн: спецификация. Все условия должны быть вынесены в спецификации? Вывод блядь из этого какой?

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

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

>Не знаю, какой идиот туда добавил эту функцию
Вкатун, даю инфу: в большей части кода написанного на пхп не указано типов. Вообще. В шапке этого треда гайд, в котором не указано ни одного типа.
Аноним 25/06/23 Вск 06:30:49 #830 №2743791 
Open-Server.jpg
изображение.png
подскажите как open server запустить, вот такую ошибку выдаёт, а после того как закрываю окно программа закрывается и пропадает из панели задач. в антивируснике выключил защиту в реальном времени.
по поводу файла hosts, его раньше получалось показать командой attrib.exe -s -r -h -a C:\Windows\system32\drivers\etc\hosts сейчас даже так не выходит. ещё почему то после начала всех моих манипуляций винда создала аккаунт администратора отдельно от того которым я пользовался всё время.
подскажите что делать я тупой
Аноним 25/06/23 Вск 08:43:47 #831 №2743817 
Screenshot 2023-06-25 084229.png
>>2743791
Аноним 26/06/23 Пнд 00:36:43 #832 №2744415 
>>2728018
Нет. Достаточно просто знать что она существует.
Аноним 26/06/23 Пнд 00:38:53 #833 №2744416 
>>2743791
От имени администратора ?
Аноним 26/06/23 Пнд 18:19:03 #834 №2745152 
>>2743084
Анон, а что ты для локальной разработки используешь - докер, вагрант, битрикс_вм + виртуалбокс?
Аноним 26/06/23 Пнд 20:00:55 #835 №2745271 
>>2745152
Да мне кажется разницы нету, кому что удобнее, мне LAMP.
Аноним 26/06/23 Пнд 22:25:20 #836 №2745494 
>>2745152
Кстати, хотел побитриксить с помощью докера и вроде неплохую штуку нашёл, может кому пригодится https://github.com/bitrixdock/bitrixdock
Аноним 27/06/23 Втр 07:36:40 #837 №2745648 
>>2745271
>>2745494
Я хотел узнать, что в других компаниях используют - у нас ебанутый тимлид написал свою хуйню для докера, которая нормально не рабоатет.
Аноним 27/06/23 Втр 20:51:43 #838 №2746562 
image.png
image.png
Это вообще норм, что пикрил задачка показалась мне ОЧЕНЬ (ОЧЕНЬ!) сложной? Кому-то она дается легко?

Потратил на нее ровно сути, и то не уверен сейчас, что решил без ошибок.

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

Код:
https://3v4l.org/riYAq
Аноним 27/06/23 Втр 20:52:34 #839 №2746563 
>>2746562
>сути
сутки*
Аноним 27/06/23 Втр 22:14:44 #840 №2746621 
2023-06-2721-17.png
>>2746562
Никогда подобных задач не решал за свои недолгие годы работы, программирование оно разное.
Аноним 28/06/23 Срд 09:15:03 #841 №2746803 
>>2746562
1) Это ошибка составителя "учебника". На самом деле тут две задачи: одна по теории алгоритмов и математике, собственно создание алгоритма, вторая по имплементации этого алгоритма на пхп.

Очевидно что теории алгоритмов этот "учебник" не учит. Поэтому автор должен был предоставить алгоритм в понятной форме. В 99% случаев программист не придумывает алгоритм, этот алгоритм либо давно придумали за него, либо его структура прописана в тз и это дело бизнеса.

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

2) То что ты написал это не читаемая хуйня. Проще свой код написать >>2746621 , чем понять что тут происходит. Начиная с однобуквенного именования и заканчивая вычислениями в условии. Ты вообще забыл что решением задачи должна быть функция итд. Где понятийный аппарат? "Деньги", "купюры", "количество купюр", "количество доступных купюр". Нихуя нет.
Вот так примерно это должно выглядеть: https://3v4l.org/O07Xf . Перевод терминов может быть разный, но сами термины должны быть обозначены.

Запомни главное: ты пишешь код в первую очередь чтобы его потом читать. Если ты не можешь прочитать и понять что происходит, то этот код все равно будет переписан и выброшен.
Аноним 28/06/23 Срд 10:33:55 #842 №2746854 
>>2746562
Где то услышал фразу что программирование не про алгоритмы, а про структуры данных и их преобразование, и мне кажется не стоит забывать их важность, твоя структура данных сложная, из за этого и алгоритм сложный, надо было упростить под алгоритм.
Аноним 28/06/23 Срд 10:37:48 #843 №2746860 
>>2746854
Копипастил его отсюда, как сказано в учебнике:
https://web.archive.org/web/20211027152609/https://informatics.msk.ru/mod/book/view.php?id=815

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

Учел замечания и посмотрел на другое решение из ответов на пост, спасибо за отклик.
Аноним 29/06/23 Чтв 00:47:44 #844 №2747868 
>>2746562
Лол, я на другие задачи неделю тратил, то что ты её решил значит что мидлом можешь идти смело
Аноним 29/06/23 Чтв 01:50:33 #845 №2747889 
>>2746562

Тут аноны справедливо пишут, что это "задача о рюкзаке" и для произвольных номиналов купюр нужен хитрый алгоритм (если тебе любопытно, то алгоритм подробно описан тут: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md ).

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

- надо выдать 13000
- сначала берем 2 купюры по 5000, остается 3000
- потом берем 1 купюру по 2000, остается 1000
- потом берем купюру по 1000, все, сумма выдана

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

Замечания по коду:

- define устарел, используй const:

const X = 5;

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

Например: "в массиве $F[$sum] указано, каким количеством купюр можно выдать сумму $sum"

- $F, $B, $m очень плохие названия, так как непонятно, что они значат

- вместо этих 2 команд: $F= []; $F[0] = 0 массив можно было создать и заполнить одной командой: $F = [0]; Аналогично для массива $B.

- для BIG_INT в PHP уже есть константа PHP_INT_MAX - это максимальное целое число типа int. Для чисел float есть константа INF, обозначающая бесконечность.

Похоже, это взятый откуда-то алгоритм, к которому прикручено ограничение на количество купюр. Вроде как он выглядит верно, но тут надо подумать, а точно ли он в любой ситуации сможет подобрать нужный набор купюр? Подумаю над этим позже.
Аноним 29/06/23 Чтв 01:52:15 #846 №2747890 
>>2746854

Структура данных у него не сложная: один массив, где хранится сколько купюр нужно для выдачи суммы, и второй массив, где хранится какие именно купюры нужны.
Аноним 29/06/23 Чтв 16:28:36 #847 №2748333 
Как у вас Зандстра шел? Тяжело, норм или легко? За сколько дней прочитали? Как читали, быстро или осознанно и прорабатывая кажду страницу?
Аноним 29/06/23 Чтв 20:20:11 #848 №2748485 
Workerman рабочая тема?
Аноним 30/06/23 Птн 00:59:06 #849 №2748675 
Screenshot 2023-06-30 005653.png
>>2748485
Пчел. Все что нужно знать про эту дрисню видно сразу как откроешо доку https://www.workerman.net/doc/workerman/
Вместо документации иероглифы. Со своими проблемами можешь писать сразу сидзеньпыне.
Какие вообще могут быть вопросы?
Аноним 30/06/23 Птн 13:28:40 #850 №2749006 
>>2748675
А свул тоже такой же
Аноним 30/06/23 Птн 15:57:00 #851 №2749180 
>>2748485
Лучше сделай микросервис на Golang
Аноним 30/06/23 Птн 16:04:03 #852 №2749187 
>>2743084
Этот анон прав? >>2710354
И ещё, нужны ли сертификаты?
Аноним 30/06/23 Птн 17:12:26 #853 №2749318 
>>2749187
>сертификаты
Ректификаты нужны. Чтобы с этим говном работать на постоянной основе нужны высокоградусные ректификаты.
Аноним 30/06/23 Птн 19:51:44 #854 №2749535 
>>2749187
Прав. Сертификаты не нужны, их можно получить уже работая.
Аноним 01/07/23 Суб 21:29:21 #855 №2750610 
Работяги, нужен совет. Меня посадили за сайт написанный пять лет назад на Битриксе, где половина страниц не открывалась. Кое как я его восстановил, но проблема в том что я больше не хочу разбираться в этом говне, и решил просто его переписать. Так будет быстрее чем Битрикс учить. Благо сайт не большой. Пару форм, афиша, новостной блок, галерея, алминка итп. Вопрос на чем сделать фронт? Сам я работал раньше на реакте. Но для этого сайта нужно сео. Склоняюсь в сторону ларавеля, но не знаю как он фронт выводит и целесообразная ли эта затея вообще?
Аноним 01/07/23 Суб 21:33:34 #856 №2750617 
>>2750610
На ларавеле бекэнд генерится за час если есть конкретный список че генерить. Фронт ларавель выводит как все - высирает html.
Гарантирую что больше ебли будет с натягиванием дизайна.
Аноним 02/07/23 Вск 10:12:58 #857 №2750856 
>>2750610
Если тебе надо именно монолит и фронт при этом простенький, то там у лары есть inertia - в ней можно вью юзать или реакт.

А если там уж совсем чет простое, то подставь шаблоны старые, js скрипты перенеси да подключи.
Аноним 02/07/23 Вск 13:27:44 #858 №2750940 
>>2750610
>Пару форм, афиша, новостной блок, галерея, алминка итп
Это все стандартные компоненты битрикса, в админке сео настраивается для каждого поста новостей по гибким правилам и для всего сайта в целом, есть редактор новостей итд. Тебе проще битрикс изучить, там все просто.
Аноним 04/07/23 Втр 00:33:31 #859 №2752794 
>>2750856

> Если тебе надо именно монолит

А что еще ему может быть нужно для сайта с афишей и новостным блоком? Плюс, пишут, что мода на микросервисы уже закончилась, сейчас пишут модулиты (если я не отстал конечно).
Аноним 04/07/23 Втр 00:34:32 #860 №2752795 
Screenshot from 2023-07-04 00-27-56.png
Интересно, как разработчики курсов не стесняются давать малореальне обещания (это skillbox).
Аноним 04/07/23 Втр 00:35:41 #861 №2752797 
>>2752795

Кстати, сеньор с опытом 24 месяца по их мнению будет получать уже 250 000 р.
Аноним 04/07/23 Втр 02:20:49 #862 №2752827 
>>2752795
>питон гавно
Я каждый день молюсь Аллаху за то что он отвел этих курсопидарасов от пхп. Все эти миллионы пицценосцев, которые вкатываются в айти учат этот ебаный бесполезный питон, на котором вакансий хуй да нихуя, и не демпенгуют пхп рынок. Грызутся за эти крошки и не лезут к нам за стол.
Слава Аллаху за то что отвел глаза тупорылым хуесосам из скиллбокс.
Аноним 04/07/23 Втр 05:17:10 #863 №2752858 
>>2752794
Да хуй его знает. Апишку мож он захочет и накс3 на фронте.
Аноним 04/07/23 Втр 11:38:51 #864 №2753019 
Как понять инфоблоки в битриксе?
Аноним 04/07/23 Втр 11:44:06 #865 №2753021 
>>2753019
Тип инфоблока - БД
Инфоблок - Таблица
Элемент инфоблока - Элемент (строка) в таблице
Аноним 04/07/23 Втр 12:23:11 #866 №2753044 
16610841334100.jpg
Можете объяснить джуну почему в пхп не добавляют "настоящие" массивы? Это невозможно из-за существующей архитектуры?
Аноним 04/07/23 Втр 12:40:25 #867 №2753070 
>>2753044
Определение настоящего массива?
Аноним 04/07/23 Втр 15:04:07 #868 №2753247 
Аноны, решил задачу на ООП из учебника про ООО ВЕКТОР и антикризисные меры
Код:
https://onlinephp.io/c/f4ce8
Укажите ошибки, предложите свои варианты как можно было бы написать.
Аноним 04/07/23 Втр 15:08:20 #869 №2753253 
image.png
>>2753044
>"настоящие" массивы
Аноним 04/07/23 Втр 15:09:14 #870 №2753256 
Screenshot 2023-07-04 150707.png
>>2753070
>>2753253
"Настоящий" массив удовлетворяет пикрелейтед условиям. А в пхп не массивы а хеш мапы. Ну вы блядь в натуре обезьяны.
Аноним 04/07/23 Втр 15:19:01 #871 №2753264 
>>2753256
Он нужен чтобы на битриксе формочки клепать?
Аноним 04/07/23 Втр 15:22:49 #872 №2753267 
>>2753264
Чтобы на битриксе формочки клепать нужно иметь стекломой вместо мозгов. Потому что за те же формочки литерали на любой другой хуйне тебе заплатят больше.
Аноним 04/07/23 Втр 15:27:34 #873 №2753273 
>>2753267
>Потому что за те же формочки литерали на любой другой хуйне тебе заплатят больше.
Ну показывай давай соотношение вакансий, требования и количество откликов для битрикса и "любой другой хуйни"
Аноним 04/07/23 Втр 15:45:24 #874 №2753307 
>>2753273
Сынок, когда пойдешь на свой первую работу молись чтобы это не был битрикс. Это как клеймо, тавро, которое означает "я хуже других, я не осилил доку ларавеля, я в говне".

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

Чтобы вылезти из битрикс болота тебе годами придется доказывать что ты не баран. Что не хуже других, что это просто ошибки молодости. А вылезти захочется. Месяцами, годами смотреть на этот говнокод доведет любого. Как бы ты лично не старался писать нормальный код это гнилое говноподелие всегда будет висеть вонючим баребухом над твоей головой и будет отравлять все.
Аноним 04/07/23 Втр 15:47:44 #875 №2753314 
>>2753256
>А в пхп не массивы а хеш мапы.
По массив по определению. Твое определение настоящего массива к этому не относится. В PHP есть Spl классы, это то что тебе нужно.

>>2753267
Только в битриксе программирование это установка плагинов через админку.
Аноним 04/07/23 Втр 15:48:29 #876 №2753317 
>>2753314
там массив по определению* из википедии
Аноним 04/07/23 Втр 15:50:13 #877 №2753321 
Screenshot 2023-07-04 154856.png
>>2753314
>по по
Да не трясись ты. Вот тебе "определение" из доки пхп.
Аноним 04/07/23 Втр 15:51:22 #878 №2753325 
>>2753307
Поздно, я уже... фулстек - лара, вью
в битрикс пробовал, но охуел с этого кала ебанутого
однако ж в мухосранях кроме битрикса и нет нихуя
Аноним 04/07/23 Втр 18:49:45 #879 №2753649 
>>2753321
Array in PHP тебя не смущает в картинке? Как он реализован не важно абсолютно, это все равно массив.
Аноним 04/07/23 Втр 19:17:43 #880 №2753697 
>>2753649
А actually тебя на картинке не смущает?

мимо
Аноним 04/07/23 Втр 19:22:00 #881 №2753705 
>>2753649
"Треугольник это квадрат. Как он реализован не важно абсолютно, это все равно треугольник."
Цитаты шизофреников из пхп треда
Аноним 04/07/23 Втр 20:57:56 #882 №2753914 
>>2753307
Битрикс это то, что рынок требует от пхп программиста. Эти навороченные фреймворки нужны только самим программистам чтобы выебываться между собой и дрочить при мысли какой он классный, как же ему кайфово писать код, но это противоестественно.
Аноним 04/07/23 Втр 21:51:43 #883 №2753976 
>>2753914
>Битрикс это то, что рынок требует от пхп программиста
Рынок прямо сейчас требует ассенизаторов. Это повод становиться ассенизатором? А если рынок от тебя потребует пойти на трассу очком торговать - это повод идти торговать?

>Эти навороченные фреймворки нужны только самим программистам чтобы выебываться между собой и дрочить при мысли какой он классный
Ты это про ларавель? Про ларавель? Про тот самый ларавель, который написан так чтобы самая конченная макака создала на нем сайт с нуля за один час?

Я поражаюсь тупости некоторых людей.
Битрикс говно не потому что это не "фреймворк" и не потому что это "CMS" и не потому что там надо плагины ставить и не потому что он сложный или простой. Битрикс говно потому что он написан студентами за еду. Людьми, которые нихуя не понимают и не знают, много лет назад. Это не шутка и не преувеличение, это факт.

Я не случайно привел пример ассенизатора. Разрабатывая под битрикс ты всегда в положении человека, который выносит мусор за шумной веселой компанией. Эти люди заработали себе на пиво, сводили своих девчонок в кино и давно сделали карьеру подальше от того жуткого говна которое они когда-то написали с похмелья. А тебе с последствиями их веселья жить всегда. Это теперь твоя среда обитания. Ты можешь пытаться замазать их штукатуркой, но тебе постоянно будут напоминать как кому-то было похуй когда он писал системы от которых у тебя горит очко.
Аноним 04/07/23 Втр 22:22:20 #884 №2754041 
>>2753976
>Разрабатывая под битрикс ты всегда в положении человека, который выносит мусор за шумной веселой компанией.
> А тебе с последствиями их веселья жить всегда. Это теперь твоя среда обитания.
Но в этой мусорке вполне приличные объедки бывают. Все еще лучше, чем увожаемым заводчинином на валы наматываться.
Аноним 04/07/23 Втр 23:25:01 #885 №2754148 
>>2753697
Это про внутреннее устройство.

>>2753705
Отстраненные примеры ничего не доказывают. Что такое треугольник или квадрат известно, что такое массив тоже, в PHP array(1,2,3) является массивом.
Аноним 04/07/23 Втр 23:28:59 #886 №2754152 
>>2753976
Я не вижу разницы между Symfony, Laravel, Bitrix итд. Очевидно что можно одинаково быстро, спокойно программировать в процедурном стиле, в Java-Like OOP, в функциональном, те кто видят разницу просто повелись на маркетинговые разводочки, или хотят себя приписать к какой то группе, типо вот я пишу на yii2 и вот это самый топ не то что другие фреймворки. Везде все по разному, объективных критериев для сравнения нет ни у кого, все сравнения и обсуждения пустой треп не имеющий смысла.
Аноним 05/07/23 Срд 04:13:44 #887 №2754243 
>>2754152
>Очевидно что можно одинаково быстро, спокойно программировать в процедурном стиле, в Java-Like OOP, в функциональном
Че ты несешь вообще? На пхп уже лет пятнадцать как пишут исключительно в ооп стиле. Бля, да в пхп менеджер пакетов работает по конвенции файл = класс.

>те кто видят разницу просто повелись на маркетинговые разводочки
Чучело, маркетинговые разводочки это как раз про Битрикс. Потому что он, внезапно, платный. И кал он потому что вместо бюджета на разработку все вбухали в бюджет на маркетинг. Какой вообще нахуй маркетнинг у опен сорс проэкта. Блядь я тупею уже только от того что эти вещи приходится объяснять.

>типо вот я пишу на yii2 и вот это самый топ не то что другие фреймворки
Бред шизофреника. Все актуальные фреймворки сто лет как модульные. Никто не мешает тебе взять логгер, который ты считаешь "топ" и использовать в любом фреймворке. Или вообще использовать eloqent в symfony, или доктрину в yii. В slime так вообще можно выбрать даже di контейнер который нравится.

>Везде все по разному, объективных критериев для сравнения нет ни у кого, все сравнения и обсуждения пустой треп не имеющий смысла.
Пердежь человека, который не знает нихуя. Если ты не понимаешь чем симфони от юи отличается нахуя ты что-то пишешь?
Аноним 05/07/23 Срд 05:29:05 #888 №2754245 
image.png
>>2754152
>Я не вижу разницы между Symfony, Laravel, Bitrix
Аноним 05/07/23 Срд 05:30:45 #889 №2754246 
>>2754148
>>2754152
Ты один и тот же шиз?
Аноним 05/07/23 Срд 10:40:39 #890 №2754358 
>>2754243
>На пхп уже лет пятнадцать как пишут исключительно в ооп стиле.
Я не пишу.

>Чучело, маркетинговые разводочки это как раз про Битрикс. Потому что он, внезапно, платный.
Я не плачу за него, мне все равно. Я говорю сейчас про пиар в среде программистов.

>Бред шизофреника.
По твоему так никто не говорит?

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

>Пердежь человека, который не знает нихуя. Если ты не понимаешь чем симфони от юи отличается нахуя ты что-то пишешь?
Все я понимаю, поэтому и пишу, что подобные эмоциональные люди вроде тебя постоянно что то обсуждают, критикуют, только ничего объективного не говорят, не делают замеров сколько строк нужно на ту или иную задачу, не могут привести статистику где видна производительность работы программиста за разными фреймворками, просто пустой треп и много слов, иногда с оскорблениями как у тебя.
Аноним 05/07/23 Срд 10:51:56 #891 №2754365 
>>2754358
Ебать ты кекус, конечно
Аноним 05/07/23 Срд 13:58:21 #892 №2754567 
>>2754358
>Я не пишу.
Не пишешь на пхп или не пишешь в ооп стиле? Мне даже интересно стало, это как вообще? А неймспейсы, а автолоадинг? Как с композером работать вообще? А главное нахуя? Профит от этого какой?

>Я говорю сейчас про пиар в среде программистов.
На основе чего строить приложение решает не программист, а архитектор или CTO.

>Тогда получится уже свой фреймворк, теряется одно из преимуществ выбора популярного фреймворка.
Guzzle не часть фреймворка, и тем не менее он в 99% проектов. Фреймворк это всего-лишь набор инструментов. Все эти инструменты давно стандартизированы и взаимозаменяемы. И вообще "фреймоврк" это один из десятков пакетов в менеджере зависимостей.

>Все я понимаю, поэтому и пишу, что подобные эмоциональные люди вроде тебя постоянно что то обсуждают, критикуют, только ничего объективного не говорят
Бля, а что я тебе должен расписать всю историю Yii2 в посте на дваче? Лекцию тебе прочитать почему даже автор yii, нормальный мужик кста, поперхнется сказать "это самый топ"? Я ебал все это писать, если тебе действительно интересно заходи в дискорд и я тебе расскажу https://discord.gg/9ezsj6tPVy
Аноним 05/07/23 Срд 14:04:21 #893 №2754572 
>>2754567
>Не пишешь на пхп или не пишешь в ооп стиле? Мне даже интересно стало, это как вообще? А неймспейсы, а автолоадинг? Как с композером работать вообще? А главное нахуя? Профит от этого какой?
Мне неймспейсы не нужны, автолоадинг тоже, одним require можно подключить вообще все.

>Фреймворк это всего-лишь набор инструментов.
Все так, конкретный фреймворк это набор конкретных инструментов.

>Бля, а что я тебе должен расписать всю историю Yii2 в посте на дваче?
История какого либо проекта ничего не покажет, ты видимо в принципе не понимаешь как доказать эффективность какого то решения.
Аноним 05/07/23 Срд 14:11:57 #894 №2754579 
>>2754572
>одним require можно подключить вообще все
А что "все"? Я просто даже не представляю как у тебя код структурирован. Сколько функция на файл? В других языках есть модули, пакеты. Вызов функции выглядит как UserPackage.getAge(UserPackage.UserData). В пхп же нихуя нет. А если функция одинаково называется? А как понять эта функция к чему относится?

>История какого либо проекта ничего не покажет, ты видимо в принципе не понимаешь как доказать эффективность какого то решения.
Бля, загугли что такое RAD.
Аноним 05/07/23 Срд 15:04:57 #895 №2754647 
>>2754579
>А что "все"?
Все классы и функции.

>Бля, загугли что такое RAD.
Мне тогда расскажут как измерить эффективность, и покажут статистику по разным инструментам? Нет, так зачем ты это пишешь? У тебя уже какая то деформация мышления произошла, у тебя оно отсутствует, ты оперируешь ключевыми словами, думая что они сами по себе все доказывают.
Аноним 05/07/23 Срд 15:28:31 #896 №2754688 
>>2754647
>Все классы и функции.
Все пять? Или сколько? Вопросы только множатся.
>как у тебя код структурирован. Сколько функция на файл? В других языках есть модули, пакеты. Вызов функции выглядит как UserPackage.getAge(UserPackage.UserData). В пхп же нихуя нет. А если функция одинаково называется? А как понять эта функция к чему относится?

>Мне тогда расскажут как измерить эффективность, и покажут статистику по разным инструментам? Нет, так зачем ты это пишешь?
Я тебе писал метрику:
>тот самый ларавель, который написан так чтобы самая конченная макака создала на нем сайт с нуля за один час
Можно сайт за пол часа. Что тебе эта метрика дала? Причем тут битрикс и функциональный подход?
Аноним 05/07/23 Срд 17:28:57 #897 №2754885 
>>2754688
>Все пять? Или сколько? Вопросы только множатся.
Открой любой код на С и посмотри, там не будет неймспейсов и загрузчиков классов.

>тот самый ларавель, который написан так чтобы самая конченная макака создала на нем сайт с нуля за один час
Что такое конченная макака, что такое сайт? Один час ровно? Это очередные пустые слова, не вижу смысла дальше с тобой что то обсуждать, я уже свое мнение высказал, никаких цифр, никаких статистических данных у любителей поспорить о преимуществах Xframework над Yframework нет и не будет.
Аноним 05/07/23 Срд 18:14:05 #898 №2754955 
>>2754885
Я отлично знаю как пишется процедурный код. Я тебе даже пример привел.
Я хочу понять как ТЫ пишешь процедурный код на ооп языке, в котором для этого просто нет инструментов.

>Что такое конченная макака
Это ты

>что такое сайт?
https://en.wikipedia.org/wiki/Website

>Один час ровно?
>Можно сайт за пол часа.

>никаких цифр, никаких статистических данных у любителей поспорить о преимуществах Xframework над Yframework
Это соломенное чучело, которое ты сам себе выдумал. Никто с тобой об этом не спорил. Я тебе уже раза три написал что никто не рассматривает фреймворк целиком, а выбирает нужные ему инструменты.

>Это очередные пустые слова, не вижу смысла дальше с тобой что то обсуждать
Я уже довольно долго пытаюсь понять: а что ты вообще "обсуждаешь"? Ты пытаешься доказать что битрикс "не говно"? Как то слабо, ты этот кал вообще перестал упоминать. Ты пытаешься доказать что на пхп надо писать в процедурном стиле? Тоже слабо, я уже несколько постов безрезультатно пытаюсь вытянуть из тебя как именно ты это делаешь. Что ты обсуждаешь, макакен?
Аноним 06/07/23 Чтв 02:13:06 #899 №2755701 
>>2753256

Это часто называется "список" (например, в Питоне) или ArrayList.

В PHP он есть в расширении Ds: https://www.php.net/manual/en/class.ds-sequence.php

Также, есть https://www.php.net/manual/en/class.splfixedarray.php

Отвечая на твой вопрос, да, хорошо, когда есть такая структура (не с точки зрения производительности - кому она нужна - а с точки ясности намерений разработчика и понятности кода), но видимо не очень сильно она нужна на практике. Я бы конечно проедпочел иметь такую структуру в распоряжении.
Аноним 06/07/23 Чтв 02:35:10 #900 №2755708 
>>2753247

Да, в учебнике об этом не сказано, но желательно указывать типы у аргументов функций (не только array, а например, int, string, bool и тд), у возвращаемых значений и у полей класса:

public string $name;

public function count(array $x): int { ... }

Это сделает код надежнее и понятнее.

> if ($employees->isBoss === true) {
> $result += $employees->getBossSalary();
> } else {
> $result += $employees->getEmployeeSalary();
> }
> }
Эту логику правильнее поместить в класс Employee. Так как если тебе надо будет определить зарплату где-то еще, тебе придется копипастить эту логику. Эта логика должна быть в классе Employee.

> if ($employees->isBoss === true) {
В такой ситуации можно писать if ($employee->isBoss), так как if как раз ожидает true или false и сравнение не нужно.

> $result = 0;
> foreach ($this->peopleInDepartment as $employees)
> {
> $result += $employees->getCoffee();
> }

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

$coffee = array_map(fn ($e) => $e->getCoffee(), $employees);
return array_sum($coffee);

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

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

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

> getProfessionInDepartment
Это можно было сделать через array_filter + анонимная функция.

> // Руководитель не производит отчетов, чертежей или стратегических исследований
> // Руководитель пьет в 2 раза больше кофе
> if ($isBoss === true) {
> $this->documents = 0;
> return $this->coffee = $coffee * 2;
> }

Тут ошибка. При создании руководителя ты обнуляешь документы, а если у работника снять признак руководителя, то кто восстановить количество документов обратно? Не надо их трогать, и не надо менять кофе. Надо просто сделать функцию вроде getDocumentCount(), которая вернет 0, если у нас руководитель.

> return $this->baseRate + ($this->baseRate × 0.25);
Можно было просто return $this->baseRate × 1.25;

> return 'Не является руководителем';
Это не очень правильно, так как вызывающий код скорее всего никак не обработает этот результат. В такой ситуации (программист ошибся и неправильно вызвал функцию) правильно выбросить исключение, которое аварийно завершит программу.

Список департаментов не надо копипастить несколько раз. Его нужно клонировать, сделав для этого функцию.

Это еще не все замечания, дальше будет еще.
Аноним 06/07/23 Чтв 02:46:19 #901 №2755715 
>>2753247

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

Например, ты не должен напрямую ковыряться в массиве $department->peopleInDepartment. Этот массив принадлежит объекту Department, и он им управляет. В идеале, его вообще стоит сделать private (сделай), чтобы у тебя не было соблазна в него лезть. Ты не должен лезть в него снаружи и что-то менять, а ты должен использовать для этого методы у Департамента, вроде:

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

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

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

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

Я советую примерно такую логику:

- получить работников нужной профессии
- отсортировать по рангу (usort)
- взять первые N (array_slice)
- уволить

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

В общем, антикризисные меры пока что никуда не годятся и их надо переделывать.
Аноним 06/07/23 Чтв 02:52:31 #902 №2755718 
>>2754885

> Открой любой код на С

C довольно паршивый язык по современным меркам. Я бы не хотел на нем писать, так что не думаю, что его надо приводить в пример. А если ты возьмешь Go или Rust, то там будут модули.
Аноним 06/07/23 Чтв 10:42:02 #903 №2755844 
>>2754955
>Я хочу понять как ТЫ пишешь процедурный код на ооп языке, в котором для этого просто нет инструментов.
В PHP изначально не было классов, почти все расширения имеют процедурную версию. Можешь посмотреть очень старые проекты.

>Это соломенное чучело, которое ты сам себе выдумал. Никто с тобой об этом не спорил.
Отлично, ты уже на пол пути к принятию правды. Тебе осталось понять, что означает отсутствие каких либо доказательств того что на Yframework сайт делается медленнее чем на Xframework. Почему никто не может дать объективную информацию о превосходстве ООП над процедурным стилем.
Аноним 06/07/23 Чтв 10:43:32 #904 №2755848 
>>2755718
Что такое современные мерки? Что такое паршивый язык по современным меркам, сколько баллов он должен недополучить что бы им считаться?
Аноним 06/07/23 Чтв 15:23:47 #905 №2756188 
>>2755848
>Что такое современные мерки?
Вот это современная мерка: https://www.rust-lang.org/ . Если язык не может то что может раст, то он доживает свои дни.

>Что такое паршивый язык по современным меркам
Процедурный язык без модулей - паршивый язык по современным меркам.

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

>Почему никто не может дать объективную информацию о превосходстве ООП над процедурным стилем.
А почему ты решил что твой стиль процедурный? Я уже какой пост подряд прошу тебя рассказать как ты пишешь код, показать. И ничего. Ты зачем-то приплетаешь C, какие-то "очень старые проекты" какого года? 2008? 2007? Пятнадцать лет назад?
Аноним 06/07/23 Чтв 15:29:15 #906 №2756194 
Screenshot 2023-07-06 151700.png
>>2756188
Топ забыл прилепить.
Аноним 06/07/23 Чтв 15:40:23 #907 №2756211 
>>2756188
>Вот это современная мерка: https://www.rust-lang.org/ . Если язык не может то что может раст, то он доживает свои дни.
Что значит может? Это слишком обширно. Может ли хоть один язык собрать код на расте кроме него?

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

>А почему ты решил что твой стиль процедурный?
Потому что мой код не определяет классов и состоит лишь из процедур.

>Я уже какой пост подряд прошу тебя рассказать как ты пишешь код, показать.
Не хочу, не понимаю как это относится к теме.
Аноним 06/07/23 Чтв 15:40:32 #908 №2756212 
>>2755844
>В PHP изначально не было классов
За что его заслуженно гнобят и за что он стабильно брал первое место в рейтинге худших языков.

>почти все расширения имеют процедурную версию
Покажи мне "процедурную" версию guzzle, самого популярного "расширения".

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

А чтобы понять в чем дело нужно знать какие задачи решает инструментарий фреймворка и с какой целью. А ты этого не знаешь. И поэтому тебе кажется что все вокруг одинаковое. В то время как все настолько разное, что вопрос места в иерархии даже не стоит. Это как сравнивать орбиты меркурия и сатурна и решать кто же ближе к солнцу.
Аноним 06/07/23 Чтв 15:49:08 #909 №2756221 
>>2756212
>Покажи мне "процедурную" версию guzzle, самого популярного "расширения".
curl

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

>А чтобы понять в чем дело нужно знать какие задачи решает инструментарий фреймворка и с какой целью.
То есть из за того что я чего то не знаю, ты не можешь сказать почему существует весомая разница в разработке проекта на Laravel, Symfony, Bitrix итд? Если ты не понимаешь насколько это глупо, то скажу прямо, это так не работает, если у тебя есть объективные данные, то ты всегда их можешь предоставить.
Аноним 06/07/23 Чтв 15:50:10 #910 №2756222 
>>2756212
Про расширения я имел виду буквально расширения, а не пакеты. Guzzle это пакет. composer про пакеты, pecl про расширения.
Аноним 06/07/23 Чтв 15:51:01 #911 №2756224 
>>2756211
>Что значит может? Это слишком обширно.
Нет не обширно. Это как раз вполне конкретно. Все фичи раста четко прописаны в документации. То что ТЫ их не знаешь не означает что это какой-то размытый критерий.

>Нет, я хочу понять как определять паршивый ли язык или нет, или это все что нужно? Получается добавив в Си простейшие классы и модули он станет не паршивым?
Ты только что придумал C++, Objective-C и джаву.

>Потому что мой код не определяет классов и состоит лишь из процедур.
Но сам этот волшебный код ты конечно не покажешь?
Аноним 06/07/23 Чтв 15:54:32 #912 №2756228 
>>2756224
>Нет не обширно. Это как раз вполне конкретно.
Это может быть конкретно в твоей голове, если ты говоришь про такие общие вещи, а имеешь виду что то более конкретное, то ты должен указывать сразу ссылку на список, жду его.

>Ты только что придумал C++, Objective-C и джаву.
C++ и С несовместимы на более низких уровнях, Java от С далека максимально, взять хотя бы модель памяти.

>Но сам этот волшебный код ты конечно не покажешь?
Нет. Дай угадаю, ты имеешь предположения о том что такой код нельзя писать на PHP, но сообщить не можешь, почему конкретно невозможно написать такой код, верно?
Аноним 06/07/23 Чтв 15:55:34 #913 №2756231 
>>2756221
>curl
Курл написан не на пхп.

>То есть из за того что я чего то не знаю, ты не можешь сказать почему существует весомая разница в разработке проекта на Laravel, Symfony, Bitrix итд?
Разработка проекта под один фреймворк это целая статья. Я уже говорил что писать столько текста не собираюсь и если тебе действительно интересно я готов рассказать голосом. Ты пукнул жидким и обмяк.
Аноним 06/07/23 Чтв 15:56:38 #914 №2756235 
>>2756224
Кстати, ответь на вопрос все же, С с добавлением модулей и простых классов уже будет не паршивым языком? Вместе с препроцессором, отсутствием неймспейсов, ODR? Или все же он будет все таким же паршивым для тебя, и ты оперируешь лишь субъективными ощущениями не привязанными к реальности?
Аноним 06/07/23 Чтв 15:59:23 #915 №2756240 
>>2756231
>Курл написан не на пхп.
Какая разница? Расширение есть.

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

Ну или, что бы тебе было проще, представляем что пишем под два и более фреймворка, способов измерения и определения производительности между разными наборами жду.
Аноним 06/07/23 Чтв 16:03:55 #916 №2756249 
>>2756228
>Кстати, ответь на вопрос все же, С с добавлением модулей и простых классов уже будет не паршивым языком?
Да. Будет менее паршивым чем был.

>>2756240
>Какая разница? Расширение есть.
Ну есть? Какое это отношение к процедурному коду на пхп имеет отношение.

>Ну предоставь просто статистические данные на которые ты опираешься, не надо статьи.
Статистические данные о том в чем отличие написания кода под симфони? Ты там совсем ебанулся?

>Ну или, что бы тебе было проще, представляем что пишем под два и более фреймворка, способов измерения и определения производительности между разными наборами жду.
Один из фреймворков ларавель. Ты выполняешь несколько консольных команд и сайт готов. Ларавель победил. Легко с дураком разговаривать в его терминах.
Аноним 06/07/23 Чтв 16:09:30 #917 №2756266 
>>2756249
>Да. Будет менее паршивым чем был.
Что значит менее, должен был перестать вовсе, ты просто скажи будет паршивым да или нет?

>Ну есть? Какое это отношение к процедурному коду на пхп имеет отношение.
Тем что не нужно работать с классами вовсе. Он же может быть представлен не как встроенные функции curl_init а как объект Curl.

>Статистические данные о том в чем отличие написания кода под симфони? Ты там совсем ебанулся?
Именно так, или у тебя только глубоко субъективные выводы которые даже нельзя никак подтвердить?

>Один из фреймворков ларавель. Ты выполняешь несколько консольных команд и сайт готов. Ларавель победил. Легко с дураком разговаривать в его терминах.
Что это за набор слов? Повторяю вопрос: Предоставь мне способ измерения производительности работы программиста на определенном наборе фреймворков, и дай определение производительности программиста. Производительность программиста = скорость выполнения работы по созданию сайта. Сайт очевидно тоже должен быть четко определен, какую именно работу будет выполнять программист. Данный вид работы должен быть повторим для других наборов фреймворков, что бы можно было сравнить итоговые результаты.
Аноним 06/07/23 Чтв 16:31:27 #918 №2756304 
philosophythroughtheagesaristotledescratesnietzschebertrandrussellcslewisliljon.jpg
>>2756266
>Что значит менее
А что значит "значит"? Хватит троллить тупостью.

>Тем что не нужно работать с классами вовсе. Он же может быть представлен не как встроенные функции curl_init а как объект Curl.
Ты можешь вызывать функции в ооп коде. Бля, ты реально настолько тупой что думал раз код ооп, то в нем нельзя функции использовать?

>Именно так, или у тебя только глубоко субъективные выводы которые даже нельзя никак подтвердить?
Как писать код под симфони написано в его документации. Какие блядь статистические данные?

>Повторяю вопрос: Предоставь мне способ измерения производительности работы программиста на определенном наборе фреймворков
Беру свои слова назад. Тяжело говорить с дураком даже в его терминах.
Зачем измерять производительность работы программиста на определенном наборе фреймворков? Я вообще ни слова про производительность программиста не говорил.

>и дай определение производительности программиста.
Я не знаю такого определения. Это вообще шиза.

>какая-то шиза про производительность
Если ты спрашиваешь проводил ли я "измерения производительности программистов", то ответ: нет.
Если ты спрашиваешь проводил ли кто либо вообще "измерения производительности программистов", то ответ: я таких измерений не видел.

Я не знаю из под какой коряги ты вылез со своим процедурным пхп "как в библиотеках 2007 года", но мерой скорости в современной разработке является "скорость принятия решений" а не скорость написания кода.
Аноним 06/07/23 Чтв 16:40:56 #919 №2756315 
Да забей ты уже на шиза этого. Статистика у него должна подтверждать, что фреймворки разные, лол, блять.
Аноним 06/07/23 Чтв 16:45:49 #920 №2756325 
>>2756315
Мне просто правда интересно как выглядит процедурный код на пхп в 2023 году. Это литературно хуйня которой я никогда не видел.
Аноним 06/07/23 Чтв 16:48:23 #921 №2756331 
>>2756304
>А что значит "значит"? Хватит троллить тупостью.
Ты сказал что эти параметры это все что нужно для определения паршивости.

>Ты можешь вызывать функции в ооп коде. Бля, ты реально настолько тупой что думал раз код ооп, то в нем нельзя функции использовать?
Я просто сказал что у PHP есть процедурные версии расширений, разве я еще что то утверждал?

>Зачем измерять производительность работы программиста на определенном наборе фреймворков?
Отлично, признаем что нам неизвестно, отличается ли скорость выполнения проекта для разных фреймворков или их наборов.

Теперь вернемся к началу обсуждения, я сказал что объективных критериев сравнения нету, ты высказался против этого утверждения, приводи эти критерии.
Аноним 06/07/23 Чтв 16:49:02 #922 №2756334 
>>2755848

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

"Выразительность" не очень просто измерить, но наверно как-то можно: сделать N реализаций разных алгоритмов, сравнить кол-во токенов в программе. Сравнить количество возможных токенов итд.

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

- необходимость повторять сигнатуру функции в .h и .c файле
- отсутствие аварийного завершения при переполнении в арифметических операциях. Как можно было такую глупость сделать, видимо язык придумывали в спешке без тщательного проектирования.
- отсутствие каких-либо средств управления освобождением памяти (это приводит к большим затратам времени при написании кода и часто становится источником ошибок и уязвимостей)
- сложно вернуть из функции что-то кроме int, например, строку, так как непонятно, кто должен выделять память под нее, кто освобождать, сколько памяти выделить
- в коде нет возможности указать правила работы с памятью. Например, если функция возвращает указатель, то нельзя описать, кто должен освобождать память, на которую он указывает. Как программист, который вызывает функцию, должен понять, как освободить память? Как статический анализатор должен проверять, что память будет корректно освобождена?
- отсутствие модулей, что приводит к длинным названиям функций
- отсутствие дженериков для описания структур данных
- отсутствие структур данных, таких, как список, вектор, хеш-таблица, строка и тд
- нельзя вернуть из функции несколько значений
- нельзя вызывать функцию с именованными параметрами
- нет значений по умолчанию у аргументов функции
- отсутствие интерполяции строк
- отсутствие нормальных enum (в Си enum это просто int)
- отсутствие стандартизации типов, например int может иметь любой размер, хоть 16, хоть 64 бита
- отсутствие нормальной поддержки unicode (например, параметр %s в sprintf не позволяет указать число символов)
- нет проверки границ при операциях с указателями, и нет возможности включить такие проверки

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

char* process_data(char *data);

Глядя на сигнатуру, можешь ли ты определить:

- разрешено ли передавать NULL?
- может ли функция вернуть NULL?
- сколько элементов находится по адресу data? 1 или несколько? Если несколько, то как определить, сколько?
- можно ли передать или может ли функция вернуть указатель на статическую строку?
- можно ли передать или может функция вернуть указатель на динамически выделенную строку?
- кто должен освобождать память? и как это сделать? (хинт: функция может использовать нестандартный аллокатор)
- в какой кодировке передается текст?

Это только те проблемы Си, которые мне пришли в голову. Мне кажется, любой, кто на Си пытался написать что-то сложнее лабораторной работы, натыкался на такие сложности.
Аноним 06/07/23 Чтв 16:50:41 #923 №2756335 
>>2756235

Будет паршивым, я выше написал, почему.
Аноним 06/07/23 Чтв 16:52:09 #924 №2756338 
>>2756315
Забавно, я так понимаю, внутренняя мысль о том что ты действуешь основываясь на своей эмоциональной информации, а не на реальных данных, заставила тебя позлиться?

К сожалению ты настолько оторван от реальности, что в принципе уже не можешь воспринимать текст, фреймворки которые я перечислял безусловно разные, значение этого слова ты можешь найти в викисловаре. Можешь перечитать мое предложение с викисловарем, тогда возможно сможешь понять что я написал, главное будь внимательнее.
Аноним 06/07/23 Чтв 16:55:17 #925 №2756345 
>>2756335
То есть ты ошибся все же в первом определении? Ложность второго я могу тоже легко тебе же доказать, но мне лень, оригинальная моя задумка была в том, что бы показать тебе, как глуп твой аргумент о том, что С нельзя приводить лишь из за того, что ты решил его поместить в какую то выдуманную категорию, и тут нужно заметить что:

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

2) Удобство языка, о котором пишешь ты, чисто субъективное
Аноним 06/07/23 Чтв 16:55:50 #926 №2756346 
>>2756331
>я не знаю как устроены современные фреймворки
>я не знаю как пишут код под разные фреймворки
>я не знаю битрикс
>я не знаю как пишут код под битрикс
>объективных критериев сравнения нет
>разницы разницы между этим всем нет
Как называется эта болезнь?
Аноним 06/07/23 Чтв 16:57:45 #927 №2756351 
>>2756346
Представим что я не знаю даже PHP, и забрел в это тред случайно, а сам работаю на заводе, разве это что то меняет в нашем обсуждении? Нет.
Аноним 06/07/23 Чтв 16:58:37 #928 №2756354 
>>2756351
>Представим что я не знаю даже PHP, и забрел в это тред случайно, а сам работаю на заводе
Вот теперь верю.
Аноним 06/07/23 Чтв 17:06:09 #929 №2756361 
>>2756354
Предполагаю что тебе уже нечего ответить, в таком случае подведу итог: Заметной разницы по объективным критериям для программиста между популярными фреймворками нету, для всех есть сайты с учебными материалами, скорость выполнения работы на всех примерно одинаковая, работа под них есть.

Следовательно можно выбирать любой, или тот который больше нравится субъективно, утверждать что кто то сделал неправильный выбор исходя только из выбора фреймворка не стоит. А при выборе работы лучше смотреть на такие реальные показатели как зарплата, время работы, условия, итд.
Аноним 06/07/23 Чтв 17:08:05 #930 №2756363 
>>2756325
Да он траллирует тебя от нехуй делать.
>>2756338
Спокуху оформи, словоблуд.
Аноним 06/07/23 Чтв 17:10:43 #931 №2756369 
>>2756361
>Следовательно можно выбирать любой
Ты какой выбрал?
Аноним 06/07/23 Чтв 18:04:22 #932 №2756430 
>>2755708
>>2755715
Добра тебе за такой подробный ответ, буду переделывать.
Аноним 06/07/23 Чтв 19:24:26 #933 №2756554 
В данный момент я пишу на PHP, но конкретный язык здесь большого значения не имеет, я вообще задумался над этим, когда пилил проект на Python, так что позволю себе спросить в нескольких тредах. Что рекомендуете почитать на тему обработки исключений? А именно, меня интересует два аспекта:

1. Как понять, в каких случаях стоит бросать исключения, а в каких нет? Например, есть у меня класс, который производит определённые манипуляции над файлами. Поскольку проект может быть запущен в несколько процессов, файлы я блокирую при работе, и блокировщик используется самописный, потому что так нужно. Блокировщик имеет два метода - заблокировать/разблокировать файл, над которым производятся манипуляции. Возникает вопрос - что делать, если выполняется метод unlock над файлом, который и так не заблокирован? Стоит ли в этом случае бросать исключение, которое говорит - атятя, ты пытаешься разблокировать файл, который не заблокирован? Или вести себя так, как будто файл был разблокирован? По сути ведь, результат такой же, как и при разблокировке. Разница лишь в том, что в данном случае файл изначально не был заблокирован.
С одной стороны, если бросать исключение, то это как-то более подробно что ли. Ведь по логике не должно быть ситуации, в которой я пытаюсь разблокировать незаблокированный файл. Если такая ситуация возникла, то это как бы не страшно вообще, но и не то, чего я ожидал. Брошенное исключение будет явно заметно и я что-то изменю в алгоритме. А если так и надо, то сделаю что-то типа `try { $lck->unlock("file.bin") } catch (FileDontLockedException $e) { ... }`.
С другой стороны... несколько противоречит KISS, не? В сущности, результатов работы у метода `unlock` может быть два: либо файл разблокирован и свободен для манипуляций, либо нет и лови исключение. Ситуации "файл был успешно разблокирован" и "файл изначально не был заблокирован" по своему результату идентичны.
Вот и как решить?

2. Есть две крайности. Одна - всякий раз кидать \Exception. Вторая - для каждой ситуации, в которой может быть брошено исключение, создавать собственный класс. Ну, может, в совсем уж одинаковых ситуациях использовать уже имеющийся класс исключения. Вопрос - как найти в этом золотую середину? Если на первый вопрос ответить "кидать исключение", то достойна ли ситуация "файл изначально не был заблокирован" отдельного класса исключения? А ситуация "ты пытаешься разблокировать файл, который был заблокирован другим процессом, и поскольку флаг forced не был передан - соси бибу"? А ещё какая-нибудь?
Аноним 06/07/23 Чтв 19:43:02 #934 №2756580 
>>2756554
Все очень просто. Вместо того чтобы "бросать" исключение пиши goto.
Если не знаешь куда goto должно попадать, то это валидная ситуация для исключения - все наебнулось, цирк заканчивает работу, исключение это способ сохранить информацию в умершем приложении.

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

К сегодняшнему дню уже сложился консенсус, что ошибки нужно возвращать, а не выкидывать на волю ветра.
Аноним 06/07/23 Чтв 19:43:47 #935 №2756584 
Изучил основы ООП, как эту задачу решить то блять? В тексте никаких подсказок по сути

https://github.com/codedokode/pasta/blob/master/student-list.md
Аноним 06/07/23 Чтв 19:47:02 #936 №2756589 
>>2756584
>В тексте никаких подсказок по сути
А какие подсказки нужны?
Как создать классы? Или как рендерить html?
Аноним 06/07/23 Чтв 19:57:54 #937 №2756603 
>>2756580
То есть, в идеале класс-блокировщик должен возвращать условный объект LockerResult, который внутри себя содержит всю нужную информацию: получилось ли разблокировать файл, был ли он заблокирован изначально и т. д. и т. п. А я уже по нужде буду писать всякое
`if $lockerResult->fileUnlocked() { ... }`
`if $lockerResult->fileInitialyDontLocked() { ... }`
`if $lockerResult->containMessage("Не получилось заблокировать, потому что уже заблокировано другим приложением") { ... }`
И т. д?`
Аноним 06/07/23 Чтв 20:15:01 #938 №2756620 
>>2756584
Да начинай уже на Ларе бложик делать, какие нахуй студенты...
Аноним 06/07/23 Чтв 20:20:27 #939 №2756624 
>>2756554
>2. Есть две крайности.
Просто кидай везде исключения. Потом, отрефакторишь, когда уже обрисуются в проекте сущности конкретных исключений.
ну я так делаю и в итоге везде просто ексепшены и остаются, лол
Аноним 06/07/23 Чтв 20:26:37 #940 №2756638 
>>2756603
Да в пхп примерно так и получается. Понятно что это сложно и дохуя возни. Можно договориться кидать исключения, но только на один уровень вверх. Но главное понимать что ты используешь исключение как костыль.

В более современных языках есть специальная конструкции типа Result и Option в rust или монады maybe в функциональных. Го как младший "вовсе дурак" добавляет ошибку дополнительным параметров к результату функции, поэтому всем программистам на го снится конструкция if err != nil , которую нужно добавлять после каждого вызова функции.
Аноним 06/07/23 Чтв 22:35:27 #941 №2756826 
Это что ,надо пилить классы на все-регистрацию,проверку,запись в бд и тп?
Аноним 07/07/23 Птн 02:36:08 #942 №2757016 
>>2756554

> Как понять, в каких случаях стоит бросать исключения, а в каких нет?

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

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

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

Но в твоем случае с unlock у тебя есть выбор:

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

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

Ты пишешь:

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

Значит, в твоей ситуации должно выбрасываться исключение, которое не надо ловить.

Кстати, такую ситуацию иногда удобно решать с помощью анонимных функций:

// автоматически разблокирует файл при завершении функции или выбросе исключения
$locker->lock('file.txt', function ($fd) {
// работа с файлом
});

> Есть две крайности. Одна - всякий раз кидать \Exception

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

Нужно делать свои классы исключений.

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

Можно сделать какой-нибудь общий LockLogicException. Если функция может выбросить только одно исключение, то можно их обобщить в один класс. Хотя класс исключения создать - 1 строка, это не проблема, мне кажется.
Аноним 07/07/23 Птн 02:38:03 #943 №2757017 
>>2756584

Ты можешь сформулировать вопросы, что именно непонятно? В тексте что-то непонятно описано? Или что-то другое непонятно?

Или непонятно, с чего начинать?

Ну начни тогда с класса, который представляет Студента, затем сделай класс, который проверяет, правильно ли заполнены данные в студенте, затем сделай класс для работы с БД, который будет вставлять в нее Студентов, обновлять их и искать по нужным условиям.
Аноним 07/07/23 Птн 02:40:50 #944 №2757019 
>>2756603

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

Ну условно, если отключилось питание диска и файлы стали недступны, не надо возвращать какой-то специальный результат, как-то его обрабатывать, можно сразу выбрасывать исключение, которое завершит программу.
Аноним 07/07/23 Птн 02:43:02 #945 №2757021 
>>2756638

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

Иногда это имеет мало смысла. Например, если ты передал отрицательное число в функцию, которая принимает положительные, то нет никакого смысла что-то возвращать, обрабатывать - это бесполезный код.
Аноним 07/07/23 Птн 02:43:59 #946 №2757023 
>>2756826

Да, ты как грамотный разработчик со знанием ООП должен спроектировать удобную и простую структуру классов, по которым будет разнесен код. Следуй принципу единой ответственности.
Аноним 07/07/23 Птн 05:37:12 #947 №2757037 
15715500756040.webm
>>2757021
>В Rust ничего нового нет
Ну кое что новое там все таки есть. Но да, конкретно эта конструкция не "новая".

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

То что используется в rust это нечто более сложное. Result это https://en.wikipedia.org/wiki/Tagged_union и нужен он как раз чтобы результат каждый раз НЕ проверять. Более того. Можно преисполниться и писать приложение делая вид, что результат есть, хотя его возможно нет. Получая целые цепочки сценариев, которые схлопываются в ошибку или результат только в самом конце.
Аноним 08/07/23 Суб 13:57:39 #948 №2758620 
Задача: Числа прописью.

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

Код: https://3v4l.org/M1HZZ#v8.1.0
Аноним 08/07/23 Суб 14:05:23 #949 №2758629 
>>2758620
Who cares?
Аноним 08/07/23 Суб 14:48:13 #950 №2758699 
>>2743084
Требовали портфолио? Как вообще проходило устройство, собес?
Аноним 08/07/23 Суб 16:13:57 #951 №2758805 
>>2758620
Охуел с тройки в названии функции. Закрыл.
Аноним 08/07/23 Суб 16:58:53 #952 №2758861 
>>2758620
Видно что старался. Но косяки все еще есть.

>>2758805
Чушь полная. Но название очень хреновое.
1) "3DigitNums"? Третий раз тебе пишу: сначала определись с терминами. Разряды, классы, разрядность, порядок числа. Ты представляешь число в виде набора "разрядов". Ты выбираешь один из разрядов. Сразу возникает вопрос: а какой это разряд? К "3DigitNums" у тебя такого вопроса не возникло. А он многое поменял бы в твоем коде.
"ValuesFromArrays". Можешь заменять любое неопределенное название на Something. SomethingFromSomething. Как оно, понятно?
"Ехал get через get". Почти каждая функция что-то возвращает. Что теперь перед каждой функцией с результатом писать get? "getWordForm" ты же сам пишешь что нужно выбрать "склонение" "getInclinedNames". Так и создай процесс склонения. Сразу и сигнатура функции станет логичной, без "wordForm2". Вообще метод

2) Неправильная работа со "словарем". Массив $spelling это не код, а данные. Данные должны храниться в специальном хранилище и передаваться в твой код как параметр. И тем не менее он почему-то находится посреди кода. А самое хреновое, что ты его зачем-то разделил на две части. Первая почему-то обрывается перед тысячей. А вторая вообще непонятно где.

3) Ну и напоследок совсем детская ошибка: функция, которая переводит числа в текст, почему-то еще и добавляет в конце фубли.

Вообще эта задача уже на грани. Писать её в процедурном стиле на массивах, как деды пятьдесят лет назад это конечно мука. Замени этот дурацкий массив "threeDigitNums" на структуру Number, которая бы внутри хранила все эти разряды, и это был бы совсем другой код. Короче хватит заниматься хуйней, давай начинай ооп. Там ты еще и сраться начнешь.
Аноним 08/07/23 Суб 17:05:42 #953 №2758871 
>>2758805
>с тройки в названии функции.
Исправил.

https://3v4l.org/9Tasa#v8.1.0
Аноним 08/07/23 Суб 17:06:57 #954 №2758873 
>>2758861
Спасибо.
Аноним 08/07/23 Суб 18:24:31 #955 №2758971 
В чем смысл PHP, когда есть лучший аналог Hack?
Аноним 08/07/23 Суб 18:30:09 #956 №2758985 
>>2758971
Нету смысла. Когда в хак въебут столько же человекочасов сколько в симфони и остальные пакеты, которые есть под пхп, тогда всем двачем переедем на хак. А пока - хуй да рука.
Аноним 08/07/23 Суб 18:32:21 #957 №2758988 
>>2758620

Вообще, сделано неплохо.

> in_array($lastTwoDigits, [11, 12, 13, 14, 15, 16, 17, 18, 19]

тут лучше просто были использовать $lastTwo >= 11 && $lastTwo <= 19, так понятнее, чем пересчитывать числа в списке и проверять, а не пропущено ли одно из них?

Список [0, 5, 6, 7, 8, 9] можно оставить, так как он маленький и простой.

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

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

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

> function spellSmallNumber(int $number, int $powerOf1000): string

Мне кажется, здесь не правильно передавать $powerOf1000, а правильнее передавать bool $isFemale. Так как это не задача этой функции определять, какой род использовать. Это должен определить кто-то другой, и передать функции нужный род. Это сделает функцию более универсальной. Вот захотим мы, например, получить фразу "две собаки", и как это сделать? А если был бы признак $isFemale, то функция позволяла бы и собак считать, а не только рубли.
Аноним 08/07/23 Суб 18:32:37 #958 №2758990 
image.png
>>2758971
загуглил, как же это всрато выглядит
Аноним 08/07/23 Суб 18:39:12 #959 №2759005 
>>2758805

В чем проблема с "3" в названии функции? Давай ссылку на стандарт, запрещающий это.

>>2758861

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

> Неправильная работа со "словарем". Массив $spelling это не код, а данные. Данные должны храниться в специальном хранилище и передаваться в твой код как параметр.

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

> Замени этот дурацкий массив "threeDigitNums" на структуру Number, которая бы внутри хранила все эти разряды, и это был бы совсем другой код.

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

> давай начинай ооп.

Ты забываешь, что ООП в учебнике находится дальше, а это задача из радела "функции", цель которой научиться разбивать код на функции. Ну и я не вижу особо, где тут применять ООП и какие классы можно сделать и какая от этого выгода. Если что-то проще сделать на функциях, то надо делать на функциях.
Аноним 08/07/23 Суб 18:41:18 #960 №2759009 
>>2758990

Ужасно, когда функции вроде get_user_name делают асинхронными. Как бизнес-логику писать в таком стиле, когда у тебя каждая функция асинхронная? Неудобно же. Не надо копировать плохо продуманный, неудачный подход из JS в другие языки. Ищите другие способы.
Аноним 08/07/23 Суб 19:00:40 #961 №2759048 
>>2758988
Спасибо за ответы.
Аноним 08/07/23 Суб 20:28:36 #962 №2759167 
>>2759005
>Было бы полезно, если бы ты не просто писал, что название плохое, а предлагал альтернативу. А то может, альтернатива еще хуже. Да и как тогда человеку понять, как надо правильно называть функции?
>Разряды, классы, разрядность, порядок числа.
Речь не о качестве перевода. Речь о терминологии и контексте. Речь о том чтобы в коде были не абстрактные 3Digit и array values, а конкретные вещи. В данном случае это математические "разряды" и "классы". Как они на английский переводятся дело десятое. Важно что термин задает контекст. И этот контекст все меняет. У абстрактной тройки чисел ничего нет, а у разряда обязательно должен быть "класс". [1k] => 121 бам и весь код поменялся.

>Не согласен. Хранить данные отдельно имеет смысл, если они могут меняться
Свит саммер чайлд. Данные могут быть из базы. Могут быть частично из базы. Могут быть из кеша. Могут быть из апи. Могут быть в другой кодировке. Могут быть на разных языках. Единственное в чем можно быть уверенным в разработке, так это то что все будет меняться. К тому же это в тренировочной задаче все умещается на одной странице. В реальном коде при таком подходе эти данные будут хуй пойми где. Их натурально придется искать. Я уж и не говорю про проблемы с тестированием.

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

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

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

А пхп вообще уже давно исключительно ООП язык. И весь современный код на пхп написан исключительно в ооп стиле. Когда у тебя только структуры данных вокруг и есть. Поэтому пассажи типа
>Структуры подходят для других целей.
ничего кроме недоумения не вызывают. Это не вопрос выбора. В пхп файл = класс. Функциям здесь просто нет места.

>Ну и я не вижу особо, где тут применять ООП и какие классы можно сделать и какая от этого выгода
Как я уже говорил, во первых выгода когнитивная: think first, тебе нужно продумать терминологию ДО написания кода.
А во вторых: гарантии. Вместо массивов с динамическими ключами, и содержимым которое невозможно проверить, инкапсуляция гарантирует нам необходимую структуру.

>>2758620 https://3v4l.org/sBOk1 попробуй возьми отсюда первые три класса и используй их вместо массивов, посмотри как изменится твой код. Вот это будет "процедурное программирование". А если ты используешь ВСЕ классы и допишешь свои, то это уже будет ООП. Суходрочка на массивах, которой вынуждает тебя заниматься учебник на этом этапе абсолютно бесполезна, а судя по результату даже вредна.
Аноним 08/07/23 Суб 22:58:31 #963 №2759272 
>>2759167
Дорешаю все задачи из учебника до ООП, потом немного ООП и вернусь к ней позже с новыми знаниями, так как я устал топтаться на месте с этой задачей.
Тред на архиваче есть, так что твой код позже использую.
Аноним 08/07/23 Суб 23:28:10 #964 №2759285 
declare(strict_types = 1);

Кто-то это реально юзает? Или это юзелесс хуерга?
Аноним 09/07/23 Вск 01:15:46 #965 №2759321 
>>2759167

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

Тебе стоит познакомиться с принципом YAGNI. Ты сейчас предлагаешь усложнять код на случай "а вдруг в русском языке поменяется написание чисел". А вдруг мы написание чисел будем скачивать из API.

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

Когда поменяется - тогда и будем исправлять.

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

> Я уж и не говорю про проблемы с тестированием.

Не вижу проблем с тестированием в данном случае:

assert(spellSmallNumber(23) == 'двадцать три');

> Чушь какая. Структура вполне может содержать в себе массив.

А зачем нам структура из 1 поля?

> Это не вопрос выбора. В пхп файл = класс. Функциям здесь просто нет места.

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

> Если будешь писать код на процедурном языке,

А зачем ты правила из других языков тащишь в PHP? В Риме веди себя как римляне.

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

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

> попробуй возьми отсюда первые три класса и используй их вместо массивов

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

> class NumberToRussianTextSpelling implements NumberToTextSpelling {
> public function spell(RankedNumber $number, Dictionary $dictionary): string

Почему в класс, поддерживающий только русский язык, надо передавать словарь? У нас в русском языке есть несколько вариантов написания числа "десять"? Очевидно же, что нету. Это константа, которая лет 100 не менялась и вряд ли поменяется.
Аноним 09/07/23 Вск 01:17:20 #966 №2759323 
>>2759285

юзают.
Аноним 09/07/23 Вск 04:46:25 #967 №2759357 
>>2759321
>Ты сейчас предлагаешь усложнять код
Ошибка. Я как раз предлагаю код упростить. Работать со словарем как переменной гораздо проще чем с хардкодом, который находится где-то в какой-то функции.

>Может быть и другой вариант: ты нагромоздишь сложную систему с поддержкой API
Речь идет о получении словаря как параметра функции. Какой бы ни была сложной система получения данных - система их использования предельно проста.

>Не вижу проблем с тестированием в данном случае:
>assert(spellSmallNumber(23) == 'двадцать три');
То есть ты не сравниваешь результат со словарем? Ты дублируешь словарь, размазывая дубли данных по тестам. Отличный план.

>А зачем нам структура из 1 поля?
Для создания конкретной абстракции, сущности. Для соблюдения инвариантов и сокрытия доступа к массиву.

>Это ты сам себе придумал. Функции в некоторых библиотеках есть. Там, где хватит функции, логично применять функцию.
Это просто чушь. Ты не тот процедурный шиз, который тут срал секретным процедурным пхп как в 2007 году?

>А зачем ты правила из других языков тащишь в PHP? В Риме веди себя как римляне.
Нахуй ты пишешь если просто не понимаешь о чем идет речь? Весь поинт был как раз в том что на пхп крайне трудно писать процедурный код, как раз потому что в нем нет инструментов чтобы это делать. Именно поэтому я посоветовал поскорее переходить к тому как на пхп пишут: ооп.

>Ты пытаешься усложнить код на ровном месте. По твоей логике, нужно в каждой функции делать проверки всех входных данных? На практике это просто приведет к тому, что у тебя 50% кода будет состоять из проверок входных данных.
Опять все наоборот. Инкапсуляция как раз и позволяет избежать проверок. Ты буквально пишешь в сигнатуре функции "СЮДА ТОЛЬКО ПРАВИЛЬНЫЕ ДАННЫЕ". Неправильные данные просто проверку типа не пройдут. Каждая функция должна четко определять что в неё нужно передать.

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

Короче. Мне не нравится как идет беседа. Ты постоянно теряешь нить и мало что понимаешь, вплоть до наоборот. То что тебе приходится объяснять что на пхп пишут только ооп код само по себе комедия. Очевидно что код ты нихуя не писал. что ты кукаретик, что не можешь отличить простое от сложного и что я на тебя время тратить больше не хочу.
Аноним 09/07/23 Вск 09:47:41 #968 №2759442 
Етить шизы сцепились из-за простенькой задачки, которая нужна для того, чтобы потренироваться в разбиении на функции вкатуну, который до ООП то еще не дошел...
Аноним 09/07/23 Вск 10:42:50 #969 №2759459 
>>2759272
>Дорешаю все задачи из учебника до ООП, потом немного ООП и вернусь к ней позже с новыми знаниями, так как я устал топтаться на месте с этой задачей.
Начинай потом сразу делать бложик на Ларе, не надо тебе никуда возвращаться.
Аноним 09/07/23 Вск 15:35:30 #970 №2759747 
Будет ли полезным опыт написания крудов на пхп без фреймворков? Или полезнее посвятить больше времени на ларавел + фронтендовский фреймворк?
Аноним 09/07/23 Вск 16:29:06 #971 №2759792 
>>2759747
Мозга не еби - изучай Laravel и Vue. Заодно как там это все поднять, развернуть и прочее.
Аноним 09/07/23 Вск 17:05:51 #972 №2759843 
>>2759747
>>2759792
Под Vue я скорее Nuxt имел в виду, чтобы все, что нужно из коробки было.
Аноним 09/07/23 Вск 17:21:26 #973 №2759878 
>>2759792
>>2759843
Спасибо!
Аноним 09/07/23 Вск 18:17:52 #974 №2759977 
>>2759357

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

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

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

Аргументы закончились, переходим на личности?

>>А зачем нам структура из 1 поля?
> Для создания конкретной абстракции, сущности. Для соблюдения инвариантов и сокрытия доступа к массиву.

Это уже костыли какие-то, делать класс только ради того, чтобы поставить тайп-хинты. По твоей логике, и int надо в класс оборачивать? Я конечно так делал (в Питоне, а не в PHP), но для каждой переменной делать по классу это уже перебор.

> То что тебе приходится объяснять что на пхп пишут только ооп код само по себе комедия.

Ты это сам себе придумал. Есть случаи, когда стоит использовать ООП, есть случаи, когда логичнее использовать просто функцию. Я нигде не утверждал, что ООП не нужен.
Аноним 09/07/23 Вск 18:18:49 #975 №2759979 
>>2759747

Только если маленький CRUD уровня студентов, чтобы понять, как устроены приложения. Если же ты начнешь сразу изучать фреймворк, то тебе многое может быть непонятно.
Аноним 09/07/23 Вск 20:23:10 #976 №2760132 
>>2759792
А я уже симфони выбрал.
Аноним 09/07/23 Вск 20:41:17 #977 №2760159 
image.png
>>2760132
>А я уже симфони выбрал.
Аноним 09/07/23 Вск 20:51:59 #978 №2760172 
>>2760159
Что не так? Laravel это уровнем ниже.

1. Symfony
2. Laravel
3. Zend
4. CodeIgniter
5. Yii
6. Б
Аноним 09/07/23 Вск 21:32:04 #979 №2760229 
>>2760172
>Что не так? Laravel это уровнем ниже.
Уровнем чего?
Аноним 09/07/23 Вск 22:15:27 #980 №2760267 
>>2760229
Уровнем зависимости кода от фреймворка.
Ларавель RAD фреймворк, его используют когда хотят побыстрее и по дешевле. А когда логика сложная и проект большой, зависеть от фреймворка и бодаться с его проблемами последнее дело. В симфони подход такой, что наследоваться ни от чего не нужно и тянуть к себе в код ничего не надо. Там где у ларавеля четкая круд схема, у симфони полная свобода. Но и вариантов обосраться бесконечно много. Поэтому на проекте с симфони всегда хочешь видеть человека, который понимает что делает.
Аноним 09/07/23 Вск 22:23:40 #981 №2760272 
>>2760267
>Там где у ларавеля четкая круд схема
Эта та, которой можно не пользоваться?
>В симфони подход такой, что наследоваться ни от чего не нужно и тянуть к себе в код ничего не надо
И на чем же твой симфони работает? На святом духе? Ты точно так же зависишь от компонентов симфони как и ларавел
Аноним 09/07/23 Вск 22:32:57 #982 №2760281 
Screenshot 2023-07-09 222649.png
Screenshot 2023-07-09 222709.png
>>2760272
>Эта та, которой можно не пользоваться?
Ты этот элокент выбрал чтобы его потом выковыривать?

>И на чем же твой симфони работает? На святом духе? Ты точно так же зависишь от компонентов симфони
Сына, ебало на пикрелейтед. Слева - контроллер симфони, справа контроллер ларавеля. Загадка для дошкольников: в чем принципиальная разница? А теперь газку за пивандепалой, малой.
Аноним 09/07/23 Вск 22:58:27 #983 №2760295 
>>2760281
>Сына
>дошкольников
>малой
Спокуху оформи, псина.

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

И схуев тогда на первом месте не Slim какой-нить? Там из коробки один маршрутизатор и есть. Сиди echo клепай беспонтовые, сколько влезет. А потом, когда на играешься, подключишь библиотечки, чтобы от них зависеть.
Аноним 09/07/23 Вск 23:17:30 #984 №2760300 
Screenshot 2023-07-09 231324.png
>>2760295
Дегенеративное хуйло, пикрелейтед разница между подходом симфони и ларавеля. Давно таких самоуверенных долбоебов не видел. Ларавель он с симфони ровняет.
Аноним 09/07/23 Вск 23:20:03 #985 №2760302 
>>2760300
Долбоеб, я об этом и написал.
>и который точно так же можно оформить в ларе без использования контроллера.
Аноним 09/07/23 Вск 23:23:20 #986 №2760305 
>>2760300
>>2760302
Это даже, блять, из моего следующьего вопроса про слим, нахуй, понятно. Да-да, тот самый, на который у тебя нет ответа
Аноним 09/07/23 Вск 23:27:19 #987 №2760309 
>>2760302
>без использования контроллера
И без использования фасадов, и без использования элокента. Надо следующий шаг просто сделать и написать все без использования ларавель.
Аноним 09/07/23 Вск 23:29:32 #988 №2760310 
>>2760309
Еще разу спрашиваю - хули тогда на первом месте не Слим или еще какой микрофреймворк?
Аноним 09/07/23 Вск 23:36:35 #989 №2760316 
>>2760310
Да в принципе похуй, пусть будет слим на первом месте. Какая хуй разница. Все равно из него придется симфони собирать. Di контейнер надо, доктрину надо, конфиг надо. Считай пол симфони уже собрал.
Аноним 09/07/23 Вск 23:45:54 #990 №2760330 
>>2760316
Ой, так выходит, что главное - это зависеть от "правильного" фрейморка. И доктриночки то нужны и внедрение то нужно - одними примерчиками с echo не обойдешься.
Ебать ты кекус.
Аноним 09/07/23 Вск 23:48:41 #991 №2760334 
Ларабель-макакер порвался как обычно, считая, что ларапуль лучший фрейворк эвер. Гавно спокнись.
Аноним 09/07/23 Вск 23:52:26 #992 №2760340 
>>2760334
Спокнулся уже симфони-шиз со своим списочком уебанским.
Аноним 09/07/23 Вск 23:53:05 #993 №2760341 
Screenshot 2023-07-09 231324.png
>>2760330
>Ой, так выходит, что главное - это зависеть от "правильного" фрейморка.
Бля, в голос проигрываю с тебя. Пикрелейтед означает "зависеть".
Я тебе, еблану, сразу сказал в чем разница. Симфони позволяет тебе не наследоваться и не зависеть от кода фреймворка. А ларавель создан блядь для того чтобы делать работу за программиста, как раз за счет того что ты наследуешь готовый код фреймворка. Разумеется блядь ты можешь и не наследоваться, только нахуя ты тогда ларавель выбрал, если не используешь его?
Аноним 09/07/23 Вск 23:53:47 #994 №2760343 
>>2760340
Только вот почему-то интерпрайз это почти всегда симфони, а ларавель занимает исключительно нижний рынок, как и место в мировом списке.
Аноним 09/07/23 Вск 23:57:32 #995 №2760346 
>>2760343
> как и место в мировом списке.
О, ебать, еще какой-то список))) Ну показывай.
>>2760341
Ебанина, че бы ты там не писал, ты все равно обрастешь зависимостями. И симфони тебе их так же предоставляет, пусть и не столь явно. Еще раз - в твоем топчике по твоей логике на первом месте должен стоять ебаный маршрутизатор без нихуя. Т.е. Слим
Аноним 10/07/23 Пнд 00:08:00 #996 №2760349 
>>2760346
>ты все равно обрастешь зависимостями
Внешние библиотеки можно просто покрыть интерфейсами, лалка. А прямое наследование просто тебя нахуй вяжет цепью к фреймворку.

>Еще раз - в твоем топчике по твоей логике на первом месте должен стоять ебаный маршрутизатор без нихуя
Это не мой "топчик" не похуй, пусть стоит. Главное чтобы ларавель макаки знали свое место у вебстудийной параши.
Аноним 10/07/23 Пнд 00:53:17 #997 №2760355 
>>2760272

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

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

Более того, Ларавель полагается на статические методы и твой код будет наполнен ими.

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

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

Ну и еще плюс в том, что Симфони состоит из компонентов, и ты можешь собрать свой фреймворк, использовав только часть компонентов, или постепенно их убирать из проекта, если захочется.
Аноним 10/07/23 Пнд 00:54:59 #998 №2760356 
>>2760330

Так Доктрина это не часть Симфони. Ты можешь использовать Доктрину отдельно от Симфони, ей оттуда ничего не нужно, вообще.
Аноним 10/07/23 Пнд 06:03:04 #999 №2760405 
>>2759792

>>2727117 (OP)
Аноним 10/07/23 Пнд 06:26:22 #1000 №2760409 
>>2760405
Типичное нытье вкатуна, который не знает нихера и тех 5 шизов, что тут сидят.
Аноним 10/07/23 Пнд 07:19:24 #1001 №2760426 
>>2760355
Как часто в работе бизнес-логику таскаете по фреймворкам?
Аноним 10/07/23 Пнд 08:42:22 #1002 №2760449 
>>2760426
Никто не таскает код по разным фреймворкам. А вот перетащить код в новую версию фреймворка это да. Симфони стал таким какой он есть сейчас когда выяснилось, что код написанный для симфони версии 3.6 навсегда останется для 3.6, что он намертво привязан к тому фреймворку.

Та же история с DBAL. Кто в здравом уме меняет базу посреди разработки? Ну вот кароч выходит MySql 8.0, а ты сосешь бибу. Или как убер тратишь несколько лет, миллионы далларов и хуй знает сколько человекочасов на смену версии.
Аноним 10/07/23 Пнд 08:49:09 #1003 №2760452 
>>2760449
Чем принципиально отличается переход на новые версии отдельно взятых модулей от перехода на новую версию фреймворка?
Аноним 10/07/23 Пнд 08:57:25 #1004 №2760461 
>>2760452
Ничем принципиально не отличается. Просто как раз та проблема с 3.6 и является одной из причин почему фреймворки сейчас состоят из модулей, а разрабы симфони ссут ломать обратную совместимость в новых версиях настолько, что даже забили на PSR.
Аноним 10/07/23 Пнд 15:37:06 #1005 №2760864 
Занимаюсь по вот этому: https://codedokode.github.io/phpbook/l1/loops.html

Не могу понять циклы вообще. Спрашивал у чатжпт, читал саму статью, кажется всё понял, но задание: Напиши программу, выводящую таблицу умножения чисел от 1 до N на самих себя, используя цикл. Программа должна вывести примерно такой результат поставило меня в тупик. Даже не знаю с чего начать.
Может кто-то совсем для дебила объяснить? Хотя кажется теорию я понял
Аноним 10/07/23 Пнд 16:29:07 #1006 №2760908 
>>2760864
Код свой покажи.
Аноним 10/07/23 Пнд 16:36:03 #1007 №2760918 
>>2760908
Задачу выше я всё-таки решил, другую нет. Задача:Некто кладет в банк 10000 р. Банк начисляет 10% годовых (то есть, каждый год на счету становится на 10% больше, чем в прошлом году). Напиши программу, считающую, через сколько лет в банке будет миллион? Сколько лет будет этому некто? Доживет ли некто до этого дня, если сегодня ему 16 лет?
Мой код https://pastebin.com/FMteUXWB
Часть задачи про возраст владельца капитала даже не начинал решать. Пробую прибавлять 10% к сумме.
Аноним 10/07/23 Пнд 17:00:07 #1008 №2760972 
>>2760918
Вообще весьма оригинально получилось. Но ты сам себя запутал.

Цикл состоит из счетчика, вычисляемой части и условия выхода из цикла.
Счетчик просто считает количество выполненных циклов. Конструкция for() применяется когда ты знаешь количество циклов. А если не знаешь, то применяется конструкция while. То как ты написал это код рабочий, но как ты сам заметил очень мутный и хитрожопый. C while процесс становится гораздо понятней https://3v4l.org/nX2r3
Аноним 10/07/23 Пнд 17:12:29 #1009 №2761011 
>>2760972
В примерах указах for и нет и слова про while.

Кто-нибудь разбирающийся, поясните, господин выше прав и for не подходит для решения этой задачи или нет?
Аноним 10/07/23 Пнд 17:18:09 #1010 №2761029 
>>2761011
Привыкай к тому что цикл for в своем коде вообще использовать не будешь.
Аноним 10/07/23 Пнд 18:08:42 #1011 №2761132 
>>2761011
while там дальше в уроках есть.
>Кто-нибудь разбирающийся, поясните, господин выше прав и for не подходит для решения этой задачи или нет?
Если задача решена, значит подходит.
Аноним 10/07/23 Пнд 18:14:15 #1012 №2761139 
>>2760918

Чтобы увеличить сумму на 10%, ее надо не умножать на 10/100, а либо умножать на 110/10, либо прибавлять сумму, умноженную на 10/100:

$x = $x × 110 / 100
$x = $x + $x × 10 /100
Аноним 10/07/23 Пнд 18:14:40 #1013 №2761141 
>>2761011

for подходит, и while тоже подходит.
Аноним 10/07/23 Пнд 18:29:34 #1014 №2761151 
>>2755708
>>2755715
Анон, переделал стараясь следовать твоим рекомендациям. Дальше первой антикризисной меры не пошел, хочу понять что верно двигаюсь.

Код:
https://onlinephp.io/c/ac90d
Аноним 10/07/23 Пнд 20:17:32 #1015 №2761324 
>>2761151
Братишка, прям тяжело смотреть сколько труда ты вбухиваешь и насколько неправильный код получается. Тут по каждой строчке почти надо пояснения давать, начиная с комментов и заканчивая косяками самого учебника.

Столько писать и растягивать писанину на несколько постов это просто трата времени. Я могу с тобой несколько часов посидеть и пройтись по коду, но я ебал в формате постов это делать. Если интересно пиши в дискорд https://discord.gg/hB9rSksxUB .
Аноним 10/07/23 Пнд 20:42:23 #1016 №2761359 
Мне нужно сделать проектик на ларавеле. В этот раз решил, чтобы не изобретать велосипед, использовать для фронтенда какую-нибудь дашбоард панель. Например, вот тут список: https://adminlte.io/blog/laravel-dashboards/ или тут:https://medevel.com/15-laravel-dashboard/
И с удивением обнаружил, что все эти панели крайне жёстко встроены в сам Ларавел. Это не просто какие-то пакеты, которые можно композером скачать и нпм-ом установить - нифига подобного. Это, фактически, модифицированный Ларавел, поверх которого предлагают накатить официальный Ларавел. Там модифицированы контроллеры, модели, кернел. WTF?! Это сраный фронтенд. Зачем его интегрируют в бекенд так, что не отдерёшь? Вот пройдёт месяц или год, я решу переписать фронт на что-то другое. И что делать?

В общем,это я чего-то не понял, или оно так и есть? Есть ли в природе простые фронтенд шаблоны для Ларавела, которыми можно просто пользоваться и которые не лезут в авторизацию, модели, миграции и само ядро движка?
Аноним 10/07/23 Пнд 20:46:24 #1017 №2761364 
>>2761359
> В этот раз решил, чтобы не изобретать велосипед, использовать для фронтенда какую-нибудь дашбоард панель.
>Это сраный фронтенд. Зачем его интегрируют в бекенд так, что не отдерёшь?
Чел, это админки, а не фронтенд...
Аноним 10/07/23 Пнд 22:24:54 #1018 №2761526 
>>2761364
Да, написано, что это дашбоард админ панелс. Но я не улавливаю, в каком смысле они админки? Базовую работу с юзерами даёт UI или Бриз, а остальное ты лепишь сам. Как ими правильно пользоваться?
Аноним 10/07/23 Пнд 22:58:59 #1019 №2761570 
>>2761526
>Но я не улавливаю, в каком смысле они админки?
А какие смыслы могут быть у админки? Администратор управляет контентом, пользователями, следит за трафиком, продажами, еще какой хуйней.

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

А фронтом у тебя выступать будет, ну, блейд, наверное. Делаешь верстку, цепляешь скриптики и подставляешь, собственно, данные из админки - все, очередной каловый одностаничник готов.
Аноним 10/07/23 Пнд 23:01:49 #1020 №2761575 
>>2761526
Кароче, не туда ты полез, как по мне. Нахуй оно тебе не нужно. На ларе пишешь АПИ, как фронт используешь Реакт или Вью. Ну или монолит пиши, юзая Инерцию от Ларавел или просто блейд с jq, лол.
Аноним 11/07/23 Втр 01:24:05 #1021 №2761662 
>>2761151

Это не ошибка, просто небольшой совет. Если твоя анонимная функция маленькая, то ее можно записать с помощью стрелочной функции, более коротко:

> function($sumSalary, $employee) {
> $sumSalary += $employee->getSalary();
> return $sumSalary;
> }

fn ($sum, $employee) => $sum + $employee->getSalary();

Мануал: https://www.php.net/manual/ru/functions.arrow.php

> getProfessionInDepartment
лучше было назвать findEmployeesByProfession

> return $employee->getRank() - $compareEmployee->getRank();
Для сравнения лучше использовать оператор <=> (starship)

> // Выбирает превые $count сотрудников из департамента
> public function getEmployees(int $count): array

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

> if ($this->isBoss) {
> $result += $this->getBossSalary();
> } else {
> $result += $this->getEmployeeSalary();
> }
> return $result;

Здесь можно было не использовать промежуточную переменную:

if ($this->isBoss) {
return $this->getBossSalary();
} else ...

> public function setBoss(): bool
Для этой функции не требуется возвращать значение, так как оно всегда равно true и никакой информации не несет.

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

> $departmensWithProfession[$department->getDepartmentName()] = new Department($department->getDepartmentName(), $department->getProfessionInDepartment($professionReduction));
}

Здесь не нужно создавать новый Департамент. Тебе нужно получить список сотрудников и сделать с ними какие-то операции. И ты пытаешься использовать Департамент не как модель реального департамента в компании, а как объект-список (такие объекты обычно называют "коллекция"). Но это неправильно. Если тебе нужна коллекция, то ты можешь создать класс Коллекция, и в нем делать методы для сортировки, отбора нужного количества и тд, по типу:

$collection = new Collection( $dep->findEmployeesByProfession(Profession::MANAGER));
// сортируем и берем N первых работников
$removedEmployees = $collection->sortBy(fn ($e) => $e->getRank())->take($n);
// Просим департамент их уволить
$dep->removeEmployees($removedEmployees);

То есть, ты попытался в одном классе совместить функции 2 разных классов, Department и Collection. И методы вроде "сортировать по рангу" или "отобрать N работников" в Department не нужны. Это не задача Департамента, выполнять роль класса-коллекции.

Если ты не ищешь легких путей хочешь расширить кругозор и прокачать навыки ООП-мышления и тебе хочется сделать класс-коллекцию, то сделай, только сделай ее обобщенной, чтобы она не знала ничего о работниках и могла работать с любыми наборами данных: числа, строки, любые объекты и тд. Если тебе любопытно, то в фреймворке Laravel уже есть такой класс коллекций и тут можно увидеть примеры кода с ним: https://laravel.com/docs/10.x/collections#meth

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

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

$employees = $dep->getEmployees();
$employees = array_filter(...);
usort($employees, fn ($a, $b) => ..);
$removedEmployees = array_slice($employees, 0, $n);
$dep->removeEmployees($removedEmployees);

> foreach ($departmensWithProfession as &$department) {
>$department->sortRankEmployees();
Не нужно использовать & здесь. Переменная $department указывает на тот же самый объект, что хранится в массиве, и меняя ее, ты меняешь и объект в массиве.

То есть, сейчас основная проблема в том, что ты совместил функции управления департаментом и функции работы с коллекцией объектов в одном классе, а надо их разделить и сделать либо класс коллекции, либо работать с массивом.
Аноним 11/07/23 Втр 01:24:41 #1022 №2761663 
>>2761324

Косяки учебника можно бы и тут написать, хотя бы кратко, чтобы их в будущем можно было исправить.
Аноним 11/07/23 Втр 01:50:00 #1023 №2761670 
>>2761151

Информация для расширения кругозора. Задачи по работе с коллекциями в стиле "отобрать объекты по условию, отсортировать, взять первые N" встречаются очень часто, и во многих языках есть объекты-коллекции на такой случай. Обычно в них используются анонимные функции для указания условий отбора или правил сортировки. Вот пример из Java (не бойся, учить её не надо, просто прочти):

List<Document> docs = documentList.stream()
.filter(doc -> doc.isVisible())
.sorted(Comparator.comparing(Document::getCreationDate).reversed())
.skip(10).limit(100)
.collect(Collectors.toCollection(ArrayList::new))

Вот пример из C#:

// получить имена студентов старше 18 лет имеющих StandardID > 0
var studentNames = studentList.Where(s => s.Age > 18)
.Select(s => s)
.Where(st => st.StandardID > 0)
.Select(s => s.StudentName);

В PHP есть расширение Ds, которое пытается восполнить отсутствие коллекций в PHP:

$numbers = (new Ds\Vector([1, 2, -3, -4, 5, 9, 8, 7, 6]))
->filter(fn ($n) => $n > 0)
->sort(fn ($a, $b) -> $a <=> $b)
->slice(0, 5);

Но это расширение надо ставить отдельно.

Мануал: https://www.php.net/manual/en/class.ds-vector.php

Есть так же готовые библиотеки для работы с коллекциями.
Аноним 11/07/23 Втр 08:39:22 #1024 №2761731 
У меня юбилейный номер поста! )

1. Почему тема не перекатыается??
2. Как сделать предварительную компиляцию php, чтобы при запуске он не читал весь скрипт, не разбирал строки, подключаемые либы и пр. тормозящий хлам?
Аноним 11/07/23 Втр 13:30:11 #1025 №2761918 
>>2761731

Сейчас перекатим. Заодно проверим, можно ли постить такие ссылки:


Простые задачки можно решать в онлайн-песочницах вроде https://onlinephp.io/ , https://paiza.io/en/projects/new?language=php , https://www.programiz.com/php/online-compiler/ , но для программ посложнее лучше установить редактор. Есть (дорогая) IDE PhpStorm, есть бесплатный Netbeans и VSCode, условно-бесплатный Sublime Text. Чтобы в последних получить автодополнение для PHP, нужно установить и настроить PHP language server.

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

Задачи на алгоритмы: https://codeforces.com/problemset

Про Git: https://git-scm.com/book/ru/v2

https://phptherightway.com/

Аноним 11/07/23 Втр 13:40:04 #1026 №2761928 
Этот тред закрыт. Переходите, пожалуйста, в новый тред: >>2761920 (OP)
Аноним 11/07/23 Втр 19:20:07 #1027 №2762294 
>>2761928
Мне кажется ты пиздишь.
Аноним 11/07/23 Втр 20:31:16 #1028 №2762367 
>>2759285
ну я юзаю и настроил шторм чтоб сразу со стрикт тайпом создавал классы
comments powered by Disqus

Отзывы и предложения