Сохранен 986
https://2ch.hk/pr/res/2062494.html
Изменился адрес Архивача в сети Tor — arhivachqqqvwqcotafhk4ks2he56seuwcshpayrm5myeq45vlff44yd.onion. Установите Tor Browser для беспрепятственного доступа!

Клуб изучающих PHP #124 /php/

 Аноним 08/06/21 Втр 23:40:53 #1 №2062494 
php-noob-1.png
cat-cafe-osaka.jpg
welcome-to-php.png
cat-sad.jpg
Оказывается, лимоны выведены искуственно. И кому только пришла в голову идея вывести кислый несъедобный фрукт? Пока кто-то выводит фрукты, мы изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

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

С чего начать

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

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

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

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

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

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

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

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

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

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

Что почитать

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

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

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

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

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

Для этого достаточно вставить код на 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/
Аноним 09/06/21 Срд 06:17:33 #3 №2062664 
>>2062494 (OP)
А чего у вас в шапке так тухло с книгами?
Наверняка уже кучу годноты завезли под новые версии пыхи, а у вас только Зандстра 2009 года выпуска
Аноним 09/06/21 Срд 07:08:45 #4 №2062674 
>>2062481 →
>Но дальше ты заметишь, что ты делаешь в начале каждого файла одни и те же действия
+.
Из-за этого и появилась мысль сделать одним файлом.

>микрофреймворк вроде Slim.
Гляну.
Аноним 09/06/21 Срд 09:34:59 #5 №2062731 
>>2062494 (OP)
Аноним 09/06/21 Срд 11:43:39 #6 №2062801 
image.png
image.png
image.png
image.png
Ну шо вы тут, живы?
Нид хелп
На вп натягиваю вёрстку бутстрепа, первое это результат, навбар вывожу через wp_nav_menu, всё отлично но вот проблема в дропдавн меню, я не знаю как задать классы для li и ul внутри дропдавна. Видел что на пхп можно заменять нужные аттрибуты и классы, но они вроде заменяются везде, а мне нужно что бы только в дропе были особенные. Кто может подсказать чем путним, как лучше сделать
Аноним 09/06/21 Срд 12:28:16 #7 №2062832 
Как сделать,чтобы после записи суммы в бд,через 7 дней списали часть от нее?
Аноним 09/06/21 Срд 12:37:17 #8 №2062843 
Я так и не понял,зачем нужен htmlspecialchars?
Аноним 09/06/21 Срд 12:46:35 #9 №2062852 
>>2062832
Добавляешь колонку с датой записи.
Потом по крону апдейтишь как-то так
UPDATE hui SET amount = amount * 0.2, added = NULL WHERE added IS NOT NULL AND DATEDIFF(NOW(), added) >= 7;
Аноним 09/06/21 Срд 12:47:50 #10 №2062853 
>>2062852
>Потом по крону апдейтишь как-то так
что?
это таймер?
Аноним 09/06/21 Срд 12:49:25 #11 №2062854 
>>2062843
Чтобы можно было вывести <b> - жирный шрифт
а не - жирный шрифт
Аноним 09/06/21 Срд 12:49:54 #12 №2062855 
>>2062853
Планировщик задач в линупсах.
Аноним 09/06/21 Срд 13:00:56 #13 №2062865 
>>2062855
а на пыхе нету такого?
Аноним 09/06/21 Срд 13:09:33 #14 №2062883 
>>2062865
Можно придумать какие-то анальные костыли, но нормально делается на кроне.
Аноним 09/06/21 Срд 13:11:13 #15 №2062890 
>>2062865
Например в ларе есть свой шедалер, но это калька с крона и крон там используется как точка входа.
Аноним 09/06/21 Срд 13:42:19 #16 №2062942 
>>2062890
те под виндой я не сделаю?
Аноним 09/06/21 Срд 14:22:33 #17 №2063004 
>>2062942
Скорее всего насосешься хуев с виндой. Юзай докер хотя бы
Аноним 09/06/21 Срд 14:34:26 #18 №2063024 
>>2063004
Виндузятникам не привыкать, фигли делов-то
Аноним 09/06/21 Срд 14:36:09 #19 №2063027 
>>2063004
у меня домашняя винда,а не Профессиональная или Корпоративная с юбилейным обновлением (версия 1607) или более поздней версии.
Аноним 09/06/21 Срд 15:34:10 #20 №2063135 
>>2062664
Книги хуйня, все на ютубе
Аноним 09/06/21 Срд 15:37:35 #21 №2063140 
>>2063135
Зумерок, плиз
Аноним 09/06/21 Срд 15:39:28 #22 №2063145 
>>2063027
Ну так накати проф или корп винду свежую, или бубунту в дуалбут
Аноним 09/06/21 Срд 15:39:49 #23 №2063146 
>>2063135
Что там годного на ютубе?
Перечисляй
Аноним 09/06/21 Срд 16:07:51 #24 №2063169 
>>2063146
Кнопки там ниче такие
Аноним 09/06/21 Срд 16:21:00 #25 №2063181 
>>2063145
если поставлю в дуал буте-отвалиться инет
Аноним 09/06/21 Срд 16:23:38 #26 №2063183 
>>2063181
тся
фикс
Аноним 09/06/21 Срд 16:25:48 #27 №2063184 
>>2063140
>>2063146
Ну смотрите, ввожу в поиске "php mysq(любой другой язык) простой сайт\проект" и получаю видосы по полчаса-час где сразу на практике могу сделать что-то и заебенить на гитхаб, и он не пустой и рука набита, плюс экспириенс как применить знания на практике. В книжках тебе сто страниц будут просто ебать мозг копипастой.
Аноним 09/06/21 Срд 16:30:59 #28 №2063190 
>>2063181
Я бы на твоем месте не вкатывался в айти. А то хуй отвалится
Аноним 09/06/21 Срд 16:33:24 #29 №2063192 
>>2063184
>ввожу в поиске "php mysq(любой другой язык) простой сайт\проект"
Первое видео - ускоренное видео как чел пишет код с комментариями уровня: вот тут делаем это, а там вот то. Почему, зачем, что делаем и куда двигаемся - не понять
Аноним 09/06/21 Срд 16:51:39 #30 №2063215 
>>2063184
https://www.youtube.com/watch?v=3UtB4QS6EAg
Долбоеб пишет спагетти с инъекциями.
Заебись годнота.
Аноним 09/06/21 Срд 17:20:41 #31 №2063258 
>>2063184
>видосы по полчаса-час где сразу на практике могу сделать что-то и заебенить на гитхаб
>>2063215
>Делаем дырявую форму час
>Выкладываем на гитхаб
>"Мам, я програмист! Ну скажи им"
Аноним 09/06/21 Срд 18:12:33 #32 №2063354 
Воркер, за которым следит супервайзор, нужно руками запускать или он при загрузке ОС сам запустится?
Аноним 09/06/21 Срд 20:11:32 #33 №2063587 
>>2062843

В HTML некоторые символы имеют специальное значение. Например, символы < и > используются для открытия/закрытия тегов, символы " и ' используются в атрибутах, а символ & используется для кодирования символов, которых нет на клавиатуре, вроде & copy; (символ ©).

Соответственно, если ты выведешь echo "<b>", то это будет воспринято браузером как тег b.

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

< - на & lt;
> - на & gt;
& - на & amp;
" и ' на & quot; и & #039;

Функция htmlspecialchars этим и занимается.

Всегда, когда ты выводишь какой-то текст в HTML-документ, надо применять эту функцию. Если этого не делать, то можно получить уязвимость XSS, как она работает, описано тут: https://github.com/codedokode/pasta/blob/master/security/xss.md

Вообще, это относится не только к HTML. Если ты подставляешь текст в ссылку, ты должен экранировать спецсимволы (но не с помощью htmlspecialchars, а с помощью urlencode), если ты подставляешь переменную в SQL-запрос, ты тоже должен экранировать спецсимволы и так далее.


Аноним 09/06/21 Срд 20:18:40 #34 №2063599 
>>2062942

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

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

>>2063004

Докер это корявое решение. В винде есть свой планировщик задач.

Аноним 09/06/21 Срд 20:23:16 #35 №2063606 
>>2063184

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

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

>>2063354

Должен запуститься сам.
Аноним 09/06/21 Срд 20:24:54 #36 №2063610 
>>2063135
PHP за час
от-прафессианала

>>2063184
На ютубе оче много ничего не умеющих балаболов, к тому же через чтение инфа быстрее воспринимается - где там очередной прафессионал будет жопу тянуть 15 минут, ты за это время уже гугл прошерстишь и прочитаешь что надо.
Аноним 09/06/21 Срд 20:36:19 #37 №2063625 
где в РУ инете есть самый активный форум по пхп?
Аноним 09/06/21 Срд 20:49:29 #38 №2063636 
Для каких целей вы использовали кастомные middleware?
Аноним 09/06/21 Срд 20:57:00 #39 №2063640 
>>2063610
Двачую, книги и документация наше всё
Аноним 09/06/21 Срд 20:57:36 #40 №2063641 
>>2063215
А есть адекватный аналог?
Аноним 09/06/21 Срд 20:58:17 #41 №2063643 
По MVC,паттернам посоветуйте пожалуйста годную книгу.
Аноним 10/06/21 Чтв 09:41:21 #42 №2063961 
>>2063643
Head first design patterns - книга старая, но очень годная и написанная очень простым языком. Примеры там на джаве, но это не мешает. Классика жанра "Приемы объектно-ориентированного проектирования" от банды четырех. Ну и Зандстра "Объекты, шаблоны и методики программирования"

Еще можешь читануть https://designpatternsphp.readthedocs.io/en/latest/README.html
Аноним 10/06/21 Чтв 11:11:34 #43 №2064011 
>>2063961
>Ну и Зандстра "Объекты, шаблоны и методики программирования"
Бля пыхыписты, у вас за 10 лет реально что ли другой книги не вышло? Какого хрена вы советуете всегда один и тот же протухший антиквариат?
мимо
Аноним 10/06/21 Чтв 11:37:40 #44 №2064035 
photo2020-11-2420-27-09.jpg
Аноним 10/06/21 Чтв 12:16:42 #45 №2064090 
>>2062494 (OP)
Насколько вообще реально за год выучить php и вкатиться джуниором? А то я слушаю и все вокруг говорят о том что джуниоров даже за еду работать уже не берут так как программистов такая куча что без опыта работы они нахуй не нужны никому стали.
Аноним 10/06/21 Чтв 12:32:08 #46 №2064106 
>>2064011
Там же дохуя обновлений вышло, буквально недавно видел под 8 спиздили переиздание.
Аноним 10/06/21 Чтв 12:35:13 #47 №2064110 
>>2064090
Как повезет, я пришел вообще нихуя не зная, написав разве что кривой калькулятор, который мне итт обосрали. На собесе честно сказал что хочу и готов учиться и внезапно прокатило. А первое же задание мне дали писать на луа, а не пыхе, тут то я и охуел
Аноним 10/06/21 Чтв 12:52:22 #48 №2064128 
>>2064110
Сейчас до сих пор там же работаешь?
Аноним 10/06/21 Чтв 13:26:44 #49 №2064150 
>>2064128
Да, пилю простенькие серваки для мобильных казуалок и подумываю наконец свалить куда-нибудь, но я тот еще аутист, так что дико стремаюсь собесов.
Аноним 10/06/21 Чтв 13:46:26 #50 №2064166 
>>2063599
>Докер это корявое решение. В винде есть свой планировщик задач.
Почему?
Какова вероятность, что php проект будет на продакшене на windows сервере крутиться?
Имеет же смысл осваивать то, что встретишь на работе
Аноним 10/06/21 Чтв 13:47:03 #51 №2064167 
>>2063625
Все в телегу ушли
Аноним 10/06/21 Чтв 13:49:03 #52 №2064170 
>>2064090
>Насколько вообще реально за год выучить php и вкатиться джуниором?
Год даже много. Бери пол года
Аноним 10/06/21 Чтв 14:07:46 #53 №2064198 
>>2064011
И хули? Head first design patterns вообще 2004 года, но для новичков ничего лучше до сих пор нет
Аноним 10/06/21 Чтв 14:10:43 #54 №2064204 
>>2064090
Если по 6-8 часов хуярить можно и за месяца три спокойно, но обычно ещё фреймворки и бд нужно знать
Аноним 10/06/21 Чтв 14:16:37 #55 №2064222 
>>2064150
Вакансии на hh искал?
Аноним 10/06/21 Чтв 14:34:51 #56 №2064259 
>>2064204
Так вся суть пыхи в бд и фреймворках. Голая пыха мало кому нужна.
И что там можно 3 месяца в голой пыхе фултайм херачить?
Аноним 10/06/21 Чтв 15:01:32 #57 №2064299 
>>2064259
С нуля учебник ОПа, а потом ООП, разбирать шаблоны ООП. Ну, и помимо этого основы хтмл, цсс и жабаскрипта.
Аноним 10/06/21 Чтв 15:03:33 #58 №2064303 
>>2064222
Вакансии смотрю, да.
Аноним 10/06/21 Чтв 18:43:23 #59 №2064541 
>>2064204
У меня нет столько времени, работа сама себя не работает к сожалению, так что в будние дни максимум часа 2-3 смогу выделять в лучшем случае, поэтому и спросил про год.
Аноним 10/06/21 Чтв 21:56:34 #60 №2064683 
>>2064299
>жабаскрипта

Кстати, а на хуя пыхеру фронтенд язык знать?
Аноним 10/06/21 Чтв 21:57:14 #61 №2064684 
>>2064541
А, ну тогда да, год понадобится, но это все равно маловато да и усталость после работы влияет
Аноним 10/06/21 Чтв 22:45:58 #62 №2064731 
>>2064683
Раньше все веб давалоперы были фулстеки, потом всё дохуя усложнилось и разделились на бек и фронт, но с пхп некоторая инерция осталась.
Аноним 11/06/21 Птн 00:44:26 #63 №2064893 
Сап, пхпаны, что нужно помимо вордпресса для заработка на лапшу быстрого приготовления?
Аноним 11/06/21 Птн 03:09:32 #64 №2064954 
>>2064893
Ну можешь попробовать еще опенкарт посмотреть и битрикс. Правда с этой тройкой ты только на лапшу и сможешь расчитывать.
Аноним 11/06/21 Птн 10:02:34 #65 №2065070 
>>2064954
Регулярно вижу вакансии на битрикс с нормальными зарплатами. Если порог брезгливости не очень высокий, то можно и там зарабатывать
Аноним 11/06/21 Птн 11:48:56 #66 №2065134 
>>2065070
Битрикс так то довольно популярен так что не так уж мало людей на нем работает.
Аноним 11/06/21 Птн 14:02:47 #67 №2065315 
ДОБРОЕ УТРО! ПОМОГИТЕ, ОТВЕТИТЬ НА МОИ ВОПРОСЫ! Я ВКАТЫВАЮСЬ В ВЁРСТКУ, НО МНЕ СКАЗАЛИ, ЧТО В 2К21 ГОДУ БОЛЬШЕ ВЕРСТАЛЬЩИКОВ НЕ СУЩЕСТВУЕТ, СКАЗАЛИ УЧИТЬ РНР, ПОТОМУ ЧТО ДАЖЕ ВОРДПРЕСС ИМЕЕТ REST API И МОЖЕТ СЛУЖИТЬ КАК HEADLESS CMS. ПОЭТОМУ Я ОЗНАКОМИЛСЯ С САМЫМИ БАЗОВЫМИ ОСНОВАМИ РЕАКТА

1) Если я хочу быть верстальщиком, фронт-жабаскриптером, реакт-макакеном. То что мне нужно знать об аутентификации, сессиях и jwt токенах? Процесс аутентификации полностью лежит на плечах бэкенда или мне как фронт-жабоскриптеру что-то надо ajax,fetch-запросами куда-то посылать для аутентификации?

Я читал на хабре про jwt-токенты, РНР сессии, но нихуя не понял

2) Что мне нужно знать об web-сокетах? Если я как верстак, фронт-жабаскриптер должен буду делать чат. То что мне нужно знать об web-сокетах?
Я тоже про них читал на learnjs, но нихуя не понял.

ОЧЕНЬ СИЛЬНО ПРОШУ ПРОЩЕНИЯ ЗА СВОЁ СУЩЕСТВОВАНИЕ! ПРИНОШУ ГЛУБОЧАЙШИЕ ИЗВИНЕНИЯ!
Аноним 11/06/21 Птн 14:12:13 #68 №2065327 
>>2065070
Хз как вкатиться в этот ваш битрикс. Я пробовал его установить и потестить, так там ведь просто тонны лапшекода, в котором по идее надо хорошо разбираться и решать возникающие проблемы.
Книг по нему нет, туториалов нет, документация на сайте полное гавно и т.д.
Короче вариант не для новичков, имхо
Аноним 11/06/21 Птн 14:14:22 #69 №2065329 
>>2064090
>джуниоров даже за еду работать уже не берут
Вообще да. Только куча не программистов, а таких вот вкатывальщиков. Требования к джунам выкатывают в зависимости от запрлаты - у одних будешь за 30к Попенкарт пердолить целыми днями, другие попросят фреймворк, докер, юнит-тесты и дадут со старта 80к.
Не слушай местных зазывал - пиздят либо ошибка выжившего.
Аноним 11/06/21 Птн 14:18:44 #70 №2065335 
>>2065315
Блядь, анон, ты ёбнутый совсем местных двачеров слушать? Они тебе такого насоветуют - охуеешь. Какие фреймворки, какие, в жопу, вебсокеты?
Любой веб начинается с вёрстки - что бекенд, что фронтенд. Фронтенду вообще особенно хорошо вёрстку знать надо.
Выглядит это так: статичная вёрстка + методы + инструменты, потом чистый жаваскрипт и немного динамики, потом уже фреймворки и тд. Куда ты полез вообще, тебя тупо затроллели, либо борщехлебы хейни понаписали из манямирка?
Аноним 11/06/21 Птн 14:27:00 #71 №2065345 
>>2065335
Суть в том, что поковырял вёрстку. Немножко жабаскрипт поковырял.

Но дальше я уже ничего не понимаю. Поэтому родились вопросы:
1) Что я должен знать как верстальщик в процесс аутентификации? Я должен что-то отправлять ajax-запросами? Или я ничего не должен и всё бэкенд сам сделает.

2) Что я должен знать как верстальщик, если придется делать чат. Что я должен делать с веб-сокетами?
Аноним 11/06/21 Птн 14:41:28 #72 №2065353 
>>2065345
>поковырял вёрстку
>жабаскрипт поковырял
>дальше я уже ничего не понимаю
Плохо поковырял значит и надо больше.

>Что я должен знать как верстальщик в процесс аутентификации?
>если придется делать чат
Очень странные вопросы. Если тебе это всё нужно только для чата, то проще будет нанять кого-то или купить готовый.
Аноним 11/06/21 Птн 15:25:36 #73 №2065424 
>>2065353
>Плохо поковырял значит и надо больше.
Это уже в бэке ковыряться надо. Я пытался, на w3schools основы РНР прошёл и SQL. Читал Мэтта Зандстру про РНР ООП, но дальше главы про абстрактные фабрики не осилил. Потом смотрел вводные видео про next.js. Читал на хабре джве статьи про jwt токены. Но нихуя не понял.

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

>Очень странные вопросы.
|Они родились из того, что я читал в learnjs тему про веб-сокеты. Я всё подряд читаю из learnjs. И я не понял, что это за хуйня, и что я должен из этой темы знать как верстальщик.
Аноним 11/06/21 Птн 15:36:42 #74 №2065437 
>>2065424
>меня высмеяли, что я хватаюсь за всё подряд
Ну да. Ты по верхам пробежался просто и думаешь, что освоил что-то. В норме опыт считается только выполненными проектами - сперва говно из палок, потом всё лучше и лучше. Туториалы, книжки и статейки никто в серьёз не воспринимает и не будет - в одно ухо влетело, в другое вылетело.

>не понял, что это за хуйня, и что я должен из этой темы знать как верстальщик
Ничего. Верстальщик верстает статические страницы, его динамика почти не касается. Фронтенд разработчик это верстальщик + динамика на js. В вебсокеты не лезь пока - тебе ещё рано.
Аноним 11/06/21 Птн 15:48:26 #75 №2065444 
>>2065424
>Они родились из того, что я читал в learnjs тему про веб-сокеты
Тебе вообще туда лезть не нужно, раз хочешь верстку. Вообще всё, что касается бека не трогай
Аноним 11/06/21 Птн 16:38:14 #76 №2065480 
>>2065335
двачую адеквата
Аноним 11/06/21 Птн 22:03:00 #77 №2065818 
>>2065327
Это вариант для говноедов
Аноним 11/06/21 Птн 22:12:54 #78 №2065824 
Ребята, а реально ли релокейтнуться в Восточную Европу(Литву например) с пхп?
Аноним 11/06/21 Птн 22:18:31 #79 №2065828 
>>2064090
За месяц синтаксис изучаешь, пробуешь сделать что-то связанное базой данных и идешь искать работу. Жопаскрипт освоишь уже на самой работе, хотя, перед тем как устроится, желательно уметь им пользоваться в плане написания функций и вывода ajax запросов. Это не сложно, учится буквально за вечер.
Я когда пхпшником устроился, то мне вообще дали говнокод ковырять на asp classic, смачно подохуел тогда.
Аноним 11/06/21 Птн 22:20:30 #80 №2065830 
>>2065828
Смотришь PHP за час От профессионала и идёшь раскидывать заявки на вакансии - ты ж теперь у мамы синьор. Сам язык уже на работе подтянешь.
Аноним 11/06/21 Птн 22:22:46 #81 №2065832 
>>2065830
Не утрируй. Я через месяц учебы работу на пхп нашел, говорю исключительно о своем опыте. Работа правда гавно, за 25к всего.
Аноним 11/06/21 Птн 22:24:23 #82 №2065834 
>>2065832
Так тебя обычным эникеем взяли фактически, но заставили код писать. Причём тут пхп?
Аноним 11/06/21 Птн 22:25:18 #83 №2065835 
>>2065834
Ну так сначала говно делал, постепенно стали давать проекты на yii допиливать. Чем не работа?
Аноним 11/06/21 Птн 22:29:04 #84 №2065837 
>>2065835
>проекты на yii допиливать
>25к

>Чем не работа?
На стройке больше заработаешь.
Аноним 11/06/21 Птн 22:31:05 #85 №2065839 
>>2065837
Вопрос был о том, КАК НАЙТИ РАБОТУ, а не о заработке. Я на него ответил. К чему доеб, не понимаю?
Аноним 11/06/21 Птн 22:49:35 #86 №2065850 
p
Аноним 12/06/21 Суб 00:29:18 #87 №2065926 
>>2065315

> НО МНЕ СКАЗАЛИ, ЧТО В 2К21 ГОДУ БОЛЬШЕ ВЕРСТАЛЬЩИКОВ НЕ СУЩЕСТВУЕТ

Это не совсем так. Речь о том, что нет спроса на верстальщиков, умеющих делать только HTML-верстку с CSS без JS. Обычно от верстальщика ожидают, что он реализует и JS-код. При этом JS-код может быть в форме простых скриптов на jQuery (при нажатии на кнопку, показать попап, отправить аякс-запрос), так и в форме приложения на фреймворке вроде React, Vue. То есть предпочтительнее быть не верстальщиком, а полноценным фронтенд-специалистом.

> То что мне нужно знать об аутентификации, сессиях и jwt токенах?

Тебе надо тщательно изучить, как работают куки. Это твоя зона ответственности.

Сессии работают полностью за счет бекенда. Форма логина отправляется на сервер, и в случае успеха, сервер выставляет куку (она содержит id сессии), которая подтверждает наличие авторизации. Эта кука шлется автоматически при любом запросе (то есть и при открытии страницы, и при аякс-запросах) и автоматически проверяется сервером. От фронтенда тут требуется разве что сверстать красивую форму логина.

Отличие JWT-токена от id сессии в том, что для проверки сессии бекенд должен искать (на диске, в редисе, в БД) идентификатор сессии и проверять его правильность. Если у тебя все хранится на одном сервере - проблем нет. Но если у тебя хайлоад и куча серверов, то тебе надо выделить какое-то центральное хранилище для сессий и на него будет сыпаться куча запросов от бекендов.

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

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

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

> Что мне нужно знать об web-сокетах?

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

> должен буду делать чат.

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

Аноним 12/06/21 Суб 00:38:37 #88 №2065933 
>>2065837

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

С другой стороны, в строительстве крутятся огромные деньги. Посмотрите цены на квадратный метр. Обычному программисту такие деньги, конечно, никто не даст, а строительным компаниям люди из последних средств платят. Очень выгодный бизнес.
Аноним 12/06/21 Суб 00:41:52 #89 №2065934 
>>2065424

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

Ты должен знать принцип работы, как отправлять и получать сообщения по веб-сокетам, как сериализовать данные (например: тебе надо отправить объект с кучей полей), знать, какие бывают прикладные протоколы поверх WS вроде Autobahn (хотя, может он уже устарел?).
Аноним 12/06/21 Суб 00:42:53 #90 №2065935 
>>2065327

Исходный код лучшая документация.
Аноним 12/06/21 Суб 00:45:55 #91 №2065941 
>>2063636

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

Что-то более высокоуровневое там делать неудобно. Например, проверку прав доступа сделать там тяжело, хотя некоторые и пишут, что для этого можно использовать middleware.
Аноним 12/06/21 Суб 00:50:09 #92 №2065946 
>>2063961

> https://designpatternsphp.readthedocs.io

Это не очень удачная книга. Она объясняет, как реализовать паттерн, но не объясняет, зачем он нужен. Также, там дурацкие примеры, например тут: https://designpatternsphp.readthedocs.io/en/latest/Creational/Builder/README.html

Тут в примере используются классы TruckBuilder и CarBuilder. В каком приложении тебе понадобится создавать машины с помощью билдера?

Более того, там приведен сложный код, используются интерфейсы, наследование, но нет никаких поясенений, зачем это нужно.
Аноним 12/06/21 Суб 01:01:52 #93 №2065959 
>>2065824
Работаю на фирму, которая релокейтнула пачку пыхеров в Чехию в Прагу. Т.е. большая часть команды разрабов работает из Праги. Кто-то собирается переезжать, как с ковидлом поуляжется
Аноним 12/06/21 Суб 01:03:47 #94 №2065961 
>>2065835
Тоже начинал с yii до сих пор на нем, блядь, ебаное легаси, мать его. Так что относительно неплохой старт. Главное - срыгнуть на симфу
Аноним 12/06/21 Суб 01:09:52 #95 №2065969 
>>2064166

Автор вопроса спрашивал, как ему настроить выполнение заданий под Windows, значит его интересует именно эта ОС.
Аноним 12/06/21 Суб 07:51:22 #96 №2066044 
В чем ошибка?
http://sandbox.onlinephpfunctions.com/code/bdd73be758550ceeb5a72f8cb02f422e164258ba
Аноним 12/06/21 Суб 09:56:07 #97 №2066069 
>>2065824
Реально. Я из Беларуси и мне сейчас компания предлагает помощь с релокацией в Польшу, Литву или Украину.
Аноним 12/06/21 Суб 09:59:14 #98 №2066070 
>>2065959
>>2066069

Спасибо за ответ ребята, а то я что-то приуныл, и уже подумывал стэк сменить.
Аноним 12/06/21 Суб 11:04:22 #99 №2066086 
>>2066044
Тому що нужно проверять существование ключа subject в массиве прежде чем обращаться к нему. Регулярка у тебя тоже кривая Спасибо, вернул мне мой 2005-й
Аноним 12/06/21 Суб 11:57:40 #100 №2066104 
>>2065926
>Тебе сначала хорошо бы изучить не веб-сокеты, а классические сокеты Беркли. Понять, как вообще данные передаются в сети между машинами. После этого веб-сокеты, после этого прикладные протоколы вроде Autobahn.
Очередной посылатель учить левую хрень.
Аноним 12/06/21 Суб 12:06:33 #101 №2066105 
>>2066086
>вернул мне мой 2005-й

А что не так, так уже не пишут?
Аноним 12/06/21 Суб 12:19:48 #102 №2066106 
>>2066105
В процессе учебы писать так абсолютно нормально, но не более того. Хотя возможно, что в каких-нибудь конторах, клепающих лендинги, обработка форм сделана именно так.
Аноним 12/06/21 Суб 12:28:33 #103 №2066111 
>>2066106
А как по стильному современному будет?
Аноним 12/06/21 Суб 12:51:47 #104 №2066126 
>>2066106
А как правильно? С аяксом? Или какой-то структурой?
Аноним 12/06/21 Суб 12:55:04 #105 №2066129 
>>2066069
Компания не EPAM случайно?
Аноним 12/06/21 Суб 15:04:51 #106 №2066219 
>>2066104

Сам ты левая хрень. Сокеты Беркли надо понимать, так как веб-сокеты на них основаны.

>>2066106

Он написал код просто, чтобы протестировать регулярное выражение. Ты предлагаешь (угробив кучу времени) сделать полноценное приложение на Симфони ради проверки регулярки?
Аноним 12/06/21 Суб 15:10:14 #107 №2066224 
>>2066219
Тогда пиздуй учить диодно-транзисторную логику, а еще лучше начинай с квантовой механики и физики полупроводников, ведь веб-сокеты на этом основаны. Пока не выучишь не возвращайся в IT.
Аноним 12/06/21 Суб 16:21:25 #108 №2066274 
>>2066219
>Сокеты Беркли надо понимать
Тыскозал? Как это поможет накатить библиотеку и сделать по документации? Нахуй надо ковырять левые доки по другому языку, ты ебан какой-то.
Аноним 12/06/21 Суб 16:25:50 #109 №2066281 
>>2066219
>Сокеты Беркли надо понимать
Их вендору надо понимать, а не имплементатору. Сразу нуба в разработке видно. Небось ещё и на ВУЗы дрочишь - типа без вышки и знания тысяч алгоритмов только не пизди, что ты их все учил не бывает программистов.
Аноним 12/06/21 Суб 16:43:28 #110 №2066299 
Есть тут аноны, которые работают с Битрикс?
Расскажите плиз как вкатывались, что читали/смотрели?
Аноним 12/06/21 Суб 16:57:25 #111 №2066315 
>>2066111
>>2066126

По стильному-современному это будет экшен контроллера в который будет инжектиться либо реквест, из которого ты руками (не надо так) или с помощью десериализации достанешь нужные тебе данные, скормишь их валидатору и потом будешь с ними работать, либо готовая провалидированная дтошка (в ларке это из коробки, в симфони нужно запилить аргумент ресолвер) опять таки с нужными тебе данными
Аноним 12/06/21 Суб 18:30:00 #112 №2066387 
index.jpg
Напомните почему так сложно установить пыху на винду и заставить работать с фреймворками? Это говно даже собственный конф файл не может поcтавить: php.ini
Аноним 12/06/21 Суб 18:32:43 #113 №2066389 
>>2066387
Ну если тебе распаковать зип и добавить в path сложна, то хуй знает.
Аноним 12/06/21 Суб 18:44:17 #114 №2066404 
15989214252560s.jpg
>>2066389
>Ну если тебе распаковать зип и добавить в path сложна, то хуй знает.
Аноним 12/06/21 Суб 19:25:29 #115 №2066459 
>>2066387
А зачем страдать, если можно поставить линукс в дуалбут? Все равно на работе придется иметь с ним дело. Сами себе придумывают сложности на ровном месте, а потом героически с ними сражаются
Аноним 12/06/21 Суб 19:33:47 #116 №2066469 
>>2066299
Читал доки symfony/laravel, смотрел AFUP PHP. Пошел на собес с требованиями "symfony, laravel, wordpress". На тех. собесе мне сказали: "Ты молодец, конечно, у нас проекты для тебя есть, но пока что завал с битриксом, так что подсоби". Ну я согласился: первый собес, хули. Прочитал доки и прошел тесты за неделю, поработал месяц и убежал.
Аноним 12/06/21 Суб 19:35:13 #117 №2066471 
symfony-в чем ее фишка?
Аноним 12/06/21 Суб 20:25:31 #118 №2066504 
>>2066471
Symfony - это ОН
Laravel - ОНА

Не путай!
Аноним 12/06/21 Суб 20:57:08 #119 №2066521 
>>2066504
laravelka
Аноним 12/06/21 Суб 21:28:21 #120 №2066548 
>>2066469
Сколько заплатили хоть за такую вилкочистию?
Аноним 12/06/21 Суб 22:16:14 #121 №2066594 
>>2066471
В компонентности, например
Аноним 12/06/21 Суб 22:17:13 #122 №2066596 
>>2066594
и в чем отличие от монолитной лары?
Аноним 12/06/21 Суб 22:17:53 #123 №2066597 
>>2066469
>symfony, laravel, wordpress
Ничего не насторожило?
Аноним 12/06/21 Суб 22:19:57 #124 №2066598 
>>2066596
В том, что можно взять только то, что тебе необходимо. К примеру только контейнер зависимостей и роутер. А в ларке даже педрильный блейд гвоздями прибит по крайней мере раньше было так
Аноним 12/06/21 Суб 22:20:59 #125 №2066599 
>>2066598
те я могу взять только роутинг,а дальше сам велосипедить?
Аноним 12/06/21 Суб 22:47:37 #126 №2066610 
>>2066599
Еще доктрина, если ты адепт предметного подхода в архитектуре, может ебенейшую по вложенности структуру из сущностей и вэлью обжектов подхватить без изменений. Причем тебе твою бизнес логику никак не придется переделывать под фреймворк, а элоквент так не может и заставит тебя писать кучу борлеплейта по преобразованию структур бизнес логики в модели и наоборот, либо заставит прибивать БЛ к ларавелу гвоздями.
Аноним 12/06/21 Суб 22:49:59 #127 №2066611 
>>2066469
>symfony, laravel, wordpress
Ну ты нашёл куда сунуться. Мог бы сразу на фрилансе к очередному дебилу с "нужон розробочтик на Тилда, Вопркперс, Ларавел, Опенкарт за 20к\мес" пойти в услужение.

>На тех. собесе мне сказали: "Ты молодец, конечно, у нас проекты для тебя есть, но пока что завал с битриксом, так что подсоби"
Ожидаемо.
Аноним 12/06/21 Суб 22:54:11 #128 №2066614 
>>2066599
Для этого проще микрофреймворк взять и самому накидать туда что нужно.
Аноним 13/06/21 Вск 14:44:24 #129 №2066992 
>>2066614
А чем симфони не микрофреймворк?
Аноним 13/06/21 Вск 16:48:23 #130 №2067067 
16164188827072.jpg
>>2062494 (OP)
Дошёл до задачи с палиндромом в учебнике, вроде решил её, но у меня стойкое желание что я наговнокодил, вот сам код https://ideone.com/DGq6ON

Я для отсчета символов с конца строки создал лишнюю переменную и у меня стойкое ощущение что это можно было сделать как-то по другому, но я не понимаю как. Я находил в интернете решения этой задачи через функции, но я до них ещё не добрался поэтому меня интересует более оптимальное решение из тех знаний что предоставил учебник до этого момента.
Аноним 13/06/21 Вск 16:48:59 #131 №2067069 
>>2067067
Желания => ощущение

быстрофикс*
Аноним 13/06/21 Вск 17:00:55 #132 №2067078 
>>2067067
-($i+1) вместо x.
Аноним 13/06/21 Вск 17:29:17 #133 №2067105 
>>2067078
Спасибо за подсказку, так и знал что нагавнокодил.
Аноним 14/06/21 Пнд 10:48:00 #134 №2067636 
>>2066610
использование доктрины не делает твой код "предметным"
Аноним 14/06/21 Пнд 14:03:27 #135 №2067774 
>>2066299
>Есть тут аноны, которые работают с Битрикс?
Есть. Потрогал говно, блеванул, больше с ним не работаю
Аноним 14/06/21 Пнд 14:06:45 #136 №2067777 
>>2067067
Тяжело наговнокодить в функции на 5 строк. Работает и ладно
Аноним 14/06/21 Пнд 15:44:09 #137 №2067841 
>>2067636
Не шизи, там такого не написано.
Аноним 14/06/21 Пнд 19:51:33 #138 №2068110 
>>2066129
З якой мэтай цікавішся?
Аноним 14/06/21 Пнд 20:08:50 #139 №2068123 
>>2068119
Шизик, тебе уже отвечали, что ты обращаешься к несуществующему ключу массива.
Аноним 15/06/21 Втр 05:40:28 #140 №2068607 
Сап, двач. Вопрос следующий. Я программирую уже год и 5 месяцев на языке программирования "пи эйч пи".

