Этого треда уже нет.
Это копия, сохраненная 15 февраля 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Клуб изучающих PHP #129 /php/ 2511483 В конец треда | Веб
Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Предыдущий тред был тут: >>2440871 . Все старые треды есть в архиве: https://phpclub.tech/ (впрочем, иногда он не работает).

С чего начать

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

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

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

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

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

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

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

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

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

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

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

Что почитать

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

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

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

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

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

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

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

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

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

PSR-1 (рус.): https://svyatoslav.biz/misc/psr_translation/#_PSR-1
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/
3 2511505
>>511483 (OP)
А что с тем тредом стало, уплыл? Я что-то проморгал
4 2511537
>>511483 (OP)
Престарелый джун вкатился.
5 2511868
Всем привет. Что сейчас толковое можно глянуть по ООП и Ларе?
6 2511894
>>511868
По Ларе - документацию. По ООП - все то же, что и 10 лет назад, ну плюс еще рефакторинг гуру, мб.
7 2511927
>>511868

Если ты не знаешь ООП вообще, то можешь начать с главы про ООП в учебнике из шапки.
8 2511966
>>511927
Спасибо. Кстати, в шапке есть задачи про студентов, файлообменник, тестхаб. А решений нет?
10 2511983
>>511968
Бля чувак ну ты понял о чем я. Я имею ввиду вариант реализации задач правильный с точки зрения автора гайда.
11 2512097
>>511505
старый объявлен депрекейтед и удален
12 2512203
>>511966

решения других людей можно найти на гитхабе
13 2512205
>>511983

Правильного варианта нет, но к студентам есть наиподробнейшие комментарии, если сделать все как описано, то и будет "правильный" вариант.
14 2512222
Может кому окажется полезным канальчик бумера https://youtube.com/c/DmitryAfanasyev
Как по мне чувак качественно и понятно доносит о ООП, шаблонах
15 2512323
>>511483 (OP)
Думаю, это больше пост для жс труда и вообще платина, но...
Посоветуйте хороший пикер даты+времени, чтобы ни от чего особо не зависел, умел в разные форматы дат с разными разделителями, мог в валидацию (то есть можно было удобно ввести в форму руками, а можно выбрать), поддержкой мобильных устройств. В стандартном инпуте даже год через жопу выбирается. Бонусом если ещё будет уметь диапазон дат выбирать. Когда-то использовал флэтпикр, но там были проблемы с мобильной версией кажется.
Обалдеть. ОП, ты ещё жив? Видел твои треды ещё лет 8 назад. За это время я вырос в успешного бузинесмена через пыхапэ кодера, потом пм/рп, потом вот это вот. Программировать правда так и не научился, но ты когда-то давал советы мудрые, я тогда ещё в универе учился, да и "в целом" помогал тут и мы обменивались парой сообщений по почте, кажется. Интересно, сколько ещё двачеров ты сделал чуточку умнее? Спасибо что ты есть.
16 2512373
>>512323

> За это время я вырос в успешного бузинесмена через пыхапэ кодера, потом пм/рп, потом вот это вот.


Зачем ты нам это рассказываешь? В жизни реальной даже похвастаться не перед кем?
17 2512383
>>512222

>пхп


>ооп "откровения"


>гопнический "юмор"



никогда такого не было...
18 2512384
>>512222
Он там, насколько помню, даже сам говорил, что просто какую-то из книг пересказывает. Вроде даже РефГуру, лол.

Еще вспомнил, что у Димки Елисеева есть цикл по ООП. Один из видосов оттуда мне когда-то прям глаза открыл, когда я только вкатывался.
19 2512396
>>512373
Это не для тебя написано, это благодарственное письмо ОПу треда и всем старожилам, если конечно ОП не умер или не забил давно и по-прежнему бескорыстно заботится о ньюфагах.
20 2512406
>>512384
Смотреть Димку это отдельная дисциплина))))
21 2512443
>>512406
Ну на его deworker я бы всем вкатунам, которые че-то уже соображают, советовал заглянуть.
22 2512504
>>512222
Ебать, в 2022м ещё кто-то делает обучающие курсы по этому говну. Воистину, пыха есть пыха, сдыхает но никак не сдохнет.
image.png179 Кб, 783x750
23 2512524
>>512222
Посмотрел https://youtu.be/IWcVI1LVBZg
Какой пиздец, ёбаный стыд. Как может взрослый мужик на полном серьёзе показывать детям пикрил. За такое в приличном обществе канделябром бьют.

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

Для сравнения декораторы в питоне: https://www.programiz.com/python-programming/decorator
Это встроено в язык и не надо костылить.

пикрил бы выглядел

@notify_managers
@notify_users
@logger
def order_update(args):
...
24 2512530
>>512524

>Это встроено в язык и не надо костылить.


Все, мужики, с понедельника все проекты переводим на питон!
25 2512549
>>512524
Бля, я далеко не фанат пхп. Более того я бы не рекомендовал в него вкатываться вообще. Но твои доебы это такая чушь ебаная, что можно вообще охуеть. Надо сходить в питон тред спросить кто тебя с пробитой башкой из дурки выпустил.

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


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

>пикрил бы выглядел


>@notify_managers


>@notify_users


>@logger


>def order_update(args):


>...


Пикрил КОНФИГ, а не код. Тебе чтобы сделать возможность включать или выключать конкретный декоратор через интерфейс тоже придется написать конфиг. Чтобы блядь манагер мог галочку поставить напротив "Уведомлять пользователя" и пользователь уведомился. Тоже придется его читать и В ЗАВИСИМОСТИ ОТ КОНФИГА БЛЯДЬ задействовать декоратор. Или, сука, не задействовать.

То что ты, хуесос пробитый, не отличаешь декорацию ОБЪЕКТА от ФУНКЦИИ оставим на совести твоей бухавшей всю беременность мамаши.
26 2512568
>>512549
А что с пыхой не так? Работы навалом и в стране и снаружи. Со своими задачами справляется. Что еще должно мотивировать при выборе того или дру го го языка?
27 2512571
>>512568
Ну представь что бухгалтер общается с кассиром.
- Давай становись бухгалтером скорее. У бухгалтеров возможностей куча. Вариантов немеряно.
- А че с кассовым аппаратом не так? С задачами справляется. Деньги платят, работа есть.

У пхп очень специфичная и замкнутая экосистема. Вне пхп тебе оттуда пожалуй пригодится только знание ООП и умение обращаться с IDE.

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

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

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

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

>Да, на собесе тебя могут спросить про виды сортировки, но в повседневной работе ты не пишешь сортировку на пхп.



А не на пхп ты сортировки каждый день пишешь? В других языках в стандартной либе сортировщика нет?

>. Да, ты можешь знать разные структуры данных, но в пхп они тебе не нужны.


А в яве нужны? Каждый день связный список реализуешь с нуля или красно-черные деревья крутишь? Что за бред, ты такой же перекладыватель жсонов или конфигуратор спринга, лол.

П пхп нелогичная стандрартная либа, нет из коробки асинхронности\многопотока и геморно писать демонов в этой связи. Все.
29 2512639
>>512618

>А не на пхп ты сортировки каждый день пишешь? В других языках в стандартной либе сортировщика нет?


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

>А в яве нужны? Каждый день связный список реализуешь с нуля или красно-черные деревья крутишь?


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

А с пхп что? А нихуя. Можешь паттерны перечитать с рефакторинг гуру. Или про солид че-нить. Нинужно. Нихуя нинужно.

Все эти красно черные алгоритмы это не просто смешной способ писать код. У них есть назначение. И даже если они есть в стандартной либе нужно шарить что из этого и как использовать. Да даже банально чтобы понять что язык говно и нахуй не нужон нужно понимать чего ему не хватает в этой стандартной либе.
image.png330 Кб, 828x821
30 2512669
>>512639
>>512571
всегда угораю с таких вот БАЗОВИЧКОВ КОМПУХТОР СКИЕНСЕ. Наслушались где-то умных слов про алгоритмы и теперь несут их, как единую истину. Дураку в жизни не объяснить, что 95% алгоритмов не нужны на прикладном уровне, на их основе написаны многие вещи в стандартной либе, и скорее всего, его реализация будет корявее и багованнее. Но дурак будет до конца доказывать - "алгоритмы нужны каждый день нях, пхп говно потому что нет смысла их использовать" и т.д.
31 2512677
>>512669
Ответь на два вопроса. В первую очередь себе.
1) Сколько, по твоему мнению, нужно времени миддлу пхп чтобы перекатиться в миддла на джаве или шарпе?
2) Сколько, по твоему мнению, нужно времени миддлу на джаве или шарпе чтобы перекатиться в миддла на пхп?

Есть еще вопрос станет ли вообще миддл на джаве или шарпе перекатываться в пхп, но это вопрос риторический.
32 2512683
>>512677
На пыхе прикольно mvp писать и что называется давать по съёбам когда время сдавать проект заказчику. Все остальное на пыхе говноработа. Долгие проекты это просто нужник куда срут мимокроки. Потому что в пыхокомпаниях экономия на всем, в том числе и на процессах разработки.
33 2512686
>>512677
Если задача жизни кататься между ЯП и измерять производительность языков, то ты прав.
Ясен хуй и ты прав, что ява шарпы имеет реализацию всего, что общество возложило на программирование в целом. Но не всегда для того чтобы приварить 2 железки надо искать 5 осевой сварочный чпу станок.
34 2512693
>>512686

>Но не всегда для того чтобы приварить 2 железки надо искать 5 осевой сварочный чпу станок.


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

Бля, ты вообще понимаешь что в случае с джавой и шарпом это не выбор языка даже. А просто выбор маршрута в айти, который можно менять как хочешь. А в случае с пхп это именно выбор пхп болота.
image.png78 Кб, 248x300
35 2512700
>>512693

>А в случае с пхп это именно выбор пхп болота.


Ты приходишь в наш тред за общением, но делаешь это без должного уважения.
36 2512701
>>512693

>Но нахуя именно тебе этим заниматься? Как существование в мире ниши для пхп определяет твой выбор языка?


>Да, пхп это легкий путь, почти ничего знать не надо. Да, на хлеб что намазать будет, и может даже икру.

37 2512705
>>512700
Ты забыл ответить на второй вопрос.
Ну и создал третий: через сколько времени тебя выпнут нахуй с твоим говнокодом. Опытный джавист вычисляет пхп макаку просто по стилю написания, че там будет с решением задач вообще пиздец.
38 2512706
39 2512721
>>512700
Я пришел в этот тред обоссать петухон хуеплета. Какой он нахуй "твой" если ты его не читаешь даже.
40 2512724
>>512705

>с твоим говнокодом


>Опытный джавист вычисляет пхп макаку


Ну если у вас там все такие петухи, как ты, то лучше и не перекатываться
>>512721
Ты чмое ебаное, которое в конторе боится из каморки своей на обед лишний раз выползти, чтобы его не обоссали. Иди в другом месте самореализовывайся.
41 2512728
>>512701
Ну вот я тебя просветил, что если поднапрячь сраку еще чуть чуть, потратить лишние пару месяцев, то можно стартануть с гораздо более высокой и удобной для карьеры позиции.

Стоят ли эти невероятные напряги вечного титула пхп макаки решать тебе.
42 2512732
>>512728

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


>смена языка будет означать практически начало карьеры сначала.


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


Да хоть за собственными высерами то следи, жиробасина.
TameRequiredJaeger.mp4292 Кб, mp4,
576x304, 0:08
43 2512741
>>512732

>Бля, я далеко не фанат пхп. Более того я бы не рекомендовал в него вкатываться вообще.


>А что с пыхой не так?


>У пхп очень специфичная и замкнутая экосистема. Вне пхп тебе оттуда пожалуй пригодится только знание ООП и умение обращаться с IDE.


>смена языка будет означать практически начало карьеры сначала.


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



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

Дегенеративное хуйло, мне за тебя еще и тред читать?
Краткий пересказ треда, решебник для вкатывальщиков в пхп том первый.
44 2512747
>>512741
Ну да, всего пару месяцев добавил и вот уже вкатился на кардинально другой уровень, а с опытом на пыхе и 4 месяцев не хватит и ваще сразу выгонят, лол, блять.
Еще раз - в каморку забейся обратно и не отсвечивай.
16507308835530.webm9 Мб, webm,
320x240, 3:19
45 2512755
>>512747
Ебанько, каким хуем ты приплел мой вопрос про свап языков МИДДЛАМИ сука, к вкату на первую работу? Какая же блядь каша там у тебя в голове. Что надо употреблять чтобы не зная по теме нихуя блядь вообще, так самоуверенно нести какую-то хуйню?
46 2512761
>>512755
Тебе там выше написал, как произойдет свап мидлами в реальной жизни, на что ты смог прокукарекать только

>с твоим говнокодом


>Опытный джавист вычисляет пхп макаку

47 2512783
>>512760 (Del)

>Не через сколько. За говнокод никто никого не выпихивает. Максимум первые месяца 3 в кодревью будет тебе срать. Но людей не увольняют за то что в кодревью много комментов. Главное одну и ту же ошибку по 100 раз не допускать.


>По табам вместо пробелов блять? Кодстайл в каждой и в большенстве случаев кодстайл тебе phpcs покажет где не тот.


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


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


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

Предлагаю сразу притвориться архитектором или CTO. Хули там, таски в джире двигать и на митинги ходить, а зп больше.
49 2512789
>>512788

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


Ну да. Это База. Главное залезть.
1500348276773.png10 Кб, 650x650
50 2512840
Почему все приходят самоутверждаться в пхп тред?
51 2512844
>>512831 (Del)
Никто не сидит на проекте по пять лет. Может только тимлид. Да и то съебет года через три. Так оно устроено. Чел, который писал "делай мвп и съебывай" по сути прав. Все с кем я со старых работ контачу по несколько контор сменили.

Мне вот тоже пора перекатываться. После нового года пойду искать. Может высру че на гитхаб чтоб зп еще немного подогреть, может съебу наконец из рашки. Но сидеть пять лет на одном месте даже если это великолепнейшая, уютнейшая компания это самое хуевое что можно придумать.
52 2512853
>>512844

>вы учите не то


>вы пишете не так


>вы работаете неправильно


Как же заебал этот бубнеж из каморки.
16674816071150.jpg101 Кб, 811x338
53 2512866
>>512858 (Del)
Это так. Ну два года. Ну край три. Пять лет это слишком дохуя.
54 2513541
Хочу уйти с битрикса в ларавел, будут ли учитывать мой опыт (13 месяцев)? Кто-то пробовал? Хотя я только начал чекать ларавелЬ, пока подготовлюсь пройдет еще полгода, так что опыт уже будет полтора года бекендером битриксоидом.
Хочу уйти потому что в битриксе плотят меньше, ну и начались какие-то неприятные чувства, что вроде ты в айти, но вроде и где-то там кто-то там и вроде и никто ты вообще, не "трушный" веб-разработчик.
55 2513548
>>513541
напиши минимум что должен уметь/знать(по БУС) битриксоид
56 2513561
>>513548
HTML, CSS, JS для внедрения верстки в БУС (верстать не надо), JS библиотеку БУСа (изучается в процессе работы), PHP, ООП, MVC (в БУС немного отличается от большинства), SQL, БУС ОРМ, composer, git, ssh, ftp, PhpStorm, ajax. Это для ждуна.
57 2513673
И где деньги в айти?
По сути, 60к в месяц получается 6к за 2 дня. Если 20 дней рабочих в месяце без выходных.
Бля, я даже на ноут скопить не могу, не говоря о тачке и квартиры
5333321-91510e425e724e61ec12430802a492ee.jpg87 Кб, 1024x634
58 2513797
>>513673
Вот тебе пара историй для мотивации.
Первый пхп джун. Пришел с какой-то фриланс помойки, где месяц писал на yii. За пол года освоился с симфони, заебал всех вопросами, купил тачку и потом успешно перекатился в другую контору на миддла. Щас уже тимлид, зашибает гораздо больше меня, но я ебал эти корпоративные игры, я код пишу.

Второй js джун. Пришел хз откуда, но опыта считай небыло. За пол года изучил vue, катался по тайландам на удаленке. Щас сеньор помидор в каком-то стартапе в мурике.
59 2513842
>>513673
Ну пиздуй на завод. Там то тебе сразу 260 отваливать будут.
60 2513883
>>512840
а что поделать, на языках для илиты работы нет, так что свободного времени много
15151.JPG28 Кб, 624x483
61 2513895
>>513797

>пик


А если там сельский туалет?
62 2513899
>>513895
Туалет! И лучше кайфа нет
https://www.youtube.com/watch?v=H7xYkgrIJ6w
Screenshot12.jpg10 Кб, 292x234
63 2513901
>>511483 (OP)
Что это за залупа, постоянно вижу в документация, фреймворках, как оно работает?
gjghj.JPG21 Кб, 456x538
64 2513902
>>513899
Лучше напиши что стоит учить?
Сейчас Yii2 планирую + redis, а дальше что? Вот пишут микросервисы, а их как учить и делать? Ну на сколько хорошо нужно знать sql для мидла?
65 2513905
>>513901
Легаси-говно, которое нужно было, когда в пыху еще не добавили нормальную типизацию.
66 2513906
>>513901
IDE тебе потом подсвечивает вроде как что должно выходить на основе этих комментов. Еще может быть для рефлексии API. Там комменты указывают PHP что делать с этим куском кодом. reflectionAPI. Оно может код менять после тебя и запускать
Учим пдд.mp45,4 Мб, mp4,
640x360, 0:52
67 2513921
>>513902
Учи мемы чтобы не быть баттхертом
45848.JPG30 Кб, 847x686
68 2513926
>>513921
угаманись
69 2513948
>>512524

Идея хранить список декораторов в конфиге мне не нравится, так как при просмотре кода не очевидно, что они вызываются.

Аналогично, кстати, я не люблю "события" на сервере. Надо их избегать, так как опять же, код становится неочевидным. В Доктрине, например, есть события, в Симфони.
70 2513950
>>512571

Ты предполагаешь, что человек один раз освоит PHP и никогда больше ничего учить не будет. А он может благодаря PHP найти работу, получить опыт и дальше развиваться в каком-то еще направлении, пока ты будешь ходить со своим Эликсиром по 2 с половиной собеседованиям с требованиями не менее 6 лет опыта.
71 2513952
>>512683

> Потому что в пыхокомпаниях экономия на всем, в том числе и на процессах разработки.



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

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

(хотя в окамле и есть интересные идеи)
72 2513954
>>512693

> джава



Это настолько продвинутый язык, что в нем нельзя сравнить 2 строки через ==.

> шарп



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

Что-то я не слышал особо о проектах на шарпе, кроме stackoverflow.
73 2513955
>>512705

> Опытный джавист



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

try {
someFunction();
} catch (e) {
return null;
}

такой код тоже опытные явисты пишут? Что-то у меня есть подозрение, что в мире Java не все так красиво, как ты описываешь. Хотя сам язык неплохой, но слишком многословный, и писать на нем мне не хочется.
74 2513956
>>512741

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



Не будет. Если один за 6 месяцев выучит PHP/веб, а другой (по твоим заверениям) за 8 месяцев Яву, то зарплату им дадут примерно одинаковую, так как для изучения обоих (по твоим заверениям) требуется примерно одинаковое кол-во усилий и на них примерно одинаковое кол-во кандидатов. Более того, если на Яву меньше вакансий, то это будет значить, что там больше кандидатов на одно место и можно продавить их на менее выгодные условия.
75 2513961
>>513673

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

Это задача, по моему, на настройку вордпресса мышкой в админке. Оптимальным решением тут было бы не писать код, а подключить готовые плагины или библиотеки. Если у них самописный сайт, то конечно найти готовый плагин не получится, но это уже их проблема.
76 2513963
>>513901

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

В общем, изучай.
77 2513964
>>513905

Там вообще-то не только типизация, а еще документация. Я легко могу к функции или классу написать 10-15 строк описания.

Плюс, там можно указывать структуру массивов вроде SomeClass[] или array{x: int, y: string}.
78 2513974
>>513964

>Там вообще-то не только типизация, а еще документация.


Ну я думаю, что он не совсем уж дебил и понял, что зелененькое - описание. Мне кажется его вопрос был именно про типизацию.
Хотя если он там че-то в исходниках фреймворков ПОСТОЯННО видит, но при этом до сих пор не понял, что это phpDoc, то хуй его знает...
79 2513981
>>512549

>Пикрил КОНФИГ, а не код.


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

def some_db_logic():
db.query("select for replace a from b")
db.query("replace b set a = c where hui")

и у тебя таких функций десятки по коду
и ты хотел бы каждую завернуть в транзакцию. тебе чтоб не писать begin перед и commit/rollback после каждой - ты делаешь декоратор

def transactional(f):
def inner():
db.begin()
try:
res = f()
db.commit()
except:
db.rollback()
return res
return inner

и затем пишешь просто

@transactional
def some_db_logic():
...

или как это делается в ruby, просто на блоках кода

ActiveRecord::Base.transaction do
david.withdrawal(100)
mary.deposit(100)
end

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

То что ты говоришь про включение/выключение логирования делается через фича-флаги. https://www.martinfowler.com/articles/feature-toggles.html
то есть просто

if feature.notify_manager:
log.info('хуё-моё')

декораторы тут нахуй не нужны.

> не отличаешь декорацию ОБЪЕКТА от ФУНКЦИИ



так декоратор и есть функция. по определению.
если есть функция f(args: T) -> result: U
то декоратор - это такая функция, которая принимает в себя f и возвращает функцию g с такой же сигнатурой что и f
decorator(f) -> (g(args: T) -> result: U)

в коде используешь так:
допустим у тебя есть функция
sum = fn(a, b) -> a + b
и где-то в коде ты пишешь
value = sum(1, 2)

когда ты хочешь задекорировать её - ты просто добавляешь
sum = logger(sum)

и в итоге получается
sum = fn(a, b) -> a + b
sum = logger(sum) // в этой строчке вся мякотка
value = sum(1, 2)
79 2513981
>>512549

>Пикрил КОНФИГ, а не код.


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

def some_db_logic():
db.query("select for replace a from b")
db.query("replace b set a = c where hui")

и у тебя таких функций десятки по коду
и ты хотел бы каждую завернуть в транзакцию. тебе чтоб не писать begin перед и commit/rollback после каждой - ты делаешь декоратор

def transactional(f):
def inner():
db.begin()
try:
res = f()
db.commit()
except:
db.rollback()
return res
return inner

и затем пишешь просто

@transactional
def some_db_logic():
...

или как это делается в ruby, просто на блоках кода

ActiveRecord::Base.transaction do
david.withdrawal(100)
mary.deposit(100)
end

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

То что ты говоришь про включение/выключение логирования делается через фича-флаги. https://www.martinfowler.com/articles/feature-toggles.html
то есть просто

if feature.notify_manager:
log.info('хуё-моё')

декораторы тут нахуй не нужны.

> не отличаешь декорацию ОБЪЕКТА от ФУНКЦИИ



так декоратор и есть функция. по определению.
если есть функция f(args: T) -> result: U
то декоратор - это такая функция, которая принимает в себя f и возвращает функцию g с такой же сигнатурой что и f
decorator(f) -> (g(args: T) -> result: U)

в коде используешь так:
допустим у тебя есть функция
sum = fn(a, b) -> a + b
и где-то в коде ты пишешь
value = sum(1, 2)

когда ты хочешь задекорировать её - ты просто добавляешь
sum = logger(sum)

и в итоге получается
sum = fn(a, b) -> a + b
sum = logger(sum) // в этой строчке вся мякотка
value = sum(1, 2)
80 2513984
>>512549

>декорацию ОБЪЕКТА


перечитал, проиграл.

как можно декорировать объект, мань? вон из профессии
81 2513985
>>512571
Всё так. ПХП - это смерть разработчика.
82 2513986
>>513984
кхм-кхм

>Декоратор (англ. Decorator) — структурный шаблон проектирования, предназначенный для динамического подключения дополнительного поведения к объекту. Шаблон Декоратор предоставляет гибкую альтернативу практике создания подклассов с целью расширения функциональности.

83 2513987
>>513981
Он называет вынос повторяющегося кода в функцию декоратором, чи шо?
84 2513989
>>513950

>А он может благодаря PHP найти работу


да не вопрос, а ещё можно битрикс раскачать или 1с админить и тоже будет работа. только это не про программирование.
videoplayback.mp41,5 Мб, mp4,
480x360, 0:30
85 2513991
86 2513995
>>513986
Это пердёж мозгом, что для ООПешника абсолютно нормально.

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

def logging(f, level):
def inner(a, b):
log.write(level, "before f, a = {a}, b = {b}")
res = f(a, b)
log.write(level, "after f, sum = {res}")
return res
return inner

sum = fn (a, b) -> a + b
sum = logging(sum, "info")
value = sum(1, 2)

В ООП был бы оверхед строк на двадцать для объявления приватных полей, публичных полей, конструкторов, invoke-методов и прочего говна
image.png2 Кб, 302x202
87 2513997
88 2514000
>>513995

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


Ну неси ссылки на эту СУТЬ паттерна, а мы посмотрим. Если ты конечно не из своей больной головы все это высераешь.
89 2514004
>>514000
Какие ссылки, ты что, ебанутый? Это очевидные вещи. Если ты конечно программировал на чём-то кроме пыхи и хтмл.
90 2514005

>Мань, там конфиг не нужен.


>Конфиг для декораторов не составляется никогда.


Ебанько, конфиг нужен не для декораторов, а для изменения поведения.

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

>Никаких опций включения/выключения тут нет. Декораторы не включаются и не выключаются


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

>это заворачивание бд-операции в транзакцию.


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

>>513997
А теперь и мира говнокода на коленке переезжаем в реальный. https://www.section.io/engineering-education/custom-decorators-in-django/
Нихуя себе сходил за хлебушком. Как добавить декоратор в джанго инструкция в двух томах.
91 2514007
>>514005

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



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

if logging_enabled {
log.info("бляпиздец before")
}

feature()

if logging_enabled {
log.info("бляпиздец after")
}
92 2514008
>>514004
Шизик, хватит в портки дристать себе. Лучше таблеточки пропей какие-нить.
93 2514010
>>514007
Так транзакции ты без ифов написал, ебанько. А тут с какого-то хуя именно на ифах надо.
Хватит троллить тупостью. Ну перепутал, не обратил внимания. Нахуя позориться дальше?
image.png220 Кб, 702x766
94 2514012
>>514005

>Никто не "включает декоратор"



смотрим пикрил до просветления, потом пишем хуйню
95 2514017
>>514012
Ебанько, если я вручную задекорирую ДРУГОЙ объект в этом проекте, декоратор будет работать или нет?
image.png201 Кб, 783x750
96 2514021
>>514010
ты не понял сути. кладу тебе последний раз за щеку, соси внимательно:

то что сделано на пикриле - делается ифами без всяких конфигов

if ($features->notify_user) {
$f = OrderUpdateDecoratorLogger::decorate($f)
}
if ($features->notify_managers) {
$f = OrderUpdateDecoratorNotifierManager::decorate($f)
}

и т.д.

речь была про то что пхпшник притащил за собой свой любимый оверхед
97 2514025
>>514021
А $features->notify_user тебе из эфира транслируется, ебанько?
98 2514041
>>514025
пробрось в текущий контекст как тебе удобно, хоть в аргумент, хоть в конструктор, хоть в замыкание
99 2514044
>>514041
Пробросил тебе защеку. Один хуй конфиг будет, черт ебаный. А то что в ООП нужно каждый объект декорировать, так это везде так. В твоей функцианальной параше тоже только кажется что все изи, я выше скидывал сколько ебли с декораторами в джанго.
2885435original.png558 Кб, 688x536
100 2514047
Знатно залетного попустили.
image.png4 Кб, 302x202
101 2514048
>>514044

>то что в ООП нужно каждый объект декорировать, так это везде так


поэтому нахуй ООП

> я выше скидывал сколько ебли с декораторами в джанго


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

я же написал как их делать (пикрил). они на самом деле настолько простые.
а в питоне для них сахар - если укажешь @decorator_name перед функцией - питон сам завернёт функцию в декоратор. но сахар - лишь сахар, можно и без него
102 2514049
>>514047
чмоня, мы уже поняли, что это единственный номер, который ты умеешь показывать, не продолжай
103 2514053
>>514044

>Один хуй конфиг будет


Ну пиши без конфига, так даже проще. Вообще, отключаемые логи - это гниль и параша. Ты не в курсе? Проблема логов в том, что они нужны ПОСЛЕ того как произошёл инцидент. То есть, их нужно держать включенными всегда, либо не расчитывать на них вовсе.

>черт ебаный


Ну ты представился, и я представлюсь: программист-наносек 16 лет стажа, пишу десятке языков, ещё десяток читаю.
104 2514055
>>514048

>поэтому нахуй ООП


Ну вот. Мог бы не высирать столько постов по пол страницы и не показывать как там в питоне декораторы делаются.
Диагноз: имбецил.
105 2514058
>>514055

>и не показывать как там в питоне декораторы делаются


могу не показывать если ты знаешь. но ты же не знаешь. неэрудированные нынче чмоньки пошли
106 2514064
>>514017

>задекорирую ДРУГОЙ объект


блядь, декоратор объектов хуев.

да, будет работать, если сигнатура совместима

сигнатура - это совокупность типов и количества аргументов и типа результата
107 2514066
>>514064
Ну так хули ты пиздишь что декоратор кто-то там включает и выключает? Если бы у декоратора было свойство "включен", тогда да. А так иди на хуй.
108 2514073
>>514064

>если сигнатура совместима


>сигнатура - это совокупность типов и количества аргументов и типа результата


как же жалко это выглядит...
109 2514078
>>514066

> что декоратор кто-то там включает и выключает?


код читал, чмоня? getEnabledSettings видел?

>Если бы у декоратора было свойство "включен", тогда да.


Видимо я не очень понял суть твоего жёванного вопроса, ты в следующий раз хуй изо рта до конца вынимай прежде чем что-то говорить.
110 2514083
>>514078
Хватит вилять сракой, имбецил. Настройка включает отправку логов при обновлении заказа, а не декоратор.
Так что завали свое функциональное ебало и иди проспись от стекломоя, макака.
111 2514089
>>514083

>Настройка включает отправку логов при обновлении заказа, а не декоратор


Какой пиздец. Настройка включает отправку логов путём включения или не включения декоратора в стек декораторов, ёбаный ты смешной.
112 2514096
>>514089

>путём включения или не включения декоратора в стек декораторов


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

> флаг enabled есть


> код опирающийся на эти флаги есть


> но декораторы никто не включает и не выключает


яснопонятно
114 2514100
>>514098

>Какой пиздец. Настройка включает отправку логов


> но декораторы никто не включает и не выключает


Шизофреник, хватит троллить тупостью. Просто съеби.
Безымянный.png746 Кб, 832x669
115 2514111
Не долго музыка играла, не долго фраер танцевал...
116 2514173
>>513981

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

> или как это делается в ruby, просто на блоках кода


Точно такой же подход с коллбеками есть и в Доктрине:

$dbal->transactional(function () {

});

А в Питоне нет удобных анонимных функций, поэтому вместо коллбеков используют with.

> так декоратор и есть функция.


Не обязательно. Ты просто кроме декораторов из Питона не воспринимаешь других декораторов. Декоратор может быть и объектом с методами enter/exit, и кстати, даже в Питоне такие декораторы есть (это менеджеры контекста).
117 2514177
>>513989

Ну ты глупенький. Писать формочку на PHP — это не программирование, а на Руби или Эликсире или Яве это уже программирование, да?

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

На 1С точно так же можно программировать, да, язык там скорее всего поганый, но это все равно программирование.
118 2514178
>>514007

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

>>514012

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

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

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

В Питоне декораторы реализованы удачно, а тут просто получился переусложненный код (но у Питона есть много недостатков, например, производительность. Глупо менять язык только ради декораторов, которые не так и нужны).
119 2514180
>>514178

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



Хотя тут я немного приврал. В ООП часто декораторы не переиспользуемые, например, в HTTP-клиенте с помощью декораторов реализуют логгирование/кеширование/сжатие и эти декораторы нельзя нигде переиспользовать, в логгерах декораторами могут реализовать какую-то обработку логов.
120 2514181
Кстати, аноны, раз никто не решает задачки, у меня вопрос: как вы думаете, то, что на капче цифры разноцветные, облегчает или усложняет ее взлом?
121 2514187
>>514181

> как вы думаете, то, что на капче цифры разноцветные, облегчает или усложняет ее взлом?


Слишком сложные материи для пхпшников. Мы о таком не думаем.
122 2514192
>>514181
Не меняет сложности, самая важная задача это сегментирование, а там уже несложно распознать.
123 2514264
>>514192

А сегментировать проще, когда цифры разного цвета или одинакового?
124 2514315
>>514173

>После rollback нужно пробросить исключение дальше


да

>Точно такой же подход с коллбеками есть и в Доктрине


да

>в Питоне нет удобных анонимных функций


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

>Декоратор может быть и


да, идей может быть много, и реализации могут быть разными. можно оборачивать поведение во что-либо, можно подменять контекст выполнения, переменные окружения и так далее. базовых приёмов немного, остальное - их комбинации.
125 2514316
>>514264
Цвет для людей, при обработке картинка переводится в чб, потому что цвет не дает никакого дополнительного смысла.
126 2514318
>>514177

>Писать формочку на PHP — это не программирование, а на Руби или Эликсире или Яве это уже программирование, да?


На руби/эликсире/яве ты работаешь с более богатой семантикой и виды решаемых задач шире, это ведь языки общего назначения. К тому же из-за лаконичного синтаксиса у программиста остаётся больше времени и сил на мышление на тему ЧТО он делает вместо КАК.
127 2514319
>>514178

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


>


Ответ принимается

>Справедливости ради, это какой-то переусложненный код.


Да, я об этом и говорил. Пример переусложнён. Естественным образом напрашивающийся пример не показан. Когда декораторы нужны а когда нет - не объяснено, просто зачитан текст из трёх разных источников.
128 2514406
>>514319
Ты говорил о том, что это все хуета, что пхпшники долбоебы, что нужно уебывать из профессии.
А потом съехал на

>пуньк-среньк пример переусложнен


Когда тебя немного по полу еблетом повозили
129 2514410
>>514318

>лаконичного синтаксиса


>джава


ну тут ты уже вытекаешь
130 2514411
кстати, ты уже смог найти работу сеньйором-эликсиронюхом с зп больше чем у мидла на недоязыке пхп?
131 2514437
>>514406
Ты опять выходишь на связь мудило? Пример переусложнён потому что его писал пхпшник, что непонятно?
132 2514459
>>514316

Отчего же не дает? А по моему, так он упрощает сегментацию.
133 2514461
>>514437

Он переусложнен, потому что это урок про паттерны проектирования, а их никто толком не понимает и потому делают такие переусложненные примеры.
134 2514486
>>514461

>а их никто толком не понимает


включая объясняющего, в этом вся пыха не шутка
135 2514497
>>514486
Есть такая фраза: "не умеешь сам - учи других". Вот по-моему это прямо в десятку именно про сферу программирования.
Все эти, если так можно сравнить, продавцы лопат для искателей золота выучили может синтаксис и какие-то простые примеры. Но очевидно, что для программирования нужно нечто большее. Иначе зачем толкать эти курсы (всегда с большими скидками, как вы наверняка замечали), если сами могли бы 300к/нс зарабатывать и избегать демпинга профессии вдобавок.
136 2514739
>>514497
В том то и дело что чел на видео все умеет. Все претензии петухонеров в итоге свелись к тому что:
1) Язык говно.
2) В ПОСЛЕДНЕМ примере урока чел немного вышел за рамки темы и показал более сложные вещи.

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

Просто петуховен ебанько невнимательно посмотрел видео и рвался пол треда роняя кал.
137 2514742
Смотрю https://youtu.be/jSmfRyk-Jms

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

Этой фразы в общем достаточно чтобы понять уровень ДАфанасьева - мидл не выше среднего.

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

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

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

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

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

Вот прекрасная иллюстрация https://youtu.be/E8_dcn1k9aA на 9:20. Соискатель не отрефачил код и обосновал это фразой "мне что, весь проект отрефакторить?", что говорит о том, что проект находился в уёбищном состоянии, и все с этим жили. Ну живите дальше, чо.

Кстати, котятки, вы знаете, что для скорейшего вката нужно выучиться слепому десятипальцевому набору? Это ещё до любого ЯП.
137 2514742
Смотрю https://youtu.be/jSmfRyk-Jms

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

Этой фразы в общем достаточно чтобы понять уровень ДАфанасьева - мидл не выше среднего.

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

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

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

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

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

Вот прекрасная иллюстрация https://youtu.be/E8_dcn1k9aA на 9:20. Соискатель не отрефачил код и обосновал это фразой "мне что, весь проект отрефакторить?", что говорит о том, что проект находился в уёбищном состоянии, и все с этим жили. Ну живите дальше, чо.

Кстати, котятки, вы знаете, что для скорейшего вката нужно выучиться слепому десятипальцевому набору? Это ещё до любого ЯП.
138 2514746
>>514742

>Вот прекрасная иллюстрация https://youtu.be/E8_dcn1k9aA на 9:20.


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


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

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

Плохо доебываешься, тупо. Давай ищи где он откровенную хуйню в коде написал, тогда пиши. Таймстамп не забудь, десятипальцевый.
139 2514758
>>514742
Блаженный...
140 2514837
https://www.php.net/manual/ru/function.substr.php
Я что-то понять не могу.
1 - Что означает слово возвращает? Куда возвращает? Показывает будет являться синонимом?
Возвращаемые значения ¶
Функция не возвращает значения после выполнения.
Как это понять?
____
Если length положительный, возвращаемая строка будет не длиннее length символов, начиная с параметра offset (в зависимости от длины string).
Если параметр length опущен или null, то будет возвращена подстрока, начинающаяся с позиции, указанной параметром offset и длящейся до конца строки. - как это расшифровать?

Как это понять? Почему длина положительная или отрицательная?
не длиннее length символов, начиная с параметра offset - тут вообще запутался.
141 2514885
>>514837

>Как это понять?


Учись гуглить. Ответы на эти вопросы есть по первой ссылке на твоем же этом хекслете.

>как это расшифровать?


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

>Почему длина положительная или отрицательная?


Там все написано. Играйся с кодом, пробуй.
142 2514887
>>514746

>дать ссылку на видео с таймстампом


попроси мужа выставить тебе время в ролике
143 2515033
>>514837