Короче, первая моя работа была около года в компании работающей на CMS и делающей магазинчики ебучие. Это было больно, но я работал и учился. Потом перешел в другое место и начал делать проект на Yii. Там продуктовая компания, продукт всего один. Стартапщики ебучие.

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

Что я научился за эти полтора года:
- Ну собсна ПХП. 7ой ясен хуй. С пацанским ООП.
- Базы данных. Запросы, джойны, репликация, нормальная форма. Вообще на машке работаем, но я и на монге успел.
- Редиска и мемкэшд. Для, что характерно, кэша.
- Слегка JS. У нас в админке интерфейс простой, хуйня на бутстрапе с жиквири. Модалочки хуялочки научился делать, всякие говногулпы.
- Докер с компоузом, куда же без него.

Так вот. Что мне делать КАЖДЫЙ ДЕНЬ помимо работы чтобы дальше расти в скилле? Сейчас начал читать книжку по Yii для более глубокого понимания. Так же начал писать мелкий фронтенд на реакте чтоб научиться и этому тоже. Че ещё посоветуете?

Аноним 15/06/21 Втр 07:53:57 #141 №2068619 
>>2068607
>Что мне делать КАЖДЫЙ ДЕНЬ помимо работы чтобы дальше расти в скилле?
Бля, да много чего ещё можно делать!

1) Учить какие бывают архитектуры. Событийно-ориентированные, микроядро, микросервисы, многослойная, space-based и т.д.

2) Учить облачные сервисы - AWS, Azure, Google Cloud. Проходить воркшопы https://awsworkshop.io/ Смотреть Well Architected Framework https://aws.amazon.com/ru/architecture/well-architected/

3) Учить инструменты деплоя/автоматизации архитектуры - Hashicorp, Pulumi, Chef, Puppet, Ansible, Salt и т.д.

4) Учить стандарты PHP - https://www.php-fig.org/ PHP CodeSniffer, и т.д.

5) Учить CI/CD - тот же Сicle CI.

6) Учить Github/Github экшены.

7) Учить как отслеживать приложения - Lumigo, Dynatrace, Datadog, и проч.

8) Проджект менеджмент - ту же Asana, какие стили бывают agile, lean, scrum, kanban и т.д.

Короче учить можно до бесконечности.
Аноним 15/06/21 Втр 13:53:48 #142 №2068868 
>>2068619
Какой смысл это все учить без применения на практике?
Аноним 15/06/21 Втр 14:43:10 #143 №2068937 
>>2068619
1. Согласен, общее понимание неплохо бы иметь.
2. Особо не задрачивать, просто понимать что в принципе на рынке есть. В каждой галере всё по своему.
3. Нахуя? Во-первых это дело ДевОпсов, во-вторых, максимум нужно примерно понимать пару-тройку команд для деплоя.
4. Согласен, было бы неплохо знать.
5. Нахуя? Опять же, это работа ДевОпса, разве что общий принцип как работает в твоей компании CI/CD.
6. Ага, блядь, и пайплайны битбакета. Что там учить то? Просто конфигурируешь настройки под каждый проект (по ридми и мануалам), что конкретно ты учить там собрался-то?
7. Нахуя ты опять советуешь учить не технологии/подходы, а какие-то частные реализации? Опять же, это работа ДевОпса. Твоя работа как программиста максимум помочь в интеграции, всё. Тебе не нужно учить все сервисы которые тот или иной продукт предлагает.
8. Угу, ещё "выучи Жиру" забыл добавить.

Короче, советы не для программиста, а для девопс/кодера/продакт менеджера/архитектора/продакт оунэра комбайна. Тот, кто всё это знает, по сути не знает ничего, нахватался по верхам.
Я бы челу предложил копать глубже, а не в ширь. Посмотреть паттерны, поразбираться как устроены популярные фреймворки, попробовать написать экстеншены к ним, попробовать покоммитить в опен сорс проекты.
Аноним 15/06/21 Втр 14:57:52 #144 №2068961 
>>2068937
>3, 5, 7
В мелких фирмах/командах сеньор бекендер может быть девопсом на пол ставочки. Там как раз хватает знаний по верхам, т.к. нужно поднять дефолтный си/сд
Аноним 15/06/21 Втр 17:55:07 #145 №2069238 
>>2068607
>Что мне делать КАЖДЫЙ ДЕНЬ помимо работы чтобы дальше расти в скилле?
Как минимум начать использовать единственный нормальный фреймворк на похапе
Аноним 15/06/21 Втр 18:21:23 #146 №2069294 
>>2069238
Двачую, сам хочу на Битрикс пересесть
Аноним 15/06/21 Втр 18:23:33 #147 №2069301 
>>2069294
Он имел в виду Вордпресс
Аноним 15/06/21 Втр 18:32:14 #148 №2069327 
15293260325950.jpg
>>2069294
>>2069301
Макаров, ты что ли?
Аноним 15/06/21 Втр 18:48:25 #149 №2069352 
>>2068110
Интересно, для себя
Аноним 15/06/21 Втр 20:18:32 #150 №2069494 
всем привет.
до уровня джуна (хорошие знания php + база laravel/yii2 + mysql) за сколько подтягивается?
Аноним 15/06/21 Втр 20:19:23 #151 №2069496 
>>2069327
Я Макаров, но, скорее всего, не тот, о котором ты написал
Аноним 15/06/21 Втр 20:22:07 #152 №2069501 
>>2069494
Оптимально за пол года фултайм (40ч в неделю) можно выйти с нуля на джуна и пойти штурмовать собесы.
Только побольше кода пиши на голой пыхе и с фреймворками.
Результатом учебы должен быть какой-нибудь пет проект на фреймворке с основными фичами (пара крудов, авторизация, хождение в сторонние апи)
Аноним 15/06/21 Втр 20:32:13 #153 №2069506 
Как через PDO получить количество затронутых строк? Надо проверить есть ли уже в дб вводимое значение. То что пробовал нихуя не работает(((
Аноним 15/06/21 Втр 20:39:21 #154 №2069512 
>>2069506
rowCount, это rows affected для запроса.
А если просто количество, то через select count, очевидно же.
Аноним 15/06/21 Втр 20:42:00 #155 №2069515 
>>2069501
ну знания пыхи на базе есть в связке с бд. могу круд приложение написать. я переживаю по большей части за то, что я ебланил всё своё время. как вытекающие: 5 записей в тк (начал с веб-разработчика, потом пошёл на завод, на склад, в вуз программистом, потом блять логистом поработал, причём только в двух местах работал 5 и 12 месяцев. в остальных по две недели). это уже пиздец тотальный? даже если ахуенные знания будут, мне кажется не возбмут чела со склада блять.

мне 25 только стукнет
Аноним 15/06/21 Втр 21:28:47 #156 №2069551 
>>2069496
Да ладно, Санек, не шифруйся.
Аноним 15/06/21 Втр 21:34:21 #157 №2069559 
>>2068607
Symfony
Аноним 15/06/21 Втр 23:20:54 #158 №2069695 
>>2069551
>>2069496
>>2069327
А чё за приколы? Так-то если без шуток СамДарк крутой программист и дизайн архитектор. дрочу на него
Аноним 16/06/21 Срд 00:39:58 #159 №2069748 
ПОЧЕМУ ЭТО ВЫДАЕТ 23?
<?php
$s = 2;
switch ($s){
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
break;
default:
echo "default";



}
Аноним 16/06/21 Срд 00:42:26 #160 №2069752 
>>2069748
Вопрос отпал.
Но нахуя?
Аноним 16/06/21 Срд 00:51:06 #161 №2069757 
>>2069748
Это пиздануто из си, а там вроде было сделано, чтобы несколько кейсов хуярить, т.е.
case 1:
case 2:
hui
break;

case3:
Аноним 16/06/21 Срд 05:12:45 #162 №2069805 
>>2069515
Что мешает завести новую трудовую если тебя это так беспокоит? Да и вообще если ты по скиллам и знаниям устроишь работадателя то не похуй ли ему где ты там раньше работал?
Аноним 16/06/21 Срд 07:42:40 #163 №2069818 
>>2069494
Смотря с какого уровня. Если не умеешь кодить вообще - год с нуля. Если умеешь кодить на питоне задачи, быстрее.

>>2069748
Это тебя зумера троллят чувак поопытнее? Жоска


> попробовать покоммитить в опен сорс проекты.

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

>>2069515

Хуйня все это. У нас люди уходили на контракт на 3 года а потом возвращались и снова в код. И нихуя. Некоторые выкатывались из айти и вкатывались обратно. Одному мне збс
Аноним 16/06/21 Срд 09:47:50 #164 №2069867 
>>2069695
Вот тройку зарелизит лет через 15, тогда и посмотрим.
Аноним 16/06/21 Срд 10:15:07 #165 №2069882 
>>2069818

> Кста, я хочу покоммитить куда-то.

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

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

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

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

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

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

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

А как именно контрибьютить: клонируешь проект, делаешь правки, проверяешь, если в проекте используются тесты, то покрываешь свои правки тестами, оформляешь свой код в соответствие с требованиями, делаешь пулл-реквест.
Аноним 16/06/21 Срд 13:06:43 #166 №2070045 
Симфоводы, почему у класса Request нет интерфейса и соответственно половина фреймворка завязана на эту конкретную реализацию? Что делать, если я хочу написать обертку над реквестом с парой нужных мне методов? Уже не нужно на самом деле, но просто любопытно
Аноним 16/06/21 Срд 13:51:15 #167 №2070119 
>>2070045
Имхо, скорее всего он был написан еще при царе горохе.
Там один класс на 2к строк, хз, какой ты интерфейс туда хочешь
Аноним 16/06/21 Срд 16:20:00 #168 №2070319 
>>2069515
Лол блять, я с пустой трудовой в 34 ватываюсь
Аноним 16/06/21 Срд 16:54:12 #169 №2070377 
>>2070319
и что, долго вкатываешься?
Аноним 16/06/21 Срд 17:07:51 #170 №2070404 
>>2070319
Лол, я в свои 29 лет уже понимаю, что поезд ушел, и развиваться реально только в своей, уже надоевшей, специальности, а ты в 34 такой глупый.
Аноним 16/06/21 Срд 17:24:01 #171 №2070419 
>>2070119
> хз, какой ты интерфейс туда хочешь
Да хоть marker interface как в жабе
Аноним 16/06/21 Срд 17:38:17 #172 №2070427 
image.png
>>2070319
Чел...
https://insights.stackoverflow.com/survey/2019#developer-profile-_-age
Аноним 16/06/21 Срд 17:42:59 #173 №2070429 
>>2070427
Лет через 20 будет полно дидов.
Аноним 16/06/21 Срд 17:43:59 #174 №2070430 
>>2070404
>уже понимаю, что поезд ушел
Ну так все правильно, ты уже выгорел, потерял интерес. Нефиг было с 14 лет кодить.
Уходи на пенсию и дай место молодым, 30+ летним, которые про кодинг узнали год назад.
Аноним 16/06/21 Срд 17:48:09 #175 №2070436 
>>2070429
Или не будет. В любом случае, сейчас 34 - слишком великовозраст для реального шанса на вкат.
Аноним 16/06/21 Срд 17:53:11 #176 №2070440 
>>2070436
Чел.. на мнение двачеродаунов по поводу возраста уже давно всем похуй, просто смирись с этим.
>>2069515
Да, ты уже слишком старый. Устраивайся продавцом в пятерочку и не мешай адекватам вкатываться.
Аноним 16/06/21 Срд 17:56:49 #177 №2070442 
>>2070440
>двачеродаунов
Повторюсь: https://insights.stackoverflow.com/survey/2019#developer-profile-_-age
Аноним 16/06/21 Срд 18:00:43 #178 №2070445 
>>2070442
Ну ты там другие графики посмотрел бы тоже.
>White or of European descent 70.8%
>Black or of African descent 3.6%
Ох, фсееее, бида-печаль
Если ты темнокожий, то у тебя нет шансов на вкат.
Аноним 16/06/21 Срд 18:08:28 #179 №2070454 
>>2070445
И что не так?
И при чем другие графики, если речь шла о возрасте
Аноним 16/06/21 Срд 18:10:36 #180 №2070458 
>>2070045

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

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

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

А так, интерфейс для реквестов есть - PSR-7. Просто он придуман позже, чем реквест из симфони.
Аноним 16/06/21 Срд 18:12:33 #181 №2070462 
>>2070454
>И при чем другие графики
Ну если ты не в состоянии это понять, то на твое место точно очень скоро вкатится успешный дедок 30+, хех.
Аноним 16/06/21 Срд 18:13:10 #182 №2070463 
>>2070436
Ну а хули ещё делать? Я все ещё девственник, все свободное время провожу за компом, тут либо самовыпил либо вкат с перспективой покупки японской секс-куклы
Аноним 16/06/21 Срд 18:16:31 #183 №2070464 
>>2070462
Ну так объясни, что тебе дают другие графики? Пока что выглядит как перевод стрелок с не приятной темы возраста.

>>2070463
Есть много других работ
Аноним 16/06/21 Срд 18:20:56 #184 №2070468 
>>2070463
>все свободное время провожу за компом
Вот здесь кстати кроется серьезная ошибка.
"Проводить время" - фактически досуг, это совсем не значит, что тебе понравится/получится за компом работать. Как бы даже не наоборот.
Аноним 16/06/21 Срд 18:26:31 #185 №2070474 
>>2070463
Пет проект написал?
Аноним 16/06/21 Срд 18:32:00 #186 №2070478 
>>2070464
>Ну так объясни, что тебе дают другие графики?
Статистику они дают, такую же точно статистику.
По статистике темнокожих кодеров на стековерфлоу - 3 процента
По той же статистике кодеров в возрасте 45+ - 3 процента
Означает ли это, что у кодера 45+ такие же шансы на вкат, как у темнокожего?
Каковы шансы на вкат у темнокожего кодера в возраста 45+?
Уверен ли ты, что на графиках достаточно информации, чтобы ответить на эти вопросы?
Аноним 16/06/21 Срд 18:32:38 #187 №2070479 
>>2070440
я просто указал, что стукнет 25. без мысли, что уже поздно. Переживаю за то, что везде блять поработал
Аноним 16/06/21 Срд 18:39:56 #188 №2070493 
>>2070478
Я уверен, что эта выборка - репрезентативна.

>Означает ли это, что у кодера 45+ такие же шансы на вкат, как у темнокожего?
Ну вот пошли откровенные виляния и маняврирования. При чем здесь темнокожий, если изначально речь шла о возрасте.
Аноним 16/06/21 Срд 18:39:59 #189 №2070494 
>>2070479
Ни сы. В пхп не идут упругие зумеры. Так что еще успеешь вкатится
Аноним 16/06/21 Срд 18:45:16 #190 №2070495 
>>2070493
Что интересно, пхп появился, когда 45-летнему было 20 с не большим. А первые годы (если не десятилетие) рождения языка - это практически полное отсутствие работы на нем.
Таким образом наш 45летний пациент сам мог вкатиться в пыху ближе к 30-35 годам, а сейчас это обычный синер
Аноним 16/06/21 Срд 18:48:04 #191 №2070497 
>>2070493
>При чем здесь темнокожий, если изначально речь шла о возрасте.
Ты реально довольно тупенький.
Но это хорошо:) Больше тупых зумерков = меньше конкуренции.
Даже не буду тебе советовать прочитать одну книжку, вдруг и вправду прочтешь, лол.
Аноним 16/06/21 Срд 18:52:31 #192 №2070503 
>>2070497
Ну то есть по существу тебе сказать нечего и ты отчаянно переводишь стрелки с неприятной темы возраста
Аноним 16/06/21 Срд 18:53:46 #193 №2070506 
>>2070495
>Таким образом наш 45летний пациент сам мог вкатиться в пыху ближе к 30-35 годам,
Это с хуя ли вдруг? "Вкатываются" в любые языки в основном молодые упругие зумеры.
Аноним 16/06/21 Срд 18:57:56 #194 №2070510 
image.png
Не понимаю, о чем вообще разговор, ладно чел 25lvl, он и вебмакакой побывал, релевантный опыт вот это всё. Но 30+лвл вкатыш это пиздос, такое резюме летит в корзину автоматически, по первой цифре возраста.
Даже hh вам ебалаям уже открыто говорит видимо совсем доебали, что для смены сферы деятельности в 30+ ты уже староват, нееш подумой, а если всё же долбоеб решился - ищи блядь по связям:

https://hh.ru/article/28696
Это возрастное! Как сменить профессию после 30 лет


>Ищите работу через нетворкинг: расскажите всем, что хотите перейти в новую сферу, через личный контакт вам будет проще объяснить ваше решение. Напишите в социальных сетях и поиске.
Аноним 16/06/21 Срд 19:18:46 #195 №2070524 
>>2070510
Твое мнение очень важно для нас, оставайся на связи.
>Анна Чуксеева
>карьерный психолог
>hh
Лол
Какие же зумеры дегенераты, пиздец просто.
Аноним 16/06/21 Срд 19:21:41 #196 №2070531 
>>2070503
Мне нет выгоды объяснять тебе простейшие положения статистики и теории вероятности.
Аноним 16/06/21 Срд 19:26:15 #197 №2070533 
>>2070524
>>hh
Да, что не так? Первой будет оценивать твоё резюме такая же анна - и для неё в свои 30+ ты уже возрастной и вообще лучше поискал бы по знакомым.

>>2070531
Простейшие положения статистики и теории вероятности: из общего количества профессиональных разработчиков 71,7% младше 35 лет, а 85% — младше 40 лет. Это необычно по сравнению почти с любой профессией в мире.
Аноним 16/06/21 Срд 19:36:48 #198 №2070545 
>>2070510
Приходит такой зумер устраиваться пыхарям, а у них легаси возрастом старше этого зумера
Аноним 16/06/21 Срд 19:39:02 #199 №2070547 
>>2070533
Профессия молодая
Аноним 16/06/21 Срд 19:45:45 #200 №2070556 
z16132018099450.png
>>2070533
>Да, что не так? Первой будет оценивать твоё резюме такая же анна - и для неё в свои 30+ ты уже возрастной и вообще лучше поискал бы по знакомым.
Аноним 16/06/21 Срд 19:51:21 #201 №2070564 
>>2070547
Кризису доткомов 20 лет исполнилось, дедуль
Аноним 16/06/21 Срд 19:57:41 #202 №2070567 
>>2070556
Ирония в том, что такой зумер может оказаться твоим начальником:
https://youtu.be/I92pAqNe-4Q?t=524
Аноним 16/06/21 Срд 19:58:04 #203 №2070568 
>>2070564
А первому компьютеру так вообще 80 лет.
Ты иди лучше пориджа наверни, манька.
Аноним 16/06/21 Срд 19:58:58 #204 №2070569 
zimages.jpg
>>2070567
>Ирония в том, что такой зумер может оказаться твоим начальником
Аноним 16/06/21 Срд 20:04:19 #205 №2070575 
Что за кипеш в треде? Пориджеблядки из /б/ протекли что ли? Сам вкатился в 16-м году будучи дедом за 30. Менял работу четыре раза и никто на этапе собеседований ни разу не интересовался моим возрастом. Возможно, что на галерах все иначе (скорее всего там действительно отдадут предпочтение малолетней петушне без самоуважения, которая позволит собой помыкать), но я там работать и не собираюсь
Аноним 16/06/21 Срд 20:05:25 #206 №2070576 
image.png
>>2070569
Дружище...
Аноним 16/06/21 Срд 20:10:54 #207 №2070583 
>>2070458
Я не могу ничего унаследовать, поскольку некоторые симфонивские штуки требуют именно этот самый реквест, вместо интерфейса.

>мне не нравится такая идея, так как это неожиданно, что вместо стандартного реквеста используется что-то нестандартное.
Если при наследовании код может работать с потомком наследуемого класса так же как с предком какая буква из солид? лол, то никакой проблемы в этом нет
Аноним 16/06/21 Срд 21:44:23 #208 №2070701 
>>2070045
>почему у класса Request нет интерфейса
наследие
>хочу написать обертку над реквестом
класс открыт для наследования

напиши что конкретно ты хотел сделать и зачем?
Аноним 16/06/21 Срд 22:12:01 #209 №2070707 
>>2069882

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

Но нужно что-то где есть норм баги, а не где все стабильно и их воспроизводить 100к. И хотелось бы не в либу контрибутить на самом деле а в продукт. Я бы в блендер хуярил есл бы кресты зн
Аноним 16/06/21 Срд 22:18:33 #210 №2070710 
Нахуй вы меня демотивируете своими сообщениями, что диды не нужны???

мимо30лвл-начал-изучать-только-только

Короче, если эти карьерные психологи будут выебываться на собесах, сразу на фриланс уйду, на англоязычные биржи.
Аноним 16/06/21 Срд 22:25:31 #211 №2070714 
зunnamed.png
>>2070710
>Нахуй вы меня демотивируете своими сообщениями, что диды не нужны???
Это порриджи развлекаются, не обращай внимания.
Аноним 16/06/21 Срд 22:37:49 #212 №2070723 
>>2070710
На фрилансе нужны уже опытные, с нуля нахватаешь за щеку таких минусов, что проще будет самому удалить аккаунт
Аноним 16/06/21 Срд 22:39:54 #213 №2070725 
5kXFRdBNsz0.jpg
Всем приветики. Задача про кубики (рандомные значения). Я её решил, слегка переделал. Подскажите, код нормальный или говноедство?
Аноним 16/06/21 Срд 22:43:38 #214 №2070727 
>>2070725
Ну так-то любой год на пхп это говноедство.
Такой уж у вас язык.
Аноним 16/06/21 Срд 22:45:53 #215 №2070730 
>>2070727
А ты чего тогда тут забыл?
Аноним 16/06/21 Срд 22:49:00 #216 №2070738 
>>2070725
не до 6, а до 10 поставил просто потому что так захотел. я не кубики бросаю!!!
Аноним 16/06/21 Срд 22:54:13 #217 №2070744 
реактор-свинарник-свиньи-грязь-137086.jpeg
>>2070730
Аноним 16/06/21 Срд 23:00:54 #218 №2070752 
>>2070725
Какой там код, лол.
По оформлению лучше ифы со скобками и юзай интерполяцию вместо конкатенации.
Аноним 17/06/21 Чтв 01:11:19 #219 №2070862 
f2d3fc216e2a83cdfc2137ba45c6dcb7.jpg
>>2070510
>для смены сферы деятельности в 30+ ты уже староват

Так тут не о смене сфере деятельности базар, а о первой работе после 30+ вообще.
Аноним 17/06/21 Чтв 01:12:41 #220 №2070863 
>>2070576
>саморазвитие

>Яндекс

Чел...
Аноним 17/06/21 Чтв 01:16:00 #221 №2070867 
>>2070862
>а о первой работе после 30+ вообще.
Земля свободной кассой и желтой торбой
Аноним 17/06/21 Чтв 01:37:02 #222 №2070872 
апр.jpg
>>2070867
>Земля свободной кассой и желтой торбой
Аноним 17/06/21 Чтв 01:56:36 #223 №2070882 
image.png
>>2070872
>я вкачусь вот увидити
Аноним 17/06/21 Чтв 02:07:58 #224 №2070885 
>>2070882
Не проецируй на взрослых дядек то что мамка тебя из дома выгоняет на работку и у тебя встал выбор между маком и выгоранием в 25. Я могу хоть до пенсии дома просидеть.
Аноним 17/06/21 Чтв 09:37:18 #225 №2070960 
>>2070727
«Ну так-то любой год на пхп это говноедство.
Такой уж у вас язык» — раздался пронзительный голос со стороны параши.
Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?
Перекладыватель жсончиков на других языках — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём макбук.
Аноним 17/06/21 Чтв 09:55:02 #226 №2070972 
>>2070960
Пиздец у тебя подгорело. Видимо в самую точку.
Аноним 17/06/21 Чтв 10:15:52 #227 №2070992 
>>2070583

Я не очень тебя понял. Допустим, в Симфони есть функция

doSomething(Request $req) { ... }

В соответствие с принципом Лисков, в эту функцию можно передать объект-наследник Request и это не нарушит тайп-хинты:

class MyRequest extends Request { ...}
doSomething(new MyRequest(...));

Аноним 17/06/21 Чтв 10:21:11 #228 №2070997 
>>2070583

По моему, проблема есть. Допустим, у нас есть функция Symfony, которая возвращает реквест:

function getReq(): Request { ... }

И код, который ее использует, вызывает какой-то метод из твоего кастомного реквеста:

getReq()->doSomething();

при чтении кода здесь возникнет непонимание: откуда в реквесте из Симфони взялся метод doSomething()?

IDE и статический анализатор тоже здесь укажет на ошибку.

Или я что-то не понял?







Аноним 17/06/21 Чтв 10:41:37 #229 №2071005 
>>2070972
А вот и тот самый рисователь кнопочек/перекладыватель жсончиков/крудоеб на петухоне/жопаскрипе нарисовался. Видимо, в самую точку, раз с копипастой заговорил.
Аноним 17/06/21 Чтв 10:50:07 #230 №2071012 
Приветики-привет.
Назрел такой вопрос: масса книг и не знаю какую выбрать первой для изучения пыхи. Посмотрел учебник ОПа, который в шапке, мне не понравился. Мало конкретизации даже по типизации, а как по мне, это немаловажно.
Какую книжку выбрать? Котерова? Или видео-курсы какие-нибудь скачать или на ютубе вкуривать и параллельно гуглить?

А что если смотреть курсы или книги по пхп7, а щас уже 8, это не хуёво?

Сори за тупые вопросы, без них никак.
Аноним 17/06/21 Чтв 11:12:29 #231 №2071033 
>>2071005
>рисователь кнопочек/перекладыватель жсончиков
Чем это отличается от говноёба пыхаря?
Аноним 17/06/21 Чтв 11:21:11 #232 №2071047 
>>2071033
Зарплатой в 1.5-2 раза больше пыхарской
Аноним 17/06/21 Чтв 11:21:23 #233 №2071048 
image.png
>>2070992
>>2070997
Что-то ты не туда разговор уводишь. Повторяю, что моя проблема состоит в том, что я не могу использовать наследник реквеста, так как симфони в разных местах требует тот самый конкретный реквест. И попытка подменить его наследником во фронт контроллере не прокатила.

PHP Fatal error: Declaration of App\ArgumentResolver\BlaBlaBlaResolver::supports(App\Request\Request $request, Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata $argument): bool must be compatible with Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface::supports(Symfony\Component\HttpFoundation\Request $request, Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata $argument)
Аноним 17/06/21 Чтв 11:25:43 #234 №2071051 
>>2071033
Например, раздутым на пустом месте самомнением. Но юным петушкам-максималистам это объяснять бесполезно.
Аноним 17/06/21 Чтв 11:29:12 #235 №2071057 
>>2071051
Можем себе позволить >>2071047
Аноним 17/06/21 Чтв 11:33:00 #236 №2071061 
>>2070727

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

>>2070725

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

if (...) {
код 1;
} elseif (....) {
код 2;
} else {
код 3;
}

Также, подстановка переменных в строку ("число $number") читается лучше, чем склеивание строки из кусочков.
Аноним 17/06/21 Чтв 11:38:17 #237 №2071067 
>>2071048

Приведенная тобой ошибка возникает не из-за того, что в Симфони нет интерфейса для реквеста. Если бы для реквеста был интерфейс, она бы точно так же возникла.

Если у тебя есть класс A, в нем метод принимает объект класса B, то при наследовании ты не можешь поменять тип аргумента на C (наследника B). Так как это нарушило бы принцип подстановки Лисков: старый код, передающий в метод объект B, сломался бы.

То же самое было бы, если бы аргумент имел тайп-хинт RequestInterface. Как только ты бы попытался заменить его на MyRequest, ты бы получил ту же самую ошибку.
Аноним 17/06/21 Чтв 12:06:25 #238 №2071097 
>>2071012
>Посмотрел учебник ОПа, который в шапке, мне не понравился. Мало конкретизации даже по типизации, а как по мне, это немаловажно
На пыхе можно писать без типов.
У ОПа учебник для самых маленьких. Если ты уже можешь написать круд с/без фреймворка, то тебе учебник вряд ли пригодится.

>А что если смотреть курсы или книги по пхп7, а щас уже 8, это не хуёво?
1. 8ка еще не в продакшене и будет там не раньше чем через пару лет
2. В 8ке ввели 1.5 фичи, которые можно за вечер пощупать

Можешь взять котерова, но это по сути вольный пересказ документации
с php.net
Либо попробовать ларакасты - серии коротких видео по темам, там есть и основы пыхи и ооп
В любом случае твоя задача писать код, а не книжки читать и видео смотреть
Аноним 17/06/21 Чтв 12:19:46 #239 №2071116 
>>2071097
Спасибо большое. Да, я знаю, что надо шкодить, просто я всегда привык прочитать что-то, например, когда тернарный оператор пробовал, а потом уже хуевертил с ним всё подряд. Мне проще запоминается, когда я что-то прочту, не пойму, попробую сделать, пойму наполовину, прочту ещё раз 10 и пойму окончательно, после чего ещё закеплю на практике. Ебанутый способ наверно, но для меня он рабочий.
Аноним 17/06/21 Чтв 12:22:03 #240 №2071123 
>>2071061
> не надо забывать фигурные скобки
Я когда-то наткнулся на статью, что скобки можно опустить, если одна операция в них идёт.
>чем склеивание строки из кусочков
Просто привык к конкатенации ещё с вуза (пиздец блять, 4 года почти прошло, как в вузе прогал и забросил это дело, и щас по новой учусь. какой же я бездарь, блять.)

Аноним 17/06/21 Чтв 12:25:41 #241 №2071130 
>>2071123
>Я когда-то наткнулся на статью, что скобки можно опустить, если одна операция в них идёт.
Почитай этот момент в PSR. Насколько помню, скобки нужны, чтобы можно было зрительно распознать конструкцию. Без скобок это выглядит как обычная строчка вызова метода или присвоения
Аноним 17/06/21 Чтв 12:37:54 #242 №2071146 
>>2070707

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

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

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

Ты можешь зайти в список багов и сделать поиск по меткам. Во многих проектах есть метки вроде "help-wanted" или "up-for-grabs", которыми помечают баги для начинающих. Ты можешь использовать поиск на гитхабе для поиска таких багов. Тут есть список ссылок и меток для начинающих: https://gist.github.com/stefanmaric/d5a03eeb89af81e5537e2efe7dd479cf




Аноним 17/06/21 Чтв 12:40:59 #243 №2071152 
>>2071123

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

if (...)
....action1;
....action2; // это действие выполняется независимо от условия!

Здесь кажется, что оба действия внутри if, а по факту только одно. Чтобы такого не было, надо ставить скобки.
Аноним 17/06/21 Чтв 12:45:29 #244 №2071155 
>>2070430
Да я ж не про кодинг писал, а про свою профу, я вообще юрист.
Аноним 17/06/21 Чтв 13:23:22 #245 №2071192 
>>2071067
Это печально. А есть ли способы обойти такое поведение? В принципе у меня сейчас нет необходимости делать эту штуку, но просто интересно.
Аноним 17/06/21 Чтв 13:23:54 #246 №2071194 
>>2071152
Спасибо за разъяснения!
Но я бы и не подумал использовать два действия без скобок.
Аноним 17/06/21 Чтв 13:27:02 #247 №2071197 
>>2071057
Посмотри зарплаты симфонистов на том же джинне (все свои четыре места работы на данный момент я находил именно там) и твой мирок пошатнется.
Аноним 17/06/21 Чтв 13:34:54 #248 №2071206 
>>2071097
> 8ка еще не в продакшене и будет там не раньше чем через пару лет
С марта на восьмерке живем. Брат жив
Аноним 17/06/21 Чтв 13:37:34 #249 №2071216 
>>2071197
Так у хохлов зп больше, т.к. аутсорс за доляры + требуют разговорный инглиш
Аноним 17/06/21 Чтв 13:41:27 #250 №2071224 
>>2071197
Посмотри зарплаты жопаскриптеров на том же джинне и заплачь
Аноним 17/06/21 Чтв 13:54:53 #251 №2071254 
>>2071224
С чего бы мне плакать, если я фуллстек?
>>2071216
>требуют разговорный инглиш
И что? Хороший способ отсеять необразованную падаль.

Аноним 17/06/21 Чтв 13:59:05 #252 №2071263 
>>2071254
>И что? Хороший способ отсеять необразованную падаль.
В рф много продуктовых с русскоязычными командами
Аноним 17/06/21 Чтв 14:05:30 #253 №2071276 
>>2071254
С того, что работаешь за двоих, а зарплату получаешь за одного
Аноним 17/06/21 Чтв 14:06:05 #254 №2071278 
>>2071263
Такая у вас специфика рынка и не факт, что это хорошо. Я сам из Беларуси и иногда вижу российские вакансии на сеньерские позиции с такими вилками, что хочется плакать. Удивительно, как они вообще умудряются кого-то нанимать
Аноним 17/06/21 Чтв 14:10:23 #255 №2071286 
>>2071276
Не за одного, а как минимум за полтора.
Аноним 17/06/21 Чтв 14:14:36 #256 №2071297 
>>2071278
Не все хотят заморачиваться изучением разговорного инглиша
Аноним 17/06/21 Чтв 14:48:35 #257 №2071349 
>>2071276

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

Аноним 17/06/21 Чтв 15:00:31 #258 №2071371 
>>2071349
Он фулкек - выполняет работу фронтендера и бекендера
Аноним 17/06/21 Чтв 15:08:23 #259 №2071385 
>>2071349
Так ему нужно сначала выдрочить скилы с двух проф, потом поддерживать их актуальными. Так что хотя бы х1.5 должна быть зп
Аноним 17/06/21 Чтв 18:38:50 #260 №2071628 
>>2071385
Можно подумать, что колупание форм, кнопочек и запросиков требует каких-то неимоверных умственных усилий. Да там любая макака справится. А со времен появления vue.js это даже перестало вызывать особое отвращение
Аноним 17/06/21 Чтв 18:40:42 #261 №2071630 
>>2071297
А получать жалких полтора косаря, будучи сеньером-помидором, хотят.
Аноним 17/06/21 Чтв 18:41:33 #262 №2071632 
>>2071630
Получаю жалкие полтара косаря, не являясь синьором помидором
Аноним 17/06/21 Чтв 18:42:16 #263 №2071633 
>>2071628
Что ж тогда фулстеки не стоят по 20к руб в месяц, раз любая макака справится?
Аноним 17/06/21 Чтв 18:49:18 #264 №2071639 
>>2071633
Потоиу что за работу с жопаскрипом принято доплачивать за вредность, типа как в совке сварщикам молоко выдавали.
Аноним 17/06/21 Чтв 20:34:27 #265 №2071705 
>>2071067
Придумал, как обойти это ограничение с помощью наследования интерфейсов.

http://sandbox.onlinephpfunctions.com/code/8e3b5e08edf0b131fbfe63e83ac30d595b031a61
Аноним 17/06/21 Чтв 20:38:27 #266 №2071706 
>>2071033
Как минимум тем, что на современном похапе жсончики перекладывать в разы приятнее, чем на пятоне или, прости Господи, жопаскрипте
Аноним 17/06/21 Чтв 21:46:02 #267 №2071759 
>>2071705

Ты что-то переусложнил. По моему, тут можно было бы обойтись и наследованием:

class Request {}
class BetterRequest extends Request {}

function test(Request $r) {}
test(new BetterRequest()); // работает

Интерфейс нужен там, где есть 2 разных реализации. Ты же хочешь не делать реквест с нуля, а доработать стандартный, значит тебе нужно наследование.
Аноним 17/06/21 Чтв 23:10:15 #268 №2071855 
Я чего-то туплю.
Поднял бабла ЛАМПУ, на неё накатил вордпресс. Хотел бы обращаться на неё по имени http://235, но не судьба.
По ip фурычит.
Что я делаю не так?

Аноним 18/06/21 Птн 00:26:35 #269 №2071946 
image.png
>>2071855
Это скорее вопрос в софтач или в веб. Резолвер у тебя на компьютере, с которого обращаешься, какой? Винда там? В настройки роутера зайди, там должна быть возможность настроить разрешение кастомных адресов в конкретные ip.
Аноним 18/06/21 Птн 00:45:21 #270 №2071962 
>>2071067
>>2071705
>>2071192
Бля, ну вы и кукаретики канеш. Давно уже все за вас придумали https://refactoring.guru/ru/design-patterns/adapter . И для симфони тоже https://symfony.com/doc/current/components/psr7.html
Аноним 18/06/21 Птн 00:46:18 #271 №2071965 
>>2071855
а что ты для этого сделал?
Аноним 18/06/21 Птн 02:39:11 #272 №2072013 
>>2071946
> Это скорее вопрос в софтач или в веб.
Пока посижу тут, а потом подсяду к ним.

> Резолвер у тебя на компьютере, с которого обращаешься, какой? Винда там?
Отдельная машина в локалочке, а на ней стоит Ubuntu.

> В настройки роутера зайди, там должна быть возможность настроить разрешение кастомных адресов в конкретные ip.
Гляну.

>>2071965
1. Изменил настройки пермалинка на "дружелюбные"
2. включил в апаче rewrite
3. отредактировал файл по пути /etc/apache2/sites-available/000-default.conf
4. Перезапустил апач

Аноним 18/06/21 Птн 04:50:58 #273 №2072030 
>>2072013
>Отдельная машина в локалочке, а на ней стоит Ubuntu.
>с которого обращаешься
Аноним 18/06/21 Птн 09:38:49 #274 №2072083 
yodabeingnaughty.png
Я не совсем понимаю, как должен выглядеть шаблон формы в HTML, чтобы при ошибке заполнения форма выводилась с уже подставленными значениями (и сообщением об ошибке). У текстовых полей можно через переменные заполнять value, но ведь формы ещё могут содержать select-элементы, в которых value не проставишь. В свою очередь, select'ы могут содержать сотни опций выбора. Я знаю об аттрибуте selected, но как мне его проставить автоматически именно в той опции, которую выбрал пользователь, а затем ввёл что-то невалидное. Нужно сделать так, чтобы его опции в select'ах сохранились при выводе ошибки на страннице формы.

Единственное, что приходит на ум - это составление функции, которая будет принимать аргументом уже проставленные пользователем значения, собирать форму по элементам и возвращать её код. Но это будет именно функция, а не шаблон. Наверняка тут есть какой-то конвенциональный подход. Как это лучше запилить?
Аноним 18/06/21 Птн 09:59:48 #275 №2072091 
>>2071962
Ты по ходу не прочитал в чем суть проблемы.
Аноним 18/06/21 Птн 11:40:04 #276 №2072171 
11.jpg
>>2072013
> 1. Изменил настройки пермалинка на "дружелюбные"
> 2. включил в апаче rewrite
> 3. отредактировал файл по пути /etc/apache2/sites-available/000-default.conf
> 4. Перезапустил апач

И как компьютер, с которого ты вводишь этот адрес, должен узнать, что где-то в каком-то апаче отредактирован конфиг?

Если я сейчас у себя отредактирую /etc/apache2/sites-available/000-default.conf и напишу туда хост BBC.COM -- у тебя он начнёт открываться с моего компа? очевидно нет

Читай про DNS, редактируй файл hosts на машине, с которой обращаешься.
Аноним 18/06/21 Птн 12:58:44 #277 №2072271 
>>2072091
Все я прочитал. В симфони по старинке используется https://symfony.com/doc/current/components/http_foundation.html
В то время как стандартом является PSR-7 https://www.php-fig.org/psr/psr-7/
И давным давно написали конвертер под этот стандарт https://github.com/symfony/psr-http-message-bridge

А написал я что вы велосипедите хуйню, в то время как все уже сто лет как по полочкам разложено. Что использовать в качестве реквеста, как делаются кастомные обертки над объектами, как какать и как писоть.
Аноним 18/06/21 Птн 13:02:55 #278 №2072274 
В шаблон так же можно прокинуть переменные из контроллера (введенные юзером значения формы, например). В популярных фреймворках это реализовано
Аноним 18/06/21 Птн 14:00:26 #279 №2072341 
>>2072271
И как то, что ты написал, поможет подменить симфонивский реквест другой реализацией и использовать эту реализацию там, где различные штуки явно требуют симфони реквест?
Аноним 18/06/21 Птн 14:52:46 #280 №2072431 
Допустим есть красная точка на пикче, мне нужно удалить её(выкрутить альфа канал до полной прозрачности)
Через imagesetpixel у меня это чёт не получается, как я понял если указать в imagecolorallocatealpha прозрачность, он тупо этот(прозрачный) цвет и прибавит, нихуя в итоге не изменив.
Как зделоть-то?
Аноним 18/06/21 Птн 14:55:34 #281 №2072440 
>>2072341
В симфони реквест явно вставляется или через di контейнер?
Аноним 18/06/21 Птн 15:06:21 #282 №2072456 
>>2072341
Ты там угашенный что-ли? Попустись, пивка глотни.
Симфонивский реквест используется в симфони. А вне симфони используется PSR-7 реквест. ВНЕ, блядь. В НЕ симфоневском роутере, например. В собственных классах или бандлах. Каким хуем ты собрался менять код в штуках, которые "явно требуют симфони реквест"? Ты там vendor что-ли правишь?
Аноним 18/06/21 Птн 15:07:39 #283 №2072457 
>>2072440
Создается во фронт контроллере, а потом инжектится при необходимости
...
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
...
Аноним 18/06/21 Птн 15:17:25 #284 №2072471 
>>2072456
Сам ты, блядь, угашенный. Посмотри на https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/HttpKernel/Controller/ArgumentValueResolverInterface.php и увидишь, что там явно требуется симфонивский реквест. И при написании своего резолвера хуй ты свой реквест туда засунешь. По крайней мере у меня не получилось, поэтому и задал вопрос.
Аноним 18/06/21 Птн 15:31:29 #285 №2072487 
>>2072471
Пробовал туда передавать наследника от симфони реквеста?
Аноним 18/06/21 Птн 15:50:04 #286 №2072502 
>>2072471
Какой же ты тугой. Прямо носом нужно тыкать, пиздец просто
https://github.com/symfony/psr-http-message-bridge/blob/main/ArgumentValueResolver/PsrServerRequestResolver.php
Аноним 18/06/21 Птн 16:14:39 #287 №2072511 
>>2072487
Конечно. И получал ошибку - >>2071048

>>2072502
Пока не приведешь пример, как с помощью того, что ты принес в тред, написать резолвер для DTO или VO, который внутри будет использовать наследник реквеста, тугой здесь ты.
Аноним 18/06/21 Птн 16:17:04 #288 №2072517 
>>2072511
Так ты не декларацию этих методов правь, а передавай, где надо, свой класс вместо симфонивского
Аноним 18/06/21 Птн 16:28:15 #289 №2072540 
TameRequiredJaeger.mp4
>>2072511
В резолвер инжектится ФАБРИКА. Фабрика принимает симфоневский реквест, а возвращает PSR реквест. Ты можешь прокинуть эту ФАБРИКУ в ЛЮБОЙ резолвер, пусть он хоть DTO возвращает, хоть АЛЛАХА.
Аноним 18/06/21 Птн 16:42:24 #290 №2072558 
15986403473341.mp4
>>2072431
Очевидно что альфа-канал не влияет на сам цвет.

Что (какой цвет) должно остаться под альфа? оно само за тебя должно придумывать, что ли?
Аноним 18/06/21 Птн 16:43:08 #291 №2072559 
>>2072540
напомните, откуда кадры?
Аноним 18/06/21 Птн 16:51:51 #292 №2072565 
>>2072083

Простановка атрибута selected делается так. Пусть $value - это выбранное пользователем значение, которое надо пометить:

<select>
<option value="x" <?= $value === 'x' ? 'selected' : '' ?></option>
<option value="y" <?= $value === 'y' ? 'selected' : '' ?></option>
...

(тут использован тернарный оператор)

Если ты не пишешь <option> руками, а генерируешь из массива опций, то код будет еще проще.
Аноним 18/06/21 Птн 16:53:34 #293 №2072568 
>>2072565
selected="selected" же, не? хОтя могу ошибаться, а проверять лениво.
Аноним 18/06/21 Птн 17:13:10 #294 №2072585 
>>2072540
Так анону требовался наследник симфореквеста с дополнительной функциональностью, а не PSR.
Аноним 18/06/21 Птн 17:19:47 #295 №2072589 
>>2072585
Так я ему и объясняю что он пытается дрочить вприсядку. Если тебе нужен именно реквест, то PSR-7 это отраслевой стандарт, он покрывает все что ты только можешь с реквестом сделать. А если тебе нужна производная от реквеста, то это уже нихуя не реквест и нахуй не надо что-то там наследовать или имплементировать.
Аноним 18/06/21 Птн 17:41:06 #296 №2072605 
>>2072540
Корявое говно. С таким же успехом я могу просто инжектить в резолвер сервис с нужной функциональностью. Именно этого я и пытался избежать в попытке подменить реквест на уровне приложения. Ну и нихуя не удивительно, что от человека, который хотел кого-то удивить адаптером, ускользнул основной смысл моего вопроса.
Аноним 18/06/21 Птн 18:02:24 #297 №2072641 
>>2072605
>С таким же успехом я могу просто инжектить в резолвер сервис с нужной функциональностью. Именно этого я и пытался избежать
А нахуя?

>в попытке подменить реквест на уровне приложения
Зачем?
Аноним 18/06/21 Птн 18:05:26 #298 №2072646 
>>2072605
Да все, все. Пену вытри. Ты охуенный программист. Верю. Только про PSR не в курсе. Да и di с композицией у тебя говно корявое, а вот подменять вендорские объекты для всего приложения это заебись идея. Ну заебень рефлексией или трейтом, как там у вас гениев принято.
Аноним 18/06/21 Птн 18:41:55 #299 №2072692 
>>2072646
Чел, речи про ПСР реквест изначально не шло вообще, это ты его приплел. Касательно подмены объекта, я же не изменяю старое поведение, а добавляю новое. Все в соответствии с заповедями Варвары. Рефлексию я, конечно же, использовать не буду да и вообще уже отказался от этой идеи. Извини, если погорячился.
Аноним 18/06/21 Птн 18:57:20 #300 №2072705 
>>2072692
Да я просто подъебываю. Ты понимаешь что только ты решил следовать заповедям варвары? Ты не контролируешь процесс, что там с этим реквестом будет происходить, и кто че подменял и ещё подменит не знает никто.

Поэтому трогать вендорную хуйню нельзя ни в коем случае. В реальном проекте я бы определил твой реквест в di контейнере и прокидывал бы в контроллер просто через конструктор. И сразу начнет вырисовываться что это нихуя не реквест. Потому что реквест, даже симфонивский может делать все что нужно http запросу - возвращать пришедшие на сервер данные. А все остальное это уже обработка запроса.
Аноним 18/06/21 Птн 23:32:09 #301 №2073107 
038b124bcf7e5ff167c9844df1c202e1.mp4
Это реально так?
Аноним 18/06/21 Птн 23:59:23 #302 №2073128 
>>2073107
Просто смотри на зарплату. Иногда с джуна просят докеры, ПСР, ООП, юнит-тесты, и плотят 80к со старта, а иногда уметь вордпресс\опенкарт настроить и плотют 30к.
Главное не перепутать: прогинг за 80к, имплементация за 30к. Работодатели же обожают просить ВСЁ за 30к.
Аноним 19/06/21 Суб 08:29:25 #303 №2073304 
>>2072568

Можно писать просто selected, так как это boolean attribute.
Аноним 19/06/21 Суб 11:26:02 #304 №2073400 
Screenshot from 2021-05-28 11-52-28.png
>>2072565
Спасибо за подсказку, я никак не мог до этого додуматься.
Аноним 19/06/21 Суб 12:34:26 #305 №2073477 
>>2072568
а тред засирать тебе не лениво, пидор?
Аноним 19/06/21 Суб 20:36:16 #306 №2073937 
>>2073477
пидор твоя мать, пидор
Аноним 20/06/21 Вск 02:00:42 #307 №2074148 
15989850078290.jpg
>>2073937
> пидор твоя мать, пидор
суть PHP
Аноним 20/06/21 Вск 09:20:00 #308 №2074217 
Сап двач. Подскажите пожалуйста, что кидать в портфолио, помимо интернет-магазинов, CMS, и блогов. Чтобы выделятся, от остальных?
Аноним 20/06/21 Вск 11:26:49 #309 №2074282 
>>2072030
Шинда дриснятая.
Сборка: много говна, мало палок

>>2072171
Вот как раз я не хочу редактировать файл hosts. Планируется заход с дрюса.
Ищу альтернативный путь.

Почитаю про DNS.


Аноним 20/06/21 Вск 14:10:41 #310 №2074425 
>>2074217
> портфолио

Ты уже выделился
Аноним 20/06/21 Вск 14:12:44 #311 №2074430 
>>2074217

согласен с этим
>>2074425

чекни резюме вкатунов - быть лучше них довольно легко.
Аноним 20/06/21 Вск 15:09:04 #312 №2074477 

>>2074425
в плохом смысле?
Аноним 20/06/21 Вск 15:14:14 #313 №2074484 
>>2074430
спасибо за совет
Аноним 20/06/21 Вск 21:55:45 #314 №2074992 
Gjj
Аноним 21/06/21 Пнд 11:12:52 #315 №2075357 
>>2074282
>Вот как раз я не хочу редактировать файл hosts.
Как бы ты или покупаешь домен и направляешь на ip, или поднимаешь в локалке DNS свой, в нём делаешь редирект(будет работать только внутри локалки, и то только если ты этот днс укажешь в том роутере который за интернеты отвечает), или редактируешь hosts. Как ещё это по твоему может работать?
Аноним 21/06/21 Пнд 15:11:39 #316 №2075778 
Кто-нибудь использует api platform в рабочих проектах? Поясните за плюсы и минусы
Аноним 22/06/21 Втр 02:59:38 #317 №2076649 
>>2074282
> не хочу
тогда пердолься ради своих фантазий
Аноним 22/06/21 Втр 19:30:36 #318 №2077283 
Пишу синхронизацию данных.
На обработку одного item-а приходится где-то 1-6 запросов в бд. Item-ов может прийти до 10к.
Офк это всё происходит в фоне, запускается с ребита, но даже так джоба задыхается и повисает.

Есть какие-то паттерны оптимизации синхронизации данных?

Раньше делал вместо обработки по 1 айтему сразу пачкой (по 100 или 1000), соотв объединял операции вставки, получалось на порядок быстрее.

Можно ли что-то еще тут придумать или идти проверенным путем?
Аноним 22/06/21 Втр 21:46:30 #319 №2077361 
16218023289390.png
>>2077283
1 -- непонятно, что ты делаешь, распиши подробнее

2 -- непонятно, почему синхронизация БД на уровне РНР, а не СУБД
Аноним 22/06/21 Втр 21:57:56 #320 №2077374 
>>2077361
Получаю данные апи, потом актив рекордом пишу в базу в несколько таблиц-сущностей, соответственно проверяю, чтоб не было дубликатов перед записью.
Тут скорее не синхра, а фетч данных.

Потому что данные получаю по апи в непригодном для записи формате, их нужно обработать, раскидать по разным сущностям
Аноним 22/06/21 Втр 21:59:12 #321 №2077377 
>>2077374
что смущает?
Аноним 22/06/21 Втр 22:01:23 #322 №2077380 
>>2077377
То, что на 1к сущностей уходит минут 5. А там их может быть >10к штук
Аноним 22/06/21 Втр 22:04:44 #323 №2077382 
>>2077380
В транзакции апдейтишь?
Аноним 22/06/21 Втр 22:05:06 #324 №2077384 
>>2077374
>>2077377
>джоба задыхается и повисает.
оптимизировать вывод на уровне RabbitMQ;
понизить приоритет вставки;

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

>какие-то паттерны оптимизации синхронизации данных
>какие-то
это вообще не про программирование
конкретизируй

> раньше получалось на порядок быстрее
вообще непонятно, в чём проблема
Аноним 22/06/21 Втр 22:42:09 #325 №2077406 
>>2077382
нет
Аноним 22/06/21 Втр 22:43:05 #326 №2077408 
>>2077384
Проблема в том, что нужно оч быстро переделать, т.к. сроки давно проебаны. А переписывать нормально + тестировать займет несколько дней
Аноним 22/06/21 Втр 22:47:23 #327 №2077417 
>>2077406
Так добавь, зачастую из-за этого тормозят массовые вставки и апдейты. Если ещё инсерты переделать на много записей на один запрос, то вообще будет летать.
Аноним 22/06/21 Втр 22:49:15 #328 №2077420 
>>2077417
Спасиб, попробую. Не думал в таком ключе транзакцию использовать. Да и добавить недолго
Аноним 22/06/21 Втр 23:03:30 #329 №2077441 
Хочу сказать этому ебаному wsl2. Ебаный ты козел, блядь, черножопый.
Столько времени не могут пофиксить баг, который делает работу на нем невозможной - работа замедляется раз в 10 из-за ебли с виртуальными виртуалками и абстракциями абстракций
Аноним 23/06/21 Срд 00:15:40 #330 №2077486 
>>2077441
Ты про баг с докером, которыц память не отдает?
Аноним 23/06/21 Срд 01:07:52 #331 №2077503 
>>2062494 (OP)
>Владимир Дронов: Laravel 8. Быстрая разработка веб-сайтов на PHPНа
Анончики, можно ли с этой книжкой вкатиться в написание простых бложеков с админкой? (не фриланс, конечно, а просто личные пет прожекты) Пхп почти не знаю, ООП не понимаю.
Есть ещё подробная литература по свежему пхп и какому-нибудь фреймворку?
Аноним 23/06/21 Срд 01:08:57 #332 №2077506 
>>2077503
>подробная
подобная. т9фикс
Аноним 23/06/21 Срд 01:18:58 #333 №2077508 
>>2077503
https://www.books.ru/author/dronov-39884/
Какой-то дид унылый, ничего толкового не высрал.
Аноним 23/06/21 Срд 08:17:44 #334 №2077577 
>>2077503
Книжки по пхп - тупое говно тупого говна, особенно от наших авторов, лучше посмотри любой курс для новичков (Кудлая, например), а потом шлифани Елисеевым, если терпения хватит.
Аноним 23/06/21 Срд 09:02:23 #335 №2077603 
Лол
Аноним 23/06/21 Срд 09:45:51 #336 №2077612 
>>2077441
скажи спасибо, что он вообще есть
Аноним 23/06/21 Срд 11:19:00 #337 №2077634 
>>2077503
берешь доку или ютуб
куча бесплатных курсов. Зачем книги по фреймворку?
Аноним 23/06/21 Срд 11:26:44 #338 №2077636 
>>2077503
Если тебе нужен правда простой бложек с админкой, то тебе хватит вот этого видоса:
https://www.youtube.com/watch?v=0Be0fX9wbXc
Автор тут явно мудак ибо даже я, не прогавший на ларавеле и только пару дней назад решивший его изучить для прохождения ТЗ на РАБоту очередную вижу кучу косяков. Но такие базовые вещи как шаблонизатор, роутинг, работа с БД тут рассмотрены. А больше особо и не надо, всё равно практика решает.
Аноним 23/06/21 Срд 11:43:41 #339 №2077657 
>>2077486
Я про баг (или это фича) оч медленной работы, если проект запускается из под wsl2, но лежит в примонтированной директории (/mnt/d/dev/...).
Вчера пытался перенести проект в home раздел, но чуда не произошло. Так же идут простейшие запросы по 30-40 секунд.
У коллеги на макоси всё хорошо работает 1-2 секунда на запрос.
По ходу только убунту накатывать и ебаться с видео дровами
Аноним 23/06/21 Срд 11:45:52 #340 №2077660 
>>2077612
Да лучше б не было. Мб как человек сидел на линуксе
Аноним 23/06/21 Срд 11:58:44 #341 №2077663 
>>2077657
Насколько я понмю, всл1 это была виртуалка, а всл2 какой-то слой эмуляции апи и он обсирается как раз, в первом работало лучше. Так что можешь поставить виртуалку и пробросить свои файлы два раза из хоста в гест и из геста в докер, будет всё равно лучше, лол.
Аноним 23/06/21 Срд 11:59:55 #342 №2077664 
>>2077657
>Вчера пытался перенести проект в home раздел, но чуда не произошло.

Вообще по идее должно нормально работать. Конвертни обратно в всл1 и посмотри результат.
Аноним 23/06/21 Срд 11:59:55 #343 №2077665 
>>2077657
Первый раз о таком слышу. Чо на всл 1 что на всл2 всё рабоатет вполне норм из mnt

>>2077663
Ты всё напутал. Всл2 на виртуалке, а всл1 был слой трансляции сисколлов аля wine наоборот.
Аноним 23/06/21 Срд 12:34:47 #344 №2077711 
>>2077657
тоже первый раз слышу, всё быстро работает

мониторь ресурсы компа
Аноним 23/06/21 Срд 12:48:55 #345 №2077728 
>>2077657
У тебя случайно не хдд?
Аноним 23/06/21 Срд 12:54:11 #346 №2077743 
>>2077728
На ssd всё крутится.
С hdd несколько лет назад охуевать начал, когда вин10 накатил, подкопил на сосунг ево и забыл про тормоза
Аноним 23/06/21 Срд 17:30:01 #347 №2078108 
>>2077374
>проверяю, чтоб не было дубликатов перед записью.
INSERT IGNORE какой-нибудь не проще?
Аноним 23/06/21 Срд 18:16:50 #348 №2078200 
Capture d’écran du 2021-06-23 18-12-29.png
Посоны, кто-то делал авторизацию для подресурса на api platform?
Док предельно прост и нагляден: https://api-platform.com/docs/core/subresources/#access-control-of-subresources
Я нашел операцию через дебаг, проверил через attributes реквеста, прописал пикрил, а оно не работает.
Аноним 23/06/21 Срд 18:45:50 #349 №2078234 
>>2077634
Зачем мне куча? Советуй конкретный.

>>2077636
Спасибо, попробую с этой хуйни начать

>>2077577
https://webformyself.com/laravel/
Этот? И что, он годный? Учитывает НОВШЕСТВА пхп 8?
На рутрекере не нашел
Аноним 23/06/21 Срд 19:00:08 #350 №2078244 
>>2077283
>>2077374
Там еще и Yii-шные бихейверы роль сыграли. Ебаный актив рекорд
Аноним 23/06/21 Срд 19:01:04 #351 №2078245 
>>2078234
>https://webformyself.com/laravel/
Хлебнешь воды. И это не Елисеев
Аноним 23/06/21 Срд 19:02:04 #352 №2078246 
>>2078245
Я и не утверждал, что это Елисеев. Это Кудлай
Аноним 23/06/21 Срд 19:04:39 #353 №2078252 
>>2078246
https://rutracker.org/forum/viewtopic.php?t=5788697
Аноним 23/06/21 Срд 19:07:37 #354 №2078256 
уебищность пхп по сравнению с другими нормальными языками очевидна с первых шагов - у пхп даже нет инсталлера под винду
Аноним 23/06/21 Срд 19:07:58 #355 №2078257 
>>2078234
> Учитывает НОВШЕСТВА пхп 8?
Да что вы так цепляетесь за версии? Там 1.5 изменения
Аноним 23/06/21 Срд 19:07:59 #356 №2078258 
>>2078246
так что лучше не начинай, анон. лучше js или джанго
Аноним 23/06/21 Срд 19:10:40 #357 №2078259 
>>2078256
Что ты собрался на винде делать, когда рабочее окружение линупс в основном?
Аноним 23/06/21 Срд 19:57:48 #358 №2078287 
>>2078256
Не пизди есть докер называется
Аноним 23/06/21 Срд 21:09:28 #359 №2078368 
>>2078234
Есть на NoNameClub, но учти, он ознакомительный, для обезьянок-астронавтов, уровня "так падажжи ебана".
Можешь этого чела глянуть, но он вроде Yii разбирает.
https://www.youtube.com/c/ВикторЗинченкоА/featured
Аноним 23/06/21 Срд 23:45:24 #360 №2078578 
>>2078256
не пизди, пидор, полно пакетов типа XAMPP
Аноним 24/06/21 Чтв 07:47:07 #361 №2078708 
>>2078256
Docker есть, и ещё тысяча способов решить это.
Аноним 24/06/21 Чтв 09:40:07 #362 №2078743 
>>2078256
Зачем тебе инсталлер, еси ты можешь просто распаковать архив и запускать php.exe?
Аноним 24/06/21 Чтв 13:12:37 #363 №2078944 
Аноны, решаю задачку со студентами, как решить проблему с установкой куки с локалхоста?
Аноним 24/06/21 Чтв 13:45:10 #364 №2078972 
>>2078944
В чем проблема? Какая ошибка?
Аноним 24/06/21 Чтв 13:46:23 #365 №2078973 
>>2078944
Про это что ли?
https://stackoverflow.com/questions/1134290/cookies-on-localhost-with-explicit-domain
Аноним 24/06/21 Чтв 14:00:06 #366 №2078994 
>>2078972
>>2078973
Мне надо отправить с локалхоста в браузер кукисы, но просто так это не выводит. Тупо в списке всех куки не появляется локалхост.

>Про это что ли?
Типа да, но то что там описано пробовал и не работает.
Аноним 24/06/21 Чтв 14:30:11 #367 №2079020 
>>2078994
А пробовал в хостс поменять локалхост на какой-нибудь валидный с двумя точками?
Аноним 24/06/21 Чтв 14:31:30 #368 №2079021 
>>2078287 >>2078708

Докер это не инсталлятор пэхэпэ, довен. У всех норм языков есть свой инсталлер.
>>2078578
XAMPP это не инсталлятор пэхэпэ, довен. XAMPP это комбайн из кучи говна, в числе которого есть и пэхапэ. У всех норм языков есть свой инсталлер.
>>2078743
Потому что я не в 1987 году, чтобы что-то руками распаковывать. Еще и в PATH руками добавлять? Лол, ты точно из 2021?
Аноним 24/06/21 Чтв 14:42:29 #369 №2079035 
>>2079020
Фуххх.. Разобрался. Как обычно тупняк на ровном месте был, время устанавливал не как time() + 10 лет, а просто как 10 лет, получалось кукисы истекали в 1980 году. А так вместо локалхоста домен прописал как ".app.localhost" и схавало.
Аноним 24/06/21 Чтв 14:44:52 #370 №2079039 
>>2079035
Грац
Аноним 24/06/21 Чтв 14:48:03 #371 №2079041 
>>2079021
Есть такой менеджер пакетов для винды chocolatey, им можно одной строчкой пхп установить как в лине
Аноним 24/06/21 Чтв 16:30:46 #372 №2079144 
>>2079021
А зачем тебе standalone установщик php то? Что ты с ним делать будешь без вебсервера?
А если с вебсервером-есть куча готовых инсталлеров.

Алсо нахуя тебе на винде пыха?
Аноним 24/06/21 Чтв 16:56:34 #373 №2079170 
>>2079144
>Алсо нахуя тебе на винде пыха?
Может он там десктоп пишет
Аноним 24/06/21 Чтв 17:01:32 #374 №2079177 
>>2079170
Не ну если так... То огромной ему удачи, чо.
Аноним 24/06/21 Чтв 17:04:46 #375 №2079182 
>>2079021
без инсталлятора, не можешь что ли?
Аноним 24/06/21 Чтв 18:12:14 #376 №2079258 
>>2079041
Да, я знаю про него. И по-прежнему, у пэхапэ нет своего инсталера.

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

>А если с вебсервером-есть куча готовых инсталлеров.
Васянских говносборок типа XAMPP?

>>2079182
Могу. Но не хочу. Это знаешь, как ездить на ручной коробке, когда все нормальные люди уже давно пользуются акпп.
Аноним 24/06/21 Чтв 18:16:04 #377 №2079262 
>>2079258
>Васянских говносборок типа XAMPP?
А вот сами создатели пхп XAMPP не считают васянским...
https://www.php.net/manual/ru/install.windows.tools.php
Аноним 24/06/21 Чтв 18:17:02 #378 №2079264 
>>2079258
>То же, что и с джангой без вебсервера.
НУ И ЧТО ЖЕ ТЫ БУДЕШЬ С НЕЙ ДЕЛАТЬ БЕЗ ВЕБСЕРВЕРА?
Аноним 24/06/21 Чтв 18:24:24 #379 №2079270 
>>2079262
Денвер они не так давно убрали из доки, да?)

>>2079264
После установки языка без веб сервера я сам выберу подходящий мне веб сервер с нужными мне модулями и параметрами и установлю его отдельно. Если надо будет, конечно!
Аноним 24/06/21 Чтв 18:37:50 #380 №2079283 
>>2079258
А еще nginx нельзя на винде запустить
Аноним 24/06/21 Чтв 18:38:33 #381 №2079285 
>>2079270
>Денвер они не так давно убрали из доки, да?)
Может и так. Но это прям оф. позиция разрабов языка. А значит ты идёшь на хуй.
>После установки языка без веб сервера я сам выберу подходящий мне веб сервер с нужными мне модулями и параметрами и установлю его отдельно.
Ну значит распакуешь из архивчика, не обломаешься.

Алсо выход есть. WSL накатываешь, apt-get install php.
Винда? Винда. Пхп? Пхп.
Аноним 24/06/21 Чтв 20:45:08 #382 №2079377 
>>2079285
>Может и так. Но это прям оф. позиция разрабов языка. А значит ты идёшь на хуй.
Но в итоге-то пошли нахуй они, а не я.
Аноним 24/06/21 Чтв 22:42:33 #383 №2079448 
>>2079377
Что ты всё еще тут делаешь? Давай иди в тред с языками, у которых есть инсталлер
Аноним 25/06/21 Птн 09:46:46 #384 №2079649 
>>2079448
Одно другому не мешает!
Аноним 25/06/21 Птн 12:06:21 #385 №2079750 
>>2065935
Прям цитата из документации
Открывал я этот исходный говнокод, методы на 500 строк с кучей вложенных if и циклов, передача массивов по ссылке, хуй чего найдешь. А подключение шаблонов это прям искусство говнокода. Да и в целом 3 разных подхода, функциональный с глобальными переменными, ООП старый и ООП новый с неймспейсами и хуй пойми что из них работает, что нет, на что положили хуй, а чего ещё не дописали.
Аноним 25/06/21 Птн 12:08:37 #386 №2079756 
>>2079750
Ты у нас из секты свидетелей качественного кода?
А зачем писать не говнокод?
Аноним 25/06/21 Птн 12:45:09 #387 №2079787 
>>2079756
Ну если тебе нужно все сделать за минимум времени, получить деньги от заказчика и съебаться, ебись оно все конём, гори синим пламенем, как делают большинство битриксоидов и алкашей фрилансеров, то говнокод это твой выбор.
Если ты выпускает продукт с длительной поддержкой, над которым работают много разработчиков и который будут использовать тысячи разработчиков по всей стране, то писать чистый код это должно быть чем-то само собой разумеющимся.
Аноним 25/06/21 Птн 12:53:02 #388 №2079795 
>>2079787
>то писать чистый код это должно быть чем-то само собой разумеющимся.
Почему?
Аноним 25/06/21 Птн 13:04:19 #389 №2079801 
>>2079795
>Почему?
Большую часть времени приходиться не писать код, а именно читать. Когда у тебя есть какой-то метод в виде лапши на 300 строк кода, то после 100 строки ты уже забываешь что было выше и понимание как работает этот код усложняется, приходиться несколько раз перечитывать, тот же код вынесенный в отдельный класс и разбитый на методы в пару строк каждый читать в разы проще и проще вносить изменения. Плюс можно использовать различные паттерны, разбивать на сервисы и тп, в таких проектах сразу знаешь что где искать, а не блуждаешь в куче файлов и куче станок кода.
Аноним 25/06/21 Птн 13:12:40 #390 №2079810 
>>2079801
>Когда у тебя есть какой-то метод в виде лапши на 300 строк кода
>тот же код вынесенный в отдельный класс и разбитый на методы в пару строк каждый читать в разы проще и проще вносить изменения

Частным случаем лапшичного кода является как раз слишком сильное разбитие.
Нормальная длинна метода варьируется в зависимости от назначения оного от 1 строки(геттер, сеттер, ЕТС) до где то 40.
Но уж точно не по 2 строки на каждый. Я бы даже сказал что 20-40 строк более нормальный размер в большинстве случаев.
Но да, больше 40-перебор(хотя тоже есть исключения. Но крайне редкие).
Аноним 25/06/21 Птн 13:28:39 #391 №2079831 
>>2079787
Если работаешь с битриксом, то планка качества кода автоматом опускается к ядру земли
Аноним 25/06/21 Птн 13:29:58 #392 №2079832 
>>2079810
Лазанья кода, кстати, не видел. В основном перекос в сторону спагетти кода
Аноним 25/06/21 Птн 13:58:38 #393 №2079890 
>>2079801
>приходиться несколько раз перечитывать
Ну так за это деньги платят
Аноним 25/06/21 Птн 16:14:40 #394 №2080096 
Правда ли, что php лучший язык для фриланса на ангоязычных биржах вроде upwork? Какой фреймворк полезнее всего для такой деятельности? Ларавель?
Аноним 25/06/21 Птн 16:16:15 #395 №2080098 
>>2080096
>Правда ли, что php лучший язык для фриланса на ангоязычных биржах вроде upwork?
Конечно нет. Порог входа самый низкий, а значит самая высокая конкуренция. Не обладая синьорскими знаниями, делать на апворке с пхп нечего.
Аноним 25/06/21 Птн 16:16:48 #396 №2080099 
https://www.piter.com/collection/top-prodazh/product/sozdaem-dinamicheskie-veb-sayty-na-php-4-e-mezhd-izd
Аноны, это про чистый пхпх?
Не нашел в оглавлении ничего про фреймворки.
Кто-то еще пишет веб-приложухи на чистом пхп? И полезно ли это для начинающего?
Аноним 25/06/21 Птн 16:26:08 #397 №2080115 
>>2080099
Глянул английскую версию, это чисто про core, про веб вообще там минимально для демонстрации некоторых фич.
Классная книга, надо будет читнуть как спиздят тру пдфку английскую.
На чистом вряд ли пишут, оно слишком быстро превратится в неподдерживаемый пиздец.
Аноним 25/06/21 Птн 16:29:13 #398 №2080122 
>>2080115
> про веб вообще там минимально для демонстрации некоторых фич.
Пиздец, учитывая название книги
Аноним 25/06/21 Птн 16:29:42 #399 №2080123 
>>2080099
Какой-то вольный пересказ php.net
Аноним 25/06/21 Птн 16:30:31 #400 №2080125 
>>2079831
Я уже с ним не работаю) и с php вообще
Аноним 25/06/21 Птн 16:31:48 #401 №2080127 
>>2080125
Грац. Только что ты тут делаешь?
Аноним 25/06/21 Птн 16:32:08 #402 №2080129 
Изучаю этот ваш ларавел.
подрубал бутстрап так:
composer require laravel/ui

php artisan ui bootstrap

npm install && npm run dev

Всё работало. Но в какой то момент он пропал из app.css и app.js И повторно не врубается. Как так?
Аноним 25/06/21 Птн 16:43:37 #403 №2080152 
>>2080129
Всё, починил. СОрре.
Аноним 25/06/21 Птн 16:49:50 #404 №2080160 
Ананасы, покажите как вы делаете свои гидраторы в доктрине, чтобы результатом запроса была не сущность (коллекция сущностей), а DTO.
Аноним 25/06/21 Птн 17:27:42 #405 №2080217 
>>2080160
Господе, как много странных и непонятных слов
Аноним 25/06/21 Птн 17:45:49 #406 №2080242 
image.png
>>2080217
Хули непонятного-то?
Аноним 25/06/21 Птн 18:31:23 #407 №2080301 
>>2080160
Ты хочешь получить DTO, в свойстве у которого коллекция сущностей? Есть прекрасный оператор new
Аноним 25/06/21 Птн 18:37:15 #408 №2080308 
>>2080098
Я знаком с челом, который на апворке делает 200-300к деревянных в месяц, работая по 4 часа в день. Ни разу в жизни не работал в офисе.
Аноним 25/06/21 Птн 18:41:45 #409 №2080319 
>>2080301
Нет. Мне нужно что-то типа https://www.thinktocode.com/2019/09/12/hydrating-query-objects-with-dtos/
Аноним 25/06/21 Птн 19:46:47 #410 №2080369 
Простите за мою тупость, но я не понимаю, что я делаю не так.
https://ideone.com/GRUQrs
Аноним 25/06/21 Птн 19:57:21 #411 №2080375 
Какое же симфони охуенное, не надо писать гору велосипедов, просто подключил компоненты нужные и получается красивенький и понятный ооп-код.
Аноним 25/06/21 Птн 20:00:59 #412 №2080377 
image.png
image.png
>>2080369
Бля, чел, пиши в пхпшторме. Ну серьезно.
Сколько раз вы будете обсираться на том, что за вас может машина сделать?
пик 1 функция mc_rand - погугли что ли)
пик 2 натыкал exit-ов я надеюсь с целью дебага?
Аноним 25/06/21 Птн 20:23:46 #413 №2080396 
>>2080377
Спасибо. Проиграл чет с mc_rand.
Аноним 25/06/21 Птн 21:45:04 #414 №2080487 
Выполнил задачку про студентов. Где еще можно такие задания получить на построение КРУДов???
Аноним 25/06/21 Птн 22:29:18 #415 №2080536 
>>2080487
Запили библиотеку с авторами, книгами (чтоб учитывалось количество экземпляров) и читателями, которые могут брать книги домой. Можешь придумать систему уведомлений и штрафов за просроченные книги. Итд итп
Аноним 25/06/21 Птн 23:28:42 #416 №2080573 
>>2080487
На любой работе)
Аноним 25/06/21 Птн 23:33:40 #417 №2080574 
Блин, и где про ООП для пхп читать? В гугле либо какая-то шняга, либо платная херь, на ютубчике вообще все видосы это объяснение как создавать всякие классы, приватные, защищенные методы и тд, объяснение синтаксиса и возможностей языка короче, а не то как все это на практике использовать...
Аноним 25/06/21 Птн 23:39:07 #418 №2080578 
>>2080574
В пхп та же хуйня что и в джаве с мелкими отличиями, так что читать классиков типа Фаулера и Мартина, попробуй допустим Patterns of Enterprise Application Architecture
Аноним 25/06/21 Птн 23:40:19 #419 №2080581 
>>2080160

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