Нет, не показывает, а именно возвращает. Когда ты вызываешь функцию, она возвращает какое-то значение и ты можешь его сохранить в переменную, вывести на экран, передать в другую функцию и тд. Вот здесь пример, где мы вызываем функцию some_function и сохранем значение, которое она вернет, в переменную $x:

$x = some_function();

А здесь мы выводим это значение:

echo some_function();

> Как это понять? Почему длина положительная или отрицательная?



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

То есть, если мы передаем в offset или length отрицательное число, то это значит "отсчитать указанное число символов от конца строки". Например, offset = -5 значит "взять подстроку, начиная с 5-го символа от конца строки".

Посмотри примеры кода там.

Также, функция substr не работает корректно с не-латинскими символами. Используй mb_substr вместо неё.
144 2515122
>>514837

>Куда возвращает?


где спиздила - туда и возвращает
щютка

когда ты делаешь
fn a() {
print b() // переход в функцию б отсюда
}

fn b() {
// сюда
return 123;
// возврат из функции в место вызова
}

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

fn a() {
print 123
}

в точку вызова b() подставится значение, которое вернула функция b
145 2515174
>>514459
Разве для какой-то лоховской капчи.
Если символы перекрываются, есть деформации и всякий мусор поверху, то нихуяшеньки он тебе не упростит.
146 2515247
>>515174

Мы говорим про капчу на этом сайте, а не про какую-то.

Кстати, тут цифры похоже просто из нескольких шрифтов берутся даже без всяких деформаций.
147 2515604
>>515033
про строки все понял.
а про возвращение чет не очень. можно как - то ещё раз объяснить?>>515122
блин я не понял. можно ещё раз? причем тут фн а?
148 2515606
>>515604

>причем тут фн а?


просто пример кода из которого происходит вызов функции b. Можешь назвать её fn main. Важно что ты вызываешь функцию b, ей передаётся управление, функция b делает что-то, а потом возвращает управление в точку где она была вызвана.
149 2515618
>>515606
Понял. А что такое вызов? Синоним - просто написать функцию? В твоем примере это принт б?
То есть у нас была принт б. у неё было управление.
потом мы написали фн б. ей передалось управление. она все посчитала и вернула в принт б.
Так?
фейнман почему так нахуй.mp412,9 Мб, mp4,
480x360, 7:32
150 2515641
>>515618
Бля, твои вопросы из разряда "почему трава зеленая". Тебе отвечаешь и возникает новое "почему", и так пока до кварков не дойдешь. Видео релейтед.

Для начала нужно понять как "работает" программа. Код написанный тобой преобразуется в строгую последовательность команд. Каждая функция это последовательность команд в оперативной памяти. И каждая функция это отдельная программа. Твоя программа (функция) печатающая "Хелло ворлд" и совершенно равноправная с ней программа (функция) "substr". Обе хранятся в памяти по разным адресам.

Последовательность команд (функция (программа)), которые прямо сейчас выполняются (execute) процессором называется "control flow" https://en.wikipedia.org/wiki/Control_flow

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

Поскольку выполняться (execute) при этом начинают команды другой (функции (программы)), то считается что control flow перешел к выполняемой функции.

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

Для того чтобы знать кто кого вызвал (call) и куда потом вернуть (return) control flow используется call stack https://en.wikipedia.org/wiki/Call_stack , который вот совпадение также называют execution stack, program stack, control stack.

Вот тебе исчерпывающий ответ почему так нахуй. Так сложилось исторически. Так перевели эти термины на русский. Разумеется в пхп все не совсем так, или даже совсем не так. Но это уже другая история.
151 2515643
>>515618
>>515604
Тяжко же тебе будет...
152 2515670
>>515604

Мне кажется, проблема в том, что ты просто не понял, что такое функция. Давай начнем с основ.

Значение — это вещь, которую может обрабатывать программа. Например, числа и строки — это значения, и программа может как-то с ними работать, например, складывать числа, или разрезать строки на части. Вот пример кода:

$a = 4;
$b = 'x';

Здесь мы записываем в переменную $a значение 4, а в $b значение 'x' (строку). А вот пример, как можно преобразовать одно значение в другое:

$a = 4;
$b = $a + 1;

Здесь во второй строчке мы берем значение 4, прибавляем к нему 1 и получаем значение 5, которое мы записываем в $b.

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

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

mb_substr("hello", 2);

В данном примере кода мы вызываем функцию mb_substr и передаем в нее два значения: "hello" и 2. Эта функция возвращает строку "llo" (то есть, часть строки hello, начиная со 2-го символа), но мы никуда не сохраняем это значение и оно просто выкидывается.

Вот как мы можем сохранить возвращенное функцией значение в переменную:

$x = mb_substr("hello", 2);

Здесь функция mb_susbtr возвращает строку "llo" и она записывается в переменную $x. То есть, код выше примерно эквивалентен такому коду:

$x = "llo";

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

$x = mb_strlen(mb_substr("hello", 2));

Здесь мы сначала вызвыаем функцию mb_substr, она возвращает значение "llo", и затем мы вызываем функцию mb_strlen, передавая в нее эту строку. Функци mb_strlen вернет значение 3, которое мы запишем в переменную $x.

Если ты пишешь свою функцию, то возвращение значения из функции делается командой return.
152 2515670
>>515604

Мне кажется, проблема в том, что ты просто не понял, что такое функция. Давай начнем с основ.

Значение — это вещь, которую может обрабатывать программа. Например, числа и строки — это значения, и программа может как-то с ними работать, например, складывать числа, или разрезать строки на части. Вот пример кода:

$a = 4;
$b = 'x';

Здесь мы записываем в переменную $a значение 4, а в $b значение 'x' (строку). А вот пример, как можно преобразовать одно значение в другое:

$a = 4;
$b = $a + 1;

Здесь во второй строчке мы берем значение 4, прибавляем к нему 1 и получаем значение 5, которое мы записываем в $b.

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

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

mb_substr("hello", 2);

В данном примере кода мы вызываем функцию mb_substr и передаем в нее два значения: "hello" и 2. Эта функция возвращает строку "llo" (то есть, часть строки hello, начиная со 2-го символа), но мы никуда не сохраняем это значение и оно просто выкидывается.

Вот как мы можем сохранить возвращенное функцией значение в переменную:

$x = mb_substr("hello", 2);

Здесь функция mb_susbtr возвращает строку "llo" и она записывается в переменную $x. То есть, код выше примерно эквивалентен такому коду:

$x = "llo";

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

$x = mb_strlen(mb_substr("hello", 2));

Здесь мы сначала вызвыаем функцию mb_substr, она возвращает значение "llo", и затем мы вызываем функцию mb_strlen, передавая в нее эту строку. Функци mb_strlen вернет значение 3, которое мы запишем в переменную $x.

Если ты пишешь свою функцию, то возвращение значения из функции делается командой return.
153 2515674
>>515618

Давай разберемся с тем, что такое "поток управления" или control flow. Как известно, программа — это последовательность команд (инструкций). Поток управления — это порядок, в котором выполняются команды. PHP по умолчанию выполняет команды сверху вниз строго по очереди:

$a = 2; // команда 1
$b = 3; // команда 2

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

$a = 1; // команда 1
if ($a == 3) { // команда 2
$b = 2; // команда 3
}

В этом примере PHP пропустит команду 3, так как условие в if не выполняется.

С функциями поток управления получается еще более сложный. Рассмотрим пример:

function a() { // команда 1 "создать функцию a"
echo "Yes"; // команда 2
}

$a = 1; // команда 3
a(); // команда 4 "вызвать функцию a"
$b = 2; // команда 5
a(); // команда 6 "вызвать функцию a"

Эта программа выполняется так:

- сначала выполнится команда 1 "создать функцию a" и PHP создаст новую функцию a. При этом команды внутри функции (например, echo) пока не выполняются.
- затем PHP выполняет команду 3
- затем PHP выполняет команду 4. Это команда "вызвать функцию a" и PHP начнет выполнят команды в теле функции a
- затем PHP выполняет команду 2 из функции a
- затем функция заканчивается и PHP возвращается обратно к тому месту, из которого мы вызвали функцию, и продолжает выполнять код
- PHP выполняет команду 5
- затем PHP выполняет команду 6 и снова заходит в функцию a
- он выполняет команду 2
- затем PHP возвращается из функции обратно, но больше команд нет и программа на этом завершается

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

> А что такое вызов?



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

x();
mb_strlen("hello");

> Синоним - просто написать функцию?



Это не синоним, так как "команда выполнить функцию" это не то же самое, что "написать".
153 2515674
>>515618

Давай разберемся с тем, что такое "поток управления" или control flow. Как известно, программа — это последовательность команд (инструкций). Поток управления — это порядок, в котором выполняются команды. PHP по умолчанию выполняет команды сверху вниз строго по очереди:

$a = 2; // команда 1
$b = 3; // команда 2

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

$a = 1; // команда 1
if ($a == 3) { // команда 2
$b = 2; // команда 3
}

В этом примере PHP пропустит команду 3, так как условие в if не выполняется.

С функциями поток управления получается еще более сложный. Рассмотрим пример:

function a() { // команда 1 "создать функцию a"
echo "Yes"; // команда 2
}

$a = 1; // команда 3
a(); // команда 4 "вызвать функцию a"
$b = 2; // команда 5
a(); // команда 6 "вызвать функцию a"

Эта программа выполняется так:

- сначала выполнится команда 1 "создать функцию a" и PHP создаст новую функцию a. При этом команды внутри функции (например, echo) пока не выполняются.
- затем PHP выполняет команду 3
- затем PHP выполняет команду 4. Это команда "вызвать функцию a" и PHP начнет выполнят команды в теле функции a
- затем PHP выполняет команду 2 из функции a
- затем функция заканчивается и PHP возвращается обратно к тому месту, из которого мы вызвали функцию, и продолжает выполнять код
- PHP выполняет команду 5
- затем PHP выполняет команду 6 и снова заходит в функцию a
- он выполняет команду 2
- затем PHP возвращается из функции обратно, но больше команд нет и программа на этом завершается

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

> А что такое вызов?



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

x();
mb_strlen("hello");

> Синоним - просто написать функцию?



Это не синоним, так как "команда выполнить функцию" это не то же самое, что "написать".
pervyj-apparat-po-programme-sfera-i-tri-sputnika-gonec-m-vyveli-na-zadannuju-orbitu.jpg53 Кб, 1000x562
154 2515758
Аноче, хочу работать программистом PHP.
Есть те, кто курсы проходил?
Что скажите про loftschool и htmlacademy? Посоветуйте школу какую-нибудь, именно по пыхе.
155 2515773
>>515758
Если хотите найти чтото новое,а может кого то....хотите почувствовать краски жизни,то Вам сюда.Очень позитивные ребята,новая кровь нашей жизни.....не хочешь отстать от ритма большой индустрии,то ты знаешь теперь куда тебе)))))))
156 2515829
>>515670
Я вроде понял. А вроде нет.
<?php
function skr()
{

$drg = 5 + 5;
return $drg;
}

skr();
И вот почему не выводится цифра 10? Я создал свою функцию. Сделал переменную. И с помощью ретурна вернул ей значение. Почему не работает то ничего?
157 2515833
>>515829
Блин, у вас информатики нет что ли в школе? Сейчас она вроде чуть ли не с 5 класса, там же эти азы объясняют.
В мое время было только 10-11 классы и я точно помню там объяснялись такие базовые концепции.
Если функция возвращает значение, то ты можешь с ним работать дальше, использовать каким-то образом, например $a = sin(90). И дальше его суммировать, умножать и тд.
А если функция просто выводит что-то( там внутри в конце echo вместо return), то будет просто выведено значение и ничего с ним ты сделать не сможешь.
158 2515846
>>515829
сделай print(skr());
159 2515873
>>515833
Так я отучился уже сто лет назад)
то есть я могу создать свою функцию, написать всякие значения. (пока не знаю какие, ну пусть будет умножение)
и просто напишу return и моя функция заработает, потому что мои значения умножения благодаря return заработают?
160 2515881
<?php

function skr()
{

$drg = 5 + 5;
print($drg);
return $drg;
}
skr();

Я написал print($drg);
Мне вывело 10. Вроде бы хорошо. Но потом я убрал return$drg. И ничего не изменилось. Все так же 10 выдает. Как он без возвращения возвращает?
161 2515886
>>515881
вот из-за таких как ты, я и советую вкатышам учить с++
162 2515897
>>515881
Возвращаемое значение, значит для программы дальше оно может использоваться. Выводимое - это чисто для пользователя на экране.
163 2515923
>>515829

Потому что у тебя нет команды вывода (echo). Потому и не выводится. Когда ты пишешь

skr();

то результат функции никак не используется и потому не выводится, а просто выбрасывается. Чтобы он вывелся, надо этот результат вывести с помощью команды echo:

echo skr();

Сам PHP без твоей команды ничего не выводит.
164 2515926
>>515881

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

А вот если ты сделаешь

print(skr());

То тогда будет работать только с return.
165 2515931
>>515829

> Я создал свою функцию.


Верно

> Сделал переменную.


Верно

> И с помощью ретурна вернул ей значение.


Неверно. return возвращает значение из функции. То есть команда

return $drg;

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

То есть return ничего не записывает в твою переменную. Он берет из нее значение и ставит его как "возвращаемое функцией значение". Если бы ты написал

echo skr();

то функция бы вернула 10 и echo бы вывел это значение.
166 2516029
ОП, если найдется время и желание, посмотришь задание про студентов?
https://dropmefiles.com/EalGE
Пароль 123, хостинг сам запаковал по второму разу почему-то, хотя я не указывал ни архивации, ни пароля.
167 2516110
>>515931
а берет он из функции значение или из переменной ?

я вот тут ещё написал. почему столько ошибок то
<?php

function sr($number1, $number2)
{
$number1 = 3;
$number2 = 5;

return (string) $number1 * $number2;
}
print_r(sr($number1, $number2));

function sg()
{
print_r('tek');
return 'tek';
}

print_r(sg() . sr($number1, $number2));
168 2516116
>>516110
Через денек тебе уже просто отвечать не будут, чел. Невозможно таким тугим быть. Да ладно еще тугим - хер с ним. Но сам-то попробуй хоть как-то подумать, почитать что-то.
Хотя, сдается мне, ты просто разводишь местных сеньеров-помидоров.
169 2516124
>>516110

> а берет он из функции значение или из переменной ?


"он" это return?

Команда return используется так:

return выражение;

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

return 5; // возвращает 5
return $x + 1; // возвращает значение переменной $x плюс один (переменная $x при этом не меняется)
return some_func(); // вызывает функцию some_func, и возвращает то, что она вернула
170 2516131
>>516110

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

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

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

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

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

Вот пример областей видимости:

$x = 1;
// здесь видна $x

function test()
{
$y = 1;
// здесь видна $y и не видна $x
echo $y;
}
// здесь видна $x и не видна $y
echo $x;
171 2516133
>>516110

Вот тебе еще в помощь мануал: https://www.php.net/manual/ru/language.variables.scope.php

>>516116

Почему же, я отвечу. Но посоветую также почитать учебник из шапки, где многие вещи объясняются.
172 2516142
Это функция, вырожение. Смотри ты вот вернул зна.. значение вот ты значит вернул. Это икс и он ретурн значит, туда... Обранто значит ретурн он возвращает его.

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

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

Обращайся еще за гайдами, братишка. Нам в пхп такие толковые как ты нужны.
testLimes.jpg220 Кб, 3008x2000
173 2516360
Ребятушки!
Я напилсо и решил написать вам мотивирующий пост.

Работаю РНР-программером за 350КР. Эо на одной работе. Есть ещё вторая.

Помимо РНР, нужные навыки:
SQL, JS, HTML/CSS, Bootstrap/React/Angular, Английский язык UE+, Git, RabbitMQ, Memchache, Smarty, Slim, Twig, Symfony/Laravel.

+ софт скиллс (не быть быдлом).

Это на зарплатку в 350. Дерзайте. Вполне реально, особенно сейчас (когда все программеры свалили).
174 2516366
>>516131
Спасибо за подробное объяснение!
Я до областей видимости ещё не доходил)
,,,
Ещё такой вопрос. <?php

function greeting()
{
print_r('Hello, Hexlet!');
}
Принт р тоже же возвращает значение из этой функции?

Там просто написали - Функции trim() и strtolower() ничего не печатают на экран (в консоль), они возвращают результат своей работы, и поэтому мы можем записать его в переменные. Если бы они вместо этого печатали на экран, мы бы не могли присвоить результат их работы переменной. Как мы не можем сделать с определенной выше функцией greeting()

Так вот. Принт-р печатает на экран. Но результат работы переменной то присваивается ?
175 2516370
>>516360
У меня сложилось иное впечатление, всем похуй на вкатышей по-прежнему, что-то я за этот год тут по-моему только 1 упоминание видел, что на работу кто-то устроился. Все эти 350к вакансии это наносеков переманивать с одного места на другое.
176 2516371
>>516366
Тебе реально надо с самых азов начинать. Что такое переменная и присваивание, например. У тебя в функции нет ни переменных, ни присваивания.
.png97 Кб, 328x328
177 2516375
>>516360
Дрписываю.

>> Есть ещё вторая.


всё по ТК РФ! Ознакомьтесь -- полезно!

>> Помимо РНР, нужные навыки:


Забыл добавить базовые вещи: ООП, SOLID, навыки администрирования Unix/Docker/и может быть, Kubernetses. Туда же Jenkins и прочее CI/CD.

Это поможет вам выйти на базовую зарплатку в 300+ килорублей.

>>516370
Для вкатышей -- да, отдельные условия. Они обязаны учиться по 7+ лет на практике.
Тогда и познают перечисленные технологии.
В остальном, всё что я написал -- верно.
ava2.jpg88 Кб, 612x612
178 2516382
>>516375
Я пошёл спать! :)

А мессадж мой: если будете упорно изучать РНР + разработку ПО в целом, вполне можете иметь зарплатки по 350+.

Удачи вам! Не сдавайтесь! Работы полно! 80% всех сайтов на РНР.

Спокойной ночи!
179 2516386
>>516366
Мож ты рисуешь хорошо или еще чего?
180 2516430
>>516366

> Принт р тоже же возвращает значение из этой функции?



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

Ты можешь сделать функцию, которая и печатает что-то на экран, и возвращает что-то с помощью return.
181 2516569
>>511483 (OP)
Шарящие аноны, помогите
В чем тут избыточность?:
https://pastebin.com/gPYWhZUU
182 2516570
>>511483 (OP)
Шарящие аноны, помогите
В чем тут избыточность?:
https://pastebin.com/gPYWhZUU
183 2516621
>>516569
Это на ждуна надо сделать?
184 2516946
Сколько сейчас лендинг стоит, в среднем?
185 2516957
>>516946
сорян, не туда.
186 2516960
>>516957
все, ты не отмоешься от зашквара пыхи
187 2516966
>>516569
Начни с UML диаграммы. На ней и увидишь где избыточность.
188 2517072
>>516029
залей на гит тогда гляну
189 2517074
коллекции единственная хорошая вещь в ларавеле
190 2517300
>>516029

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

> $order = $sort_list[$sort];



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

Вместо этого надо передавать в функцию тип сортировки и пусть функция Student::getAllStudents сама построит нужный SQL-код. Кстати, типы сортировки можно сделать константами.

> function sort_link($title, $a, $b) {



Названия $a и $b неудачные, так как непонятно, что они обозначают. Также, имена функций принято начинать с глагола (хотя это не стандарт и бывает по-другому), лучше было бы get_sort_link или make_sort_link.

> return '<a class="active" href="?sort=' . $b . '">' . $title . ' <i>▲</i></a>';



Здесь данные подставляются в HTML без экранирования.

> $page = isset(($_GET['page'])) ? html(intval($_GET['page'])) : 1;


> $search = html($_GET['search']);



Вызов html() здесь не нужен. Экранирование надо делать в шаблоне при выводе данных, а не при получении их из $_GET. Потому что при подстановке строки в HTML, в URL, в SQL-запрос используются разные правила экранирования и заранее ты не угадаешь, какой способ надо использовать.

> $s_string = "Показаны только абитуриенты, найденные по запросу \"$search\".";



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

> class Student{


> private $name;


> private $surname;



> if ($page == 1) $offset = 0;



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

> $stmt->execute([$this->name, $this->surname, $this->sex,


> $this->group, $this->place, $this->email,


> $this->byear, $this->points,$this->pass]);


Если список длинный, то его пишут по одному элементу на строчку.

> private $name;


> function __construct($name, $surname, $group,



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

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

> $res = $pdo->query("SELECT pass FROM STUDENTS WHERE email = '$this->email'");


> $string = "SELECT * FROM STUDENTS ORDER BY $order LIMIT $st_per_page OFFSET $offset";



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

> $hash = $res->fetch(PDO::FETCH_NUM);


> $this->pass = $hash[0];



Используй fetchColumn, и он сразу тебе вернет нужное значение, а не массив.

> while($row = $result->fetch(PDO::FETCH_ASSOC)){


>$arr[] = $row;



Используй fetchAll и не изобретай тут велосипед с циклами.

> WHERE `name` LIKE ? OR


> surname LIKE ? OR `group` LIKE ? OR points LIKE ?


> $stmt->execute([$search, $search, $search, $search]);



Здесь можно было использовать именованные плейсхолдеры вроде `name` LIKE :search, чтобы не передавать один параметр 4 раза.

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

> spl_autoload_register(function ($class) {


> else die( $path);



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

> $errorN = $errorSn = $errorSe = $errorGr = $errorM = $errorBy



В такой ситуации не нужно делать 10 однотипных переменных, можно просто сделать массив или объект.

> else {


> $student['email'] = $email;


> $student['name'] = $name;



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

> class ConnectionDB{


> private static $host = 'testdomain'; // Change as necessary



Настройки надо вынести в конфиг, чтобы не надо было править код. Конфиг может быть в разных форматах: JSON, ini, или даже в виде PHP-файла с переменными.

> private static $chrs = 'utf8mb4';


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

Также, у тебя в коде не определена константа PASSWORD_DEFAULT.

> `name` varchar(40),


Для полей, которые обязательны к заполнению, надо указывать NOT NULL

> sex varchar(2),


Здесь надо использовать тип ENUM, иначе можно вставить все, что угодно.

> email varchar(40),


Здесь надо добавить ограничение уникальности, чтобы нельзя было в БД вставить 2 одинаковых email.

> byear integer,


Здесь было бы хорошо добавить ограничение CHECK, которое бы запретило вставлять слишком маленькие или слишком большие значения.

> private static $opts =


> [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,



Надо оформлять так:

private static $opts = [
(4 пробела) PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
(4 пробела) ...
];

> preg_match('/^[A-Яa-яЁё]{1,20}$/ui',


Я бы разрешил в имени еще дефисы и апострофы, так как бывают фамилии вроде Римский-Корсаков или д'Артаньян.

> ('/^(м|ж){1}$/ui', $val);


Пол лучше сделать константами вроде Student::GENDER_MALE = 'm', а еще лучше освоить PHP8 и сделать enum (перечисление). А в БД вставлять m/f. Аналогично для поля местный/приезжий.

> public function validMail($val){


> global $pdo;


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

> if(password_verify($val, $_COOKIE['logged'])) return "";


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

> if($val>0 && $val<300) return "";


> else return "Введите число баллов от 0 до 300";


Но твоя функция не разрешает ввести 0 или 300. Тогда надо писать "до 299". Также, нет проверки, что введено целое число.

Год рождения надо проверять, что он не менее 1880 и не более текущего.

Шаблоны обычно называют index.phtml или index.html.php. Их логично поместить в папку templates или views.

> <? if($s_string) echo $s_string?>


В шаблоне используют версию if с двоеточием, а echo не используют.

> <input type="submit" value="Найти" />


В HTML не пишут слеш в конце одиночного тега. Так делают только в XML.

Заголовок шаблона лучше вынести в отдельный файл, чтобы не копипастить.

> Электронная почта: <input type="text"


Тут надо использовать type="email". На мобильных устройствах это меняет вид клавиатуры для более удобного ввода. Я советую почитать MDN https://developer.mozilla.org/ru/docs/Web/HTML/Element/Input , там перечислено, какие бывают типы полей ввода.

> Пол (м/ж): <input type="text"


Здесь надо использовать радиокнопки.

> Год рождения: <input type="text"


Здесь лучше тип number, опять же. У него можно указать параметры min/max, и он показывают цифровую клавиатуру на моб. устройствах.
190 2517300
>>516029

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

> $order = $sort_list[$sort];



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

Вместо этого надо передавать в функцию тип сортировки и пусть функция Student::getAllStudents сама построит нужный SQL-код. Кстати, типы сортировки можно сделать константами.

> function sort_link($title, $a, $b) {



Названия $a и $b неудачные, так как непонятно, что они обозначают. Также, имена функций принято начинать с глагола (хотя это не стандарт и бывает по-другому), лучше было бы get_sort_link или make_sort_link.

> return '<a class="active" href="?sort=' . $b . '">' . $title . ' <i>▲</i></a>';



Здесь данные подставляются в HTML без экранирования.

> $page = isset(($_GET['page'])) ? html(intval($_GET['page'])) : 1;


> $search = html($_GET['search']);



Вызов html() здесь не нужен. Экранирование надо делать в шаблоне при выводе данных, а не при получении их из $_GET. Потому что при подстановке строки в HTML, в URL, в SQL-запрос используются разные правила экранирования и заранее ты не угадаешь, какой способ надо использовать.

> $s_string = "Показаны только абитуриенты, найденные по запросу \"$search\".";



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

> class Student{


> private $name;


> private $surname;



> if ($page == 1) $offset = 0;



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

> $stmt->execute([$this->name, $this->surname, $this->sex,


> $this->group, $this->place, $this->email,


> $this->byear, $this->points,$this->pass]);


Если список длинный, то его пишут по одному элементу на строчку.

> private $name;


> function __construct($name, $surname, $group,



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

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

> $res = $pdo->query("SELECT pass FROM STUDENTS WHERE email = '$this->email'");


> $string = "SELECT * FROM STUDENTS ORDER BY $order LIMIT $st_per_page OFFSET $offset";



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

> $hash = $res->fetch(PDO::FETCH_NUM);


> $this->pass = $hash[0];



Используй fetchColumn, и он сразу тебе вернет нужное значение, а не массив.

> while($row = $result->fetch(PDO::FETCH_ASSOC)){


>$arr[] = $row;



Используй fetchAll и не изобретай тут велосипед с циклами.

> WHERE `name` LIKE ? OR


> surname LIKE ? OR `group` LIKE ? OR points LIKE ?


> $stmt->execute([$search, $search, $search, $search]);



Здесь можно было использовать именованные плейсхолдеры вроде `name` LIKE :search, чтобы не передавать один параметр 4 раза.

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

> spl_autoload_register(function ($class) {


> else die( $path);



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

> $errorN = $errorSn = $errorSe = $errorGr = $errorM = $errorBy



В такой ситуации не нужно делать 10 однотипных переменных, можно просто сделать массив или объект.

> else {


> $student['email'] = $email;


> $student['name'] = $name;



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

> class ConnectionDB{


> private static $host = 'testdomain'; // Change as necessary



Настройки надо вынести в конфиг, чтобы не надо было править код. Конфиг может быть в разных форматах: JSON, ini, или даже в виде PHP-файла с переменными.

> private static $chrs = 'utf8mb4';


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

Также, у тебя в коде не определена константа PASSWORD_DEFAULT.

> `name` varchar(40),


Для полей, которые обязательны к заполнению, надо указывать NOT NULL

> sex varchar(2),


Здесь надо использовать тип ENUM, иначе можно вставить все, что угодно.

> email varchar(40),


Здесь надо добавить ограничение уникальности, чтобы нельзя было в БД вставить 2 одинаковых email.

> byear integer,


Здесь было бы хорошо добавить ограничение CHECK, которое бы запретило вставлять слишком маленькие или слишком большие значения.

> private static $opts =


> [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,



Надо оформлять так:

private static $opts = [
(4 пробела) PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
(4 пробела) ...
];

> preg_match('/^[A-Яa-яЁё]{1,20}$/ui',


Я бы разрешил в имени еще дефисы и апострофы, так как бывают фамилии вроде Римский-Корсаков или д'Артаньян.

> ('/^(м|ж){1}$/ui', $val);


Пол лучше сделать константами вроде Student::GENDER_MALE = 'm', а еще лучше освоить PHP8 и сделать enum (перечисление). А в БД вставлять m/f. Аналогично для поля местный/приезжий.

> public function validMail($val){


> global $pdo;


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

> if(password_verify($val, $_COOKIE['logged'])) return "";


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

> if($val>0 && $val<300) return "";


> else return "Введите число баллов от 0 до 300";


Но твоя функция не разрешает ввести 0 или 300. Тогда надо писать "до 299". Также, нет проверки, что введено целое число.

Год рождения надо проверять, что он не менее 1880 и не более текущего.

Шаблоны обычно называют index.phtml или index.html.php. Их логично поместить в папку templates или views.

> <? if($s_string) echo $s_string?>


В шаблоне используют версию if с двоеточием, а echo не используют.

> <input type="submit" value="Найти" />


В HTML не пишут слеш в конце одиночного тега. Так делают только в XML.

Заголовок шаблона лучше вынести в отдельный файл, чтобы не копипастить.

> Электронная почта: <input type="text"


Тут надо использовать type="email". На мобильных устройствах это меняет вид клавиатуры для более удобного ввода. Я советую почитать MDN https://developer.mozilla.org/ru/docs/Web/HTML/Element/Input , там перечислено, какие бывают типы полей ввода.

> Пол (м/ж): <input type="text"


Здесь надо использовать радиокнопки.

> Год рождения: <input type="text"


Здесь лучше тип number, опять же. У него можно указать параметры min/max, и он показывают цифровую клавиатуру на моб. устройствах.
191 2517301
>>516029

И еще. Ты используешь <br> в HTML. Этот тег предназначен для переноса строк в тексте. Если ты хочешь просто поместить один блок над другим, то просто оберни их в div.
192 2517370
Аноны, вам не кажется, что с образованием что-то не так? Почему работодатели на вакансию клепателя форм требуют высшее образование? Ну бред же.

На мой взгляд, для рядового программиста не требуется высшее образование. Он должен получить среднее профессиональное образование, например, в колледже или техникуме, где его обучат компьютерной грамотности, алгоритмам, ООП, паре языков вроде Питон/Java, ассемблеру, HTML, типографике, сетям, основам юзабилити, SQL. Года 3 для этого хватит. Мне кажется, этого достаточно, чтобы стать веб-разработчиком.

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

А высшие учебные заведения должны заниматься больше computer science. Их выпускники не должны писать микросервисы для перекладывания JSON из сокета в базу (разве что на 1-м курсе в рамках изучения основ). Они должны разрабатывать новые языки программирования, проектировать интегральные схемы, методы оптимизации, делать сложные вычисления, новые архитектуры нейросетей, может быть архитектурой распределенных высоконагруженных систем заниматься и т.д. В общем, делать то, что ближе к науке.

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

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

Даже в ИТМО преподают историю, физкультуру, ОБЖ и философию. Зачем за это платить? А если взять какие-то менее известные университеты, то там все еще печальнее.
192 2517370
Аноны, вам не кажется, что с образованием что-то не так? Почему работодатели на вакансию клепателя форм требуют высшее образование? Ну бред же.

На мой взгляд, для рядового программиста не требуется высшее образование. Он должен получить среднее профессиональное образование, например, в колледже или техникуме, где его обучат компьютерной грамотности, алгоритмам, ООП, паре языков вроде Питон/Java, ассемблеру, HTML, типографике, сетям, основам юзабилити, SQL. Года 3 для этого хватит. Мне кажется, этого достаточно, чтобы стать веб-разработчиком.

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

А высшие учебные заведения должны заниматься больше computer science. Их выпускники не должны писать микросервисы для перекладывания JSON из сокета в базу (разве что на 1-м курсе в рамках изучения основ). Они должны разрабатывать новые языки программирования, проектировать интегральные схемы, методы оптимизации, делать сложные вычисления, новые архитектуры нейросетей, может быть архитектурой распределенных высоконагруженных систем заниматься и т.д. В общем, делать то, что ближе к науке.

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

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

Даже в ИТМО преподают историю, физкультуру, ОБЖ и философию. Зачем за это платить? А если взять какие-то менее известные университеты, то там все еще печальнее.
193 2517373
Вот сейчас погуглил: в России 31% людей имеет ВО (в СССР было 11%). Наука и бизнес просто семимильными шагами должны двигаться с таким количеством высококвалифицированных кадров.
194 2517399
Знаете почему у "обучающихся" по "учебнику" ОП-хуя появляются вопросы, которые они сюда задают? Потому что он ебанат.
195 2517453
>>517300
>>517301
Спасибо большое, вот уж терпение все расписывать. Я в принципе все замечания/ошибки понял, кроме

>не определена константа PASSWORD_DEFAULT


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

>:search


Насколько я понял без эмулирования подготовленных выражений в pdo не получится без повторения аргументов, может я ошибаюсь. Я использую open server с mysql.
196 2517456
>>517399
Учебник как учебник. Не хуже 9 из 10 курсов в интернете.
197 2517458
>>517370
Че, зря мамку то не послушал в свое время, ага?
198 2517459
>>517399
Дело не в учебнике, очевидно.
Появляются вопросы потому что он на них отвечает, причем развернуто. К тем, кто просто посылает нахуй, вопросов быть не может.
199 2517461
>>517459

>Появляются вопросы потому что он на них отвечает


Вот это логика у анальника. Мб еще солнце светит потому что кто-то хочет?
200 2517488
>>517453

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

Токен доступа надежнее всего генерировать случайно.
201 2517493
>>517453

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



Да, верно, mysql поддерживает только знак вопроса (мануал https://dev.mysql.com/doc/c-api/5.7/en/mysql-stmt-prepare.html ), но ты можешь включить эмуляцию подготовленных запросов.
202 2517498
>>517453

Что касается стиля кода, посмотри PSR и как код оформляется в Симфони и стремись к такому же стилю: https://github.com/symfony/form/blob/6.1/Form.php
203 2517500
>>517453

Конечно, в хеше еще есть случайная соль, но лучше не полагаться на это, а сгенерировать полностью случайный неподбираемый токен.
204 2517537
ебать куда ссылка на старые треды ведет
205 2517544
>>517537

Поправим в следующем треде.
206 2517633
Как достать PHPSTORM?
1. Сколько стоит легально? Работает для РФ?
2. Если с торрента спиздить, какой шанс что там вирус от васяна?
207 2517657
Анонасы, я тут в учебнике застрял на задаче про кредитный калькулятор. Вопрос - как прогнать цикл на первый месяц, добавить проценты и комиссию? Никак не могу вдуплить.
ideone.com/Hk4KeI
208 2517730
>>517633
читал прохладную что чел такой вкатился в конторку, поставил на рабочий бук ломаную версию, кодил себе, опыт набивал, а через полгода фирмЕ претензия за использование без покупки - ломаная версия стучала регулярно на серв.
209 2517953
>>517730
Стучит как-то раз ломаная версия на серв:
- Кто там?
- Я из фирмы.
- А вы точно сотрудник фирмы?
- Бля буду.
- Ну все, тогда шлем претензию.
- А по какому адресу?
- 127.0.0.1
Этим сервером был Альберт Эйнштейн.
210 2517989
>>517730
Путин же вроде разрешил их нахуй слать со своими лицензиями, разве нет? И теперь можно хуи класть на всю эту хуйню ибо у них даже офиса теперь тут нет
211 2519232
Что обычно спрашивают на собеседованиях по битриксу?
212 2519338
народ только не смейтесь, подскажите каких гайдов по вордпресу, мне тут доверили сайт одной гос конторы, и страничка сайта просто пиздец, хотел было просто хтмл\ксс отредактировать, а там еще пхп скрипты говно в вёрстку заливают, сложна, нипанию
213 2520357
>>519232
2 + 2, Сколько месяцев в году? Я хз, что можно спросить у битриксоида о погремированнии, чтобы он не обосрался.
214 2520385
>>520357
По делу есть что пиздануть, остряк хуев?
Мне нужно скопить бабок на съебатрон, на битриксе платят больше, чем на дно работе
215 2520449
>>520385
Ну сам факт того что ты спрашиваешь не "что мне читать шоб знать битрикс", а "че пиздануть на собесе", как бы все объясняет.
Мне про битрикс хватило инфы о том что там функция получения даты лезла в базу. Проверил - лезла. На этом знакомство окончилось.
216 2520565
>>520449

>На этом знакомство окончилось.


Такой пласт возможностей упустил...
217 2520962
>>520449

>функция получения даты лезла в базу


зачем? мне теперь реально интересно. Битриксобояре, объясните.
218 2521118
>>520962
https://www.govnokod.ru/14143
CharToDateFunction вроде отрефакторили
А вот CompareDates десять лет разменяла http://bxapi.ru/src/?id=175199
219 2521295
>>519232

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

- язык PHP
- MySQL
- верстка: HTML/CSS/JS
- основные настройки битрикса
- основные модули битрикса
- вопросы по документации битрикса

Попробуй погуглить "вопросы собеседование битрикс".
220 2521755
>>511483 (OP)
Ебало свое представили, говнобекендеры?
Когда вы все на нормальный стек перейдете уже.

Мимо веб Ангуляр господин.
221 2521757
>>521295
Спасибо, анон. Это всё понятно конечно, уже гуглил, прохожу сейчас курс от самого битрикса, пока junior дев., душная параша.
Можно как-то доджить собеседования в зуме или это сейчас золотой стандарт на удалёнку?

Резюме конечно я такое сделал, что хрюши кипятком ссут. Но проходить собеседования в зуме я очкую, т.к. по сути нихуя о битриксе не знаю.
222 2521767
>>519232
>>520357
Двачаю, мне дали тестовое сделать что-то типа метода config в ларавеле, я эту хуйню наклепал за 10 минут и кинул ссылку на гитхаб, позвали на собес и спросили 3,5 нубских вопроса по пхп, тимлид сказал у меня всё, попиздели с директором за кофем минут 10-15 и как бы всё. Туда всех подряд с улицы берут похоже. Я потом съебал в руби через полгода обогнав в развитии большинство коллег, потому что не переставал учится.

>>521757

>прохожу сейчас курс от самого битрикса, пока junior дев., душная параша.


Нахуй ты с этим говном колупаешься? Возьми лучше ларавель тот же не пожалеешь
223 2521768
>>520449

> функция получения даты лезла в базу. Проверил - лезла


Лол реально?
Я там ковырял кишочки тоже, такое адовое говнище, особенно инфоблоки лютый пиздец в базе творят. А кэширование это отдельная песня
224 2521771
>>521118
Бля, реально))) Сука какие же там долбоебы разрабатывают этот продукт
image.png512 Кб, 992x649
sage 225 2521841
>>521768>>520449
>>520357
Что вам мешает сделать лучше? Давайте на четверых сообразим! Добьем хотя бы до 400 лямов - как раз каждому по сотке поделим.
226 2522054
>>521841
Я каждый день делаю лучше, и мне за это отлично платят.
227 2522171
>>521841

>Что вам мешает сделать лучше?


Ничего не мешает, пишу код в разы лучше и в разы производительнее.
Вон сейчас сижу работаю, гоняю базу с прода у себя на компе таблица 4,5 млн. архив 2 гига, поллчаса поднималась через pg_dump. У меня на ноуте фильтр по 4 текстовым столбцам отрабатывает за 200 мс, обычный постгрес, не слишком шустрый ноут, смогут ли битриксовые инфоблоки с хуйлоад блоками такое сделать большой вопрос. А я ничего не делал сверхъестественного обычная таблица и просто пару индексов добавил, такое сделает любой кто по-диагонали прочитал документацию постгреса, но это уже работает лучше чем у них, а они с 2007 года разрабатывают и могли бы уже давно переделать работу с БД, я просто видел как эти ебучие инфоблоки устроены это сущий пиздец.
Про остальное и говорить не стоит.

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

>под видом,


под видом конфетки
быстрофикс
229 2522367
>>521755

> веб Ангуляр


Angular это когда на сайте 2 мегабайта яваскрипта и там кружок крутится 15 секунд прежде чем увидишь контент? Если так, то разработчикам на Angular есть чему поучиться у PHP-разработчиков, у которых сайты грузятся без всяких кружков.

Сам я кстати для своих поделок использовал Preact. Он весит по моему в районе 10-20 Кб до сжатия.
230 2522369
>>521841
Проблема битрикса не в том, чтобы сделать лучше, а в том, что бизнес-модель такая. Они все бабки на маркетинг вкачивают при полном похуе на сам код и его качество. В результате кабанчики ведутся только так, а вот от программистов получают под зад с таким подходом. Никому не хочется в помоях лазать. Безперспективняк и проффессиональный тупик.
231 2522372
>>522171

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

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

Аналогично, HTML тоже должен стать деталью реализации, его не надо писать руками, а дизайнер должен его получать из макета автоматически.

Но, как я понимаю, из постов в этом треде, в итоге с Битриксом все же обычный контент-менеджер не справляется.
232 2522375
>>522372
Форму записи и каталог обычный бесплатный вордпресс с плагинами умеет. Битрикс это развод за те деньги, что они просят.
К тому же бизнесу всегда нужно больше - сегодня ему формочку, а завтра црмку интегрируй. Послезавтра телеграм бота напиши.
233 2522376
>>522369

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

Есть рынок заказной разработки, а если рынок типовых проектов. Где не нужна дорогая разработка с нуля на фреймворках, а нужно быстро накликать мышкой что-то красивое и работающее. Как-то, узнав, что я программист, у меня спросили, сколько стоит сделать сайт, а потом сказали "а нам вот за 3000 сделали". Есть и такой рынок. Битрикс это конечно не сайты за 3 000, но сайты за 100-200 000 на нем реально делать.

Наверно можно было бы сделать хорошую систему для таких случаев, но что-то 300-к-в-месяц программисты воротят нос от этого рынка.
234 2522378
>>522375

Честно говоря, у меня вызывает сомнения, что движок для блогов может работать с каталогом товаров. Это как минимум странно.
235 2522381
>>522376
В айти бизнес всегда глупый. Это аксиома.
Если он не сам айти занимается конечно.
Никакой программист не выберет битрикс для своего кабанчика, а вот сами кабанчики, наслушавшись песен их маркетологов, выбирают. Потом матерятся почти всегда.
236 2522384
>>522378
Если у тебя там не сотни тысяч товаров, то ничего не будет.
237 2522386
>>522381

Если он такой глупый, почему у него есть деньги чтобы платить тебе зряплату?
238 2522388
>>522386
Есть такая аксиома: кроилово ведет к попадалову.
В том-то и дело что кабанчик считает что денег на зарплату мне у него нет. Он думает что покупка CMS это разовая трата. А думает он так потому что ему эту идею ПРОДАЛИ. Есть бесплатные варианты, есть менее говенные чем битрикс за ту же цену, но эти варианты никому не впаривают сотни манагеров на зарплате.
Короче: лохам впаривают то что они хотят услышать, это и называется сетевой маркетинг.
239 2522397
>>522372

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


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

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


Потому что это говно ебаное, допустим надо ты контент-менеджер, включил эрмитажтм тебе немного текст на странице поправить или добавить ссылочку в меню или в компоненте на страничке надо сделать пару настроек, казалось бы нетривиальная задача и ничего не предвещает беды. Но эта хуйня работает на php файлах и в момент правки берет код, парсит и сохраняет новый код, очень часто эта залупа при этой операции ломает дохуя всего потому что не всегда ей удается правильно распарсить содержимое. А еще контент менеджер может записать любой html и php код со всеми вытекающими, у меня был такой случай когда контент менеджер при добавлении html кода ошиблась и не закрыла тег, вся верстка пошла по пизде в том числе этот эрмитажтм и в конечном итоге мне пришлось лезть через админку и править файл.
240 2522421
>>522376

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



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

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


Да, % процент в зависимости от золотистости пратнера, но цену на сам битрикс сбивать нельзя все должны продавать по одинаковой цене. Купить лицензию можно https://www.1c-bitrix.ru/buy/products/cms.php но ТП при любых вопросах будет посылать нахуй к интеграторам-наебаторам.

>>522376

>Есть рынок заказной разработки, а если рынок типовых проектов. Где не нужна дорогая разработка с нуля на фреймворках, а нужно быстро накликать мышкой что-то красивое и работающее. Как-то, узнав, что я программист, у меня спросили, сколько стоит сделать сайт, а потом сказали "а нам вот за 3000 сделали". Есть и такой рынок. Битрикс это конечно не сайты за 3 000, но сайты за 100-200 000 на нем реально делать.


Есть и я знаю конторы которые делают тоже самое что и битриксодела на ларавеле, у них есть своя наработка такая полу CMS и своя админка как в джанге, они быстро эту хуйню делают под заказчика и у них уже написаны и магазины и интеграция с 1С и прочая хуйня. За сотку вполне рабочий магазин делают. Просто у битрикса сильны маркетологи и плюс 1С есть в названии, который практически у всех заказчиков, а еще все эти партнеры просто обвешены сертификатами и золотыми ярлычками от битрикса, в то время как у других этого всего нет. Возможно первоначально ценник будет ниже все таки ЦМС как никак, но зато в долгосрочной перспективе когда из-за меняющиеся бизнес требований нужно постоянно что-то дорабатывать битрикс будет в разы дороже, плюс со временем будет появляться много проблем в ходе эксплуатации особенно когда наберется большая БД и много файлов. И несколько наших заказчиков плевались от этого говна, но продолжали поддерживать, рагутся с ПМами и платить, а один таки ушел в другую контору через 3 месяца после релиза, я как раз тогда только устроился на митингах все хвастались этим проектом лол где ему все сделали на node.js, ПМ бывший бармен который с ним занимался сказал что тот типа рад в ладоши хлопает и у него все летает, потом разорялся хули ему на битриксе не сиделось мы же ему все нормально сделали столько времени потратили на его проект
240 2522421
>>522376

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



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

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


Да, % процент в зависимости от золотистости пратнера, но цену на сам битрикс сбивать нельзя все должны продавать по одинаковой цене. Купить лицензию можно https://www.1c-bitrix.ru/buy/products/cms.php но ТП при любых вопросах будет посылать нахуй к интеграторам-наебаторам.

>>522376

>Есть рынок заказной разработки, а если рынок типовых проектов. Где не нужна дорогая разработка с нуля на фреймворках, а нужно быстро накликать мышкой что-то красивое и работающее. Как-то, узнав, что я программист, у меня спросили, сколько стоит сделать сайт, а потом сказали "а нам вот за 3000 сделали". Есть и такой рынок. Битрикс это конечно не сайты за 3 000, но сайты за 100-200 000 на нем реально делать.


Есть и я знаю конторы которые делают тоже самое что и битриксодела на ларавеле, у них есть своя наработка такая полу CMS и своя админка как в джанге, они быстро эту хуйню делают под заказчика и у них уже написаны и магазины и интеграция с 1С и прочая хуйня. За сотку вполне рабочий магазин делают. Просто у битрикса сильны маркетологи и плюс 1С есть в названии, который практически у всех заказчиков, а еще все эти партнеры просто обвешены сертификатами и золотыми ярлычками от битрикса, в то время как у других этого всего нет. Возможно первоначально ценник будет ниже все таки ЦМС как никак, но зато в долгосрочной перспективе когда из-за меняющиеся бизнес требований нужно постоянно что-то дорабатывать битрикс будет в разы дороже, плюс со временем будет появляться много проблем в ходе эксплуатации особенно когда наберется большая БД и много файлов. И несколько наших заказчиков плевались от этого говна, но продолжали поддерживать, рагутся с ПМами и платить, а один таки ушел в другую контору через 3 месяца после релиза, я как раз тогда только устроился на митингах все хвастались этим проектом лол где ему все сделали на node.js, ПМ бывший бармен который с ним занимался сказал что тот типа рад в ладоши хлопает и у него все летает, потом разорялся хули ему на битриксе не сиделось мы же ему все нормально сделали столько времени потратили на его проект
241 2522441
>>522367
как попробуешь в большом проекте своми бекендовскими ручками потеребить что-либо на своем рякте, тогда и поговорим.
242 2522447
>>521755

>Мимо веб Ангуляр господин.


чзх js макака узнала о ieee-754?
image.png9 Кб, 1013x148
243 2522452
244 2522476
>>522452
что за песочница?
245 2522518
>>522388

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

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

Другой вариант - бизнес может поручить выбор внутреннему IT-специалисту. Опять же вопрос, что он выберет?
246 2522519
>>522388

>это и называется сетевой маркетинг


Нет, малыш, сетевой маркетинг - это способ дистрибьюции "пользуюсь-и-продаю", когда рядовые пользователи продукции сочетают в себе и покупателей и перепродавцов и рекламных агентов.
Впаривание цмс - это просто маркетинг.
247 2522521
>>522441

Это не реакт, а преакт.

Говоря о больших проектах, ты умеешь делать большие проекты без мегабайтов яваскрипта?
248 2522522
249 2522524
>>522386

>Если он такой глупый, почему у него есть деньги чтобы платить тебе зряплату?


Кредит взял
image.png638 Кб, 750x750
250 2522526
>>522447

>js макака узнала

251 2522529
>>522521

>Это не реакт, а преакт.


Что-то на уровне жиквери.

>Говоря о больших проектах, ты умеешь делать большие проекты без мегабайтов яваскрипта?


Конечно можно. Можно большой проект и на жиквери с пхп сделать.

Но зачем руки в говне морать когда можно спокойно на Ангуляре сделать и улюлюкая от скорости выполнения всей аппы.
Ах да, точно, там же секунда-две сайт загружается в начале.
252 2522530
>>522367

> 2 мегабайта яваскрипта и там кружок крутится 15 секунд прежде чем увидишь контент


эти бляди страшно гордятся тем, что клиент видит не пустое окошко, а анимацию
253 2522601
>>517370
Всё по факту сказал. Но во всех местах где я был - вышку не спрашивали. В нормальном и не спросят- российскими дипломами тем более только жопу подтирать.
254 2522605
>>522054>>522171

Ну битрикс за 15 лет заработал 135 лямов. Бизнес хрюкает и довольно урчит
Примерно тысяч 650 долларов в месяц, лень открывать калькулятор.
А тебе миллион видимо?
>>522369
Само себя разрабатывает и поддерживает, что ты будешь делать.

>никому в помоях


Так и скажи что не можешь в чужой код и комплексные архитектуры и привык хуярить мвп в смузи стартапах. С другой стороны дальше таска в тырпрайзе не видеть это тоже сорта говна, чсвсить просто не надо да.
255 2522609
>>522388
Конструкторы это в принципе лучшее что случалось с вебом.
Вообще конечно проигрываю с ресентимента макак против бояр-бизнесменов.
256 2522628
>>522605
Рыжиков в треде? Или очередной золотой партнер?

Я как раз таки и смог в чужой код и поглядел на то говно у вас там под капотом, архитектуры там нет, точнее есть подобие модулей и компонентов, но все они очень сильно переплетены друг с другом и есть копипаст одного и того же кода повсеместно, это все помножено на мешанину из дремучего легаси с глобальными переменными, старого ООП и нового D7 и ни одно из них не сделано от и до.
Как раз таки это говно от и до написано в стиле дальше своего таска в этом "тырпрайзе" нихуя не вижу.
257 2522629
>>522605
Бля так и представляю как к тебе приходит сантехник, меняет все трубы на ржавые, а на твой вопрос че за хуйню он делает отвечает: зато наша контора пидарасов заработала в этом году сто лямов.
И ты такой: бля, респектую бро, вот тебе вдвое больше бабла, это наш стиль, приходи почаще. А трубы? Да хуй с ними, занести бабла конторе пидарасов не жалко.
258 2522632
>>522609
Конструктор это тильда и ему подобные, а битрикс это говно которому требуется не просто php разработчик, а специальный выращенный для этого говна. Не получится взять так и самому накликать мышкой и чтобы оно заработало кроме демо примеров и то в одном из них шрифты мелкие пиздец, там каждую хуйню нужно дорабатывать напильником
259 2522635
>>522629
Скорее не ржавые, внешне выглядит заебись и ты с этим живешь, где-то через год начинается. То кран потечет, то унитаз будет постоянно засорятся. Если задеть соединения труб, то обязательно порвет. Если в унитаз насрать больше чем обычно, то он перестанет смывать. А чтобы заменить лейку в душе нужно менять смеситель и кусок трубы. И за это все хостинг арендодатель будет с вас брать больший тариф процентов на 30
Зато по ляму в месяц зарабатывают и золотые партнеры кормятся
260 2522880
Анончики, раз никто не спрашивает, как решить задачки, расскажу про новый тренд - overemployment. Суть в том, что человек по удаленке устраивается сразу на несколько работ на полный день и получает зряплату в каждой компании.

Люди хвастаются в сети, как они зарабатывают по $400 000/год на 2 работах и 1 млн/год на семи.
261 2522897
>>522880
Я думал там сроки жесткие и на одной работе люди еле успевают. Или с опытом быстрее все получается?
262 2522927
>>522880
Вот сейчас компании и тащут всех в стойло офис. Ибо хотят лояльность сотрудников.
263 2523079
Всем привет! Интересно ваше мнение. Не так много вакансий сейчас на фронта. Увидел больше на web-разработчика. Имеет смысл учить php и MySQL после js, html, css? Возможно не много подучить WordPress. Повышается ли шанс вкатиться в айти в таком случаи или нет? Или все таки имеет смысл до конца долбить js и React?
264 2523090
>>522880
Я от одной работки как выжатый лимон, а тут сразу две галера?!
Хозяин, прошу, не надо!(
gntsjx7wAHOfrMwryoRZ--1--9q77y.jpg39 Кб, 512x512
265 2523248
>>522880
Да это мемчик. Не успеешь ты в двух местах нормально работать. Вот и выгоняют щас всех (см на кризис в США-шке).

Но! По ТК РФ ты имеешь право честно работать на 1.5 ставки. Поэтому можно официально подрабатывать на полставки -- но и это бьёт по ворк-лайф балансу.
266 2523390
Нормально ли съебать с работки и месяц пинать хуи, ловя постоянную мысль, что вот щас то как начну искать работку!

Что-то выгорел на прошлое. месяц без выходных, вот теперь сижу и фантазирую как сделаю свой йоба пет со всем нажитом опытом и как вкачусь на 150к!
image.png22 Кб, 957x130
267 2523391
>>521755
Жс дебил не знает как представлены дробные числа в памяти, и даже не удосужился проверить как тоже самое в его загоне работает
268 2523416
>>523391
от версии к версии побегай, пхпдаун.
у нас такого нету.
269 2523448
>>523416
Какая нахуй версия? Проблема в том как дробные числа хранятся в памяти, при чем тут версия? Тебя уже обоссали выше, но ты так нихуя и не прочел, вот результат у меня в консоли браузера, и на ts 4.8.4(latest)
image.png4 Кб, 173x54
270 2523450
>>523448
результат пик1
271 2523457
>>511483 (OP)
Хочу написать вебсокет-сервер, используя функцию stream_socket_server в бесконечном цикле. Какие подводные? Утечка памяти? Насколько это вообще практично?
272 2523459
>>523448
Проблема даже не в том как оно храниться, десятичные числа можно хранить в памяти со сколько угодной точностью. Проблема в том что у цп внутри есть мат сопроцессор который умеет быстро переваривать числа в формате ieee754. Его регистры заточены под хранение 754 - не байтом больше. Всякие децималы поддерживаются стандартными библиотеками разных языков но считаются очень медленно посравнению с ieee754.

мимо слесарь
273 2523499
>>516430
Не совсем понял.
Вот есть функция mt_rand();
Там нет команды return. Но она возвращает случайное значение.
Только для этого её надо в переменную сохранить?
Я вот ещё не понял. Я прочитал, что любая функция возвращает значение.
(С Хекслета - В этом смысле функции идентичны операциям — они всегда возвращают результат своей работы.)

$rk = 'xt';
$dd = $rk . print_r(34);
print_r($dd);
Я думал, что будет xt34.
А получилось 34xt1.
Почему 34 вылезло вперед и откуда вообще 1.

$sk = print_r();
var_dump($sk);
Почему мне не выводит значение этой переменной null ?
274 2523502
>>522897

Как я понял, они на 2 работах не 80 часов работают, а 40-50-60 и каждому работодателю говорят, что он у них единственный. Это работает там, где нет строгого контроля за сотрудниками.

>>523090

Это значит, что у тебя мало энергии и ты можешь проиграть конкуренцию людям, у которых много энергии.
275 2523514
>>523499

> Вот есть функция mt_rand();


> Там нет команды return



Функции бывают пользовательские и встроенные. Встроенные — это те, что уже включены в PHP и ты можешь сразу их использовать. А пользовательские — это те, которые ты написал сам.

mt_rand это встроенная в PHP функция (к тому же, она написана не на PHP, а на Си). И в ее исходном коде, естественно, есть return. Почему ты решил, что его там нету?

> Только для этого её надо в переменную сохранить?


В переменную мы сохраняем не функцию, а значение, которое она вернет. В данном случае, число:

$x = mt_rand();

> Я вот ещё не понял. Я прочитал, что любая функция возвращает значение.


> (С Хекслета - В этом смысле функции идентичны операциям — они всегда возвращают результат своей работы.)



Да, это верно. Даже если ты не поставишь return, функция вернет специальное значение null, которое обозначает отсутствие значения. То есть

function x() {}
$a = x();

Здесь в $a запишется null. Обрати внимание, что это именно значение null, а не строка "null". Поэтому можно сказать, что любая функция возвращает какое-то значение.

> и откуда вообще 1.



Потому, что функция print_r возвращает булево значение true ( смотри мануал https://www.php.net/manual/ru/function.print-r.php ):

> ... В противном случае возвращаемое значение будет равно true ...



Обрати внимание, что это именно булево значение true, а не строка из 4 букв "true". Также обрати внимание, что "выводит на экран" и "возвращает" это разные вещи. Функция print_r выводит на экран одно значение, а возвращает другое. Здесь она выводит 34, а возвращает true.

Когда ты пытаешься склеить строку 'xt' и значение true, true превращается в единицу и получается xt1. Это преобразование описано в мануале тут: https://www.php.net/manual/ru/language.types.string.php#language.types.string.casting

> ... Значение bool true преобразуется в строку "1" ...



> Почему 34 вылезло вперед



Давай разберем построчно код.

$rk = 'xt';

Записать в переменную $rk строку "xt"

$dd = $rk . print_r(34);

Здесь мы вызываем функцию print_r, которая выводит число 34, и возвращает true. При склеивании "xt" и true получается "xt1" и эту строку мы записываем в $dd

print_r($dd);

Выводим строку, хранящуюся в $dd, то есть "xt1".

> $sk = print_r();


> var_dump($sk);


> Почему мне не выводит значение этой переменной null ?



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

PHP Warning: print_r() expects at least 1 parameter, 0 given in /home/runner/9wx7sl1vsy/main.php on line 3
bool(false)

Это переводится так: в функцию print_r обязательно надо что-то передать, а ты ничего не передал. У тебя не показываются ошибки? Тогда напиши мне, какая у тебя ОС, как ты устанавливал PHP (скачал сам PHP или какую-то сборку вроде Wamp) и как ты запускаешь код (в консоли, в браузере), и я напишу, как включить показ ошибок.
275 2523514
>>523499

> Вот есть функция mt_rand();


> Там нет команды return



Функции бывают пользовательские и встроенные. Встроенные — это те, что уже включены в PHP и ты можешь сразу их использовать. А пользовательские — это те, которые ты написал сам.

mt_rand это встроенная в PHP функция (к тому же, она написана не на PHP, а на Си). И в ее исходном коде, естественно, есть return. Почему ты решил, что его там нету?

> Только для этого её надо в переменную сохранить?


В переменную мы сохраняем не функцию, а значение, которое она вернет. В данном случае, число:

$x = mt_rand();

> Я вот ещё не понял. Я прочитал, что любая функция возвращает значение.


> (С Хекслета - В этом смысле функции идентичны операциям — они всегда возвращают результат своей работы.)



Да, это верно. Даже если ты не поставишь return, функция вернет специальное значение null, которое обозначает отсутствие значения. То есть

function x() {}
$a = x();

Здесь в $a запишется null. Обрати внимание, что это именно значение null, а не строка "null". Поэтому можно сказать, что любая функция возвращает какое-то значение.

> и откуда вообще 1.



Потому, что функция print_r возвращает булево значение true ( смотри мануал https://www.php.net/manual/ru/function.print-r.php ):

> ... В противном случае возвращаемое значение будет равно true ...



Обрати внимание, что это именно булево значение true, а не строка из 4 букв "true". Также обрати внимание, что "выводит на экран" и "возвращает" это разные вещи. Функция print_r выводит на экран одно значение, а возвращает другое. Здесь она выводит 34, а возвращает true.

Когда ты пытаешься склеить строку 'xt' и значение true, true превращается в единицу и получается xt1. Это преобразование описано в мануале тут: https://www.php.net/manual/ru/language.types.string.php#language.types.string.casting

> ... Значение bool true преобразуется в строку "1" ...



> Почему 34 вылезло вперед



Давай разберем построчно код.

$rk = 'xt';

Записать в переменную $rk строку "xt"

$dd = $rk . print_r(34);

Здесь мы вызываем функцию print_r, которая выводит число 34, и возвращает true. При склеивании "xt" и true получается "xt1" и эту строку мы записываем в $dd

print_r($dd);

Выводим строку, хранящуюся в $dd, то есть "xt1".

> $sk = print_r();


> var_dump($sk);


> Почему мне не выводит значение этой переменной null ?



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

PHP Warning: print_r() expects at least 1 parameter, 0 given in /home/runner/9wx7sl1vsy/main.php on line 3
bool(false)

Это переводится так: в функцию print_r обязательно надо что-то передать, а ты ничего не передал. У тебя не показываются ошибки? Тогда напиши мне, какая у тебя ОС, как ты устанавливал PHP (скачал сам PHP или какую-то сборку вроде Wamp) и как ты запускаешь код (в консоли, в браузере), и я напишу, как включить показ ошибок.
276 2523587
>>522476
первая попавшаяся по запросу "php online interpreter" w3schools вроде
277 2525407
>>520385

>По делу есть что пиздануть


А что я написал не по делу? Спросят два - три говновопроса на уровне тех, что я написал выше на которые ответит любой ждун и пригласят на вакансию.

>>521841

>Что вам мешает сделать лучше?


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

>Давайте на четверых сообразим!


Соображай. Платить мне кто будет? А бабки вливать в рекламу? Есть пару десятков лямов? Вливай и поехали.
А сказки про поделим оставь для дэбилов готовых работать за еду на проекте в который никто не собирается вливать денешки, а следственно мёртвом.
278 2525449
>>525407

> нужно влить тонны бабла


> Сделать то продукт можно легко



Ты же сам себе противоречишь. Если сделать легко, то "тонны бабла" не нужны.
279 2525621
>>525449
Етить ты дурачок...
мимо
280 2526090
ку, кароч хочу пыху изучить (снова) но чета хейтеры пыхи (видимо завидуют?) прям не хотят этого, че скажете ребята, пыха ещё норм? ну сайтов куча на нем да и в вакансиях по моей специальности его требуют, кароч хейтеры чет ваще офигели, вот думаю учить пыху или мб путон, но пыху я уже учил, он изичный, просто я ленивый и бросил это дело, ещё знаю JS (тоже учил 5 раз и бросал) вот так кароч
281 2526094
Добрый вечер, вопрос такой: можно ли вывести данные из базы данных в автоматически создаваемые для каждой записи карточки, например из bootstrap?
282 2526129
>>526094
Разрешаю.
283 2526244
>>523514
Понял. Спасибо!

$text = "skr";
$rk = $text[0];
$rt = $text [-1];
print_r($rk);
А зачем нужны квадратные скобки? Впервые такое вижу.
И почему без указания функции substr нам выводит букву?
Я думал должно быть substr($text, 0, 1);
284 2526255
>>526129
Спасибо! А нужно ли для этого что-то отдельно создавать? Я раньше немного работал с react js, и там я создавал компонент с карточкой, а на странице, где нужно выводить эти карточки просто подключал компонент.
285 2526259
>>526094
А, всё, я понял как это сделать
286 2526295
>>526244
Можно к элементам строки обращаться по индексу как к массиву, начиная с 0. -1 это последний элемент.
287 2526331
>>526295
$text = 'Логотип Google Chrome. Chrome – это быстрый, бесплатный и безопасный веб-браузер. Браузер от Google. Скачать Chrome.';

$rk = "hi: {substr($text) 0, 6}";
print_r($rk);
Вот почему в этом варианте просто печатается текст и моя функция не работает?

$text = 'Логотип Google Chrome. Chrome – это быстрый, бесплатный и безопасный веб-браузер. Браузер от Google. Скачать Chrome.';

$rk = "hi: {$text[substr($text, 0, 6)]}";
print_r($rk);

А тут добавил квадратные скобки и вроде должно заработать, но выдает ошибку.
288 2526379
>>526331
В двойных кавычках нельзя исполнять функции.
Так что используй оператор объединения строк как на следующем примере:

$text = 'Логотип Google Chrome. Chrome – это быстрый, бесплатный и безопасный веб-браузер. Браузер от Google. Скачать Chrome.';
$rk = 'hi: ' . substr($text, 0, 6);
print_r($rk);
289 2526405
Существует класс машина и ее свойства. Отдельно есть вывод и редактор поштучный. А где реализовывать формирование и вывод списка машин по параметрам? Это должно быть вне класса или таких целей создавать класс что-то типа Cars где по обращению будет вывод значений? И где можно об этом всем почитать, где правильно объявлять, где что должно быть, а где не должно
290 2526418
Когда читать Зандстру? После изучения фреймворка или после изучения ООП и MVC?
291 2526422
>>526379
Там просто задание такое -
Выведите на экран первую и последнюю буквы предложения, записанного в переменную $text, в следующем формате:

First: N
Last: t
$text = 'Never forget what you are, for surely the world will not'; - сама переменная.

И вот решение -
$text = 'Never forget what you are, for surely the world will not';
$result = "First: {$text[0]}\nLast: {$text[strlen($text) - 1]}";
print_r($result);

И собственно вот вопросы.
{$text[0]} - как так получается, что возвращается какой-то символ? Я же не ставил функцию.
{$text[strlen($text) - 1]}" - а вот тут уже вызывается функция. Почему так? strlen - возвращает длину строки. то есть там длина строки минус 1 получается. А выводиться последняя буква. Почему так?

[] - Что означают квадратные скобки?
292 2526424
>>526422
Чел, начинай с основ, уже говорили же.
Что такое массивы, индексы и т.д.
Тут обращение к элементу массива по его индексу. Отсчет идет с нуля, то есть получается (длина строки - 1) это индекс последнего элемента.
293 2526431
>>526090
PHP лучший вариант сейчас.

Другое дело, что ты ведомый человек, поэтому тебя бросает туда-сюда. Реши раз и навсегда и вкатывайся в один стек. Разницы нет, везде суть одна: ты пишешь код. Если снова будешь сомневаться, то ничего не получится 100%.
294 2526574
>>526424
Да я вроде все прочитал. Но тут то мы не задавали массив.
Но если есть правило, что к строкам можно обращаться так же как и к массивом, то почему в первом случае мы просто обращаемся к индексу [0], а во втором случае указываем функцию strlen?
295 2526588
>>526422

>{$text[0]} - как так получается, что возвращается какой-то символ? Я же не ставил функцию.


>{$text[strlen($text) - 1]}" - а вот тут уже вызывается функция. Почему так? strlen - возвращает длину строки. то есть там длина строки минус 1 получается. А выводиться последняя буква. Почему так?


Ты клинический что ли? Лучше справку для пенсии получи.
296 2526605
>>526574
Для этого программы и нужны, чтобы пальцами не считать. Нужен последний элемент строки, вот ты функцией и получаешь его индекс, ты вообще можешь не знать что там за строка (обычно так и бывает).
Ты вкатываешься или просто по фану этим занимаешься?
297 2526656
>>526605
Я занимаюсь, чтобы мозги не застаивались)
Не, я понимаю, что программы для удобства нужны.
Я спрашиваю почему в первом случае мы не вызываем функию, а во втором вызываем.
298 2526662
>>526656

>Я спрашиваю почему в первом случае мы не вызываем функию, а во втором вызываем.


Твои уже намертво застоялись. Серьезно. попей глицин, я хуй знает.
299 2526694
Глицин же фейк?
300 2526698
>>526656
Потому что 1й элемент всегда имеет индекс 0. А последний элемент может иметь какой угодно индекс в зависимости, что за строка обрабатывается.
301 2526702
>>526694
Для здорового человека (или не с той проблемой) ничего не даст, а так вполне.
Хотя выше оно использовано в виде дауна-аутиста, а не всерьёз.
302 2526794
>>526431
Учу Php 2ой месяц пиздец пока все нравится.
Конечно бывает , чет не получается. Грущу в такие моменты и иду гуглить, перечитывать теорию.
Мне лично похуй хэйтят его или нет.
Я его выбирал из-за окружения, тк близкие пишут на пхп и это охуенно! Многое объяснили, что не мог понять сам.
Даже если не найду работу разрабом на пхп можно изи будет после года учебы в системные аналитики вкатиться. Знаешь, как работают протоколы, sql знаешь, знаешь что такое бэк и фронт, даже ебать код можешь прочитать и код для обхода массива написать. Все ебать ценный кадр за 150к минимум!
303 2526892
>>526698
Спасибо!)
Вроде понятнее стало
1592669169031.jpg176 Кб, 720x960
304 2526910
Котаны, а у кого нибудь есть пак старых тредов? Сайт архива отправляет к проституткам.
305 2526925
>>526910
Вот уж вкатились так вкатились...
306 2527342
>>526244

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

Строка состоит из символов, а каждый символ (в кодировке utf-8) кодируется от 1 до 4 байтами. Если алфавит латинский, то 1 символ = 1 байт и конструкция $string[$i] получает $i-ю букву. Если же алфавит не латинский (например, кирилица), то ты получишь кусок буквы. По этой причине использовать скобки не надо.

У функции substr та же проблема, это старая функция, написанная с учетом, что 1 символ = 1 байт. На нелатинских символах она работает некорректно, потому надо использовать mb_substr, которая знает тонкости utf-8.

Подробнее строки и кодировки описаны тут

https://github.com/codedokode/pasta/blob/master/cs/strings.md
https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
307 2527345
>>526255

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

Однако, если ты используешь GraphQL API на бекенде или базу вроде Firebase, то это возможно.
308 2527350
>>526405

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

- Car хранит информацию об одной машине
- отдельный класс позволяет сформировать список машин

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

Почитай для начала:

- урок по MVC с примером (!) кода: https://github.com/codedokode/pasta/blob/master/arch/mvc.md
- урок по работе с БД с ООП: https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md
- про принцип единой ответственности из SOLID. Некоторые статьи объясняют его заумно, ищи такую, где объясняется простыми словами

Если хочется изучать архитектуру дальше, можешь почитать книгу Фаулера Patterns of Enterprise Application Architecture (она есть на русском).
309 2527353
>>526418

После ООП, но можно до фреймворка.
310 2527355
>>526422

> Почему так? strlen - возвращает длину строки. то есть там длина строки минус 1 получается. А выводиться последняя буква. Почему так?



Потому, что в строке байты нумеруются с нуля. Если длина строки = 10, то в ней байты идут с номерами от 0 до 9 (посчитай и убедись, что их ровно 10). Поэтому последний байт имеет номер 9, а не 10.
311 2527360
>>526910

Будем чинить, а пока можешь попробоват поиск тут по слову "php" https://2ch.hk/pr/arch/ (М)
312 2527378
По solid'у вообще что ли нельзя наследоваться или я не так понял? Dependency inversion.
313 2527387
>>527378
Чел, делай как удобнее, большинство этих рекомендаций - бред сивой кобылы. Код всё равно переписывают раз в несколько лет, хотя бы из-за того, что новые идеи появляются какие-то.
314 2527408
Почему в php не сделали функцию, которая бы заставляла скрипт прекратить общение с браузером, выдать браузеру ответ, но продолжать работать еще некоторое время?

Если непонятно, приведу пример:
Клиент нажимает кнопку "сделать заказ". Скрипт отправляет емейлы о поступлении заказа клиенту и еще нескольким работникам. И только потом отправляет клиенту подтверждение заказа. Всё это время браузер клиента "грузится" и ждёт ответа.

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

Намного лучше было бы иметь описанную мною функцию, которой к сожалению не существует:
После нажатия на кнопку "сделать заказ", скрипт сразу отправляет клиенту подтверждение заказа, закрывает соединение с клиентом, и только потом начинает отправлять емейлы.
315 2527415
>>527408
Джобы в ларавел работают примерно так
316 2527424
>>527415
И каким образом у них реализован этот механизм?
Наверняка эта возможность написано не на чистом php, а использует нечто-то другое.
317 2527485
>>527424
Что значит на чистом пхп? БД можно использовать? А Редис? Джобы ларавеля на чистом пыхе реализованы. Контроллер кладет задачу в БД и выдает ответ пользователю. Висит пхп процесс, читает задачи из БД, запускает воркеры.
318 2527495
>>527408
Твоя функция называется "отправить клиенту хедеры Connection: close и Content-Length: x", после чего можно делать че угодно, ответ уже ушёл. Ну либо вызвать fastcgi_finish_request(). В всяких ооп-обёртках request/response объектов типа symfony/http-foundation это есть из коробки, можешь пример реализации тут глянуть: https://github.com/symfony/symfony/blob/6.1/src/Symfony/Component/HttpFoundation/Response.php#L372
319 2527506
>>527495
Все таки в пыхе буферезация вывода неспроста. Сначала поработал, потом буфер вывода клиету выплюнул. Пыхопроцес же закрываетя при дисконекте клиента (точнее начинается фаза очисти памяти и тд). По твоему пыхопроцесс мог бы новое соединение принимать без фазы очитки https://www.phpinternalsbook.com/php7/extensions_design/php_lifecycle.html
320 2527548
>>527495
Посмотрел реализацию.
Функции fastcgi_finish_request не существует.
Функции litespeed_finish_request тоже не сущесвует.
Остальной код, который выполняется если этих функций не существует, нужного эффекта не оказывает.
322 2527553
>>527552
Что бы эта функция работала, нужно что бы был установлен некий FastCGI Process Manager
323 2527577
>>527408
Да сто лет это решается, можно решить чисто на клиентсайде и поллить какой-то айди задачки, можно срать апдейтами опять же жса в "грузящемся" скрипте с отключенной буферизацией.
324 2527578
>>527553
Ну и почему он у тебя не установлен? запускаешь под апачем php mod? сейчас пыха == php-fpm
325 2527613
Всем добрый деневечер.
Я 1 курс 1 семестр (учусь не в СНГ) и у нас по одному предмету (с которого меня уже кикнули, точнее, предмет мне перенесся на следующий год, но делать работу надо) нужно сдать зачет.
А этот семестральный зачет - это сайт. Нужно сделать все самостоятельно, по критериям. С джавойскрептом, пхп. Фреймворки нельзя использовать.
Я знаю только html, css пока. Потому что физически не успеваю (как и остальные) переписывать спидран учителя на уроке, не то, что понять. На тот же js у нас было всего два академ. часа...
Задуманный сайт, по сути, похож на кинопоиск, ток, понятно, гораздо проще. На главной странице есть разделения на все фильмы - потом серийные - полнометражные - рандомный фильм. Должна быть возможность зарегистрироваться, + оставлять комментарии под фильмами. И по условию учителя еще должна быть возможность добавить зарегистрированного в админы, чтобы он имел возможность САМ добавлять фильмы.
В общем, сдаем мы это приблизительно в январе.
Нужны любые советы и наводки, как это можно реализовать + за такой срок, потому что как новичку мне без наводок тяжеловато. хтмл сисс страница уже есть. Понятно, что в интернете полно материалов, но у меня ограниченное время + подсказки мне не помешают, хотя бы маленькие советы, и понимание, какие материалы и что мне изучить на спидране.
Спасибо, если прочли.
326 2527617
>>527408

>После нажатия на кнопку "сделать заказ", скрипт сразу отправляет клиенту подтверждение заказа, закрывает соединение с клиентом, и


падает с фаталом

>Эта проблема решается при помощи кронджобов


очередей, а не кронджобов. перед ответом в браузер отправляешь в очередь (rabbitmq, kafka) событие, консюмер хавает его из очереди и делает работу.
консюмер может быть написан на другой технологии, но на пхп смотри symfony + rabbitmq bundle например.

Вообще анон, раз уж работаешь на говне - работай хотя бы по нормальным гайдам. Открой symfony доку, там твои ситуации уже 100500 раз решены, учись у грамотных.
327 2527618
>>527495

>Твоя функция называется "отправить клиенту хедеры Connection: close и Content-Length: x", после чего можно делать че угодно, ответ уже ушёл.


Пиздец, удаление гланд через выхлопную трубу.
Воистину, пых-культура - это слепой ведёт незрячего.
328 2527632
>>527618
Ты дурак что ли?
329 2527634
>>527632
Да, это блаженный местный.
330 2527638
>>527578
>>527408
Чел, как там в 2007? Охенно?
331 2527684
>>527378

Наверно, ты не так понял. Принцип Dependency Inversion говорит о том, что если у нас есть класс A, и ему нужен класс B, то правильнее будет переделать его так, чтобы ему нужен был не конкретный класс B, а любой класс, реализующий один или больше интферфейсов (B1Interface, B2Interface итд).

Например, ты пишешь парсер сайта avito - AvitoParser. Для работы ему нужно скачивать страницы с сайта avito, и для отправки HTTP-запросов он использует класс CurlClient. Получается, AvitoParser намертво привязан к CurlClient и подменить CurlClient на другой класс невозможно.

Принцип Dependency Inversion предлагает вместо этого сделать интерфейс HttpClientInterface, и сделать, чтобы AvitoParser мог использовать любой класс, реализующий этот интерфейс, а не только CurlClient. А CurlClient будет реализовывать этот интерфейс.

Я объяснил, что такое Dependency Inversion, а теперь ты объясни, где ты тут увидел запрет на использование наследования.
332 2527685
>>527387

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

Аналогично, Single Responsibility, очень полезный принцип.
333 2527688
>>527408

Проблема твоего подхода в том, что:

1) тут никак не сохраняется результат работы функции. Нужно ведь не просто отправить email, а еще написать клиенту "email успешно отправлен" или "не удалось отправить email, попробуйте еще раз"

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

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

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

Очередь решает 3 проблемы, описанных выше.

Также, есть функция fastcgi_finish_request, но по 3 причинам выше я не советую ее использовать.
334 2527690
>>527424

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

RabbitMQ я не люблю по двум причинам: 1) он переусложнен, там сделаны какие-то роутинги, и прочие сложности, которые мне не нужны. 2) там нельзя сохранять результат и статус выполнения задачи. Поэтому мне кажется, что база данных тут лучше подходит.
335 2527692
>>527613

Попробуй почитать учебник по PHP в шапке, он очень простой и ты его наверно за пару недель можешь освоить. Также, почитай урок по архитектуре MVC тут https://github.com/codedokode/pasta/blob/master/arch/mvc.md и другие уроки отсюда https://github.com/codedokode/pasta/

Дальше, тебе нужна будет база данных. Есть простой учебник по основам SQL: https://sql-academy.org/ru/guide

К концу декабря как раз все это освоишь и можешь писать свой сайт.

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

А в том комментарии я хотел сказать, что проблема решается не хедерами. Хотя хедеры конечно же можно отправить.
337 2527746
>>527684
Нихуя не так.
DI - не про интерфейсы вместо классов. DI - про то, что класс А не будет ничего знать про то, где брать класс Б или как его инстанцировать. При инстанцировании класса А ты передаёшь ему готовый экземпляр класса Б. Сам А не ищет Б ни через хардкод ни через сервис-локатор, ни в глобалсах не смотрит, не инстанцирует сам, никак. Именно в этом и заключается инверсия - раньше класс А сам искал Б, а после инверсии он не ищет, а ждёт когда ему положат в клюв.
338 2527753
>>527690

>RabbitMQ я не люблю по двум причинам


>1) я нихера не понимаю как работают очереди


>2) я нихера не понимаю как строить приложения на основе событий, а не на основе долбёжки базы по крону


поправил тебя, не благодари
339 2527770
>>527613
Что-то крутовато для 1го семестра. Что за country?
image.png130 Кб, 1360x650
340 2527812
Как исправить эту хуйню с отсутвующим пакетом в пыхе

может через компосер глобально устоновить пакет?
341 2527829
>>527812
Это не пакет, а экстеншен, т.е. бинарник к самому пхп. Надо установить ручками или просто раскомментировать в php.ini.
Хз, чо там в твоей зборочке.
342 2527850
>>527746

Тут не Dependency Injection, a Dependency Inversion. Перед тем, как писать ответ, я погуглил, что это такое: https://en.wikipedia.org/wiki/Dependency_inversion_principle

>>527812

Тут нужен не пакет, а расширение Mcrypt, его через композер не поставить. Многие расширения на Windows уже идут в комплекте с PHP и нужно лишь разрешить/раскомментировать их в php.ini. Если расширение не идет в комплекте, то надо скачать dll c PECL, как описано тут: https://www.php.net/manual/ru/install.pecl.windows.php
343 2527893
>>527812
Ебать, еще один из 2007
344 2527938
>>526605
>>526698
А у меня вопрос.
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
print_r($input[$rand_keys [0]]);
print_r($input[$rand_keys [1]]);
У меня есть функция - array_rand. Она возвращает рандомный индекс. Почему тогда в строке, где print_r мы сами указываем индекс, если мы задали в переменной $rand_keys, функцией array_rand вернуть 2 случайных индекса?

Вот есть у нас эта функция. Возвращает она случайный индекс. в данном варианте у нас от 0 до 3 индекс. то есть 4 случайных может выпасть. Если я напишу print_r( $input[0]); то мне выдаст - Neo. То есть индекс отвечает за элемент. А в данном случае мы уже указываем индекс [0].print_r($input[$rand_keys [0]]);
345 2527984
>>527938
Ну там же все написано

>Если вы выбираете только одно значение, функция array_rand() возвращает ключ, соответствующий этому значению. В обратном случае, она возвращает массив ключей, соответствующих случайным значениям.


$rand_keys это новый массив, в данном случае из двух элементов с индексами 0 и 1. Вот и выходит что подставляются 2 рандомных индекса старого массива и выводятся элементы по этим индексам.
346 2527993
>>527984

>Ну там же все написано


Он читает с трудом
347 2528027
>>527938

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

$rand_keys это массив из 2 элементов с ключами (индексами) 0 и 1
$rand_keys[0] это элемент из $rand_keys с ключом 0
$input[$rand_keys[0]] это элемент из $input с ключом $rand_keys[0], то есть с ключом, взятым из 0-го элемента $rand_keys
348 2528145
>>527692
Спасибо большое. ♥
>>527770
Это Чехия.
И это не все. Мы еще питон проходим, но на другом предмете...
И моя специальность считается достаточно ~простой~ по сравнению с другими в вузе {среди студентов}.
349 2528157
>>528145
Ты главное не затягивай, начинай пилить как можно раньше. А то это дело такое, подводнокаменное.
350 2528177
Если надо обойти массив и менять в нем значения, я так понял лучше создать новый пустой массив и туда модифицированные значения присваивать или по ссылке обращаться к элементам?

>foreach ($array as &$item)

351 2528184
>>528177
По задачам.
352 2528191
>>528184
Ну в бд хранится информация, функция из бд возвращает массив и его нужно обработать определенным образом и вывести в шаблон. Например дата хранится в unix формате, а надо в человеческий вид привести.
353 2528204
>>528191
С созданием нового массива быстрее вроде работать будет
354 2528215
>>528191
Можно ещё в запросе это сделать, можно качать в виде ключ-> столбец и прямо по ключу менять значения.
355 2528216
>>528215
Т.е. не столбец, а запись.
356 2528355
В чем может быть проблема если не воспроизводятся бутстрап элемент(иконка лайка) в ларе?(все остальные элементы нормально)
357 2528392
>>525449

>то "тонны бабла" не нужны


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

>>526090

>пыха ещё норм?


Только если для вэба.

>>526431

>PHP лучший вариант сейчас.


Жаль слишком узконаправленный.
358 2528403
>>527850

>Тут не Dependency Injection, a Dependency Inversion. Перед тем, как писать ответ, я погуглил, что это такое: https://en.wikipedia.org/wiki/Dependency_inversion_principle



Да, я обосрался. Действительно, есть такая задача и способ её решения.

Исходная проблема: есть парсер веба, например KoalaHttpParser. Мы пишем на его основе логику, получается зависимость
MyMagickApplication <- KoalaHttpParser
{hi} <- (low)
стрелочка тут указывает направление влияния, т.е. изначально была либа парсера, а потом мы на её основе построили приложение.
Дальше вся эта залупа разрастается:
ZebraDbDriver -> MyMagickApplication <- KoalaHttpParser
Однажды ты просыпаешься и понимаешь что пиздец, твоё детище MyMagickApplication завязло в зависимостиях. Хуёво это тем, что ты в его реализации ограничен требованиями от низкоуровневых либ. И ты думаешь "вот был бы у меня вагон времени - я бы написал всё с нуля, сначала MyMagickApplication, а потом под них MyMagickHttpParser, MyMagickDbDriver итогдалие".
То есть ты думаешь о том, как инвертировать зависимости
MyMagickDbDriver <- MyMagickApplication -> MyMagickHttpParser
(Напомню что стрелочки тут показывают направление влияния, т.е. обратны направлению зависимости. Вообще "зависимость от" - это синоним "знание о". Если либа А знает о либе Б, а "знает" означает "знает и учитывает в своей реализации" - то А зависит от Б. При этом нормальные здравые чуваки стараются чтобы Б ничего не знала об А, иначе получится циклическая зависимость.)
Вот ты пофантазировал вялого, а потом вспомнил о жестокой реальности, что у тебя низкоуровневые либы уже есть и весьма неплохие, переписывать их глупо. Но стрелочки ты развернуть хочешь. И ты придумываешь схему:
MyMagickApplication -> [?] <- KoalaHttpParser
то есть объявляешь буферную зону, в которую сливаешь все нестыковки между верхней и нижней частями. А детально это выглядит так
{MyMagickApplication -> HttpParserInterface} -> (KoalaHttpParserAdapter <- KoalaHttpParser)
Выделенное фигурными скобочками - это часть верхнеуровневой части, круглыми - нижнеуровневой.
Как ты мог заметить, стрелочка изменила своё направление по сравнению с самой первой диаграммой.
{hi} -> (low)

Это и есть инверсия зависимости между Hi-level-abstraction и Low-level-abstraction частями проекта.
358 2528403
>>527850

>Тут не Dependency Injection, a Dependency Inversion. Перед тем, как писать ответ, я погуглил, что это такое: https://en.wikipedia.org/wiki/Dependency_inversion_principle



Да, я обосрался. Действительно, есть такая задача и способ её решения.

Исходная проблема: есть парсер веба, например KoalaHttpParser. Мы пишем на его основе логику, получается зависимость
MyMagickApplication <- KoalaHttpParser
{hi} <- (low)
стрелочка тут указывает направление влияния, т.е. изначально была либа парсера, а потом мы на её основе построили приложение.
Дальше вся эта залупа разрастается:
ZebraDbDriver -> MyMagickApplication <- KoalaHttpParser
Однажды ты просыпаешься и понимаешь что пиздец, твоё детище MyMagickApplication завязло в зависимостиях. Хуёво это тем, что ты в его реализации ограничен требованиями от низкоуровневых либ. И ты думаешь "вот был бы у меня вагон времени - я бы написал всё с нуля, сначала MyMagickApplication, а потом под них MyMagickHttpParser, MyMagickDbDriver итогдалие".
То есть ты думаешь о том, как инвертировать зависимости
MyMagickDbDriver <- MyMagickApplication -> MyMagickHttpParser
(Напомню что стрелочки тут показывают направление влияния, т.е. обратны направлению зависимости. Вообще "зависимость от" - это синоним "знание о". Если либа А знает о либе Б, а "знает" означает "знает и учитывает в своей реализации" - то А зависит от Б. При этом нормальные здравые чуваки стараются чтобы Б ничего не знала об А, иначе получится циклическая зависимость.)
Вот ты пофантазировал вялого, а потом вспомнил о жестокой реальности, что у тебя низкоуровневые либы уже есть и весьма неплохие, переписывать их глупо. Но стрелочки ты развернуть хочешь. И ты придумываешь схему:
MyMagickApplication -> [?] <- KoalaHttpParser
то есть объявляешь буферную зону, в которую сливаешь все нестыковки между верхней и нижней частями. А детально это выглядит так
{MyMagickApplication -> HttpParserInterface} -> (KoalaHttpParserAdapter <- KoalaHttpParser)
Выделенное фигурными скобочками - это часть верхнеуровневой части, круглыми - нижнеуровневой.
Как ты мог заметить, стрелочка изменила своё направление по сравнению с самой первой диаграммой.
{hi} -> (low)

Это и есть инверсия зависимости между Hi-level-abstraction и Low-level-abstraction частями проекта.
359 2528404
>>528177

>лучше создать новый пустой массив и туда модифицированные значения присваивать


this
360 2528410
>>526431

>PHP лучший вариант сейчас


чтобы быстро заработать копеечку
в плане обучения computer science он был и остаётся одним из худших вариантов
361 2528433
>>528355
Это не проблема верстки? Кстати есть какой-то краткий гайд по основным аспектам? А то я с чистым хтмлом только взаимодействую.
362 2528461
>>528433
у лары есть блейд,там можно жить чисто на знании html(собственно как я и делаю)
363 2528469
>>528403
Спасибо за многобукв, но я все равно не очень догоняю.
364 2528494
Хелп,почему не проходит миграция? как зафиксить?
365 2528496
>>528494
отмена,я адун
366 2528606
>>528403

> И ты думаешь "вот был бы у меня вагон времени - я бы написал всё с нуля, сначала MyMagickApplication, а потом под них MyMagickHttpParser, MyMagickDbDriver итогдалие".



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

Проблема, которую решает Dep. Inversion в том, что твое приложение завязано на KoalaHttpParser, а ты бы хотел, чтобы ты мог менять парсеры хоть каждый день в зависимости от настроения. Для этого мы меняем зависимость MyMagicApplication от KoalaHttpParser на зависимость MyMagicApplication от HttpParserInterface.
367 2529150
test
368 2529155
Есть вложенный ассоциативный массив с докторами и их параметрами. Нужно удалить доктора, если его фамилия "Иванов". Я использую двойной цикл, но когда после этого цикла вывожу массив, доктор с этой фамилией на месте. Что я делаю не так? Собственно, сам код.
$doctors = array(
array(
'name' => 'Иванов',
'specialty' => 'хирург'
),
array(
'name' => 'Петров',
'specialty' => 'кардиолог'
)
);
foreach($doctors as $array => $doctor) {
foreach($doctor as $property => $value) {
if($value == 'Иванов') {
unset($doctor);
}
}
}
369 2529160
>>529155
c отступами и скобками, если что , всё нормально, это тут криво вставилось.
370 2529168
>>529155
foreach ($doctors as $i => $doc) {
if ($doc['name'] == 'Иванов') unset($doctors[$i]);
}
Абырвалг 371 2529259
Котоны, всякие опенсурсы при вкате учитываются?
Чет ничего вменяемого найти не мгу, кто-нибудь занимается таким поделием? Готов за ревью помогать по мере сил.
Могу в процедурный пых, немного ооп. Скуэль с вложенными, с джойнами могу. Подберите меня кто-нибудь)
372 2529275
Это норм если в шаблоне какую-то часть страницы подключать через Include в зависимости от условия? Или надо как-то иначе скрывать, выводить через heredoc?
373 2529356
>>527617

>symfony + rabbitmq bundle например


зачем бандл?
есть компонент и он нормально работает
https://symfony.com/doc/current/messenger.html
374 2529358
>>529259
От тебя больше проблем будет
375 2529631
>>529168
спасибо!
376 2529807
Сап, пхпхеры. Есть вопрос.
Ковыряюсь в связке Вуе + Лара и хочу сделать не полноценные SPA, а модульный - когда на Вуе только интерактивные элементы, а всё остальное рисуется Блейдом. Например в ресурсном контроллере в update я отдаю формочку где компоненту в пропсах передаю один айдишник записи, а на клиенте уже при отрисовке идёт запрос на бекенд за данными этой записи.
Мне получается надо делать какой-то юзерапи для этих запросов? И где этот апи держать - дописывать методы в ресурсных контроллерах или создать отдельные в своём неймспейсе?

Хз может вы проще как-то делаете, а я заморочился?
377 2529812
>>529807
Бери тогда livewire и не используй vue. А если хочешь vue тогда inertia и не используй блейд. Но если готовишься к собесам то лучше nuxt или next js, а ларавел только как апишку и обходи компании где требуются фулстеки, в пыхе это чревато набрать говна вместо опыта.
378 2529815
>>529812
>обходи компании
обходи стороной компании, естественно
379 2529818
>>529815
но если ты совсем вкатунец, то естественно тебе любой опыт сойдет, так что этот совет не для тебя
380 2529819
>>529807

>хочу сделать не полноценные SPA, а модульный - когда на Вуе только интерактивные элементы, а всё остальное рисуется Блейдом.


Хуйня какая-то
381 2529821
>>529812

>inertia


Это же SPA, нет? Нахуй не нужен.
382 2529827
>>529819
Почему хуйня, вайти? Удобно же - статическая страница с динамическими элементами, которые отвечают только сами за себя.
383 2529834
>>529821
Не совсем, это спа но с без логики на фронтенде, все что должен отобразить компонент страницы передается ему через пропсы бекендом. Валидация тоже только на беке, отпавка форм multipart/form-data и urlencoded без перезагрузки страницы. Т. е когда ты валидируешь инпут ты отправляешь целиком форму. И другой чисто бекендерсий опыт релевантен.

Но это годно если в одно рыло пилишь аппу. В компаниях лучше пилить отдельно фронт отдельно бек
384 2529841
>>529834
Де, еще в отличие от спа у инертии каждая страница импротируется динамически и представляет собой отдельное приложение. Целиком весь фронт не грузится. Не нужен роутер и vuex
385 2529847
Как автоматизировать такую оптимизацию? (стек: Laravel + Jetstream, т.е. Tailwind CSS и Livewire)

https://nednex.com/en/split-your-css-to-media-related-files-to-improve-performance-significantly/

Я правильно понимаю, что это можно сделать в вебпаке? Он позволяет собирать CSS разбивая его по @media запросам на файлики, или придётся пилить велосипед? Ищу актуальное решение, благодарочка за любую инфу!
386 2529850
>>529847
У тебя прямо мегатонны мобильного сss, а не три строчки меняющие направления у флексов и темплейты у гридов?
387 2529851
>>529807
Нахуя вообще Vue при таком подходе? Есть Inertia и livewire именно для этого. Чекай стартер киты в документации Laravel https://laravel.com/docs/9.x/starter-kits, там есть наборы где можно сразу влиться и начать делать такое приложение, поэкспериментируй с ними.
388 2529854
>>529850
Мобильного - нет, но все вьюпорты и темы если учесть, то получается, что дофига можно было бы выиграть разделением.
На сайте значительная часть людей с дерьмовым мобильным инетом.
389 2529863
>>529854
Тогда что ты собрался разделять у тайлвинда, у тебя же нет css типа BEM, для блоков которые не на всех страницах, а просто всюду насрано одними и теми же утилитами тайлвинда?
390 2529864
>>529863
Ну вьюпорты и темы же.
391 2529868
>>529864
то есть в одном css bg-orange-500, а в другом bg-cyan-500, то микрооптимизация - у тебя css окажется на 90% идентичным
392 2529872
>>529868
Я хочу тестануть это на своём пет-проекте с tailwind, чтобы понять как это автоматизировать и какие подводные камни, чтобы потом притащить в легаси проект с бутстрапом, где выигрыш будет ещё больше и будет заметен не только для мобильщиков с говноинетом.
393 2529912
>>529834

>это годно если в одно рыло пилишь аппу


Примерно так и есть - прикидываю что было бы удобно использовать при разработке в одного где ехал фреймворк через фреймворк.
394 2530068
>>529807

>создать отдельные в своём неймспейсе?


this
Как планируешь генерить CSRF токен для форм?
tmp1111.png139 Кб, 479x704
395 2530121
>>530068
Аксиос из меты берёт насколько помню. Креденшиалсы тоже автоматом прописываются для кабинетов пользователей.
396 2530132
>>530068
Или речь идёт о множественных формах? Получается, что токен у них один на все будет. С дивана я не вижу проблемы т.к. это не сильно от апи-токена отличаться будет. Наверное.
397 2530320
>>511483 (OP)

Привет, я передаю жпег через форму php и по какой то причине у меня это не срабатывает,
вот код

if( isset($_FILES) && $_FILES['avatar']['name'] == 0){ echo ' Файл загружен ';}
print_r($_FILES);
$destiation_dir = "F:\OSPanel\domains\phpLearn\userImages";
move_uploaded_file($_FILES['avatar']['name'], $destiation_dir );

что выводит на страницу
Файл загружен
Array ( [avatar] => Array ( [name] => Screenshot_6.png [type] => image/png [tmp_name] => F:\OSPanel\userdata\temp\upload\php3449.tmp [error] => 0 [size] => 416295 ) )

форма
<div class="container mt-2">
<form enctype="multipart/form-data" action="check_post.php" method="post">

<div class="mb-2">

<label for="inputFile" class="form-label">Выберите фотографию (файл) </label>
<input type="file" class="form-control" id="inputFile" name ="avatar">
</div>
398 2530328
>>530320
исправил form-control на form-control-file
ничего не изменилось
399 2530335
>>530328
Там же написано всё, путь в tmp_name, name это оригинальное имя.
400 2530345
>>530328
заработало с помощью
$destination_dir = getcwd().DIRECTORY_SEPARATOR;
$target_path = $destination_dir . basename( $_FILES["avatar"]["name"]);
//echo __DIR__.$destiation_dir;
move_uploaded_file($_FILES['avatar']['tmp_name'], $target_path );

хз почему
401 2530351
>>530335
name это имя файла получается а tmp_name сам файл?
у меня вышло сохранить в папке проекта, но все еще не выходит сохранить в папкуПроекта/userImages
402 2530756
>>530351
все работает сори что насрал
403 2531606
>>528606

>Зачем писать MyMagicHttpParser, который подходит только для MyMagicApplication? KoalaHttpParser (который ничего не знает про MyMagicApplication) как раз лучше, так как его можно использовать в любом другом приложении.


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

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


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

Я пока это не собираюсь нигде использовать, просто любопытно.
405 2531805
>>531797
Кстати тоже интересно, нужен новый моник и думал fullhd или 1440p покупать.
406 2531826
>>531797
У меня старый 24" фхд, точнее чуть больше, оптимальный вариант, ящитаю.
407 2531968
>>531826

Для такого огромного монитора 1920x1080 дает плотность точек 91 PPI (посчитать: https://www.sven.de/dpi/ ). Это довольно большие пиксели и, мне кажется, с полметра будет видно, что буковки не очень красивые и с серыми пятнами. Если ты сидишь дальше, то может быть ок.

На экране 96 PPI буковки не красивые. На экране с 140 PPI я не вижу с полметра пиксели и буковки более-менее нормальные. На экране с ~290 PPI (телефон) я вообще не вижу пиксели даже в упор. Там буковки выглядят почти как на бумаге.

>>531805

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

Также, желательно, чтобы матрица была IPS и с охватом хотя бы 100% sRGB, если для тебя важна точность передачи цветов (также можешь посмотреть, какая у него Delta E). Да и просто на таком мониторе картинка красивее смотрится. Если охват больше 100% sRGB, то это даже лучше, но если там в меню нет опции для ограничения охвата, то цвета без калибровки будут насыщеннее, чем надо.

Если ты не геймер, то на частоту обновления можно не смотреть.
408 2534371
Все еще живые чтоли?
409 2534707
>>534371
Пока жива Лара, живы и мы!
410 2534794
>>534371
Очередной вайтишка с нулевым кругозором удивляется тому, что язык, на котором работает 80% интернета никуда не пропал. Кек.
412 2535722
>>535678
Да пиздец ебанулись уже не знают что делать и добавляются сахара как не в себя, лучше бы асинхронность нормальную запилили и в развитие swoole вложились, каждый релиз нагромождение бесполезной хуеты. 7.4 идеальная версия
413 2535808
Спустя 2 года таки вкатился. Из этих 2ух лет месяцев 5 фрилансить. В ноябре у меня было 2 офера. Выбрал ту, где стекпизже (laravel vs WP+1C и тп ).
Поработав с пару недель пригласили на корпоратив в Питер. Оплатили билеты и проживание.
Как приятно у вас (нас) в айтишечке.
414 2535822
>>535808
У меня всё это было в 2003.
Никаких вкатунов ещё не было, я знал ассемблер z80, перл и фрибсд. Меня пригласил мажорный тип на одном из местечковых панковских концертов, с которым я был знаком через несколько рукопожатий. Мне вручили книгу по смуззихлебскому тогда сишарпу и ключи от квартиры, где был офис, там мы хуярили всякие проекты на фрилансе. Были же времена.
Потом выучил пхп, потом набрал пяток книг по руби, заснул в маршрутке и проебал их.
Потом появился третий питон и я его лениво учил, пробавляясь жабаскриптом. Потом я ударился в радиотехнику по стопам бати, копеечные микроконтроллеры могут в охуенные вещи.
Сейчас я лежу на диване и жду когда меня призовут, ничего из этого всего интересного не вышло, это был просто способ нихуя не делать и получать деньги, не ходя на ебучую работу.
М тебе советую того же, хотя там немного осталось.
415 2536111
>>535722
Да вроде они последнее время больше по типизации упарываются. А это штука хорошая.
416 2536114
>>535808

>Спустя 2 года таки вкатился


>Поработав с пару недель пригласили на корпоратив в Питер


А че в использование деепричастных оборотов за 11 лет школы не смог вкатиться?
417 2536151
>>511483 (OP)
Аноны, я уже учил php до проекта список студентов проект я не делал. Перескакивал с языка на язык и сейчас есть вакансия, где требуются

>Базовые знания php


Подскажите, пожалуйста, самый интенсивный курс по php, чтобы по быстрому все вспомнить.
418 2536207
>>536114
А за это платят?
419 2536216
>>511483 (OP)
Аноны, хочу сделать список студентов, информация в гайде актуальная? То есть про эту автозагрузку, шаблоны? А то прежде чем к задаче приступишь, недели две на гайде потераяешь.
420 2536259
>>536151
Хуево, когда не знал, да еще и забыл...
421 2536260
>>536207
Ну за высеры на дваче тебе же не платят, но...
422 2536268
>>536151

>Базовые знания php


Пока ты будешь вспоминать то, чего не было, на эту вакансию уже 1к человек откликнется. Да и щас базовые знания - это знание Ларавел хотя бы.
423 2536468
>>536268
Вакансия в мухосране, чтобы ты понимал, один человек пришел и прямо сказал, что ничего не знает и его взяли в тестировщики.
Другой человек имел опыт php, и его без технического собеса взяли. Правда на испытательный.
Правда до этого туда шел ещё, его чё то завалили вопросами, но возможно потому что там уже была кандидатурр получше.
Короче, действительно риск есть, но я поэтому и хочу интенсивный курс, так как я уже это учил, но нужно побыстррму вспомнить.
По большей части проблема в проекте, для приличия хочу сделать студ список, но тут загрузили с автозагрузкой, шаблонами, MVC. Вот это надо изучить.
Хотя в вакансии указано зслышать о KISS, SOLID и ещё что-то
424 2536470
>>536468
Сказки какие-то.
425 2536474
>>536470
Анон, вот так вот. Я уже 3-4 года в айти вкатываюсь, а кто-то вот так просто наскоком кабанчиком подкрашивает. Притом это не контора по нашим меркам.
426 2536478
>>536474
Тестировщик - чей-то друг\сват\брат и за него попросили.
С опытом оно и понятно. Или ты себя равняешь с тем, кто с опытом?
А второй дурачок типа тебя. Его и побрили.
427 2536491
>>536468
Просто делай студ лист без задней мысли, в учебнике опа если что подгляди про шаблоны.
428 2536661
>>536216

Пока еще актуальная, единственное, что сейчас PHP8, и стоит использовать его фичи (то есть, везде указывать типы: в аргументах функций, в результатах, в полях классов), а для перечислений (например, пол, место жительства) можно использовать Enum.
429 2536662
>>535722

Вроде добавили же легковесные файберы для асинхронности.

И в какой конкретно задаче тебе нужна асинхронность? Бизнес-логику с ней писать неудобно, даже с async/await получается громоздко.
430 2536680
>>511483 (OP)
Аноны, как вы смирились с тем, что вас не позовут в кремниевую долину или в Яндекс, потому что вы не умеет решать алгоритмические задачи?
431 2536701
>>536680
Я не собираюсь ни в какие ебаные долины. Мне платят дохуя денег за лёжку на диване и небольшие просветы, когда я что-то делаю.
Обычные люди за много меньшие деньги тратят всё свое время, какие-то отпуска планируют, когда отдохнут от ебучей каторги. Я же всю жизнь отдыхаю со школы.
Немножко завидно фулл-тайм пограмистам, но они тоже жизнь сливают в унитаз в гонке за хуйнёй.
432 2536710
>>536701
>>511483 (OP)
Спрошу по другому, как вы миритесь с тем, что вы не станете великим программистами?
433 2536712
>>536662

>Вроде добавили же легковесные файберы для асинхронности.


Это все хорошо, но в синтаксисе самого языка этого нет.

>И в какой конкретно задаче тебе нужна асинхронность?


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

>Бизнес-логику с ней писать неудобно, даже с async/await получается громоздко.


Тоже самое, просто у метода добавляешь async, а при вызове .await когда нужно, все остальное уже делается под капотом оборачивается в футуру, в js тоже самое создается промис и выполнается. Если их надо одновременно запустить, то в расте в tokiio::spawn отправляешь футуры и потом делаешь join, в js отправляешь промисы в Promise.all В расте единственно что нельзя так просто читать и писать, нужно либо склонировать переменную, либо оборачивать Arc и Mutex. Если нужно читать одновременно оборачиваешь в Arc<T>, если нужно оборачивать Arc<Mutex<T>> и делать lock() когда пишешь, но я обычно копирую переменную и записываю новые когда делаю join. Собственно вот и все сложности, просто в некоторых местах добавляется пару строчек кода, а в большинстве случаев нужно просто писать async await, это на самом деле не так страшно как кажется, но когда есть действия которые можно распараллелить то это дает неплохой прирост производительности
434 2536721
>>536710
Я изначально не собирался быть великим программистом.
Я рандомхуй в своём пузыре, все знакомые и все клиенты рекомендуют меня для решения задач, потому что я решаю задачи.
У меня нет амбиций, я хочу нихуя не делать и получать за это деньги. Наследственной ренты у меня нет, поэтому приходится что-то делать.
Возможно, у меня какие-то депрессии-хуессии, которые отнимают у меня мотивацию, в предках достаточно пиздеца.
Вижу разделение таких как я и реальных ебанашек идейных в 10-20 против 90-80.
Сейчас же любой долбоёб прётся в ойти с желанием занять моё место, но мозгов/склада ума не хватает, так что они лишь несут деньги цыганам, которые тоже плотно заняли нишу стрижки добоёбов. Я бы тоже хотел стать таким, но мои скиллы несколько отличаются.
435 2536723
>>536721

>Вижу разделение таких как я и реальных ебанашек идейных в 10-20 против 90-80.


Типа идейных 80-90? Че так много?
436 2536725
>>536723
Наоборот.
14348797347.jpg18 Кб, 448x256
437 2536738
>>536680
Да мне бы хоть просто вкатиться...
438 2536740
>>511483 (OP)
Ну и последний вопрос. Если смотреть на количество вакансий, каких вакансий больше, тех, где требуются знания алгоритмов, структур данных, математики или где просто требуют знания инструментов?
439 2536744
>>536740
Вся эта хуйня это карго-культ от гугла, на деле тебе ничего из этого не пригодится, оно выродилось в стандартные вопросы и в стандартные ответы.
440 2536747
>>536744
Не, я только рад, но мне страшно, что я захочу вырасти в карьере, а вокруг будут вакансии с требованиями на уровне того же гугла
441 2536750
>>536710

>великим программистами


Тебе 12 лет что ли? Что это за хуйня "либо стать великим, либо лежать на диване как бревно"? Так что ли?
Делаем потому, что можем и за это платят.
442 2536789
>>536721
мб антидепры попробуешь
443 2537004
>>528027
У меня вопрос.
function rd($rl, $ss)
{
$sds = '...';
$ss = mt_rand(1,2);
$xxx = substr($rl, 0, $ss);
$bg = $xxx.$sds;
return($bg);

}

$dd = "text";
$tt = 1;

print_r(rd($dd, $tt));

Тут я использую return. Ради интереса решил изменить в функции и убрать return и поставить print_r($bg);
И все равно все так же работает. Почему так. Ведь в таком случае функция ничего не возвращает и не принимает на вход никаких параметров?
444 2537008
>>536789
Я бы попробовал, но это к психиатру какому-то надо идти, ну его нахуй. Пробавляюсь гидазепамом время от времени. Его вот хотят сделать йоба-рецептурным, надо будет закупить впрок.
445 2537033
>>537004
Чел, ну серьезно, это не твое. Запишись на курсы вокальные или рисовать учись лучше.
446 2537181
>>537004
Создай еще одну функцию, которая использует как параметр результат первой. И сравни что происходит ретурн и принт.
447 2537280
Win10 LTSC подойдет под разработку на php? Там ничего не вырезано нужного? Или вы все на линухе?
448 2537474
>>537181
Я попробовал. создал 2 функции. Смог сложить.
Когда использовал принт, то не получилось.
Я понимаю, что return позволяет мне сохранять значение в переменной и использовать его дальше. А принт просто печатает.

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

P/s

А куда в данной функции(которую я скинул выше) записывать параметр первой функции во вторую?
449 2537563
>>537280
Все норм пари на линуксе
450 2537872
>>537004

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

Желательно использовать нормальные названия переменных и функций, чтобы было понятно, что делает код, вроде $name, $count и тд. Если ты делаешь что-то абстрактное, то используй тогда $a, $b, $c и так далее.

Если ты не используешь return в функции, то функция все равно возвращает значение по умолчанию - null.

Если ты просто уберешь return из кода, то print_r(rd($dd, $tt)) попытается вывести null и программа ничего не выведет. А если ты заменишь return на print_r,, то функция выводит данные на экран, но возвращает null (так как в ней нет return).

>>537474

> Я просто не понимаю, почему в данном случае все работает. Я думал должно ошибку выдавать.



В PHP отсутствие return не является ошибкой, так как в этом случае функция возвращает значение по умолчанию null. Поэтому твоя программа не выдаст ошибку от того, что ты уберешь return.

null это не строка "null", а специальное значение, которое обозначает отсутствие данных.

Ты можешь убедиться в этом таким кодом:

function a()
{// нет return
}

var_dump(a()); // выведет null

Я советую тебе использовать var_dump вместо print_r, так как она выводит данные в более понятном виде, и указывает тип данных.
450 2537872
>>537004

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

Желательно использовать нормальные названия переменных и функций, чтобы было понятно, что делает код, вроде $name, $count и тд. Если ты делаешь что-то абстрактное, то используй тогда $a, $b, $c и так далее.

Если ты не используешь return в функции, то функция все равно возвращает значение по умолчанию - null.

Если ты просто уберешь return из кода, то print_r(rd($dd, $tt)) попытается вывести null и программа ничего не выведет. А если ты заменишь return на print_r,, то функция выводит данные на экран, но возвращает null (так как в ней нет return).

>>537474

> Я просто не понимаю, почему в данном случае все работает. Я думал должно ошибку выдавать.



В PHP отсутствие return не является ошибкой, так как в этом случае функция возвращает значение по умолчанию null. Поэтому твоя программа не выдаст ошибку от того, что ты уберешь return.

null это не строка "null", а специальное значение, которое обозначает отсутствие данных.

Ты можешь убедиться в этом таким кодом:

function a()
{// нет return
}

var_dump(a()); // выведет null

Я советую тебе использовать var_dump вместо print_r, так как она выводит данные в более понятном виде, и указывает тип данных.
451 2537873
>>537280

Подойдет.
452 2538000
>>511483 (OP)
Есть тесты на Селениуме для сайта на php(Yii2). Просто примитивные скрипты на Java. Как и куда эти тесты правильно добавить в сам проект на Yii2? Как сдеать чтобы их можно было запускать в PHPStorm прямо в среде по нажатию кнопки а не только из консоли с самого сервака?
453 2539045
>>538000
А че, загуглить никак?
454 2539075
>>538000

>Yii2


нужно выкинуть нахуй и забыть
455 2539076
>>537004
Проверь своё говно здесь https://3v4l.org/ и тащи сюда ссылку, хуль мы тут должны в голове коньпилировать
456 2539189
>>538000

Добавить можно в папку tests/selenium

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

- нужно установить нужную версию java
- скорее всего, нужно установить менеджер пакетов maven или что они там используют (gradle?), и установить им нужные пакеты
- нужно установить или настроить браузер, которым будет управлять selenium, желательно в headless режиме, чтобы он не мешался на экране и чтобы ты случайно в него не ткнул

Если память много, ты можешь установить виртуальную машину с линуксом и в нее ставить Яву и запускать тесты в ней.
457 2539420
Парни, сколько сейчас зарабатывает джун пхп удалённо?
Близится конец месяца моей стажировки, будут делать новый офер. Меня вряд ли спросят, но все же за 20 к въебывать не хочется. На хх мониторить не хочу, мне кажется там разброс дикий.
Есть инфа средней по рынку?
458 2539627
>>539420
Привет
Расскажи, плиз как вкатывался на стажировку.
459 2540026
>>539420
Мне на мухосранской удаленке после месяца с 20 до 35 подняли.
460 2540232
>>539627
Компания мне оплатила курсы, начал учится. Уволился. Под конец курса уже фрилансил. Даже не закончил его, тк время не было ещё и учебный проект делать. Фрилансить мне надоело, спросил у бывшего ментора есть ли знакомы которые ищут джуна. Дали контакты, сделал тестовое. Предложили офер. Ничего сверхъестественного.
Стажером я устроился имея 3 месяца опыта во фрилансе.
По факту я не стажёр, просто это повод платить меньше в первый месяц. Мне так кажется.
461 2540245
>>540232
Какие курсы проходил?
1636594949fxhvn3iuTs.jpg164 Кб, 640x808
462 2540259
господа, здравствуйте. Где можно найти наставника по изучению CSS и HTML?
463 2540278
>>540232

>Стажером я устроился имея 3 месяца опыта во фрилансе.


>По факту я не стажёр,


Кек
464 2540379
>>540259
пздц
F12
пкм + "view source"
465 2540402
Нормально ли вкатываться в 2к23 в PHP?
Я депрессивный пожилой зумер, амбиций нет. Понимаю, что во всякие модные среакты, нодыжс, петон мозгов не хватит попасть и пробиться сквозь толпу 16лвл синьоров. Мне бы что то попроще, не хайповое, там достигнуть какого то уровня и ок. Готов работать с петровичами, даже натянуть проперженный свитер. Про заоблачную зарплату тоже не мечтаю.
Иногда посещают мысли, что выбрав не то направление я могу пожалеть в будущем, но все ли так плохо может оказаться через 5-10 лет?
466 2540480
>>540402

> Нормально ли вкатываться в 2к23 в PHP?


Да, только в него или 1с и нормально. Скачай мобильное приложение hh и почекай джуновские вакансии: там где на пыху 20-30-40 кандидатов - на питон/фронт/джэву 200-300-400, да еще и самих вакансий меньше.
467 2540482
>>540402
принимаешь важное решение
@
спрашиваешь мнение анонов с двачей
image.png1 Кб, 426x167
468 2540520
>>511483 (OP)
Сап, у меня есть тег <code>, в котором отображаются данные из базы. Как в ларавел сделать так, чтобы я мог нажать кнопку, отредактировать и отправить изменения в базу?
469 2540757
Добрый день.
Подскажите, почему пхпстэн показывает такую ошибку: Cannot call method getItem(). При этом все работает.
470 2540854
>>540757
А так? $this->last?->getNext();
471 2540861
>>540854
Хуя, это с какой версии завезли?
472 2540868
>>540259

>найти наставника


Чтобы найти "наставника" - надо брать деньги и искать институт, курсы, репетитора. Больше никак.
474 2540876
>>540402

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


Лол, я тоже так вначале думал. Сейчас сам на хайповом стеке работаю, как поридж какой-то.
475 2540888
>>540482
Так больше не у кого спросить. Родители заводчане, друзей нет, а те что были не в айти
476 2540903
>>540854
Да, спасибо, все четко.
477 2541123
>>540888
Ладно, анон. Скажу как быдлокодер с шестнадцатилетним стажем. С пыхи зайти легко, на хлеб заработать всегда будет. Выйти будет сложно, но, возможно, тебе это и не надо будет.
image.png39 Кб, 1280x800
478 2541140
Ау! А где анонс 8.2?
https://www.php.net/releases/8.2/en.php

>>540402
Да. Был период, когда РНР все хейтили (возможно, в результате заказной кампании Microsoft), но он всё так же остаётся на 80% вебсайтов, плюс везде: в телекоме, банкинге, финтехе и т.д.

Хочешь получать мало -- ковыряй ЦМС-ки.
Хочешь получать много -- фреймворки, паттерны программирования и байтоёбство.
479 2541148
>>541140
ссылочка на русском языке: https://www.php.net/releases/8.2/ru.php
480 2541188
А че в треде активности совсем нет?
481 2541212
>>540245
От академии.
>>540278
Ну задачи не стажёрские делал!
Ну и кста меня повысили до джуна, с окладом 35к. Успех.
482 2541255
>>541123

>Выйти будет сложно, но, возможно, тебе это и не надо будет.


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

>>541140
Я планирую двигаться в сторону лары. Вордпресс когда то смотрел, у меня чуть мозг не вытек. Хоть все и говорят, что это дно и легко, но как по мне, то ну его впизду. Мне ближе ООП почитываю книгу Зандстры по PHP 8. Там хоть понятнее, чем цмс, ну и интереснее + полезнее
483 2541306
>>541188
Диды работают, вкатуны выбирают что-то более порриджевое. Стандартный расклад для старых языков.
484 2541337
>>541212

>Ну задачи не стажёрские делал!


Что-то уровня "фрилансить мне надоело"))
485 2541478
>>511483 (OP)
Почему die(); можно писать со скобками и без скобок? Понятно, что в die можно передать параметры как в обычные функции, но при этом оно работает если просто написать die;
Функции же вроде без скобок не вызываются?
486 2541563
>>539075
В бизнесе это так не работает. У нас проекты написанные в 2012-2014 году, их только полгода назад на php7 перевели.
487 2541570
>>540870
Круто, но на коммерческих проектах про такое можно забыть - у бизнеса сейчас всё на 7.4 в самом лучшем случае, а чаще на 5.3
488 2541681
Господа синьеры, есть ли какой-то внятный способ дернуть phpunit из браузера, запустить конкретный тест и получить его вывод в браузер? В теле теста я прописал dd($this), т.к. хочу увидеть что из себя представляет тестовый объект, а вывод в консольку меня не устраивает.
489 2541683
>>541563
Т.е. битриксоиды пишут на более современной версии пыха чем вы?
490 2541717
>>541140
Шёл 2022 год, а про асинхронность в нативной пыхе даже нет и слухов как и своего пакетного манагера.
В задницу себе засуньте асинхронный бандл
491 2541962
Приветы! А можно в начале выучить html, css, js, а потом учить php? И сколько по времени учиться чисто php что бы начать сделать более менее нормальный проект?
492 2542164
>>541962

>А можно в начале выучить html, css, js, а потом учить php?


Нужно
493 2542326
>>541337
ну я образно выразился. на фрилансе я не развивался как разработчик. Денег было больше, это да. Но по сути я просто свои ошибки из проекта в проект таскал без код ревью и помощи от старших. + мне хотелось работать в команде, коммуницировать и тп. Одному очень скучно.
494 2542331
>>541962
если более менее то за недели 3 ты сможешь запустить живой сервер с выводом инфы из БД
495 2542438
>>541255
Я думаю не стоит пренебрегать какими-то технологиями. Не надо ненавидеть CMS, надо понять, как оно устроено, найти для себя в этом интерес. Даже в этом можно найти что-то новое, что-то, чего бы я никогда не увидел, изучая только популярный ООП MVC фреймворк.
497 2542495
>>541717

> своего пакетного манагера


ну и кто тут обосралсо? Сколько лет composer-у?

> асинхронность


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

Но даже без дополнительных расширений -- легко, например, с помощью выделенных подпроцессов и вебсокетов.
498 2542497
>>541681
В чём проблема? В РНР ты можешь вызывать любые системные функции и получать результат в браузере. Хоть весь линукс вызови )

https://www.php.net/manual/en/function.shell-exec.php
https://www.php.net/manual/en/function.system.php
image.png168 Кб, 889x484
499 2542537
>>541140
Скоро ещё Laravel 10 выходит:
https://laravel.com/docs/master/releases
500 2542628
>>540402

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

В реакте ничего сверхсложного нет, и, кстати, его принцип работы напоминает PHP: при любом изменении данных мы заново перегенерируем всю страницу. Но если ты не знаешь хорошо JS и шаблонизатор JSX, или не разобрался в концепциях реакта, а сразу берешься за код на нем, то конечно ты ничего не поймешь.
501 2542635
>>540402

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

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

И опять же, останавливайся каждый раз, как встретил что-то непонятное. Увидел слово "открыть файл" и не понял - остановись и найти уроки по работе с файлами, что значит "открыть" и "закрыть"? а не пытайся проскочить это.
502 2542637
>>540520

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

>>540757

Он думает, что last может быть null, и тогда вызов getItem не сработает. В качестве костыля ты можешь либо отключить проверку в этой строчке, либо заменить if ($thus->isEmpty()) на if (!$this->last) и тогда он должен понять.
503 2542638
>>541478

Потому, что die это не функция, а конструкция (вроде if или for). Ее синтаксис такой:

die выражение;

Если ты пишешь скобки, то это просто получается выражение, завернутое в скобки, а не вызов функции.
504 2542646
>>541717

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

Вот, например, сайт-лендинг для заказа услуг клининговой компании. Или сайт компании по продаже недвижимости. Где там асинхронность?

>>536712

>>Бизнес-логику с ней писать неудобно, даже с async/await получается громоздко.


> Тоже самое, просто у метода добавляешь async, а при вызове .await



Я пишу без async и await и у меня все работает. Зачем мне следовать твоему совету и усложнять код? Это никак не поможет решению задачи и не улучшит показатели бизнеса. Да и код лучше от этого не станет.

Также, для асинхронности в PHP есть файберы. Они позволяют писать асинхронный код без async/await/промисов и в том же JS или Питоне такого нет. PHP тут, похоже, впереди других языков в плане поддержки асинхронности, хотя она никому особо и не нужна.
505 2542647
>>541717
Шёл бы ты отсюда, дурачок.
506 2542649
>>541681

Это возможно, но надо ковырять phpunit и смотреть, как он вызывает тесты и сделать так же.
507 2542691
Кстати, аноны, вы меня уже достали со своей асинхронностью. В PHP есть технология - файберы, которая реализует асинхронность по системе, близкой к Го - без async/await/промисов. Файберы реализуют кооперативную многозадачность. То есть, мы пишем обычный последовательный код и магия файберов делает его асинхронным:

public function handleRequest(Request $req, Response $resp)
{
$name = $req->query->get('name');
$name = Util::sanitizeFilename($name);
// асинхронная операция - здесь выполнение файбера
// может быть прервано для обработки других запросов
$file = $this->fs->readFile("/files/$name");
$resp->setHeader("Content-Type: ...");
// асинхронная операция
$resp->sendContent($file);
}

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

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

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

Нужен будет PHP8.1 или новее, возможно, под windows будут сложности, так что понадобится либо WSL2 (Windows 10) или linux, или хотя бы виртуалка с linux. Но может и под Win7 заработает, кто знает.

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

Если есть желающие, пишите какая задача вам интереснее, я напишу что изучать и сформулирую ТЗ. Дам ссылку почитать, если что-то будет непонятно. Может даже объясню самые непонятные моменты. Будет чем похвастаться на собеседовании.
508 2542794
>>542691
вот бы все эти знаки в башку сразу загрузить, очень интересно и выглядит супер полезно но времени нихуя нет.
509 2542796
>>542794
знания быстрофикс *
510 2542905
>>542646

>Они позволяют писать асинхронный код без async/await/промисов


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

>хотя она никому особо и не нужна.


Если делаешь форму мы вам перезвоним на ларавеле, то да, но где данных много, есть различные апи и микросервисы, много пользователей и тд асинхронность в разы ускоряет работу софта и уменьшает нагрузку на сервер
511 2543249
>>542905

> асинхронность в разы ускоряет работу софта и уменьшает нагрузку на сервер



Но ведь API и микросервисы увеличивают ее.

Микросервисы нужны только компаниям большого уровня (у которых > 100 разработчиков и гигантские проекты на миллионы строк кода). Я думаю, у 95% бизнеса нет таких показателей и нет потребности в микросервисах и в твоей асинхронности.
512 2543576
>>541306
а если я вкатун, шансов больше чем условный джаваскриптизер или петухон?
513 2543648
>>543576
Больше, можешь глянуть кол-во вакансий. Но вообще это не важно, нужно лишь быть лучше чем все твои конкуренты на место
514 2544031
Норм задачку сделал или говнокод? Что упростить заменить?
https://onlinephp.io/c/cbe67
515 2544137
>>544031

> $b != 1000000



Это неправильное условие продолжения цикла, так как вряд ли там наберется ровно 1 000 000. Правильно было бы написать: продолжать цикл, пока сумма меньше миллиона. И тогда if + break будут не нужны.

> $b = (round($b));



Здесь внешние скобки не нужны, можно писать $b = round($b);

Переменная $i тоже не очень нужна, так как мы можем узнать, сколько прошло лет, через разницу в возрасте.
516 2544316
>>544137

> врядли там наберется ровно



Но может набраться больше, тогда цикл остановится и не выведет последний результат
517 2544420
Как же я люблю PHP!!! Ожидайте моего вката в тру-фрейворки. Хочу всё попробовать, даже битрикс.
519 2544441
>>542905

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


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

>Сколько лет composer-у?


Композер это нативный пакетный менеджер? Хуя какие открытия я познал, лул.

>не могу ставить дополнительные пакеты


По причине того, что асинхронность на уровне интерпритатора будет гораздо эффективнее.

>>542646

>и она редко когда нужна


Она нужна всегда когда ты стучишься к БД или к файлам т.е всегда.

>Также, для асинхронности в PHP есть файберы


PHP-реализация файберов — это не настоящие асинхронные вычисления. Даже после появления новинки ядро языка осталось синхронным.
521 2544641
>>544441

>Про брокеры сообщений ты, я так понимаю, не слышал.


Не всегда прокатывает, бывает всякое легаси и сторонние апи, новое да с кроликом пишем
522 2545312
>>511483 (OP)
Не понимаю, почему не перевели доки свула на английский? Ебучие пидарасы пишут хуй пойми на каком наречии, переводчик не все может перевести.
523 2545976
>>545312

>доки свула


Каво нахуй
524 2545980
>>545976
swoole
525 2546000
>>511483 (OP)
В чем смысл использовать __ DIR__? Типа есть же аналог ../ перед реквайером ставишь и всё. А так получается __DIR__ . "/../.."
Тоже самое не?
526 2546055
Выучил Html, css, js. Сейчас думаю выучить php и mysql. Сколько по времени займет обучение php и mysql до уровня джуна? Если есть интернет магазин (не большой пет проект), через какое время на php я смогу сделать нормальный бекенд? Что бы форма обратной связи работал, товары подгружались и т.д. И сколько нужно учиться на джуна ( только php и mysql )? Посоветуйте хорошие курсы по php. И как сейчас на рынке php? А то много вакансий со знанием js и php
527 2546260
>>546055

>Выучил Html, css, js.


Низусть? Значит вставай на табуретку и читай вслух с выражением.
528 2546265
>>544469

>нативный


Лол, серун не унимается.
529 2546292
>>546260

>Низусть?


Вот тоже это интересно, нельзя просто загуглить что надо? Или там какие-то подводные камни надо отдельно разбирать?
530 2546707
>>546292

>Или там какие-то подводные камни надо отдельно разбирать?


Запилить пару проектов надо чтобы механику работы понимать и шишек набить с языком. Познакомиться с популярными решениями, библиотеками и фреймворками.
Как тут что-то можно именно "выучить" я не понимаю.
531 2546761
>>546000
__DIR__ - полный путь до папки. Например, если ставить скрипт на cron, то без __DIR__ путь будет ломаться.
532 2546796
>>546761
Что за cron?
533 2547066
>>546796
Может запускать твой скрипт в определенное время. Может еще че делает.
534 2547653
>>541563
Двачую, сегодня ковырялся в тепленьком легаси на ларе 4,2 пхп 5,4 По приезду домой сходу в душ
535 2547668
>>546796
>>547066
В связке со всякими джобами и очередями очень полезная штука, рекомендую изучить
536 2547907
>>546055
Как долго учил все это? Много ли времени уделял? Что было сложным? Хотелось дропнуть?
537 2547914
>>546761
не полный а абсолютный
мимо душнила
538 2547921
>>547907
Год. Сложно было понять циклы и как парсить данные. Занимался по 4 часа каждый день, кроме последнего дня месяца - я делал уборку по дому и отдыхал на природе. Дропнуть хотелось часто, особенно в первый месяц, дальше было попроще. Если бы не работа, то, конечно, быстрее всё изучил бы. Наверное за 6-8 месяцев.

Это может всё звучать смешно, типа как можно циклы, условия и все вот эти базовые-пребазовые штуки так долго изучать и понимать, но у нас в школе даже информатики не было, я серьёзно тебе говорю, поэтому для меня всё было очень непонятным и сложным, т.к. получается, что с полного нуля я начал заниматься.
539 2547934
>>547921
4 часа в день. Блин жесть. У меня и 2х часов свободных в день нету. Хорошо если 4-6 часов в неделю найдутся чтоб изучать перед компом. Видимо мне не светит
540 2548078
Отношение итт треда к данному кенту?
Смотрю пока что базовый курс. Нравится то, что сходу идет объяснение на примере какой то задачи, а не пересказ документации што такое цикл. Пытаюсь самостоятельно написать пример с урока после просмотра видео + есть задача после каждой темы, и видео с ее разбором.
На ютубах толком нихуя нет. На юдеми давно протухший курс какого то мекса висит, хуета хуетой
541 2548109
>>544316

Верно. Но тогда неработающее условие из цикла for лучше вообще убрать:

for ($b=10000; ; $b = $b + (($b / 100) * 10)) {
...

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

Также, здесь можно применить цикл while с постусловием (понимаю, что надо добавить в учебник, но все забываю):

do {

} while ($b < 1_000_000);

(подчеркивания в числах можно делать для читаемости).
542 2548140
>>544437

О, ООП-вариант, интересно. Но на мой взгляд, тут требуются доработки.

Когда ты передаешь все параметры вклада в конструктор, и затем вызываешь calculate() без параметров, то у такого подхода нет никаких преимуществ перед обычной функцией. Нет смысла в замене обычной функции на класс.

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

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

$deposit = new Deposit(10); // 10% в год
$deposit->calculate(10_000, 1_000_000, 18, 85);
$deposit->calculate(20_000, 500_000, 65, 85);

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

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

Функция возвращает несколько параметров (итоговая сумма, итоговый возраст, дожил или нет). Для 3 параметров хватит массива, но если возвращаемых данных было бы много, то удобно использовать объект для их представления.

> (float)number_format($value, 2, '.', '');


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

> @param int $customerAge


> @return void


Эти аннотации не содержат никакой новой информации и их писать не надо.
543 2548144
>>544469

> Композер это нативный пакетный менеджер?



Что значит "нативный". Я не очень понимаю этот термин. В Викисловаре "нативный" определен как "использующий специфические особенности архитектуры целевой платформы". Какие специфические особенности должен использовать composer и зачем?

>>544469

> Она нужна всегда когда ты стучишься к БД или к файлам т.е всегда.



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

Вот мне надо получить пользователя из БД по id. Как тут поможет асинхронный код?

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

Если для тебя приоритет скорость выполнения, то тебе нужно брать не PHP, а Го, Раст и писать на них (это будет дороже, но код будет более быстрый). Но в этом случае мы получаем, что PHP не нужна асинхронность.
544 2548147
>>547934
Я просто Толокер, поэтому столько мог заниматься.

сыч тнн рнн шиз 30 лвл
545 2548149
>>544469

> PHP-реализация файберов — это не настоящие асинхронные вычисления



Это асинхронность в том же смысле, как она реализована в JS и libuv, то есть возможность производить множество I/O операций параллельно без переключения контекста. Файберы при этом лучше механизма, основанного на промисах в JS.
546 2548150
>>545312

Это же опен сурс, займись переводом. Опен сурс это не "сделайте мне бесплатно программу", а "разрешите поделиться сделанной мной программой, может быть кому пригодится".
547 2548157
>>546000

Нет. Если ты пишешь require '../file.php', то файл ищется не относительно текущего файла, а относительно рабочей директории процесса (она задается с помощью chdir() и получается с помощью getcwd()). Иногда рабочая директория случайно оказывается такой, какой надо, и это работает, но гарантий нет.

Если же ты пишешь require 'file.php', то дополнительно файл еще ищется в include_path. Возможно, ты этого не хочешь.

В случае же __ DIR __ мы явно указываем, что файл должен искаться относительно текущего файла.

Как по мне, так система поиска файлов неудачно сделана (потому, что скопирована с Си).
548 2548162
>>546055

9-12 месяцев. Для изучения самых основ PHP и основ ООП могу нескромно посоветовать учебник в шапке, а также официальный мануал PHP, а для практики советую сделать магазин, но на фреймворке Symfony или Laravel и почитать подробные советы из задачи про студентов из шапки.

>>546292

Допустим, тебе надо найти минимум функции с 900 переменными. Что, нельзя просто загуглить, какой минимум у этой функции?
549 2548165
>>548078

У тебя на картинках явно не совсем базовый курс, так как там начинается сразу с POST/PUT, а где основы HTTP, основы PHP (циклы, массивы, функции итд). То есть, это не совсем для начинающих.
550 2548167
>>548149
Хватит срать.

It's clear that fibers are a significant improvement, both syntax-wise and in flexibility. But they are nothing yet compared to, for example, Go, with its "goroutines".

There's still lots of functionality missing for async PHP to become mainstream without the overhead of frameworks, and fibers are a good step in the right direction, but we're not there yet.
https://stitcher.io/blog/fibers-with-a-grain-of-salt
551 2548169
>>547934

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

>Курс предназначен для тех, кто


>Владеет основами программирования на языке PHP

553 2548177
>>548167

Ты бы пост внимательнее читал. Я сравнил возможности файберов с возможностями JS, а ты приводишь в цитате Го.

Зачем PHP копировать архитектуру Го? Если тебе нужны горутины, то просто пиши код на Го.
554 2548242
>>548177

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


Так нода синхронная получается? Свежайшая инфа из пхп треда.

>Зачем PHP копировать архитектуру Го? Если тебе нужны горутины, то просто пиши код на Го.


А зачем тебе, петушиная голова, файберы? Нахуй ты про них заикнулся вообще?

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

И такое же типичное решение пхп макакера это насрать демонов, текущих как его мамаша по стасу михайлову. Все это добро дедлочит базу, падает по памяти и ебет мозги всем окружающим до тех пор пока какой-нибудь макакаен не поставит себе на стол ебучего хомяка и не заменит весь этот кал одной функцией. А так-то да нахуйя копировать хорошее, лучше атрибуты у джавы скопировать, так не хватало ведь говна в коде.
555 2548254
>>548078
Базовый курс - топ, остальное сильно хуже, с тоннами воды.
556 2548274
>>548078
А по битриксу есть такое?
557 2548315
>>542537
Я один хуй на 8 сижу и пока переходить не планирую.
558 2548618
>>548242

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

> Так нода синхронная получается?



Давай еще раз повторю: файберы в PHP позволяют реализовать как то, что есть в JS, так и строить более продвинутые асинхронные конструкции. При этом без всяких async/await. Где ты тут увидел, что "нода сихронная", я не понимаю.

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



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

> И если делать это все синхронно,



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

Асинхронность позволяет одновременно отправить несколько запросов в разные API, и это можно сделать в PHP, хоть на файберах, хоть на промисах (на файберах удобнее).

Асинхронность также не помогает при работе с БД. Твой код может быть асинхронным, но если у тебя одно соединение с MySQL, то ты можешь выполнять только один запрос одновременно. Ты не можешь отправить параллельно 1000 запросов (ты, конечно, можешь попробовать открыть 1000 соединений к БД, но это повлечет рой других проблем). Как видишь, ни JS, ни Го не позволят тебе легко распараллелить выполнение SQL-запросов.

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

Официальных документации и туториалов нет разве?
560 2548807
>>511483 (OP)

> использовать готовый CSS-фреймворк Twitter Bootstrap


Twitter Bootstrap закрылся? Теперь обычный Bootstrap?
561 2548831
>>537872
Спасибо большое!)
Задачу пытаюсь решить такую...
Случайно на форуме наткнулся на такой вопрос - "А можно ли вместо return все время использовать print_r'?"
Подумал про себя, что конечно нет. Потом решил проверить и все заработало. Вот и вопросы появились.
562 2548885
>>548831

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

Можно заменить return на print_r, если ты сразу распечатываешь возвращаемое значение:

function f()
{
// можно заменить на print_r
return 2 + 2;
}

print_r(f());

Но в других случаях нельзя, например:

function f()
{
return 2 + 2;
}

$a = f() + 1;
print_r($a);

Этот код будет работать по-другому, если заменить return на print_r (можешь проверить сам).
563 2548904
>>546055
Обожаю таких манек, выучил он, уже вижу твой горящий пердак от проблемы, которая есть, а загуглить и даже вопрос задать по ней не получается, потому что хз как это объяснить. Можно сразу свой анус к такому развальцовывать и морально готовиться.
564 2549039
https://onlinephp.io/c/aee08 — задача про айпад в кредит. Пральна? Советы? Делал сам, не подглядывал. Мне кажется еще немного, и я стану программистом.
565 2549042
>>549039

>homoCredit


Мы вам перезвоним
566 2549043
>>549042
Что не так? Он правильный ответ?
567 2549071
>>548618
Тупорылый ты хуесос (как в JS). Какой нахуй MySQL? (как в JS). Ты не сможешь отправить несколько запросов одновременно на файберах (как в JS). Тебе это с самого начала в ебало и тыкали. То что JS в браузере этого сделать не может каким хуем оправдывает что пхп этого сделать не может? А факт того что тот же JS но в серверном исполнении в виде ноды это отлично делает ты, дегенерат, старательно игнорируешь.

>Я бы такое решение, которое обрабатывает миллион записей в обработчике запроса, в прод не допустил, даже если оно написано на Расте


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

>Асинхронность (как в JS) тебе никак не поможет ускорить обработку записей.


Кого вообще ебет обработка. IO 90% времени занимает. С трех апи может по 100мс с каждого набежать, даже для пхп 300мс это вечность нахуй. Такое же соломенное чучело как и (как в JS).

Короче, для эффективного решения этой задачи ТИПИЧНОЙ СУКА ЗАДАЧИ нужно чтобы язык обеспечивал НЕБЛОКИРУЮЩИЙ БЛЯДЬ IO. Пхп так не может. Файберы хуяйберы, один хуй не может. Так что предлагаю тебе завалить ебало и ждать когда сможет. То что нормальную асинхронность в него добавят это 100%, только ждать придется еще лет десять.
568 2549189
>>548157
А ты что-то против си имеешь?!
569 2549218
>>511483 (OP)
В чем разница написания таких конструкций:

$flag = "0";
if(!$flag) {
echo "не существует";
}

или:

$flag = "0";
if(empty($flag)) {
echo "не существует";
}

В чем-то разница есть вообще?
570 2549288
>>511483 (OP)
Читаю статейку про MVC от Оппа, и не понимаю, для чего нужно было создавать скрипт инициализации bootstrap.php?
Тип его же не обязательно создавать для MVC?
571 2549316
>>549218
https://www.php.net/manual/ru/types.comparisons.php
Нужно быть очень осторожным с типами и что там ожидается в переменной.
572 2549597
>>549288
bootstrap-файл это обычно "бутстраппинг" приложения, первичная инициализация и подгрузка конфигов. У меня, когда я на коленке делаю софтинку, этот файл возвращает экземпляр app, который в минимальном исполнении просто контейнер с сервисами.
573 2549708
Ну как вы там, анальники?
574 2549816
>>511483 (OP)
Есть ли какой-нибудь годный курс по CMS Bitrix?
575 2549871
>>549816
Можешь Михаила Базарова посмотреть, плюс на его сайте есть всякие читы к битриксу, бывало очень помогало. И еще канал "Я кодер" на ютубе. Ну и еще оф. курсы, но наверное заебешься через час смотреть их. Наверной я кодер канала хватит, дальше просто делай что тебе необходимо и так и учись уже, параллельно гугля проблемы.

Еще сильно советую тг-каналы по битриксу. Их два, но они оба по сути об одном. Там сам найдешь не так сложно. Там в этих каналах можно в поиске найти ответ на свою проблему или просто спросить, почти всегда отвечает кто-то, активность высокая кароче.
576 2550028
>>549871
Спасибо, няш3
577 2550082
>>549288

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

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

Он не обязателен для реализации MVC, но скорее всего такой файл понадобится. MVC лишь описывает, как разбить обработку запроса на M/V/C, но MVC не указывает тебе, откуда читать конфиг и как подсоединяться к базе. Это ты должен придумать сам.

То есть, в приложении будут не только файлы моделей, вида, контроллеров, но и вспомогательный код, который не относится к M, V или C.
578 2550204
>>547921
Пиздец меня сложило с этого честно говоря. Был полон уверенности, что сейчас то за годик натаскаю себя, что сразу на Джура залечу как нехуй делать(в финке живу), а по итогу у меня тупо времени нет на это обучение. Дома дел слишком много плюс работа, плюс надо иногда спать.
579 2550382
>>550204
Это я наебал, сорри, люблю выдумывать всякие истории, мы же на дваче, думаю сам понимаешь. Гайды в шапке хороши, вкатиться сможет каждый, даже имея работу. Таких людей много, просто верь в себя, а не плачься как девочка из-за таких калментов.

Главное хоть немного любить кодить, иначе ничё путного не выйдет. Да и тем более как потом работать-то, если тебе это не нравится, и ты себя заставляешь заниматься кодерством? Ищи варианты как привить себе любовь к кодингу, если еще пока не любишь.
580 2550725
>>548274
Анон из ньюфаг треда советовал курс Михаила Базарова на ютубе.
581 2551444
>>548078
Какой бы хороший видеокурс ты не нашел, но повторение действий дает мало пользы в обучении. Важно не попасть в tutorial hell. Рано или поздно ты должен будешь выйти из зоны комфорта и начать писать самостоятельно. Чем раньше ты начнешь это делать, тем лучше.
582 2551452
>>548149

>возможность производить множество I/O операций параллельно без переключения контекста


Concurrency is not parallelism!
583 2551540
>>551444

>Какой бы хороший видеокурс ты не нашел


Так любой видеокурс подразумевает, что ты будешь сидеть и тепеливо повторять. Потом, когда просмотришь, ещё и потыкать написанное палочкой в разных позах, поломать-починить. Эксперимент - двигатель науки.
584 2551561
>>511483 (OP)
Делаю форму регистрации для studentList при помощи Bootstrap 5, но не могу выравнить форму по центру.
https://codeshare.io/qPRVYZ
Как я понял, блоку не хватает высоты, но можно ли как то обойтись без фиксированной высоты?
585 2551564
>>551561
То есть по горизонтали могу, а по вертикали нет.
586 2551582
>>551540

>Потом, когда просмотришь, ещё и потыкать написанное палочкой в разных позах, поломать-починить.


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

>Эксперимент - двигатель науки.


Безусловно. Никто с этим не спорит.
587 2551590
>>551582

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


Значит пиздёж, что работали. Это проблема чисто туториальщика-вкатуси.
588 2551591
>>551590

>Значит пиздёж, что работали


Может быть и правдой
589 2551600
>>551591
Как ты себе представляешь человека, работающего на проекте и не умеющего на коленке что-то запилить? Ты из гикбрейнс что ли?
Это как встретить плотника, который не умеет заготовку сделать.
590 2551624
>>551600
Можно уметь пилить отдельные фичи, но не уметь самостоятельно создавать проекты с нуля
591 2551691
>>551582
>>551444
А вот задачи в шапке подойдут как пет-проекты? Как что-то самостоятельное? Про файлообменник, про список студентов и т.д. Тут ведь ты не копипастишь, а сам думаешь и пишешь.
592 2551716
16546313966980.gif1,2 Мб, 498x278
593 2552572
Как генерить грамотно страницу html с помощью php? Неужели с помощью того, чтоб юзать echo? Вот в node js есть handlebar и прочие движки обработки
594 2552649
>>552572

>в node js есть handlebar и прочие движки


В PHP тоже есть

>с помощью того, чтоб юзать echo


Можно и так. Еще можно html внутри php или php внутри html
595 2552703
>>552572
У опа урок про шаблоны хороший.
596 2552707
>>552649
В расширение .html можно писать php код?
597 2552715
598 2552718
>>552707
Советую переименовать в .phtml, vscode подхватывает подсказки синтаксиса сразу.
599 2553077
Ку, я сам не ставлю задачу научиться писать, но читать надо бы уметь.

Как понять что происходит вот здесь, почему все эти 3 строчки показывают на один и тот же элемент с одним и тем же размером, но называется по разному и находится ниже по коду?
Может посоветуете что почитать?
600 2553186
>>548078
Смотрел его, обычно много петросянит и пиздит с чатом, дропнул на моменте где он начал писать сокращенный синтаксис который у меня не работал и выглядел вырвиглазно, очередной инфоцыган кароч
601 2553266
>>553077

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

Почитай про HTML и DOM, про DOM на русском написано тут https://learn.javascript.ru/dom-nodes
602 2553270
>>552707

Лучше назвать такой файл .phtml или .html.php, чтобы сразу было видно.

>>552572

Урок https://github.com/codedokode/pasta/blob/master/php/templates.md

>>551691

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

Если ты не начинающий, то лучше будет придумать свой проект и делать его на фреймворке.
603 2553299
>>551561

До появления flexbox вертикальное выравнивание было проблемой. Вот практически все классические способы выравнивания, которые мне известны:

1) если твой элемент является inline-block, то его можно выровнять с помощью vertical-align относительно соседних блоков. Это подходит только для горизонтально расположенных в строчку элементов (например, кнопки и ссылки)
2) если твой элемент находится внутри ячейки таблицы или элемента с display: table-cell, то его можно выровнять с помощью vertical-align на ячейке, но у таблиц свои проблемы
3) если твой элемент абсолютно позиционирован и известна его высота, то он выравнивается относительно родителя заданием top: 50%; margin-top: -(половина высоты);
4) для более новых браузеров абс. поз. или отн. поз. элемент выравнивается с помощью top: 50%; transform: transalteY(-50%); Прежде чем использовать, проверь поддержку transform на caniuse.com. (она поддерживается примерно с 2010 года, включая IE9 с префиксом).

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

Впрочем, ты используешь Бутстрап 5, а он сам далеко не всеми браузерами поддерживается. У них очень плохая, на мой взгляд, политика, что они поддерживают только последние версии браузеров и не поддерживают Internet Explorer. Это какая-то дурная мода, поддерживать только то, что установлено на макбуке верстальщика. Если у тебя, например, Win 7 или телефон, купленный 3 года назад и не обновленный, то получается тебя уже не поддерживают. Очевидно, такую моду продвигают богачи с Запада, которые каждые полгода покупают новый макбук, потому что на старом экран заляпался. По моему, это неправильное отношение. По этой причине, мне кажется, бутстрап уместно использовать для всяких внутренних сайтов и админок, на которые заходят только с нужных устройств.

Также, мне не нравится в Бутстрапе то, что он гигансткий. Я бы советовал брать из него только нужные модули, а не все сразу.
603 2553299
>>551561

До появления flexbox вертикальное выравнивание было проблемой. Вот практически все классические способы выравнивания, которые мне известны:

1) если твой элемент является inline-block, то его можно выровнять с помощью vertical-align относительно соседних блоков. Это подходит только для горизонтально расположенных в строчку элементов (например, кнопки и ссылки)
2) если твой элемент находится внутри ячейки таблицы или элемента с display: table-cell, то его можно выровнять с помощью vertical-align на ячейке, но у таблиц свои проблемы
3) если твой элемент абсолютно позиционирован и известна его высота, то он выравнивается относительно родителя заданием top: 50%; margin-top: -(половина высоты);
4) для более новых браузеров абс. поз. или отн. поз. элемент выравнивается с помощью top: 50%; transform: transalteY(-50%); Прежде чем использовать, проверь поддержку transform на caniuse.com. (она поддерживается примерно с 2010 года, включая IE9 с префиксом).

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

Впрочем, ты используешь Бутстрап 5, а он сам далеко не всеми браузерами поддерживается. У них очень плохая, на мой взгляд, политика, что они поддерживают только последние версии браузеров и не поддерживают Internet Explorer. Это какая-то дурная мода, поддерживать только то, что установлено на макбуке верстальщика. Если у тебя, например, Win 7 или телефон, купленный 3 года назад и не обновленный, то получается тебя уже не поддерживают. Очевидно, такую моду продвигают богачи с Запада, которые каждые полгода покупают новый макбук, потому что на старом экран заляпался. По моему, это неправильное отношение. По этой причине, мне кажется, бутстрап уместно использовать для всяких внутренних сайтов и админок, на которые заходят только с нужных устройств.

Также, мне не нравится в Бутстрапе то, что он гигансткий. Я бы советовал брать из него только нужные модули, а не все сразу.
604 2553307
>>551561

> но можно ли как то обойтись без фиксированной высоты?



А, нужно, чтобы форма была по центру экрана? Тебе надо просто для контейнера задать минимальную высоту в 100% высоты экрана. То есть, min-height: 100vh;, но проверь на caniuse, какие браузеры поддерживают единицы vh.

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

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

Если хочется лучшей поддержки то нужно играться с height/min-height: 100% на всех родителях контейнера вплоть до HTML, но это сложно и там много подвохов.
605 2553322
>>549189

Вообще, да, очень старый язык и очень неудобный, чего только стоит необходимость объявлять и определять функцию в двух файлах. Также, при передаче в функции указателя нельзя указать кол-во элементов в массиве, если оно переменное, признак конца массива, нельзя указать, разрешен ли null, нельзя указать тип передачи (borrow/ownership), тип доступа (r/w/rw), кодировку текста. Для структур нельзя указывать значения по умолчанию, нет именованных аргументов функций.

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

При переполнении при сложении не происходит аварийного останова программы, а она просто выдает некорректные данные, но не говорит, что они некорректные.

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

(я в курсе, что Раст исправил часть этих недостатков)
606 2553326
>>549071

> Ты не сможешь отправить несколько запросов одновременно на файберах (как в JS)



Легко смогу при наличии цикла обработки событий. Файбер позволяет создавать что-то вроде green threads, присотанавливать и возобновлять их.

> Что мешает тебе сначала получить по миллиону из каждого апи, а потом просто в цикле обработать этот миллион?



Ты бы меньше плевался и внимательнее читал пост. Я тебе написал, что никто в продакшене не обрабатывает миллионы записей в онлайн-скриптах, так как это может легко повесить сервер. Миллионы записей обрабатываются в оффлайн-скриптах (крон/воркеры), прямо как в 60-е.

Если ты не знаешь таких вещей, то спорить с тобой смысла мало. Похоже, что обработку миллиона записей (это, кстати, немного) ты видел разве что в своих фантазиях, пока перекрашивал кнопки на формочке в Битриксе.
607 2553328
>>549071

Ты лишь демонстрируешь свое невежество. Неблокирующие сокеты в PHP есть с незапамятных времен, и неблокирующие операции с файлами некоторые есть в PHP, некоторые есть в расширениях вроде swoole.
608 2553336
>>549039

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

Для аргументов функции желательно указывать типы (я знаю, что этого пока нет в учебнике).

if можно было бы заменить на использование функций min/max и упростить код.

> if ($creditSum < 5000) {


Здесь надо было использовать переменную, а не число 5000.

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

В остальном, решено верно и код аккуратный.
609 2553368
>>511483 (OP)
По поводу задачи со студентами. Как реализовать создание таблицы в базе данных? Через phpmyadmin? Или через отдельный файл? Просто это должно быть для портфолио, если сделаю через phpmyadmin, то тот, кто будет смотреть проект если будет, не увидит процесс создания таблицы, а если сделать через отдельный файл, то получается каждый раз при запуске проекта создается новыя база данных?
И я правильно понял MVC?
Вот я создаю файл index.php. Тут в зависимости от куки отображается либо форма регистрации, либо форма редактирования - это Представление. Окей, если отображается форма регистрации, то пользователь вводит все данные, нажимает "Отправить" и далее <form> отправляет нас на страницу Контроллера? А контроллер вызывает файл Модуля, и тот отправляет все введённые данные в базу данных, затем Контроллер вызывает файл, который отображает таблицу?

>>553307
Спасибо, так и сделал
>>553299
Да, спасибо. А разве старый EXplore не перестали поддерживать? Мне то к спеху задачу студентов нужно сделать, а я год не верстал, поэтому пользуюсь Bootstap
>>550082
Спасибо. Понял.
610 2553432
>>553368
Я создал только БД в phpmyadmin. А в классе, подключающемся у БД и возвращающим объект PDO, создал таблицы этой бд через "CREATE TABLE IF NO EXISTS..."
611 2553436
>>553432
Вот ты создал эту таблицу, но ведь получается, что ты каждый раз создаешь новую таблицу при запуске проекта, нет? То есть данные из базы данных не удаляться, когда ты новую таблицу поверх старой создашь?
612 2553447
>>553186

>начал писать сокращенный синтаксис который у меня не работал


Может ты просто не разобрался или не настроил что то? У меня все работает, это же в самом языке реализовано, никаких проблем не должно быть
613 2553453
>>553436
Почитай еще по sql

>CREATE TABLE IF NOT EXISTS


Создается только первый раз
614 2553455
>>553453
Вэээ, я сколько по SQL читал, такой фертифлюшки не видел, будем знать. Спасибо.
615 2553671
А есть смысл учить PHP в 2022 году, кроме допиливания вордпресса и обслуживания протухшего легаси, которое всё равно через пару лет перепишут? Или лучше душить питона/ноджс/джаву?
616 2553689
>>553368
Или index это и есть контроллер, который вызывает определенную форму в зависимости от куки?
hqdefault.jpg16 Кб, 480x360
617 2553706
>>544469

> Композер это нативный пакетный менеджер? Хуя какие открытия я познал, лул.


Хуйлул. Npm, yarn, gradle, maven -- "нативные"? Узнал новое слово, и вставляешь невпопад?

> на уровне интерпритатора будет


Тыскозал? То есть, если положить ф-цию в соседний файл -- от неё что-то убудет?

Ньюфаг детектед, короче
618 2553723
>>553671

> учить PHP в 2022 году, кроме допиливан


Присоединяюсь к вопросу. Есть ли риск, что внезапно php полностью уступит место ноде и питону?
619 2553733
>>553368

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

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

> Вот я создаю файл index.php. Тут в зависимости от куки отображается либо форма регистрации, либо форма редактирования - это Представление.



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

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

> Окей, если отображается форма регистрации, то пользователь вводит все данные, нажимает "Отправить" и далее <form> отправляет нас на страницу Контроллера?



Да, причем обычно вывод формы и обработку данных от нее совмещают в одном Контроллере - так удобнее. Отличить показ формы от отправки данных можно по HTTP-методу - GET илит POST. Почитай урок про работу с формами: https://github.com/codedokode/pasta/blob/master/forms.md

Если слова "метод" и GET/POST вызывают у тебя непонимание, то прочитай сначала урок по HTTP: https://github.com/codedokode/pasta/blob/master/network/http.md

> А разве старый EXplore не перестали поддерживать?



Он предустановлен в некоторых версиях Windows. То есть человек купил компьютер, включил, а там только Internet Explorer. И почти ни один сайт, кроме Гугла и моего учебника, в нем не открывается. Было бы хорошо, если бы сайт хотя бы немного работал в нем, но это потребует от тебя тестирования и исправления косяков, что требует навыки и время.
619 2553733
>>553368

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

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

> Вот я создаю файл index.php. Тут в зависимости от куки отображается либо форма регистрации, либо форма редактирования - это Представление.



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

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

> Окей, если отображается форма регистрации, то пользователь вводит все данные, нажимает "Отправить" и далее <form> отправляет нас на страницу Контроллера?



Да, причем обычно вывод формы и обработку данных от нее совмещают в одном Контроллере - так удобнее. Отличить показ формы от отправки данных можно по HTTP-методу - GET илит POST. Почитай урок про работу с формами: https://github.com/codedokode/pasta/blob/master/forms.md

Если слова "метод" и GET/POST вызывают у тебя непонимание, то прочитай сначала урок по HTTP: https://github.com/codedokode/pasta/blob/master/network/http.md

> А разве старый EXplore не перестали поддерживать?



Он предустановлен в некоторых версиях Windows. То есть человек купил компьютер, включил, а там только Internet Explorer. И почти ни один сайт, кроме Гугла и моего учебника, в нем не открывается. Было бы хорошо, если бы сайт хотя бы немного работал в нем, но это потребует от тебя тестирования и исправления косяков, что требует навыки и время.
620 2553735
>>553432

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

Для проектов посложнее способ с дампом плохо работает. Когда ты что-то меняешь в структуре БД, ты переделываешь дамп и загружаешь его в БД, но при этом все данные в БД теряются (так как она пересоздается с нуля). Потому в реальных проектах используют миграции - специальные скрипты, которые добавляют или меняют таблицы и колонки, не удаляя данные.
621 2553747
>>553733
Спасибо. Будем делать так
622 2553748
>>553671
Предположим, что я отвечу да. Что это тебе дает? А если отвечу нет?

>всё равно через пару лет перепишут? Или лучше душить питона/ноджс/джаву?


Что будешь делать когда перепишут с питона/ноды/джавы на язык X? Что будешь делать когда перепишут с языка X на язык Y? Тогда изучай языки, появившиеся в последние годы, в надежде, что когда нибудь будут переписывать на них.
623 2553751
>>553723

>Есть ли риск, что внезапно php полностью уступит место ноде и питону?


Полностью на 100%? Прямо за 1 день? Сам ответь. Допустим, что это случилось, что дальше? Не сможешь на другом языке писать?
624 2553756
>>511483 (OP)
Если не можешь решать задачи как на пике (тренировочный контекст для подготовки на стажировку в Яндекс), то сильно ли это сузит выбор вакансий для анона? Или так выделывается только Яндекс и единицы?
625 2553776
>>553756
Первая задача простая. Уровень школьной математики. Просто условие запутанное.
626 2553820
>>553733

>кстати, формы очень похожи и их логичнее сделать в одном и том же представлении, а не копипастить


Они действительно похожи. Допустим они отличаются от заголовка "Форма регистрации"/"Форма редактирования данных". То есть файл Представление должен по куки определить, какой заголовок отобразить. Но представление не может иметь доступа к внешним переменным, а как ему передать куки? Ведь представление это не функция?
627 2553849
>>553751
Начинать карьеру заново, никто условного сеньора-пхпшника не возьмет сеньором-питонистом.
628 2553850
>>553735
Т.е. лучше создать .SQL файл и его импортировать через phpmyadmin например?
629 2553852
>>553849

>Начинать карьеру заново


Пиздец тупость. Логика тут бессильна.
630 2553866
>>553748
Ну у PHP, как я понимаю, этот процесс уже происходит прямо сейчас, а питон и нода наоборот только растут и развиваются, поэтому некорректное сравнение.
И если у какой-нибудь джавы этот процесс будет длиться десятилетиями из-за специфики бизнеса, то в случае большинства проектов на PHP переписать все на другой язык - не самое сложное дело.
631 2553874
>>553866

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


Ты сказал? Если бы это было и так, когда нибудь могут так же переписать с питона/ноды/и т.д. на другой язык. Что будешь делать?

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


Почему тогда не переписывают? Зачем вообще переписывать? Для прикола? Код нужен чтобы решать задачи. Похую на каком языке этот код. Если он решает задачу, то никакой адекватный человек не станет его переписывать. Пойми простую вещь, код сам по себе никому на хуй не нужен, если он не решает задачи. На хуй никому не нужны все эти языки программирования, всем нужны работающие программы. Пусть они будут написаны хоть на азбуке Морзе.
632 2553942
>>553874
Почему тогда на хабре постоянно вижу посты типа "Привет, это хуйлуша из говномаркета и мы переписали наши сервисы с джавы на голанг", "Привет, это еблан из хуйбанка, и мы переписали наше приложение с флаттера на нейтив?
633 2553943
Алсо, ладно легаси, но новые проекты на PHP кто-то начинает? Не считая сайтиков на 3 страницы.
634 2554007
>>553326

>Легко смогу при наличии цикла обработки событий. Файбер позволяет создавать что-то вроде green threads, присотанавливать и возобновлять их.


Какой нахуй цикл, ебанько. Отправив запрос в актуальной версии пхп ты будешь сидеть и ждать ответа. Фабер ПОЗВОЛИТ, и не сделать, а использовать грин треды, когда эти грин треды в пхп сделают. А вот когда их сделают, тогда и будешь пиздеть. Какой же конченный еблан с манямиром, пиздец просто.

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


Я тебе сразу описал сервис, кончелыга:
>>548242

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


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

>Похоже, что обработку миллиона записей (это, кстати, немного)


Тупорылый ты хуесос, о том и речь что это слишком мало для временных затрат на получение этих данных в пхп. Ты там угашенный что-ли?
635 2554023
>>553943
Имхо вкатунец не должен в принципе такими вопросами задаваться, тут хотя бы любую вакуху занять и набираться опыта.
636 2554070
>>553942
Значит было надо. Есть то, с чем php справляется хуже, чем го. Если нет необходимости, то ничего переписывать и не будут. Но чтобы массово просто так из-за популярности какого-то другого языка начали переписывать с php, нет, такого не будет никогда, потому что -деньги.
637 2554098
>>554007

>Отправив запрос в актуальной версии пхп ты будешь сидеть и ждать ответа.


Что? Можно легко реализовать вебсокет сервер стандартными средствами https://habr.com/ru/post/209864/

А еще есть https://github.com/walkor/workerman и https://github.com/swoole/swoole-src
638 2554341
>>553776

А ты учел, что там может быть до 300 000 значений и без оптимизации у тебя будет большой перебор?

>>553756

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

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

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

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

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

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


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

>А еще есть https://github.com/walkor/workerman и https://github.com/swoole/swoole-src


Бля, ты на свуле хоть че-то писал вообще? И ты, собака сутулая, еще че-то там пердел про знания какие-то. Вам таким кукаретическим хуеплетам, которые нихуя не писали колени ломать надо. Свуле сука он рекомендует, черт.

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

Контроллер определяет, какую форму надо показать, и передает это в Представление с помощью переменной.

>>553849

Для сеньора освоить новый язык будет недолго. Иначе он какой-то не такой сеньор.

>>553850

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

mysql ... < file.sql

Вот урок по командной строке: https://github.com/codedokode/pasta/blob/master/soft/cli.md
641 2554400
>>553942

Про переписывание кода есть хорошая история от Джоэла Спольски (он очень умный, работал в майкрософте, придумал Trello и разрабатывал StackOverflow): https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

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

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

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

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

> и мы переписали наше приложение с флаттера на нейтив?



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

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

Представь, что ты владелец бизнеса и платишь зарплату разработчикам из своего кармана. Как бы ты отреагировал на предложение переписать 1М строк кода с Явы на Голанг?
642 2554403
>>554007

> Отправив запрос в актуальной версии пхп ты будешь сидеть и ждать ответа



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

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



Это не типичная задача. Не надо врать. В PHP с этим точно такая же ситуация, как в любом другом языке: будет работать медленно и нагружать сервер.
643 2554406
>>554342

> А то надо доку на китайском читать и десять тысяч человекочасов на ловлю течки памяти



Странно, что у такого талантливого специалиста, как ты, уходит так много времени на поиск утечек памяти. Я-то думал, ты их с одного взгляда на код обнаруживаешь.
644 2554407
>>554098

Вебсокеты и сокеты Беркли это разные вещи.
645 2554456
>>511483 (OP)
Кто-то с amocrm работал? Какого хуя при импорте с excel компаний/сделок постоянно слетает аксесс токен? Как эту хуйню ебаную фиксить, я уже заебался блять, нихуя в интеренете нет на эту залупу.
646 2554572
>>554342
Уебище тупое, есть неблокирующие сокеты. Иди на хуй, пидор
647 2554579
>>554406
Больной ты на голову хуесос. Речь идет о сторонних библиотеках. Ты конечно ни дня не работал и поэтому не знаешь, что в среднем проекте обычное дело когда используется до пятидесяти сторонних либ. И на них, сука ты пробитая, не написано будут ли они течь под ебаным свулом или нет.
648 2554588
>>553328
>>554403
>>554098
>>554572
Перепись вебсокетных кукаретиков. Вы можете со своими статьями про чаты пройти нахуй или пропиздовать в гугл и почитать в чем разница между рест апи и сокетами.

А еще лучше продемонстрируйте свои навыки, дырявые пиздоболы. Давайте вебсокетные черти, напишите мне функцию, которая будет стучаться в три апи без блокировок. Вот вам апи https://testing.googleapis.com/$discovery/rest?version=v1

Заранее ссу на ваши ебала, чмони.
649 2554594
>>554407
Как реализуют вебсокеты? Используя сокеты.
650 2554595
>>554403

>Это не типичная задача. Не надо врать.


Ебанашка, сейчас даже в самом мизерном проекте несколько сервисов. И общаются эти сервисы через очереди и апи. Даже soap уже несколько лет как сдох. Ты блядь если не формошлеп, то 90% времени работаешь с апи.

>В PHP с этим точно такая же ситуация, как в любом другом языке: будет работать медленно и нагружать сервер.


Откуда вы хуесосы берете нагрузку на сервер? Один начал про раст че-то лепетать, щас второй высрал про нагрузку. У тебя твой симфони ебучий или ларавель в тысячу раз больше процессороного времени сжирают, чем любая "обработка" которую ты только выдумать сможешь.
651 2554616
>>554588
Хуй соси, голубец ебаный. Есть неблокирующие сокеты, можно реализовать и вебсокеты, и любое другое неблокирующее сетевое взаимодействие.
ohshit.jpeg58 Кб, 640x640
652 2554653
653 2554750
>>511483 (OP)
В вакансии написано, что знание REST API будет большим плюсом. Это можно изучить за полчаса или лучше сосредоточиться на базах? Тип я понимаю, что REST использует JSON формат, который похож на объекты JS, но при чем тут PHP я не понял.
654 2554903
>>554456

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

Я с такой проблемой не сталкивался и наугад сказать не могу.
655 2554909
>>554588

Прочитай внимательно написанное по ссылке: https://docs.guzzlephp.org/en/stable/faq.html#can-guzzle-send-asynchronous-requests

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

И, кстати, если ты хотел узнать, как параллельно отправлять запросы в PHP, то можно было просто культурно спросить, и тебе бы ответили.
656 2554911
>>554594

Да, сокеты Беркли это низкоуровневое API, а вебсокеты это протокол поверх них. Но не надо их путать, и думать, что "сокет" это просто сокращение от "вебсокетов". Сокеты это "абстракция", которая позволяет программам устанавливать соединение друг с другом и отправлять данные, а "вебсокеты" это часть протокола HTTP. Сокеты можно использовать и без HTTP.
657 2554914
>>554595

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

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



Ты хоть раз в жизни профилировал Симфони-приложение? Подозреваю, что нет.
658 2554925
>>554750

Нет, ты неверно понял. REST это набор принципов для построения API, и они не включают обязательное использование JSON как формата для передачи данных. Соответственно, REST API - это API, соответствующее принципам REST.

Поищи статьи именно про принципы REST. Можешь начать с https://restfulapi.net/

Если тебе непонятен какой-то принцип или вопрос, то уточняй. Например, "ресурсом" там называют сущность на сервере, к которой отправляется запрос, например, информация о товаре в магазине доступна на ресурсе с URL /api/v1/good/123.

На практике часто "REST" API не соответствуют принципам REST и их правильнее называть просто HTTP API.

Если ты совсем плохо знаешь HTTP и не понимаешь слов вроде "метод", то почитай https://github.com/codedokode/pasta/blob/master/network/http.md
659 2555110
>>554616
>>554909
Таак перепись сеньоров пиздаболов продолжается.
Если все так красиво как вы тут срете, то нахуя китайцы свой свуле выпердели тогда? Или они двачей не читают?

КАЖДЫЙ ХУЕСОС ИТТ ПИЗДЯЩИЙ ПРО СОКЕТЫ БЕЗ РАБОЧЕГО КОДА ОФИЦИАЛЬНО ПРИЗНАЕТСЯ ПХП ПЕТУХОМ
660 2555111
>>554909
Бля, борщехлеб. Ты бы не позорился. Пиздец, газл у него асинхронный. Открой блядь код функции requestAsync, чучело.
blackfire-homepage-dev.png173 Кб, 2712x1586
661 2555114
>>554914
Ты наркоман солевой? На чем ты сидишь, признавайся сука. Я тебе третий раз описываю задачу, нарик:

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



А теперь давай переведем ЛОГИЧЕСКИ на твой солевой язык:
1) которые в ответ на запрос обрабатывают миллион записей?
Тебе написали "вытащить оттуда в цикле". Любому кто хоть раз в жизни писал апи очевидно что там все постранично. Это блядь поинт всей задачи, сука. Тебе нужно сделать не один запрос, а по запросу на каждую страницу.

2) Потому что это будет слишком медленно
Что блядь значит "слишком медленно"? Я тебя, объебоса, уже спрашивал знаешь ли ты про сложность алгоритмов. В этой задаче затраты возрастают ЛИНЕЙНО СУКА. В том-то и суть что на пхп тебе похуй миллион там или миллиард, он блядь все последовательно делает: впитал пачку, высрал пачку, следующий. Как не режь, как не переставляй затраты те же.

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

>Ты хоть раз в жизни профилировал Симфони-приложение? Подозреваю, что нет.


Бля, а ты хоть раз смотрел на звездное небо? Подозреваю что да, ты же солевой наркоман блядь. Вот тебе профиль симфони, и че? До контроллера 30мс, после контроллера 25мс из 75 на весь запрос. Сразу перевожу для солевого: это значит что на реальную работу уходит только треть времени, да и та на рендеринг хтмл. В качестве факультатива можешь проверить за сколько отработает цикл на миллионном массиве.
662 2555153
>>555114

На твоем скриншоте blackfire видно, что у тебя включен профайлер Симфони (он вызвается в Kernel::onTerminate), что скорее всего, указывает на то, что фреймворк работает в dev-режиме, а не в prod. Если бы ты выбрал продакшен-окружение, то как минимум terminate у тебя бы не занимал 20 мс, а в районе 1-2 мс.

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

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

> Тебе написали "вытащить оттуда в цикле". Любому кто хоть раз в жизни писал апи очевидно что там все постранично.



Ты читать не умеешь по моему. В вебе в ответ на запрос клиента никто не обрабатывает по миллиону записей, ни в цикле, ни без.
664 2555160
>>555111

Я много лет назад делал парсер с асинхронными запросами с помощью расширения curl (странно, что такой талантливый программист не слышал про такую возможность). Мой парсер скачивал множество страниц параллельно. Ты можешь прочесть про это в документации по расширению curl: https://www.php.net/manual/ru/function.curl-multi-init.php

Далее, в PHP есть поддержка сокетов в неблокирующем режиме (по моему, правда, в виндоуз это не работает, но меня это мало беспокоит), дока:

https://www.php.net/manual/ru/function.socket-set-nonblock.php

Для асинхронной работы с файлами нужно расширение вроде swoole, и тащить при этом 50 дополнительных расширений не требуется.

Изучи предложенную документацию, и после этого покажи, в каком месте guzzle не асинхронный. Или, что проще, используя код, например, отсюда: https://www.geeksforgeeks.org/how-to-make-asynchronous-http-requests-in-php/ посмотри, как он параллельно отправляет запросы.
665 2555161
>>555110

Держи рабочий код: https://www.geeksforgeeks.org/how-to-make-asynchronous-http-requests-in-php/

Ты можешь использовать strace и убедиться, что запросы шлются асинхронно.
666 2555179
>>555161
А где сокеты проебал, чмоня? Выдаю первую медаль пхп петуха. Теперь пиздуй под шконку.
667 2555186
>>555160
>>555161
Теперь идет перепись асинхронных газзл долбоебов. На петухов или пидорасов вы не тянете, пидорасы иногда читать умеют. https://github.com/guzzle/guzzle/issues/1868

КАЖДЫЙ ХУЕСОС ИТТ ПИЗДЯЩИЙ ПРО АСИНХРОННЫЙ ГАЗЗЛ БЕЗ РАБОЧЕГО КОДА ОФИЦИАЛЬНО ПРИЗНАЕТСЯ ПХП ДОЛБОЕБОМ
668 2555188
>>555160
Сеньор пиздабол, я на двести процентов уверен что нихуя ты не писал, но дам тебе шанс постирать штаны.
А ну-ка расскажи нам что будет если отправить твой мульти хуюльти курл запрос дважды подряд? Через сколько времени выполнится второй запрос? Будет ли он ждать первый?
669 2555227
>>555188

Тебе уже написали: запусти strace и посмотри, что будет, если отправить 10 запросов параллельно через curl, guzzle, или неблокирующие сокеты (guzzle, по моему, умеет использовать и мультикурл и сокеты).

Твои высказывания про петухов оставь для своих друзей-одноклассников на переменке.
670 2555230
>>511483 (OP)
Такой вопрос, какой из циклов самый быстрый в переборе массивов?
671 2555243
>>555227
Запускаю свой хуй тебе за щеку. На вопрос ответ будет или слился?
672 2555565
>>555161
Зачем перед пидорком оправдываешься? Пусть хуй сосёт
673 2555567
>>555110
Соси хуй, говно
674 2555658
>>555114

>типичная задача ломиться в три апи разом за миллионами записей


Нет таких типичных задач в вебе, фантазер. По крайней мере никакой нормальный вебдев не будет выполнять оное пока пользователь на проводе висит.
Обтекай.
675 2555665
>>555658
Ай, сорян, это не тебе >>555114
, а серуну >>548242
676 2555934
>>511483 (OP)
Почему куки не сохраняются в openserver?
<?php
setcookie('form', 'edit', time() + 315360000);

require '../bootstrap.php';

// if (isset($_GET['page'])){
// $page = $_GET['page'];
// }else $page = 1;

$studentService = new studentService;
//$studentService->addStudent($_POST["name"], $_POST["lastName"], $_POST["gender"], $_POST["numberGroup"], $_POST["email"], $_POST["ege"], $_POST["yearBirthday"], $_POST["isLocal"]);

$arrStud = $studentService->getAllStudent();

//$studentsCount = $arrStud->num_rows;
//$str_pag = ceil($studentsCount / 50);
require '../View/table.php';

?>
677 2555941
>>555934
А, он устанавливался в пределах этого файла/домена
678 2556054
>>555934

В куке нужно указать путь "/", то есть, чтобы кука была доступна на всем сайте. Иначе кука может быть доступна только по пути, совпадающем с адресом страницы (например, /form.php) и недоступна на других страницах.

Ты можешь проверить путь, указанный в куке, открыв инструменты разработчика в браузере (F12) и там вкладку storage/хранилище.
82931291-C182-4EC5-A9EA-3763EC4226A5.jpeg120 Кб, 1038x1024
679 2556210
Товарищи профессионалы, параллельно со срачем про асинхронность:

Помогите выбрать лучший шаблонизатор. Так как простой РНР в ХТМЛ коде сейчас не комильфо а почему, кроме моды?, объявляется конкурс на самый распрекрасный шаблонизатор. Какие вообще параметры сравнений? Наличие функционала, синтаксис?

Юзал smarty && twig, особой разницы по ошчушчениям не заметил.
680 2556212
>>556210
Дополню вопрос: кто-нибудь пробовал написать свой шаблонизатор? Какие принципы вы бы заложили в эту функцию?
681 2556217
>>556210
>>556212
Олсо, в чём смысл шаблонизатора, если производительность шаблонизатора ниже самого РНР который сам шаблонизатор? Кеширование? Ну так в мемкеше можно закешировать, или сгенерировать дата-файлы. Отделение логики представления? Ну так зачем для этого целый отдельный синтаксис?
682 2556366
>>556217

Смысл в том, что с его помощью код пишется быстрее и выглядит красивее и лучше читается, что экономит силы и время разработчиков. Ты бы открыл главную Твига, там есть объяснение с примерами кода: https://twig.symfony.com/#what-makes-twig-better-than-php-as-a-template-engine

То есть в PHP ты пишешь

<?= echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

А в Твиге

{{ var }}

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

Что касается производительности, то Твиг умеет компилировать себя в обычные PHP-файлы, то есть ты можешь скомпиоировать все свои шаблоны и на продакшене будут использоваться сразу PHP-файлы.
683 2556368
>>556217

Часто требуется не максимальная производительность любой ценой, а разумный баланс между производительностью, удобством работы с кодом, затратами времени программистов. Твиг тут выгоднее, чем PHP. У меня на чистом PHP желания писать шаблоны нету.
684 2556477
>>556217
В норме хороший шаблонизатор переводит свой язык в нормальные пхп-конструкции в html. Такой промежуточный кеш. Работает так же как обычный пхп+хтмл.
testLimes.jpg220 Кб, 3008x2000
685 2557691
Чо по зарплатам, котаны?
Многие сбежали, плюс надо поддерживать брошенные западные проекты. Делитесь, кого куда позвали на бешеные бабки?
686 2558107
>>511483 (OP)
Есть ли где-нибудь нормальная реализация алгоримтов на php, без всяких фентифлюшек или замудренностей?
687 2558162
>>557691
Хуй без соли
Не вкатился
688 2558273
>>558107
Что ты подразумеваешь под

>фентифлюшек или замудренностей


?
689 2558331
>>558273
Гуглишь реализацию алгоритма, а там вместо простой реализации происходят какие-то фокусы, используют ненужные для понимания алгоритма функции.
Вот пример Bubble sort на хабре.
public function sort(array $data)
{
$count_elements = count($data);
$iterations = $count_elements - 1;

for ($i=0; $i < $count_elements; $i++) {
$changes = false;
for ($j=0; $j < $iterations; $j++) {
if ($data[$j] > $data[($j + 1)]) {
$changes = true;
list($data[$j], $data[($j + 1)]) = array($data[($j + 1)], $data[$j]);
}
}
$iterations--;
if (!$changes) {
return $data;
}
}
return $data;
}
Код может быть хороший, я не знаю, но такой код громоздкий.использует list, этот код зачем вообще:
if (!$changes) {
return $data;
}

Мне просто легче разбираться на примере, а я смотрю на такаю реализацию и не понимаю
689 2558331
>>558273
Гуглишь реализацию алгоритма, а там вместо простой реализации происходят какие-то фокусы, используют ненужные для понимания алгоритма функции.
Вот пример Bubble sort на хабре.
public function sort(array $data)
{
$count_elements = count($data);
$iterations = $count_elements - 1;

for ($i=0; $i < $count_elements; $i++) {
$changes = false;
for ($j=0; $j < $iterations; $j++) {
if ($data[$j] > $data[($j + 1)]) {
$changes = true;
list($data[$j], $data[($j + 1)]) = array($data[($j + 1)], $data[$j]);
}
}
$iterations--;
if (!$changes) {
return $data;
}
}
return $data;
}
Код может быть хороший, я не знаю, но такой код громоздкий.использует list, этот код зачем вообще:
if (!$changes) {
return $data;
}

Мне просто легче разбираться на примере, а я смотрю на такаю реализацию и не понимаю
690 2558337
>>558107
https://github.com/doganoo/PHPAlgorithms
Хз что ты понимаешь под финтифлюшками, тут нормальная реализация.

Главное понимай что это чисто факультативное занятие, эти "алгоритмы" нет смысла тащить в прод. Они кроме чсв ничего не дадут.
691 2558390
>>558337
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size - $i - 1; $j++) {
if (Comparator::greaterThan($array[$j], $array[$j + 1])) {
$tmp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $tmp;
}
}
}

>Comparator::greaterThan


И что это за хрень? Какую то функцию реализовал, а зачем... Ладно, спасибо.

>Главное понимай что это чисто факультативное занятие, эти "алгоритмы" нет смысла тащить в прод.


Да я чисто из-за вакансий, а то в каких то известных компаниях требуют знания алгоритмов и структур данных. Да еще и закидывают задачи уровня олимпиад. Может такие компании нужно обходить стороной, не знаю. Просто не нравится факт того, чтоне можешь попасть в некоторые компании из-за не понимания решения задач
692 2558527
>>558331
Флаг changes позволяет выйти из цикла раньше времени - когда алгоритм перестает менять местами элементы т.к. они уже идут по порядку, а итерации еще не закончены.
693 2559431
>>558390
Потому что нужно как-то сравнивать объекты: ноды дерева, списки итд. Автор использует для этого интерфейс IComparable https://github.com/doganoo/PHPAlgorithms/blob/master/src/Common/Interfaces/IComparable.php Да и вообще привыкай, что работаешь только с объектами, все примитивы тоже должны быть засунуты в объект, хотя бы для того чтобы обеспечить иммутабельность.
694 2560095
Сап пхпшники, немного странный вопрос, но как понять что можно написать в резюме?
Типо я разок поработал с докером, могу это в резюме написать?
695 2560181
>>560095
Только после 10 лет опыта работы с инструментом и прохождения сертификации
696 2560438
>>511483 (OP)
Читаю про реализацию авторизации и там роль пользователя (модератор/обычный юзер), ну или просто факт того, что юзер авторизовался пишут в _SESSION[]. Но разве это правильно, разве нельзя другому пользователю подправить SESSION, чтобы представиться модером?
697 2560489
>>558162
как ты умудрился не вкатиться в РНР? полно любой работы на любой кошелёк и мозги
698 2560491
>>560438

>разве


Представь себе, блять, по какой-то странной причине нельзя редактировать сессии других пользователей. Теперь понятно, как вы не вкатываетесь, в голове пиздос!
699 2560587
>>560489
Откликался только на стажировки или вакансии без опыта, которых там от силы 1-2 штуки в 2 недели. Попал на стажировку, но оффер не получил, да и особо не хотел. Под конец сказали, что вкатыш будет работать с вордпрессом первые полгода, я ебал
Посмотрел видосы Назарова про пиздеж в резюме. Оформлю стажировку, как год опыта и начну рассылку. До этого знал про то, что пиздеть нужно, но мне стремно было и я надеялся, что через стажировку смогу вкатиться, но сильно все затянулось. Терять нечего, хули
700 2560656
>>560587
А я вот ни разу не пиздел при трудоустройстве. Работаю с далёких 00-х.

Не понимаю, как пустое место можно выдать за год опыта. Впрочем, в какой-нибудь Сбер или "Рога и копыта" мб и прокатит.
701 2560664
>>560656
В гугле работаешь?
702 2560676
>>560656
Дед, спок
703 2561287
>>560676
turn down for what?!

>>560664
Не уверен, что мне надо в гугл. Работаю в ДС, в достаточно кошерной финансовой структуре. Платят норм, и будет ещё лучше. А что?
FEEAA298-4C22-48F9-AD9C-6F3699C2BC6E.png698 Кб, 640x737
704 2561292
ЗП опрос!

За какую сумму вы были бы готовы стажироваться/пойти на первую работу по РНР, если:
: Надо работать с легаси-монолитом без фреймворка (но с Compoaer, можно понемногу подтягивать библиотеки)
: Нужно минимальные знание jQuery && Bootstrap 4
: Есть очереди на RabbitMQ, но с ними тимлид поможет, если что
: 2-3 дня в офисе, остальное удалёнка

Принимаются ответы для
: ДС
: Вашего родного города
705 2561300
>>561292
*с Composer

слоуфикс
706 2561483
>>561292

>легаси-монолитом без фреймворка


>jQuery


150k минимум
707 2562302
>>561483
Удвоил. Можно больше даже - если там легаси уже, то деньги есть.
Инцел 708 2562797
Че тред сдох? Я пропустил перекот?
709 2562887
>>562797
надо пилить перекат; кто умеет?
710 2562942
>>511483 (OP)
В чем разница двух вариантов функций?

$a = 22;

function testFunc($a) {
global $a;
$a = $a + 10;

}

function testFunc2(&$a) {

$a = $a + 10;

}

Обе изменяют внешнюю переменную, получается & и global просто варианты на выбор?
711 2562965
>>562942
Если нет ещё одного уровня вложенного контекста -- то никакой разницы.
712 2563052
Насколько важно глубокое пынимание sql для вкатусика? Чет меня вымораживает эта тема с базами
713 2563054
>>562965
Типа еще одной вложенной функции?
714 2563055
>>563052
Тогда php не твое, пробуй фронт.
715 2563091
>>563055
Почему? PHP мне нравится, но базы данных какая то душная тема
716 2563447
>>563091
Это ты с апи еще не работал. Или с nosql парашей. Бекэнд = код + база.
Либо Js и на фронт, либо учи sql.
image.png207 Кб, 1080x586
717 2563467
718 2563482
>>563091
А что душит?
719 2563499
>>563482
Я не он, но вложенные запросы.
720 2563781
>>563052
Sql это прям база для бэкенда, в смысле основа. Плохое знание бд это примерно одно и то же, что и плохое знание бэкенда.
В том числе и потому, что если ты хуево напишешь код на php, то его всё равно сравнительно просто масштабировать, ну поднимешь ещё один веб сервер и нормально будет, даже не очень дорого, cpu нынче ничего не стоят.
А вот хуевая работа с базой во-первых плохо масштабируется, во-вторых будет задевать соседние запросы (один мудак из сотни разрабов может загрузить базу и заставить тупить всё приложение) и может влететь в копеечку в каком-нибудь амазоне, который биллит тебя по дисковому io. Какой-нибудь тупой забытый индекс приведет к сексканам и ты при хорошем рпс довольно быстро увидишь веселые чиселки в счете.

Вообще, у бэкенд-разработки есть четыре кита, в порядке убывания важности
- Язык (в данном случае пыха) и инфра вокруг него (популярные либы и фрейморки, выбирай один получше, для новичков лучше ларавела имхо вариантов нет)
- Базы данных (выбери одну и её изучай)
- Сети (протоколы, http 1/2, мб grpc)
- Инфраструктура (nginx там, всякая мишура для билдов, мб докер с кубами, но это уже миддл+ левел)
Если ты в них не разбираешься, то ты или стажер или чмошник, но никак не разработчик.
721 2563787
>>563781
Всем, кто прибежит и начнет кукарекать про микросервисы заранее ссу в лицо и напоминаю, что распиливая какашку на субкакашки, вы конфетку не сделаете всё равно. И за 100500 баз вы в итоге будете платить больше, чем за одну ну или железка будет всё равно одна, тогда вообще ничего не изменится, а запомоить весь сервис хуевой нагрузкой неприятно настолько же, как и всё приложение, тем более учитывая связность в микросервисной архитектуре.
722 2563810
>>563781
Пон, спасибо. Тогда буду рвать ануз и превозмогать.
723 2564091
>>563052
>>563499
Вот очень годный курс на степике по SQL, его бы в шапку добавить.
724 2564162
>>564091
Сначала не понял, а потом как понял
726 2564231
>>564198
Посмотрел оглавление, такой же скам, как и большинство прочих курсов. Сойдёт только для совсем зелёных джунов, которым тем более не жалко денег.
727 2564773
>>511483 (OP)
Аноны, посмотрите, пожалуйста, реализацию авторизации в стиле MVP. Какие есть ошибки? Если что, контроллер вызывается в файле login.php, а не за ее пределами.
https://codeshare.io/X81RMl
>>564231
>>564198
Курс хороший, но это больше практика. А последние задачи потребуют у тебя пол дня только для того, чтобы понять, что от тебя требуют. Для новичков бы не посоветовал, так как сам автор говорит, что это не обучающий курс, а тренажер.
729 2564931
>>563781
Поменяй Laravel на Symfony и будет true
730 2564990
>>564931
Симфони прекрасен и начинай я новый проект на пыхе - выбрал бы его и только его.
Но новичкам всё же лучше подойдёт ларавел пожалуй. Он и попроще структурно, и мануалы пободрее и требований к навыку архитектора поменьше предоставляет.

>>564773

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


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

Курсы не нужны, вообще. У меня часто спрашивают знакомые и я не видел ни одного нормального курса ни по одной технологии вообще. Что популярные, типа яндекс.практикума и говниллбокса, что малоизвестные - все скам и за твои деньги просто прочитают тебе часть оглавления любой книги по программированию/базам/алгоритмам/any. Никакой нормальной базы они поэтому не дают, а т.н. "практика" это как правило несколько тупых и плохо поставленных заданий, которые можно и самому себе придумывать.
731 2565097
Сап пыхари. Я перебежчик с фронтенда после курсов, понял что бек интереснее лично для меня и взгляд пал на пыху, затем го для микросервисов. Опыта если что нет, я вкатун. Посоветуйте IDE. Пхпшторм платная, не предлагать только если где-то можно скачать.
732 2565116
>>565097
Кроме шторма нормальных IDE нет. Там есть триал на месяц, если немного погуглить, то научишься его бесконечно сбрасывать.
На крайняк есть саблайм и вскод, но это совсем не то.
733 2565129
>>563054
дыа
734 2565134
>>565097
>>565116
VSCode +- вполне норм, не слушай душнилу.
Из классики opensource -- Eclipse / NetBeans.

А так-то да, Intellij Idea / PHPStorm -- наиболее технически продвинутая штука, попроси РАБотодателя оплатить, чё как маленький.
735 2565149
>>565134
Вот когда стану фелстеком, тогда и попрошу работодателя. А пока я только учусь, в идеале хочу стать пыхарем, немного попробовал, посмотрел как друг делает там всё - понравилось. Надо было изначально идти в бек, как я и хотел, но повелся на то что якобы "сразу видно результат". Нахуй фронт, только в качестве неосновного знания. При этом уже есть пару петов на фронте, буду их поддерживать, улучшать, хули. Дабы не забывать. Продолжу пожалуй в вскоде.
bdf4f1a84efbaf45044a3bd55fe2ff71.jpg131 Кб, 1080x1071
736 2565162
Нужно ли джуну+ учить сборщики типа webpack? И нужно ли обязательно VUE знать? Последнее меня вымораживаетт сейчас

Стек js/laravel/html/css - для портфолио буду юзать muicss чтобы с фронтом не дрочить мозги. Теперь вопрос, этого хватит для бекендера? Если я прям кишки этих языков дрочу?
737 2565164
>>565162
А базы данных?
738 2565168
>>565134
>>565149
Вы че ебанутые? Все продукты jetbrains взломаны,
https://github.com/libin9iOak/ja-netfilter-all

Ну почти все, хз что там с fleet и тд

В некоторых компаниях спецом консольный гит например не юзают, и стиль кода по ide ведут. а на vscode одни костыли на костыле, vscode как блокнот хорошо работает чтобы побыстрому наклепать что нибудь.
739 2565170
>>565164
Ну само собой, mysql, pdo/orm может быть postgre и подобное
740 2565176
>>565097
Если ты не в состоянии спиздить рабочий инструмент тебе в пхп делать нехуй, верстка твой потолок. https://github.com/libin9iOak/ja-netfilter-all

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

Так что все эти разговоры про сорта и вкусы это хуйня полная. Чем быстрее начнешь пользоваться предназначенным для своей работы инструментом, тем больше времени жизни и нервов сэкономишь.
741 2565181
>>565162
Бамп вопросу
image.png200 Кб, 640x285
742 2565193
>>565176
>>565168
Блять, ну это рак мозга -- зажимать у коллег $30/мес, и что-то там пытаться украть, накатывая вирусы и кейгены.

Хочешь быть тру и не платить -- честно катись на православные NetBeans и Eclipse
743 2565194
>>565162
>>565181
Нет, не обязательно, если не собрался на конкретное место работы.
744 2565214
>>565193
Нет там вирусов.

>>565176
>>565168
Спасибо.
745 2565236
>>565214

>Нет там вирусов



Есть. Вирусы долбоебизма и нищебродства.
Снимок экрана от 2023-01-07 00-11-48.png153 Кб, 1366x768
746 2565247
>>565236
Какие нахуй вирусы и кейгены? На линуксе?

Там java-демон который прикручивается к ide c твоей же папки которую ты указал. Лицензия до 2025 года, новые версии обновляются у других. Незнаю, если с сетью-дебагом-деплоем-гитом проблем нет, то нахуй свои щекели тратить
747 2565254
>>565247
Ок, ретранслирую эту мысль в головы твоих заказчиков, которые тебя скоро кинут.
748 2565279
>>565193
Много матов, извиняйте коллеги.
749 2565547
>>565247

>сетью


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

>остальное


как часы работает
750 2565552
А вообще да, вскод петухи это жесть, не знаю ни одного коллегу, который пользовался бы вскодом, кроме как навороченным блокнотом.
751 2565564
>>565552
Ну я когда вкатывался во фронт, то использовал вс код ясное дело. Друг говорил качай вебшторм, но вот вчера, тонны нефти анонам что подсказали, скачал пхп шторм, это как вебшторм, только с приблудами для пыхи, и охуел от того, насколько лучше. Пиздец, будто новый мир. Так что пока не попробуешь, не узнаешь.
752 2565808
>>565564
Ты кстати охуеешь ещё сильнее, если пересядешь на какую-нибудь джаву или (особенно) котлин. Там за счет большей статичности языка IDE настолько развитая, что труъ программисты практически не пишут код, автокомплитится примерно всё. Если знаешь хоткеи и возможности IDE, конечно. Начиная от Move method, Implement interface и Generate test и заканчивая рефакторингами и лайв темплейтами.
753 2565909
Как кстати поменять какое-то одинаковое слово в нескольких местах в коде? (vscode)
754 2565981
>>565909
Выбираешь слово, смотришь чтобы другие подсвечивались и cltr+D
755 2565984
>>565909
sudo snap install phpstorm --classic ну и дальше сам догадаешься.
756 2566023
>>511483 (OP)
Пытаюсь рабоать с api, в документации написано:

"Наш сервис ожидает ответ от хука не более 2 секунд. Если мы не получаем ответ за указанное время или код ответа не успешный (HTTP код не от 100 до 299), мы считаем хук не доставленным, а отклик невалидным.
При отправке запроса информация считается принятой, если в заголовке http ответа будет возвращён код от 100 до 299"

Че от меня хотят? Что мне написать в файле, чтобы им вернулся ответ?
757 2566107
>>566023
Ничего не понял, кто веб хук программирует? Ты? Или ты его вызываешь?
Полностью опиши ситуацию.
758 2566191
>>565808

>статичности языка IDE


шторм в такое тоже умеет, кстати, только с небольшим костылем нужно в пхпдоке уточнить тип переменной, аж охуел, когда лид такой прикол с сериализацией проделал
759 2566192
А вот чего реально в шторме не хватает - форматирования сваггера. Всё думаю самостоятельно написать плагин, но лень...
760 2566196
>>566191
еще он такое умеет с жыесом, но жыесдок это meh
761 2566261
>>511483 (OP)
Какие есть варианты более глубже изучить язык? Я имею ввиду обучающие материалы, там более продвинутые курсы, такого плана.
762 2566701
Сап, аноны! Читаю сейчас "PHP 8 Объекты, шаблоны и методики программирования". Реквестирую материалы с описанием полного цикла создания сайтика с использованием ООП, шаблонов, в общем, хочу посмотреть, как правильно использовать разные технологии и ООП в php на реальном примере.
А еще, что у джуна PHP/JS на собесе будут спрашивать?
763 2566813
>>566701

>А еще, что у джуна PHP/JS на собесе будут спрашивать?


Конечно, что за вопросы.
764 2566880
>>566191
Это не то, совсем. За типами тебе надо следить руками, а также отсутствует нормальный вывод типов, дженерики, вот это всё.
Ты не спорь, а просто проверь сам, если не согласен и удивишься от того, насколько я прав.
765 2566884
>>566192
Это не задача шторма. Генерация документации - это задача инфраструктуры, то есть, тулчейна. В идеале даже, как часть CI/CD.

Ну и да, по моему опыту, намного удачнее, когда код генерируется из сваггера, а не наоборот.
Так как в этом случае у тебя больше возможностей работы с описанием апи, возможностями его создания, заполнения всякой метой и так далее. Можешь даже собирать её из нескольких источников. А уже имея схему, генеришь код на любом языке, не ставя схему в зависимость от некой тулзы генерации.
Грубо и супер упрощенно говоря, говняная тулза генерации схемы из кода (или просто код - какое-нибудь говняное легаси) будет генерировать плохую схему, потом эта схема будет использоваться для генерации клиентов под андроид и айос и это говно потечет дальше, в код на других языках.
А в случае, когда схема не зависит от изначальной тулзы/языка, ты можешь сделать её любой, а проблемы, если и возникнут, то уже на уровне конкретного языка и не будут расползаться.
image.png435 Кб, 1024x1024
766 2566948
>>566261
Рекомендую
767 2566951
Очень сильно кринжую, когда слышу или читаю нахрюк 3/4 интернета на PHP, а значит это круто! Блять, там из этих 3/4 99% дерьма на вордпрессе. Чем гордятся, я ебу
768 2566959
обдристался с легасипарашных нищебродных опущенцев, ладно, сидите тут, а я пошёл в свой уютненький шарпотредик
image.png127 Кб, 300x252
769 2566969
>>566959

>пук

770 2566970
А у меня вопрос.
Вот допустим есть проц с 8 ядрами.
и есть скрипт index.php который включает в себя код по типу
1)$startDate = текущее время
2)wheile цикл, где идет просто i++ до 1 млн
3) $endDate = текущее время
4) timeDiff = $endDate-$startDate
5) file_put_content(name = $timeDiff)
допустим, что скрипт выполняется за 1 минуту.
если мы в кроне запустим 8 паралельных копий этого скрипта они все закончат работу +- одновременно?
как в данном примере поведет себя пыха? нагрузит проц на 100% одно ядро или все ядра?
я попробовал нечто подобное у себя, но у меня просто закешировалось все и цикл до 1 млн из оперативы подтягивает
(время работы скрипта 0 сек, 0% загружен проц и 2 гб оперативы жрет)
Спасибо за внимание
771 2566993
>>566970
Ответ будет такой: "оно зависит". Пыха вообще не оперирует процессорами и/или тредами. Так что если ты десять раз запустишь `php index.php`, то у тебя в операционной системе просто запустится десять процессов. Как она у тебя их разберет - черт его знает, зависит от версии ОС, настроек, модели процессора, текущей нагрузки и много чего ещё. Грубо говоря у ОСи есть планировщик, который раскидывает задачи между потоками, переключает их и всё такое.
В случае, если ты будешь вызывать скрипт через php-fpm, то всё будет чуть сложнее, так как фпм это сам по себе менеджер процессов и там всё будет зависеть от количества воркеров и прочих настроек. А потом опять от ОСи, потому что всё равно воркеры=процессы и исполняет их она.
772 2566997
>>566951
Добро пожаловать в реальный мир, не просто так придумана фраза "миллионы мух не могут ошибаться".