Я не очень понимаю, зачем тебе здесь понадобился DTO, и зачем тебе иметь 2 разных класса, которые представляют одну и ту же сущность. Разве это не дублирование кода? Доктрина и так возвращает объекты.

Если тебе нужно именно DTO, то придется копировать данные из объекта в объект руками или как-то еще. Или загружать Доктриной массив и заносить его в объект.
Аноним 26/06/21 Суб 00:07:11 #420 №2080613 
>>2080581
Нужно было просто сказать что для преобразования из/в DTO достаточно пары статических методов у Entity - fromDto, toDto. Разделение на dto и entity делается кода у нас rich model в entity инкапсулирующая бизнес правила, а dto заполняется symfony из реквеста.
Аноним 26/06/21 Суб 00:08:03 #421 №2080614 
>>2080613
>symfony формами из реквеста
Аноним 26/06/21 Суб 00:22:46 #422 №2080620 
>>2080487

В шапке есть задача про тестхаб. Но там гораздо больший объем работы.

>>2080319

Еще мне не нравится, что он создал кучу классов: репозиторий (с интерфейсом), класс для представления id, Query (с интерфейсом). Страшно представить, сколько классов будет в реальном приложении с таким подходом. Лишнее усложнение, по моему.

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

Более того, идея абстрагироваться от БД за счет Query Object гиблая. Тебе понадобится сделать какую-то хитрую выборку, где Доктрина неэффективна - и тебе понадобится писать SQL-запрос. Без всяких абстракций. А это в его схему просто не встраивается.

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

По моему, удобнее сделать сервис, а в нем find-методы. Просто и читабельно.

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

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

И еще. У него получилось три объекта, представляющих статью: Article, ArticleDTO и LatestArticleDto. Допустим, мы хотим написать функцию, считающую число слов в статье. Как мы это сделаем, если статья имеет три разных представления? Еще один интерфейс сделаем?

И еще мне не нравится что он (или, скорее всего, какая-то кривая IDE) ставит бессмысленные аннотации вроде такого:

@return string
function x(): string {}

Такая аннотация не несет никакого смысла.
Аноним 26/06/21 Суб 00:33:34 #423 №2080623 
>>2079810

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

получить список данных;
найти измененные данные;
для каждого элемента:
-- синхронизировать элемент;

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

>>2079750

Проблема таких CMS как битрикс в том, что они (по лицензионным соображениям) пишут свой код с нуля, но они не вкладывают в проектирование столько усилий, сколько, например, вложили разработчики Симфони или Доктрины, и получается какая-то написанная в спешке самоделка.
Аноним 26/06/21 Суб 11:34:19 #424 №2080796 
>>2080160
Вопрос на самом деле интересный. Бывает, что для какой-то задачи нет необходимости в доступе ко всем свойствам модели (а она может быть очень жирной да еще и с поведением), в таком случае читать только нужное из базы и создавать дтошку, пропуская этап создания сущностей - это то, что доктор прописал.
Аноним 26/06/21 Суб 15:59:24 #425 №2080912 
>>2080623
>Идея разбиения кода на части не в том, чтобы сидеть и отмерять ровно N строк на метод. Идея в том, что ты можешь описать алгоритм в общих чертах, не вдаваясь в частности.
Ля ты умныыыый. Проблема в том, что определить допустимый уровень разбиения не так то просто даже опираясь на это утверждение. У некоторых гениев на выходе получается вместо стены текста в 500 строк разбитая на 550 функций по одной строке в 50 классах с 50 интерфейсами каждый из которых применён 1(один) раз стена текста в которой ориентироваться ещё труднее, а некоторые места дублируются просто потому что он ЗАБЫЛ что это уже делал. Всё хорошо в меру. Тысяча слоёв-абстракций не сделает твой код читабельнее сама по себе. Как и тупое сваливание кода в одну кучу. И да, "отмерять N строк на метод"-один из эффективных способов привести код в подобие "разумной слоистости". Особенно если этот код будет писать джун, который не понимает ещё всех прелестей будущей поддержки кодовой базы, и не чует нутром что вот тут вот лучше добавить слой, а вот там-не стоит.
Аноним 26/06/21 Суб 20:20:06 #426 №2081139 
Подскажите нубу как реализовать отправку числа баллов:
<!Doctype html>
<html lang = "ru">
<head>
<meta charset = "utf-8">
<title>test zaprosa</title>
</head>
<body>
<form action="/" method="get">
<input type='text' name='ball'><br>
</form>
<input type='submit' value='send'>
</body>
</html>
<?php
($grade >= 50 ? 'Сдал' : 'Не сдал')
Аноним 27/06/21 Вск 09:08:34 #427 №2081434 
5bytylok.jpg
Продублирую из айти-треда.
Аноны, может кто-то за работу веб-сервера на пальцах пояснить или дать книжку/видос. Я вкатывальщик в пхп, уже почти 2 недели гуглю инфу и нихуя не понимаю - книжки по пхп тупое говно и видосы от инфоциган, где ничего не объясняется.
В каком формате приходит ответ и запрос от клиента? Апач слушает порт? Пришел запрос а дальше кто «разбирает» - апач или пхп? Сервер висит в оперативе, а пхп периодически поднимается? Как между собой взаимодействуют веб-сервер и пхп – какая-то служба в операционной системе, а в линуксе это демон называется? Пхп возвращает хтмл на сервер, а тот отправляет клиету? И зачем нужен сервер на локалке? Почему другие ЯП спокойно без него работают?
Самое главное - где все это гуглить?
Аноним 27/06/21 Вск 10:02:57 #428 №2081450 
>>2081434
В шапке в уроках от опа есть, глаза разуй.
Аноним 27/06/21 Вск 10:08:51 #429 №2081455 
>>2081434
Раньше был мод_пхп, т.е. пхп в виде модуля сервера, работал в его контексте.
Современный вариант это fastcgi. В фоне сидит процесс-менеджер и держит пул запущенных процессов пхп и открытый сокет. Основной сервер сидит мордой в интернет и ту же статику отдает сам, а пхп запросы кидает по сокету и получает ответы. В принципе, примерно так же работет современный веб и в других языках.
Лично тебе вряд ли это вообще надо знать в деталях. Ты себе высираешь ответы, а как они там ходят это вообще не принципиально.
Аноним 27/06/21 Вск 13:48:00 #430 №2081740 
>>2081434
>книжки по пхп тупое говно
Или не книжки
Аноним 27/06/21 Вск 13:54:25 #431 №2081746 
>>2081139
Блин, неужели никто не поможет?
Аноним 27/06/21 Вск 14:41:04 #432 №2081781 
>>2081746
Отправку куда? Что ты вообще делать пытаешься? Работа с формами нормально описана у опа в шапке.
Аноним 27/06/21 Вск 15:58:00 #433 №2081911 
Не понимаю как сделать простейшую аутентификацию на Ларавел. Есть юзер, есть форма входа, есть ЛК, где ажаксом приходят-уходят некоторые данные. Всё, что предлагает гугл - длиннющие документации по Passport и тд. Зачем тогда в роутах api.php уже присутствует один маршрут, можно ли как-то это на коленке сделать? Насколько мне известно, современный фреймворк искаропки такое позволять должен.
Аноним 27/06/21 Вск 16:00:17 #434 №2081918 
>>2081781
Веб страничка с формой куда пишу баллы, а дальше результат сдал или не сдал
Аноним 27/06/21 Вск 16:07:12 #435 №2081927 
>>2081918
<form method="post">
<input type='text' name='ball'>
Потом смотришь в $_POST['ball']
Аноним 27/06/21 Вск 16:09:54 #436 №2081931 
>>2081927
Спасибо
Аноним 27/06/21 Вск 16:48:32 #437 №2081992 
Сап, двач. Что думаете про фреймворк phalcon? Он вообще как жив? Кто-то работал?
Аноним 27/06/21 Вск 17:20:01 #438 №2082049 
>>2081911
https://laravel.com/docs/8.x/authentication#authenticating-users

Попробуй это
Аноним 27/06/21 Вск 17:30:19 #439 №2082063 
>>2081927
А как прописывать? Сделал так, не работает

<?php
$_POST['ball'];
($grade >= 50 ? 'Сдал' : 'Не сдал')
Аноним 27/06/21 Вск 17:40:09 #440 №2082081 
Делал вот так, с отдельным файлом action.php но при нажатии кнопки ничего не происходит

<form action="action.php" method="post">
<input type="text" name="ball"><br>
</form>
<input type='submit'>

ACTION.PHP:
($_POST['ball'] >= 50 ? 'Сдал' : 'Не сдал');
echo $_POST['ball'];
Аноним 27/06/21 Вск 19:13:10 #441 №2082178 
Вот так тоже не работает
if (isset($_POST) > 50) {
print(Сдал) else {
print(Не сдал);
}
}
Аноним 27/06/21 Вск 20:07:53 #442 №2082232 
>>2082178
>>2082081
>>2082063
скотина, ты все кнопки подряд чтоли тыкаешь?
ты вообще не понимаешь, что происходит на каждой строке?
что это за умственно-отсталые конструкции?
тебе 7-8 лет? если так то извиняюсь
Аноним 27/06/21 Вск 21:14:07 #443 №2082300 
>>2082232
Ну вот эта конструкция постоянно возвращает введенное число, в чем ошибка?

if (($_POST) > 50) {
print($_POST['ball']);
} else {
print 'Не сдал';
}
Аноним 28/06/21 Пнд 01:06:06 #444 №2082448 
На фрилансе вообще нужны ООП и шаблоны проектирования или заказчикам похуй что у тебя за код, лишь бы работало как надо? Хочу попробовать апворк, но предпочитаю полотняный лапшекод, не отхуесосят ли меня там за это.
Аноним 28/06/21 Пнд 01:44:17 #445 №2082454 
>>2082300
в ДНК
Аноним 28/06/21 Пнд 01:45:43 #446 №2082455 
>>2082300
>>2082454
Читай свою программу сверху вниз, каждую строку, и для себя переводи на русский, что она делает, и что хранится в каждой переменной.
Аноним 28/06/21 Пнд 01:47:02 #447 №2082456 
>>2082448
Зависит от заказчика и почасовой ставки.
Очевидно, что к дешёвым одноразовым скриптам требования ниже.

> предпочитаю
ЛОЛ
Аноним 28/06/21 Пнд 03:49:24 #448 №2082475 
Правда ли, что в пхп можно вкатиться заметно быстрее, чем во фронто-макакена?
Аноним 28/06/21 Пнд 08:23:23 #449 №2082506 
>>2082475
Только в фулстакомакаку, то есть еще хуже чем фронто макака, которая хотя бы понимает что делает.
Аноним 28/06/21 Пнд 08:35:12 #450 №2082511 
>>2082475
Лучше не быстрее вкатывайся, а нормально.
1. Изучай по минимуму алгоритны и структуры данных. Нужно для собесов в нормальные компании и для более глубокого понимания матчасти.
2. Изучай немного архитектуру компьтера и сетей, чтобы не быть совсем крестьянинов в IT. Изучи линукс и unix команды. Научись пользоваться докером.
3. Изучай хорошо пхп по докам. Как ты будешь писать на языке не зная его?
4. Изучай глубоко БД.
5. Все время пиши код.
Аноним 28/06/21 Пнд 08:42:37 #451 №2082516 
Касательно Slim, есть ирландский хохол, который все понятно объясняет https://www.youtube.com/channel/UCB8LoPmC2MCVgohn_-gzU3A
Аноним 28/06/21 Пнд 08:43:20 #452 №2082517 
>>2082475
Легкого пути не существует, нравится фронт - учишь фронт
Аноним 28/06/21 Пнд 09:12:23 #453 №2082526 
>>2082517
Как понять, что нравится? Заебало это метание

мимокрокодил
Аноним 28/06/21 Пнд 09:24:39 #454 №2082531 
>>2082526
Если не можешь понять, значит нихуя не нравится.
Аноним 28/06/21 Пнд 09:39:49 #455 №2082533 
>>2082531
Нет, в том и дело, что нравится и фронт и бэк. Один день фронт дрочу, второй пыху и чувствую, что от этого пиздец моя продуктивность страдает
Аноним 28/06/21 Пнд 16:26:15 #456 №2082847 
>>2081434

> В каком формате приходит ответ и запрос от клиента?

Клиент (это может быть браузер или другая программа) соединяется с веб-сервером и отправляет запрос по протоколу HTTP. Он немного описан тут: https://github.com/codedokode/pasta/blob/master/network/http.md

Если упростить, то браузер посылает на сервер запрос вида "дай мне файл, расположенный по адресу http://example.com/some/page". Далее веб-сервер анализирует запрос (в зависимости от того, как он настроен) и определяет, что надо сделать:

- или отдать запрошенный файл
- или запустить какой-нибудь PHP скрипт и отдать результат его выполнения (то, что выведет этот скрипт)

Веб-сервер и PHP могут взаимодействовать по-разному.

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

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

Также, можно запустить PHP с помощью PHP-FPM. В этом случае запускается отдельный демон PHP-FPM, который в свою очередь запускает несколько процессов-рабочих. Демон слушает порт и принимает соединения от веб-сервера по протоколу FastCGI. Веб-сервер при этом может быть любым: Апач, Nginx или любой другой. Используя FastCGI, веб-сервер может попросить PHP-FPM выполнить PHP-скрипт и прислать результат его выполнения.

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

Плюсы этой схемы такие:

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

Обычно в такой схеме Апач становится не очень-то и нужен, и используют комбинацию Nginx + PHP-FPM.

Аноним 28/06/21 Пнд 16:33:02 #457 №2082854 
>>2081434

> Апач слушает порт?

Да, веб-сервер (например, Апач или nginx) слушает порт 80 или 443, на который приходят запросы от клиенат (браузера).

> Пришел запрос а дальше кто «разбирает» - апач или пхп?

Веб-сервер (Апач или nginx). Запрос приходит по протоколу HTTP.

> Сервер висит в оперативе, а пхп периодически поднимается?

Сервер постоянно запущен, да. Если PHP встроен в Апач как mod_php, то он тоже постоянно запущен вместе с ним. Если PHP запущен как демон PHP-FPM, то он тоже постоянно находится в оперативной памяти.

То есть, и сервер и PHP уже запущены и ждут запроса.

> Пхп возвращает хтмл на сервер, а тот отправляет клиету?

Да.

> И зачем нужен сервер на локалке?

Тебе не нужен Апач для локальной разработки. В PHP встроен встроенный HTTP-сервер для этих целей: https://github.com/codedokode/pasta/blob/master/soft/web-server.md#%D0%B2%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%B2-php-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80

> Почему другие ЯП спокойно без него работают?

На других языках ты обычно подключаешь в свою программу библиотеку, которая реализует веб-сервер. На PHP можно сделать точно так же, но это никто не делает, потому что есть встроенный веб-сервер.
Аноним 28/06/21 Пнд 16:37:44 #458 №2082859 
>>2082063

Ты пишешь бессмысленные команды, которые ничего не делают.

Например, вот это:

$_POST['ball'];

обозначает: "взять из массива $_POST элемент с ключом ball, и ничего с ним не делать".

Или вот это:

$_POST['ball'] >= 50 ? 'Сдал' : 'Не сдал'

значит "в зависимости от значения в массиве $_POST, взять одну из двух строк. И ничего с ними не делать".

Мне кажется, тебе рановато браться за работу с формами. Тебе сначала надо выучить основы языка: переменные, массивы.
Аноним 28/06/21 Пнд 16:39:24 #459 №2082862 
>>2082063

Попробуй написать так:

var_dump($_POST['ball']);

>>2082448

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

Аноним 28/06/21 Пнд 20:58:45 #460 №2083159 
Сап, двач. А скажи, насколько вообще хорошо-плохо делать php код без вьюх? То есть пхп возвращает json и все. А рендерит реакт в отдельном приложении?
Аноним 28/06/21 Пнд 21:22:19 #461 №2083184 
>>2083159
>А скажи, насколько вообще хорошо-плохо делать php код без вьюх? То есть пхп возвращает json и все. А рендерит реакт в отдельном приложении?
В современных spa так делают. Бекенд отдельно, фронтенд отдельно.
Такой подход больше плюсов несет беку - не нужно лезть во фронт, слой представления упрощается с иерархии шаблонов до json/xml/другой формат.

Хорошо-плохо зависит от области применения. Если на фронте нет сложного интерфейса, то такой подход может быть избыточен. Применять реакт к лендингу с одной формой - оверинжиниринг. Быстрее на php шаблон сделать и пару строчек на жс написать.
Аноним 29/06/21 Втр 13:19:48 #462 №2083632 
>>2083159

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

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

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

Разумеется, такое тяжелое приложение потребляет больше памяти компьютера и создает большую нагрузку на процессор.

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

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

Сколько я не видел SPA-приложений от крупнейших компаний - все тяжелые и тормозные, и с прелоадерами.
Аноним 29/06/21 Втр 13:42:48 #463 №2083654 
>>2062494 (OP)
Сап, ПХПач

Таинственная проблема с Laravel:
есть веб-сервис на ларавел, последние изменения в его код вносились в начале 2020 года, всё работало, его не трогали

Внезапно оно перестало работать, в логах Nginx указана 500 ошибка

Любой route с любыми параметрами возвращает пустую страницу

Пробовал в контроллерах прописывать строки вроде "echo 'asd'; exit(); ", никакого результата
То же самое делал в Index.php - тоже никакого эффекта

Пытался включить debug mode в env и config/app файлах, нет результата

В общем, веб-сервис выдаёт пустую страницу на любой запрос. Изменений в код не вносили.

Куда копать? У меня нет идей
Аноним 29/06/21 Втр 14:01:29 #464 №2083660 
>>2083654
> в логах Nginx указана 500 ошибка
Как правило там же и написанно чем она вызвана.
Раз изменение в public/index.php(ты же его пробовал) не помогло-ты или не тот сайт редактируешь, либо конфиги вебсервера по пизде пошли. Это первый файл запускающийся же.
Аноним 29/06/21 Втр 17:11:11 #465 №2083890 
>>2083654
ошибка до автолоадера или после? До бута Kernel или после? Ты дебаг делал вообще или мы тут псайкеры дохуя?
Аноним 29/06/21 Втр 17:17:14 #466 №2083903 
>>2072559
Идиократия
Аноним 29/06/21 Втр 18:30:43 #467 №2083987 
Аноны, что за синтаксис в конце. Двоеточие и название чего-то.

public static function foo($arg) : Something
Аноним 29/06/21 Втр 18:39:09 #468 №2083996 
>>2083987
тайп хинтинг
Аноним 30/06/21 Срд 11:39:52 #469 №2084563 
>>2083890
>ошибка до автолоадера или после? До бута Kernel или после?
А как это сделать? я новичок(
Аноним 30/06/21 Срд 11:41:50 #470 №2084565 
Всякие итераторы и функции из SPL вообще используются или это реликт уже?
Аноним 30/06/21 Срд 11:53:08 #471 №2084578 
>>2084563
в public/index.php в первой же строке после <?php ставь пробел, и пиши die('qq'); Если после этого твой сайт начал отдавать qq вместо ошибки-проблема в сайте, если нет-в веб сервере. Но вообще с таким уровнем знаний ты её не решишь.
Аноним 30/06/21 Срд 11:55:12 #472 №2084580 
>>2084578
Спасибо. Пихал dd() куда только мог, нет результата

Посмотрел версию ПХП - 5.4

Долбоёбский хостинг произвольно сменил версию ПХП. Уже год так не делали, я и расслабился...
Аноним 30/06/21 Срд 11:58:05 #473 №2084581 
Не понял
Аноним 30/06/21 Срд 12:00:30 #474 №2084583 
>>2083987
Возвращаемый тип
Аноним 30/06/21 Срд 12:00:39 #475 №2084584 
>>2084580
>хостинг
>2021 год
Чел. VPS же.
Аноним 30/06/21 Срд 12:03:12 #476 №2084586 
>>2084584
Дык не моё. Я просто помогал. Я вообще не разраб, если честно.
Аноним 30/06/21 Срд 12:37:57 #477 №2084606 
>>2084586
>не моё
>просто помогал
>Я вообще не разраб

Зачем тогда полез, где не шаришь?
Аноним 30/06/21 Срд 16:08:54 #478 №2084796 
>>2084565

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

>>2083987

Это значит, что функция возвращает объект класса Something или его наследника.

Аноним 30/06/21 Срд 19:28:30 #479 №2084938 
Можете, пожалуйста, объяснить нахуя вообще нужны интерфейсы и абстрактные классы? Чтобы какой-нибудь другой чел, который будет дорабатывать твой код не сделал того что делать не нужно?
Аноним 30/06/21 Срд 19:42:17 #480 №2084950 
>>2084606
Не стоит вскрывать эту тему
Аноним 30/06/21 Срд 19:53:39 #481 №2084962 
>>2084938
>интерфейсы
Чтобы код был завязан на контрактах, а не конкретных реализациях.

>абстрактые классы
Чтобы определять какую-то абстрактную логику.

Задумайся для начала зачем вообще нужные классы, если можно процедурки хуярить и всё будет отлично работать
Аноним 30/06/21 Срд 20:27:33 #482 №2084995 
>>2084938
Чтобы организовать большие объемы кода
Аноним 30/06/21 Срд 21:23:02 #483 №2085040 
>>2084938

Интерфейс нужен, когда есть несколько независимых классов, выполняющих похожую задачу. Например: тебе надо принимать адрес от пользователя и преобразовывать его в координаты. Для этого существуют службы геокодирования (допустим, Яндекс и Гугл). У каждой из них свой формат обмена данными. Но действие выполняется всегда одинаковое: преобразование адреса в координаты. Тебе не хочется, чтобы код был привязан к одной какой-то службе, а хочется, чтобы он мог работать с любой.

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

Еще немного про интерфейсы тут: https://github.com/codedokode/pasta/blob/master/php/interfaces.md

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

Аноним 30/06/21 Срд 22:43:58 #484 №2085148 
>>2084962
>если можно процедурки хуярить и всё будет отлично работать
Так и делаю, мне норм.
мимо луакодер
Аноним 30/06/21 Срд 23:32:02 #485 №2085187 
>>2062494 (OP)
> 9 июля 2020 года Дэйл Хирт (англ. Dale Hirt), менеджер проекта PHP в Microsoft, в рассылке php.internals выпустил сообщение[36] о том, что после выпуска версии PHP 8.0 Microsoft прекратит поддержку разработки этого языка программирования для Windows[37]. Специалисты Microsoft занимались компиляцией бинарных версий интерпретатора для ОС Windows и тестированием их безопасности. В сообществе разработчиков PHP сообщили, что примут все необходимые меры, чтобы найти в ближайшее время альтернативный вариант для организации поддержки PHP 8.0 и выше для Windows, например, своими силами[38].

Ну шо, аноны, пыха всё?
Аноним 01/07/21 Чтв 05:37:45 #486 №2085225 
>>2084584
администрировать кто будет? твоя мамаша-шлюха?

не слушай долбоёба
Аноним 01/07/21 Чтв 08:26:34 #487 №2085243 
Сап програмач, если бы вы сейчас вкатывались чтобы выбрали? Похапэ или шарпач?
Аноним 01/07/21 Чтв 09:02:44 #488 №2085250 
>>2085243
C
Аноним 01/07/21 Чтв 09:23:50 #489 №2085257 
>>2085250
C#?
Аноним 01/07/21 Чтв 10:15:27 #490 №2085278 
15220844234430.jpg
Сколько процентов самописных фреймворков в пыхолегаси?
Аноним 01/07/21 Чтв 11:27:03 #491 №2085326 
>>2085187
Шо всё? Есть докер, есть всл. Живем дальше
Аноним 01/07/21 Чтв 11:28:12 #492 №2085327 
>>2085278
За 4 конторы не встречал таких
Аноним 01/07/21 Чтв 11:33:44 #493 №2085330 
>>2085187
>>2085326
Как будто кто-то запускал пхп не на линупсе кроме шиндовс-вкатунов.
Аноним 01/07/21 Чтв 11:41:28 #494 №2085339 
>>2085330
Изредка запускаю пхп из под винды. Хотя в шторме настроен запуск через докер
Аноним 01/07/21 Чтв 12:04:47 #495 №2085366 
>>2085330
Два чаю. Я хоть и шиндузятник, но как только понял как работать с виртуалОЧКОй сразу туда перекатился, а уж теперь то при живом всл и дешевых впсках вообще грех на шинде запускать. Тестовая среда всёж таки должна быть максимально похожа на ту в которой прод будет, а прод на шинде держать-кретинизм.
Аноним 01/07/21 Чтв 12:11:32 #496 №2085379 
>>2085366
на каком дистрибутиве работаешь?
Аноним 01/07/21 Чтв 12:11:34 #497 №2085380 
>>2085366
Пхп прод держать на винде в некоторых случаях невозможно.
Некоторые экстеншены к пхп на неё тупо не ставятся.
Сколько же я намучился с имейджмеджиком...
Аноним 01/07/21 Чтв 12:13:49 #498 №2085384 
>>2085379
Да на убунте. Мне как человеку не хотящему вкатываться в линукс выбирать не охота, а убунта-дефолт.

>>2085380
Ну вот да, например.
Аноним 01/07/21 Чтв 23:15:14 #499 №2085715 
Аноны, что можно сделать в качестве пет-проекта? Интернет-магазин, бложик из банального что в голову приходит. Еще какие-то идеи может есть?
Аноним 02/07/21 Птн 10:04:59 #500 №2085887 
>>2085715
-------------------->>>2069501
Аноним 02/07/21 Птн 22:36:14 #501 №2086476 
>>2085887
Крад, рега, сторонние айпиай... Спасибо. А можно тыкнуть конкретных пару примеров, а то все равно в голову ничего не приходит, особенно со сторонними айпиай :/ Фантазии нет совсем, не быть дизайнером фронтенда мне.
Аноним 03/07/21 Суб 18:01:19 #502 №2086970 
Сотня нефти.png
>>2082847
>>2082854
Спасибо, оп!
Аноним 04/07/21 Вск 04:20:29 #503 №2087260 
Что надо учить в Symfony (какие курсы) чтобы сделать следующее:
Сделать сайт, который бы предлагал юзеру пройти тесты по разным областям знаний

На первом экране сайта юзер авторизуется (регистрируется) и выбирает тест из нескольких

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

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

Надо связать ответы юзера из разных форм и занести в БД

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

Стоит ли браться за такое тестовое задание если ни о Симфони ни о Доктрине раньше не слышал, но готов их усердно изучать?

На ютубе есть начальный курс как запилить приложение на Симфони - простейший блог, но с БД.

Я его освоил (скопировал код и запустил) Сложность для меня как для новичка это реализовать саязывание ответов из второго и третьего шага.

Заранее спасибо за любую подсказку)
Аноним 04/07/21 Вск 04:41:13 #504 №2087263 
>>2087260

для мультишаговой формы есть готовое решение, которое до сих пор работает (я ставил себе тестовую демку)
https://github.com/craue/CraueFormFlowBundle

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

тот же
Аноним 04/07/21 Вск 14:55:51 #505 №2087461 
{
$this->subsystem1 = $subsystem1 ?: new Subsystem1();
$this->subsystem2 = $subsystem2 ?: new Subsystem2();
}
Что здесь за схлопнувшийся тернарный оператор "?:" Что это значит?
Аноним 04/07/21 Вск 15:11:46 #506 №2087475 
>>2087461
А понятно, посмотрел тот же код на нормальном языке, это оператор ||
Аноним 04/07/21 Вск 15:18:20 #507 №2087486 
Пацаны, не могу решиться. Что выбрать, чтобы не обосраться в будущем с работой?

Учить шарп и развиваться в этом направлении? (десктоп разработка)
Учить пыху и ларавельку и развиваться уже там?
Аноним 04/07/21 Вск 16:45:27 #508 №2087557 
>>2087486
1С Битрикс
Аноним 04/07/21 Вск 16:49:39 #509 №2087559 
>>2087557
да отстань от меня говноед
Аноним 04/07/21 Вск 17:35:34 #510 №2087595 
>>2087486
Шарп/ява на сегодняшний день не оставят без заработка, в будущем вероятнее тоже. РНР только поддержка легаси. Новых, востребованных рынком, продуктов нет и не предвидятся. Я бы рассматривал РНР в ознакомительных целях исключительно. Связывать свою жизнь с веб-пердолингом для тех, кто не может в нормальные языки и умение программировать.
Аноним 04/07/21 Вск 18:58:03 #511 №2087680 
>>2087486
>Учить шарп и развиваться в этом направлении? (десктоп разработка)
Десктоп мертв
Аноним 04/07/21 Вск 20:09:56 #512 №2087719 
Блин, есть какая-нибудь статья-гайд или видос-гайд на русском языке с построением нормального crud web app, без использования фреймворков и с нормальной организацией по опп и mvc? Заранее благодарю.
Аноним 04/07/21 Вск 21:23:44 #513 №2087758 
>>2070404
>поезд ушел
Надо сказать знакомым 35 и 38 лет, чтобы увольнялись со своих мест и шли обратно на старые работы - поезд-то всё, ту-ту, ушёл, а они и не знают.
Аноним 04/07/21 Вск 21:29:00 #514 №2087765 
>>2070436
>34 - слишком великовозраст для реального шанса на вкат

Я эту хуйню про ПОЗДНО ВКАТЫВАТЬСЯ кроме двача нигде не видел почему-то. Есть, конечно, ебучие конторы, которым надо вчерашнего студента, который еще не понимает, что такое деньги и зачем они ему, кроме как купить приставку, пивас и пиццу, чтобы недоплачивать ему. Но такого говна и вне айти дохуя. Вопрос, нахуя туда вообще идти работать. Ответ, возможно, кроется в народной мудрости - свинья грязь везде найдет.
Аноним 04/07/21 Вск 21:42:54 #515 №2087780 
>>2087680
Я сейчас работаю саппортом в конторе, где есть грейд до c# разраба. Они мне говорят, что на этой позиции засиживаться не надо. Хотят, чтобы я дальше развивался. Веба в этой конторе нет.
Разрабам-шарпистам платят до 150, но не меньше 100. Мне на саппорте сходу платят 60, через год 80 планируют, если я не перейду в разработку.
Начитался в соседних тредах, что если ты в саппорте, то ты и останешься в саппорте. Почему все так думают?
Я работал уже в веб-студии когда-то, работал в тестировании. Сейчас пошёл в саппорт потому что график 2-2 (одна ночная смена есть и там тикетов дай бог 2-3 за ночь будет). Ну и при таком графике мне будет удобнее что-либо учить. Вот сейчас пиздец не знаю. Либо шарп и в этой конторе дальше за ~150 работать шарпистом, либо пыха и дальше ларавельку ебашить и найти что-нибудь за 80 jun+ уровня.
К слову, на пыхе могу простенькое круд-приложение запилить с MySQL. И Ajax ебануть, но это уже с гуглом.
Может что дельное подскажешь/подскажете?
Аноним 04/07/21 Вск 21:48:03 #516 №2087784 
>>2087780
>Начитался в соседних тредах
Не читай советских газет двач. Тут какой-то иной мир, параллельная вселенная. Кто-то где-то что-то услышал, или кого-то пидорнули, и теперь ОСТАНЕШЬСЯ В САППОРТЕ.

>Они мне говорят, что на этой позиции засиживаться не надо
Тебя практически приглашают разрабом стать, ты понимаешь это?
Аноним 04/07/21 Вск 21:51:34 #517 №2087787 
>>2087784
Да я первую неделю работаю только. Они сразу сказали, что есть куда расти и через год можно смотреть в сторону c# или программист АСУ ТП. Про второе не знаю даже что это такое. Если реально есть такая возможность, то при своём графике 2 дня после 2 смен готов въёбывать.
Просто не очень хочется наебаться с выбором ЯПа.
Аноним 04/07/21 Вск 23:34:17 #518 №2087855 
>>2087787
>наебаться с выбором ЯПа

Ты сейчас в шаге от этого, беги из треда
Аноним 04/07/21 Вск 23:55:06 #519 №2087869 
>>2085715
>Аноны, что можно сделать в качестве пет-проекта?

Верстай копию вот этого:

http://www.12542.ru/pg_0003.htm
Archer 05/07/21 Пнд 00:58:29 #520 №2087891 
Ребят, почему на ideone иногда, когда нажимаешь "run", то страница просто обновляется (или как будто обновляется) и весь код исчезает? "назад" не помогает, кода уже нет, приходится все заново писать, это весьма напрягает, особенно учитывая, что здесь нет автокомплита и надо каждую переменную вручную полностью печатать. У кого так же?
Аноним 05/07/21 Пнд 09:03:36 #521 №2087960 
>>2087486
Очевидный golang очевиден.
Аноним 05/07/21 Пнд 09:44:45 #522 №2087978 
castcombitrix1c[1].jpg
В чем подводные битрикса кроме того, что рынок ограничен нищими пидорахами?
Аноним 05/07/21 Пнд 13:42:21 #523 №2088133 
>>2087780
>Разрабам-шарпистам платят до 150, но не меньше 100
Если там свеженький нет кор, то збс, потом можно будет срулить на х2.

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

>Я работал уже в веб-студии когда-то, работал в тестировании
Та же история. Чтобы стать разрабом надо писать код

>Вот сейчас пиздец не знаю. Либо шарп и в этой конторе дальше за ~150 работать шарпистом
Неплохой вариант, но запрыгивать надо поскорее

>ибо пыха и дальше ларавельку ебашить и найти что-нибудь за 80 jun+ уровня.
Если б у меня в своё время был варик идти в шарп бекенд вместо пыхи, я бы пошел не задумываясь.
В пыхе сплошное легаси и даже на относительно свежих проектах (которых практически нет) не веет новизной технологий, а с кода хочется плеваться. Из плюсов пыхи пожалуй слабенький возрастной ценз - можно спокойно заходить в индустрию хоть в 30, хоть в 35 лет. И относительная простота по сравнению с дот нетом
Аноним 05/07/21 Пнд 13:44:06 #524 №2088137 
>>2087787
>Они сразу сказали, что есть куда расти и через год можно смотреть в сторону c# или программист АСУ ТП
Это могли сказать, чтобы ты сидел на саппорте и не рыпался. А потом то время не то, то проекта под тебя не будет, то еще чего.

>Просто не очень хочется наебаться с выбором ЯПа.
Пхп не от хорошей жизни выбирают
Аноним 05/07/21 Пнд 13:49:49 #525 №2088141 
>>2087978
- Крайне низкий ценник относительно других стеков
- Система написана армией школьников/студентов, качество кода соответствующее, архитектура отсутствует
- Система очень глючная, тормозная и тяжело поддается дебагу
- Среди других разрабов считается зашкваром ковыряться в битриксе

Подробнее можешь сам почитать:
https://habr.com/ru/post/282333/
Аноним 05/07/21 Пнд 17:08:21 #526 №2088258 
>>2084962
А, может, кто-то уже подумал и где-то просто и доступно написано, зачем нужны классы?
Аноним 05/07/21 Пнд 17:12:59 #527 №2088259 
16022671038820.png
>>2088137
>Пхп не от хорошей жизни выбирают
А от чего? Что с ним не так-то?
Archer 05/07/21 Пнд 18:39:25 #528 №2088316 
image.png
image.png
image.png
Не решается задача на кодварсе.
Аноним 05/07/21 Пнд 19:30:47 #529 №2088374 
>>2087595

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

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