Большинство людей не очень умные.
Большинство вакансий - нищебродское говно.
Большинство девелоперов - слабаки.
Большинство софта - говнокод.
Большинство фильмов - ширпотреб.
И так далее.
773 2566999
>>566993
Спасибо за ответ. Просто есть скрипт который парсит данные и грузит их в бд. Данных много и работает он долго. Но заказчику нужен именно php.
Я вот думаю, мб максимально возможно разбить этот скрипт на максимально независящее друг от друга процессы, но что бы все это в конце вылилось во что то единое.
774 2567009
>>511483 (OP)
Как делать грамотно паузы между запросами к api? У api стоит ограничение на количество принимаемых запросов, не более 7 в 1 секунду, я сделал конечно вариант через рандомное число, которое потом помещается в sleep(), но все же этот вариант мне видится не очень, как делать правильно?
775 2567119
>>567009
А ты прикрути очередь. Очереди это щас модно. Будешь дергать по одному и никогда семь запросов за секунду не успеешь сделать. Заебенишь презентацию как внедрял, доклад ебанешь, премию получишь, одна польза.
Думать меньше надо, а соображать больше.
776 2567206
>>567119
Что за очередь, как делать примерно?
777 2567241
>>567206
Да хуль там делать.
Берешь кролика. Демон срет в кролика. Перед запрососм в АПИ дергаешь кролика. Если в кролике есть какое-то гавно, то стучишь в апи.
778 2567252
>>567241
Самый идиотский стиль письма ever, представляется эдакий весельчак-переросток.

>>567206
он говорит про rabbitmq
779 2567260
>>567241
Бля, дядь, ну хоть просто дернуть метод не посоветовал, уже неплохо, двачная тех поддержка растет и ширится.
780 2567355
>>566701
А смысл, сейчас все равно уже не вкатишься
781 2567403
>>567355
Неосилятор, плез
782 2567495
>>511483 (OP)
Пытаюсь прочитать .csv файл, использую библиотеку league/csv, там в классе Reader есть метод класса - public function fetchColumnByName(string $name): Iterator
Что за формат iterator? Как с ним взаимодействовать? Можно ли его в понятный мне array перевести будет?
783 2567629
>>567495

>формат iterator


Не формат, а тип. Гласит о том, что это итеррируемый объект который можно запихивать в цикл и там с ним работать.

>Можно ли его в понятный мне array перевести


Зачем?
784 2567694
>>567495

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

Что значит "реализует"? Что у возвращенного объекта будут методы, описанные в интерфейсе Iterator. Этот интерфейс встроен в PHP и описан в документации: https://www.php.net/manual/ru/class.iterator.php

Если ты вдруг забыл, что такое интерфейс, есть урок: https://github.com/codedokode/pasta/blob/master/php/interfaces.md

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

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

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

$iterator = $x->fetchColumnByName($name);
foreach ($iterator as $value) {
var_dump($value);
}