А уж запускать и разворачивать приложения на PHP куда как проще, чем на JS и Go, и поганый Докер не требуется (Докер это штука, которая запускается из-под рута, создает тонны неужных образов на каждую строчку докерфайла и может менять настройки вашего фаерволла, открывая хост для доступа снаружи. Например, у одной компании Докер после выгрузки на прод открыл доступ к монге, и вандалы дропнули ее содержимое).
Аноним 05/07/21 Пнд 19:35:43 #530 №2088379 
>>2087719

Тут есть немножечко по MVC с примером кода, но не знаю, подойдет ли: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

>>2087891

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

>>2087960

Там без знания Си делать нечего.

Аноним 05/07/21 Пнд 19:41:07 #531 №2088383 
>>2088316

Наверно, строку надо не вывести, а вернуть с помощью return.
Аноним 05/07/21 Пнд 19:52:48 #532 №2088395 
>>2088316
>>2088379
>>2088383
да, оказалось надо готовую строку вернуть, а не выводить
Аноним 05/07/21 Пнд 19:55:04 #533 №2088396 
А хули \n не работает? Двойные кавычки использую, даже примеры копипащу и они тоже не работают. ПХП 7.4
Аноним 05/07/21 Пнд 20:03:10 #534 №2088401 
>>2088258
Забудь про "просто и доступно написано", если это касается чего-то сложнее чем "Hllwrld". Ты программист или может быть однажды им станешь - привыкай думать головой, не опираясь на слова Васи с форума.

Если не понимаешь, зачем нужны классы - значит они тебе не нужны. Пиши без них. как же заебись, что можно говнокидить дома и техлид не убьет
Как только поймешь, что что-то не так и вспомнишь про классы - пойди и прочитай доку еще раз. Если в голову ебнет мысль "ля, так оно мне и нужно" - круто. Если нет - жди дальше.
Archer 05/07/21 Пнд 20:13:40 #535 №2088406 
Впервые столкнулся с таким странным тернарным оператором. Это важно знать. Важно знать, что он здесь не такой, как в других популярных языках (Java, JS, C#). Вот статья на хабре https://habr.com/ru/post/114899/

Если коротко: ставьте скобки, чтоб все работало "как надо".
Аноним 06/07/21 Втр 00:16:13 #536 №2088558 
>>2088396
В консоли(терминале) хоть запускаешь?
Аноним 06/07/21 Втр 00:24:47 #537 №2088562 
>>2087765
Ты не понимаешь что феминизм победил и сейчас везде тянки - хрюши, тимлиды, начальницы всех мастей и т.д. Как думаешь к кому они будут более благосклонны - гречневику за 30 или молодому шутливому зумерку?
Аноним 06/07/21 Втр 01:21:45 #538 №2088572 
>>2088396
Используй PHP_EOL
Аноним 06/07/21 Втр 02:33:07 #539 №2088588 
>>2088379
https://youtu.be/-nq4UbD0NT8
Аноним 06/07/21 Втр 06:08:18 #540 №2088600 
Это правда, что пхп больше не говно?
Аноним 06/07/21 Втр 08:30:06 #541 №2088619 
>>2088600
Да. Умирающее неговно.
Аноним 06/07/21 Втр 09:45:31 #542 №2088639 
>>2088137
>Пхп не от хорошей жизни выбирают
Мне кажется, потратить полгода на изучение голой пыхи и ларавельки с sql и ты уже спокойно джун в дс за 60к и больше. В шарпе я буду год только учиться, как минимум.
Аноним 06/07/21 Втр 18:41:10 #543 №2089086 
>>2088396

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

Чтобы переносы строки работали, поставь в начало скрипта

header("Content-Type: text/plain; charset=utf-8");

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

Или ты можешь изучить HTML и использовать теги HTML для форматирования.

Аноним 06/07/21 Втр 18:45:01 #544 №2089091 
>>2088639

Более того, ты выучишь основы C#, придешь на собеседование, а там будет умник с вопросами по Си вроде "расскажите, где хранятся локальные переменные? Почему именно там, а не где-то еще", "расскажите, что такое куча и как она устроена", "расскажите, почему используется JIT и почему не используется AOT компиляция", "расскажите, почему программа компилируется в байткод".

А в PHP таких вопросов не будет.

И, кстати, если у кого-то есть вопросы про кучу, байткод или локальные переменные, в нашем треде на них ответят.
Аноним 06/07/21 Втр 19:34:15 #545 №2089146 
>>2087978
Зашел в фл.ру. Там много заказов за 1000 р. на Битриксе. На апворк не пускают.
Archer 06/07/21 Втр 20:54:36 #546 №2089195 
https://ideone.com/wioBRm - опечаточники. Зацените? Нормально? Или есть то, что никогда никто не пишет в 2021? Спс.
Аноним 06/07/21 Втр 21:01:12 #547 №2089198 
>>2089195
изначально думал еще проверять слово английское или нет путем подсчитывания количества английских/русских букв, но это не очень эффективно, потому что в таких, например, словах: всем, оно, мы, меня, тогда и т.д. Здесь программа может решить, что это английское слово, ведь тут могут быть все буквы английскими. Хотя мой вариант: проверка по уникальным буквам типа "d, v, b, h, t" - тоже не 100% вариант, но выглядит, кажется, лучше, потому что слово "всем", написанное чисто английскими буквами определится как русское и, соответственно, все ангельские буквы заменятся на русские, а в первом варианте не заменятся. Можно конечно сделать и ту проверку и эту проверку, то есть всё объединить и получится, наверное, более достоверно. В общем, устал уже думать, как достичь 100% варианта. Надо переходить к некст задачам и темам. Что скажете? Сами как решили? Буду благодарен за фидбек.
Аноним 06/07/21 Втр 21:04:37 #548 №2089200 
>>2089198
>ведь тут могут быть все буквы английскими
с и c-разные символы так то, хоть и выглядят идентично, и даже одной кнопкой печатаются...
Аноним 06/07/21 Втр 23:32:08 #549 №2089310 
>>2089200
так в задаче как раз такой вид ошибок и есть, что в тексте встречаются русские слова с английскими буквами, которые выглядят идентично, и английские слова с русскими буквами, а суть задачи в том, чтобы исправить это, сделать так, чтобы русские слова были написаны только русскими буквами, а английские только английскими
Archer 07/07/21 Срд 00:19:31 #550 №2089335 
вот первые опечаточники, где просто указывается ошибка - https://ideone.com/PwJuEG

Я молодец.
Аноним 07/07/21 Срд 02:33:09 #551 №2089377 
Язык умер, все выходим из треда
Аноним 07/07/21 Срд 03:16:59 #552 №2089383 
>>2089377
ещё один хоронильщик
Аноним 07/07/21 Срд 04:50:36 #553 №2089391 
Распишите, плиз, нубасы в чем отличия и какие сферы применения у Ларавеля и Симфони? На какой лучше потратить время для изучения?
Аноним 07/07/21 Срд 12:21:06 #554 №2089555 
>>2089391
>в чем отличия
В подходе архитектурном.
>и какие сферы применения
Весь спектр веб приложений у обоих.
>На какой лучше потратить время для изучения
На тот который на рынке лучше себя будет чувствовать через 5 лет.
Аноним 07/07/21 Срд 12:48:57 #555 №2089568 
>>2089555
>На тот который на рынке лучше себя будет чувствовать через 5 лет.
Это который?
Аноним 07/07/21 Срд 13:01:17 #556 №2089583 
>>2089568
Скорее всего оба, если судить по тому, что на yii до сих пор полно работы, хотя он уже лет 6 как не развивается. А на лару и симфу регулярно выкатывают обновления
Аноним 07/07/21 Срд 13:37:40 #557 №2089614 
>>2089568
>Это который?
А этого тебе точно никто не скажет. Если всё пойдёт хорошо-оба как выше отписали. Но может внезапно появиться конкурент который обоих выпиздит, или заставит меняться так сильно что старые знания станут малополезными. ИМХО оба примерно одинаково перспективны. Но вроде как у ларки побольше работодателей прямо здесь и сейчас (по крайней мере я за последний год на неё больше получил предложений, чем на симфони).
Аноним 07/07/21 Срд 16:42:50 #558 №2089765 
Подскажите кратко, возникла потребность сделать элементарную фидбэк форму, язык вообще не знаю, нагуглил код ниже, он работает, но в текст сообщения нужно вставить $name, $mail, $text которые из html формы передаются
Вот это хоть убейте - нагуглить не могу, пытался вставлять как получается, либо отправляется как есть "$name", либо вообще пустое тело письма

<?php
$to = '[email protected]';
$subject = Subject';
$message = 'Hello, it's a message.';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);

?>


Заранее спасибо
Аноним 07/07/21 Срд 16:48:51 #559 №2089767 
>>2089765
С таким на фриланс
Аноним 07/07/21 Срд 17:01:09 #560 №2089776 
>>2089614
>может внезапно появиться конкурент который обоих выпиздит, или заставит меняться так сильно что старые знания станут малополезными

Не, технологии веба достигли своего предела. Ничто уже не появится, никто никого никуда уже не выпиздует.
Archer 07/07/21 Срд 19:16:55 #561 №2089933 
Господа, в какой момент понадобится математика выше школьного уровня? Всякие графы, дискретки и т.д. Понимаю, что на джуна такие вещи спрашивать в 95% случаев не будут, но что насчет мидла пхпшника, сеньора? Стоит ли заняться ей прям сейчас или это пустая трата времени?

Заниматься матешей в соло я пробовал, начал с нуля, хотя знания в принципе были вплоть до 11 класса, но хотелось, чтоб было без пробелов, поэтому начал с книги для 5-6 классов. Прочитал ее, дальше не смог заставить себя читать. Это нереально скучно.
Аноним 07/07/21 Срд 19:19:45 #562 №2089935 
>>2089767
Спасибо, уже сам разобрался
Аноним 07/07/21 Срд 19:44:13 #563 №2089956 
>>2089933
Максимум пригодится, если на собесе попадется алгошизик. А так графы на проде не встречал
Аноним 07/07/21 Срд 20:04:02 #564 №2089973 
>>2089583
>на yii до сих пор полно работы
Уже легаси считай.
Аноним 07/07/21 Срд 20:04:04 #565 №2089974 
Untitled.png
Напарсил и посчитал теги с пхп-вакансий на хх.
Аноним 07/07/21 Срд 20:12:27 #566 №2089982 
>>2088137
>Пхп не от хорошей жизни выбирают
А какой от хорошей жизни выбирают? Лисп ебучий борщехлебный?
Аноним 07/07/21 Срд 20:15:39 #567 №2089985 
>>2089974
По моим наблюдениям фреймворки просят вообще чтобы, типа, тыжпогроммист был хороший. Периодически встречаю вордпресс-вакансии с требованиями знания фреймворка, причём почти всегда перечисляют их через строку. Скорее всего у тебя нерелевантно - нужно считать количество проектов, а не хотелки кабанчиков.
Аноним 07/07/21 Срд 21:09:07 #568 №2090017 
Untitled.png
Да, про вордпресс забыл.
Archer 08/07/21 Чтв 00:23:16 #569 №2090127 
оп забыл сказать в задаче "Клавиша shift", что встроенной реализации mb_ucfirst в php нет, так что пришлось делать самому - https://ideone.com/J2a4ac

кто будет пользоваться - платите по 100$ лично мне, спс
Аноним 08/07/21 Чтв 01:28:23 #570 №2090161 
Можно ли в php отдать ответ пользователю, но продолжить работать еще некоторое время?

Стандартный сценарий такой:
1) Пользователь делает заказ.
2) Скрипт работает, сохраняет заказ в базе данных, пишет емейлы пользователю а так же десятку сотрудников. Всё это время пользователь ждет.
3) Когда вся работа завершена, пользователь получает подтверждение заказа.

Цель:
1) Пользователь делает заказ.
2) Мгновенно получает подтверждение заказа.
3) Скрипт продолжает работать, сохраняет заказ в базе данных, пишет емейлы пользователю а так же десятку сотрудников.

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






Аноним 08/07/21 Чтв 08:11:48 #571 №2090209 
>>2089776
>технологии веба достигли своего предела
А ты смешной.)
Аноним 08/07/21 Чтв 08:16:54 #572 №2090212 
>>2089933
>Господа, в какой момент понадобится математика выше школьного уровня? Всякие графы, дискретки и т.д.
В тот моменнт, когда ты решишь начать заниматься чем то что требует графов, дискреток, итд.
Это не про типичный веб. У меня за 9 лет практики было ноль ситуаций когда его бы не хватало (вкатился со школы).
Я вижу 2 варианта:
1)Ты попадёшь на проект в котором предметная область требует знаний (и то я хуй знает в какой предметной области всё это может понадобиться в рамках веб-приложения).
2)Ты попадёшь в другую ветку программирования(разработка движка для игры там, или что нибудь алгоритмически дохуя сложное).

Если же ты планируешь сайтики клепать-нахуй не нужно.
Аноним 08/07/21 Чтв 08:20:31 #573 №2090214 
>>2090161
Можно клонировать процесс. В ларавеле есть стандартные средства для очереди задач. Можно самому на каком нибудь реддисе, или мемкешде организовать очередь, из которой задачи забирать демон-процессом отдельным.
Аноним 08/07/21 Чтв 09:32:45 #574 №2090235 
>>2090209
По факту возразить сможешь? Программирование это не естественная, а абстрактная наука. Все важное что могло быть изобретено для веба, уже было изобретено. Дабы времени было предостаточно. Разве что маленькие косметические улучшения будут.

Не надейся на какое чудо, которое вот-вот придумает, и которое все поменяет.
Аноним 08/07/21 Чтв 09:52:21 #575 №2090245 
>>2090235
>Все важное что могло быть изобретено для веба, уже было изобретено
Чел, от того что ты и я не видим развитие наперёд оно не останавливается. Технологии развиваются, и развиваются постоянно. Вебу всего 30 лет, какое нахуй "предостаточно времени"?
Ебучие ДВС которым 100 лет в обед всё ещё развиваются, хотя "всё что было можно изобрести было изобретено" ещё в 70/80/90/00х годах в зависимости от твоей любимой эпохи машиностроения.
Аноним 08/07/21 Чтв 11:41:25 #576 №2090345 
>>2090245
Хуевое сравнение. ДВСы это объекты реального мира, чтобы их как-то исследовать и улучшать нужны большие и ресурсы и время на эксперименты.

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

Не жди каких-нибудь значимых улучшений.
Аноним 08/07/21 Чтв 11:51:45 #577 №2090348 
>>2090345
>И 30 лет этим ребяткам было достаточно для того чтобы выжать около-максимум.
С одной стороны 95+процентов современных концепций программирования были изобретены ещё в 80х и ранее. С другой-мы периодически переживаем то очередную контейнерную революцию, то массовое внедрение нейронок благодаря прогрессу в железе, то серьёзное смещение в балансе парадигм программирования (элементы функциональщины всё больше и больше проникают в прикладное ПО).
Плюс может поменяться модель потребления смартфоны изменили этот наш веб крайне сильно, например.
Да банально:нейронки могут улучшить автокомплишен до состояния "ввёл название функции, тело сгенерилось само", что позволит ещё выше в абстракциях подняться, быстрее и эффективнее генерить объёмы кода, и благодаря этому могут новые подходы возникнуть. Совершенно не принципиально материальный у нас продукт или нет, эволюция инжинернойили говнокодерской мысли происходит постоянно.
Я не говорю что будет обязательно что то революционное, но я говорю что появление новых инструментов, или эволюция текущих может координально поменять твою работу, и отрицать это-глупо и недальновидно.
Аноним 08/07/21 Чтв 11:54:40 #578 №2090350 
>>2090161
>сохраняет заказ в базе данных, пишет емейлы пользователю а так же десятку сотрудников. Всё это время
>Всё это время
это должно занимать примерно 0 секунд
Аноним 08/07/21 Чтв 12:09:28 #579 №2090364 
>>2090161
>Можно ли в php отдать ответ пользователю, но продолжить работать еще некоторое время?
Можно, session_write_close() и fastcgi_finish_request(). Но в твоем случае лучше очередь.
Аноним 08/07/21 Чтв 12:30:58 #580 №2090398 
>>2090348
>нейронки могут улучшить автокомплишен до состояния "ввёл название функции, тело сгенерилось само"
Скорей бы
Аноним 08/07/21 Чтв 13:00:23 #581 №2090415 
>>2090364
>fastcgi_finish_request
Судя по описанию это именно то что я ищу.
Правда у меня появляется фатальная ошибка
Call to undefined function fastcgi_finish_request()

Видимо причина этого кроется в том, что FastCGI у меня не используется.

Неужели разработчикам PHP было так сложно написать функцию
finish_request, которая работала бы всегда, не зависимо от того, используется ли FastCGI или не используется?!
Аноним 08/07/21 Чтв 13:08:14 #582 №2090416 
>>2089973
Легаси тоже нужно кому-то поддерживать
Аноним 08/07/21 Чтв 13:08:41 #583 №2090417 
>>2089982
Я бы шарпы взял, а там в нет кор
Аноним 08/07/21 Чтв 13:35:10 #584 №2090440 
>>2090415
В общем удалось решить проблему следующим образом:
Первый скрипт, тот который подтверждает заказ, отправляет
запрос второму скрипту при помощи curl с таймаутом в одну секунду.
Второй скрипт имеет директиву ignore_user_abort(true); и выполняет всю долгую и сложную работу.
В итоге пользователь, который запустил первый скрипт, ждет всего-лишь секунду таймаута и несколько мгновений подключения через curl.
Я конечно понимаю, что это решение - костыль. Но оно работает и это главное.
Аноним 08/07/21 Чтв 18:07:00 #585 №2090691 
В ларке часто используется блэйд? Или ларку обычно используют как апи для фронтенда.
Аноним 08/07/21 Чтв 18:30:40 #586 №2090730 
>>2090691
Как повезет.
Обычно либо блейд, если там какой-то древний проект или денег на фронтов не хватило. Либо вуе, что тоже такое себе, при чем фронт тоже беки пишут
Аноним 08/07/21 Чтв 22:49:46 #587 №2090904 
>>2090730
>фронт тоже беки пишут
Представляю какая там хуйня понаписана.
Проще взять бутстрап для UI и не ебать мозг.
Аноним 09/07/21 Птн 02:42:36 #588 №2090968 
>>2088374
Ебать, ты к нам из 2010 года?

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

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

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

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

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

>В PHP удобнее и проще работать с массивами, чем в Го
В пхп нет массивов, только хеш мапы

>В PHP не надо явно возвращать ошибки, как в Го
Праильно, а нахуя явно возвращать? Мы же НОВЫЙ проект пишем, пущай с этими ошибками ебуться когда он станет легаси (через месяц)

>А уж запускать и разворачивать приложения на PHP куда как проще, чем на JS и Go, и поганый Докер не требуется (Докер это штука
Нам он и нахуй не нужон, докер ВАШ! У Пятровны вишь эта хуйня магическая САМА доступы открыла. В фаерволе шебуршит безбожник. Сладу с ним нет. Не по нашенски енто. Тут закал столетний, виртуалбоксовский. Тут вагрантом фонит по низам. Тут мужик свою виртуалку, свою bsd стережет накрепко.
Аноним 09/07/21 Птн 05:00:18 #589 №2090980 
>>2090968
Разъебите его кто-нибудь по фактам. Мне не нравится что он пишет.

мимо ньюфаг-вкатун
Аноним 09/07/21 Птн 06:43:53 #590 №2090991 
>>2090980
> мимо ньюфаг-вкатун
> в пхп
Посмеялся с тебя
Аноним 09/07/21 Птн 08:53:43 #591 №2091016 
>>2090440
>В итоге пользователь, который запустил первый скрипт, ждет всего-лишь секунду таймаута
Ты сука гонишь что ли, всего лишь секунду...
У меня самые тяжелые скрипты секунды полторы отрабатывают, и каждый раз я проверяю точно ли не нужно воркер заюзать в этом месте.
Аноним 09/07/21 Птн 10:09:11 #592 №2091056 
Магазины на ларке с нуля пишут? Или используют пакеты типа aimeos?
Аноним 09/07/21 Птн 10:09:42 #593 №2091058 
>>2090980
PHP решает свои задачи и решает их отлично - рыночек порешал, а что там пердит очередной борщехлеб всем насрать. Нечего там разъёбывать. Да и не написал он ничего конкретного - манька себя "погроммистом считает", а остальных - говном.
Аноним 09/07/21 Птн 11:05:11 #594 №2091096 
>>2091056
>aimeos
Я бы заюзал
Аноним 09/07/21 Птн 17:51:04 #595 №2091496 
>>2091096
Запилил по учебнику простейшую форму заказа с магазина и их обработку, но при этом не выводится цена и сумма, может кто проверить и посдказать?

http://sandbox.onlinephpfunctions.com/code/49ad22cddd2fa4d61bc080570e933814a2471605
Аноним 09/07/21 Птн 17:58:15 #596 №2091501 
>>2091496
А все, забыл прописать ПОСТ к переменным
Аноним 09/07/21 Птн 21:21:55 #597 №2091662 
Ребята подскажите ситуацию, вот работал я макакой пхпшной, все программы писал в процедурно-функциональном стиле. Стоит ли сейчас искать что-то другое и возьмут ли меня на нормальную галеру, за нормальную40-50к хотяб зп? Или требования у таких галер обязательные знания и умения применять ООП? сейчас я на гос. предприятии работаю с легаси, чувствую что что-то не так
Аноним 09/07/21 Птн 23:08:54 #598 №2091744 
>>2091662
ООП обязательное требования для современной промышленной разработки.
Аноним 10/07/21 Суб 06:11:52 #599 №2091847 
Такой вопрос, ребзя. На каком уровне желательно знать js для пыходжуна?
Аноним 10/07/21 Суб 08:40:39 #600 №2091874 
>>2067067
Не очень понял что такое палиндром, но вот что получилось: https://ideone.com/so392Z
Аноним 10/07/21 Суб 10:11:46 #601 №2091944 
>>2067067
>>2091874
Ребят, вы переусложняете.
If(strrev(mb_strtolower($string)) === mb_strtolower($string)) {
echo('это палиндром);
} else {
echo('это не палиндром);
}
Аноним 10/07/21 Суб 20:05:40 #602 №2092478 
Всем здарова, я хочу стать верстальщиком. Учил html, scss, прочитал 1 часть Кантора по js, сверстал пару лендингов, читал на metanit про typescript, потом посмотрел видео по основам react и next.js, чтобы понимать как верстать реакт-компоненты и как принято делать страницы и компоненты в next.js Насколько я понимаю теперь мне надо учиться верстать под vue и angular.

МОЙ ВОПРОС ПО РНР. Насколько в 2к21 году популярна верстка на РНР-шаблонизаторах типа twig? Мне как вонаби верстальщику надо учить twig и учиться верстать на РНР-шаблонизаторах?
Аноним 10/07/21 Суб 21:55:22 #603 №2092560 
>>2092478
Сколько времени у тебя заняло обучение?
Аноним 10/07/21 Суб 22:27:37 #604 №2092582 
Привет аноны, я не местный, не ваш, не пхпшник в клетчатой рубашке. Почему-то подумалось, что в этой ветке должны сидеть адекватные дяди, понимающие веб !

Короче, проблема проста, на на простейший get реквест получаю 401 unauthorized.

На сайте логин не требуется, прозреваю что ему нужны Куки.
На моём языке в сетевых либах есть возможность заСэттить кукисы, крайне много дрочился с этим, но после сеттинга валится ошибка что-то в стиле "already connected" соотв header засеттить не могу. Да и продебажить толком не получается.

Дальше пока сумбурные мысли о том, что нужно послать какой-то хитровыебанный header в реквесте. Хуй его знает. Что думаете? Где я жидко обосрался?
Аноним 11/07/21 Вск 00:04:24 #605 №2092639 
>>2092582
Смотри в браузере, в инструментах разработчика что там отдаётся и принимается. Нам отсюда не видно куда ты пытаешься попасть и как, да и влом, если честно.
Аноним 11/07/21 Вск 05:19:54 #606 №2092690 
>>2092560
Времени у меня заняло неможечко ДОХУИЩА!

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

Я вообще не думал о будущем. Я думал о том как сдать предметы в шараге и не угодить защищать сапоги. Преподы всех вечно пугали отчислением, только я омежка сыч на это вёлся. Когда остальные Ерохи хуй ложили и были правы! Потому что моя шарага МухГУ в итоге выпустила с дипломами всех, кто тупо ходил на пары и не терялся подолгу!

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

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

Так что постепенно вкатываться в вёрстку я начал аж 5 лет назад, когда поступил в шарагу! Я тогда начал дрочить штмл, цсс и пытаться верстать лендосы. Но я всё время бросал, потому что учеба в шараге требовала делать вообще другое. В шараге решали математику, физику, было море гуманитарных предметов не относящихся к специальности, учились паять, изучали устройство ПК правда устаревшее, мы, например, дискеты изучали.

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

Извините, за изливание душе. Я искренне извиняюсь за своё существование. Я просто очень долго уже 5 лет не могу вкатиться в вёрстку. Извините.
Аноним 11/07/21 Вск 09:49:24 #607 №2092732 

>>2092690

анон, что за настрой... ты хоть попробывал вкатиться?
Аноним 11/07/21 Вск 09:54:08 #608 №2092740 
>>2092690
Поддерживаю молодого человека выше. Анон, что за настрой?

Соберись, возьми себя в руки и иди покорять что угодно.
Все у тебя получится.
Аноним 11/07/21 Вск 10:00:50 #609 №2092748 
>>2092690
Анон возьми себя в руки, че ты в самом деле. У многих в жизни ситуации бывает хуже. Я например, чуть ли не бомж. И это никак не оправдывает, моё бездействие. Нужно дальше действовать. И в армейке отслужил итд. Решай проблему постепенно, разделив на более мелкие задачи. Так проще будет, и удачи.
Аноним 11/07/21 Вск 11:46:14 #610 №2092820 
unnamed.png
>>2092748
>>2092732
>>2092740
Почему весь pr утопает в токсичном говне, все выебываются друг на друга, дизморалят, и только в одном пхп-треде такая атмосфера поддержки? Это какая-то магия?
Аноним 11/07/21 Вск 14:17:25 #611 №2092973 
Подскажите, почему может не работать height: 100%?
У html задан затемненный фон, body - основное рабочее поле, и оно сейчас половину снизу подрезано затемненным фоном. Как body до конца продлить вниз без абсолютных величин?
Аноним 11/07/21 Вск 15:29:21 #612 №2093045 
>>2092973
Ладно, похуй.
Аноним 11/07/21 Вск 16:21:50 #613 №2093103 
>>2092639
Ладно спс.
Но ход мыслей правильный, что 401 может быть связан с куками?
Аноним 11/07/21 Вск 17:33:38 #614 №2093155 
>>2091944

Это неправильное решение. strrev работает только с устаревшими 1-байтными кодировками и не переворачивает строки, закодированные в utf-8. Попробуй сам проверить свою программу на строке с русскими буквами в utf-8.
Аноним 11/07/21 Вск 17:36:44 #615 №2093156 
>>2092973

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

У тебя скорее всего не задан height у html. И еще, скорее всего, на body тебе нужен не height, а min-height.
Аноним 11/07/21 Вск 18:06:41 #616 №2093190 
>>2093103
Это может быть связано с чем угодно, если у тебя например в инкогнито заходит на страницу, то возможно что сервер смотрит на юзер агент, а твой хттп клиент отправляет или своё имя, или вообще ничего. Но вообще скорее всего или какие-то куки ставятся, или еще какой-то хитровыебанный хедер. Тебе правильно посоветовали, открой девтулз и посмотри какие там ответы приходят
Аноним 11/07/21 Вск 18:43:45 #617 №2093234 
>>2092820
> пхп-тред
Спасительный оазис в раскаленном песчаном аду.
Аноним 11/07/21 Вск 18:51:37 #618 №2093243 
>>2092732
>анон, что за настрой... ты хоть попробывал вкатиться?
Извините, просто я чет бомбанул, теперь неловко за свою пасту. Нет, я не пробовал вкатываться в работу, чувствую, что не готов, надо готовиться, учиться. Спасибо большое за совет, буду настраиваться быть ровнее и чётче.

>>2092740
Благодарю, буду стараться

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

Прошу прощения, что-то меня понесло. Большое спасибо за совет, я буду стараться.
Аноним 11/07/21 Вск 22:19:55 #619 №2093370 
Посоны, насколько джуну на первый вкат надо заморачиваться с архитектурой и клин кодом для пет-проектов-крудилок?
Получается, что у меня есть немного знаний, к ним добавляется шизоидное желание писать клин код, а в результате получается обфускейтед поебота типа FizzBuzzEnterpriseEdition, только все-таки не особо расширяемая.
Например флоу такое: в контроллер инжектится http-реквест. Контроллер преобразует http-реквест в дто (в laravel есть FormRequest, а в symfony я его сымитировал через ParameterResolver). Сервисы получают дто-запрос, отдают дто-ответ. Контроллер перобразует дто-ответ в http-респонс. Сервисы - это домен-сервисы, которые инжектятся через интерфейсы.
Воот, в моей реализации получаются следующие проблемы:
1. Жирные интерфейсы (как бы с нарушением interface segregation). В них просто круды прописаны, но вот захочу я завтра создавать-сохранять модели по-другому: мне весь круд переписывать надо будет (ну можно старый декорировать конечно, но все-равно мне кажется, что это не правильно). При этом не хочется впадать в другую крайность: дохуя интерфейсов (один - для сохранения, другой - для удаления и т.п.) - кажется, что это плохая идея. Че делать?
2. Также не понимаю как сделать легкозаменямые дто. У меня получается привязка к очень конкретным типам (вплоть до new в контроллерах). Кажется тут может помочь фабрика, но в них я еще, не шарю. Не понимаю как через них дто делать (и надо ли?), потому что в случае фабричного метода нужна логика на уровне фабрики, а в случае абстрактной фабрики дто будет на уровне интерфейса, что по-моему, не имеет смысла, так как дто нужно будет что-то делегировать, а нахуя ему что-то делегировать?
3. Когда я вернулся через две недели к своему коду, я тупил как я там собираю ошибки и откуда берется этот дто. Это говорит либо о моей тупости, либо о том что код реально запутанный, либо, что последнее - это следствие первого.
Примерно так я и мучаюсь. Может на реальных проектах научат как делать надо? Или наоборот - надо сперва уметь, чтобы туда попасть?
Аноним 11/07/21 Вск 23:29:45 #620 №2093463 
>>2093370
Ты хотя бы один реальный рабочий пет-проект сделал? Все эти траханья с архитектурой имеют смысл, когда ты шишек набил, а без опыта это всё называется интеллектуальная мастурбация. Завязывай - с этим долго и бесполезно играться можно. Поверь моему опыту.
Аноним 11/07/21 Вск 23:38:36 #621 №2093471 
15653376807570.jpg
>>2093370
Ну и да - не гонись за идеальным кодом. Хороший программист знает где почище надо сделать, а где говна поднакинуть, но побыстрее чтоб. Это у тебя ещё детские какашки после стерильных туториалов не вышли - как увидишь реальный проект, так сразу отпустит.
Аноним 12/07/21 Пнд 01:06:50 #622 №2093491 
Сап, такой вопрос, а зачем браузер пытается рендерить неправильную html верстку? Например, три дива <div><div><div> незакрытые будут интерпретироваться как вложенные друг в друга, и еще много всяких других странностей есть. Не логичнее ли, если тег не закрыт и он парный, интерпретировать его как текст?
Аноним 12/07/21 Пнд 03:39:23 #623 №2093501 
>>2091847
пофигу, зависит от вакансии
Аноним 12/07/21 Пнд 04:38:39 #624 №2093504 
>>2093491
Мы тут обсуждаем как бэк делать. С таким вопросами в тред по фронту.
Аноним 12/07/21 Пнд 07:02:21 #625 №2093516 
Ребят, кто сколько чистого времени в день тратит на программирование (работа или учеба)???
Аноним 12/07/21 Пнд 07:09:56 #626 №2093519 
>>2093516
Когда как. От 6 до 12 часов. Стараюсь чтобы последнее было как можно реже. В среднем 7-8 стараюсь.
Аноним 12/07/21 Пнд 07:12:07 #627 №2093520 
>>2093519
Это если про работу.
Иногда сижу-пержу делаю своим мутки для души. Плюс на них в зависимости от усталости/времени/желания от 1 до 4. Но это не каждый день
Аноним 12/07/21 Пнд 07:24:58 #628 №2093525 
>>2093519
Это без учета прокрастинации и пинания хуев? 7-8 чистого эт очень серьезная производительность.
Аноним 12/07/21 Пнд 08:47:14 #629 №2093557 
>>2093525
Самый большой секрет - не слушать музыку и не смотреть никакого говна на фоне.
Ну и плюс высыпаться.
Правда сегодня у меня на работе новой пинания хуев официальные, ибо мне для проекта api ещё не завезли для бизнес логики (ТМ).
Аноним 12/07/21 Пнд 09:47:03 #630 №2093590 
>>2093516
5-6 часов в день, почти без выходных.
Аноним 12/07/21 Пнд 09:54:52 #631 №2093601 
>>2093557
>не слушать музыку
Хз мне под пситранс или эмбиент норм делается. Что-то в этом стиле:

>не смотреть никакого говна на фоне
А как его можно смотреть? У меня, например, концетрация с потоком в процессе и я просто не вспомню о чём там было.

Алсо, советую после каждой выполненной задачи делать небольшие перерывы.
Аноним 12/07/21 Пнд 10:00:41 #632 №2093608 
>>2093557
>>2093590
Я сам в процессе обучения, если я только читаю или смотрю видосы, то если за день 4 часа наберется, то это очень хороший результат для меня. Больше читать/смотреть меня мой мозг нахуй посылает. Если пишу что-то для практики, то 5 часов чистого написания уже супер, в среднем часа 4 за сутки. Больше не получается из себя выжать. Без выходных каждый день занимаюсь.

Хз почему так, может я ленивая жопа, может со временем когда это до автомата все дойдет будет легче выходить и получится больше по времени работать, но меня моя продуктивность не устраивает. Хотел бы тоже часов по 6 хотя бы хуярить в день.
Аноним 12/07/21 Пнд 10:38:08 #633 №2093641 
>>2093557
>Самый большой секрет - не слушать музыку и не смотреть никакого говна на фоне.
Сегодня попробовал и охуел. Это реально работает, лол. Спасибо.
Аноним 12/07/21 Пнд 10:42:33 #634 №2093644 
>>2093608
>если за день 4 часа наберется
Да нормально будет, больше и не надо, можно меньше даже.
Тут нужно учесть один немаловажный фактор, который многие постоянно упускают - учёба всегда тяжелее даётся, чем применение уже развитых умений. Т.е. 5 часов пилить код это в целом легче чем 2 часа учёбы - ты там над задачей думаешь и доки читаешь, а не думаешь над элементарными вещами. Учишься, понятно, постоянно, но в соотношении 75% уже умеешь и 25% новое.
Короче, 2 часа в день для учёбы достаточно - главное регулярность. За 3 месяца и один инфоциганский курс разработчиками не становятся.
Аноним 12/07/21 Пнд 11:15:14 #635 №2093686 
>>2093601
> >не слушать музыку
> Хз мне под пситранс или эмбиент норм делается. Что-то в этом стиле:
Ну я тут не скажу за всех, но мой опыт - пробовал я эмбиент слушать, пробовал чил степы там всякие и прочее прочее. И вроде бы сначала работает. А потом начинает отвлекать мозг.


> >не смотреть никакого говна на фоне
> А как его можно смотреть? У меня, например, концетрация с потоком в процессе и я просто не вспомню о чём там было.
Многие, когда я в офисе был, так делали. Да и я сам. Ставишь какой нибудь подкаст на Ютубе / видос и слушаешь. Либо в окошко мелкое сворачиваешь.

Здесь как бы многие моменты индивидуальны. Не претендую на истину.
Аноним 12/07/21 Пнд 12:10:00 #636 №2093734 
Пишу пет на Ларе и у меня вопрос к знатокам:
Как можно реализовать универсальные категории, к которым потом можно отнести как записи в блоге, так и, например, товары. Или сделать проще - на каждый модуль(блог, магазин и тд) заводить свою категорию?
Чёт туплю на этом месте. Как обычно делают?
Аноним 12/07/21 Пнд 13:55:13 #637 №2093831 
>>2093734
Полиморфные связи есть
Аноним 12/07/21 Пнд 14:02:03 #638 №2093843 
>>2093831
Так-то я не про связи спрашивал, а как делают.
Аноним 12/07/21 Пнд 15:29:46 #639 №2093918 
Я не понимаю, когда я подключаюсь к бд, какой хост и порт я там должен указывать? Подключение происходит через апач или свой собственный сервер от pgsql? Указываю localhost - PDOexception выдаёт "could not find driver", хотя в php.ini расширение включил.
Аноним 12/07/21 Пнд 15:49:37 #640 №2093930 
>>2093918
Порт смотри и доступы. Все серваки имеют один общий адрес, но у каждого свой портпри условии что они выполняют разные функции.
Аноним 12/07/21 Пнд 16:18:34 #641 №2093957 
>>2093930
Всё, решил
Аноним 12/07/21 Пнд 17:39:47 #642 №2094060 
A826E3F5-C13B-4FF6-A95D-CA9F66A9F66D.jpeg
Два Ч, спешу поделиться радостью! 7 лет ждал вката в программрование. Всё это время учил PHP (psr-*), дрочил алгоритмы, разные фрэймворки... ну короче, я джуниор битрикс разраб!

Спасибо тому анону, что 7 лет назад уговорил меня уйти с работы и заняться самообразованием. Это время прошоо незаметно. Джун в 35 это нормально.
Аноним 12/07/21 Пнд 17:48:04 #643 №2094072 
16249659612420.png
>>2094060
Если ты зелень то кек
Если серьезно, то сочувствую
Аноним 12/07/21 Пнд 18:10:35 #644 №2094090 
>>2094060
Молодец, поздравляю с удачным вкатом. Я вот только 3 года учу и на работу не берут ещё.
Аноним 12/07/21 Пнд 18:41:11 #645 №2094143 
>>2094060
>я джуниор битрикс разраб!
Братишка, ебать ты долбоеб, земля тебе пухом
Аноним 12/07/21 Пнд 19:22:41 #646 №2094201 
>>2094060
Пошёл велосипедить джуном на laravel свежей версии после двух месяцев дрочки пхп, в чем я не прав?
Аноним 12/07/21 Пнд 20:09:45 #647 №2094251 
>>2094201
А ты красава. Не то что этот говноед битриксоид
Аноним 12/07/21 Пнд 22:34:23 #648 №2094370 
>>2093370

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

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

Ну например: ты пишешь, что используешь DTO и инъекцию через интерфейсы. А для чего это нужно? Какие плюсы дает? Может быть, в твоем простом проекте без этого будет проще?

> Сервисы получают дто-запрос, отдают дто-ответ.

Здесь может получиться, что сервис залезает в зону ответственности контроллера. Ну, например, пусть у тебя есть функция поиска книги по id. И ты возвращаешь DTO с полями вида success = true, name=Название, author=Автор .... Твой сервис по сути занимается формированием view, его просили просто найти книгу, а он занимается переводом ее в JSON. В MVC это задача не сервиса, а View, представления, преобразовывать объекты в нужный пользователю формат.

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

Тогда тебе надо не спешить писать интерфейсы, а посмотреть: может быть, проще без них? Может, без них придется переписывать меньше кода при изменениях?

> Также не понимаю как сделать легкозаменямые дто.

Зачем может понадобиться заменять DTO? Его делают для задачи передать данные из A в B. Зачем тебе понадобится его на что-то заменять?

> Кажется тут может помочь фабрика,

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

> Может на реальных проектах научат как делать надо?

Нет, на реальных проектах будешь писать так, как нравится ведущему программисту.
Аноним 12/07/21 Пнд 23:00:06 #649 №2094392 
>>2093491

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

- https://html.spec.whatwg.org/#parse-errors
- https://html.spec.whatwg.org/#an-introduction-to-error-handling-and-strange-cases-in-the-parser

Был такой стандарт XHTML, основанный на XML, который при ошибке в коде выдавал страницу с ошибкой.

> Не логичнее ли, если тег не закрыт и он парный, интерпретировать его как текст?

Вообще, правила HTML чуть сложнее. Такой HTML вполне валиден:

<p>Текст<p>текст<p>текст

Так как теги <p> нельзя вкладывать друг в друга, то открывающий тег<p> автоматически закрывает предыдущий. Аналогично работает тег <li>.
Аноним 12/07/21 Пнд 23:04:17 #650 №2094397 
>>2093918

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



Аноним 13/07/21 Втр 01:12:39 #651 №2094444 
Что нужно изучить чтобы решать задачи с ОП поста? Например про считалку на выбывание
Аноним 13/07/21 Втр 03:08:40 #652 №2094464 
Попробовал тут Нетбинс и нихуя не понял - почему он у меня пхпдок не подтягивает? Попробовал 12.4 и ЛТС 12.0 - в обеих только радостно вываливает дефолтные варианты. Без этой базовой для ИДЕ фичи это, фактически, обыкновенный редактор, только тяжелее в несколько раз чем тот же VSC.
Как вы им пользуетесь вообще?

Пробовал Eclipse с год назад - там похожее было, но там решается всё сборкой проекта и тогда ИДЕ видит всё что надо. А тут как? Не поверю, что есть такие говноеды, которые юзают ИДЕ как редактор.
Аноним 13/07/21 Втр 08:17:46 #653 №2094500 
Не совсем по теме, как настроить апач, чтобы он всегда запускал index.php в корневой папке независимо от того какой урл запущен?
Аноним 13/07/21 Втр 13:15:10 #654 №2094663 
>>2094464
Сидим на шторме
Аноним 13/07/21 Втр 13:39:34 #655 №2094696 
>>2094663
Почему когда речь идёт о ИДЕ обязательно вылезет кто-то и пукнет про шторм? Ты считаешь, что про него кто-то не знает что ли или как? С какой целью ты это написал?
Я спрашивал тех, кто умеет в Нетбинс вообще-то.
Аноним 13/07/21 Втр 13:46:59 #656 №2094702 
>>2094696
>Почему когда речь идёт о ИДЕ обязательно вылезет кто-то и пукнет про шторм
Потому что к сожалению в нашем веб болоте у тебя из альтернатив только "ломанный" шторм, и лицензия шторма. Не? Всё остальное либо для фанатиков свободного по, либо для нитакихкавсе. Шторм-к сожалению единственная адекватная ИДЕ для этих наших похапе.
Аноним 13/07/21 Втр 13:47:33 #657 №2094703 
>>2094464
>Нетбинс
В этом вообще невозможно писать, только начинаешь, появляются какие-то окна на пол экрана сверху и снизу, вообще не видно где пишешь. Ещё и пространство имён не воспринимает, говно в общем какое-то.
Аноним 13/07/21 Втр 13:51:44 #658 №2094706 
>>2094696
Тому шо шторм - стандарт иде для пхп.
На каждой работе первым делом выдавали лицуху шторма
Аноним 13/07/21 Втр 13:59:56 #659 №2094714 
Untitled.png
>>2094060
>битрих
Аноним 13/07/21 Втр 14:05:52 #660 №2094715 
>>2094703
Так я и спрашиваю - как в этом работают, потому, что на первый взгляд это убогое говно даже для бесплатного редактора. Как-то видел даже тех, кто за него срачи устраивал. Может это я чего-то не понимаю с ним?

>>2094702
>>2094706
Я это десятки раз уже слышал. Завязывайте в попугаев играть - я не про шторм спрашивал.
Аноним 13/07/21 Втр 14:27:51 #661 №2094728 
>>2094715
>Так я и спрашиваю - как в этом работают
Так не работают в нем
Аноним 13/07/21 Втр 14:28:03 #662 №2094729 
>>2094715
Ты просто время теряешь, пытаясь полюбить эти недоделки.
Аноним 13/07/21 Втр 14:49:53 #663 №2094742 
>>2094728
А зачем тогда они который год новые версии этой недоделки выпускают?

>>2094729
>пытаясь полюбить
Просто пробую всякое.
Аноним 13/07/21 Втр 14:51:30 #664 №2094744 
>>2094742
>А зачем тогда они который год новые версии этой недоделки выпускают?
Вероятно оно в другие языки может лучше чем в пыху.
Аноним 13/07/21 Втр 15:02:09 #665 №2094751 
>>2094742
>А зачем тогда они который год новые версии этой недоделки выпускают?
Мб бюджет инвесторов распиливают, хз. Будто мало софта делается в стол
Аноним 14/07/21 Срд 00:16:41 #666 №2095230 
>>2094201
По каким материалам и что учил?
Аноним 14/07/21 Срд 00:50:34 #667 №2095253 
>>2095230
Гайд с шапки по основам языка, потом доки пхп, потом задача про студентов, потом ларавель по документации. до пхп писал на си, с++, шарпе, питоне в качестве развлечения, так что как работает код и принципы ооп знал, гитом давно пользовался, как и линуксом в дуалбуте
Аноним 14/07/21 Срд 04:18:46 #668 №2095281 
>>2094444

Вообще, должно бы хватать информации из учебника.

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

Единственная сложность тут - как определить, какой именно элемент удалить. Допустим, в считалке 5 слогов. Если ключи в массиве начинаются с нуля (0, 1, 2, 3...), то первым надо удалить элемент с ключом 4 (он пятый по счету с начала), потом с номером 9, и тд. Когда мы дойдем до конца массива, у нас получится "дырявый" массив, в котором нет элементов с ключами 4, 9, итд. Мы можем его переупорядочить с помощью array_values, так что ключи снова будут идти по порядку без "дырок", и дальше продолжать удалять из него элементы.

Если есть какие-то конкретные вопросы, спрашивай.
Аноним 14/07/21 Срд 04:39:54 #669 №2095283 
>>2094444

И если вдруг тебя заинтересовали задачи на алгоритмы, то ты можешь найти множество их на сайтах вроде codeforces или leet code.

>>2094464

Эклипс относительно юзабельный, если с ним повозиться и настроить. Хотя, как я помню, там есть какие-то баги.

>>2094500

Обычно используют mod_rewrite. Этот модуль позволяет "переписывать" URL, если он соответствует/не соответствует правилам. Документация есть, но на английском, и я бы советовал для начала почитать про этот модуль. Иначе ты не поймешь то, что написано ниже.

Используя mod_rewrite, мы пишем правило вроде: если URL не соответствует js/css/png/статическому файлу, то переписать его на index.php. Это позволяет нам делать "красивые" URL, а также защитит нас от ситуации, если злоумышленник смог загрузить на сервер свой php-файл и хочет его запустить.

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

RewriteBase /
# Если в URL index.php - не переписывать его
RewriteRule ^index\.php$ - [L]
# Если URL ссылается на существующий файл или каталог - не перепиысыыать
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Иначе, заменить URL на указанный
RewriteRule . /index.php [L]

Кстати, тонкость в том, что Апач исполняет эти правила не один раз, а много раз подряд до тех пор, пока URL не перестанет меняться.

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

- если URL указывает на файл или каталог, не переписывать URL

Соответственно, если указать URL вида /upload/photo.php и такой файл есть, то он запустится.

А должно быть:

- если URL указывает на файл И этот файл имеет расширение css/js/jpg/png/... то не переписывать URL.

Думаю, что эти правила надо заменить на примерно такое:

# Если URL заканчивается на css/js/png - не переписывать
RewriteRule \.(css|js|jpg)$ - [L]

В общем, почитай про mod_rewrite, напиши конфиг, протестируй:

- что вызывается index.php,
- что статика отдается корректно,
- что посторонние php-файлы не запустить по прямой ссылке или используя трюки вроде /upload/photo.php/styles.css

Если есть какие-то вопросы - спрашивай.


Аноним 14/07/21 Срд 04:44:23 #670 №2095284 
>>2094702

Не всем нужен PHPStorm, и даже те, кто его использует, зачастую не пользуется, а то и не знает про все его возможности. Зачем покупать программу, которую ты будешь использовать на 5%? Потому стоит посмотреть и на альтернативы:

- VS Code с плагином intellisense, с lint-плагином для проверки корректности кода
- Eclipse (с багами)

Аноним 14/07/21 Срд 08:05:13 #671 №2095305 
В mvc во view допустимо хуярить блоки if else и ебашить / пропускать хтмл элементы по результатам выполнения этих блоков? Все вычисления в модели, из нее выходит массив с кучей true/false, потом если true, то элемент добавляется к верстке, если false, то нет. Такое же допустимо?
Аноним 14/07/21 Срд 10:13:44 #672 №2095368 
>>2095284
>Зачем покупать программу, которую ты будешь использовать на 5%?
Потому что даже эти 5% работают лучше на 2 головы чем у всех конкурентов, не?
Да и изредка даже у 5процентника возникает таки запрос на редко используемые штуки. И вот в случае если он сидит на другой иде-он будет как то терпеть и жить как жил. А если на шторме-погуглит, и начнёт использовать уже 6%. Внезапно:да, процесс изучения инструментов тоже зависит от практики.
Аноним 14/07/21 Срд 10:15:11 #673 №2095370 
>>2095305
Допустимо конечно, иначе этого бы не было во ВСЕХ шаблонизаторах.
Тут, конечно, тонкая грань(что есть бизнес логика, а что допустимо и в шаблоне), но в целом-ничего страшного в условных операторах в шаблоне нет.
Аноним 14/07/21 Срд 12:17:06 #674 №2095481 
>>2095368
>>2095283
>Хотя, как я помню, там есть какие-то баги.
Тоже встречался пару раз. Но там достаточно разобраться с плагинами - какие норм, а какие жопоруки писали и использовать нормальные. Вообще Эклипс мне именно своей гибкостью понравился - плагинов очень много разных и из ИДЕ собрать можно даже троллебус. Ну и да - он выполняет свою функцию помощи при написании кода, в отличие от.

>>2095368
>даже эти 5% работают лучше
Эти 5% это как раз и есть обычный редактор да модуль гита. Такое сегодня везде есть искаропки, и везде отлажено.
Аноним 14/07/21 Срд 12:20:46 #675 №2095488 
Устанавливаю куки с локалхоста, в хроме она видна в настройках, но $_COOKIES не видит ту куки, что я поставил, в чем дело может быть?
Аноним 14/07/21 Срд 12:25:32 #676 №2095498 
>>2095481
>Эти 5% это как раз и есть обычный редактор да модуль гита
Как минимум это ещё переход к дефайну функции, корректная работа с неймспейсами, удобный ssh клиент встроенный.
Аноним 14/07/21 Срд 12:31:42 #677 №2095505 
>>2095498
>переход к дефайну функции, корректная работа с неймспейсами, удобный ssh клиент встроенный
Тоже везде есть - это базовые фичи. Переход к дефайну ещё в 2002 году встречал в ИДЕ для Дельфи.
Аноним 14/07/21 Срд 12:37:10 #678 №2095507 
>>2095505
Есть то он есть, но с этими нашими неймспейсами и автолоадами не всегда и не всё корректно отрабатывает.
Аноним 14/07/21 Срд 20:32:49 #679 №2095881 
Самое сложное это найти идею для проекта.
Важно чтобы:
а) Не требовал сбора тонн информации
б) Не требовал годы на разработку
в) Привлек немного пользователей
Аноним 14/07/21 Срд 23:57:08 #680 №2096051 
>>2095305

Логику можно разделить на бизнес-логику и логику отображения. Например:

- если пользователь зарегистрировался менее 7 дней назад, то он получает скидку на товар - это бизнес-логика, ей место в модели.
- если пользователь VIP, то около его ника рисуется корона - это логика отображения, ей место во view. То есть просто во view пишем: if ($user->isVip()): .... endif.

>>2095488

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

>>2095481

А зачем в IDE поддержка git? git абсолютно удобно использовать из консоли. Наоборот, в IDE часто поддержка git реализована плохо. Например, в PhpStorm при разрешении конфликтов, если я не путаю, используется 3-панельная система сравнения в то время, как сторонние программы вроде KDiff3 имеют 4 панели.

>>2095498

Переход к определению есть в Eclipse, VS Code + intellisense. зачем нужен SSH клиент в IDE, не очень понятно - можно просто в консоли набрать ssh [email protected]

Аноним 15/07/21 Чтв 00:19:24 #681 №2096062 
>>2096051
>git абсолютно удобно использовать из консоли
Нет, не удобно. Я никому не рекомендую начинать знакомство с гитом с консольного варианта.

>используется 3-панельная система сравнения в то время, как сторонние программы вроде KDiff3 имеют 4 панели
Да? А что через консольку не разгребаешь? Тебе ведь удобно.
Аноним 15/07/21 Чтв 00:26:00 #682 №2096065 
>>2096051
>можно просто в консоли набрать ssh [email protected]
Алсо IDE предполагает наличие консоли, сразу настроенной под проект. Вообще сам идея IDE это когда есть один инструмент, заменяющий собой пачку различных инструментов. Так-то никто не мешает взять их все в отдельности и использовать - я сам такое иногда вытворяю.
Аноним 15/07/21 Чтв 00:51:22 #683 №2096085 
>>2096051
>Diff3 имеют 4 панели
Для чего используется 4ая панель?
Аноним 15/07/21 Чтв 02:44:48 #684 №2096111 
>>2093190
А где конкретно в девтулс это? (в хроме?)


>отправляет или своё имя, или вообще ничего.
Да, я же пишу c нуля реквест по сути.
То есть юзер агент и всякие дефолтные поля (как бы для эмуляции браузера) могут помочь?
Но всё-таки не въехал до конца с механизмом передачи кукисов. Может Postman заюзать, он такое умеет? Просто ленив пока. Вообще это мой сраный ПЕТ, поэтому всегда можно забить.
Аноним 15/07/21 Чтв 06:46:41 #685 №2096141 
Короче, аноны, я вообще хуй знает что это.

Задал куки вот так:

setcookie("uniqueID", $cookieValue, ["expires"=>time() + 315576000, "domain"=>"localhost"]);

Делаю var_dump($_COOKIE) из одного места в коде под одним урл:

array(2) {
["uniqueID"]=>
string(13) "60eeab98e6208"
["PHPSESSID"]=>
string(26) "5f2gptrshcnltvi6b1l6kjf110"
}


И из другого под другим урл:

array(1) {
["PHPSESSID"]=>
string(26) "5f2gptrshcnltvi6b1l6kjf110"
}


Че это вообще за нахуй, как такое возможно


Аноним 15/07/21 Чтв 06:51:35 #686 №2096143 
>>2096141
Аноны, сории за полотно, через пару минут разобрался сам. Нужно было в опциях "path"=>"/" прописать чтобы куки было видно по всему домену.
Аноним 15/07/21 Чтв 07:50:24 #687 №2096149 
>>2093608
>если за день 4 часа наберется, то это очень хороший результат
Двачую, тоже вкатываюсь, третий месяц, за все это время 4 часа чистой учебы у меня получилось всего пару раз, обычно 2 часа выходит.
Аноним 15/07/21 Чтв 10:37:31 #688 №2096229 
Напишите, плиз, регулярное выражение "Любое количество любых символов".
Аноним 15/07/21 Чтв 10:46:07 #689 №2096234 
>>2096229
/(.)/igm
Аноним 15/07/21 Чтв 12:13:21 #690 №2096281 
>>2096111
>это мой сраный ПЕТ, поэтому всегда можно забить
А я вот даже на петах на 100% всё выполняю. А если на реальном проекте встретится? Это вызов для меня скорее - могу много времени потратить, порой переделывая и прикидывая как лучше. Благо с петами рамок по времени нет.
Аноним 15/07/21 Чтв 12:19:41 #691 №2096287 
>>2096281
>А если на реальном проекте встретится? Это вызов для меня скорее - могу много времени потратить, порой переделывая и прикидывая как лучше
На реальном проекте никто не даст время на выдрачивание кода. Сделал - заработало - в прод
Аноним 15/07/21 Чтв 18:15:03 #692 №2096586 
>>2096287
Так в это и смысл пета - лампово выдрачивать свои навыки в комфортной обстановке.
Аноним 15/07/21 Чтв 18:34:23 #693 №2096612 
>>2096586
Все навыки заранее не выдрочишь. В разработке масса узких специализаций, где можно годами выдрачивать. А какие из них придется использовать на проде - чистая лотерея. Могут дать ETL, могут работу с платежами, а могут какую-нибудь аналитику строить. На каждый случай будешь код задрачивать?
Аноним 15/07/21 Чтв 19:16:48 #694 №2096669 
>>2096612
Тебе 12 лет что ли - что за фатализм "все навыки заранее не выдрочишь" и, типа, нефига даже заниматься. Любишь на месте велосипеды писать как получится - твоё дело, но чё ты до меня-то доебался?
Аноним 15/07/21 Чтв 19:22:42 #695 №2096681 
>>2096612
Алсо таких как ты нельзя подпускать к критическим системам - такого нахуевертишь. Приходилось общаться с людьми для которых сроки на втором месте и важнее именно качество и вот ты туда не проходишь потому, что сделал - заработало - в прод. Это подход хуятора в подвальной галере.
Аноним 15/07/21 Чтв 19:46:54 #696 №2096714 
>>2096681
>к критическим системам
Мань, критические системы не пишут на пхп.
Максимум это финтех, где всё покрывается пачкой тестов и ревьюится.

>Приходилось общаться с людьми для которых сроки на втором месте и важнее именно качество и вот ты туда не проходишь
Вряд ли выбирая качество люди будут писать на пхп
Аноним 15/07/21 Чтв 19:52:56 #697 №2096727 
>>2096669
Прихожу на новое место работы - там своя предметка и архитектура, так что мои знания сразу ополовиниваются, пока в проект въедешь, пока в бизнесовой части разберешься.
Ну и я заранее не знаю, какая фирма даст оффер и какой проект в фирме придет. Может это сервис доставки, может инет магаз, может какая-то црм. Заранее дрочить предметку - если на мамкиной шее сидеть, мб и можно. Но обычно погружение происходит в первые пару месяцев работы. А там уже пишешь норм код как остальные разрабы
Аноним 15/07/21 Чтв 20:50:20 #698 №2096804 
>>2096062

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

Тем более, что эти формы - это лишь интерфейс к тем же самым консольным командам.

> А что через консольку не разгребаешь?

Для разных задач удобнее разные инструменты. Сделать коммит или посмотреть, кто и как менял функцию x, удобнее через консоль. Разрешать конфликты удобнее специально сделанной для этого программой (а не в консоли или в PhpStorm).


Аноним 15/07/21 Чтв 20:54:14 #699 №2096807 
>>2096085

В Kdiff3 используются такие панели:

Вверху:

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

Внизу:

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

То есть, если был код $x = 1; и ты его поменял на $x = 2, а кто-то другой на $x = 3 то в трех верхних панелях будут эти три версии кода, а внизу - итоговый результат (который в том числе можно править вручную, например вписать $x = 4).

В PhpStorm, как я понял из мануала, нету панели с оригинальным кодом. Нельзя увидеть, как код выглядел до правок.
Аноним 15/07/21 Чтв 20:59:00 #700 №2096817 
>>2096229

.*

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

хелп парни от этого зависит моя жиза я бомж без денег нужна устроиться челик 15/07/21 Чтв 21:11:22 #701 №2096834 
парни кто шарит помогите кто может по брацки хоть чонить

Тестовое задание на вакансию PHP-Программист.



Здравствуйте! Высылаю вам тестовое задание на должность PHP-программист.



Плановый срок решения задания: 3-4 дня. Сообщите, пожалуйста, когда приступите к тестовому заданию, на почту [email protected]

Если при выполнении задания у вас возникнут вопросы, обращайтесь на почту [email protected]



1. Дан массив "категории". Каждая категория имеет следующие параметры:

"id" — уникальный числовой идентификатор категорий

"title" — название категории

"children" - дочерние категории (массив из категорий)



Вложенность категории неограниченна (дочерние категории могу иметь свои вложенные категории и т.д.)



Пример массива :



$categories = array(

array(

"id" => 1,

"title" => "Обувь",

'children' => array(

array(

'id' => 2,

'title' => 'Ботинки',

'children' => array(

array('id' => 3, 'title' => 'Кожа'),

array('id' => 4, 'title' => 'Текстиль'),

),

),

array('id' => 5, 'title' => 'Кроссовки',),

)

),

array(

"id" => 6,

"title" => "Спорт",

'children' => array(

array(

'id' => 7,

'title' => 'Мячи'

)

)

),

);



Необходимо написать функцию searchCategory($categories, $id), которая по идентификатору категории возвращает название категории.







2. Даны три таблицы:



таблица `worker` (работник) с данными — id (id работника), first_name (имя), last_name (фамилия)

таблица `child` (ребенок) с данными — worker_id (id работника), name (имя ребенка)

таблица `car` (машина) с данными — worker_id (id работника), model (модель машины)



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



CREATE TABLE `worker` (

`id` int(11) NOT NULL,

`first_name` varchar(100) NOT NULL,

`last_name` varchar(100) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;





CREATE TABLE `car` (

`user_id` int(11) NOT NULL,

`model` varchar(100) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;





CREATE TABLE `child` (

`user_id` int(11) NOT NULL,

`name` varchar(100) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;



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



3. Написать функцию, которая на входе принимает массив из открывающихся или закрывающихся тегов (например “<a>”, “</td>” ), а возвращает результат проверки корректности: т.е. является ли принятая функцией последовательность тегов структурой корректного HTML документа. Например, последовательность “<a>”, “<div>”, “</div>”, “</a>”, “<span>”, “</span>” - корректная структура, а последовательность “<a>”, “<div>”, ”</a>” - некорректная структура.

Необходимо использовать нативный php без использования библиотек DOMDocument, Simplexml и тд.



4. Написать класс-оболочку хранилища «Box».

В хранилище можно установить данные (setData($key, $value)), получить данные (getData($key)), сохранить данные (save()) и загрузить данные (load())



$key — произвольный идентификатор данных

$value — скаляные данные или массив



Хранилище состоит из:

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

- Абстрактный класс AbstractBox содержащий реализацию необходимых общих методов

- Класс FileBox расширяющий абстрактный класс AbstractBox. При вызове save() сохраняет заданные в класс данные в файл. При вызове load() достает данные из файла.

- Класс DbBox расширяющий абстрактный класс AbstractBox. При вызове save() сохраняет заданные в класс данные в базу. При вызове load() достает данные из базы.



Функция load не должна ничего возвращать, должна лишь сохранять полученные данные внутри объекта. Для получения данных служит функция getData($key).



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



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



Общие пожелание по выполнению всех заданий: по 1 и 3 заданию необходимо в отдельном файле создать одну функцию с необходимой логикой, если необходимо какую-либо из функций разбить не несколько, делать все в этом же файле, по 2 заданию, необходимо в отделльном файле написать один sql запрос и больше ничего, по 4 заданию в отдельной папке создать необходимые классы. Никаких index.php, html разметки и тем более стилей добавлять не надо.



Желаем вам удачи в выполнении задания!



Спасибо.
Аноним 15/07/21 Чтв 21:23:58 #702 №2096846 
>>2096834
Так и че? Задание для джуна адекватное вполне. За вечер делается. Бери и делай, хули еще надо? Как ты работать собрался если ты эти мелкие задачки сделать не можешь сам?
Аноним 15/07/21 Чтв 21:31:57 #703 №2096859 
>>2096846
да мне некогда ебать, завтра уезжать надо короче в другой город, а работы нет нихуя, да и мне онли 2 задание бы
Аноним 15/07/21 Чтв 21:33:15 #704 №2096862 
>>2096804
>проекта из 3 файлов
Где ты такие проекты видел и зачем им гит?

В общем у тебя консолька ради консольки, а когда не консолька, тогда можно, но почему-то только тебе. Все остальные зачем-то тоже должны вводить буковки вместо того чтобы пару раз кликнуть мышкой.
Использование консоли удобно только для более хитровыебанных операций, а базовые все давно уже прокликивают. Та же работа с ветками - набери, посмотри, переключись. Через интерфейс же все ветки сразу видно.
Я сам большой любитель попердолить консолечку, но когда надо писать код и думать о проекте, то посторонних движений должно быть минимум - Это хорошо экономит время.
Аноним 15/07/21 Чтв 21:33:45 #705 №2096863 
>>2096807
>В PhpStorm, как я понял из мануала, нету панели с оригинальным кодом. Нельзя увидеть, как код выглядел до правок.
Есть такое, да. Хотя не очень часто нужно обычно резолвишь конфликт и дальше идешь. А в случае чего можно откатиться
Аноним 15/07/21 Чтв 21:37:16 #706 №2096871 
>>2096859
Ты троллишь нас что ли? Кого должно ебать что тебе там что-то некогда?
Аноним 15/07/21 Чтв 21:39:19 #707 №2096873 
>>2096846
Ну ты борзый канеш. Некогда ебать. Одно дело помочь, а другое сделать за какого-то охуевшего черта его работу, на которую ему к тому же поебать.
Аноним 15/07/21 Чтв 21:41:49 #708 №2096875 
>>2096834
>astrio
Видел как они искали разработчиков в вкшечке, постоянно меняя аватарки и имя херочки. Глянул на их требования и в целом - мутная контора, которая, похоже, просто торгует курсами для вкатывальщиков. По крайней мере у меня такое впечатление сложилось.

А ты просто хуй с горы и думаешь вкатиться таким хитрым способом, лол. Они же там обещают обучение вроде как.
Аноним 15/07/21 Чтв 23:47:02 #709 №2097005 
>>2096859
Ну и пошел нахуй тогда
Аноним 16/07/21 Птн 08:09:53 #710 №2097131 
>>2096586
Да хер знает.
Меня лично мотивирует только потенциальный доход от работы над ПЕТом, а ламповость в самом процессе, как впрочем и мозготрах.
Много всяких тонкостей изучал в том году, а теперь вижу что я долбоеб и просто въебал время вникуда, в знания, которые ВОЗМОЖНО когда-то пригодятся или нет. Ну такое.
Нужно четко структурировать кодинг и условно гуглинг различных техник в каждый момент времени, постоянно перепроверяя и соотнося это с реальными проблемами на земле, которые ты способен решить.

Аноним 16/07/21 Птн 12:09:15 #711 №2097283 
>>2096586
И как вариант набить гитхаб перед собесом.
Аноним 17/07/21 Суб 00:15:47 #712 №2098064 
Пацаны, хэлп. Вкатываюсь уже какое-то время, вполне придрочился к PHP/SQL, прохожу книжечку из шапки по Гиту и уже начал забывать JS. Собственно проблема в том что я просто сижу читаю\делаю какие-то глупые упражнения и чувствую что нихуя дальше не развиваюсь, тк ни одной более менее реальной задачи не решил и даже не знаю какие они могут быть. Возможно ли с такими навыками найти подработку\стажировку за еду или даже бесплатно, или где можно дрочить скилы, чтобы не я сам оценивал свой говнокод, а мне могли указать на ошибки?
Аноним 17/07/21 Суб 07:50:02 #713 №2098138 
В MVC во внутренние функции модели можно передавать глобальные переменные, или это считается за тотальный харам?
Аноним 17/07/21 Суб 12:32:00 #714 №2098315 
>>2098138
MVC не про глобальные переменные, а про архитектуру. Глобальные переменные вообще лучше не использовать нигде.
Собери из них объект реквеста и передавай в контроллеры. Например даже древний Опенкарт при инициализации делает этот Реквест и очищает глобальные чтобы никому моча в голову не ударила их использовать при создании плагинов.
Аноним 17/07/21 Суб 14:09:03 #715 №2098387 
>>2098064
>Возможно ли с такими навыками найти подработку\стажировку за еду или даже бесплатно
Думаешь один такой?
На стажерские вакансии километровые очереди стоят.
Так что дрочи скилы дальше, пиши пет проекты, пробуй собесы на джуна/мидла

>где можно дрочить скилы, чтобы не я сам оценивал свой говнокод, а мне могли указать на ошибки?
Для начала возьми какой-то пет проджект, хоть банальный интернет магазин.
А оценить его могут в тематических чатах в телеге. Некоторых разрабов бывает заебывает работа и хочется отвлечься - могут поревьюить твоё поделие.
Аноним 18/07/21 Вск 15:15:06 #716 №2099478 
У меня есть таблица авиарейсов, типов самолётов, мест в самолёте и таблица тапов мест. Для каждой таблицы есть класс с методом создание, в котором есть запрос sql, привязка значений и выполнения запроса.
Но что-то я понял, что создать отдельно каждое место в таблице мест как-то глупо.
Вопрос - как сделать, чтобы при создании авиарейса, в зависимости от типа самолёта(в таблице которое есть поле с числом максимальных мест), таблица мест автоматически заполнялась в каком-то соотношении типов мест? Как это вообще приблизительно реализовывать?
Аноним 19/07/21 Пнд 00:49:37 #717 №2100063 
>>2099478
Лучше всего никак. Зачем тебе в базе незанятые места? Подтягивай занятые и общую конфигурацию самолета и возвращай клиенту актуальную инфу.
Аноним 19/07/21 Пнд 01:43:36 #718 №2100099 
>>2099478

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

То есть, в самолете типа 1 есть места A1, A2 ... и так далее. Если тебе понадобится оформить билет, то ты в нем указываешь id рейса и id места.

>>2098138

В принципе, можно. Но все зависит от ситуации. Если ты имел в виду "у меня есть функция регистрации пользователя. Можно я просто в нее передам $_POST целиком?", то это плохая идея. Так как функция регистрации пользователя должна заниматься именно регистрацией, а не разбором переменных из _POST или валидацией форм. У тебя же эта функция должна "знать", как выглядит форма регистрации пользователя, какие поля из нее приходят.

Обычно такую задачу разделяют на подзадачи:

- разбор данных, пришедших из формы и преобразование этих данных в объект какой-то стандартной структуры (например: User или UserRegisterForm)
- проверка правильности данных
- создание пользователя

Здесь каждая функция занимается своим делом и ничего не знает о других функциях. Функция валидации или регистрации ничего не знает о форме регистрации.

Аноним 19/07/21 Пнд 01:57:32 #719 №2100104 
>>2098064

"реальные задачи" отличаются от учебных упражнений следующим:

- во-первых, в реальных задачах используется много готового кода, а именно: фреймворки уровня Symfony/Laravel, плагины к ним, шаблонизаторы вроде Twig, ORM вроде Doctrine. Все фреймворки учить бесполезно, но познакомиться с одним из них стоит.

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

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

В шапке есть задача про сайт Testhub, она по сложности приближается к реальным приложениям. Можешь посмотреть ее.
Аноним 19/07/21 Пнд 22:33:47 #720 №2100779 
>>2096862

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

Ты предлагаешь: не изучать гит, а сразу взять интерфейс с кнопками из phpstorm и пользоваться им. Те, кто умеет только нажимать на кнопки, не понимая толком, что они делают, в итоге ломают код при мерджах, при конфликтах. Это глупый подход.
Аноним 19/07/21 Пнд 23:10:30 #721 №2100811 
>>2100779
>умеет только нажимать на кнопки, не понимая толком, что они делают
Как это должно изменить набирание команд через консольку?
Понимать гит как раз легче через интерфейс т.к. там базовые операции разделены по типам: работа с коммитами, ветками, удалёнными репами, тегами и тд.

>ломают код при мерджах, при конфликтах
Через консольку всё точно так же ломается, если ты не знал.

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

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

И ты так и не сказал - почему в одном случает нужно пользоваться только командами, но в определённых случаях ты лезешь в интерфейс? У тебя логика с двойным дном.
Аноним 20/07/21 Втр 00:55:39 #722 №2100893 
screen.jpg
Почему Визуал студио все красным подчёркивает, в том числе имя файлов?
Аноним 20/07/21 Втр 15:16:18 #723 №2101394 
В laravel есть какой-нибудь способ изкаропки реализовать null object пользователя? Можно, конечно, свой сервис сделать, к нему фасад и функцию; или макрос на реквест приделать. Но, блин, не верю, что в ларе для этого свои велосипеды нужны.
Аноним 20/07/21 Втр 17:01:35 #724 №2101578 
>>2101394
>null object пользователя
Что за зверь?
Аноним 20/07/21 Втр 18:00:23 #725 №2101631 
>>2101578
Null object pattern, чтобы об нулл не спотыкаться.
Алсо, вроде как пользователь оказался нужен только в шаблонах, поэтому расшарил переменную через View.
Аноним 20/07/21 Втр 19:04:08 #726 №2101688 
photo2021-07-2019-03-03.jpg
>>2101394
Аноним 20/07/21 Втр 19:22:26 #727 №2101706 
>>2101631
Может хватит оператора ?? который вернет пустого юзера?
Аноним 20/07/21 Втр 20:10:01 #728 №2101783 
Подскажите, есть jquery скрипт, который должен вытаскивать $id из строки таблицы:

$(document).on('click', '.elem', function() {
let id = $(this).attr('id');
$.post('index.php' , {
elem_id: id
} , function(data){
location.reload();
})
});

Сама строка таблицы: <tr id='{$id}' class='elem'>;
$id точно не пуст.
Таблица выводится в Index.php, скрипт подключён туда же.

Я не понимаю, как нужно принимать $_POST? Могу ли я его принимать в том же самом index.php вот так:?

if ($_POST) {
$my_object= new MyObject($db);
$my_object->id = $_POST['id'];
$stmt = $my_object->запрашиваюСодержимоеДругойТаблицы();
include "другаяТаблица.php";
}

Где ошибка? Неправильно отправляется $_POST? Или он неправильно принимается? И почему чёртова перезагрузка срабатывает?
Аноним 20/07/21 Втр 20:12:03 #729 №2101786 
>>2101783
>$my_object->id = $_POST['id'];
фикс, тут у меня $_POST['elem_id'];
Аноним 20/07/21 Втр 21:42:36 #730 №2101918 
>>2101631
>чтобы об нулл не спотыкаться
Для этого существуют проверки как в коде, так и в шаблонах. Если дёргать его через нулл-объект, то будут на выходе левые данные из этого нулл.
Не надо тащить паттерны туда, где их не надо.
Аноним 20/07/21 Втр 21:52:16 #731 №2101935 
>>2101783
>почему чёртова перезагрузка срабатывает?
>location.reload();

Аноним 21/07/21 Срд 00:15:59 #732 №2102053 
>>2101935
Блять, гений, спасибо за такое ценное замечание. Только вот post c id нихрена не приходит, и вообще, то что внутри if не срабатывает, даже если я там просто что-то вывожу с подставленным id.
Аноним 21/07/21 Срд 01:56:16 #733 №2102091 
>>2102053
Шиз, спок. Удали код и иди на завод - тебе нельзя в программизм.
Аноним 21/07/21 Срд 04:22:37 #734 №2102103 
TGuSjRBS6E.jpg
>>2102053
В зависимости от способа объявления скрипта, возможно, у тебя в $this не элемент, а всё окно целиком -- проверь. В таком случае лучше передавать в функцию event.target.

> Могу ли я его принимать в том же самом index.php вот так:?
Да

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

Зачем понадобилось делать такую ебанутую навигацию через $_POST-параметры вместо $_GET? При всех очевидных минусах, какие плюсы?
Аноним 21/07/21 Срд 07:00:24 #735 №2102116 
>>2100104
- во-вторых, в реальных задачах гораздо больше "фич" и больше объем кода. В учебной задаче ты делаешь сайт из 3 страниц с 5 элементам (кнопки, ссылки, таблицы) и на каждой. В реальной задаче будет сайт из 300 страниц с 5000 элементами.

Можно, пожалуйста, пример такого реального проекта. 300 страниц это имеется ввиду 300 шаблонов для 300 видов страниц же? Что-то не могу себе представить ни один сайт с такой вариативностью.
Аноним 21/07/21 Срд 12:50:29 #736 №2102355 
image.png
>>2102116
>Можно, пожалуйста, пример такого реального проекта. 300 страниц это имеется ввиду 300 шаблонов для 300 видов страниц же? Что-то не могу себе представить ни один сайт с такой вариативностью.
Например у меня сейчас 130 файлов шаблонов и это только в ядре, еще больше в модулях и либах лежит.

Тот анон привел гипертрофированный пример.
Если обобщить, то на учебном проекте у тебя условно 5к строк кода. На рабочем будет 100к-500к, а может и больше (больше я сам не встречал, на текущем 500к с копейками). Соответственно большая часть проблем будет с тем, как справиться с разросшейся кодовой базой
Аноним 21/07/21 Срд 12:58:24 #737 №2102359 
>>2100811

Изучать удобнее и лучше именно в консоли, потому что там ты делаешь действия по одному. Сначала add, потом commit. Нет никаких лишних прослоек или абстракций.

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

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

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

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

> который считает, что копипастить код нельзя

Тут ты пишешь чушь. Конечно, это плохая идея, копипастить код, так как потом тебе придется делать правки в нескольких местах. И ты бессмысленно увеличиваешь объем кода.
Аноним 21/07/21 Срд 13:08:26 #738 №2102367 
>>2100893

Наведи мышь, и может быть появится подсказка, почему.

>>2101394

По моему, это плохая идея. Так как не будут работать проверки вроде if ($this->user) ...

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

>>2101783

При клике в this будет не tr, а элеимент, на который кликнули, наверно в этом дело?

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

> Неправильно отправляется $_POST? Или он неправильно принимается?

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

Также, у тебя плохой PHP код. Ты как-то странно передаешь id через свойства объекта. Надо передавать его явно в метод:

$object->findData($id);

Зачем ты придумал какое-то свое вывернутое ООП? Лучше на функциях писать код, чем в таком стиле.

Аноним 21/07/21 Срд 13:09:56 #739 №2102368 
>>2102103

Запросы, которые меняют данные на сервере (удаление, правка контента) должны отправляться через POST, а не через GET.
Аноним 21/07/21 Срд 13:13:47 #740 №2102372 
>>2102116

> 300 страниц это имеется ввиду 300 шаблонов для 300 видов страниц

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


Аноним 21/07/21 Срд 13:30:41 #741 №2102395 
>>2102359
>потому что там ты делаешь действия по одному. Сначала add, потом commit
Мы точно про интерфейс говорим? Ну, там, где вместо набора буковок просто нужную кнопку выбрать и получить тот же результат.

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

>Более того, GUI обычно рассчитаны не на новичков, а именно на тех, кто уже знает гит (и изучил его, например, с помощью консоли)
Более того IDE обычно рассчитаны не на новичков, а именно на тех, кто уже знает язык(и изучил его, например, с помощью блокнота)
Так что ли?

>Конечно, это плохая идея, копипастить код, так как потом тебе придется делать правки в нескольких местах
>ты бессмысленно увеличиваешь объем кода.
Ясно - это троллинг такой. Я не поверю, что кто-то до сих пор переписывает код вместо того, чтобы скопировать нужный кусок и подправить под конкретную задачу.
Аноним 21/07/21 Срд 13:33:50 #742 №2102404 
>>2102372
>Такое количество страниц легко набирается
>лендинги
>промо-страницы
Проиграно.

Аноним 21/07/21 Срд 14:51:31 #743 №2102484 
>>2102395
>Я не поверю, что кто-то до сих пор переписывает код вместо того, чтобы скопировать нужный кусок и подправить под конкретную задачу.
Так ты любой проект похоронишь, постепенно увеличивая число багов и кол-во времени на доработки. А кодовая база будет расти как на дрожжах
Аноним 21/07/21 Срд 15:16:52 #744 №2102519 
>>2102484
Джун, иди и посмотри любую библиотеку на гитхабе - там в документации специально примеры для копипасты существуют.
И больше не рассказывай тут про баги и время доработки - смешно выглядишь.
Аноним 21/07/21 Срд 15:23:52 #745 №2102528 
>>2102519
Анон выше говорит про копипаст уже существующего твоего кода, и подпиливания под новое требование, а ты про копипаст пяти строчек из примеров разных либ, это вообще разные случаи
Аноним 21/07/21 Срд 15:29:58 #746 №2102542 
>>2102528
>Анон выше говорит про копипаст уже существующего твоего кода
Давай ты не будешь за меня выдумывать что я там говорил?

Копипаст кода из документации или когда кто-то решил схожую проблему это нормальное явление. Требовать чтобы код переписывали вручную - дурость. Как и рекомендация прописывать команды гита вручную - к обучению самому гиту и его подводных камней это имеет самое отдалённое отношение.
Аноним 21/07/21 Срд 15:38:59 #747 №2102561 
>>2102542
>Требовать чтобы код переписывали вручную - дурость
Про это никто не говорил.
Есть у тебя в методе кусок кода, который хочешь заюзать в другом месте.
Копипаста в этом случае - взять этот кусок кода и вставить куда надо.
Не копипаста - вынести этот кусок кода в отдельный метод, добавить в исходный и туда, куда тебе надо.

Это в простейшем случае.
Бывает такое, что копипасту приходится терпеть, т.к. не заложили достаточно времени на проработку решения. Соответственно техдолг растет
Аноним 21/07/21 Срд 15:56:25 #748 №2102584 
>>2102561
>вынести этот кусок кода в отдельный метод, добавить в исходный и туда, куда тебе надо
Не всегда целесообразно выносить кусок кода в метод или библиотеку. Только бойлерплента может выйти в разы больше.

Ты не совсем понимаешь что такое копипаста в контексте разработки. Одно дело, когда 10 строк у тебя на проекте то тут, то там мелькают - тогда надо убирать куда-то, и другое, когда время от времени на разных проектах эти строки мелькают - для такого библиотеку городить это уже показатель скуки и большого количества свободного времени.
И совсем уже третье это когда у тебя декларативный язык - тот же HTML например. Ну убери давай Бутстрап-компоненты в метод, чтоб без копипасты. Тут народ уже просто сниппеты юзает без задней мысли, что по-сути является аж целой автоматизацией копипасты.
Аноним 21/07/21 Срд 17:39:07 #749 №2102704 
Может тут кто знает:
Есть ли способ заставить запущенные докер-контейнеры ходить в интернет через впн запущенный на хост-машине?
Аноним 21/07/21 Срд 19:05:39 #750 №2102851 
Я этот >>2094060

>>2094072
>>2094090
>>2094143
>>2094201
>>2094714

Ебать вы токсичные, пиздец. Кстати, двух недель не прошло и меня выгнали. Сказали, что я недостаточно квалифицирован. Откуда я мог знать, что нужно знать git, rest, api, ajax, JavaScript, css, html, всякие babel, jquery и прочие аббревиатуры, которые я даже не запомнил. Мало того ещё нужен макбук и уметь в линуксе работать. Я маки с линуксом в глаза никогда не видел. Вынесли мозги какими-то докерами, виртуализацией, вагрант... вы реально это всё знаете??? Только без пиздежа, пожалуйста.
Аноним 21/07/21 Срд 19:23:54 #751 №2102875 
>>2102851
Сколько тебе зп то пообещали за макакинг джуном фулстеком?
все что ты перечислил кроме жопаскрипта и ксс учится за сутки
Аноним 21/07/21 Срд 19:34:08 #752 №2102889 
>>2102851
Скажу по себе
>git, rest, api, ajax, JavaScript, css, html, всякие babel, jquery
>докерами, виртуализацией, вагрант

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

rest - там 5 методов всего и пара рекомендаций, можно пару статей прочесть, станет понятно, что за зверь

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

ajax - способ сделать запрос из жс к твоему или внешнему бекенду и получить ответ, надо знать, там несколько методов всего (в нативном жс и в жиквери)

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

babel - это необзяательно, на месте разберешься, какая там сборка жс

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

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

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


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

Я из этого только бабелем не пользовался и вагрантом.
Аноним 21/07/21 Срд 20:09:05 #753 №2102935 
>>2102875
Меня на собесе спрашивали про знание языка, про алгоритмы, про разные хитрости навроде отличия print от echo, про базы данных. Обещали чистыми 30к. Взяли на должность младшего разработчика. Говорили про джуна бэкэнд.

В первый же день такая оказия вышла. Посадили за стол, а на нем только моники. Я коллег спрашиваю мол как работать то, а они ебала вытянули и гогочат что куропатки. Через пол часа какой-то ушатанный комп притащили, сказали, чтобы я со своим ноутом приходил. Блядь, у меня ноута нет. Показали confluence, jira. Там «тикеты». «Роудмап» показали, работают agile. Что блядь? чо к чему... Блядь, это пизда просто. Я даже не думал, что настолько выебут мозг.

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

Я ЕБУ БЛЯДЬ КАК ЭТОЙ ЗАЛУПОЙ ЕБАНОЙ ПОЛЬЗОВАТЬСЯ??? Я пришел код писать, баги править. Ну короче вчера утром меня рассчитали. Грустно до соплей. Но объём знаний ебанись какой. Я вот даже и не знаю чо дальше делать.
Аноним 21/07/21 Срд 20:15:05 #754 №2102942 
>>2102889
Нихуя. Как ты этим всем владеешь?! Я вообще не понимаю ни хуя. Я на ютубе начал смотреть про виртуализацию и тупо поплыл. Скачал virtualboz , установил в него линукс минт, пишут, что он для новичков самое то. А чо с ним дальше делать я хз. Как там программы ставить? Я качаю дистрибутивы с оф сайтов mysql/php — пишет не может установить, предлагает какую-то программу поставить для запуска win32 приложений. Я поставил эту программу, вроде установил. Ярдыков для запуска нет, структура диска не такая как в винде, как там ориентироваться в душе не ебу.

Про гит почитал, но так и не понял про ветки и прочее. Рили надо знать? Неужели он так строго нужен? Почему в виде комментария на той джире не принимают?
Аноним 21/07/21 Срд 20:40:30 #755 №2102963 
>>2102935
>>2102942
Ты жирный? Че за хуйню ты несёшь?
Аноним 21/07/21 Срд 20:49:27 #756 №2102970 
>>2102851
Ну да, все это надо знать. А в некоторых конторах надо еще и начальнику в жопу по понедельникам и пятницам давать.
На хорошем проекте (там битрикса не будет) постараются разделить бек и фронт: тогда бек точно сможет забыть про babel, но jquery, возможно, все-равно понадобится.
А вот наезды на девопс менее оправданы: от виртуалок, лиуксов и докеров никуда не деться.
Гит, рест, апи, Аякс Великий - это база, без этого совсем никуда. Последние три учатся меньше чем за день.
>>2102935
>Попросил коллег
За редким исключением, программистишки - тупые токсики, по-сути, нихуя не знающие и не умеющие: Вероника все по-фактам разъяснила в соответствующем видео.
Мимовыкатился после двух лет.
Аноним 21/07/21 Срд 20:49:57 #757 №2102971 
>>2102942
Похоже, кодинг - не твоё.
Тут нужно уметь копнуть глубоко, разобраться в проблеме, если не шаришь

>Как ты этим всем владеешь?!
Постепенно осваивал инструменты один за другим, практиковался

>установил в него линукс минт, пишут, что он для новичков самое то. А чо с ним дальше делать я хз
Попробуй поднять на нем веб сервер nginx+php-fpm, настроить в nginx чтобы на твой сайт вел локалхост. Гайдов как это сделать тонны.

>Как там программы ставить?
Троллишь? Погугли

>Я качаю дистрибутивы с оф сайтов mysql/php — пишет не может установить, предлагает какую-то программу поставить для запуска win32 приложений
Ну ты совсем необучаемый. Не думал, что на лине софт по другому работает?

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

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

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


Тебе явно рано на работу
Аноним 21/07/21 Срд 20:54:33 #758 №2102976 
Если мне надо сделать несколько разных селектов из бд, стоит ли все функции PDO для такого запроса prepare, execute, fetchAll обернуть в отдельную функцию и вызывать уже её, вместо того, чтобы каждый раз прописывать все это в коде?
Аноним 21/07/21 Срд 21:35:23 #759 №2103009 
>>2102851
>Откуда я мог знать, что нужно знать git, rest, api, ajax, JavaScript, css, html, всякие babel, jquery и прочие аббревиатуры
Интересно чем ты 7 лет занимался. Хелловорлды писал что ли?
Аноним 21/07/21 Срд 21:54:50 #760 №2103021 
Допустим я сделал свой сайт и хочу добавить его в портфолио, подскажите пожалуйста, как мне это сделать? Не буду же я деньги платить чтобы это говно на хостинг поставить.
Аноним 21/07/21 Срд 22:50:06 #761 №2103067 
>>2103009
Читал книги по РНР, по алгоритмам очень много времени заняло, в районе 5 лет, потому что пришлось вспомнить алгебру, со всеми этими функциями и прочим. Писал конечно же код, только вместо гита я использовал структуру папок - 0.01, 0.02 и т.д. Как по мне это удобнее, чем гит.

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

Хелло ворлды конечно тоже писал, но не как вордпресс. Я так не напишу. Ядро движка мне пока что не под силу, да и думаю в одиночку такое никто не пишет.
Аноним 21/07/21 Срд 22:50:42 #762 №2103069 
>>2102963
Либо перечитай внимательно, либо иди на хуй
Аноним 21/07/21 Срд 22:55:10 #763 №2103072 
>>2102971
Да что там код собирать-то? Из джиры комментарий в конфлюэнс улетает, тикет закрыт - приходит уведомление, открыл его, увидел, что комментарий есть, оттуда скопировал код и вставил в проект, чего сложного то? Хули тогда старший прораб делать будет?

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

Я поставил арасне2 и mysql, на винде этой же связкой пользовался, очень удобный сервер, nginx не понимаю как настраивать.
Аноним 21/07/21 Срд 23:26:17 #764 №2103082 
>>2103067
>Читал книги по РНР, по алгоритмам очень много времени заняло, в районе 5 лет
Сдаётся мне, что ты балду пинал по большей части.

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

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

>Ядро движка мне пока что не под силу, да и думаю в одиночку такое никто не пишет.
Тут каждый начинающий вкатывальщик, написавший тех же студентов из ОПпоста делает свой примитивный движок. Просто надо не книжки читать, а делать.
Аноним 22/07/21 Чтв 01:24:55 #765 №2103129 
16260028952230.jpg
>>2102935
>>2102851
Зелёная жирнота не палится.
не ну конечно на земле миллиарды человек и такие тоже бывают но бля тебя же слог выдает
Аноним 22/07/21 Чтв 01:59:02 #766 №2103146 
>>2103072
>Да что там код собирать-то? Из джиры комментарий в конфлюэнс улетает, тикет закрыт - приходит уведомление, открыл его, увидел, что комментарий есть, оттуда скопировал код и вставил в проект, чего сложного то?
Старшему делать больше нехуй, как за стажером код подбирать. Никто код руками не копирует, всё делается через гит.

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

>nginx не понимаю как настраивать
На винде его не поставишь. Ставь линь, либо виртуалку (всл или докер)
Аноним 22/07/21 Чтв 01:59:50 #767 №2103147 
>>2103129
Хоть какое-то подобие общения. А то пхп тред тухнет
Аноним 22/07/21 Чтв 02:00:18 #768 №2103148 
>>2103129
Слог у меня такой какой есть. В чём жирнота? Я учился на backend php developer, а требуется куча технологий знать. Попробую за пол года освоить виртуалки, линукс, и другое. Посмотрим, что выйдет.
Аноним 22/07/21 Чтв 02:03:02 #769 №2103149 
>>2103148
Вот серьезно, пока ты 5 лет хуйней страдал, я эти 5 лет работал на проде, повидал всякого
Аноним 22/07/21 Чтв 02:08:42 #770 №2103152 
>>2103082
Что значит балду пинал? Я нигде не писал, что 24/7 занимался. Это тупо нереально. Да и вообще более 2-3 часов в день нереально учиться. Да и возраст у меня уже не малый, я успел женится, двух детишек жена подарила, правда и развестись успели, но то моя вина, долго не мог вкатиться.

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

Касаемо проектов, в шапке я видел, но мне они показаилсь скучными и я решил не делать их. Мне понравилось работать с растровой графикой. Особенно когда вводишь текст в форме, а тебе генерируется изображение с введеным текстом. Рисовать неудобно, но прикольно. Свой аналог капчи придумал, почти как на дваче. ~70% задач решил по программированию из сборника задач. На код варсе несколько задач решил, литкод пробовал. Всё не упомнишь, что писал. Думаешь стоит порешать задачи из оп поста?
Аноним 22/07/21 Чтв 02:09:57 #771 №2103154 
>>2103149
Ну молодец, чо. У каждого своя судьба.
Аноним 22/07/21 Чтв 07:50:08 #772 №2103191 
>>2103152
Вот все сидел читал, а тут промолчать не могу.

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

Я согласен с ребятами - скорее всего, прога сейчас просто не твое.
Аноним 22/07/21 Чтв 11:21:32 #773 №2103395 
>>2103152
>Касаемо проектов, в шапке я видел, но мне они показаилсь скучными и я решил не делать их
Думаешь на работе тебе, недостажеру, дадут интересные и уникальные задачи?
Задачи из шапки можно как минимум сделать с нуля, выбрать под это фреймворк, бд и остальной стек. Редко где тебе дадут начинать новый проект и выбирать технологии. Придешь на работу, а там "тут у нас древний проект на yii1, поднимай у себя локально, через час кину тебе задач на багфикс"
Аноним 22/07/21 Чтв 11:23:20 #774 №2103396 
>>2103152
>Мне понравилось работать с растровой графикой. Особенно когда вводишь текст в форме, а тебе генерируется изображение с введеным текстом
Тогда ты попал не в тот стек. Php - бекенд язык, с графикой на нем практически не работают. Максимум пожмут загружаеме картинки, чтобы грузились быстрее.
Аноним 22/07/21 Чтв 13:26:03 #775 №2103470 
>>2102103
> возможно, у тебя в $this не элемент, а всё окно целиком -- проверь.
>>2102367
>При клике в this будет не tr, а элемент, на который кликнули, наверно в этом дело?
В .on(events, [selector], [data], handler) я в качестве селектора передаю .elem, соответственно фильтроваться будет только по этим элементам и >обработчик будет срабатывать только в том случае, если событие «поднялось» от одного из отфильтрованных элементов.
А через let id = $(this).attr('id'); я получаю id из атрибута элемента. С чего там вообще должен быть какой-то другой элемент? Но дело не в содержимом, так POST вообще не приходил.
Немного поменял, теперь id получаю так:
$('.elem').on('click', function(e){
var id = $(this).attr('id');
отправляю
}
И теперь POST приходит, вместе с id, но в index.php ни if (!empty($_POST)), ни if (isset($_POST['id'])), ни if (!empty($_POST['id'])) не видит содержимого, хотя в network в form data приходит id, почему вообще так может происходить?
Аноним 22/07/21 Чтв 15:23:30 #776 №2103564 
Ребятушки всем привет, может кто нибудь подробно объяснить в чем сакральный смысл связки nginx + apache. На многих хостингах и сайтах встречаю такую связку где nginx отдает статичные файлы, а обработка пыхи идет уже через апач. Но вот понять в чем смысл такой связки и в чем профиты не могу.
Аноним 22/07/21 Чтв 16:58:05 #777 №2103672 
>>2103470
>И теперь POST приходит, вместе с id, но в index.php ни if (!empty($_POST)), ни if (isset($_POST['id'])), ни if (!empty($_POST['id'])) не видит содержимого, хотя в network в form data приходит id, почему вообще так может происходить?

Так может произойти, если Content-type запроса не application/x-www-form-urlencoded или multipart/form-data. Если у тебя там application/json, то нужно совершенно по другому данные вытягивать, обрати на это внимание
Аноним 22/07/21 Чтв 20:31:15 #778 №2103851 
>>2103672
Так network также говорит, что это Content-Type: application/x-www-form-urlencoded; charset=UTF-8
При этом if($_SERVER["REQUEST_METHOD"] == "POST") тоже не видит post...
Аноним 23/07/21 Птн 02:41:26 #779 №2104110 
>>2102976
да
Аноним 23/07/21 Птн 02:43:50 #780 №2104111 
>>2103072
>>2103146
Кстати, с ужасом узнал, что Jira перестали делать дешёвый standalone сервер, да ещё и стоить стала больше на НДС.

Шо делать?
Аноним 23/07/21 Птн 02:45:00 #781 №2104112 
>>2103564
У apache есть модули, которых нет у nginx.

Например, на вирт.хостинге нужно дать клиентам тот же mod_rewrite с управлением через .htaccess
Аноним 23/07/21 Птн 10:54:59 #782 №2104233 
>>2103564
Давно читал что апащ быстрее обрабатывает пхп чем нжайнкс и поэтому имеет смысл их в связке использовать. На сколько это верно было тогда и на сколько верно сейчас я хз.
Аноним 23/07/21 Птн 11:03:32 #783 №2104243 
>>2094060
>>2102851
>>2103067
>>2103152
Как на эту жирноту вообще можно повестись?
Аноним 23/07/21 Птн 11:48:21 #784 №2104279 
>>2104112
>>2104233
tnks
почему тогда не использовать один апач?
Аноним 23/07/21 Птн 12:15:58 #785 №2104314 
>>2104279
Нжнкс вроде быстрее статику отдает.
Аноним 23/07/21 Птн 14:25:12 #786 №2104430 
>>2104279
>>2104314
Один апач сильно медленнее
Аноним 23/07/21 Птн 18:14:15 #787 №2104739 
Ответьте мне всего на один вопрос, почему пыхапе, а не питон?
Аноним 23/07/21 Птн 18:21:57 #788 №2104742 
>>2104739
А почему не нода?
Аноним 23/07/21 Птн 18:25:35 #789 №2104746 
>>2104742
С нодой понятно, чтобы на нее скакнуть сначала надо стать вротендером
Аноним 23/07/21 Птн 18:32:57 #790 №2104755 
>>2104739
>почему пыхапе, а не питон?
А почему питон?
Аноним 23/07/21 Птн 20:09:28 #791 №2104842 
>>2104746
>сначала надо стать вротендером
Зачем? Бекенд на ноде это именно бекенд. Редкий пхпшник с нодой дела не имел.
Аноним 24/07/21 Суб 08:28:31 #792 №2105021 
dadasdw.png
Почему у меня в командной строке когда я прописываю php artisan serve, я теряю над ней контроль и не могу больше писать. А у тех по чьим видосам я начал учить лару, у них ничего такого не происходит.
Аноним 24/07/21 Суб 09:01:43 #793 №2105025 
>>2104243
>>2103129
А я хочу верить, что этот тип реальный, а не зеленый. Просто хочется в это верить.
Аноним 24/07/21 Суб 11:19:26 #794 №2105098 
>>2105021
>php artisan serve
start php artisan serve - откроет новое окно.
Аноним 24/07/21 Суб 11:21:44 #795 №2105101 
>>2105021
Потому что не страдай хуйнёй, и ставь уже локальный вебсервер nginx или apache. Все эти встроенные-от лукавого.
Аноним 24/07/21 Суб 15:05:31 #796 №2105290 
Как из бд pg вывести boolean?
Вывожу: CASE WHEN accepted=true THEN 'Да'
WHEN accepted=false THEN 'Нет'
END
и получаю Undefined variable. C 1/0 то же самое.
Аноним 24/07/21 Суб 15:09:09 #797 №2105292 
>>2105290
А, всё, забыл AS хуй в конце.
Аноним 24/07/21 Суб 18:55:20 #798 №2105527 
Помогите раку. Перепробовал уже хуй знает сколько способов, и честно сказать в смятении.

Суть простая: я передаю данные с формы через fetch в файл .php. При print_r (или var_dump, неважно) $_POST показывает пустой массив. НО - на страницу с JS приходят обработанные данные в виде массива. Точно так же если я через .php запихну приходящие данные в текстовый файл, они там также появятся.

То есть данные приходят, но .php отказывается мне их выводить непосредственно У СЕБЯ. $_POST "типа" пустой, но он блять по факту не пустой как бы, раз данные приходят и уходят.

Где я туплю? Может быть, в .php и не получится выводить? Помогите плз.

Аноним 24/07/21 Суб 19:03:34 #799 №2105537 
>>2105527
В дополнение. Могу вывести данные в другой .php файл тоже. То есть получается, что .php файл, на который приходит запрос, является чисто обработчиком-посредником, или как?
Аноним 24/07/21 Суб 19:15:35 #800 №2105554 
>>2105021
Ну так открой новое окно в чем проблема
Аноним 24/07/21 Суб 20:03:51 #801 №2105579 
>>2105101
Лучше линукс и докер.
Аноним 24/07/21 Суб 21:23:50 #802 №2105664 
>>2105579
Чем лучше? Образами по 9гб для элементарных вещей? Хипстерская погань, мало имеющая отношение к разработке - это к девопсам.
Аноним 24/07/21 Суб 23:04:18 #803 №2105808 
>>2105664
Как скажешь, борщехлеб.
Аноним 25/07/21 Вск 01:02:53 #804 №2105886 
>>2102851
> git,
Это для всех разработчиков святая святых, но достаточно знать базовые команды
> rest, api,
Я не уверен что битриксоидам это требуется знать, я полгода с этим говном работал и там не использовалось. REST API это такия методолгия, больше подойдет для микросервисной архитектуры и бэка для мобилока и фронта на всяких реактах
> ajax,
2,5 функции на жабаскрипте
> JavaScript, css, html,
Для веба нужно знать обязательно
> babel,
Тут особо знать не нужно, он нужен чтобы скомпилировать новый js в старый код чтобы его поняли все браузеры, обычно в вебпаке подключается
> jquery
В битриксопарашах используется повсюду, тебе лишь нужно знать ajax и суметь подключить библиотека с анимашками, слайдерами.
> вы реально это всё знаете???
Да и намного больше чем это все
Аноним 25/07/21 Вск 01:50:29 #805 №2105901 
>>2105886
Есть какие-то материалы по Битриксу? Как его изучают вообще - он же платный.
Хотел бы оценить его для общего развития такскать.
Аноним 25/07/21 Вск 02:44:47 #806 №2105905 
>>2102851
> нужен макбук
Ты конечно ещё до этого перетолстил, но это уже ни в какие ворота.

Тебе только на второй недели работы сказали, что нужен макбук?
На кой хуй он блять может быть нужен?
Аноним 25/07/21 Вск 12:47:06 #807 №2106116 
>>2105579
Это уже для более серьёзных проектов(но мне WSL для этого хватает).
Для изучения фреймворка докер-оверкилл.
Аноним 25/07/21 Вск 14:00:44 #808 №2106220 
>>2105901
Оф документация. Но оно тебя сожрет
Аноним 25/07/21 Вск 15:53:40 #809 №2106316 
>>2105901
По сути это только официальная документация которая на пару лет отстает, но обычно в битриксгалеры берут всех с улицы кто может чуть-чуть по фронтенду и чуть-чуть в пхп. Скорее всего тебе через месяц другой придется сдавать первый экзамен https://academy.1c-bitrix.ru/certification/exams.php так что можешь сразу попробовать поделать эти задания. Бесплатно можешь 30 дней юзать локально, потом либо переустановить, либо расшифровать файлик include.php и там подшаманить и получить демку навсегда, в гугле есть все.
Но прям с головой советую не окунаться в эту хуйню, а потихоньку дрочить лару и реакт или ву.жс иначе есть риск остаться сантехником в мире программистов и всю жизнь ковыряться в унитазе. Я когда шел туда знал что битрикс это говно, но чтобы это было настолько сильным говном я не ожидал. И большинство задач будут в стиле передвинь этот блок, добавь новое в админке и выводи оттуда текст и прочая хуйня усложненная тем что твои коллеги до этого делали наотъебись.
Аноним 25/07/21 Вск 16:11:12 #810 №2106347 
Снимок экрана от 2021-07-25 15-55-10.png
Снимок экрана от 2021-07-25 15-57-18.png
Снимок экрана от 2021-07-25 15-58-23.png
>>2106316
Чуть не забыл есть же охуенный курс https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y с не менее охуенным цитатами разработчиков)
Аноним 25/07/21 Вск 16:43:01 #811 №2106384 
>>2106347
Второй пик впечатляет.
Аноним 25/07/21 Вск 17:39:41 #812 №2106433 
>>2106347
Тоже кекнул со второй.
Аноним 25/07/21 Вск 17:40:59 #813 №2106436 
>>2106316
Ок, пасиба.
Аноним 25/07/21 Вск 22:36:01 #814 №2106785 
>>2062494 (OP)
Какой SAPI лучший по производительности? Не гуглится сравнение с ReactPHP/Rachet и другими вариантами работы с постоянными соединениями. Почитал о внутреннем устройстве PHP, но так и не понял разницу в способах запуска PHP-FPM с другими вариантами. Не понимаю как PHP обрабатывает много запросов. Из за этого не могу понять как его лучше использовать.
Аноним 25/07/21 Вск 22:55:58 #815 №2106798 
>>2105527

> Суть простая: я передаю данные с формы через fetch в файл .php. При print_r (или var_dump, неважно) $_POST показывает пустой массив.

А как ты просматриваешь результат? В инструментах разработчика? Если нет, то конечно оно работать не будет.

Скорее всего ты либо как-то не так вызываешь скрипт. Либо просто опечатался, например, написал $POST вместо $_POST.

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

fprintf(STDERR, "POST = %s\n", json_encode($_POST));

и сообщение выведется в ту консоль, где запущен веб-сервер.
Аноним 25/07/21 Вск 23:03:09 #816 №2106800 
>>2106785

Чтобы объективно сравнивать, надо либо делать бенчмарки, либо найти готовые.

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

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

php-fpm работает так: он запускает определенное количество процессов-работников (оптимальное количество настраивается в конфиге вручную). Затем он принимает от nginx запросы по протоколу FastCGI и распределяет их по работникам. Работников должно быть больше, чем ядер процессора, раза в полтора-два-тьри. Один работник может за свою жизнь обработать много запросов, но по очереди, по одному за раз. Работник однопоточный и использует максимум одно ядро. Поэтому их должно быть много. Но не слишком - иначе ресурсы будут уходить на переключения между ними.

Если есть конкретные вопросы, уточняй.
Аноним 25/07/21 Вск 23:10:04 #817 №2106801 
>>2105021

Это принцип работы командной строки - пока выполняется одна команда, нельзя набирать или выполнять следующую. Более того, команда php artisan serve выводит логи и они бы мешали тебе выполнять другие команды.

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

Если ты хочешь прервать работу сервера, то используй Ctrl + C.

>>2105101

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

Аноним 25/07/21 Вск 23:22:45 #818 №2106805 
>>2104739

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

В Питоне есть Доктрина? Абстрактные классы и интерфейсы? Проверка типов в рантайме? Да и он мягко говоря небыстрый. Хотя я для своих дел иногда использую: jupyter notebook, numpy, sympy и другие вещи.

>>2104233

Это неверно. Nginx не "обрабатывает" PHP-код, а перенаправляет запросы к Апачу или php-fpm.

>>2103564

Возможно совместимость со старым кодом, который использует, например, htaccess файлы.

>>2104279

Потому что Апач не очень эффективно работает с медленными клиентами.

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

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

Нгинкс решает эту проблему - он очень быстро принимает ответ от Апача и потом не спеша отдает пользователю. При этом нгинкс параллельно с отдачей ответа обслуживает и других пользователей.
Аноним 25/07/21 Вск 23:31:32 #819 №2106808 
>>2103851

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


Аноним 26/07/21 Пнд 00:14:34 #820 №2106828 
>>2106800
>Если ты готов писать свой сервер, то ты можешь написать его, но надо будет запустить много процессов, чтобы они могли загрузить все ядра процессора
Зачем много процессов? Конкурентный код в одном процессе, даже в одном потоке может исполняться на нескольких ядрах.

>Без запуска множества процессов у тебя будет лишь один процесс, нагружающий лишь одно ядро.
Можешь объяснить почему? Если код состоит из 100 чистых функций, то ОС же может конкурентно исполнять этот код на нескольких ядрах.

>php-fpm
Все таки он не так уж хорош по производительности и ресурсоемкости.

>>2105021
>Почему у меня в командной строке когда я прописываю php artisan serve, я теряю над ней контроль и не могу больше писать.
Потому что ты запустил задачу в процессе ОС, он заблокирован для дальнейшего введения инструкций пока задача не выполнится.
Аноним 26/07/21 Пнд 11:26:30 #821 №2107103 
Использование $_REQUEST или $_SERVER депрекейтед. Чем их заменить?
Аноним 26/07/21 Пнд 11:30:44 #822 №2107110 
>>2106808
F12 -> network -> нужный файл -> headers/preview
Аноним 26/07/21 Пнд 11:40:00 #823 №2107126 
>>2107103
>$_REQUEST или $_SERVER депрекейтед
Хуя себе новости, кто скозал?
Аноним 26/07/21 Пнд 11:44:56 #824 №2107132 
>>2107126
Та не, всё в порядке, просто я долбаеб. Идея ругается "Deprecated global variable usage" как тогда их правильно использовать, если внутри функции нельзя? https://www.php.net/manual/ru/language.variables.predefined.php
Аноним 26/07/21 Пнд 12:03:05 #825 №2107156 
>>2106828

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

Нет. Ты не понимаешь, что такое процесс и поток и как работает процессор.

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

> 1) a = 1
2) b = a + 10
3) c = b x 2
....

Процессор исполняет команды в программе строго по очереди. И программа рассчитана на то, что ее будут выполнять последовательно. Например, у нас в программе команда 2 использует результат команды 1 (a). Соответственно, нельзя выполнить команду 2 до выполнения команды 1 или параллельно с ней.

Такое последовательное выполнение команд еще называют "поток исполнения".

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

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

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

1) a = b + 2 + c x 3
2) выполнить на втором ядре: d = b + 5 + с
3) e = a + d

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

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

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

Создание потока - это запуск второй копии программы в текущем процессе. То есть, мы говорим ОС "создай новый поток и пусть он выполняет команды, начиная с команды X". Второй поток будет видеть те же переменные, что и первый.

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

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

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

$a = func1();
$b = func2();

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

go func1();
go func2();
...

здесь функции func1 и func2 запустятся как бы "в фоне", и будут исполняться параллельно с продолжением работы основной программы. Но это работает за счет использования потоков. В программе Го запущено несколько потоков, которые ждут задач и когда мы делаем go func1, мы посылаем такому потоку команду "выполни функцию func1" и он начинает ее выполнять.

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

> Если код состоит из 100 чистых функций, то ОС же может конкурентно исполнять этот код на нескольких ядрах.

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

>>php-fpm
> Все таки он не так уж хорош по производительности и ресурсоемкости.

Пруфов и бенчмарков, конечно, не будет.
Аноним 26/07/21 Пнд 12:25:04 #826 №2107174 
>>2107110

Ты можешь попробовать поставить в скрипте var_dump($_POST); var_dump($_GET); var_dump($_SERVER); и посмотреть, что приходит в скрипт.

И еще, если ты используешь встроенный в IDE веб-сервер, то он может, например, не поддерживать POST.

>>2107132

Скорее всего причина в чем-то другом. Использовать эти переменные можно и они не устарели.
Аноним 26/07/21 Пнд 12:59:33 #827 №2107203 
>>2107132
Завернуть их на входе в объект реквеста и передавать куда захочешь.
Аноним 26/07/21 Пнд 13:04:13 #828 №2107206 
>>2107203
Можно разжевать, пожалуйста? только учусь
Аноним 26/07/21 Пнд 13:21:48 #829 №2107233 
>>2107156
>Процессор исполняет команды в программе строго по очереди. И программа рассчитана на то, что ее будут выполнять последовательно. Например, у нас в программе команда 2 использует результат команды 1 (a). Соответственно, нельзя выполнить команду 2 до выполнения команды 1 или параллельно с ней.
Это не так. Ты залез в процессор, но забыл, что между кодом и процессором есть ОС. Планировщик ОС может переключать исполнение на другие ядра. Не силен в ассемблере, но знаю точно, что его код можно выполнять конкурентно и даже параллельно. Это аппаратные конкурентность и параллелизм. Есть и программные конкурентность и параллелизм, реализуемые компилятором, интерпретатором или виртуальной машиной.

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

>То есть, программы на Го многопоточные и потому умеют параллельно выполнять код.
Многопоточность не равно параллельность.

>Пруфов и бенчмарков, конечно, не будет.
Погугли. RoadRunner и ReactPHP могут обработать в несколько раз больше запросов в секунду.
Аноним 26/07/21 Пнд 15:35:57 #830 №2107354 
>>2107233

Ты пишешь то, в чем не разбираешься.

> Планировщик ОС может переключать исполнение на другие ядра.

Может, но это ничего не меняет. Допустим, код 2 периода времени выполняется на ядре 1, а потом 2 периода времени выполняется на ядре 2. Что от этого поменяется? Производительность от этого не повысится, а даже чуть понизится (из-за расходов на переключение контекста. Они происходят, когда ядро переключается с выполнения одной программы на другую).

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

Ну так давай я тебе расскажу про ассемблер. В процессоре есть счетчик команд (в архитектуре x86_64 он называется rip), который указывает номер текущей команды. Каждый такт процессор берет команду по адресу rip, исполняет ее и увеличивает rip (условно) на единицу. Как ты в такой системе получишь параллельность? Она строго последовательная.

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

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

> Это аппаратные конкурентность и параллелизм.

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

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

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

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

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

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

> Погугли. RoadRunner и ReactPHP могут обработать в несколько раз больше запросов в секунду.

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

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

Также, я вижу, что ты даже не пытался разобраться в том, как работает RoadRunner, хотя в документации есть картинка: https://roadrunner.dev/docs/intro-about

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

Приложение на ReactPHP также нужно запускать в виде нескольких процессов, чтобы задействовать все ядра.
Аноним 26/07/21 Пнд 15:38:57 #831 №2107358 
>>2107233

И попробуй просто вчитаться внимательнее в слова. Поток - это (условно) последовательность команд, которые выполняет процессор. Если программа однопоточная, значит в ней один поток и в любой момент времени выполняется одна последовательность команд. И значит, она никак не может использовать два ядра.
Аноним 26/07/21 Пнд 15:56:15 #832 №2107376 
>$this->{'user:created_at'}

Увидел такое в коде класса, что оно делает? Чет не гуглится. Видимо тут идет обращение к полю user, который является объектом, и в нем считывается поле created_at, но это не точно. Причем в самом классе поля user нет, как нет его в трейтах и родительских классах и интерфейсах. Проект написан на Симфони.
Аноним 26/07/21 Пнд 15:57:16 #833 №2107378 
>>2107376
Полный код:

$userCreatedAt = $this->{'user:created_at'} ?? null;
Аноним 26/07/21 Пнд 16:11:13 #834 №2107396 
>>2107376
Ищи магические __set __get, всё там.
Аноним 26/07/21 Пнд 16:28:18 #835 №2107413 
>>2107396
Да вроде смотрел, тоже глухо. По всему коду буквально пара мест, где используются магические get/set и это не мой случай.
Аноним 26/07/21 Пнд 16:45:47 #836 №2107439 
>>2107413
>$this->{'user:created_at'}
Вот этот кусок это чтение или запись в поле user:created_at, но это невалидное имя если обращаться напрямую, его нельзя например вызвать как $this->user:created_at, поэтому приходится ебаться с подстановкой через строку, без кода непонятно нахуя там себе жизнь усложнять, но очевидно это было сделано не прям просто так
Аноним 26/07/21 Пнд 17:02:54 #837 №2107483 
>>2107376

Это просто такое имя свойства. Синтаксис такой:

$object->{выражение}

Например:

$object->{somefunc()}
$object->{'aaaa'}

То есть идет обращение к свойству с именем "user:created_at".

Как по мне, так какой-то изврат.


Аноним 26/07/21 Пнд 17:45:20 #838 №2107532 
>>2107354
>В процессоре есть некоторый "параллелизм", когда он может выполнить, например, две соседние команды одновременно, если они не зависят друг от друга и если исполнительные устройства свободны. Но ты этим не можешь управлять и это не позволяет выполнять параллельно две произвольные функции. Это можно не рассматривать.
Суперскалярность, SIMD, короче параллелизм на уровне команд. Погуглив и почитав разные статьи и отрывки из книг на английском, пришел к выводу, что есть много возможностей для конкурентного и параллельного исполнения. Но это сложная тема, в ней легко запутаться. Процессоры развиваются, появляются новые аппаратные и программные фичи, также и в ОС появляются новые функции. Только вот кажется, что большая часть языков программирования это не используют.

>В Го эти функции запускаются в отдельных потоках (Го многопоточный внутри) и будут исполняться параллельно при наличии свободных ядер.
Разве горутина создает поток ОС?

>>2107358
>И попробуй просто вчитаться внимательнее в слова. Поток - это (условно) последовательность команд, которые выполняет процессор. Если программа однопоточная, значит в ней один поток и в любой момент времени выполняется одна последовательность команд. И значит, она никак не может использовать два ядра.
Что ты понимаешь под потоком? Непонятно тогда что есть concurrency и асинхронность.
Аноним 26/07/21 Пнд 18:09:17 #839 №2107564 
>>2107354
>>2107358
Предположим, что один поток может выполняться только на одном ядре. Как тогда эффективно исполнять код чтобы не было блокировок и чтобы ядро было утилизировано на 100%? Node.js из коробки исполняется в одном потоке. В нем появились легкие потоки, но сейчас не о них. Node.js является concurrency системой? Да. Асинхронный? Да. Вопрос как? Как они это делают без потоков? Почему в пхп нет?

В некоторых языках реализуют concurrency and parallelism как библиотеку языка и довольно успешно. Например в Guile. Внимание вопрос, почему в PHP такой тухляк? Почему в документации толком не описано как PHP код исполняется на машине? Почему не описано как множество запросов обрабатываются одновременно? Почему в книгах этого нет? Почему разработчики об этом не говорят? Почему нет попыток что то написать для исправления ситуации? Вот я загуглил про Go и есть доскональные объяснения как это работает в нем. Как мне понять как это работает в PHP?
Аноним 26/07/21 Пнд 19:53:02 #840 №2107719 
>>2107532

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

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

Например, у нас есть программа:

1) c = a + b
2) d = e + f

В этой программе команды не зависят друг от друга (команда 2 не использует результат команды 1).

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

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

1) c = a + b, d = e + f

> SIMD

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

Все это не меняет того, что однопоточная программа использует одно ядро процессора.

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

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

> Разве горутина создает поток ОС?

Го при запуске (если не путаю) создает пул фоновых потоков. Эти потоки изначально просто ничего не делают и ждут команд. Когда встречается команда вроде

go func1()

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

> Что ты понимаешь под потоком?

Поток (thread) - это примитив операционной системы. https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%82%D0%BE%D0%BA_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F

> Непонятно тогда что есть concurrency и асинхронность.

Ну это ты эти понятия притащил, а не я.



Аноним 26/07/21 Пнд 20:22:18 #841 №2107756 
>>2107719
>Классический процессор выполнит их по очереди, затратив два такта.
Ты сказал?

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

Посмотри на Erlang. Та же история. Нет точки входа. Нет никаких инструкций. Нет состояния. Есть только выражения. Виртуальная машина сама все скейлит. К этому нужно стремиться. Нужно стремиться отходить от уровня абстракции ОС и процессора. Пусть компиляторы и виртуальные машины абстрагируют от этого уровня. Нужно писать код удобно для программиста, а не удобно для машины. Идиотизм подстраиваться под машину, пусть она подстраивается под человека. Для чего тогда нужны компиляторы и VM?

>Го при запуске (если не путаю) создает пул фоновых потоков.
Говорят, что типичная программа на Go состоит из тысяч горутин. Хочешь сказать, что Go создает тысячи тредов в ОС? Не поверю. У него же есть рантайм, он же не голый как Си. В Эрланге создают миллионы эрланг-процессов. Естественно виртуальная машина не создает для них миллионы тредов ОС. Все они абстрактные и живут в рантайме.

Если Node.js однопоточный и по твоему исполняется в одном ядре, то как на нем поднимают миллион вебсокет соединений?

https://alexhultman.medium.com/millions-of-active-websockets-with-node-js-7dc575746a01

Статью написал автор стека uNetworking Алекс Халтман https://github.com/uNetworking/uWebSockets.js. Их либы используют в биржевой торговле крупнейшие брокеры мира. Так как он может держать миллион активных соединений на одном ядре?

>Ну это ты эти понятия притащил, а не я.
Ты их игнорируешь. Они между прочим отвечают на вопрос как на одном ядре держать миллион или более соединений.
Аноним 26/07/21 Пнд 20:24:37 #842 №2107757 
>>2107564

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

Плюс - простота. Ты просто пишешь обычный последовательный код.

Этот подход по умолчанию использует php-fpm. Он запускает N рабочих процессов и распределяет HTTP-запросы между ними. Рабочий обрабатывает поступающие ему запросы строго по очереди, но рабочих много, потому одновременно обрабатывается несколько запросов.

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

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

А для ОС это выглядит как один постоянно что-то делающий не блокирующийся процесс.

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

Еще из минусов - писать асинхронный код менее удобно, чем синхронный, тем более что в PHP нет async/await. Впрочем, в новых версиях будут fibers, которые облегчат это: https://wiki.php.net/rfc/fibers

> В некоторых языках реализуют concurrency and parallelism как библиотеку языка и довольно успешно.

concurrency это "принцип". Как ты его реализуешь в библиотеке? В Guile мне разбираться лень.

> Почему в документации толком не описано как PHP код исполняется на машине?

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

> Почему не описано как множество запросов обрабатываются одновременно?

Потому что язык PHP не занимается обработкой запросов. Интерпретатор PHP лишь выполняет написанный в скрипте код. А вот запуском нужного количества копий интерпретатора, балансировкой запросов занимается php-fpm. Он подробно не описан, наверно потому, что предполагается, что разработчик знаком с моделью обработки запросов при помощи менеджера и множества работников.

> Почему нет попыток что то написать для исправления ситуации?

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

> Вот я загуглил про Go и есть доскональные объяснения как это работает в нем. Как мне понять как это работает в PHP?

Это потому, что в Го применен относительно новый принцип работы с потоками, а в PHP все работает по классической всем известной схеме.
Аноним 26/07/21 Пнд 20:24:40 #843 №2107758 
>>2107756
>https://github.com/uNetworking/uWebSockets.js.
В ссылке точка в конце приклеилась.
Аноним 26/07/21 Пнд 20:51:15 #844 №2107781 
>>2107756

Отвечая на твой первоначальный вопрос, про производительность, тебе нужно делать тесты и измерения на более-менее реалистичном бенчмарке. Померять php-fpm, сравнить с тем же Roadrunner и делать выводы.

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

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

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

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

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

> Нет никаких инструкций. Нет состояния. Есть только выражения.

Ну это уже вкусовщина. Мне, например, нравится последовательный код своей простотой и удобством чтения и написания. Это удобно для описания бизнес-логики. Мне нравится, что есть операторы if и циклы for и while и не надо, как в Хаскелле, имитировать цикл через рекурсию или как там принято. А адские функции вроде reduce это шаг в прошлое в сравнении с простым и удобным циклом foreach.

Если тебе нравится хаскелл - так просто пиши на нем, в чем проблема?

> Говорят, что типичная программа на Go состоит из тысяч горутин. Хочешь сказать, что Go создает тысячи тредов в ОС? Не поверю.

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

> Если Node.js однопоточный и по твоему исполняется в одном ядре, то как на нем поднимают миллион вебсокет соединений?

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

Например, если у него сетевое соединение 1 Гбит/с и это поделить на миллион соединений, то выходит всего лишь килобит/с (128 байт) на одно соединение. То есть данных там много не передается.

В такой ситуации однопоточная асинхронная модель подходит хорошо.

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

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

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

Твои два слова ни на что не отвечают, и ты сам толком не понимаешь их значения, и зачем-то притащил.
Аноним 26/07/21 Пнд 21:01:10 #845 №2107794 
>>2107757
>Плюс - простота. Ты просто пишешь обычный последовательный код.
А если нужен обмен данными? Тогда одни проблемы.

>Этот подход по умолчанию использует php-fpm.
Поэтому он никуда не годится. Процессы это дорого и не эффективно. Сколько времени нужно чтобы запустить процесс? Много. Сколько нужно памяти? Очень много. И снова проблема обмена данными. Это устаревший подход.

>concurrency это "принцип". Как ты его реализуешь в библиотеке?
Также как эвент луп внутри процесса. Существует много абстрактных математических моделей concurrency и parallelism, как реализовать это вопрос другой, реализуют как то же.

>В Guile мне разбираться лень.
Если интересно посмотри видео https://www.youtube.com/watch?v=7IcI6sl5oBc
Это инновационный подход. В мейнстим языках такого не найдешь. Зато никаких проблем. Еще об этом https://dl.acm.org/doi/10.1145/1596550.1596588

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

>Если ты программировал на Си или ассемблере, то ты и так понимаешь это.
Я тебя умоляю. На php в основном приходят без опыта программирования. Только единицы переходят в php уже имея опыт. И чаще всего этот опыт нерелевантный. Они в 80-90хх что то там писали. Сейчас процессоры и подходы изменились и поэтому они не в состоянии запилить для php ничего. Чувак системщик приходит в node.js и говорит, что он плохо написан. Берет переписывает сетевой стек и код начинает летать. Это я про https://github.com/alexhultman он вроде еще написал сериализатор json для Go, который в 3 раза быстрее стандартного, написаного в гугл. В php и близко нет таких звезд. Это или недоучки или старперы, которые под многоядерные процы не писали никогда и вообще не понимают как писать современный параллельный софт.

>Потому что язык PHP не занимается обработкой запросов. Интерпретатор PHP лишь выполняет написанный в скрипте код.
Что за глупость. PHP обрабатывает запросы. Он только это и делает и для этого создавался. Должно быть пояснение как код с разными SAPI будет работать. Это же не десктопная программа, запросы посылать могут тысячи пользователей одновременно. Как писать эффективно если это не описано? В общем php и его сообщество крайне непрофессиональны. Кроме как формы обрабатывать не о чем больше не пишут, а ты говоришь что то знают.

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

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

>Ну а ты сам не хочешь разобраться и написать серию статей?
Хочу, но не хочу лезть в код на Си. Мне проще изучать исходники Go, они понятней и написаны на самом Go. Его ассемблер также легко можно посмотреть. В php многое вообще не описано. Даже как писать расширения.

>Это потому, что в Го применен относительно новый принцип работы с потоками
Если не ошибаюсь он придуман в 80-х, когда PHP еще не было.
Аноним 26/07/21 Пнд 21:48:07 #846 №2107851 
15636242351243.jpg
>>2107794
>какая-то левая манька рассказывает пхпшникам про пхпшников
Ну тебе с дивана-то виднее.
Аноним 26/07/21 Пнд 21:56:27 #847 №2107863 
>>2107781
>Ты не согласен?
Кто сказал, что на тот код будет затрачено 2 такта?

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

Взять к примеру .NET Core. Его за 3 года так прокачали, что он работает наравне с c++ и раст. Помню в бенчах TechEmpower они уступали джавовому Netty раза в 2, а сейчас обходят его в 2 раза. Вот что значит написан с нуля. И хорошо написан и спроектирован грамотно.

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

>Код на Хаскелл тоже превращается в императивный последовательный ассемблер.
В Хаскеле есть мощный параллелизм и конкурентность, еще ленивость. Чтобы это все работало и код оптимизировался, нужно писать нормально.

>А адские функции вроде reduce это шаг в прошлое в сравнении с простым и удобным циклом foreach.
Ясно. Надо было сразу сказать. Что лучше, декларативное утверждение или императивная инструкция? Ты когда просишь жену приготовить тебе борщ, ты зачитываешь ей императивную инструкцию типа иди к холодильнику, открой дверцу, возьми мясо, положи в кастрюлю, залей водой...? Или говоришь просто приготовь борщ? Reduce это декларативное утверждение, сделай это или дай мне, или верни. Foreach это императивня инструкция, возьми это сделай с ним то, потом выполни это, потом... Разве не тупо? Зачем жить на уровне процессора если можно подняться на высшие уровни и писать декларативные утверждения. Взять к примеру html и css. Они очень удобны свой декларативностью. Не нужно вместо <h1> писать выведи в координатах x,y символы a,b,c в кодировке z цветом u и размером n.

>reduce это шаг в прошлое
Какой ужас. Не представляю как можно сделать такой вывод. Я тебе описал все выше. Это цикл устаревший тупой подход, а reduce это высокоуровневый объект. Это же очевидно.

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

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

>Твои два слова ни на что не отвечают, и ты сам толком не понимаешь их значения, и зачем-то притащил.
У меня есть понимание что это и как работает, а у тебя? Ты изначально все путал, называл конкурентную модель в Go параллельной. И еще мне говоришь, что я не понимаю. Просто смешно.
Аноним 26/07/21 Пнд 23:42:19 #848 №2107985 
За бугор уезжать не светит. Подскажите, что начать учить из фреймворков, на чем сделать акцент?
Аноним 26/07/21 Пнд 23:43:09 #849 №2107986 
>>2107985
Чтобы можно было найти работу для начала хотя бы за миску супа
Аноним 26/07/21 Пнд 23:46:08 #850 №2107988 
>>2107985
На 1с.
Аноним 26/07/21 Пнд 23:46:56 #851 №2107989 
>>2107985
Laravel либо symfony, все остальное - либо микрофреймворки, либо протухший кал вроде yii2, на котором только в пидорашке некоторые отсталые и жадные кабаны заставляют писать.
Аноним 27/07/21 Втр 12:36:41 #852 №2108259 
Примерные вопросы на стажёра php?
Аноним 27/07/21 Втр 12:48:33 #853 №2108274 
>>2108259
Сможете ли реализовать паттерн "Бочка", как в коворкинг входят, на какое кресло сядете, на какое тимлида посадите?
Аноним 27/07/21 Втр 12:52:11 #854 №2108279 
>>2108259
Спросят общие вопросы про образование, дадут тестовое задание. Ну это если они не набирают в стажеры 20летних людей с 15летним опытом работы
Аноним 27/07/21 Втр 13:12:10 #855 №2108297 
>>2108259
Солид, магические методы, паттерны, как http работает (что происходит, когда вбиваешь урл в строку браузера), скл запросы написать
Аноним 27/07/21 Втр 13:13:59 #856 №2108298 
>>2107863

> Думаю, что процессоры
> думаю, что большую часть не используют

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

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

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

> Кто сказал, что на тот код будет затрачено 2 такта?

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

> Reduce это декларативное утверждение, сделай это или дай мне, или верни. Foreach это императивня инструкция,

Reduce это костыль для языка, в котором нет циклов. Он снижает читабельность кода.

> Пхп даже 10к не сможет потянуть, даже пустых, неактивных.

Пруфов конечно не будет.
Аноним 27/07/21 Втр 14:59:13 #857 №2108389 
>>2062494 (OP)
Как самостоятельно научиться писать красивый код без говна?
Почитал это: https://refactoring.guru/ru/design-patterns
Почитал про KISS, SOLID.
Но все примеры, какие там используются я не могу применять на практике, на реальных задачах. Все равно код хуевый.
Я впадаю в уныние от этого.
Работаю один на дядю, ему насрать, какой я код пишу, лишь бы работало. Уходить от него не планирую, т.к. нормально денег платит.
Аноним 27/07/21 Втр 15:32:47 #858 №2108429 
>>2108389
Почитай Рефакторинг Фаулера.
Там описаны признаки плохого кода (code smell) и рецепты для избавления от него.
Для рефакторинга так же полезно покрывать код юнит и интеграционными тестами, чтобы знать, что твои изменения не ломают код.
Ну и 3 этапа написания кода:
1. make it work
2. make it clean
3. make it fast
Аноним 27/07/21 Втр 16:27:11 #859 №2108473 
>>2107439
Да, понятно, что само по себе это невалидное имя. Я так понял, что это просто упрощенная запись для доступа к полю класса, которого может в нем не быть, если в терминах js, то это было бы:

this.user?.create_at || null
Аноним 27/07/21 Втр 16:31:09 #860 №2108480 
>>2108298
>Я знаю ассемблер, и понимаю, как работает процессор.
Не знаешь, а знаком, в общих чертах. Мануал от intel с набором команд имеет размер более 2000 страниц. Не думаю, что ты знаешь новые оптимизирующие команды. Мало кто их вообще знает и использует.

>Reduce это костыль для языка
Ясно. У тебя дибилизм.
Аноним 27/07/21 Втр 16:34:07 #861 №2108487 
>>2108473

Нет, это именно поле с именем, в котором есть двоеточие. В JS это было бы this['user:created_at'] || null.
Аноним 27/07/21 Втр 16:53:08 #862 №2108513 
>>2108389

Есть еще другие принципы, например YAGNI, DRY.

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

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

Вот, на что стоит обращать внимание:

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

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

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

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

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

$userTable->setId(1234);
$userTable->findUser();
$user = $userTable->getResult();

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

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

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

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

Или ты решил обновить фреймворк на новую версию. Как проверить, что ничего не сломалось?

В общем, поищи советы про правильный код, читабельный код, поддерживаемый код.

А насчет паттернов беспокоиться не надо. Если ты не можешь их применить, значит они в этом месте не требуются. Отучайся мыслить черно-белыми категориями вроде "паттерны - хорошо, отсутствие паттернов - плохо".
Аноним 27/07/21 Втр 21:44:24 #863 №2108899 
>>2108389
>Все равно код хуевый
Покаж код. Субъективщина она такая - всякое может чудиться.
Ну и в целом всегда нужна конкретика, а вот это вот "как писать хорошо" оно для тех, кто одно и то же советует всем.
Аноним 27/07/21 Втр 22:00:28 #864 №2108929 
>>2108487
Ты прав. Нашел в коде одно место (сериализатор), где есть присваивание в это странное поле. Правда пока не понял, зачем именно такое имя, а не просто historyCreatedAt.
Аноним 27/07/21 Втр 22:11:30 #865 №2108952 
>>2108389
1. Ты либо радился очень мозговитым и быстро смекаешь
2. Работаешь в команде и смотришь как пишут другие.
3. Много пишешь сам. Либо по работе либо пет проекты.
Аноним 27/07/21 Втр 22:12:10 #866 №2108955 
>>2108952
> * Родился
Аноним 27/07/21 Втр 23:15:50 #867 №2109077 
>>2108389
>Почитал это: https://refactoring.guru/ru/design-patterns
Паттерны это культ карго. Забудь про них.
Аноним 27/07/21 Втр 23:18:13 #868 №2109082 
>>2108513
>не надо передавать данные в функцию или возвращать из нее обходными путями.
Что?

>Пример неправильной передачи данных:
>$userTable->setId(1234);
>$userTable->findUser();
>$user = $userTable->getResult();
Почему это неправильно?
Аноним 27/07/21 Втр 23:23:03 #869 №2109089 
>>2109082
>Почему это неправильно?
$userTable->findUser(int $id): User
будет проще, не?
Аноним 28/07/21 Срд 14:51:49 #870 №2109550 
>>2109082

Потому что менее явно, чем

$user =$userTable->findUser(1234);

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

$userTable->setId(1234);
..много кода..
$userTable->findUser();
...много кода ...

Аноним 28/07/21 Срд 15:54:47 #871 №2109698 
>>2109082
>$userTable->setId(1234);
>$userTable->findUser();
>$user = $userTable->getResult();

Рассмотри каждую строчку отдельно.
Понятно, что делает $userTable->setId(1234); ?
К чему относится id? Как он будет использован?
И если кто-то после этой строчки засеттит другой id, мы об этом не узнаем

$userTable->findUser();
На основе чего он ищет юзера?
Т.е. нам надо какой-то стейт сконфигурировать внутри объекта

$user = $userTable->getResult();
Что за результат нам вернется?
А если не было поиска?
А если в классе есть другие методы поиска, чей результат будет возвращен?


Подобный код порождает много путаницы. Чтобы им пользоваться, нужно знать внутренности класса, чего в хорошем ООП следует избегать.
$user =$userTable->findUserById(1234); - подобная запись однозначно говорит, что мы получим юзера из таблицы по его айди, либо null/exception, если юзер на найден
Аноним 29/07/21 Чтв 11:47:06 #872 №2110487 
>>2108279
>спросят общие вопросы про образование

У меня диплом филолога. Мои действия?
Аноним 29/07/21 Чтв 12:44:29 #873 №2110518 
>>2110487
Так и скажи.
Главное не в дипломе, а в голове - если увлекался IT, то делай упор на это. Если никогда не интересно было - что ты там забыл вообще?
Аноним 29/07/21 Чтв 14:02:48 #874 №2110648 
>>2110487
>спросят общие вопросы про образование
Вряд ли. Я конечно давно на стажерских собесах не был, но думаю, там спрашивают примерно то же, что и среднего разраба.

Конторе от стажера нужно, чтобы он в максимально короткие сроки вырос до джуна и ему можно было поручать простые задачи.
Тут будет плюсом написание пет проекта на стеке, который используют в конторе. Можно будет про него рассказать на собесе, показать код, обозначить трудные места и как с ними справился.
Аноним 29/07/21 Чтв 16:39:01 #875 №2110902 
собираюсь стать битриксоидом, что скажете? вакансий вроде много, вкат выглядит легким
Аноним 29/07/21 Чтв 16:47:45 #876 №2110914 
Помогите, как передать в pdo-запрос дату для сравнения с датой в таблице?
Вставляю String, пишет: "столбец "value" не существует ... LIKE value='202... ^"
Что здесь понимается под value? По идее это дата из таблицы, а справа дата, которую я передаю, но почему value не существует? Select я точно делаю правильно, и в записях тб поля с датой не пустые.
Аноним 29/07/21 Чтв 16:56:27 #877 №2110917 
>>2110902
Земля пухом.
Хотя бы посмотри внутренности битрикса для начала. Можно пробник скачать.
Если зайдет в таком говне ковыряться - велкам.

Только вот часто вижу вакансии, где с битрикса переписывают на лару или симфони, потому что невозможно поддерживать и дорабатывать это недоразумение
Аноним 29/07/21 Чтв 18:15:06 #878 №2111002 
>>2110914
Всё, решил это хуйню.
Аноним 29/07/21 Чтв 19:05:31 #879 №2111061 
Ребзи, что думаете о битииксе? Я ведь по адресу? Битрикс это же пыха?
Аноним 29/07/21 Чтв 19:30:19 #880 №2111089 
>>2110917
>с битрикса переписывают на лару или симфони
Для этого сам битрикс надо знать, нет?

Сам подумываю вкатиться потому, что берут почти с улицы. Знаю Лару, Симфу, докеры-хуёкеры, но нет опыта и поэтому меня не берут. Буду, значит, на Битриксе говно писать на работе, а дома уже на фреймворках.
Вот и получается, что у одних с говнокодом и Битриксом бизнес растёт, а другие супер-пупер-погроммисты настолько выёбистые, что никого себе найти не могут.
Аноним 29/07/21 Чтв 19:57:48 #881 №2111109 
>>2111089
>Знаю Лару, Симфу, докеры-хуёкеры, но нет опыта и поэтому меня не берут
Ну еблан значит. Надо было нарисовать опыта года полтора в рога и копыта.
Таким как ты дорога в битрикс

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

>Вот и получается, что у одних с говнокодом и Битриксом бизнес растёт, а другие супер-пупер-погроммисты настолько выёбистые, что никого себе найти не могут.
Битрикс - дешевая шлюха. В то время, как симфони - элитная эскортница, которую не каждый себе позволить сможет
Аноним 29/07/21 Чтв 19:58:52 #882 №2111111 
>>2111089
>Знаю Лару, Симфу, докеры-хуёкеры
проекты есть? на гитхабе разумеется. если нет, то ясно почему не берут, а если есть, то... то как ищешь? по всей России или только в своем мухосранске? если онли в своем мухосранске, то ясно почему не можешь найти...
Аноним 29/07/21 Чтв 20:37:01 #883 №2111128 
>>2111109
>Битрикс - дешевая шлюха. В то время, как симфони
Одни набирают людей практически с улицы на приемлемые деньги. Другие раздувают понты, выписывая в требования списки из 15-20 технологий даже на позицию младшего перекладывателя жсонов.

>>2111111
>проекты есть? на гитхабе разумеется
Какие ещё проекты? В одиночку ты ничего внятного кроме очередного блога\доски объявлений\тестовых не сделаешь. Дело даже не в опыте, а в отсутствии экспертизы в бизнесе.
Аноним 29/07/21 Чтв 20:52:11 #884 №2111147 
>>2111128
>Одни набирают людей практически с улицы на приемлемые деньги
Потому что стандартными подходами в битриксе не разобраться. Это большая куча дерьма, в которой одинаково неэффективен будет чел с вышкой и опытом разработки и чел с улицы. Поэтому и нанимают вторых, т.к. они по зп не притязательны.

>Другие раздувают понты, выписывая в требования списки из 15-20 технологий даже на позицию младшего перекладывателя жсонов.
Какие понты? Обычные собесы на веб инженегра. Или ты думаешь, что бекенд пилить это просто по кнопкам клацать?
Аноним 29/07/21 Чтв 20:53:31 #885 №2111151 
>>2111128
я их и имею в виду, очередной блог/форум, мне кажется, это и есть, что называется "пет-проджект", не? если у тебя нет, то ты так и скажи, чего злишься? бесишься, что я прав, что тебя не берут никуда из-за отутствия пет-проджектов? так если ты шаришь, то сделать такой кал не проблема, за неделю сделаешь и работу найдешь
Аноним 29/07/21 Чтв 21:19:35 #886 №2111199 
>>2111147
>Это большая куча дерьма
Да? Но на Симфони требуют 25 технологий, а на Битрикс хтмл, ЦСС и пхп.

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

>>2111151
>если у тебя нет, то ты так и скажи
>бесишься, что я прав
Был блог - я его снёс из своего гитхаба, ибо пошлятина. Мой последний пет это cms на Ларавел 8 с пакетами админки, чат-бота, готовой системой статей тот самый блог, готовым личным кабинетом пользователя, сделано на бутстраповском ui +15 тем под него. Делал 2 недели, где-то, по вечерам, раз-через-раз. Вот это я понимаю ПЭТ-проект - можно сесть и писать хоть доску объявлений, хоть онлайн-магазин, с поддержкой мессенджеров и прочего говна. А ты про "блог" спрашиваешь.
Аноним 29/07/21 Чтв 21:30:13 #887 №2111220 
>>2111199
>на Симфони требуют 25 технологий
Перечисли все 25

>Страдают всё равно кабанчики
Страдают разрабы, пытаясь вовремя закрыть все баги. А кабан продал битрикс и доволен
Аноним 29/07/21 Чтв 21:34:47 #888 №2111232 
>>2111220
>Перечисли все 25
Открой среднюю вакуху на хх и сам почитай. Все 30 пунктов будь добр выложи - и ходи по струнке перед синьором, который нередко сам тот ещё хуй моржовый.

>Страдают разрабы
Лучше страдать, но с работой, чем ходить и собеседоваться раз за разом к очередным веб инженерам с ЧСВ овер 9к. Забесплатно делая тестовые.
Аноним 29/07/21 Чтв 21:50:28 #889 №2111261 
>>2111199
>Делал 2 недели, где-то, по вечерам, раз-через-раз
Ещё сайтов с десяток есть разной паршивости - штуки 4 на вордпресс 2 на элементоре и 2 на чистом хтмл, всё самопильное - не на готовых шаблонах, 4 на Винтер\Октобер, и прочее по мелочи - всякое на Слиме\Люмен и несколько тестовых: апишки, парсеры rss с админками, система баланса на транзакциях делаю только интересные.
Аноним 29/07/21 Чтв 21:58:13 #890 №2111276 
>>2111261
жесть, как ты до сих пор не нашел работу? ищешь только в своем городе? или по всей России с переездом? не видел ответа на этот вопрос
Аноним 29/07/21 Чтв 22:11:48 #891 №2111292 
>>2111232
>Все 30 пунктов будь добр выложи
Шиз, у тебя пункты куда-то растут.
В средней ваке всего несколько пунктов: пхп, фреймворк, скл, докер

Мы тебя поняли, иди уже в свой битрикс
Аноним 29/07/21 Чтв 22:12:20 #892 №2111294 
>>2111276
У него явные проблемы с софтами и с головой
Аноним 29/07/21 Чтв 22:13:28 #893 №2111296 
>>2111232
Интересно, что ты скажешь, когда тебя даже на битрикс стажера за бесплатно не возьмут
Аноним 30/07/21 Птн 00:41:43 #894 №2111391 
В ларавельке сессии не сохраняются при рефреше, редиректе на другой сайт(при руте сохраняются), при die, exit. Хотя сессия должна сохранятся как минмум на какое-то время, все таки глобальное хранилище.
Пробовал сохранять через ->save(), через ::save(), ничего не помогает.
Никто не знает как пофиксть, что придумать\проверить?



Аноним 30/07/21 Птн 00:56:22 #895 №2111418 
>>2111391
В сейчас проверил, в папке хранилище сессия остается!
И не модифицируется, ничего.
В коде при редиректе обратно не обновляю сессию, я просто вызываю Сессию с нужным мне ключом. Но он возвращает пустоту, хотя явижу что файлик есть и там нужная мне инфа. Но он ее просто не достает.
Аноним 30/07/21 Птн 01:13:52 #896 №2111437 
>>2111418
О, вот еще интересное наблюдение которое ломает мне голову.
При редиректе обратно Сессия у меня не читается, так, в этом проблема. Хотя файл на месте.

Но при перезагрузке сайта и снова заходе на контроллер с сессий ОН ЧИТАЕТ данные прошлой сессии.

Я просто не понимаю как это работает, че за х. Сохранил. Вернулся с зеркала. Прочитал - не читает.
Перезагрузил. Читает.

У меня даже догадок нет. Я просто охуеваю.


Аноним 30/07/21 Птн 04:59:59 #897 №2111525 
Где здесь найти плагин для ларавель?
Аноним 30/07/21 Птн 05:00:17 #898 №2111526 
16.jpg
>>2111525
Аноним 30/07/21 Птн 12:42:31 #899 №2111872 
>>- Еще более сложная и долгая задача на Laravel/Symfony: https://gist.github.com/codedokode/8733007
>>Время выполнения: все зависит от тебя, но я бы смотрел на 4-6 недель

А за сколько миддл с опытов в несколько лет должен такое делать?
Аноним 30/07/21 Птн 15:45:39 #900 №2112096 
>>2111526
>Блокнотик вместо IDE
Аноним 30/07/21 Птн 17:19:45 #901 №2112192 
>>2112096
Я не он, но разве