Разумеется, кроме foreach, можно использовать и функции для работы с итераторами вроде iterator_to_array.
785 2567698
>>567009

Записываешь в переменную время отправки первого запроса. Когда хочешь отправить второй запрос, проверяеешь - прошла ли 1/7 секунды с предыдущего запроса, если нет то вычисляешь, сколько времени осталось ждать и ждешь функцией usleep.
786 2567705
>>566970

> если мы в кроне запустим 8 паралельных копий этого скрипта они все закончат работу +- одновременно?



Скорее всего да, но таких гарантий нет. Могут и не одновременно, если, например, процессор будет загружен чем-то еще.

> как в данном примере поведет себя пыха? нагрузит проц на 100% одно ядро или все ядра?



Операционная система (не PHP) постарается занять все доступные ядра, если они не заняты другими программами. Но скорее всего, процессор не будет загружен на 800%. Дело в том, что твоя программа, кроме вычислений, скорее всего будет работать с файлами или с сетью, а в этом случае она будет простаивать в ожидании ответа и процессор не будет использоваться в это время. По этой причине, если у тебя программа такого типа, то стоит запускать не 8, а 9-12 копий программы или даже больше. Определять точное число надо экспериментально, глядя на загрузку процессора.

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



А ты попробуй что-то считать в цикле и выводить итог в консоль, а то может быть там оптимизатор видит, что цикл ничего не делает и пропускает его.
787 2567707
>>566999

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

А как генерировать код и сваггера, чтобы при правках кода и при правках сваггер-файла и перегенерации кода ничего не терялось?

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

По моему, удобнее все же писать код, к нему добавлять аннотации, из которых генерируется сваггер-файл. Есть утилита swagger-php, есть L5-Swagger для Laravel и тд.
789 2567714
>>566701

Не могу дать готовый урок, но в шапке есть задача про список студентов, и к ней преподробнейшие комментарии, где расписано как раз то, что тебе нужно.
790 2567720
>>566023

Ты можешь отдать код ответа с помощью функции http_response_code() или header() в PHP.

Если ты плохо понимаешь слова "код ответа HTTP", то почитай урок по основам HTTP: https://github.com/codedokode/pasta/blob/master/network/http.md
791 2567722
>>565984

Кстати, плохой совет, так как --classic дает проприетарной программе полный доступ к твоему аккаунту на компьютере и всем данным в нем.
792 2567744
>>564773

MVP или MVC? MVP это Minimum Viable Product.

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

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

То есть, 1 контроллер - это одно действие пользователя, 1 вью это одна страница, а 1 модель это одна таблица в БД или 1 кусочек функционала.

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

- require надо ставить в начале файла.
- нужно убирать пробелы с краев в приходящих из формы данных
- при ошибке соединения с БД ошибку надо писать в лог (error_log()), чтобы ее увидел админ, а пользователю показывать красивую страницу ошибки
- глобальные переменные запутывают код и это очень плохо. Явно передавай соединение с БД в функцию, а не бери из глоб. переменных.
- не храни пароли в БД, а храни соленые хеши от них, урок https://github.com/codedokode/pasta/blob/master/security/password-hashing.md
- не вставляй переменные в SQL запрос, это создает уязвимость, урок https://github.com/codedokode/pasta/blob/master/security/sql-injection.md
- при ошибке желательно вывести в форме введенный логинЮ, чтобы не печатать его второй раз
- при ошибке желательно писать, что неправильное: логин или пароль

Спасибо, что код короткий и вставлен через сторонний сайт.
793 2567751
>>564773

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

- функция проверки логина, пароля
- функция, которая ставит признак входа в сессии
- функция, которая удаляет признак входа из сессии (разлогинивает)
- функция, проверяющая наличие признака входа в сессии

При таком подходе вся работа с авторизацией у тебя будет в одном файле и если ты как-то захочешь поменять механизм (например, вместо сессии использовать БД или куки), то тебе будет достаточно исправить только один файл, не трогая остальной код. Также, архитекутра будет более чистая.
794 2567757
>>562942

Второй вариант лучше, так как переменная явно передается в функцию и это видно. Но еще лучше был бы третий вариант, где результат возвращается через return, а не через изменение входной переменной.
795 2567769
>>562887

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

>>560587

А почему тебе не предложили оффер после стажировки?

>>560438

Сессия это файл, хранящийся на сервере. А у пользователя в куках хранится только имя этого файла (длинное и трудноподбираемое). Поэтому пользователь не может читать или записывать в сессию. Это может делать только PHP-скрипт на сервере.
796 2567774
>>558337

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

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

Или, может тебе попробовать написать свою игрушечную СУБД на PHP, чтобы лучше понимать базы данных?
798 2567836
>>567783
Уже все норм. Просто один момент с самого начала неправильно понял и из за него были проблемы
799 2568112
Привет
В школе девопсов дали задание развернуть вот это приложение Symfony Demo Application https://github.com/symfony/demo

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

Как мне добавить в репу миграции и данные, которые можно загрузить из fixtures? Там есть данные и они подгружаются через :
composer require doctrine/doctrine-fixtures-bundle --dev
php bin/console doctrine:schema:create
php bin/console --env=dev doctrine:fixtures:load

Воообще не могу разобраться, аж устал.
800 2568117
>>568112
Лол, как это Symfony не предназначен для развёртывания?

А что тебе там нужно, кроме
- установки значений в .env файле
- composer install
- запуска миграций
- мб запуска тестов
801 2568147
>>568112
Ты лучше объясни хули ты там такое учишь в школе девопсов, если ты не в состоянии три консольные команды выполнить?
802 2568244
>>568117
Но в этой репе нет миграций. Открой и посмотри.
Как добавить те, которые в fixtures?

Хочу чтобы авторизация работала. Допустимо один раз запускать какие-то команды, но fixtures ведь нужны для автоматизированных тестов. Это не то
803 2568250
>>568147
Там все плохо сделано.
Раздолбаи сделали раздолбайский курс. Хз зачем я в это ввязался.

Я, пожалуй, даже сдал бы это задание на sql, но лучше сделать хорошо и приближенно к реальности
804 2568253
>>568250

>задание на sql


На sqllite.
805 2568265
Как же хорош Эклипс после VSC. И особенно на линуксах.
Рекомендую попробовать кто ещё не.
806 2568278
>>568265
Уходи. Тут только макос господа
807 2568290
>>568278

>макос


Там же для дизайнеров и прочих пидрил, а не программистов. Не?
По крайней мере с точки зрения удобства и поддержки разраба Винда сосёт даже у кривенькой Убунты.
808 2568295
>>567722
Это же IDE, ты и так захочешь его ей дать, чтобы она файлы могла все редактировать, встроенный http клиент работал и тд и тп.

>>567711

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


Никто и никогда не должен править руками сгенерированный код.
Сваггер кодген генерирует http клиент и к примеру интерфейсы для http сервера. А ты потом просто вызываешь методы клиента или реализуешь его интерфейсы на сервере, ну и юзаешь структуры сгенерированных запросов и ответов ещё.

> По моему, удобнее все же писать код, к нему добавлять аннотации


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

>>566999
Так у тебя здесь не php узкое место, лол. Php работает примерно моментально в данном случае, в сравнении с работой с диском и, в особенности, с работой с базой.
И оптимизировать тебе нужно соответственно эту часть.
Ну или ты наговнокодил и каким-то образом заставил тупить прослойку, которая тупо вычитывает байтики с диска, разюирает их и посылает по сети в базу.
809 2568299
>>568290

>Не?


не
810 2568324
>>568290
Вообще-то не совсем, мак с точки зрения софта это такой линукс для людей. Далеко не всем программистам нравится ебать себе мозг, решая неизбежные косяки с линуксом к примеру блютус в линуксе традиционно работает через жопу. Макось не идеальна, но всё же очевидных косяков там меньше, к примеру, для того, чтобы мак начал засыпать при закрытии крышки, тебе не придется лезть в logind.conf или гуглить, чтобы выяснить, что тебе нужно ставить какой-нибудь отдельный gnome-tweaks, better-gnome-tweaks или прочую херабору.

Плюс, с точки зрения железа и сборки, "ноутам" от эппла просто нет конкурентов. Качество экранов, качество сборки, толщина и легкость, клавиатура, просто божественный тачпад и тд и тп. У меня было много флагманских ноутов и ни один dell или lenovo пока не сравнился с прошкой, даже из той же ценовой категории.
А сейчас ещё и процы на М1+ подъехали, это вообще атас.
811 2568412
>>568112

Как написано в README, данный проект правльно нужно разворачивать командой composer create-project или symfony new.

Также, там в data есть база данных sqlite.

> Как мне добавить в репу миграции и данные, которые можно загрузить из fixtures? Там есть данные и они подгружаются через



Сделал ли ты composer install сначала? И если сделал, то какие ошибки выдаются при попытке запуска указанных тобой команд?
812 2568415
>>568244

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



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

Миграции нужны для выгрузки на прод и для передачи изменений другим программистам.
813 2568424
>>568295

> Это же IDE, ты и так захочешь его ей дать, чтобы она файлы могла все редактировать, встроенный http клиент работал и тд и тп.



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

> и к примеру интерфейсы для http сервера.



Зачем мне интерфейсы для контроллеров? Что они дают, кроме раздувания объема кода?

> и юзаешь структуры сгенерированных запросов и ответов ещё.



А если мне надо в них что-то подправить? По моему, проще сделать структуры и из них генерировать сваггер-файл.

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



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

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

По моему, описанный тобой подход хуже.
814 2568429
>>568295

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



Как я помню, аннотации сделаны так, что ими можно описать любые структуры, которые есть в swagger.
815 2568439
>>568324

Ты красиво все описываешь, но в реальности это не так красиво.

В маках все распаяно. Хочешь проапгрейдить память с 8 до 16 Гб? Покупай новый мак за 200 000 вместо планки памяти за 2 500. Аккумулятор потерял емкость? Покупай новый мак. Боишься, что камера тайно тебя снимает? Покупай стороннюю шторку на камеру, ведь физического выключателя там нет, как и шторки.

Маки очень сильно оверпрайснуты. Единственное, что в них есть хорошего, это дисплей. Все остальные компоненты там излишне дорогие и мне бы хватило более слабых, но более дешевых, но их тебе Эппл не продаст. То есть, ты покупаешь дорогой процессор и далее используешь его на 10%, а за что ты платил оставшиеся 90%, непонятно. Свои собственные процессоры от Эппл более слабые, чем процессор Intel и AMD, хотя стоят не меньше.

Далее, в Линуксе нет телеметрии, а как насчет маков?

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

В Маках до сих пор нет полноценной изоляции для программ и защиты от сбора данных об оборудовании.

Наконец, в Линуксе, если что-то не работает, ты можешь все изучить, отладить, исправить, а если в маке что-то не работает, то остается только его выкинуть или мириться с проблемой.
816 2568441
>>568324

>блютус в линуксе традиционно работает через жопу


У меня нормально всегда работал - три пеки сменил + ноут. Не было проблем никогда.

>тебе не придется лезть в logind.conf или гуглить, чтобы выяснить, что тебе нужно ставить какой-нибудь отдельный gnome-tweaks, better-gnome-tweaks или прочую херабору


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

>"ноутам" от эппла просто нет конкурентов


Я за ноутом не работаю - я не ёбнутый и не позер от it. Ты бы ещё на смартфоне предложил код писать.
817 2568445
>>568439

>Аккумулятор потерял емкость? Покупай новый мак


Нет, батарею можно заменить

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


Изолента, лол, + шапочка из фольги
818 2568446
>>568324

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



У меня есть 2 примера ноутов, в которых это работает из коробки, хотя мне больше нравится нажимать кнопку.

> толщина и легкость,



Я не готов платить в 3-5 раз больше за то, что ноутбук будет на 5 мм тоньше и на 200 грамм легче. У меня хватит сил его поднять в любом случае.

> просто божественный тачпад



Который все равно проиграет мышке за 300 р.

> флагманских ноутов



Развод доверчивых потребителей на деньги.

> процы на М1+ подъехали



У 8-ядерного M1 Pro на passmark рейтинг 17 000, а у AMD Ryzen 9 5900HX 22 000.
819 2568448
>>568441

> У меня нормально всегда работал - три пеки сменил + ноут



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

Также, я раздавал по bluetooth интернет с одного ноута на другой и через несколько дней bluetooth-модуль отключился и перестал орпределяться до перезагрузки. Интересно, в маках такое бывает или они могут раздавать интернет дольше нескольких дней подряд?
820 2568449
>>568441

А, еще, я не могу использовать телефон как bluetooth-гарнитуру. Хотя у меня ощущение что и с маком так нельзя.
821 2568450
>>568445

А у меня шторка есть встроенная. И не надо портить вид изолентой.
822 2568453
>>568450
Молодец. А у меня нет шизы, не нужна изолента и шторка
823 2568465
>>568453
А у меня камера просто за монитором валяется отключенная от усб.
824 2568470
>>568448

>с другой стороны у меня по bluetooth файлы перекидываются только в одну сторону


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

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


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

>раздавал по bluetooth интернет с одного ноута на другой


Хз, я с телефона как-то месяц сидел на ноуте. Телефон позволял прикидываться роутером, раздавая мобильный инет по вайфаю. Так все умеют сегодня вроде как.
825 2568500
>>568412

>


>Как написано в README, данный проект правльно нужно разворачивать командой composer create-project или symfony new


Да, я заметил. Но я хочу сделать как на самом деле надо было сделать это задание.

>Сделал ли ты composer install сначала?


Тут все хорошо. И Fixtures грузятся.
Я хочу добавить в репо нужные миграции чтобы было совсем как будто типичное приложение.
Как лучше поступить? Не готов неделю изучать доктрину
sage 826 2568579
>>512504
Уже почти 30 лет, вместе с Java
sage 827 2568581
>>513948
Событийной архитектуре не похуй, что ты там любишь?
1F3BB5CC-547F-4AFF-A48B-920FA8D05A6F.jpeg76 Кб, 760x739
828 2568583
>>513954
На самом деле, современный РНР достаточно похож по ООП-возможностям на эти два языка.

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

Байтоёьства в РНР тоже хватает, сходите в ВК — они вам покажут.

Так что, можно уже наконец успокоиться в этом вопросике.
изображение.png77 Кб, 1651x510
829 2568680
>>513954

>что в нем нельзя сравнить 2 строки через ==


Ты колишься в череп крокодилом?

>Ага, это под который нужно комп с виндой покупать


Нет, ну ты точно наркоман.

>Что-то я не слышал особо о проектах на шарпе


Любая игра на Unity. Это просто на вскидку.

>>568583

>Байтоёьства в РНР


>Байтоёбство


>В пэхапе


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

Вы оба пьяные ещё, чтоли?
830 2568729
>>568583
Сходили вчера всем трендом в ВК.
Кароч говорят что байтоебства в пхп хватило ровно на десять вакансий на планете, и на этих вакансиях давным давно сидят байтоебы с плюсов. А когда мы рассказали что вкатуны с двощей вызвали охранников и нас отпиздили.
831 2569010
>>567403
Да ты можешь хоть 50 раз осилить, факт в том что джуны больше не нужны, даже мидлы уехали т.к. в этой стране айти фсё, ну может чел не из россии капчует, тогда ок
832 2569014
>>568112
И так, я перегенерил эту пизданину.
То есть, загрузил fixtures, а потом создал migrations:diff.

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

Но могли бы хоть sqllite положить?
image.png184 Кб, 316x429
833 2569376
>>568680

>собственном автолоадере или пакетном менеджере


Ты опять начинаешь?
834 2569399
>>566701

>PHP 8 Объекты, шаблоны и методики программирования


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


Для простого сайтика ООП на посох не надо. Там, скорее всего, пригодится хтмл, цсс и жопаскрипт, шаблонизация нативная пхпшная. Часто для простых сайтиков просто берут вордпресс и начинают трахаться уже с ним, как дед мороз со снежной бабой.
c#.png125 Кб, 400x400
835 2569568
>>568680

>Ты колишься в череп крокодилом?


Ну тут уже даже я проиграл.

https://stackoverflow.com/questions/7410635/java-not-saying-that-two-strings-equal-when-they-do
836 2569583
>>569568
Лел, так в пхп тоже нельзя сравнивать две строки через ==. Надо через строгое сравнение ===.
В джаве строка объект кста. Ты у себя в коде как даты сравниваешь, додстер?
837 2569601
>>569583
Через таймштамп, как иначе то? Строки чтоли сравнивать, лел?
838 2569619
>>569568

>Ну тут уже даже я проиграл.


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

>>Ты колишься в череп крокодилом?


Вопрос был риторический.
839 2569621
>>569601

>Не использует DateTimeImmutable


Вопросов больше не имею. На секунду забыл с какими животными в одном треде нахожусь.
840 2569633
Почему C# лахта сюда регулярно набегает и пытается что то доказать, если C# лучше PHP?
841 2569638
>>569014

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

Данные в миграции, естественно, не включаются, только структура таблиц.
842 2569853
>>511483 (OP)
Есть ссылка на гайд по навигации в папках? Я постоянно забываю про что вот эти хуйни ./ ../ /.. и тд.
843 2569949
>>569583

>Ты у себя в коде как даты сравниваешь, додстер?


Carbon eq().
844 2569951
>>569619
Ебанутый, == сравнивает ссылки, а не строки, обосрался - обтекай.
845 2569958
>>569619
>>568680
А, всё, отбой, ты про это и писал, только увидел. С жаром тяжело код читать...
846 2569995
Аноны, поясните. Почему вкатываться в PHP не принято?
Мониторю вакансии, всё время джуновские позиции с малым количеством откликов нахожу именно н PHP, да и в целом на PHP дохуя вакансий.
847 2570369
>>569995
Так это же хорошо, для вкатусь.
Может потому что всякие калбокс/брейнс не завезли курсы по php, и сама технология не такая хайповая, нет громких проектов
849 2570539
>>569633
Из-за комплекса неполноценности.
С# везде второй: проиграл джэве в интерпрайзе, плюсам в гейдеве и десктопе, гошке в хуйлоаде, в вебе, собсвенно, пхп и жсу, питону в датасайенсе и машобе, про мобилки и говорить нечего. Да что там говорить, даже зарплаты +- одинаковые с пхп. И это несмотря на то, что майкрософт вбухала миллиарды в разработку и маркетинг, а сам язык, как говорят синьеры, получился действительно хорошим.
850 2571066
>>569633

>C#


си хештег хорош в области написания читов и малвари все равно проигравет Goвну в последнем...
image.png74 Кб, 1007x611
851 2571071
Сап, аноны, что-то нихуя не могу понять. Вот я сделал простой докер-образ с веб-сервером пыхи, захожу в контейнер, обращаюсь курлом к локалхосту и всё работает. Поднимаю образ командой внизу пикрила, открываю в браузере localhost:7777, и получаю This site can’t be reached. Пробовал вместо localhost писать 127.0.0.1 и 0.0.0.0, нихуя не помогло. Курл тоже из-под хоста не находит, хотя оптяь же, внутри контейнера всё работает. Образы mysql и всего остального без проблем коннектятся с хоста. ЧЯДНТ?
852 2571233
>>568680
Ещё как есть. И управление памятью есть.
Сходи в ВК, они тебе всё покажут.

Оч часто встречаю PHP на больших данных в телекоме и финтехе.

Про пакетный менеджер и асинхронность тебе уже отвечали, так что просто иди нахуй, серьёзные господа тебе повторять больше не намерены =)
853 2571297
>>569995
Принято, ещё как, не знаю где смотрел но кол-во вакансий к резюме 1 к 100. Не говоря уже о кале типа водрпрессов-битриксов где буквально на одну вакансию тысяча откликов таксистов
854 2571324
>>571297
В Украине.
Вот пыха, где на Джуна конкурировать с ~10-20 человеками надо
855 2571326
>>571297
Та же Жаба для сравнения
856 2571330
>>571297
Подумываю сейчас куда вкатываться учитывая войну и рыночек. Мне не сильно важна сфера, главное чтобы залететь можно было легко и приятно было именно программировать. Шарп больше нравятся в целом, но конкуренция там среди джунов пиздецовая, к тому же требуют чаще всего фулстек. Думаю подобная ситуация будет во время всей войны + мировой рецессии, надо на это смотреть. т-е. если война будет 2-10+ лет я жёстко могу факапнуться.
857 2571337
>>571297

>Не говоря уже о кале типа водрпрессов-битриксов где буквально на одну вакансию тысяча откликов таксистов


Ты с вротендом перепутал
858 2571341
>>571324
Лол, ну так Украина это не рашка где айти похоронили, здесь и за пхп адовая конкуренция теперь
859 2571542
>>511483 (OP)
Как можно реализовать перенаправление с site.ru/profile/1, на файл site.ru/profile? Типа пользователь вбивает нужный ему профиль в браузер site.ru/profile/1, где 1 это id профиля, а далее этот профиль обрабатывается в файле profrile.php?
860 2571777
>>571330
Немного подумал и решил всё таки не ждать у моря погоды и вкатится в PHP, потом если надо будет переучусь на .NET или в любую другую технологию когда и если захочу(вдруг меня затянет). Буду теперь с вами в треде зависать, мб даже стану местной вниманиеблядью.
Почему не перекатываете тред кстати?
861 2571783
>>571777
Вот возьми и перекати в честь этого
862 2571792
>>2571790 (OP)
>>2571790 (OP)
>>2571790 (OP)

Перекатываемся
Снимок экрана от 2023-01-12 22-55-19.png123 Кб, 810x651
863 2571899
>>511483 (OP)
Это вообще нормально что Phpstorm просит по умолчанию fast-cgi -интерпритатор? Почему не FPM?

Первый раз с php работаю, настраиваю phpstorm-локальный сервер. Поставил пак (по уроку)
- sudo apt install php-fpm php-cli php-common php-json php-mysql php-phpdbg php-mbstring php-imap php-dev php-curl php-xdebug
Пришлось еще устанавливать (потому-что шторм ругался)
- sudo apt install -y php8.2-cgi

И еще вопрос, новая версия шторма уровень языка 8.2 поддерживает, или нет пока-что?
864 2572098
>>571542
Звучит как будто тебе надо не перенаправление, а просто сделать profile.php где id через GET передается, типа mysite/profile.php?user=1
865 2575375
Всем уважаемым пыхарям здрастия.

Я типичный вкатун с курсов вротенда (стандартный стек хтмл, ксс, джс, рякт, редакс, есть пара петов), страна Украина. С вакансиями в этой сфере сейчас пиздец. На интерна по 300 откликов, на джуна не меньше 100. Как конкурировать с пацанами с ВО я хуй знает, учить CS наверное чтобы быть труъ. Начал я короче немного в это погружаться, скребя поверхность и дошёл до алгоритмов. Поговорил немного со счастливчиками вротендерами и оказалось, что алгоритмы нахуй там не нужны, кто бы мог подумать, но на собеседовании требуют и в тестовых тоже просят. Короче, меня CS немного увлек и вротенда мне мало, хочу пожёстче. Конечно глаз пал на фулкека, может даже свичнусь в бек окончательно, имея стек пыха + бд + говно + фрейм для пыхи. В своём познании я преисполнился и понял, что программирование это не про язык и библиокеки, это немного другое. Здесь устройство сети понимать надо епта.

Начал я рисёчить чё бы такого для фулкека выучить и выбор по сути стоит между двумя стульями: node.js хуй знает что в этой ноде учить там же 8 глав в том гайде и чистая нода нахуй не нужна кроме менеджмента пакетов в вебпуке/express и pgp с каким-то фреймворком типо симфони или ларавел. Сразу скажу, я не обременял себя нахрюками про зашкварность пыхи, потому что это тупо инструмент и он мне нужен для бека. В целом бек это интересно как по мне, по крайней мере интереснее фронта так точно. Итак, скажите, прав ли буду я и хорошая ли это будет инвестиция с точки зрения скорого трудоустройства, если я погружусь в пыху? Заранее спасибо. Попрошу ещё мнение по поводу ноды с экспрессом.
866 2575584
>>575375

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


Да, пыха сейчас лучшая инвестиция (лучше мб только 1с, но это то еще говно), можешь почекать отклики на джине и сравнить с питоном/жсом. Однако, надо понимать, трудоустройство врядли будет быстрым - пыха впитала в себя джава-образное ооп и его с наскока не освоишь, как и фреймоврк.
867 2575675
>>575375
Да ты ебанулся хрюкошвийн, джуну надо сделать тестовое и ответить на несколько технических вопросов, все ебать, какие нахуй алгоритмы пиздец.
868 2575682
>>575375
Что тебе еще бедолаге пакетосранцу посоветовать лол. В пхп есть два стула в основном: вордпресс и ларавел. Первый тру руинный вариант как раз для тебя, второй посложнее, выбирай.
869 2575696
>>575675
Ты когда последний раз проходил собес на джуна? Я больше скажу, мне на интерна прислали тестовое, в котором задание на графы было.
870 2575697
>>575682
А симфони?
871 2575811
>>575375

Бекенд это не только PHP, но еще и ООП, SQL, HTTP, ORM, фреймворк.

Про алгоритмы можно почитать книги вроде "алгоритмы и структуры данных".
872 2575823
>>571542

Тебе нужно настроить роутинг. Это можно сделать на уровне веб-сервера (nginx), чтобы он переписывал URL запроса, или на уровне приложения PHP, чтобы при любом запросе вызывался бы index.php и далее он анализировал URL и подключал нужный файл.

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

Тут немного запутанное описание, как это сделать для встроенного в PHP сервера: https://github.com/codedokode/pasta/blob/master/soft/web-server.md#%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-url

Для нгинкс можно посмотреть тут https://qna.habr.com/answer?answer_id=1496310#answers_list_answer - только там надо сделать исключения для статических файлов (css, картинок). Проще всего наверно изучить мануал по нгинксу, он на русском, и написать конфиг самому.
873 2575973
>>575696
Исключение от ебанутых каких-то, мне за все разы даже физ баз не заставляли писать, дают задание (практическое) и вопросы по знанию языка, делаешь/отвечаешь - проходишь. Не знаю даже что тебе сказать, какая зп у вакансии была?
874 2576000
>>511483 (OP)
Какой сервер открывает phpstorm при запуске с браузера, откуда он берет его? Это явно не опенсервер, там другой порт.
875 2576005
>>575973
6 тыс грн на стажировке, дальше 500 долларов
876 2576261
>>576005
Ебать, жесть у вас там.
877 2576265
>>576261
Это вротенд, не удивительно.
878 2576266
>>576005
Ну можешь подрочить алгоритмы, там задачки какие, но вообще в практике ничего сложнее циклов в циклах не юзается, на начальном уровне так точно.
879 2576274
>>576266
Это да. Просто дальше в планах у меня инжиринг по хардкору, со всеми этими алгоритмами и сложными структурами данных, поэтому и дрочу их. К тому же думаю для собеса пригодится, я прав?
880 2576288
>>575696
А мне как-то на тестовом предложили полноценную приложуху запилить с кабинетом и реферальной системой, все на vue + lara. На джуна.
Ебанутых по ту сторону не меньше чем на эту. Иногда прям натурально разводят на работу бесплатную, расчет, ясен пень, на джунов, которые не совсем догоняют максимальный возможный объем тестового и чего там просить нельзя.
881 2577061
>>576274
Не не пригодится, но для себя можешь поучить, будешь ходить перед макичами козырять как можешь.
882 2577078
>>511483 (OP)
Вопрос по регулярным выражениям.

$stroka = "Stroka Stroka ";

$ex = preg_match_all("/.+?\s+/", $stroka, $matches);

Выводит так:

Array
(
[0] => Array
(
[0] => Stroka
[1] => Stroka
)

Другой вариант:

$stroka = "Stroka Stroka ";

$ex = preg_match_all("/.?+\s+/", $stroka, $matches);

Выводит так:

Array
(
[0] => Array
(
[0] => a
[1] => a
)

)

Квантификатор тут +, почему тогда ограничитель работает на одну букву и почему?

)
882 2577078
>>511483 (OP)
Вопрос по регулярным выражениям.

$stroka = "Stroka Stroka ";

$ex = preg_match_all("/.+?\s+/", $stroka, $matches);

Выводит так:

Array
(
[0] => Array
(
[0] => Stroka
[1] => Stroka
)

Другой вариант:

$stroka = "Stroka Stroka ";

$ex = preg_match_all("/.?+\s+/", $stroka, $matches);

Выводит так:

Array
(
[0] => Array
(
[0] => a
[1] => a
)

)

Квантификатор тут +, почему тогда ограничитель работает на одну букву и почему?

)
883 2577080
>>577078
И почему вообще работает?
884 2577181
885 2577228
>>577181
Да я понял, что ? = {0,1}, получается первый квантификатор перебивает второй?
Screenshot 2023-01-17 165924.png49 Кб, 1274x460
886 2577253
>>577228
Все же блядь написано. Это не два квантификатора, а один из двух знаков. Называется "сверхжадный" (possessive). Тебе оно не надо, ты просто проебался с синтаксисом.

Пользуйся https://regex101.com и не еби мозги.
887 2577265
С чего начать? 888 2577317
Всем привет. Скажите пожалуйста, база Web - разработка норм для захода в UI/UX специальность? Хочу сначала курс Web-разработчика, а потом ui/ux. Просто мне кажется так или иначе обе сферы желательно знать. Вот хз насчет последовательности вката. Кто знает?)
1673998842118.jpg75 Кб, 1064x1080
889 2577883
>>577317
Никуда ты не вкатишься - хуйнёй какой-то страдаешь и глупые вопросы задаешь. Хочешь учить уи - учи уи, а не начинай с ассмемблера как шизофреник. Можешь ещё танцам поучиться - тоже наверняка полезно будет.
890 2578225
>>577883
А вот я не знаю что я хочу! Вот такой вот я. Да!
Думаю сначала попробую веб-разработку, а потом ui/ux. И решу что приятнее мне. Подводные?)
891 2578305
>>578225
Бля, чучело, ты хоть день в жизни работал?
892 2578355
>>578305
ахахаха бубубу смотри не уеби мне)) работал! С какой целью интерес проявляешь?)
893 2581640
>>516569
Как это вообще будет работать? В методе fill вводятся аргументы, которые не заданы в исходном интерфейсе, интерпретатор с ошибкой сваливается
894 2581992
>>581640
А ошибка с неймспейсом тебя значит не смутила? Там специально чушь написана, которую ты должен разгрести. А с аргументами можно легко порешать https://3v4l.org/nhDef Вот и думай.
895 2583618
Друзья, мне для вката в пыху хватит двуядерного-двупоточного процессора? С ЗПшки возьму четырёхядерный-восьмипоточный, может быть.
896 2584296
мужики, подскажите, что не с запросом?
он нихуя не выводит
$QUERYS = [
1 => "SELECT last_name as 'Фамилия', first_name as 'Имя', middle_name as 'Отчество', user_position.created_at as 'Дата найма', TIMESTAMPDIFF(MONTH, DATE(user_position.created_at), CURDATE() ) as 'Отработано месяцев'
FROM user, user_position
WHERE user.id=user_position.user_id
AND TIMESTAMPDIFF(MONTH, DATE(user_position.created_at), CURDATE() ) < 3
ORDER BY last_name",
897 2584759
>>584296
База у тебя какая? Данные у тебя какие? Таблицы какие? Перед тем как что-то спрашивать сначала сделай тестовую базу.
https://dbfiddle.uk/5jQjN72m
Вот тут все замечательно работает и выводится.
898 2585180
Пацаны это жесть.
Я подсел на чад gpd. Раньше все руками гуглил. Но меня кинули на легаси проект (ангуляр 1.5 + лара 4.2), с ларой еще нормально т.к. я в пхп разбираюсь а вот с js у меня знания ограничиваются только ивент кинуть на кнопку.
Так вот,начиналось все нормально, я просто спросил у нее по контроллеру ангуляра. и так за пару дней я просто начал дрочить нейронку. вместо того, что бы гуглить и разбираться я просто кормлю нейронке код и спрашиваю ее как сделать то или иное. Да, за ней приходится подтирать лишнее но это пздц. Я боюсь если ее вдруг отключат я поем говна конкретно.
Моя эффективность с ней выросла % на 100 наверное.
Стоит ли слезать с нее или нормально? есть сеймы?
ebosh.jpg6 Кб, 224x225
899 2585273
>>585180
Ебать этому проекту пизда. Код то генерится "почти" правильный. Рано или поздно все эти нескладушечки сложатся в цепочку и все смачно наебнется. И земля пухом тому кто это будет дебажить. Ошибки будут не типичные и в человеческую логику не укладывающиеся. Кароче пиздец, так держать. Ебош по клятым капиталистам нахуй.
900 2585349
>>585273
Ебать в голос.
Ну на самом деле не все так плохо, я ж не бездумно копирую все. Я понимаю что тот или иной участок скопированного кода делает, и в код стайл он хорошо вписывается. Ну а если ты прав, то надеюсь дебажить буду не я. (меня продали в рабство найм где то на год точно)
901 2588658
аноны выручайте

пытаюсь установит nginx по этой инструкции.
все хорошо до момента, когда пытаюсь на http://localhost:8080
должно быть "Вы должны увидеть такую страницу с текстом «Welcome to nginx!».", а у меня страница не найдена. В чем проблема?
Я гуглил нихуя найти не смог.
В логах вот эта ошибка 2023/01/26 21:56:28 [emerg] 18053#0: unexpected end of parameter, expecting ";" in command line

Погуглив ошибку, я понял, что могут быть забыты скобки в конфе nginx, проверил все в редакторе, все заебись. Я ХУЙ ЗНАЕТ ЧТО ДЕЛАТЬ.

Рассмотрим как установить веб-сервер самостоятельно.

Установим последнюю версию nginx:

brew install nginx
Поскольку порт 80 требует прав администратора, а homebrew по умолчанию устанавливает софт с пользовательскими правами, то работать nginx будет на порту 8080.

Запускаем nginx, чтобы он работал в фоне и обслуживал наши запросы:

brew services start nginx
Индикатор успеха:

==> Successfully started `nginx` (label: homebrew.mxcl.nginx)
Проверяем, что всё установилось корректно, и nginx успешно работает на нашем компьютере. Откройте любой браузер и введите в адресной строке следующий URL:

http://localhost:8080
Этот парень пиздец какой тупой.mp4375 Кб, mp4,
480x360, 0:04
902 2588698
>>588658

>пытаюсь установит nginx по этой инструкции.


>unexpected end of parameter, expecting ";" in command line


>я понял, что могут быть забыты скобки в конфе nginx

903 2588979
>>588658
Файл хост на маке настраивал ?
904 2589298
Допустим, у меня в ларавеле есть модели постов и комментов к ним. Должны быть такие эндпоинты, возвращающие жсоны:
- все посты + к каждому последний коммент
- просто все посты без последнего коммента
- один конкретный пост + все комменты к нему

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

Типа сделать сервис для постов с методами getAll и getById

И сервис для комментов с методами getAllByPostId и getLatestByPostsIds(array). Но это как-то пиздец всрато, этому последнему методу приходится передавать массив айди постов, для которых надо достать последний коммент, чтобы избежать н+1. И я хз как даже нормально запрос в нём написать

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

Я запутался, я нихуя не понимаю
905 2589944
>>589298
Че ты там расщепляешь, у тебя ж элокент в ларавеле.
Создаешь в модели поста три метода: allWithAllComments, allWithoutLastComment, oneWithAllComments. Все, дальше по доке орм. Сервисы какие-то блдяь выдумал.
Гражданин вы не в симфони. Ларавель, актив рекорд и код в моделях.
906 2590307
>>575375

>Как конкурировать


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

>>575375

>с точки зрения скорого трудоустройства, если я погружусь в пыху?


>хтмл, ксс, джс, рякт, редакс, есть пара петов


лучше ноду чтоб не менять язык
907 2590469
>>589944
Сервисы нужны хотя бы для того чтобы инкапсулировать логику приложения в один слой. Негоже в контроллерах срать моделями и негоже вообще всю логику в модели пихать - это норм для небольших проектов только, потом охуеешь от размеров кода моделей.
908 2591190
>>590469
Хватит срать баззвордами, чучело. Это ларавель, это элокент, на нем так пишут. Имаджинирую твое ебало когда ты узнаешь про фасады и сколько бест практис они нарушают.
Не будет у тебя нихуя в контроллере, элокент выплюнет сразу универсальную коллекцию, готовую к пагинации и любой дргуой хуйне, которую ты напрямую хуйнешь в шаблонизатор. И все. Литерали все. Эту хуйню можно даже не писать, а сгенерить за две минуты и пойти пить кофе.
Хочете ебли с сервисами, доктринами и репозиториями - пиздуйте в симфони.
14739773234970.jpg211 Кб, 960x948
909 2591200
Господа! Вопрос на миллард йен!

Какими средствами лучше "подписть" сокет-соединеине пользователя на изменения в БД? То есть, меняется база -> новые записи прилетают в сокет-соединение?
910 2591250
>>591200
Нельзя в пхп ниче "подписать". И у реляционной базы нет понятия "новые записи". По крайне мере для доступа снаружи. Можно организовать таблицу так чтобы получать запросом отсеченные данные, например по дате.

Если у тебя есть сокеты, то есть сервер. А если есть сервер, то у него есть цикл в котором он обходит все сокеты. Ну вот в этом цикле и стучи в базу, получай данные, сри в сокет. Не забудь только механизм для реконекта к базе сделать, коннекшен не расчитан долго висеть.
911 2591497
>>591190
Макака, спок.
912 2592724
>>591250

>нет понятия "новые записи"


Ну как нет, есть триггеры по insert. Хотя в данном случае оно мне не очень подходит.

Хотел как-то оптимизировать этот механизм, без цикла постоянной выборки, чтобы не создавать нагрузки на БД. Но, видимо, придётся поступить так.
913 2592729
>>591250
>>592724
"подписать" специально в кавычки выделил. И, кстати, есть event-driven архитектура, и есть паттерн eventListeners, я их и имел ввиду.

Ладно, +- понял, как сделаю.
914 2592975
>>592724

>Ну как нет, есть триггеры по insert. Хотя в данном случае оно мне не очень подходит.


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

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


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

>И, кстати, есть event-driven архитектура, и есть паттерн eventListeners, я их и имел ввиду.


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

Теперь он жалуется что "Конструктор имеет параметр такой-то со значением по умолчанию".
Почему этого стоит избегать, и надо ли?
916 2593782
>>593771
Бля, у вас в контекстном меню шторма вместо поиска в гугле постинг на двач стоит?
https://github.com/phpstan/phpstan/issues/5906
917 2593789
>>593782
Проблема не в readonly, я же говорю - накатил плагинов.
Получается это вовсе не проблема?
918 2593799
>>593789
Ты читать умеешь? Шпик инглиш?
Это баги пхпстена, ты просто список багов глянь и охуей. Они под восьмую версию еще пару лет фикситься будут.
919 2594108
Есть ли готовые простые системы добавления - обновления данных в простой базе, что можно использовать до того, как напишешь свой интерфейс и посадишь его на шаблон админки?

Есть ли нечто на ларавель, чтобы дорабатывать?

Шаблон админки имеется ввиду крупные шаблоны с уже встроенными js-модулями такими как datatables
920 2594113
>>594108
Как говна за баней.
https://getcraftable.com/
https://laravel-admin-panel.readme.io/
https://backpackforlaravel.com/

Это только с первой страницы гугла. Гугли laravel crud admin и выбирай что понравится.
921 2594416
>>511483 (OP)
Почему бывает не принимаются с помощью $_REQUEST данные (массив пустой), но принимаются с помощью file_get_contents( 'php://input');

Как так? В чем нюансы?
922 2594896
>>594416
А действительно. А пачему блядь. А может быть это написано в документации? Пшел нахуй отсюда.
923 2595063
>>594108
Не юзай это говно. Пиши свою админку сам.
мимо заёбанный sleepingowl`ом
924 2595209
>>594416
Возможно причина в том, что на get запрос обычно налагается ограничение в 500-2000 символов, а длина $_post ограничена константой post_max в php.ini, php://input позоволяет обойти эти лимиты. Это легкий поиск по гуглу, сам не проверял.
925 2595887
>>594416
Хуй проссышь про что ты. Где код, где пояснения к нему? Просто пукнул, что у тебя иногда работает не так как тебе хочется. Думайте, ёпта, зовите телепатов.
Так вопросы не задают.
926 2596172
Добрый вечер.
Подскажите по работе такой лигулярки:

#(\()?\d{3}(?(1)\)|-)\d{3}-\d{4}#gmi

Т.е.:
(\()? - если есть открывающая скобка - запоминаем;
\d{3} - соответствие 3 цифрам;
(?(1)\)|-) - проверяем сохраненное значение в 1-й группе, если тру - ищем соответствие с закрывающей скобкой, если фалс - ищем соотвестие с тире.
\d{3}-\d{4} - поиск соответствия с 3-мя цифрами, тире, 4 цифры.

Данные:
123-456-7890
(123)456-7890
123 456-7890
(123-456-7890
(123)-456-7890
1234567890

Не могу понять, почему происходит частичное совпадение с 4м выражением. Шаблон полностью соответствует шаблону из книги Бена Форта и у него там нет совпадения.
Условие "видит", что есть совпадение в 1группе(открывающая скобка), но при этом, сразу после \d{3} идет тире, а не закрывающая скобка. Т.е. совпадения не должно быть, а оно есть.

https://regex101.com/r/RtHZXe/1
regex.gif5 Кб, 356x269
927 2596301
>>596172

>(\()? - если есть открывающая скобка - запоминаем;


Неправильно. "Если есть от ноля до одной скобки. Запоминаем."
В итоге у тебя получается три условия:
1) Если есть или нет открывающая скобка. A || !A
1) Если есть открывающая скобка и закрывающая и нет дефиса. A && B && !C
2) Если есть или нет открывающей скобки и нет закрывающей скобки и есть дефис. ((A || !A) && !B && C)
Условный оператор уточняет A только для левой части условия, для правой части A остается неопределенным.
(A && B && !C) || ((A || !A) && !B && C)
Чекаем таблицу истинности
https://www.wolframalpha.com/input?i=%28A+%26%26+B+%26%26+%21C%29+%7C%7C++%28%28A+%7C%7C+%21A%29+%26%26+%21B+%26%26+C%29
Регулярка должна сработать в трех случаях:
1) Есть открывающая скобка и закрывающая и нет дефиса.
2) Есть открывающая скобка и дефис.
3) Нет скобок и есть дефис.
Что мы и наблюдаем: https://regex101.com/r/qLv40U/1

Вообще рекомендую тебе этой хуйней не заниматься. Не трать свое время на эти изъебы с регулярками, они тебе нахуй не понадобятся. Поверь все более менее полезные регулярки легко гулятся и просто копируются. Лучше почитай доку симфони или ларавелся или посмотри полезный видос https://www.youtube.com/watch?v=pz6VdH4_BSg
928 2596791
>>596301
Понятно, спасибо за подробный ответ.
929 2598869
Порекомендуйте простую библиотеку работы с базой mariadb/mysql, главной особенностью которой является автоматическое создание полей и таблиц в зависимости от поступивших требований записать тот или иной тип данных. Я хочу сосредоточиться на логике без необходимости отвлечения на базу для максимально глубокого погружения. Быстродействие на этапе такой разработки — не критично.

Ограниченность php и реляционных субд вынуждает искать альтернативы, но глубокое изучение требует большого времени. Буду благодарен, если направите мое внимание на определенные технологии, что сэкономят время. Начинаю присматриваться к laravel с его библиотекой работы с базами, встроенными в OSP базами (PostgreSQL, Redis, MongoDB), а также к языку разработки python. Разработка ведется, главным образом, над алгоритмом обработки данных, но обрабатываемые данные могут непредсказуемо меняться. Если закрыть проблему через создание сотни sql-таблиц по десять varchar-тысяча, десять varch двести пятьдесят пять (пять на индексах), десять полей типа text (пять на fulltext), то база, вероятно, начнет тормозить, а происходящее в ней будет в неудобном для просмотра виде.
930 2599002
>>598869

>Разработка ведется, главным образом, над алгоритмом обработки данных


Ну ты выдал, канеш.

Давай по пунктам.
1. Что ты пытаешься сделать? Ты написал очень много, при это не написав ничего. Все программирование про алгоритмы обработки данных, и у всех данные непредсказуемо меняются. Напиши конкретно.
2. Твои попытки угадать перфоманс бесполезны. В постгресе например нет разницы между TEXT И VARCHAR. А если тебе надо Json'ы хранить большой вопрос зачем вообще тогда реляционная база нужна.
3. Библиотека для работы с базой это орм. Их много, простых и сложных. То что ты описываешь это более высокий уровень. Библиотека, которая распарсит входящие данные и на их основе заставит орм создать таблицы.
Плохая новость: такое мало кому надо, твои правила создания таблиц все равно будут слишком специфическими и поэтому скорее всего готовой библиотеки для тебя не существует.
Хорошая новость: скорее всего тебе это тоже не надо.

Короче без пункта 1 нет смысла думать об остальном.
931 2599659
ОП, неужели ты всё ещё тут?!

Ох, это безумие

Я 7 лет назад благодаря этому треду, мудрым советам ОПа и треду по вёрстке из/wrk
Нашёл работу, ушёл из ВУЗа и вот я уже 7 лет в индустрии, несколько раз менял стек, множество раз менял работодателей
А PHP треды всё ещен живы и PHP всё ещё лучший язык для бека, что я видел
Каеф

Всем добра.

ОП всё ещё не говорит, как его можно поблагодарить?
932 2599686
>>599659

>я уже 7 лет в индустрии


>PHP всё ещё лучший язык для бека, что я видел


Бля, че это за индустрия такая? Сайты на вордпресс?
933 2599812
У меня одного жопа от сваггера горит? Посмотрел на примеры в гугле у индусов - это же дичь какая-то лютая. Пишем пустой контроллер, а к нему здоровую такую малочитабельную ебалу в виде комментария. И всем норм смотрю - за обе щеки наворачивают. У меня одного глаза вытекают от этой практики?
934 2599813
Прогать в комментариях к коду это какой-то особый способ извращения.
935 2599841
>>599812
>>599813
Эх, петушиные вы головы. Щас вам аттрибуты добавили и весь этот кал теперь еще и там будет. В натуре пхп это джава десять лет назад.
936 2599848
>>599841
Тебя пхпшник выебал жестоко, что ты срёшь тут ходишь без устали?
937 2599855
>>599848
Ну вот это мой пост, например. Если нужно с чем помочь, то пожалуйста. >>596301
А говну - говна.
938 2599859
>>599855

>говну - говна


А обидки свои чего постишь? Очко сильно болит?
939 2599861
>>599859
Какие обидки, ебанько? Я просто написал вам чтобы готовили вазелин - ваши проблемы с комментами внезапно удвоились.
940 2599865
>>599861

>ваши проблемы с комментами внезапно удвоились


Схуя ли? Просто не используй это говно для дебилов. Щас бы в комментах прогать как ебанутый.
941 2599871
>>599865
Мальчик, когда устроишься на первую в своей жизни работу тебе покажут одну штуку. Называется репозиторий. И там будет дохуя кода, который тебе придется принять как данность и писать так, как надо, а не как тебе хочется. Будет там сваггер? Будешь читать доку сваггера и писать ебучие комменты. Будут там аттрибуты? Будешь писать везде эти ебучие аттрибуты.
942 2599876
>>599871

>Мальчик


Тебя точно кто-то выебал.
16369052083030.png21 Кб, 620x305
943 2599885
944 2599890
>>599885
На работе так же со всеми общаешься или там ты тихая выебанная жопа в уголке? Или не приходилось ещё работать?
945 2599909
>>599890

>выебал жестоко


>очко


>выебал


>тихая выебанная жопа в уголке


Это /ga протек или /po?
946 2599939
Вкатываюсь с осени. Фриланс на пхп живой?
Каковы шансы к лету-осени начать на пхп фармить удаленно, хотя бы 10-20к в месяц?

Живу в городе 20к, уехать не смогу, ухаживаю за больными родителями.
947 2599978
>>599939
Фриланс мёртвый давно, ещё до твоего вкатывания. Программирование вообще для фриланса не очень подходит, только если аутсорс какой-то на постоянку. Не, разумеется, нищебродские фриланс-биржи полнятся предложениями отведать говнеца за 500-1000-5000 рублей, но это совсем не деньги за те объёмы что они просят.
948 2600449
>>599686

АЙ --- ТИ
949 2601388
>>511483 (OP)
Думаю куда бы свитчнуться с 1с бекенда.
Посмотрел пыху. Где-то косарь вакансий с опытом от года до трёх, и что-то грустные зарплаты то по 500, то по 800 баксов, то фуллстековые вакансии, то блядь "синьор" с зп 140к (это на целых 10к выше моих мидловских), но по любому где-то есть подвох, колитесь
Screenshot 2023-02-06 201030.png66 Кб, 480x842
950 2601508
>>601388
Это не нам колоться надо начинать, а тебе завязывать.
951 2602052
>>601388
Ну так не иди к жадным кабанчикам. Этого говна всегда много было. Пускай ждут дальше милорда по цене грузчика в дс.
952 2602948
>>511483 (OP)

>Наши уроки по PHP собраны по адресу http://codedokode.github.io/phpbook


Учебник актуален в 2023?
image.png271 Кб, 1926x382
953 2603192
Братья анальники, поясните простому формашлепу одну вещь.

Вот есть у меня хостинг. Там висит аппа. Хостинг vercel.
Есть другой хостинг. У этого хостинга есть бд. Хостинг beget.

Подключиться к бд beget на локалке я могу спокойно. Никаких проблем.

А когда аппа на хостинге vercel пытается подключиться к бд beget, то ошибка.

ER_ACCESS_DENIED_ERROR: Access denied for user 'moralcj1_begetho'@' .compute-1.amazonaws.com' (using password: YES)

Что не так? Могли бы пояснить.
На локалке же все подключается. А у этого ебаного vercel никакая бд не подрубается.
954 2603234
>>603192
Вам пикрелетед о чем нибудь напоминает?
image.png107 Кб, 1073x1166
955 2603457
>>603234
Похоже я у вас тут не первый.

Да, там пусто было, кроме локалхоста ничего.

Но похоже не получится все равно, т.к. у vercel доменное имя/айпишник динамический, хз.
GxGKDjyPyjY-240p-1654822679299.mp41,6 Мб, mp4,
426x240, 0:36
956 2603474
>>603457
Ну так спроси у хостера. Может там регуляркой можно или маской. Там на сайте номер бесплатный. Позвони не переломишься.
957 2603796
>>603474
>>603457
>>603234
>>603192
Крч проблема решилась тем, что я нашел выход без пердолинга.
Выложил нест проект на render хостинг.
958 2604317
Кэширует ли браузер загруженные zip архивы? Заливаю файл на сервер заменой файла. А теперь задумался, бразуер хранит старый файл или качает его только по обращению?
959 2604345
Как лучше и удобней установить и работать с пыхой на линуксе?
960 2604600
>>604345
Ну смотря че ты имеешь ввиду. Если консольные проектики запускать - консольной пыхи и хватит. Если пыховское веб-окружение - то xampp по старинке, либо докер. В ларе вообще есть готовый пакет по дефолту который высрет тебе докер компост конфиг под локалку, мне под большую часть задач хватает, чего не хватает можно в этот же конфиг докинуть (брокер очередей например). Развлекайся как душе угодно.
961 2604611
>>604600
Онли докер. Последние лет пять этот вопрос даже не стоит. Если в конторе, в которую устраиваешься не используют докер что-то там пиздецки не так.
Гайдов как все развернуть щас как говна. Впитывай и легче будет устроиться на работу.
962 2604710
Извиняюсь заранее если вопрос тупой, с пхп особо не работал

Как проект созданный на опенсервере полностью загрузить на гитхаб? Ну то есть у меня в папке с доменами код, а база данных не добавится получается?
У меня написанный api и html страничка, база данных через phphMyadmin.
Как это все выгрузить на гитхаб чтобы человек это мог у себя нормально запустить?
963 2604810
>>604710
А какая разница какой язык? Там где ты работал принято базу данных на гитхаб загружать?

1) На гитхаб загружаюстя GIT репозитории. Соответственно нужно начать с создания такого репозитория.
2) Есть несколько способов запихнуть структуру базы данных в репозиторий. В пхп принято использовать миграции. Но можно хранить DDL команды.
3) Данные базы в виде дампа можно хранить как файл на любом сервере, который может хранить фалй. От ftp до того же гитхаба, если объем позволит.
4) Вот это как раз идеальный юз кес для докера - распространение рабочей среды >>604345 . Разворачиваешь докер из трех образов: nginx, php-fpm, mysql. Грузишь в образ php-fpm код, в nginx конфиг сайта, в mysql базу из дампа. Отдаешь готовые образы человеку. Он их у себя запускает и все гарантированно работает как работало у тебя.
964 2604855
>>604810
Я просто обычно использовал монго, оно-то работает удаленно. Само приложение запустил и все работает.
Думал мб в опенсервере какая-нибудь встроенная утилита есть для переноса или хз как.

Но я понял в общем, щас буду гуглить что ты написал
Спасибо за ответ
965 2605771
>>511483 (OP)
В чем разница будет?

$a = null;

if(!isset($a)) {
echo "+";
}

/////////////////////

$a = null;

if(!$a) {
echo "+";
}
966 2605775
>>605771

В чем разница будет?

$a = null;

if(!isset($a)) {
echo "+";
}

$a = null;

if(!$a) {
echo "+";
}
967 2605792
>>605771
>>605775
https://www.php.net/manual/en/types.comparisons.php
Краткая инструкция почему динамическая типизация кал ебаный.
968 2605850
>>605792
Понятно...
969 2606139
Поясните за микросервисы. В частности что такое "микросервис" как единица? Это мини-сервер со своей мини-базой?
В гугле только ехала теория через теорию, а как именно это реализуется на практике нигде не пишут. Как сделать, например, парочку микросервисов и связать их друг с другом? Пишут, что по ХТТП, но там же задержки будут. В чём смысол если можно просто сервер пожирнее взять?
970 2606376
>>606139

>В частности что такое "микросервис" как единица? Это мини-сервер со своей мини-базой?


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

>Пишут, что по ХТТП, но там же задержки будут.


По хттп, задержки есть.

>В чём смысол если можно просто сервер пожирнее взять?


Смысол возникает когда ты - тот у кого берут серваки. Как и всякие DDD это скорее про организацию разработки, чем про организацию кода. Вот когда у тебя 100 разработчиков, 180 сервисов и 50 серверов пожирнее, возникают проблемы, которые решает микросервисная архитектура.
1. Как организовать команды и взаимодействие.
2. Как разбить сервисы.
3. Как равномерно нагрузить сервера.
Ответ микросервисной архитектуры на эти вопросы:
1. Вокруг сервисов. У каждого сервиса своя команда. Взаимодействие через http контракты сервисов.
2. Максимально мелко, вплоть до отдельных функций.
3. Сервисы должны быть максимально гомогенны. Стандартные контракты, стандартный протокол, стандартный размер. Буквально генерятся по шаблону.

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

Хорошая новость. Тебе это все нахуй не надо. Микросервисы это чрезвычайно дорогая игрушка для больших мальчиков. Сбер, яндекс, вк, авито, мейл, те кто там работает читают книжки, а не вопросы на двачах задают.
image.png2 Кб, 369x95
971 2606709
Товарищи помогите, в задачке со стихами не могу догнать как сделать повторение первых 3-х случайных слов два раза. Получается только вывод всех по порядку
972 2606743
>>606376

>Микросервисы это чрезвычайно дорогая игрушка для больших мальчиков.


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

>те кто там работает читают книжки,


Я тоже не дурак почитать и палочкой потыкать иногда.

>а не вопросы на двачах задают


Скорее всего сидят как миленькие.
973 2606747
>>606709
Покаж код. И ссылку на задачку заодно.
974 2606984
>>606747
>>606747
http://phpbook.gq/l1/strings.html задача здесь

Код такой:
<?php

error_reporting(-1);

$word1 = array('Чудесных', 'Суровых', 'Занятных', 'Внезапных');
$word2 = array('слов', 'зим', 'глаз', 'дней', 'лет', 'мир', 'взор');
$word3 = array('прикосновений', 'поползновений', 'судьбы явлений',
'сухие листья', 'морщины смерти', 'долины края', 'замены нету',
'сухая юность', 'навек исчезнув');
$word4 = array('обретаю', 'понимаю', 'начертаю', 'закрываю', 'оставляю',
'вынимаю', 'умираю', 'замерзаю', 'выделяю');
$word5 = array('очертания', 'безысходность', 'начертанья', 'смысл жизни',
'вирус смерти', 'радость мира');

$words = array($word1, $word2, $word3, array("\n"), $word4, $word5);
foreach ($words as $word) {

$finalWord = $word[array_rand($word)];
echo ($finalWord == "\n" ? "$finalWord": "$finalWord ");
975 2607113
>>606984
1) Постишь код - используй сервис для постинга пхп кода https://3v4l.org
2) Сразу чепуха в именовании. У тебя $word1 это массив со словами, а $words это массив массивов. Из-за этой ошибки получается чушь вида $word = $word[array_rand($word)].
Сразу называй переменные по факту: $words1, $words2, $wordGroups.
3) Зачем ты запихнул array("\n") в массив с группами слов? В итоге сам себя запутал, группа слов, которая на самом деле не группа и вообще здесь по другой причине. Так дела не делаются. Если хочешь что-то сделать - делай это явно. Никакой магии, читать и понимать это потом неудобно.
4) Из путаницы в пункте 3 новая путаница. Никакого $finalWord у тебя нет, из твоего кода вообще получается что все слова final. Просто из-за плохого именования $word уже занято и ты придумываешь костыли чтобы не ставить пробел после переноса строки.

Если все эти заморочки распутать, то получается просто и понятно https://3v4l.org/QoXBU А если в функции завернуть так вообще замечательно. Но функции я так понимаю дальше по курсу идут.

Главный вывод из этой ситуации: пиши проще. Еще проще. Запомни что тебе придется читать код в десять раз чаще чем писать.
976 2607140
А двач на микросервисах, как думаете? Все таки немаленькая штукенция и есть даже некоторый хайлоад, мне сам Абу говорил.
977 2607264
>>607113
Понял, спасибо
978 2609437
>>511483 (OP)
Поясните, как вызываются 2 функции в ооп сразу? Какие условия для этого нужны? Вот пример из одной из библиотек:

$lead = $this->amoCRM->leads()->create();

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

class Admin2 {

public function getStatus()
{
return 3;
}
public function getMore()
{
return 2;
}
}

$user1 = new Admin2;

$user1->getStatus()->getMore();

Ошибка:
Uncaught Error: Call to a member function getMore() on int
typehinting.png55 Кб, 1563x510
979 2609543
>>609437
Метод можно вызвать только у объекта. Если напрячь дедуктивные способности, то можно прийти к тому что вызов ->leads() возвращает объект. Такие вещи видны в IDE как на ладони смотри пикредетед. Взаимодействие с возвращаемыми значениями это путанная тема, там много хуйни можно наворотить, я в свое время вот таким баловался https://3v4l.org/AsP8p

Вообще эта простая строчка $lead = $this->amoCRM->leads()->create(); это просто фрактал говна. Я не знаю как ты связался с amoCRM, просто забудь эту хуйню как страшный сон. Пройди курс в шапке, а если прошел то займись изучением Symfony или Laravel, не трать свое время на никому не нужное говно.
980 2609635
>>609543
Ну работа такая пока что, куда взяли, туда и взяли как говорится. То что объект возвращается я понял, а как потом вызывается второй метод? Типа от класса возвращаемого объекта ищет?
981 2609719
>>609635

>а как потом вызывается второй метод? Типа от класса возвращаемого объекта ищет?


В смысле как? Зачем ему что-то искать если явно написано ->leads()->create(); интерпретатор и пытается вызвать у результата функции ->leads() метод ->create(), если это работает, то все ништяк, а если нет, то будет ошибка, как у тебя и вышло Uncaught Error: Call to a member function getMore() on int . Ты вернул число, и попытался вызвать у числа метод ->getMore() . Вот тебе факультативно https://3v4l.org/nR66q разберись что тут происходит.

Если ты хочешь понять как узнать когда пишешь код что можно метод вызвать, то именно для этого и нужна типизация. IDE всегда подсказывает что откуда возвращается и предложит варианты что там можно вызвать.
Мне не очень понятно как вообще может твой вопрос возникнуть, у тебя phpstorm стоит? Если нет, то ставь. Если на работе не оплачивают, то спизди https://github.com/libin9iOak/ja-netfilter-all

>Ну работа такая пока что, куда взяли, туда и взяли как говорится


Ну тогда как можно скорее съебывай или переводись на проект с фреймворком. Если нет возможности сам учи, это твой первый шаг в карьере должен быть, а не amoCRM ебаная. На работе об этом постоянно бурундучи, как ты охуенно изучил, да как оно охуенно впишется.
982 2611239
>>511483 (OP)
Есть тут те кто хорошо понимает как работает PHP? Столкнулся с ним имея опыт с другими языками, и мне сложно понять как он работает. Так как php работает нестандартно по сравнению с другими языками, php процесс запускается извне, с помощью отдельного внешнего веб-сервера, после завершения работы процесс умирает, по этим причинам его работа выглядит совершенно запутанно.

Задача следующая. Есть приложение на вордпрессе. Вордпресс работает также как php. Есть swoole, он работает как большинство других языков, процесс запускается интерпретатором, и работает до тех пор пока его не остановят или он не упадет. Можно ли как то запустить оба в одном процессе? Хочется использовать вордпресс, но на платформе swoole. Не просто обрабатывать запросы свулом, а чтобы ядро вордпресса могло выполняться в процессе свула. Или только межпроцессное взаимодействие?

Еще вопрос. Кто нибудь юзал вордпресс на дотнете? Вроде как стабильно работающее решение, но очень мало информации, дока скудная. В общем, ищу как использовать вордпресс, не используя легаси багаж из php.
983 2611312
>>611239

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


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

>Есть приложение на вордпрессе. Есть swoole.


Так перепиши приложение на свуле.

>Можно ли как то запустить оба в одном процессе? Хочется использовать вордпресс, но на платформе swoole


Нельзя. Нет и не будет.

>Еще вопрос. Кто нибудь юзал вордпресс на дотнете? Вроде как стабильно работающее решение, но очень мало информации, дока скудная.


Нет, мертворожденная хуйня. Никому не нужная.

Тем кто работает с вордпресс нахуй не нужна асинхронность, хуенность и прочая поебень. Wordpress это самое дно, это сайты визитки за 300, даже битрикс повыше плавает.
Symfony -> Laravel -> Yii -> Magento -> Bitrix -> Drupal -> Tilda -> говно -> моча -> Wordpress
984 2611347
>>611312

>Wordpress это самое дно, это сайты визитки за 300, даже битрикс повыше плавает.


Ну зачем ты это ляпнул? Ты же обосрался по полной.
https://www.wpbeginner.com/showcase/40-most-notable-big-name-brands-that-are-using-wordpress/

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


Видимо ты совершенно не умеешь думать.

>нужен веб сервер


Не обязательно. Печатаешь в консоли php app.php и приложение запускается. Почему бы не отказаться от cgi багажа. Nginx медленный и вообще не дает почти никакого профита. Swoole быстрее и функциональнее.

>Нет, мертворожденная хуйня. Никому не нужная.


Я уже понял, что ты неопытный, узколобый максималист. Ты неспособен к рассуждению и диалогу. Ты даже не знаешь что это и кем используется, а уже кукарекаешь. Также как и с вордпрессом, его используют в очень больших проектах, которые тебе и не снились, и тут ты такой вылазишь и кукарекаешь, что это наколенное поделие никем не используется. Ты обесценил свое мнение.
985 2611372
>>511483 (OP)
Если php приложение запускается с помощью php-fpm, то на каждый запрос запускается отдельный процесс или отдельный поток, или все запросы обрабатываются в одном процессе и потоке? А если не через fpm, то как? Если есть где такое подробно расписано, то посоветуйте, почитаю там.
Screenshot 2023-02-14 203942.png22 Кб, 334x378
986 2611415
>>611347

>https://www.wpbeginner.com/showcase/40-most-notable-big-name-brands-that-are-using-wordpress/


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

>Видимо ты совершенно не умеешь думать.


Отлично умею думать.

>Не обязательно. Печатаешь в консоли php app.php


Это как бабка, которая при нажатии кнопки шлагбаум руками за веревочку поднимает?

>Nginx медленный


Одна история охуительней другой.

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


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

>Ты даже не знаешь что это и кем используется, а уже кукарекаешь.


Сразу же чекнул репу https://github.com/peachpiecompiler/peachpie-wordpress а там пикрелейтед. Никем не используется.

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


Ты путаешь "в больших компаниях" и "в больших проектах". По твоей же ссылке: "sony" news, "Playstation Blog" blog, "TechCrunch" news, "Meta Newsroom" news, news, press releases, news, news. Такие огромные проекты как ленту новостей или блог пишут как учебные перед устройством на первую работу.

Короче ответ тот же. Переписывай свой незаменимый вордпресс сервис на свул или дотнет, хз на чем ты там пишешь. Ни один программист на планете не сделает этот кусок говнокода асинхронным.
987 2611425
>>611415
Пустая болтовня ни о чем. Я же тебе написал, что твое мнение меня не интересует. Не комментируй мои посты пожалуйста. Мне нужны ответы опытных, ты не подходишь под эти критерии.
988 2611429
>>611415

>https://github.com/peachpiecompiler/peachpie-wordpress


>forked from iolevel/peachpie-wordpress


Дегенерат. Не пиши в мой адрес, пожалуйста.
989 2611463
>>611425
>>611429
Что ты порвался то? Тебе правильно сказали, что ВП та ещё параша. И что нет ничего хуже чем брать какие-то серьезные проекты на этом говне. Видел я что как там эти проекты делают - чуть влево-вправо и все, понеслось костылестроение и полет мысли полоумного хуятора. Разгребать такое врагу не пожелаешь.
Тред утонул или удален.
Это копия, сохраненная 15 февраля 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски