«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #123 Аноним 2021/04/16 18:36:32  №1998470 1
php-noob-1.png (32, 500x500)
500x500
cat-cafe-osaka.jpg (140, 1024x683)
683x1024
welcome-to-php.png (187, 853x480)
480x853
cat-sad.jpg (194, 1024x768)
768x1024
Здесь мы изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Предыдущий тред был тут: >>1958281 (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? — Да, однозначно. Посмотри любую вакансию.
Важно Аноним 2021/04/16 18:37:44  №1998473 2
grammar.png (55, 500x644)
644x500
Код нужно писать аккуратно и оформлять, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на 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/
Аноним 2021/04/16 18:46:53  №1998480 3
Вопрос, вытекающий из последних постов прошлого треда. Давно не касался авторизации и вот этого всего, знаю, что сейчас есть стандарты и тд. Но может кто подскажет в паре слов, насколько старый вариант с md5 хэшем сейчас безопасен?
Ответы: >>1998506
Аноним 2021/04/16 19:28:48  №1998506 4
>>1998480
Какой старый вариант? Тебе сложно вместо md5() вызвать password_hash()?
Если использовать нормальную соль то md5 сложно взломать злоумышленику с ресурсами меньшими государственных. Но нет смысла ебаться с md5 когда у тебя из каропки password_hash и password_verify тупо всю хуйню делают за тебя.
Аноним 2021/04/17 05:06:01  №1998771 5
нужно написать парсер, но я хочу какать
Аноним 2021/04/17 11:49:34  №1999047 6
пук.jpg (51, 1080x531)
531x1080
Меня затрахали нерешаемые моим мозгом бонусные задачи из учебника, что делать?
Ответы: >>1999073 >>1999079
Аноним 2021/04/17 12:11:23  №1999073 7
>>1999047
Скорее всего ты чего-то недогнал в процессе обучения. Тут не работает как в школе\шараге и надо честно позадрачивать с недельку.
На чём всрался?
Ответы: >>1999103
Аноним 2021/04/17 12:13:26  №1999079 8
>>1999047

Ты можешь запостить свой код, и написать, что именно непонятно. Также, можно попробовать поискать решение задачи в гугле.
Ответы: >>1999103
Аноним 2021/04/17 12:29:36  №1999103 9
1522495958120494646.jpg (136, 1080x971)
971x1080
>>1999073
>>1999079
Да че я не догнал... Все задачи решил предыдущие, но если попросить здесь помощи по бонусным мне в сотый раз льют в уши кучу помоев, которые никак не помогают решить задачу.

https://ideone.com/kzN6Eh

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

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

Я в центре на пикрелейтеде, inb4 я долбоеб неблагодарный и не ценю помощь, нахуй из треда


Ответы: >>1999380 >>1999639
Аноним 2021/04/17 15:41:27  №1999380 10
Ответы: >>1999814
Аноним 2021/04/17 15:49:27  №1999384 11
Извлекать данные из БД на страницу надо через аджакс?
Аноним 2021/04/17 17:06:28  №1999472 12
Пчелибосики, палите топовые IDE для PHP.
Аноним 2021/04/17 17:27:03  №1999496 13
Аноны, паршу рефер откуда пришёл человек и сохраняю его, например https://ru.wikipedia.org/wiki/Заглавная_страница но при извлечении его из бд и отрисовки на странице если в нём была кириллица, она вся превращается в кашу типа https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0, как это говно во время вывода привести обратно в человеческий вид?
Ответы: >>1999508 >>1999528 >>2000260
Аноним 2021/04/17 17:37:26  №1999508 14
Аноним 2021/04/17 17:46:44  №1999528 15
>>1999496
Господи, куда смотрели W3C, когда вводились интернационализованные домены? Это же рак, убивающий интернеты.
Ответы: >>1999547
Аноним 2021/04/17 18:01:13  №1999547 16
>>1999528
Смотрели на шекели.
Долбоебы скупили свою местечковую хуиту, а теперь она никому не нужна и не используется.
Аноним 2021/04/17 18:02:29  №1999548 17
Аноны, скажите если я в свойстве класса сохраняю не объект, а вообще класс в таком виде

$this->classProps = SomthClass::class;

для того что бы потом где то в методе объект этого класса получить - это лютый говнокод, или норм вариант?
Ответы: >>1999559
Аноним 2021/04/17 18:14:30  №1999559 18
>>1999548
>лютый говнокод
это
Ответы: >>1999564
Аноним 2021/04/17 18:21:58  №1999564 19
>>1999559
А как правильно? Мне нужно в методах создавать экземпляр этого условного класса каждый раз. Сделать фабрику этого класса?
Ответы: >>1999571
Аноним 2021/04/17 18:24:50  №1999571 20
>>1999564
Экземпляр класса до объявления методов нельзя сделать? И кидать его потом в качестве параметра методам?
Ответы: >>1999575
Аноним 2021/04/17 18:27:51  №1999575 21
>>1999571
Хочу связность снизить, этот класс не хочу в клиентском коде светить
Ответы: >>1999586
Аноним 2021/04/17 18:53:07  №1999586 22
>>1999575
Передай извне фабрику. Практически любой современный контейнер инверсии зависимостей умеет это делать.
Хотя это зависит от контекста конечно - иногда проще напрямую делать. Так же лучше не городить лишнего в небольших скриптах.
Аноним 2021/04/17 19:14:45  №1999625 23
Всем ку, дамы и господа.

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

Так вот:

1. Вкатываться в 26 такое себе, да? Полно школьников 18 летних, на которых работодатель обратит больше внимания, чем на меня.

2. Как первый язык ПХП говно, правильно? (когда-то в вузе учили с++, с#, но я оттуда только базу вывез, типа строгую типизацию понимаю и т.д., помню даже тернарный оператор и пузырьковую сортировку

3. По какой книжке лучше всего начать учить?

4. Какую версию начинать учить? 7? 8? Нужно ли ставить апач и нгинх? Или достаточно поставить xampp/openserver и начать кодить?

5. Куда смотреть дальше? Laravel/Yii2/Zend/Symphony?
Ответы: >>1999646 >>1999688 >>2001189
Аноним 2021/04/17 19:26:34  №1999639 24
>>1999103

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

У тебя есть переменная $i, которая указывает, какую по счету букву надо взять из строки $value. Но некоторые строки слишком короткие и в них нет $i-й буквы. Надо проверять, что $i меньше чем длина $value (mb_strlen). Если это так, то берем одну букву из $value и добавляем в $letter. Если это не так ($i >= длины строки), то надо в $letter добавлять пробел.

Если с этим все стало понятно, то вот еще совет: у тебя используется рекурсия (функция abc вызывает саму себя). Можно заменить ее на цикл for, где $i меняется от 0 до максимальной длины строки стихотворения. Сейчас эта макс. длина у тебя вписана как 33, но лучше вычислять ее: разбить стих на строки, затем преобразовать массив строк в массив длин с помощью array_map, затем взять максимальную длину с помощью max().

> последовательный перебор

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

- первый массив - это общее количество купюр в банкомате вида [5, 2]. Это значит, что есть 5 купюр по 500 и 2 по 100.
- второй массив - это какая-то произвольная комбинация купюр, например [2, 1] то есть 2x500 + 1x100.

Функция должна вернуть следующую за данной комбинацию (в виде массива). Если ей дали 2x500 + 1x100, она должна вернуть 2x500 + 2x100 (то есть массив [2, 2]). Если ей дали 2x500 + 2x100, она должна вернуть 3x500 + 0x100 (так как 3 купюры по 100 быть не может).

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

Уточняй, если что непонятно.
Ответы: >>2000963 >>2002365
Аноним 2021/04/17 19:35:24  №1999646 25
>>1999625
> Полно школьников 18 летних
В пхп?
Ответы: >>1999657
Аноним 2021/04/17 19:51:59  №1999657 26
Ответы: >>1999681
Аноним 2021/04/17 20:28:06  №1999681 27
>>1999657
В пхп вроде самый высокий средний возраст разраба после крестов и совсем дедовской хуйни типо кобола.
Где-то 33, как Иисусу.
Ответы: >>1999703
Аноним 2021/04/17 20:44:05  №1999688 28
>>1999625
> 1. Вкатываться в 26 такое себе, да? Полно школьников 18 летних, на которых работодатель обратит больше внимания, чем на меня.
Зависит от тебя. Школьники тупые. Для успеха помимо непосредственно кодирования нужно иметь ещё кучу скиллов.

> 2. Как первый язык ПХП говно, правильно? (когда-то в вузе учили с++, с#, но я оттуда только базу вывез, типа строгую типизацию понимаю и т.д., помню даже тернарный оператор и пузырьковую сортировку
Да, в качестве первого языка PHP слишком ограничен и позволяет слишком много свободы.

> 4. Какую версию начинать учить? 7? 8? Нужно ли ставить апач и нгинх? Или достаточно поставить xampp/openserver и начать кодить?
7-8. А под капотом у xampp/openserver будет тот же самый апач.

> 5. Куда смотреть дальше? Laravel/Yii2/Zend/Symphony?
Да.
Аноним 2021/04/17 21:11:06  №1999703 29
>>1999681
Кстати, давайте обсудим!

1. Почему так многие в больших корпах перекатываются с РНР на Go?
Цель ясна -- экономия ресурсов. Почему не на что-нибудь с нормальной инфраструктурой для разработки и отладки (Java, C#)? Почему именно Go? Похожесть синтаксиса? Лёгкость изучения? Новый быдлоязык? (хехе)

2. Что с производительностью самого РНР?
Я так понимаю, новый компилятор пока не оправдал больших надежд?
Насколько недавний взлом инфраструктуры разработки самого языка ( https://www.opennet.ru/opennews/art.shtml?num=54920 ) повлияет на перспективы его развития и доверие пользователей?

3. Symfony раздулась до сложности, сравнимой с Java Spring?
Так ли это, или РНР-шники в очередной раз себе льстят? И если да, то в чём прелесть начинать новые проекты на симфони, кроме поддержки виртуальных хостингов?

4. Какие профиты от симфони по быстродействию?
Если навключать всех кешей на всех уровнях -- можно ли говорить о вменяемом времени отклика по сравнению с быстрыми языками? Про остальное "фреймворки" говорить особого смысла нет: Zend подзагнулся, а остальные явно недотягивают до промышленной разработки.
Ответы: >>1999716 >>1999762 >>2000214
Аноним 2021/04/17 21:29:27  №1999716 30
15545801948502.png (1746, 1280x960)
960x1280
>>1999703
хочу дописать
5. Вечный вопрос (ТМ) человека, который ежедневно работает с языком:
Почему мы продолжаем любить и использовать РНР, если его свобода с одной стороны обходится так дорого (по быстродействию), а с другой, самые продвинутые фреймворки -- это бесконечные попытки зарегулировать эту самую свободу, ведущую к бесконечным ошибкам?

И ради чего мы должны мериться с backend-only языком программирования, в котором нет асинхронности "из коробки" (это не реверанс в сторону JS, там тоже куча проблем), у которого большие проблемы с маркетингом, у которого самая чудовищная степень прощения любых человеческих ошибок?

Раньше я уверенно декларировал ответ: "скорость разработки, быстрый и дешёвый старт любого проекта, невозможность "зависания"". Но сейчас, глядя на достаточно сложные в освоении и запуске Symfony-приложения, состоящие из многих пакетов и зависимостей, я начинаю сомневаться: до сих пор ли это так?
Аноним 2021/04/17 21:52:29  №1999747 31
>>1999716
>ради чего мы должны мериться
Я неебу ради чего ты должен мериться. Я вот нихуя не должен - пилю приложухи и не несу пафосной хуиты. Надо будет го - подтяну го, надо ноду - подтяну ноду.
Это просто работа.
Ответы: >>1999753
Аноним 2021/04/17 21:53:26  №1999749 32
1618696465136.jpg (230, 940x945)
945x940
>>1999716
Язык говно. Профитов никаких. Используй "быстрые" языки. /дисказ
Ответы: >>1999756
Аноним 2021/04/17 21:56:10  №1999753 33
>>1999747
*мириться, опечатался
Я с 2004 года занят данной РАБотой, и для меня уже пора задумываться
Ответы: >>1999757
Аноним 2021/04/17 22:01:34  №1999756 34
Аноним 2021/04/17 22:01:54  №1999757 35
16183440700080.mp4 (4852, 640x360)
360x640
>>1999753
Ну не мирись тогда. Мирись-мирись и больше не дерись.
По моему опыту бекенд это дай-то бох 50% - язык программирование, который не суть щас бы крудошлёпство великим делом считать. Остальное - смежные технологии и знание как делать хайлоад не всрав разработку.
Ответы: >>1999764
Аноним 2021/04/17 22:07:12  №1999762 36
>>1999703
>>1999716
Почему мы дальше работаем с Симфони? Отвечу за себя, может спасу жизнь какого-то ньюфага, который решил вкатиться в пых.
Потому что это болото уже засосало. Можно, конечно, пойти пол годика работать каким-то охранником, учить параллельно джаву и вкатиться на позицию джуна, но зачем?
Сидишь себе не рыпаешься, деньги получаешь. Да, меньшие чем джависты за ту же работу. Да, неприятно, но что поделать? Только по этой причине на симфони остается работа, разве нет?
Еще есть надежда что по работе когда-то придется столкнуться с го/нодой. А там уже имея коммерческий опыт сделать перекат будет намного проще.
Хотя языки эти и их подходы мне не нравятся, с php общего там очень мало, но это единственный вариант быстрого переката для пыхера.
Зачем? Да, пока что корабль еще не тонет, но крысы уже всё чувствуют и понимают.
Ответы: >>1999765 >>1999767 >>1999775
Аноним 2021/04/17 22:07:27  №1999764 37
>>1999757
То да, я не спорю с твоим логичным определением бекенд-разработки, но мы же в треде именно про язык, вот его и обсуждаем.

Подумой: это же определённые люди, это получившиеся в итоге приложения и зависимости, это расход ресурсов при том самом хайлоаде.
Аноним 2021/04/17 22:10:29  №1999765 38
>>1999762
Ну, для фуллстек-приложений на Symfony уже характерно наличие ноды (encore / webpack). Только вот нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.

Ну и почему охранником? После Symfony сложность Java не должна так уж испугать.
Аноним 2021/04/17 22:13:49  №1999767 39
>>1999762
> го/нодой
> единственный вариант быстрого переката
чому единственный?

Не драматизируй.
Синтаксис РНР весьма похож на С++ (только вот столько мозгов по управлению памяти не требует). Symfony по сложности уже сравнима с Java, а там близко C#.
Ответы: >>1999791
Аноним 2021/04/17 22:24:50  №1999775 40
>>1999762
Ну и сколько симфонисты нынче получают?
У меня в компании бывшей был интернет-магазин. Крупный. Прямой конкурент эльдорадо, днс. Выручка лярд за год. Так вот там битрикс, вью и чистый пхп. Пыхеры получали там 180к+. 60% задач были такие: редиректы настроить, подключить апишку банка. Лютая хуета, я не знаю, нахуй вам эти ларавели, симфони и др.
Ответы: >>1999781 >>1999783
Аноним 2021/04/17 22:31:03  №1999781 41
>>1999775
Ну вашей конторе повезло с бизнес-процессами || программистами битрикс || распределением данных между системами, раз оно пока хорошо работает.

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

в европке за Симфони дают до $6000/мес.
Аноним 2021/04/17 22:33:28  №1999783 42
>>1999775
>я не знаю, нахуй вам эти ларавели, симфони и др.
Потому, что код лучше чем на битрикс, быстродействие, масштабируемость и качество самих программистов в средем выше именно на современных фреймворках, чем у мартышек на битриксе. А на чистом пхп пишут сегодня разве что только вкатывальщики.
Аноним 2021/04/17 22:49:19  №1999791 43
>>1999765
>>1999767
Тут не в сложности джавы дело, вы чего. Просто нужно освоить много информации, для этого нужно много времени. И, как никак, ты в джаву закатываешься как бы с нуля.
Изучать всё это будешь после работы. Когда наступит черед идти к работодателю, ему почти что всё равно будет на твой опыт разработки на пхп.
Слово "Symfony" там тоже никому ничего не скажет, все уверенны что это очередная CMS, а в PHP еще неймспейсы не завезли и пыхеры всё еще называют классы App_Http_Controllers_IndexController.
Читаю на днях требования к джуну на джаве. "Опыт с Java не менее двух лет. Опыт в разработке больших веб-приложений от трех лет очень желателен. Если это Java - отлично. Если это Python, C#, Ruby - хорошо. Если это PHP, все равно будет плюсом"
А с го/нодой можно начинать практиковаться прямо на пыхоработе, а из требований к джуну на go я даже часто встречал знание синтаксиса и годик-два опыта на пыхе.
Ответы: >>2000225
Аноним 2021/04/17 23:18:06  №1999799 44
>>1999765
Лол, я ещё помню клавиатуры на полноразмерных дин разъемах как в совковых магнитофонах.
Аноним 2021/04/18 00:18:45  №1999814 45
>>1999380
На хуй отправляешься.
Аноним 2021/04/18 09:07:10  №2000101 46
вы часто исп nginx вместо апача?
Ответы: >>2000140
Аноним 2021/04/18 09:48:32  №2000140 47
>>2000101
Апач это уже легаси.
Ответы: >>2000154
Аноним 2021/04/18 10:05:16  №2000154 48
>>2000140
а чем он лучше апача?
Ответы: >>2000185
Аноним 2021/04/18 10:47:45  №2000185 49
>>2000154
Да в общем всем.
Быстрее, меньше жрет, больше функционала.
Аноним 2021/04/18 11:21:54  №2000214 50
Аноним 2021/04/18 11:34:36  №2000225 51
>>1999791
>требования к джуну
>Опыт в разработке больших веб-приложений от трех лет
Не, ну зачем явных долбоёбов-то в пример приводить?
Аноним 2021/04/18 11:38:20  №2000228 52
>>1999765
>нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.
Во тут совсем мимо, открой хотя бы hh. Весь смысл переката как раз в том, что за ноду, в часности нест сейчас готовы платить, иногда даже больше, чем за нормальные языки.
По крайней мере в ДС так.
Аноним 2021/04/18 11:48:17  №2000240 53
У меня вопрос ещё актуален. На него никто не отвечает, к сожалению.

Как известно, уже 8-ая версия пхп вышла. Как мне учить этот язык? Если начну изучать php 7 от Котерова, нормально вкачусь в изучение или нет? Может, есть что-то лучше? И выучу если с 7 версии, как на 8 перекатываться?
Ответы: >>2000247
Аноним 2021/04/18 11:51:59  №2000247 54
>>2000240
ПХП 8 это ПХП 7 + несколько фич. Учи тот, на который у тебя учебные материалы есть.
Ответы: >>2000250
Аноним 2021/04/18 11:53:48  №2000250 55
>>2000247
Спасибо. Буду по Котерову учить тогда, её вроде как все хвалят
Ответы: >>2000251 >>2000262
Аноним 2021/04/18 11:55:30  №2000251 56
Аноним 2021/04/18 11:59:20  №2000260 57
>>1999496
По https нет реферера, чего ты там парсишь?
Ответы: >>2000518
Аноним 2021/04/18 11:59:39  №2000262 58
Ответы: >>2000267 >>2000276
Аноним 2021/04/18 12:01:14  №2000267 59
>>2000262
Аргументация у тебя ебическая, дружок.
Ответы: >>2000281
Аноним 2021/04/18 12:04:36  №2000276 60
>>2000262
А с чего тогда начать?
Аноним 2021/04/18 12:05:41  №2000279 61
Начал изучать это ваше PHP и конечно чтоб сразу вкотиться, я же не даун в 256 раз читать про примитивные типы данных.
Решил запилить скриптик типа гостевая книга, ну а хули нет, разумеется для этого мне понадобился ORM я же не в 2004 чтоб просто данные выбирать и парсить, прочитал что doctrine популярен, ну стал читать, вроде все понятно, но! там предлагают в определении класса явно задавать геттеры и сеттеры. Че реально? Для каждого свойства. И разумеется если в модели что-то поменяется надо будет их добавлять/удалять. Они конечно все одинаковые абсолютно. Это как в джаве до какой-то 8 версии.
И почему-то ваши __get() и __set() не работают: определяю их, все по сигнатуре, а пых говорит call to undefined method при попытке вызова.
Нельзя было дефолтные методы что ли сделать?
Ответы: >>2000292 >>2000815
Аноним 2021/04/18 12:06:15  №2000281 62
>>2000267
лучше иши php7 zend Certification guide(но она на англ)
каждую тему обязательно гугли дополнительно для лучшего понимания.
php.net чтобы быть в курсе всех возможностей.К примеру тема строки и все функции для него
Ответы: >>2000284
Аноним 2021/04/18 12:11:20  №2000284 63
>>2000281
и еще не забудь про mysql и PDO
Ответы: >>2000287
Аноним 2021/04/18 12:12:35  №2000287 64
>>2000284
Вот про musql как раз лучше забыть и использовать mysqli, дружок.
Ответы: >>2000290 >>2000293
Аноним 2021/04/18 12:13:37  №2000290 65
>>2000287
я имел ввиду саму БД и драйвер
Аноним 2021/04/18 12:14:08  №2000292 66
Аноним 2021/04/18 12:14:42  №2000293 67
>>2000287
это mysqli можешь викунуть.учи PDO
Ответы: >>2000296
Аноним 2021/04/18 12:16:37  №2000296 68
>>2000293
>учи PDO
Наизусть учить?
Аноним 2021/04/18 13:42:51  №2000413 69
Аноны, я просто любитель и у меня вопрос, есть массив с массивами в которых хранятся логи типа айпи, юзерагент и т.п., хочу его отсортировать и вырезать только массивы с нужным мне айпи, как это сделать? Пропустить всё это через цикл и поместить в новый массив или для этого уже есть нужная функция которой я бы мог просто передать айпи и чтобы она вырезала только массивы с этим айпи и поместила их в новый массив который я выведу?
Аноним 2021/04/18 14:55:44  №2000518 70
Аноним 2021/04/18 15:44:28  №2000583 71
Есть массив
$arr = [
[ip => "146. 228. 14. 88", name => "Vasyan", age => "13"],
[ip => "127. 0. 0. 1", name => "Abu", age => "Petuh"],
[ip => "146. 228. 14. 88", name => "Valera", age => "54"],
[ip => "192. 168. 1. 1", name => "Vladimir", age => "68"],
]

Как сделать так чтобы в нём остались только массивы с айпи 146. 228. 14. 88? Только через цикл копируя в новый массив или есть какая-то готовая функция?
Ответы: >>2000586 >>2000618 >>2000688
Аноним 2021/04/18 15:46:42  №2000586 72
Аноним 2021/04/18 16:05:53  №2000618 73
>>2000583
Есть, но выглядит уёбищно, лучше уж через цикл.
Аноним 2021/04/18 16:33:21  №2000664 74
в чем отл mysql от postgres?
Ответы: >>2000757
Аноним 2021/04/18 16:59:32  №2000688 75
>>2000583
Есть array_filter, но положняк таков, что он сохраняет ключи, в итоге по твоему примеру у тебя останется дырявый массив с ключаемя 0 и 2. Чтобы переиндексировать его, нужно обернуть в array_values. В пхп 7.4 можно использовать стрелочные функции и спред, в итоге получится что-то вроде [...array_filter($arr, fn($item) => $item['ip'] === '1')]; но я бы так не стал писать
Аноним 2021/04/18 18:45:31  №2000754 76
Спасибо аноны, пока сделал через цикл, попробую потом сделать через array_map и array_filter, чисто сравнить есть ли в них смысл
Аноним 2021/04/18 18:49:22  №2000757 77
>>2000664
Вроде как в постгресе нативный джсон декоде есть, в мускул нет.
Аноним 2021/04/18 18:53:24  №2000762 78
Аноны а такой вопрос, если мне нужно вывести значение из переменной которой ещё нет в начале страницы, как это сделать? С помощью функции? Вверху страницы пишем вызов функции, а снизу в ней определяем значение которое нужно будет вернуть?
Ответы: >>2000771
Аноним 2021/04/18 19:06:53  №2000771 79
>>2000762
Сперва всегда данные подготавливаются и только потом выводятся.
В крайнем случае можно так:
<?php
$pizdapidor = $db->select('WHERE blablabla ');
?>
<html>
<head>
...
</head>
<body>
<p><?= $pizdapidor ?></p>
</body>
</html>
Ответы: >>2001237 >>2001435
Аноним 2021/04/18 19:44:35  №2000815 80
>>2000279
Ничего, через пять лет никич возможно свойства добавит, вот тогда-то заживем!
А вообще, в пыхошторме в три кнопки создаются все отсутствующие геттеры и сеттеры. Сначала alt+Insert, дальше сам.
Аноним 2021/04/19 03:45:56  №2000963 81
>>1999639
>Ты ничего не переспросил в ответ на совет выводить пробел, вот тебе ничего больше и не посоветовали.
У меня взорвалось очко от того что на более сложные задачи мне дают такие неинформативные ответы. Наверное, я не прав, что так грубо выражаюсь, спасибо за помощь.
Аноним 2021/04/19 07:02:25  №2001009 82
image.png (4, 101x229)
229x101
Блджад посоны, столкнулся с тем что при сортировке по названию происходит такая хуйня, смотрите пик, что внезапно число 107 оказывается меньше чем 37 и выводится выше так как оно внезапно меньше, сортирую я это говно с помощью такого способа https://www.php.net/manual/ru/function.usort.php#example-5491 Пример #2
Как его отсортировать по человеческой сортировке где сперва будет 37, а потом 107? Вчера ещё натыкался на это но теперь не могу найти, всё это берётся из многомерного массива, так что сортировка просто по ключу или значению не вариант
Ответы: >>2001027 >>2001028 >>2001499
Аноним 2021/04/19 07:17:27  №2001027 83
>>2001009
По традиции, отвечаю сам себе strnatcmp
Аноним 2021/04/19 07:17:32  №2001028 84
>>2001009
На сколько я понимаю он сортирует по первому символу строки.
Единственное, что могу посоветовать заюзать ip2long
Аноним 2021/04/19 09:26:44  №2001189 85
>>1999625
1. Вкатился в 24. Вполне норм. Коллеги в среднем 30+
Для школоты пхп нимодна, они больше по жаваскриптам, да петухонам
2. Как первый - да, лучше взять что-то более строгое, классическое
3. Начинал тупо пролистав php.net и по ларакастам
4. 7ую бери, она сейчас везде на проде. Пока можешь xampp/openserver
5. Larave/Symphony - норм начало
Yii2 - устаревший кал
Zend - монструозный устаревший кал
Аноним 2021/04/19 10:10:19  №2001237 86
>>2000771
Приучаем к хуевым практикам, а потом удивляемся, почему у пхп такая репутация
Ответы: >>2001260 >>2001363
Аноним 2021/04/19 10:27:27  №2001260 87
>>2001237
потому что сам дизайн языка корявый
Ответы: >>2001281
Аноним 2021/04/19 10:41:24  №2001281 88
>>2001260
Как будто тебя кто-то заставляет пользоваться этой легаси-хуйней из 90-х. Пхп конечно набит таким детским говном под завязку, но умные люди приводят к каким-то стандартам, развивают фреймворки.
Примерно то же происходит с жс, но намного быстрее в силу важности языка.
Ответы: >>2001365
Аноним 2021/04/19 11:36:00  №2001353 89
Аноны, вот есть либы для генерации эксель файлов.
А как такое самому , ручками навелосипедить? Есть статьи какие нибудь?
Чисто из любопытства.
Ответы: >>2001360 >>2001418 >>2001474
Аноним 2021/04/19 11:46:45  №2001360 90
>>2001353
Загляни в исходники тех самых либ, всё узнаешь
Аноним 2021/04/19 11:47:35  №2001363 91
>>2001237
Блядь, он элементарные вещи спрашивает, а ты про фреймворки пердеть начал. Убейся что ли.
Ответы: >>2001367
Аноним 2021/04/19 11:49:54  №2001365 92
>>2001281
>происходит с жс, но намного быстрее в силу важности языка
ЖС твой умирает как язык - сейчас почти везде тайпскрипт просят.
Ответы: >>2001410
Аноним 2021/04/19 11:51:19  №2001367 93
>>2001363
В глаза ебешься? Какие фреймворки?
Ты запостил код обращения к бд и хтмл рядом. Нуфаг прямо так скопирует и вот мы имеем +1 бед практис
Ответы: >>2001379 >>2001400
Аноним 2021/04/19 12:05:37  №2001379 94
>>2001367
>бед практис
Поясняй давай - где тут бед. И почему если <?php секцию сунуть в отдельный файл, то что-то должно поменяться?
Ответы: >>2001383 >>2001412
Аноним 2021/04/19 12:07:06  №2001383 95
>>2001379
Пиздец, с кем я в одном треде сижу...
Ответы: >>2001396 >>2001419
Аноним 2021/04/19 12:12:33  №2001396 96
>>2001383
Пруфы будут или так и будешь воздух портить?
Ответы: >>2001400
Аноним 2021/04/19 12:14:25  №2001400 97
>>2001396
Я мимо проходил, с долбоебами не общаюсь. Пусть тебе этот >>2001367 анон и поясняет, почему 2 + 2 = 4, если он хочет конечно.
Ответы: >>2001406
Аноним 2021/04/19 12:16:53  №2001406 98
Аноним 2021/04/19 12:18:39  №2001410 99
>>2001365
>ЖС твой умирает как язык - сейчас почти везде тайпскрипт просят.
Лол блядь, ты вообще в курсе что ts это сахар над js?
Ответы: >>2001421
Аноним 2021/04/19 12:20:52  №2001412 100
>>2001379
Как минимум средней руки разраб не ожидает, чтоб шаблон будет общаться с бд. Задача шаблона отобразить данные, а не искать их.
Ответы: >>2001421
Аноним 2021/04/19 12:21:26  №2001413 101
Как писать сайты в ООП стиле?
Ответы: >>2001417 >>2001469 >>2001896
Аноним 2021/04/19 12:22:37  №2001417 102
>>2001413
$sait = new Sait();
$sait->make('zaebis');
Ответы: >>2001431
Аноним 2021/04/19 12:22:47  №2001418 103
>>2001353
xlsx это xml обычный и стили всякие в зип архиве, там ничего сложного. А старый xls это бинарная дрисня, его долго и нудно реверсили.
Аноним 2021/04/19 12:22:50  №2001419 104
>>2001383
Но вообще технически код отделен от разметки. От того что ты вынесешь шаблон в отдельный файл - не дохуя изменится. Архитектурно ниче не поменяется.

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

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

мимо
Аноним 2021/04/19 12:24:16  №2001421 105
>>2001410
Лол блядь, ты вообще в курсе что js это сахар над C/С++ (V8, Nitro и т.д.)? Пиздец, с кем я в одном треде сижу...

>>2001412
Тут не средней руки разраб, а начинающий - пускай хотя бы так запилит, подготовив данные для вывода, а не прямо в шаблоне свои функции пердолит, как народ часто делает. Потом уже научится разделять шаблон и код на базе моего примера.
Ответы: >>2001427 >>2001442
Аноним 2021/04/19 12:27:39  №2001427 106
>>2001421
>Тут не средней руки разраб, а начинающий - пускай хотя бы так запилит, подготовив данные для вывода, а не прямо в шаблоне свои функции пердолит, как народ часто делает. Потом уже научится разделять шаблон и код на базе моего примера.
Многие как запомнили начальные примеры, так потом и на продакшене срут. А там, не факт, что сидят люди умнее их или готовые это всё править. Так и остается нуфаг с бед практисом.
Отсюда и пошли все эти толстые контроллеры, потому что в документации так пишут.

Ну и мы пишем код в первую очередь для людей, для текущих и будущих коллег и для завтрашнего себя. Никому не хочется копаться в велосипедах, особенно в чужих
Ответы: >>2001433
Аноним 2021/04/19 12:29:23  №2001431 107
>>2001417
а что в классе Site находиться?
Ответы: >>2001435
Аноним 2021/04/19 12:31:07  №2001433 108
>>2001427
>Многие как запомнили начальные примеры, так потом и на продакшене срут.
Если у вас такие на проде работают, то соболезную. Может повыкидывать этих трейни на мороз, а? Сейчас от джуна знание хотя бы одного фреймворка требуют.

>Отсюда и пошли все эти толстые контроллеры, потому что в документации так пишут.
Всему не научишь в рамках туториала или поста на дваче.

>Никому не хочется копаться в велосипедах, особенно в чужих
Это не совсем велосипед - это старый стиль разработки на пхп, когда веб был проще. Хуёво, что ты такого не знаешь и считаешь велосипедом.
Ответы: >>2001461
Аноним 2021/04/19 12:31:30  №2001435 109
Ответы: >>2001444
Аноним 2021/04/19 12:34:37  №2001442 110
>>2001421
А C это сахар над ассемблером.
Сказать то что хотел?
Существует стандарт ES, который поддерживают браузеры. TS полностью зависит от этого стандарта. Завтра откатят ES к 2010 году и привет твоему тайпскрипту.
Ответы: >>2001445
Аноним 2021/04/19 12:36:00  №2001444 111
>>2001435
это не описание класса,где свойства,методы(ну один есть)?
Ответы: >>2001446
Аноним 2021/04/19 12:36:33  №2001445 112
>>2001442
>Сказать то что хотел?
У тебя проблемы с логикой.
Лично ты можешь называть js - ассемблером.
Ответы: >>2001451
Аноним 2021/04/19 12:37:06  №2001446 113
>>2001444
Иди Зандстру читай, приоткроются глаза.
Так ты ничего не поймешь.
Аноним 2021/04/19 12:38:42  №2001451 114
>>2001445
А у тебя проблемы с тем, что ты себя считаешь молотком, а остальных гвоздями. Даже тут единицы тех кто будет с тобою вести праздный полудиалог-полусрач. Всем похуй на твои попытки самоутвердиться.

Арибидерчи:3
Аноним 2021/04/19 12:45:34  №2001461 115
>>2001433
>Если у вас такие на проде работают, то соболезную. Может повыкидывать этих трейни на мороз, а?
Таким грешат даже синьоры. В любом проекте, где был, контроллеры были засраны.
Ну и других откуда наберешь легаси поддерживать?

>Это не совсем велосипед - это старый стиль разработки на пхп, когда веб был проще. Хуёво, что ты такого не знаешь и считаешь велосипедом.
Деды так делали и нам велели. Только сейчас за такое по рукам надают. Ну а если не надают, то лучше сменить место работы
Ответы: >>2001463
Аноним 2021/04/19 12:48:54  №2001463 116
>>2001461
>Деды так делали и нам велели.
Я ж говорю - сразу на фреймворки ни у кого не получится. В любом случае придётся проходить эволюционный путь самого языка, в том или ином виде, чтобы понимать что как и зачем было придумано. А не как местные мартышки - вызубрили "бест практис", а зачем он нужен понятия не имеют.
Аноним 2021/04/19 12:53:16  №2001469 117
>>2001413

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

Если ты изучил ООП, то почитай про MVC - там есть и пример кода: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

Если хочется изучать дальше, разбери код какого-нибудь фреймворка, можно начать с относительно простого Slim.
Аноним 2021/04/19 12:56:13  №2001474 118
>>2001353

Есть официальная спецификация и для XLS (бинарный формат), и для XLSX (это zip-архив с XML-файлами). Ты можешь нагуглить их и попробовать сделать свой читатель/писатель этих файлов. Но должен предупредить, спецификация там в сотни страниц.
Аноним 2021/04/19 13:08:18  №2001491 119
>>1999765
>Ну, для фуллстек-приложений на Symfony уже характерно наличие ноды (encore / webpack).
Хмм, может я чего-то не знаю, но каким образом сборка фронтенда связана с работой на ноде? Тем более, там же вроде нода лишь под капотом.
Ответы: >>2001547
Аноним 2021/04/19 13:11:05  №2001499 120
>>2001009

А я поясню, почему 107 меньше, чем 37. Дело в том, что тут сравниваются не числа 107 и 37, а строки "107" и "37". Строки сравниваются так:

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

Символ "3" считается "больше", чем символ "1", потому строка "37" больше чем "107".
Ответы: >>2001635
Аноним 2021/04/19 13:34:45  №2001547 121
>>2001491
>но каким образом сборка фронтенда связана с работой на ноде?
Чем фронтенд на проде собирать изволите? Ручками?
Аноним 2021/04/19 14:21:05  №2001635 122
>>2001499
Ну да, натуральная сортировка называется или как-то так
Аноним 2021/04/19 21:01:29  №2001896 123
>>2001413
>Как писать сайты в ООП стиле?
Зачем тебе ооп стиль? Все зависит от задачи. Если твоя задача сделать только три статические странички - нет смысла ставить туда симфони. А тому мудаку, который оскорбил уи я скажу - иди ты нахуй мудак оскорбивший уи
Ответы: >>2001925
Аноним 2021/04/19 22:07:18  №2001925 124
>>2001896
Да откуда вы все блядь повылезали в последнее время? То у вас запросы к БД в шаблонах нормальная практика, то йии и процедурщину защищаете, то CMSки и прочее. Вас действительно много по весне оттаяло или ты один человек?
Да, никто не спорит, для всего есть своя ниша. Но у нас тут тред разработчиков, а не макакенов. Макакены вроде как в /wrk/ сидят, по крайней мере года два назад сидели.
А эта доска называется "Программирование", если кто-то не обратил внимания. Где в ваших Yii и CMSках программирование, скажите?
Какое отношение
>сделать только три статические странички
имеет к программированию? Съебались нахуй отсюда, Господа.
Ответы: >>2001935 >>2001953
Аноним 2021/04/19 22:39:07  №2001935 125
>>2001925
>Где в ваших Yii и CMSках программирование, скажите?
Мартыха, ты понятия не имеешь - что такое программирование, если написал такое.
Сиди лучше молча.
Ответы: >>2002216
Аноним 2021/04/20 01:53:34  №2001953 126
>>2001925
> То у вас запросы к БД в шаблонах нормальная практика, то йии и процедурщину защищаете, то CMSки и прочее.
Запросы в шаблонах охуенно же. Можно намакакать пять страничек, пока господин программист пишет контроллер для одной.
Аноним 2021/04/20 09:35:22  №2002216 127
>>2001935
Senior Wordpress Developer в треде, количество шизофазии в треде увеличено втрое.
Аноним 2021/04/20 11:09:59  №2002365 128
>>1999639
>Функция должна вернуть следующую за данной комбинацию (в виде массива). Если ей дали 2x500 + 1x100, она должна вернуть 2x500 + 2x100 (то есть массив [2, 2]). Если ей дали 2x500 + 2x100, она должна вернуть 3x500 + 0x100 (так как 3 купюры по 100 быть не может).

https://ideone.com/KWu2kP

Ответы: >>2002397 >>2002413
Аноним 2021/04/20 11:37:06  №2002397 129
>>2002365
Смотрю на ваши задачки и тоже хочется что-то мелкое попилить.
А приходится шатать легаси на пол ляма строк...
Аноним 2021/04/20 11:52:52  №2002413 130
>>2002365

Начиная с PHP5.4, можно вместо array() писать [], это компактней.

Еще, вместо сравнения массивов по одному элементу, можно сравнивать массивы целиком с помощью == или ===, подробности (не очень подробные) в мануале: https://www.php.net/manual/ru/language.operators.array.php

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

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

Уточняй, если что непонятно.
Ответы: >>2003091 >>2003169
Аноним 2021/04/20 15:26:08  №2002651 131
Сосоны, я начал читать Мэтта Зандстра ООП.

Похвалите меня, я с очень большим трудом понял прочитанное по темам Синглон и Абстрактная фабрика. Дальше читаю шаблон Прототип
Ответы: >>2002710
Аноним 2021/04/20 16:20:10  №2002710 132
>>2002651
Что понял?
Сможешь написать свой синглтон и фабрику?
Ответы: >>2002718
Аноним 2021/04/20 16:26:49  №2002718 133
>>2002710
Понял как строки кода из примеров работают. То есть понял, что написано в строках кода, что они делают.

Свои не напишу.
Аноним 2021/04/20 18:20:48  №2002857 134
Аноны, есть файл в котором хранятся логи, и там уже несколько тысяч строк, выводить их все на странице неочень, по этому хочу сделать постраничный вывод, например по 100 штук, можете пояснить концепцию как мы делаем выборку из массива?

В моём понимании так - мы берём количество записей, делим на 100 и получаем количество страниц, пагинацию пока опустим, далее мы берём номер страницы из гет запроса и делаем следующее - умножаем номер страницы на 100 и вычитаем 100, так мы получаем начальный индекс с которого нужно вырезать массив, например 3 страница, $cut = 3 100 - 100 или $cut = (3-1) 100 получаем array_slice($arr, $cut, 100)? Или как ещё по номеру страницы из гета определить с какого ключа и по какой нужно вырезать 100 записей?
Ответы: >>2002872 >>2003289
Аноним 2021/04/20 18:41:32  №2002872 135
>>2002857
Ну а концепция пагинации такая что если 1 страница, то выводим ссылки на 2 страницу, предпоследнюю и последнюю, а если допустим 100 страниц и мы на 10, то выводим 1, 2 страницы, предпоследнюю, последнюю и две влево и вправо от текущей страницы, то есть 8, 9 и 11, 12?
Ответы: >>2003289
Аноним 2021/04/20 20:28:52  №2002976 136
Столкнулся с какой-то очень странной фигней. Импортирую стили прямо в scss:
>@import '~select2/dist/css/select2.min.css';
>@import '~select2-theme-bootstrap4/dist/select2-bootstrap.min.css';
Всё работает. Но хотелось бы импортировать их в джаваскрипте, вот так:
>import 'select2/dist/css/select2.min.css';
>import 'select2-theme-bootstrap4/dist/select2-bootstrap.min.css';
Ошибок никаких нету, вебпак нормально собирается, но стили не импортируются(
При том что такой код у меня работал на другом проекте, на ларе, где над вебпаком Mix.
Сейчас же проблема эта на проекте с Симфони, может это какая-то специфика Encore?
Аноним 2021/04/21 02:16:47  №2003091 137
Ответы: >>2003289
Аноним 2021/04/21 03:20:21  №2003112 138
Посмотрите htmldog.com как вам по содержанию, полезно?
Аноним 2021/04/21 04:19:45  №2003144 139
Возможно я просто сонный и чего не догоняю но вот проблема, из бд мне возвращается ничего, а в ошибке пишет просто "Ошибка". Таблица точно есть, и данные в ней тоже, регистрацию то запилил а тут что не так может быть?
Ответы: >>2003294 >>2003694
Аноним 2021/04/21 05:26:13  №2003169 140
Ответы: >>2003294
Аноним 2021/04/21 07:01:37  №2003223 141
Аноны, по вашему совету сделал сохранение топа в файл путём сохранения топа в временный файл и потом его переименование в нужный файл чтобы не было коллизий когда файлы затирают друг-друга, и столкнулся с тем что рандомно в течении дня проихсодит такая фигня что временный файл не удаляется, он в основном с рандомным именем и весит 0 килобайт, но есть и файлы размером в половину или весь файл топа в пол мегабайта, почему это может быть что временный до переименования файл не удаляется и остаётся? Приходится писать скрипт и удалять эти файлы им, потому что у них стоят права -600, и руками по фтп они не удаляются
Ответы: >>2003297
Аноним 2021/04/21 08:36:11  №2003289 142
>>2002857

Да, ты верно описал, формула для расчета offset будет (page - 1) x 100.

>>2002872

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

>>2003091

Здесь у тебя цикл по сути не используется. Так как у тебя в if/else стоит в обоих ветках break и у цикла всегда выполняется только один шаг. Из-за этого ты проверяешь максимум 3 последние цифры в массиве, а не все.

Если взять, например, запас [5, 5, 5, 5] и комбинацию [1, 5, 5, 5], то программа выдает неправильный результат: https://ideone.com/cflqKZ

Цикл должен работать по-другому:

- увеличиваем текущую цифру, если текущая цифра меньше чем запас, выходим из цикла
- иначе (если текущая цифра >= запаса) записываем вместо нее ноль и продолжаем цикл. На следующем шаге цикл увеличит следующую цифру. Не надо делать это с помощью обращения к элементу [$key-1].

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

И еще одно улучшение. Чтобы не сортировать массив до и после цикла, можно вместо цикла foreach использовать цикл for с значениями от N - 1 до 0 (где N это количество элементов в массиве).

После этих доработок функция будет готова для использования в программе.



Аноним 2021/04/21 08:45:35  №2003294 143
>>2003144

Функция mysqli_fetch_assoc может вернуть false, null или массив.

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

>>2003169

Здесь плохо то, что весь код написан внутри одной функции. Лучше разделить код на несколько функций:

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

И наконец, отдельно можно написать код, который в цикле перебирает комбинации:

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

После этой задачи, если ты ее сделаешь, я советую попросить у меня дополнительные задачи на массивы и рекурсию.
Ответы: >>2003601 >>2003746
Аноним 2021/04/21 08:49:47  №2003297 144
>>2003223

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

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

Смотри логи (на время, совпадающее со временем создания файла).

> почему это может быть что временный до переименования файл не удаляется и остаётся?

Такого не может быть. Проблема в падении твоего скрипта.

> потому что у них стоят права -600

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

Ответы: >>2003325
Аноним 2021/04/21 09:25:19  №2003325 145
>>2003297
>возможно из-за превышения времени выполнения или ограничения на объем памяти
Точно, скорее всего проблема в ограничении памяти, то сть на сайт заходит много человек и идёт превышение памяти от чего скрипт просто дропается, ошибки быть не может так как запись идёт в самом конце файла, логи к сожалению посмотреть не могу, хостинг не даёт, но скорее всего из-за перегруза оперативки, на деректории стоят права -755, но я всё равно не могу руками удалить эти временные файлы -600, только скриптом явно указав их имена
Ответы: >>2004276
Аноним 2021/04/21 09:36:45  №2003344 146
Бамп годному треду.

Анончики, вопрос от залетного нуба: понятное, что в дс и в рф джуну вкатиться сложно (почти невозможно), а есть ли у кого-то опыт или знания ситуации вката в Европе?
Сам живу и работаю в Чехии, но на должности бизнес-аналитика (но сам из дс).
Хотел бы вкатиться, вакансии вроде бы есть, но нет знакомых и пруфов, реально ли вкатиться.
Не обязательно Чехия, просто ситуация в Гейропке

Спасибо
Аноним 2021/04/21 09:51:46  №2003367 147
image.png (394, 500x500)
500x500
>>1998470 (OP)
Пиздец, сел за одну легаси-часть проекта которая была написана на похапэ, раньше к ней не притрагивался, сразу же ахуел
Там как-то эти сраные темплейты рендерятся пыхой через хуй-пизду, прямиком в темплейтах сидит жс (жкьюри) код, чтобы сделать элементарную операцию вроде захода посетителя на новую страницу проходит несколько php-запросов, которые высирают эти ебучие tpl... И вот это считалось считается нормой. Просто пиздец. Нахуя вы это делаете?
Ответы: >>2003383 >>2004276 >>2004467
Аноним 2021/04/21 09:58:52  №2003383 148
>>2003367
>Нахуя вы это делаете?
За поддержку этого говна платят.
А так на пыхе особо выбора нет. Либо легаси поддерживать, либо в cms окунаться
Аноним 2021/04/21 11:10:45  №2003429 149
Надо ли знать ооп, чтобы клепать сайты на cms-ках?
Ответы: >>2003558
Аноним 2021/04/21 13:29:53  №2003558 150
>>2003429
Если из плагинов клепать то там и программирование не нужно.
Ответы: >>2003576
Аноним 2021/04/21 13:37:03  №2003567 151
Здравствуйте, работяги. Я начинающий недо-ученик, в своей методичке дошёл до задания, цитирую: «с помощью двух циклов создайте двумерный массив такого типа: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]»

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

Просто напишите с правильным синтаксисом решение этой задачи. Буду благодарен.
Ответы: >>2003579 >>2003585
Аноним 2021/04/21 13:40:13  №2003576 152
>>2003558
Я смотрел курс по вордпрессу Дмитрия Полоса, он там на пхп кодил
Ответы: >>2003584 >>2004321
Аноним 2021/04/21 13:42:29  №2003579 153
>>2003567
Просто открыл документацию и взял пример
/ Пример 4: многомерные массивы /
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
Аноним 2021/04/21 13:50:17  №2003584 154
>>2003576
> вордпрессу
Индусское говно. Работа с сИэМэС это неблагодарный ад.
> Дмитрия Полоса
Хз чо за хуй.

Мб стоит учить фреймворк?

Аноним 2021/04/21 13:53:48  №2003585 155
Ответы: >>2003770
Аноним 2021/04/21 14:06:26  №2003601 156
>>2003294
Хорошо, при проверке data на false результат тот же
Ответы: >>2003619 >>2003628
Аноним 2021/04/21 14:25:52  №2003619 157
>>2003601
Так, а зачем проверка на false если в data - null, значит проблема в бд или в логине, но я вроде не совсем аутист, в бд есть записи, и логин передается
Аноним 2021/04/21 14:30:49  №2003628 158
>>2003601

Ты проверяешь через == или через ===? Потому что при использовании == (нестрогое сравнение) null будет равен false. Надо использовать ===.

Если функция вернула false, то будет указана причина ошибки. Если функция вернула null, то естественно ошибки нету.
Ответы: >>2003640
Аноним 2021/04/21 14:48:41  №2003640 159
>>2003628
При === возвращает null, данные то все равно не находит
Ответы: >>2004276
Аноним 2021/04/21 15:31:31  №2003694 160
>>2003144
Пробовал сам скл запрос вызвать (без пхп)?
Ответы: >>2003725
Аноним 2021/04/21 15:57:03  №2003725 161
Аноним 2021/04/21 16:13:47  №2003737 162
>>1998470 (OP)
вопрос тупой очень мда но я спрошу
я ваще конкретный чайник пока в этой сфере и мне хотелось бы узнать
как мне сделать так чтоб я мог дать тегу <img> например собственное имя и в CSS управлять условными <img1> и <img2> по отдельности надеюсб ясно изъяснил
Ответы: >>2003741
Аноним 2021/04/21 16:17:40  №2003740 163
Bump
Аноним 2021/04/21 16:18:15  №2003741 164
>>2003737
> собственное имя и в CSS управлять условными <img1> и <img2> по отдельност
классы им задать
Ответы: >>2003752
Аноним 2021/04/21 16:20:00  №2003746 165
>>2003294
>И наконец, отдельно можно написать код, который в цикле перебирает комбинации:
Не понял, что имеется ввиду.

https://ideone.com/tSOxlD

Вот так пока сделал.
Ответы: >>2004314
Аноним 2021/04/21 16:22:33  №2003752 166
Ответы: >>2003760 >>2003774
Аноним 2021/04/21 16:28:46  №2003760 167
>>2003752
<img class="img1"> а вообще погугли про элементы и атрибуты на MDN, ну че ты как этот
Ответы: >>2003762
Аноним 2021/04/21 16:31:25  №2003762 168
>>2003760
Да я знаю что как этот. Просто я нубик еще вкатился чисто чтоб сайт своей "муз.группе" сварганить ,могу скинуть в зацените)
Аноним 2021/04/21 16:38:09  №2003770 169
>>2003585
Разобрался сам, огромное спасибо тебе, аноний. И доброго вечера.
Аноним 2021/04/21 16:41:48  №2003774 170
Аноним 2021/04/21 16:56:29  №2003783 171
Аноны, как из этого дерьма узнать что это за браузер?

Mozilla/5.0 (Linux; Android 10; COL-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.82 Mobile Safari/537.36

Я думал что по последнему названию, то есть здесь это Safari, но нихуя, это Chrome
Ответы: >>2003801 >>2003841
Аноним 2021/04/21 17:36:41  №2003801 172
>>2003783
Есть мильйон либ для их разбора.
Ответы: >>2004108
Аноним 2021/04/21 18:49:16  №2003841 173
Ответы: >>2004108
Аноним 2021/04/22 06:42:35  №2004108 174
>>2003801
>>2003841
Бля засирать код чужими костылями которые делают миллион бочек прежде чем выдать результат, да мой сервер загнётся пока проделает это 100000 раз чтобы их все разшифровать
Ответы: >>2004302
Аноним 2021/04/22 06:56:26  №2004121 175
Ответы: >>2004328
Аноним 2021/04/22 09:44:23  №2004276 176
>>2003325

> на деректории стоят права -755,
Ну так если ты не владелец директории, то для тебя права будут 5, то есть r-x, без права на запись (и удаление файлов).

>>2003640

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

>>2003367

Непонятно, в чем претензия? Шаблоны использовать плохо? Использовать JS код в шаблонах плохо?

Ну в том же реакте, например, в одном файле пишут и JS-код и похожую на HTML разметку. А вместо одного удобного шаблона там куча мелких компонентов - сиди разбирайся.
Аноним 2021/04/22 09:54:34  №2004302 177
>>2004108
>Бля засирать код чужими костылями
Лучше засрать своими, от этого ничего не загнется.
Ну вон юзай встроенную функцию. Вряд ли что-то шустрее найдешь

Ну и необязательно сразу все строчки разбирать. Разбей по чанкам, сохраняй промежуточный результаты. Мб очередь прикрутить, хорошо подходит под эту задачу
Аноним 2021/04/22 10:07:43  №2004314 178
>>2003746

Я имел в виду, что мы можем сделать несколько функций, и основной код (либо вне функции, либо в отдельной функции), который их вызывает.

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

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

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

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

-----

Также, после этой задачи советую попробовать решить такие задачи:

1) Дан массив, состоящий из чисел или строк, например: [1, 2, 3]. Сгенерируй и выведи все возможные перестановки значений этого массива. То есть, все возможные способы расставить эти числа или строки без повторов. Для массива выше будет 6 перестановок:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Кстати, перестановки изучает наука комбинаторика.

2) Есть список названий программ. У программ есть зависимости от других программ. Например, чтобы установить программу A, надо сначала установить программы B и C. Список программ дан в массиве такого вида:

$programs = [
// A зависит от B и C
'A' => ['B', 'C'],
// У B нет зависимостей
'B' => [],
// С зависит от D
'C' => ['D'],
'D' => []
]

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

$install = 'A';

Выведи, в каком порядке надо устанавливать программы. В данном примере мы должны сначала установить D, тогда мы сможем установить C, потом B, и только потом A.

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

Если захочется погуглить, то это называется задача топологической сортировки.
Ответы: >>2004404 >>2011799
Аноним 2021/04/22 10:10:14  №2004321 179
>>2003576
И что скажешь? Норм курс?
А то я скачал и не могу нормально начать его проходить - постоянно в сон клонит от его голоса
Ответы: >>2004349 >>2004430
Аноним 2021/04/22 10:14:17  №2004328 180
>>2004121
Что вообще делать с пользовательским юзер-агентом?
Какие-то тонкие настройки браузер специфик цссов?
Для статистики я бы пихнул третьи метрик сервисы
Аноним 2021/04/22 10:25:52  №2004349 181
>>2004321
Я поставил скорость 150%. На безрыбье и Дмитрий Полос гуру инфоцыганства
Аноним 2021/04/22 11:10:23  №2004404 182
>>2004314
>А затем написать основной код (либо вне функций, либо в еще одной функции), который и решает задачу, вызывая первые две функции.

Что-то типа этого?
https://ideone.com/tSOxlD

Задачки решу и скину, спасибо.
Ответы: >>2004431
Аноним 2021/04/22 11:35:02  №2004430 183
>>2004321
А ты уверен, что тебе нужен вордпресс? В шапке советуют фреймворки учить, а не цмс.

Я вот опустившийся человек, я знаю на что иду, поэтому целенаправленно иду на вордпресс
Ответы: >>2004441
Аноним 2021/04/22 11:35:26  №2004431 184
>>2004404

Да, теперь гораздо лучше.

Вот еще некоторые улучшения, которые можно сделать:

> \tfor($N; $N>=0; $N--){
Здесь стоит либо написать в первом выражении for ($N = count....), либо ничего не писать: for ( ; $N >= 0...). Просто писать $N не имеет никакого смысла.

Также, переменные принято писать с маленькой буквы, потому $n, а не $N.

> \t\t}
>\t\telse{
Правильно писать в одну строку как } else {

> $result = [];
> \tarray_push($result, $sum, $str);
>\treturn $result;
это можно записать короче как return [$x, $y].

У тебя функция checkSum делает две вещи: считает сумму купюр и генерирует строчку для вывода. Но строчка для вывода нам нужна только, если мы нашли правильную комбинацию, в остальных случаях ее генерировать незачем. Можно сделать вместо checkSum 2 отдельных функции. И вызывать функцию генерации строки только когда мы нашли правильную комбинацию.

У тебя в Main используется рекурсия (вызов самой себя). Ее можно заменить на цикл for или while:

Пока (мы не дошли до конца) {
проверить текущую комбинацию;
взять следующую комбинацию;
}

Так будет чуть нагляднее.
Аноним 2021/04/22 11:50:24  №2004441 185
>>2004430
Да я просто хочу побыстрее вкатиться, а там уже по ходу дела переметнуться в ларавель
Ответы: >>2004450 >>2004453 >>2004462
Аноним 2021/04/22 12:00:16  №2004450 186
>>2004441
В ларавель с нуля вкатываются
Ответы: >>2004480
Аноним 2021/04/22 12:02:48  №2004452 187
>>2004276
>Шаблоны использовать плохо
Да

>Использовать JS код в шаблонах плохо
Пиздец как плохо

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

>Ну в том же реакте, например, в одном файле пишут и JS-код и похожую на HTML разметку
Там своя хуйня, ничего не скажу за реакт, я с ангуляром работал (в реакте особый язык JSX вроде или как-то так)
Аноним 2021/04/22 12:03:08  №2004453 188
>>2004441
Вротпресс тоже долго учить. В гло академии в марте стрим был - там челик спросил у Артема Исламова - можно ли до начала лета успеть вротпресс освоить, если каждый день дрочиься не вылезая из компа. А Исламов сказал, что очко ставит, что нельзя вротпресс с марта до лета задрочить
Ответы: >>2004480
Аноним 2021/04/22 12:09:51  №2004462 189
>>2004441
>Хочу вротпресс
>чтобы потом ларавель
тоже самое, что
>хочу налево
>чтобы потом направо

Начинай с ларакастов сразу херачить крудик. Тебе знания вротпресса только мешать будут
Ответы: >>2004465 >>2004579
Аноним 2021/04/22 12:12:06  №2004465 190
>>2004462

Какие ларакасты, если он ООП не знает? Надо изучать основы сначала.
Ответы: >>2004595
Аноним 2021/04/22 12:12:24  №2004466 191
>>2004276
>А вместо одного удобного шаблона
Сваленная в кучу верстка, стили, жс на несколько тысяч строк - удобный шаблон?
В таком шаблоне невозможно понять, где заканчивается один компонент и начинается другой.
Можно с тем же успехом код не разбивать по файлам
Аноним 2021/04/22 12:14:03  №2004467 192
image.png (12, 802x66)
66x802
Вот это платина как по мне
Так там выставляется токен для посетителя
>>2003367
Аноним 2021/04/22 12:21:23  №2004480 193
>>2004450
>>2004453
Ладно, раз такая пьянка, продолжу тему вкатывания.

Как думаете есть шанс вкатиться стажером с одним выполненным проектом? Я пилю CRUD с регистрацией/авторизацией используя MVC подход. Подключение к базе сделал при помощи PDO, сейчас пытаюсь вкурить ActiveRecord, чтобы и его еще внедрить. + планирую добавить пагинацию с AJAX.

Есть еще куча сверстанных оригинальных макетов, но врядли они в этом случае что-то значат.
Ответы: >>2004541 >>2005064
Аноним 2021/04/22 13:14:12  №2004541 194
Аноним 2021/04/22 13:17:40  №2004547 195
>>2004276
С находом данных разобрался, как у меня обычно бывает это была синтаксическая ошибка
Аноним 2021/04/22 13:38:24  №2004578 196
>>2004276
>Использовать JS код в шаблонах плохо?
>Ну в том же реакте, например, в одном файле пишут и JS-код и похожую на HTML разметку. А вместо одного удобного шаблона там куча мелких компонентов - сиди разбирайся.
Ну ты ебанутый...
Аноним 2021/04/22 13:39:49  №2004579 197
Аноним 2021/04/22 13:49:11  №2004595 198
>>2004465
В ларакастах и про основы пхп и про ооп есть свой mvc фрейм пилят по типу лары с нуля
Аноним 2021/04/22 20:09:58  №2005020 199
image.png (15, 776x193)
193x776
((
Аноним 2021/04/22 20:32:52  №2005048 200
Блин, да что сделать с Симфони формами, чтобы я мог в ChoiceType добавить с помощью js какой-то кастомный <option>, и он у меня в результате не отсеялся и прошел валидацию?
На стаковерфлоу нагуглил какие-то полтора наркоманских совета, которые на практике не работают. Не верю что в таком продуманном большом фреймворке могут быть настолько анальные ограничения.
Ответы: >>2007526
Аноним 2021/04/22 21:03:48  №2005064 201
>>2004480
MVC сейчас уже почти нигде не нужен, по крайней мере, где платят жирно, лучше осваивай DDD, событийную модель и бэкендовый бэкграунд. Шансов вкатится в нормальную контору будет поболе.
Ответы: >>2005087
Аноним 2021/04/22 21:57:47  №2005087 202
>>2005064
А как мвс и ддд мешают друг другу?
Ответы: >>2005098
Аноним 2021/04/22 22:16:31  №2005098 203
>>2005087
Неа, но в реальном мире у тебя V отваливается как минимум, а как дефолт ты начинаешь мыслить другими критериями и вопрос отделения контроллера от модели уже не встает.
Аноним 2021/04/23 06:49:43  №2005232 204
Какая средняя зп у php-миддла в Москве и Барнаулах?
Ответы: >>2005248
Аноним 2021/04/23 07:20:26  №2005248 205
Ответы: >>2005256
Аноним 2021/04/23 07:26:36  №2005256 206
>>2005248
Блять middle-php, а не сколько ты за 6-1 по 12 часов грузчиком у себя в пятерочке получаешь.
Ответы: >>2005394
Аноним 2021/04/23 07:51:35  №2005281 207
image.png (4, 796x55)
55x796
Аноны, есть вот такая функция которая смотрит какая сортировка включена и передаёт гет в функцию strnatcmp, в один момент может быть только 1 из сортировок, или sort или rsort, чтобы не городить код с проверкой какая сортировка пришла я сделал их вывод через точку как на скрине, и у меня ВСТАЛ вопрос, а как можно сделать правильно без проверок? Пытался сделать типа $_GET['sort'] || $_GET['rsort']] но это не работает, как передать в $_GET 2 названия которые нужно проверять и чтобы он выводил то что из двух имеется? Или вариант который я сделал самый короткий?
Ответы: >>2005295
Аноним 2021/04/23 07:56:00  №2005289 208
Здравствуйте. От безысходности откликался на всё подряд, даже не читая вакансий. Ответили с компании в моей Мухосрани. Тащемта раньше интересовался программированием, но меня не хватало, есть ли сейчас смысл с помощью гугла решать эти задачи и идти на собеседование. Программирование - тема интересная, но времени на её изучение крайне мало. Смогу ли в процессе разобраться, параллельно изучая всё и вся, что связано с пхп
Ответы: >>2005300
Аноним 2021/04/23 07:59:01  №2005295 209
image.png (3, 1097x22)
22x1097
>>2005281
И 2 вопрос как вот это сократить? Как проверить наличие запроса в гет сразу нескольких переменных? Или только так как на скрине?
Аноним 2021/04/23 07:59:47  №2005300 210
>>2005289
Со вторым заданием проебался, извините
Ответы: >>2005713
Аноним 2021/04/23 08:03:27  №2005311 211
.
Аноним 2021/04/23 08:58:34  №2005393 212
Аноны, есть один апи, он лежит на сайте по адресу site.ru/api/hui, я прописал в robots.txt запрет на индексацию раздела Disallow:/api, могут ли поисковые системы из-за этого перестать грузить этот апи? Просто я сохраняю в логи всех кто загружал апи чтобы отслеживать плохие запросы, а тут заметил что от туда просто пропали все боты яндекса и гугла, блокировку раздела /api в robots.txt я уже удалил, но уже 2 день ботов в логах так и нет, они могут грузить станицу но резать запрос на апи потому что он был запрещён в robots.txt? Или это ебучий хостер что-то делает что в логах не сохраняются запросы от ботов? Или после разблокировки раздела в robots нужно ещё подождать?
Аноним 2021/04/23 08:58:59  №2005394 213
>>2005256
Найс подрыв)
Интересно что же ты понимаешь под похапэ мидлом?) Он умеет что? У него опыт в крудошлепстве какой? Что кроме пыха умеет? Как у него с фронтом? Как с nosql? Как с очередями? как с кешированием? Как с написанием микросервисров?
Мидл в конторе на одном конце дс = некомпетентное чмо для конторы на другом. И у каждой блядской конторы свои требования и свои понятия лол кто пхп мидл, а кто черт ебаный. И зп у так называемого мидла могут быть 30/60/100/150 к.
Пиздуй смотреть ххашечку / гикжопы / хаброкарьеру
Ответы: >>2005422
Аноним 2021/04/23 09:09:35  №2005422 214
>>2005394
Я к чему вообще спросил, у меня знакомый один, он устроился на мясокомбинат, вообще нихуя не нужно было для этого, никаких знаний, корок. Зп 40-45. И также в моем мухосранске на хх висят объявы "пхп-разработчик", требования, на мой взгляд, там выше чем к джуну. Зарплата написана 45-60. Это что означает, те кто разместил эти объявы пидарасы которые хотят изъебнуться и найти за лоу прайс дурачков? Нахуй вообще нужно дрочиться и че-то изучать и практиковать годами, если ты можешь просто пойти хуярить быдлорабочим на производстве. Мое мнение, у чела с опытом в несколько лет на пыхе должна быть зп 75к в провинциальном городе.
Ответы: >>2005467 >>2005568
Аноним 2021/04/23 09:34:17  №2005467 215
>>2005422
>И также в моем мухосранске на хх висят объявы "пхп-разработчик", требования, на мой взгляд, там выше чем к джуну. Зарплата написана 45-60.
К сожалению не самый плохой варик для мухосрани
>те кто разместил эти объявы пидарасы которые хотят изъебнуться и найти за лоу прайс дурачков
да, провинциальная разработка как она есть
>Нахуй вообще нужно дрочиться и че-то изучать и практиковать годами,
Перспективы и то, что жопа в теплом офисе/в квартире. Если человек немного способен в программирование, у него есть усердие, сила воли и интерес, то можно вполне себе зарабатывать нормальные деньги и даже на пхп и не надрывать жопу.
>если ты можешь просто пойти хуярить быдлорабочим на производстве
Ну, если для тебя в ойти больше гемороя, чем на быдлоработе, то думаю тогда лучше выбрать второе.

Ответы: >>2005513 >>2005522
Аноним 2021/04/23 09:56:05  №2005513 216
>>2005467
>Перспективы и то, что жопа в теплом офисе/в квартире. Если человек немного способен в программирование, у него есть усердие, сила воли и интерес, то можно вполне себе зарабатывать нормальные деньги и даже на пхп и не надрывать жопу.

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

Для профессий с высоким порого вхождения должна быть на голову более высокая оплата, а не просто "офис, тепло, не надо махать киркой".
Ответы: >>2005578
Аноним 2021/04/23 10:03:19  №2005522 217
>>2005467
Два чая. В совсем уж мухосрани только развиваться собственными силами, потом релокейт/удаленка, хотя бы в крупный миллионник. Там уже можно найти +- адекватные конторы, готовые платить адекватную зп (100-150) именно за мидловый бэкенд на пыхе. Но, как анон выше писал - с одним знанием php и какой нибудь лары ты там нахуй не нужен, так что придется запотеть.
Ответы: >>2005538
Аноним 2021/04/23 10:12:45  №2005538 218
>>2005522
>крупный миллионник
>готовые платить адекватную зп (100-150) именно за мидловый бэкенд на пыхе

Хочешь сказать в Новосибе будут столько платить?
Ответы: >>2005985
Аноним 2021/04/23 10:28:02  №2005568 219
>>2005422
>Мое мнение, у чела с опытом в несколько лет на пыхе должна быть зп 75к в провинциальном городе.
Рынку на твоё мнение глубоко поебать. Если в провинции пхп макаке платят 40к, значит на это соглашаются и этого хватает для жизни.

Хочешь норм зп - не работай на регионы. Благо есть удаленка.

В моем миллионнике есть несколько контор с приличными зп, но за ними стоят достаточно крупные неместные (дсы/запад) клиенты.
На одну из таких работаю
Аноним 2021/04/23 10:35:27  №2005578 220
>>2005513
>должна быть
Во первых никто тебе ничего не должен кроме тебя самого
>с высоким порого вхождения
в пхп до безобразия низкий порог вхождения. даже в тот же голенг сложнее вкатиться, несмотря на то, что его позиционируют как язык для пупсиков. Поэтому зарплаты ниже в целом по вебу. если больше 60к получать на адекватной удаленке, живя в мухосрани, да еще и с гибким графиком, то считай хорошо устроился
Сколько смотрел не войти професесии доступные большенству по своей мухосрани - зп средние 30к если не гос и не газпромы. А многие из этих вакансий адовые шо пизда.
Так что твои претензии выглядят смешно
Аноним 2021/04/23 11:31:54  №2005631 221
Ананасы, в php нельзя просто узнать размер папки? Только обходом всех файлов внутри и сложением их размера?
Ответы: >>2005645
Аноним 2021/04/23 11:43:11  №2005645 222
>>2005631
линупсовый du через system, например.
Аноним 2021/04/23 11:52:30  №2005656 223
https://ideone.com/JRa3wI - Переменные
https://ideone.com/vlcrnL - Кубик
https://ideone.com/qFCSYi - Два кубика
https://ideone.com/MAS5To - Вклад
https://ideone.com/KKnrn3 - Айфон в кредит
https://ideone.com/DlLhnO - Массивы №1
https://ideone.com/NJhG79 - Массивы №2
https://ideone.com/ktItyH - Массивы №3
https://ideone.com/pIWh56 - Генератор имен
ОП здесь? Может проверить? Завтра буду делать задачи на строки.
Ответы: >>2005682 >>2005687 >>2007508
Аноним 2021/04/23 12:07:21  №2005682 224
>>2005656
Малаца.
Долго всё это сделал?
мимо не оп
Ответы: >>2005686 >>2005687
Аноним 2021/04/23 12:08:46  №2005686 225
>>2005682
Спасибо, весь день пока проходил решал потихонечку.
Аноним 2021/04/23 12:08:50  №2005687 226
>>2005656
>>2005682
Не малаца.
Хоть бы повыносил код в функции для повторного использования
Аноним 2021/04/23 12:27:10  №2005713 227
>>2005300
Так это изи же. За час-два сделать можно.
Ответы: >>2006101
Аноним 2021/04/23 15:03:46  №2005985 228
>>2005538
За Новосиб не скажу, но +- думаю да, В Казани, Екате, Краснодаре и Нижнем - определенно да, при этом житзнь сильно дешевле чем в дсах.
Аноним 2021/04/23 15:28:45  №2006032 229
Блять аноны, подскажите, я уже изъебался нахуй с этого говна, есть вот такая проверка массива в цикле foreach ( $array as $key => $value )

if ( stristr( $array[$key]['title'], $_GET['search'] ) )

Условие проверяет есть ли то что написано в GET в значении в многомерном массиве, если я ввожу слово с большой буквы - то всё находит, но если с маленькой, то блять пиздец 0 совпадений, ну как нахуй так а? Я же использую stristr(), а она регистронезависимая, у меня уже мозг взрывает нахуй

Я уже и пытался привести всё в нижний регистр через mb_strtolower(), и удалить лишние символы с помощью trim(), и использовать stripos(), и preg_match(), нихуя, этот пидорас находит только те слова что совпадают с написанием в массиве, а если я меняю регистр одной из букв - то уже 0 совпадений нахуй, я блять уже горю нахуй что этому пидорасу от меня нужно, какого хуя, простоphp5.2
Ответы: >>2006075
Аноним 2021/04/23 15:57:14  №2006071 230
Аноны, много лет у нас в задачнике висит задача про Банкомат (есть банкомат, в нем есть ограниченное количество купюр нескольких номиналов, как выдать сумму K?). Но все это время я сам не знал оптимального решения, и предлагал решать ее полным перебором. То есть, берем все возможные комбинации всех банкнот, пока не получим нужную сумму.

Однако, если банкнот много, перебор будет очень долгим. Например, если у нас 1000 банкнот 4 видов, и надо выдать очень большую сумму, то придется перебирать 1000 x 1000 x 1000 x 1000 = 10004 = 1 триллион комбинаций. Даже на современном компьютере это долго. Как же тогда банкоматы справляются с проблемой?

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

Кажется, я нашел способ решить задачу быстрее. Например, в примере выше нам потребуется лишь 40002 = 16 миллионов шагов.
Ответы: >>2006096
Аноним 2021/04/23 16:02:44  №2006075 231
Ответы: >>2006120 >>2006158
Аноним 2021/04/23 16:08:53  №2006096 232
>>2006071
Если купюры конкретные, естественных номиналов, то задача конечно простая.

Это когда тебе надо работать с заранее неизвестными купюрами, например в 16, 17, 983 и 3751 рубль (заранее неизвестными), вот тогда уже сложно становится.

Ответы: >>2006110 >>2006112
Аноним 2021/04/23 16:12:04  №2006101 233
>>2005713
Победитель гугл кикстарта в треде блять, щас пояснит за скорость решения
Ответы: >>2006487
Аноним 2021/04/23 16:18:57  №2006110 234
>>2006096

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

Например, 1000, 500, 100: 1000 = 2x500, 500 = 5x100, потому алгоритм работает.

Если же взять купюры 500, 200 и 100 то 500 нельзя набрать купюрами по 200 и алгоритм не сработает.
Ответы: >>2006122
Аноним 2021/04/23 16:20:53  №2006112 235
>>2006096

Вот пример, где "жадный" алгоритм не работает.

Есть купюры: 5x500, 3x200, 0x100. Надо выдать 600.

Тут "жадный" алгоритм возьмет 1 купюру по 500, останется 100 в остатке, но их он выдать не сможет.
Ответы: >>2006127 >>2006180
Аноним 2021/04/23 16:27:36  №2006120 236
>>2006075
То есть весь этот пиздец потому что я ищу русское слово? То есть stristr не может правильно привести слово из массива в нижний регистр чтобы сравнить?

Выход это прописать mb_internal_encoding('utf-8') и использовать mb_stristr?
Ответы: >>2006180
Аноним 2021/04/23 16:27:46  №2006121 237
Кстати, наша задача про банкомат эквивалентна задаче про грабителя (вот видите, наши задачи полезны и в реальной жизни):

Грабитель проник в банк и нашел там N золотых слитков весом w1, w2 .. WN. В его рюкзак может поместиться не более K килограмм. Какие слитки он должен выбрать, чтобы унести как можно больше золота.

---

Если заменить "золотой слиток весом x" на "1 купюра номиналом X", то получается задача про банкомат.
Ответы: >>2006130
Аноним 2021/04/23 16:30:12  №2006122 238
>>2006110
Всё верно, но всё равно алгоритм элементарно "хардкодится".

Тебе надо только отдельно рассматривать случаи набора некоторых сумм.

Для варианта в 100, 200 и 500 рублей вполне подойдёт обычная жадная схема
500 = 500
600 = 500+100 (проще, чем 200+200+200)
700 = 500+200

Если бы была схема, где купюры 50, 300, 500 рублей, то чуть хитрее было бы, скажем
600 = 300+300, что лучше, чем 500+50+50
Но обычно можно придумать решение частное, прописав некоторые исключения.

Когда рандомные номиналы, вот тогда уже надо ДП подключать.
Ответы: >>2006180
Аноним 2021/04/23 16:35:23  №2006127 239
>>2006112
А, понял о чём ты.

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

В любом случае под конкретные купюры задача сильно упрощается, даже с перебором, перебор будет проще.
Аноним 2021/04/23 16:36:50  №2006130 240
>>2006121
>Если заменить "золотой слиток весом x" на "1 купюра номиналом X", то получается задача про банкомат.
Очевидно нет. Банкомат должен конкретную сумму выдать, а грабитель должен взять сумму не больше K. Но можно чуть меньше.
Ответы: >>2006180
Аноним 2021/04/23 17:13:54  №2006158 241
>>2006075
Пиздец анон спасибо, а то я уже с ума чуть не сошёл нахуй, не до конца тогда понимаю почему с большой буквы он всё таки находил, типа потому что при приведении строк в 1 битовые буквы в нижнем регистре они тупо просто совпадали я так понимаю, или даже потому что большая и маленькая буква имеют разные биты, точно
Аноним 2021/04/23 17:37:33  №2006180 242
>>2006122

Нет, жадный алгоритм тут не сработает. Посмотри внимательно на ситуацию в >>2006112 . Там нет 100-рублевых купюр и жадный алгоритм не сможет выдать 600 рублей.

>>2006130

Грабитель пытается взять как можно больше (но не более K). Мы можем запустить алгоритм грабителя, а в конце просто посмотреть, сколько он набрал. Если это число меньше, чем требуемая сумма K, то выдать ее невозможно (иначе бы грабитель смог её собрать). Если набранное количество золота равно требуемой сумме K, то возможно.

>>2006120

Никакое количество проклятий не заставит stristr работать с utf-8. Надо переписывать на использование mb-функций.
Ответы: >>2006219
Аноним 2021/04/23 17:38:57  №2006182 243
Аноны поднимаю вопрос, как перечислять то что может прилететь в гете в 1 строку, чтобы не писать условие для проверки наличия каждого, объясняю, мне может прилететь 1 из 5 видов гета, мне надо записать его в переменную, как это можно сократить? Просто типа

$str = $_GET['a'].$_GET['b'].$_GET['c'].$_GET['d'].$_GET['e']

И типа тот который прилетит и запишется в переменную, а остальные просто дадут пустоту? Как правильно сделать? Этот способ работает, но мне кажется есть более правильный и такой же короткий
Ответы: >>2006249
Аноним 2021/04/23 19:02:28  №2006219 244
>>2006180
Я сижу в других тредах, где к программированию на PHP принято относиться поплёвывая свысока.

Посмотрел, что за задачка здесь обсуждается. Там конкретные купюры:
есть банкомат, в нём фиксированный набор купюр в 100, 500, 1000, 5000 рублей. Нужно проверить, можно ли выдать нужную сумму, и если можно, то выдать её наименьшим количеством купюр.

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

Задача о рюкзаке намного сложнее.
Ответы: >>2006316
Аноним 2021/04/23 19:51:50  №2006249 245
>>2006182
Засунуть ключи abcd в массив и проверять форичем isset($_GET[$i])
Ответы: >>2006488
Аноним 2021/04/23 20:45:17  №2006305 246
На сервере должны храниться все маки когда либо подключенных устройств. Как заранее загрузить с файла в оперативку до этого полученные маки, чтобы с ними сравнивать и не плодить копии, один раз. Это же бред для каждого подключения грузить файл с диска, а потом еще и если сохранять могут проблемы возникнуть при параллельном чтении/запси
Ответы: >>2006382
Аноним 2021/04/23 20:59:26  №2006316 247
>>2006219
> где к программированию на PHP принято относиться поплёвывая свысока
ванильный жс хуже если тебя утешит
Аноним 2021/04/23 22:27:24  №2006382 248
>>2006305
>Это же бред для каждого подключения грузить файл с диска, а потом еще и если сохранять могут проблемы возникнуть при параллельном чтении/запси
Почитай книжки о технологиях баз данных. Как они эти вопросы решают. Потом сам напишешь свою собственную СУБД.

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

Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
Ответы: >>2006504
Аноним 2021/04/24 06:44:22  №2006482 249
Ответы: >>2007789
Аноним 2021/04/24 06:55:28  №2006487 250
>>2006101
>Пук
Так победитель не в скорости, а в логике, лул.
Аноним 2021/04/24 06:57:37  №2006488 251
>>2006249
Блин а чё нет варианта типа isset($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e'])? Цикл не всегда вариант вставлять
Ответы: >>2006496
Аноним 2021/04/24 07:12:05  №2006496 252
>>2006488
isset(...array_map(fn ($a) => $_GET[$a], ['a', 'b', 'c', 'd']));
Ответы: >>2006507
Аноним 2021/04/24 07:19:30  №2006504 253
>>2006382
> Почему бы тебе просто не создать таблицу для маков в БД не спрашиваю. Видимо нельзя по ТЗ, иначе бы ты сам догадался.
Ну если средствами mysql это сделать быстрее и проще, то ок. Я думал на php такое быстрее написать.
> Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
Клиент не через браузер подключается. Собственная c++ прога, которая мак узнает
Аноним 2021/04/24 07:26:00  №2006507 254
>>2006496
На серваке пхп 5 версии, не вариант, кстати вот такой вариант тоже работает
if ($_GET['a'].$_GET['b'].$_GET['c'].$_GET['d'].$_GET['e']) как только одно из значений есть то условие срабатывает, но всё равно хочется что-то более правильное и без циклов
Ответы: >>2006510
Аноним 2021/04/24 07:35:03  №2006510 255
>>2006507
>пхп 5 версии
Соболезную. Надеюсь платят тонны нефти.
Ответы: >>2006553
Аноним 2021/04/24 08:39:07  №2006550 256
image.png (201, 1276x720)
720x1276
Написал стыковку на похапе, всё нормально будет?
Аноним 2021/04/24 08:39:57  №2006553 257
>>2006510
Я для себя пишу, хостер ебанат не хочет обновлять
Ответы: >>2006930
Аноним 2021/04/24 08:52:38  №2006557 258
Блджад посоны, почему вот это выдаёт ошибку?

echo "<a href=/hui.php?id=$id".(($page!=1)?:'&page=$page').">Хуй</a>";

Как правильно делать вывод условия в конкатенации?
Аноним 2021/04/24 09:05:45  №2006565 259
image.png (1568, 1277x716)
716x1277
Ну похапе не подведи
Аноним 2021/04/24 12:48:28  №2006930 260
>>2006553
>пхп 5 версии
>Я для себя пишу
Умом россию не понять
Аноним 2021/04/24 13:43:29  №2007046 261
Screenshot2.jpg (114, 810x824)
824x810
Учу по туториалу из оп-поста. Тема - переменные.
Вот, есть такой код

<?php

error_reporting(-1);

$x = $x + 10;

Должно ли вывести после сложения какой-либо результат? У меня ничего нет.
Ответы: >>2007071
Аноним 2021/04/24 14:07:58  №2007071 262
>>2007046

Нужно вывести значение переменной используя echo.

Например,

echo $x;
Ответы: >>2007073
Аноним 2021/04/24 14:10:56  №2007073 263
>>2007071
Черт возьми, точно!
Спасибо
Аноним 2021/04/24 14:15:57  №2007076 264
Привет, анонасы, хелпание, помогите разобраться. При устройстве на мидла нужно иметь какие-то свои проекты? Вот проработал джуном годик, чувствуешь, что можешь на мидла, но нет никаких своих проектов или это уже не нужно? Нужно было только при устройстве на джуна, чтобы хоть как-то показать свои умения?
Аноним 2021/04/24 14:22:15  №2007081 265
>>2007076
Привет, анонас. На мой взгляд не нужно. При найме людей там где я работал никогда не было обязательно, если что-то есть на гитхабе, то хорошо что можно посмотреть стиль, как человек пишет, нет, да и хуй с ним, так пообщаемся. У меня своих проектов вообще никогда не было.
Ответы: >>2007086
Аноним 2021/04/24 14:29:30  №2007086 266
>>2007081
Главное чтобы кандидат по зарплате не раскатывал губу! А гитхаб не нужон он
Ответы: >>2007108
Аноним 2021/04/24 14:46:14  №2007108 267
>>2007086
>git
Полезная штука, считаю, что знать её сука обязательно!
Ответы: >>2007123
Аноним 2021/04/24 14:53:26  №2007123 268
>>2007108
Нинужна. Все российские компании сидят на хохлятском гитлабе ну почти все
Аноним 2021/04/24 15:28:30  №2007188 269
>>2007076
>чувствуешь, что можешь на мидла
Связанный список напишешь? Сложность алгоритма посредством математической индукции сможешь доказать? Нет == не миддл.
Ответы: >>2007206 >>2007358
Аноним 2021/04/24 15:36:28  №2007206 270
>>2007188
А если могу, то == мидл?
Ответы: >>2007251
Аноним 2021/04/24 15:58:00  №2007251 271
>>2007206
Если можешь то мидл.
Ответы: >>2007403
Аноним 2021/04/24 16:35:48  №2007298 272
что эти ваши токены?
Аноны, вопрос к вам, где вы берете идеи для своих проектов!? Аноним 2021/04/24 17:29:27  №2007349 273
У меня вот творческий кризис, можете понакидать идей?
Ответы: >>2007790
Аноним 2021/04/24 17:39:17  №2007358 274
>>2007188
А как big o с помощью мат. индукции вычислить? Что то не припомню такого.
Ответы: >>2007482
Аноним 2021/04/24 18:11:18  №2007403 275
>>2007251
Ах, какбы я хотел, чтобы это так и работало. К сожалению сегодня средний мидл на бэке - это прост чувак который знает стек и просто умеет в ооп и смежную инфраструктуру.
Ебал бы каждого за алгоритмы на собесах, если бы решал я.
Аноним 2021/04/24 18:57:04  №2007440 276
Обращаюсь к работающим анонам. Накидайте, пожалуйста, в тред примеров своих задач с работы. А я за это помолюсь за вас Господу нашему Иисусу Христу
Ответы: >>2007515
Аноним 2021/04/24 19:33:51  №2007482 277
Аноним 2021/04/24 19:45:48  №2007497 278
Написал разбор задачи про банкомат: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md

Я описал там 3 варианта решения этой задачи.

Гляньте, если интересно, и пишите, если что-то непонятно рассказано.
Аноним 2021/04/24 19:53:01  №2007508 279
>>2005656

> Переменные
> Кубик
Ок

> Два кубика
Здесь можно было использовать переменную $anonSum и было бы короче: ($anonDice1 + $anonDice2) > ($compDice1 + $compDice2)

> Вклад
Верно

> Айфон в кредит

В общем, верно, но коряво сделан вывод:
> 13 месяц спустя: долг = -3729.8132554793 руб, выплачено всего 61270.186744521 руб.

Как долг может быть отрицательным?

> Массивы №1
> Массивы №2
> Массивы №3
Все верно

> Генератор имен
Правильно.
Ответы: >>2007789
Аноним 2021/04/24 19:57:26  №2007515 280
>>2007440
Да пожалуйста.
a-12675 Исправить ошибку авторизации (при редиректе с oauth сервера), при отправке формы в задаче a-12579

a-12789 В очереди загрузки файлов из кабинета платильшиков накапливаются невыполненные задания
Аноним 2021/04/24 20:03:34  №2007526 281
>>2005048
Бамп вопросу, еще актуален. Или серьезно никто в мире не знает, как обойти такое идиотское ограничение?
Ответы: >>2007528 >>2007568
Аноним 2021/04/24 20:04:26  №2007528 282
Ответы: >>2007530
Аноним 2021/04/24 20:07:04  №2007530 283
>>2007528
Ты про симфони или про пхп?
Ответы: >>2007531
Аноним 2021/04/24 20:07:28  №2007531 284
Ответы: >>2007533
Аноним 2021/04/24 20:11:31  №2007533 285
>>2007531
В смысле если ты с ними решишь на фронтенде что-то делать, это будут сплошные костыли и боль. No way
Ответы: >>2007538 >>2007570
Аноним 2021/04/24 20:15:24  №2007538 286
>>2007533
хотя если тебя не смущают костыли и лапша которую трудно разобрать как она отрабатывает и готов дебажить сутками то смотри в сторону https://symfony.com/doc/current/form/events.html
Аноним 2021/04/24 20:41:38  №2007568 287
>>2007526

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

То, что тебе нужно - это TextType - виджет, который принимает любой текст. Просто при выводе надо выводить его не в виде инпута, а в виде селекта. Для этого ты наследуешься от него (в серверной логике менять ничего не надо) и делаешь свой тип ComboboxType. Для него делаешь свой twig шаблон, в котором делаешь вывод селекта + возможность ввести произвольное значение с помощью скрипта.

Так ты получишь виджет, который можно потом добавить в любую форму.
Ответы: >>2007590
Аноним 2021/04/24 20:43:36  №2007570 288
>>2007533

Может быть, ты просто не разобрался как следует? По идее ты можешь создавать любые кастомные виджеты, а также менять представление для любых встроенных виджетов. Формы Симфони очень кастомизируемы.
Ответы: >>2007593
Аноним 2021/04/24 21:04:21  №2007590 289
>>2007568
Спасибо огромное, ты лучший. Подозревал что-то такое, но даже примерно не понимал как это реализовать.
Ответы: >>2007594
Аноним 2021/04/24 21:05:23  №2007593 290
>>2007570
На сколько я помню у меня всегда были трудности сделать динамическое поведение. В этих шаблонах макросы пишешь, как этот блок спрятать, как тот блок после редиректа показать. То бля блоки жаваскриптом прячешь, то шаблонах условия прописываешь. И все это еще в контроллер просачивается, разные флаги, чтобы управлять поведением формы. Все время дебажишь какая фигня из формы прилетела в листенеры. Коллекции колекций в коллекциях. Сами формы отвечают за все. За валидацию, за рендеринг шаблонов, за заполнение из запроса модели со всеми связями. По разумному там что-то совсем простое можно сделать.

Убежал в разделение на фронтенд и api и восстановил свое душевное равновесие.
Аноним 2021/04/24 21:07:39  №2007594 291
>>2007590
Рано радуешься. Симфони формы это нарушение принципов грамотной архитектуры как минимум.
Аноним 2021/04/24 21:58:13  №2007638 292
nagatoro.jpg (1409, 2048x1450)
1450x2048
Сейчас будет паста аля флорентина. Незнаю, нахуя я это вам пишу, но видимо просто не с кем поделиться, кроме родителей просто, а я поднакидался. Вообщем может хотя бы мотивирует вкатунов.
Собственно стори.
Года три назад я дропнул универ по юриспруденции на четвертом курсе, потом после года нихуянеделания, работал слесарем на стройке, вместе со знакомыми парнями. Мы неплохо подучали (40-60), вцелом было весело, даже очень, но мы очень уебывались и иногда это было опасно. Например я распахал себе живот болгаркой, хорошо хотябы неглубоко и все обошлось просто швами.
Как то раз, когда произошел очедной зимной застой, а у таких как мы это случается каждую зиму почти, когда работы почти нет, я начал думать как бы подзаработать, ну или просто найти работку без грязи и опасностей, я начал швыряться в вакансиях, нашел какую то помойную контору которой нужен был ученик-верстала за 20к, прошел html-акадению, повестал всякую хуйню несколько дней и пошел на собес. Контора была - просто лютый пиздец из мемасов, делала сайтики для бомжей на заказ за копейки, ну вообщем типикал мухосранская вебстудия. Вообщем как то отпиздился на собесе, благо бэкграунд минимальный даже был.
Меня взяли, я начал работать верстать какие то бложики, меню для пиццерий и прочее говно. Быстро понял, что я на ебаном дне, а скоро лето и опять появится работка с норм зп и я уйду. Я почти сразу начал читать и осваивать всякое в it, искать куда податься, где платят и тд. Учил жс, пых и джаву понемножку, начинал вливаться и осознавать что и зачем в вебе. Подвернулось пару проектов со знакомств и авито(лол) на маленькие сайтики. Тут я начал примерять пых уже в проде, мне зашло, я начал понимать, что мне готовы платить. Началь копать этот ваш мир, фрэймворки, вот это все. Потом отправил резюме в пяток компаний в своем городе - два отклика, два тестовых. Одно было - аля напишите фэйсбук на ларе и я заленился, другое - написать пагинатор с фильтрацией на чистом php7.2 - я вроде справился. Взяли на работу в первую более менее норм контору. И вот тут я понял, что попал куда нужно. Топовый офис, плюшки, зп в 50к (уже здорово очень казалось). Вокруг были разрабы, даже не всегда с большим опытом, но с горящими глазами и желанием пилить что то крутое и современное, реально добрый и дружный молодой коллектив. Я очень долго привыкал, не мог поверить, что так бывает, после своей прошлой вебстудии, синдром самозванца во все поля прост.
Потом понял, что я такой не один, были люди из разных сфер и с разным опытом - стоматолог, бывший манагер, девочка-препод из педа. Было тяжко немного, иногда ночами таски закрывал, но мне начало нравится все это. Окружение, общение, сам процесс работы - я втянулся. За годик я вырос до +- мидла, освоил всякое, что было в конторе и вслед за другим парнем, который позвал с собой, ушел в другую контору, уже уверенный в своих навыках. Там уже были микросервисы, симфони, нормальное кодревью и оче крепкий воркфлоу. Я бысто понял, что раньше я творил просто лютую хуйню, здесь я обучился нормальному чистому коду, архитектуре и всякому нужному в скоупе бэкенда (особенно по работе с бд и контейнерами). Вообщем в этой конторе я жил полтора гола и мне оче нравилось, дали зп, сначал в 70, потом доросла джо 120 чистыми, вообщем каеф. Параллельно работе я учил го и спринг все это время, даже по мелочи писал сервисы на го для конторы, но в релиз ничего не попало, к сожалению. И вот я понял, что уже могу больше и начал искать варианты, рассылать резюмехи, завел linkedin, кстати гитхаб даже сейчас пустой, лол. Начали писать хрюши, предлагать всякое, я прошел пару техсобесов на удаленку даже. И в начале апреля, тоже после недельного почти собеса, мне прилетел оффер из здоровой конторы в моей мухосрани с зп 200 и топ условиями. Чистый бэк - симфони, немного ноды, никакого девопса и плюс входной бонус в размере зп.

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

Главное, хочу сказать спасибо опу, чьи уроки мне очень помогли вкатываться в пых. Я желаю тебе всего самого хорошего, чел - ты красавчик, спасибо за твои уроки, они делают чью то жизнь лучше.
Ответы: >>2007645 >>2007686
Аноним 2021/04/24 21:58:29  №2007640 293
nagatoro.jpg (1409, 2048x1450)
1450x2048
Сейчас будет паста аля флорентина. Незнаю, нахуя я это вам пишу, но видимо просто не с кем поделиться, кроме родителей просто, а я поднакидался. Вообщем может хотя бы мотивирует вкатунов.
Собственно стори.
Года три назад я дропнул универ по юриспруденции на четвертом курсе, потом после года нихуянеделания, работал слесарем на стройке, вместе со знакомыми парнями. Мы неплохо подучали (40-60), вцелом было весело, даже очень, но мы очень уебывались и иногда это было опасно. Например я распахал себе живот болгаркой, хорошо хотябы неглубоко и все обошлось просто швами.
Как то раз, когда произошел очедной зимной застой, а у таких как мы это случается каждую зиму почти, когда работы почти нет, я начал думать как бы подзаработать, ну или просто найти работку без грязи и опасностей, я начал швыряться в вакансиях, нашел какую то помойную контору которой нужен был ученик-верстала за 20к, прошел html-акадению, повестал всякую хуйню несколько дней и пошел на собес. Контора была - просто лютый пиздец из мемасов, делала сайтики для бомжей на заказ за копейки, ну вообщем типикал мухосранская вебстудия. Вообщем как то отпиздился на собесе, благо бэкграунд минимальный даже был.
Меня взяли, я начал работать верстать какие то бложики, меню для пиццерий и прочее говно. Быстро понял, что я на ебаном дне, а скоро лето и опять появится работка с норм зп и я уйду. Я почти сразу начал читать и осваивать всякое в it, искать куда податься, где платят и тд. Учил жс, пых и джаву понемножку, начинал вливаться и осознавать что и зачем в вебе. Подвернулось пару проектов со знакомств и авито(лол) на маленькие сайтики. Тут я начал примерять пых уже в проде, мне зашло, я начал понимать, что мне готовы платить. Началь копать этот ваш мир, фрэймворки, вот это все. Потом отправил резюме в пяток компаний в своем городе - два отклика, два тестовых. Одно было - аля напишите фэйсбук на ларе и я заленился, другое - написать пагинатор с фильтрацией на чистом php7.2 - я вроде справился. Взяли на работу в первую более менее норм контору. И вот тут я понял, что попал куда нужно. Топовый офис, плюшки, зп в 50к (уже здорово очень казалось). Вокруг были разрабы, даже не всегда с большим опытом, но с горящими глазами и желанием пилить что то крутое и современное, реально добрый и дружный молодой коллектив. Я очень долго привыкал, не мог поверить, что так бывает, после своей прошлой вебстудии, синдром самозванца во все поля прост.
Потом понял, что я такой не один, были люди из разных сфер и с разным опытом - стоматолог, бывший манагер, девочка-препод из педа. Было тяжко немного, иногда ночами таски закрывал, но мне начало нравится все это. Окружение, общение, сам процесс работы - я втянулся. За годик я вырос до +- мидла, освоил всякое, что было в конторе и вслед за другим парнем, который позвал с собой, ушел в другую контору, уже уверенный в своих навыках. Там уже были микросервисы, симфони, нормальное кодревью и оче крепкий воркфлоу. Я бысто понял, что раньше я творил просто лютую хуйню, здесь я обучился нормальному чистому коду, архитектуре и всякому нужному в скоупе бэкенда (особенно по работе с бд и контейнерами). Вообщем в этой конторе я жил полтора гола и мне оче нравилось, дали зп, сначал в 70, потом доросла джо 120 чистыми, вообщем каеф. Параллельно работе я учил го и спринг все это время, даже по мелочи писал сервисы на го для конторы, но в релиз ничего не попало, к сожалению. И вот я понял, что уже могу больше и начал искать варианты, рассылать резюмехи, завел linkedin, кстати гитхаб даже сейчас пустой, лол. Начали писать хрюши, предлагать всякое, я прошел пару техсобесов на удаленку даже. И в начале апреля, тоже после недельного почти собеса, мне прилетел оффер из здоровой конторы в моей мухосрани с зп 200 и топ условиями. Чистый бэк - симфони, немного ноды, никакого девопса и плюс входной бонус в размере зп.

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

Главное, хочу сказать спасибо опу, чьи уроки мне очень помогли вкатываться в пых. Я желаю тебе всего самого хорошего, чел - ты красавчик, спасибо за твои уроки, они делают чью то жизнь лучше.
Ответы: >>2007645 >>2007690
Аноним 2021/04/24 21:59:58  №2007645 294
Аноним 2021/04/24 22:33:14  №2007686 295
>>2007638
Поздравляю, аноний. Правда зп твоя все еще в два раза меньше, чем у посудомойщицы в любой нормальной стране, но по нашим меркам ты почти как сын депутата
> Там уже были микросервисы, симфони, нормальное кодревью и оче крепкий воркфлоу. Я бысто понял, что раньше я творил просто лютую хуйню, здесь я обучился нормальному чистому коду, архитектуре и всякому нужному в скоупе бэкенда (особенно по работе с бд и контейнерами)
Эх, сколько уже времени пытаюсь миновать твои первые два этапа и сразу вкатиться сюда. А вакух то нет)
Аноним 2021/04/24 22:37:34  №2007690 296
>>2007640
Поздравляю тоже. Ты молодец. Мне немношко завидно и грустно
Аноним 2021/04/25 04:11:13  №2007789 297
Ответы: >>2010050
Аноним 2021/04/25 04:12:32  №2007790 298
16172116062280.png (1646, 3840x2160)
2160x3840
>>2007349
У меня есть как раз то, что тебе нужно.
Аноним 2021/04/25 06:19:39  №2007824 299
Аноны, вопрос немного не в тему, я тот анон что юзерагенты собирает, заметил переходы с info.ertelecom.ru, может кто знает что это? Провайдер перед посещением сайта показывает свою заглушку? Есть такое у кого?
Аноним 2021/04/25 15:17:13  №2008237 300
Ответы: >>2008246 >>2010059
Аноним 2021/04/25 15:20:26  №2008246 301
>>2008237
Там в некоторых местах будут пропущены \\ я знаю что это ошибка, просто не исправил во время и оно не дает мне исправить уже.
Аноним 2021/04/27 05:36:16  №2009853 302
1619500885501.png (617, 728x1000)
1000x728
За сколько минимум по времени можно выучить достаточно, чтобы откликаться на вакансии джуна?
За 3 месяца реально задрочить php, ларку и уже идти искать работу?
Аноним 2021/04/27 07:04:54  №2009888 303
>>2009853
Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
Ответы: >>2009948
Аноним 2021/04/27 08:17:37  №2009948 304
>>2009888
>Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
Что там решать пол года?
Ответы: >>2010057
Аноним 2021/04/27 08:18:10  №2009950 305
>>2009853
>За 3 месяца реально задрочить php, ларку и уже идти искать работу?
Если не тупой и задротишь часов по 40 в неделю, то вполне
Аноним 2021/04/27 08:53:07  №2009979 306
>>2009853
Самый быстрый вкат, который я видел - 7 месяцев. Весьма одаренный малый был. За три месяца с нуля - яхз какая компания на лару возьмет такого джуна.
Аноним 2021/04/27 09:51:40  №2010050 307
>>2007789

> Шифровка
> 9| '/ |\/|4|\/|bI ><4|<[-|>

> echo $cipher = strtr($text, $code)
Здесь $cipher = можно было не писать, а писать сразу echo strtr(..). А так верно.

> На словах ты Лев Толстой

> $wordArr[0][array_rand($wordArr[0])
Тут короче было написать $words1 вместо $wordArr[0].
А если ты создал массив $wordArr с вариантами слов, то можно было и цикл по нему добавить. Единственное, в этом случае надо будет в массив добавить слова вроде "Я" и переносы строк.

> Маяковский попытка
Здесь то же самое. Раз ты создал массив $words, можно было сделать и цикл по нему, чтобы не писать эти $words[0], $words[1] и так далее.

> Палиндром
Здесь вместо переменной $d можно просто писать $i + 1. Также, если мы обнаружили различие в буквах, то можно выйти из цикла, а не продолжать сравнение.

> Айпад
> \t\t$loan += ($initDeposit == 0) ? ($loan $percent) + $comission : ($loan $percent);

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

> $loan - $payment < 0
Это можно написать читабельнее: $loan < $payment. И еще читабельнее, если заменить это выражение на функцию min или max.

В остальном все верно.


Ответы: >>2010067
Аноним 2021/04/27 09:59:27  №2010057 308
>>2009948
Может сам посмотришь и мне скажешь?
Ответы: >>2010070
Аноним 2021/04/27 09:59:41  №2010059 309
>>2008237

> Номера машин

> [А,В,Е,К,М,Н,О,Р,С,Т,У,Х]
В символьных классах буквы не надо разделять запятой, надо писать просто [АВЕКМН....]. А то твоя регулярка принимает и буквы, и символ запятой.

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

> Телефоны с исправлениями
То же замечание, что и в предыдущей задаче, в остальном верно.
Ответы: >>2010067
Аноним 2021/04/27 10:01:39  №2010060 310
>>2009853
За 3 месяца можно многое успеть, особенно если ты в месяц занимаешься этим 300+ часов (10 часов в день уделяешь работе). Как вот этот чел - https://www.youtube.com/watch?v=uGrBHohIgQY&ab_channel=WilliamLin - он каждый день вставал, мылся и садился решать задачи, с перерывом на обед.
Если спросишь про меня, то я смотрю на вакансии и что они требуют в основных навыках, пока я это не знаю - не пойду, ибо не примут. Соответственно смотри по своим предпочтениям обязательно, ибо если неинтересно то зачем тебе тратить на это время, ведь потом это будет казуальным мучением.
А еще - если ты куда то торопишься, забей. Твои ресурсы тебе же не позволят ничего быстро сделать, ну к примеру адаптировать новые знания, тебе нужно отдыхать, мозг это тоже орган и он должен отдыхать, закреплять нейронные связи (Или как то так я не нейробиолог). Надеюсь помог, просто сталкивался с этой проблемой времени когда изучал свой первый язык программирования, если что еще спрашивай может я что-то знаю полезное для тебя.
Ответы: >>2010075
Аноним 2021/04/27 10:11:19  №2010067 311
>>2010050
>>2010059
Спасибо ОПчик! После регулярок я уже пикрил, буду повторять.
Я вот еще решил:
https://ideone.com/PfG2bB - Дураки человеки
https://ideone.com/LoKWGR - Гацисты (Пока без исправлений)
Почту и гацистов доделаю после того как пройду PCRE в мануале, а еще нужно попрактиковать функции с массивами с строками.
Аноним 2021/04/27 10:16:51  №2010070 312
>>2010057
А может ты?
Списком перечисли, что успел сделать, что предстоит сделать, что в прогрессе и примерное время потраченное на сделанное и в прогрессе
Ответы: >>2010071 >>2010078
Аноним 2021/04/27 10:17:18  №2010071 313
>>2010070
Двачую тоже интересно.
Аноним 2021/04/27 10:20:23  №2010075 314
image.png (294, 698x310)
310x698
>>2010060
>За 3 месяца можно многое успеть, особенно если ты в месяц занимаешься этим 300+ часов (10 часов в день уделяешь работе).
Такими темпами только в гроб/дурку.
Лайтовый вариант вката часов 20-30 в неделю. Хардкорный 40-50.
Дальше идут адовые переработки и выгорание
Ответы: >>2010085
Аноним 2021/04/27 10:23:21  №2010078 315
>>2010070
Зачем? Чтобы ты мне потом высрал что я даун и не справился с простейшими задачами за то же время что и ты?
Ответы: >>2010081
Аноним 2021/04/27 10:27:28  №2010081 316
>>2010078
>я даун и не справился с простейшими задачами
Это и так очевидно
Интересно, на чем новички запинаются в процессе вката
Ответы: >>2010083
Аноним 2021/04/27 10:29:54  №2010083 317
>>2010081
>Интересно, на чем новички запинаются в процессе вката
Интересуйся дальше, может быть подскажет кто-нибудь.
Ответы: >>2010085 >>2010087
Аноним 2021/04/27 10:30:54  №2010085 318
>>2010075
Я в пример взял вот этого чела - https://www.youtube.com/watch?v=DPxnJn3W2Es&ab_channel=AnasNuurAli - Вдохновляет.
Честно я так не могу, сидеть и решать задачи весь день. Один раз попробовал написать в TIS-100 одну задачу где нужно было угадывать последовательность цифр, типа если 3 раза прошло одно и то же число то посылаешь TRUE. И я выгорел на неделю после этого, не стоило того.
>>2010083
Почему ты так боишься показать на чем ты остановился? В этом нет ничего постыдного, все мы дауны, просто мало кто это признает (А зря).
Ответы: >>2010089
Аноним 2021/04/27 10:32:52  №2010086 319
Поясните про разработку в докере. Зависимости устанавливать на хосте, а потом копировать в контейнер или наоборот?
Ответы: >>2010131
Аноним 2021/04/27 10:34:23  №2010087 320
>>2010083
Сам запинался и запинаюсь на многих вещах в разработке.
Только если в начале это были проблемы уровня 10 строк кода, то сейчас проблемы помасштабнее вроде "как уложиться в срок", "какую архитектуру тут использовать", "как обуздать этот ебучий легаси", "что из готового функционала взять, а что лучше с нуля написать"
Аноним 2021/04/27 10:35:56  №2010089 321
>>2010085
>Почему ты так боишься показать на чем ты остановился? В этом нет ничего постыдного, все мы дауны, просто мало кто это признает (А зря).
Не люблю хамов, мне неприятно с тобой разговаривать.
Ответы: >>2010094
Аноним 2021/04/27 10:41:45  №2010094 322
Аноним 2021/04/27 11:02:00  №2010131 323
>>2010086

Есть подход, когда PHP-код не помещается в докер-образ, а просто из образа монтируется папка с ним. То есть, в докер-образе будет PHP с расширениями, а PHP-кода в нем нету.

То есть, в Dockerfile ты пишешь только команды установки PHP и нужных расширений, и команду монтирования папки с кодом.
Аноним 2021/04/27 11:39:54  №2010191 324
>>1998470 (OP)
Привет, ребята. За сколько по времени примерно учится PHP, если уже знаешь JS (фронт и совсем чуть-чуть ноду)? Здесь есть вкатуны из JS?
Ответы: >>2010235 >>2010362 >>2010390
Аноним 2021/04/27 12:06:52  №2010235 325
>>2010191
>За сколько по времени примерно учится PHP, если уже знаешь JS
За столько же, за сколько и без жс
Ответы: >>2010327
Аноним 2021/04/27 12:51:50  №2010327 326
Ответы: >>2010368
Аноним 2021/04/27 13:17:14  №2010362 327
Аноним 2021/04/27 13:19:21  №2010368 328
>>2010327
С чего ты взял, что будет быстрее?
Аноним 2021/04/27 13:29:55  №2010390 329
>>2010191
Если ты основательно выучил JS (и особенно TS), шаришь в алгоритмах и структурах данных, знаком с паттернами проектирования, то ты в принципе ты уже знаешь PHP. Ознакомься с бэкендом, поковыряй фреймворки и уже получишь представление об этом всем. JS в том виде, в котором он существует и требуется сейчас гораздо сложнее PHP.
Ответы: >>2010426
Аноним 2021/04/27 13:51:20  №2010426 330
>>2010390
>Если ты основательно выучил JS (и особенно TS), шаришь в алгоритмах и структурах данных, знаком с паттернами проектирования, то ты в принципе ты уже знаешь PHP
Если б так было, он бы уже работал мидлом.
По ощущениям - вкатун, который написал тудушку на жсе и возомнил себя кодером
Ответы: >>2010429
Аноним 2021/04/27 13:53:25  №2010429 331
>>2010426
Ну он написал, что знает. Под "знать JS" уже давно подразумевается не только тудушка.
Аноним 2021/04/27 17:12:32  №2010645 332
16174184305511.png (1462, 1280x1004)
1004x1280
>>2007076
> годик
ну пиздец, мидл уровня /b/

чому в РФ так любят называть вещи не своими именами?
помните раньше каждого полотёра "менеджером" величали?
Ответы: >>2010660 >>2011049
Аноним 2021/04/27 17:38:52  №2010660 333
Аноним 2021/04/28 04:50:50  №2011049 334
>>2010645
А когда становишься мидлом?
Ответы: >>2011067
Аноним 2021/04/28 05:59:38  №2011067 335
>>2011049
Когда заебашишь предыдущего
Ответы: >>2011108
Аноним 2021/04/28 07:14:01  №2011108 336
>>2011067
Кто-то должен тебе сказать это? Или ты должен пройти какой то тест или проверку?
Ответы: >>2011245
Аноним 2021/04/28 08:17:14  №2011186 337
>>2004276
>Как будешь использовать транспилятор при добавлении жс-кода в шаблоны?
>Транспи... что?
>Ясно. Мы вам перезвоним
Аноним 2021/04/28 09:08:44  №2011245 338
>>2011108
заходишь в опен спейс пм бросит доки на пол, если подымишь то трейни ебаный.
Ответы: >>2011746
Аноним 2021/04/28 12:50:18  №2011534 339
Посоветуйте фтп редактор для vs code.

Требования: чтоб умел помимо мгновенного сохранения на сервер, также переименовывать, создавать, удалять папки и файлы, как в нотепад++, в 2 клика
Аноним 2021/04/28 14:56:19  №2011746 340
>>2011245
А на нормальном языке можно?
Ответы: >>2011935
Аноним 2021/04/28 15:44:30  №2011799 341
>>2004314
>1) Дан массив, состоящий из чисел или строк, например: [1, 2, 3]. Сгенерируй и выведи все возможные перестановки значений этого массива. То есть, все возможные способы расставить эти числа или строки без повторов. Для массива выше будет 6 перестановок:

Че-то тяжко, осилил (если вообще осилил) только на 3 элемента:

https://ideone.com/11ZXON

Это если не гуглить и не смотреть чужие алгоритмы.
Ответы: >>2012720 >>2012721
Аноним 2021/04/28 17:37:27  №2011935 342
>>2011746
Заходишь в офис, выбираешь самого слабого с виду мидла и атакуешь его. Если не уверен в себе, то можно напасть со спины, но это не приветствуется
Ответы: >>2012237 >>2012345
Аноним 2021/04/28 22:50:36  №2012237 343
>>2011935
говорят у фронтов нужно еще съесть печень
Аноним 2021/04/29 04:21:56  №2012345 344
>>2011935
Ааа всё понял, спасибо! Буду знать.
Аноним 2021/04/29 07:16:34  №2012445 345
Бамп
Ответы: >>2012656
Аноним 2021/04/29 09:56:34  №2012656 346
Аноним 2021/04/29 09:59:22  №2012658 347
>>2007076
Если чувствуешь, что можешь на мидла, у тебя и зарплата ужэе должна быть мидлорвая очевидно. Проекты - это неплохо, особенно если в них есть что нибудь примечательное для конторы, но в результате все покажет собес+испытательный. И да, год опыта на мидла - это в 99% случаев маняфантазии.
Аноним 2021/04/29 11:13:45  №2012720 348
>>2011799

У этой задачи есть еще второй, более сложный вариант:

---

Есть массив из N разных чисел (например: [1, 2, 3, 4]), из которых можно генерировать перестановки. Мы можем сравнить, какая из перестановок больше или меньше, таким образом: сравниваем первые цифры, если они равны, сравниваем следующие и так далее, пока не найдем отличающиеся (это называется лексикографический порядок - порядок, который используется в словарях). Например, 3124 < 3142, так как первые 2 цифры у них совпадают, а третья отличается.

Допустим, мы сгенерировали все возможные перестановки и записали их в список по возрастанию.

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

---

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

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

Если эта функция получила на вход один элемент [x], то она может сгенерировать и вернуть единственную перестановку: [х]

Если же эта функция получила на вход несколько элементов: [x, y, z], то происходит следующее:

- берем за основу какой-то элемент, например x, и "вынимаем" его из массива, остается [y, z]
- вызываем функцию getCombinations с этим массивом и получаем все возможные перестановки (например: yz и zy)
- приписываем в их начало "вынутый" элемент x, получаем xyz, xzy.

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

То есть наша функция выбирает какой-то один элемент из массива, и вызывает сама себя, но с массивом меньшего размера. Мы сводим задачу "построить перестановки из 3 элементов" к задаче "построить перестановки из 2 элементов" и далее к задаче "построить перестановки из 1 элемента".

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

Далее я опишу решение к сложному варианту задачи.
Ответы: >>2015634
Аноним 2021/04/29 11:15:13  №2012721 349
>>2011799

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

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

12345
12354

12354
12435

13542
14235

15243
15324

25431
31245

Если сложно рассматривать примеры из 5 цифр, ты можешь выписать в список по возрастанию все перестановки из 4 цифр - их немного.

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

123|45
123|54

15|243
15|324

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

|25431
|31245

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

- по какому принципу определяется, где поставить черту? Например, где будет черта в комбинации 31542? (подсказка: попробуй сравнивать цифры, идя справа налево)
- после того, как мы поставили черту, по какому принципу меняется цифра справа от черты?
- по какому принципу ставятся цифры справа от черты, кроме первой?

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

-----

Кстати, по задаче с банкоматом я сделал отдельный разбор, можешь почитать, если любопытно: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md
Аноним 2021/04/29 14:50:28  №2012927 350
сап анчоусы, кто нибудь что-то знает про московску. галеру postuf ? ссылку на хх сами найдете
у всех разрабов вакансии с вилкой 300-400к + всякие бонусы, на собесе говорят что будет работа в каких то своих проектах. вопросы на тех собесе были обычные мидловские. зазывают очень усердно и настойчиво. из требований которые я выяснил на собесе: не пить не курить,отсутствие татуировок, не носить длинную бороду, не носить длинные волосы. сам про контору накопал что занимается типо white hat хакингом, но типо не на заказ, а делает контент на основе этого статьи на хабре, тик токи, видосы в инсте + то что там большая текучка и мало кто долго прорабатывает т.е. не больше года-полтора. из за чего становится непонятно откуда у них бабки чтобы платить разрабам такие бабосы. аноны, вы что нибудь знаете о ней, стоит ли туда соваться ?
Ответы: >>2012960 >>2012962 >>2012988
Аноним 2021/04/29 15:13:15  №2012960 351
>>2012927
>не пить не курить
Они там ебанутые какие-то
Аноним 2021/04/29 15:15:44  №2012962 352
>>2012927
Собесился с ними.
Там какие-то поехавшие черти сидят.
Удаленку нельзя. Сидишь в офисе под трекером и тотальной толерастией. Т.е. коллегами будут различного рода муслимы.
Ответы: >>2012978
Можно ли иммитировать юзера на php? Аноним 2021/04/29 15:21:11  №2012970 353
Я хочу, чтобы мой скрипт переходил на сайт, а сайт думал что это пользователь. Можно ли это как-то реализовать на PHP?
Ответы: >>2013476
Аноним 2021/04/29 15:27:35  №2012978 354
>>2012962
>Удаленку нельзя.
а мне сказали что можно. что еще можешь рассказать, анонче?
Ответы: >>2012989
Аноним 2021/04/29 15:34:00  №2012988 355
>>2012927
>хакингом
а хуй папе?
Аноним 2021/04/29 15:34:29  №2012989 356
>>2012978
>Удаленку нельзя.
Точнее удаленка только на время пандемии, потом в офис.

>что еще можешь рассказать
Да ничего. Общался только с их эйчаром. Сказал ему, что не пойду дальше на тех собес ибо ебал в рот работать с бабахами и под трекером.
Аноним 2021/04/29 17:58:10  №2013197 357
блять, аноны, ответьте дебилу, пожалуйста

если ли блять асинхронность? могу ли я вызывать функции(пользовательские, которые могут включать в себя I/O) асинхронно?
Ответы: >>2013213
Аноним 2021/04/29 18:18:11  №2013213 358
>>2013197

В каком-то виде есть, но надо использовать асинхронное I/O, а не обычное. Смотри ReactPHP, Swoole, RoadRunner.
Ответы: >>2013272
Аноним 2021/04/29 18:23:53  №2013217 359
Анон, помоги с докером. В девопс треде тишина.
Допустим, я клонирую репу с каким-нибудь проектом. На компе пхп не установлен, то есть мне нужно все зависимости установить компосером в контейнере и скопировать vendor на хост, чтоб не ругался шторм. composer install в докерфайле отрабатывает без ошибок, но вендор на хосте не появляется. Но если запустить composer install из контейнера вручную через docker exec, то все срабатывает. Вот мои конфиги:

docker-compose.yaml (в корне проекта)

version: '3.3'
services:
php:
build:
context: ./
dockerfile: ./docker/php-fpm/Dockerfile
ports:
- '9002:9000'
volumes:
- ./:/var/www/symfony
nginx:
build: ./docker/nginx
ports:
- '8080:80'
links:
- php
volumes_from:
- php
volumes:
- ./docker/logs/nginx/:/var/log/nginx:cached

и Dockerfile (лежит в project_root/docker/php-fpm)

FROM php:8.0-fpm

RUN apt-get update

RUN apt-get install -y libicu-dev libxml2-dev libzip-dev git unzip \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl \
&& docker-php-ext-install xml \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install ctype \
&& docker-php-ext-install iconv \
&& docker-php-ext-install zip

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && chmod +x /usr/local/bin/composer

WORKDIR /var/www/symfony

COPY ./composer.lock .
COPY ./composer.json .
RUN composer install
Аноним 2021/04/29 18:28:12  №2013220 360
>>2013217
Помню, ебался с этим кейсом.
Суть в том, что на момент сборки образа вольюмы не монтируются в хост или монтируются, но исчезают, не суть. Т.е. композер зависимости ставит, но ты их на хосте не увидишь.
Тут варианта 2:
1. Намертво зашивать вендор в докер образ
2. Ставить зависимости внешним инструментом после конца сборки, например мейком как я и сделал
Ответы: >>2013221 >>2013223
Аноним 2021/04/29 18:29:49  №2013221 361
>>2013220
>>2013217
А не, пизжу, я в пете баш скриптом ставил.
Мейк сейчас на рабочем проекте. Перепутал
Ответы: >>2013223
Аноним 2021/04/29 18:37:44  №2013223 362
>>2013220
>>2013221
Понял, спасибо. Буду ебаться с башем в таком случае
Аноним 2021/04/29 19:12:43  №2013254 363
>>2013217

Обычно при использовании Докера внутрь контейнера устанавливают только исполняемые файлы, то есть только PHP или только PHP + Composer. А папку проекта монтируют (она не копируется внутрь контейнера, а просто видна из него). Соответственно, Докер используется просто как "обертка" над PHP или Composer, чтобы спрятать их внутри контейнера (этакие костыли для линукса, в котором трудно сделать портабельные приложения).

Судя по коду, ты при вызове Докера должен явно примонтировать свою папку проекта с помощью опции --mount. Эта опция "прокинет" папку с хоста внутрь контейнера. Посмотри на опцию volumes в docker-compose. А если не указать опцию --mount, то композер ставит файлы внутрь образа контейнера.

Эта опция передается, если ты запускаешь не docker, а docker-compose. Наверно, предполагается что ты должен использовать его, а не вручную запускать контейнеры. И тогда папка подмонтируется и композер поставит пакеты куда надо.

Этот докерфайл вообще, по моему, кривой. Например, зачем там COPY, который копирует файл composer.json в то же самое место? Зачем там вписана команда composer install? Как тогда там делать composer update и другие команды? Разве не логичнее сделать два образа, один для php-fpm, а другой для композера? Как просматривать логи php-fpm и php? Умный анон, объясни.

Зачем там нужен nginx, если можно просто использовать dev-сервер в PHP? И при этом логи будут идти в консоли, а не неизвестно где. И почему нет базы данных?

И кстати, умный анон, раз ты тут, поясни, зачем Докер на каждую строчку Dockerfile создает новый образ, а не пишет все в один образ? И почему люди пишут кучу команд через &&, а не пишут RUN несколько раз? Разве это удобно?

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

----

Кстати, я почитал справку по Докеру, и там советуют использовать вместо монтирования какие-то "volumes". В чем плюсы, я плохо понял, такое ощущение, что у них только минусы:

- данные volumes хранятся где-то в /var/lib, а не в папке проекта и не синхронизируются с папкой проекта

То есть, для PHP кода volumes не подходят, это скорее для хранения данных какой-нибудь mysql, хотя опять же непонятно, почему бы не использовать для этого папку проекта? Может быть, тут есть кто-то, кто разбирается в этом дьявольском отродье и получше сможет объяснить.
Ответы: >>2013281 >>2013608
Аноним 2021/04/29 19:33:16  №2013272 364
>>2013213

Эх... бля. Придется всё же использоваться PCNTL в CLI для кеширования, а FPM уже будет отдавать кэшированный результаты. Хотя мб попробую ReactPHP.

Спасибо!
Аноним 2021/04/29 19:41:10  №2013281 365
>>2013254

И кстати, умный анон, раз ты тут, поясни, зачем Докер на каждую строчку Dockerfile создает новый образ, а не пишет все в один образ? И почему люди пишут кучу команд через &&, а не пишут RUN несколько раз? Разве это удобно?

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

Кстати, я почитал справку по Докеру, и там советуют использовать вместо монтирования какие-то "volumes". В чем плюсы, я плохо понял, такое ощущение, что у них только минусы.

- можно пробросить папку с машины в контейнер простым телодвижением. Например берешь docker-compose, пишешь там
volumes:
- /var/www:/opt
и на выходе получаешь в запущенном контейнере в папке /opt/ все файлы, которые хранятся на машине в папке /var/www

Зачем там нужен nginx, если можно просто использовать dev-сервер в PHP? И при этом логи будут идти в консоли, а не неизвестно где.

- версионирование окружения. nginx сам по себе, php сам по себе. и когда тебе внезапно захочется протестировать работу приложение на другой версии php - всего лишь пересобираешь php, а не весь огромный зоопарк
Ответы: >>2013292
Аноним 2021/04/29 20:05:09  №2013292 366
>>2013281

Ох, наверно я плохо вопросы сформулировал.

Нет, я имел в виду эти volumes, которые хранятся где-то в /var: https://docs.docker.com/storage/volumes/

> Volumes are the preferred mechanism for persisting data
> Volumes have several advantages over bind mounts

Зачем это, если ты просто хочешь развернуть php-проект в dev-среде?

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

Я имел в виду, что можно обойтись без nginx и php-fpm. Просто запускать встроенный в PHP веб-сервер. Это ведь проще и удобнее. Почему для разработки все используют nginx и php-fpm, а не встроенный в PHP сервер?

Насчет RUN, по моему эти слои какое-то бессмысленное усложнение, можно было писать все в один образ и не париться, и тогда не пришлось бы писать команды через &&.
Аноним 2021/04/29 23:28:09  №2013476 367
>>2012970
да, можно

далее консультации платные %)
Ответы: >>2016388
Аноним 2021/04/30 06:46:19  №2013608 368
>>2013254
>Этот докерфайл вообще, по моему, кривой.
Вполне вероятно. Я с докером работаю второй день

>Например, зачем там COPY, который копирует файл composer.json в то же самое место?
Не в то же самое, а из корня проекта в WORKDIR (см. опцию context)

>Зачем там вписана команда composer install? Как тогда там делать composer update и другие команды?
Через docker exec

>Зачем там нужен nginx, если можно просто использовать dev-сервер в PHP? И при этом логи будут идти в консоли, а не неизвестно где. И почему нет базы данных?

Логи и так видны в консоли, если запускать docker-compose up без опции -d. База данных мне пока не нужна. А к nginxу я привык

Короче, я уже заебался по самое не могу. Всегда ненавидел колупание конфигов
Ответы: >>2013887
Аноним 2021/04/30 10:11:48  №2013838 369
Ответы: >>2013876 >>2017007
Аноним 2021/04/30 10:50:45  №2013874 370
>>2013217
Убрал composer install из докерфайла и пока сделал установку зависимостей командой docker exec -it $(docker ps -aqf "name=php") /bin/bash -c "composer install"
Ответы: >>2013880
Аноним 2021/04/30 10:51:39  №2013876 371
>>2013838
Наверно, если показать, с каким кодом я работаю, тут большая часть новичков отвалится.
Кому интересно колупать километры легаси 5+ летней выдержки
Ответы: >>2013882 >>2013904 >>2014009
Аноним 2021/04/30 10:55:31  №2013880 372
>>2013874
Вполне норм. Нет смысла пытаться запихать всё в докер.
Подобные вещи обычно пишутся в ci/cd скриптах
Ответы: >>2014012
Аноним 2021/04/30 10:56:33  №2013881 373
Аноны Здравствуйте
Помогите пожалуйста нубу
Как создать эту блядскую схему БД для интернет магазина?
Какие нужны модели, связи?
Пишу на ларке
Ответы: >>2013885
Аноним 2021/04/30 10:57:42  №2013882 374
>>2013876
У меня на работе есть проект на симфони, в директории веб (которая в новых версиях симфы называется паблик) которого живет отдельная ебанина из второй половины нулевых. Вот там просто пиздец из месива пхп, жопаскрипа, верстки и sql
Аноним 2021/04/30 11:00:36  №2013885 375
>>2013881
Вбей в гугл
>e commerce database schema
и выбирай на вкус и цвет
Аноним 2021/04/30 11:02:30  №2013887 376
>>2013608

> Не в то же самое, а из корня проекта в WORKDIR (см. опцию context)

Так при запуске docker-compose в /var/www/symfony монтируется папка с проектом:

volumes:
- ./:/var/www/symfony

И он, получается, копирует composer.json в то же самое место.
Ответы: >>2013894
Аноним 2021/04/30 11:08:44  №2013894 377
>>2013887
Я тоже так думал, но без ручного копирования этих файлов composer ругался на отсутствующий composer.json
Аноним 2021/04/30 11:29:58  №2013904 378
Ответы: >>2014109
Аноним 2021/04/30 12:16:49  №2013942 379
Как можно беспалевно пошарить код?
Чтобы его потом нельзя было нагуглить?
Ответы: >>2013960
Аноним 2021/04/30 12:47:10  №2013960 380
Ответы: >>2013973
Аноним 2021/04/30 12:55:19  №2013973 381
Ответы: >>2013990
Аноним 2021/04/30 12:56:47  №2013974 382
Пробовал через сервисы типа code to img. В одном он обрезал код пополам, в другом выдал картинку на 20мб.
Пастбин боюсь, что индексироваться будет и мне потом в тык дадут
Ответы: >>2013984
Аноним 2021/04/30 13:06:15  №2013984 383
>>2013974

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

Ответы: >>2014047 >>2014053
Аноним 2021/04/30 13:09:52  №2013990 384
Аноним 2021/04/30 13:21:30  №2014009 385
Ответы: >>2014024 >>2014048
Аноним 2021/04/30 13:23:32  №2014012 386
image.png (413, 1051x459)
459x1051
>>2013880
Норм-то оно норм, а тесты не работают. И зависимости переустанавливал, и dump-autoload делал - ничего не помогает. С хоста все пашет
Аноним 2021/04/30 13:29:56  №2014024 387
>>2014009
Иди в ларку, если симфы боишься. Там и работы больше
Ответы: >>2014757
Аноним 2021/04/30 13:45:16  №2014047 388
>>2013984
Вручную обфусцировать 2к строк не хочется...
Аноним 2021/04/30 13:46:09  №2014048 389
>>2014009
Если с этого срешься, то в пхп мирке не выживешь
Ответы: >>2014052
Аноним 2021/04/30 13:48:20  №2014052 390
>>2014048
Чому? Мало ли говна на битриксах, вордпрессах и иже с ними. Будет лендинги хуярить за милую душу
Ответы: >>2014056
Аноним 2021/04/30 13:48:27  №2014053 391
>>2013984
Ща попробую лайтовым обфускатором прогнать
Ответы: >>2014093
Аноним 2021/04/30 13:49:21  №2014056 392
>>2014052
>говна на битриксах, вордпрессах и иже с ними
Там качество кода в разы хуже и файлы не на 2к строк, а на 10к+
Аноним 2021/04/30 14:00:03  №2014074 393
ДА все норм
Аноним 2021/04/30 14:13:59  №2014093 394
>>2014053
Хуета получается, по первым строчкам видно всё
Ответы: >>2014103
Аноним 2021/04/30 14:18:18  №2014102 395
О
Аноним 2021/04/30 14:18:41  №2014103 396
>>2014093
Залей на гуглодиск файл, там думаю точно индексировать не будет
Ответы: >>2014109
Аноним 2021/04/30 14:21:15  №2014109 397
Ответы: >>2014115 >>2014141 >>2014144
Аноним 2021/04/30 14:24:25  №2014115 398
>>2014109
>https://drive.google .com/file/d/12EkOmz2MIIVNubjuRXw9G9i0LqFqiYF6/view?usp=sharing
Сложно. Как в таком коде вообще ориентируешься?
Ответы: >>2014129
Аноним 2021/04/30 14:33:11  №2014129 399
>>2014115
>Как в таком коде вообще ориентируешься?
Буквально голову ломаю. После рабочего дня уже ничего не хочется кроме как спать.
Сильно помогает xdebug. Так же не брезгую читать исходники фреймворка
Аноним 2021/04/30 14:48:45  №2014141 400
Yii.mp4 (388, 480x360)
360x480
>>2014109
Увидел хтмл теги и дальше не смотрел. Но на первый взгляд ничего сложного, просто очень громоздко
Yiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Ответы: >>2014153
Аноним 2021/04/30 14:55:12  №2014144 401
image.png (13, 635x103)
103x635
Аноним 2021/04/30 15:13:03  №2014153 402
>>2014141
>Но на первый взгляд ничего сложного, просто очень громоздко
Этого "ничего сложного" пол ляма строк
Ответы: >>2014162 >>2014178
Аноним 2021/04/30 15:18:51  №2014162 403
>>2014153
Хотели жабу - кушайте жабу.
Аноним 2021/04/30 15:28:04  №2014178 404
>>2014153
Сложность кучи говна не зависит от ее размера
Ответы: >>2014186
Аноним 2021/04/30 15:32:24  №2014186 405
>>2014178
Как раз таки зависит.
Иначе зачем микросервисы придумали?
Ответы: >>2014471
Аноним 2021/04/30 19:50:25  №2014471 406
>>2014186

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

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

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

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

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

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

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

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

Если тут есть умный анон, который может описать реальные плюсы от использования микросервисов, было бы интересно почитать.
Аноним 2021/04/30 20:49:01  №2014529 407
>>2014471
В микросервисе мало кода, поэтому о нем легко рассуждать и соответственно добавлять фичи. По крайней мере программистам, у девопсов может быть иное мнение. У микросервисов меньшее зацепление кода. Сервис можно выбростить и переписать с нуля, с монолитом такое не сделаешь. В монолит не пустишь джуна, в монолит даже сеньер будет въезжать долго. Соответственно текучка кадров очень болезненна, старые работники, что писали это монолит становятся незаменимыми.
Ответы: >>2014539 >>2014948
Аноним 2021/04/30 20:53:16  №2014534 408
>>2014471
Ты просто привык писать в одно рыло, поэтому хочешь во всем коде разбираться и править там где тебя не просят? Ну сиди в одной конторе по 10 лет разбирайся.
Ответы: >>2014948
Аноним 2021/04/30 20:58:17  №2014539 409
>>2014529
В плане разработки микросервис ничем не проще обычного модуля или библиотеки.

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

Разница главная в продакшене, что намного легче поднимать что-то. Можно использовать разные платформы, разные языки программирования, разные конфигурации используемых библиотек и модулей и т.п.
Ответы: >>2014543 >>2014952
Аноним 2021/04/30 21:02:26  №2014542 410
>>2014471
>Мне кажется, эти аргументы - что можно писать на разных языках - это плохие аргументы. Выгоднее, когда в компании используется монокультура и код пишется единообразно.
Тебе зря так кажется. Например что-то может быть относительно простым, но требовать большой производительности, и это пишут на каком-нибудь Go. А что-то требует сложной логики обработки данных, и это пишут на других языках, более удобных.

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

Даже контейнеры с БД, MQ, кешами и другим это самые что ни на есть микросервисы.
Ответы: >>2014959 >>2014959
Аноним 2021/04/30 21:02:37  №2014543 411
>>2014539
Опять ты рассуждаешь с точки зрения, как будто ты в одиночку проект пишешь. Тут у тебя ошибка.
Ответы: >>2014564
Аноним 2021/04/30 21:24:13  №2014564 412
>>2014543
Есть масса монолит проектов, в которых кодовая база в миллионы строк, где работают десятки-сотни человек.

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

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

Ты точно так же можешь выкинуть библиотеку и заменить её на другую. Главное, чтобы API был таким же.

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

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

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

И чем сильнее ты дробишь, тем чаще у тебя будут такие проблемы возникать.
Аноним 2021/05/01 06:07:35  №2014703 413
Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery.
Я правильно понимаю что верстальщиком быть-это ахуеть как нужно стараться что бы кодить и рисовать страницы, а разработчику ПХП-только писать скрипты?
Ответы: >>2014710 >>2014759
Аноним 2021/05/01 06:22:33  №2014709 414
16174184305511.png (1462, 1280x1004)
1004x1280
>>2014471
Микросервисы ради микросервисов -- просто религия и мода, очевидно же.

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

Можно хоть каждую функцию или класс вынести в отдельный сервис и воткнуть в сеть -- но зачем? Это гигантские накладные расходы.

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

ИМХО, надо действовать от обратного: я, например, выпиливаю из PHP-монолита на Symfony только действительно тормозные куски и переписываю их на более быстром языке (в моём случае Java). Также пишу микросервисы на Java там, где PHP просто не предназначен (в моём случае, конвертация видео, обработка больших данных или некоторые системные процессы).

Такой подход решает проблемы и при этом не создаёт ненужной работы.
Ответы: >>2014742 >>2015409
Аноним 2021/05/01 06:24:59  №2014710 415
Ответы: >>2014714
Аноним 2021/05/01 06:27:18  №2014714 416
>>2014710
спасибо. но блин, у вас ващ мозг способен формулировать только булевое значение? _))))
Ответы: >>2014765
Аноним 2021/05/01 07:11:04  №2014742 417
image.png (443, 737x630)
630x737
>>2014709
>Зумеры и вкатывальщики не задумываясь тащат эту идеологию просто потому что им так сказали.
В последнее время стал натыкаться на статьи о том, что монолиты это заебись, а микросервисы говно.
Ответы: >>2015324 >>2015358 >>2015372
Аноним 2021/05/01 07:34:47  №2014757 418
>>2014024
И ларка и симфони одинаково интересны, но предпочтение симфони отдаю, ибо сложно.
Аноним 2021/05/01 07:36:20  №2014759 419
Ответы: >>2014765
Аноним 2021/05/01 07:44:11  №2014765 420
>>2014759
>>2014714
спасибо.
но блин, у вас ващ мозг способен формулировать только булевое значение? _))))

Аноним 2021/05/01 10:47:34  №2014948 421
>>2014529

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

Допустим, у нас есть монолит, в котором код разбит на модули - папки. В одной папке мало кода, потому о нем легко рассуждать. Чем это хуже?

> В монолит не пустишь джуна, в монолит даже сеньер будет въезжать долго.

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

В монолите все написано в едином стиле. А в микросервисах каждый микросервис может быть написан по-своему.

Да, ты не можешь прочесть весь код монолита, если в нем миллион строк. Но если у тебя 20 микросервисов по 50 000 строк, ты ведь тоже их всех не сможешь прочесть. Да даже один микросервис не прочтешь.

>>2014534

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

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

Или еще хуже: микросервис, в котором баг, никто не поддерживает вообще (так как у нас 20 микросервисов и всего 5 человек). Что делать?

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

Ответы: >>2015370 >>2015389
Аноним 2021/05/01 10:52:11  №2014951 422
.
Аноним 2021/05/01 10:53:06  №2014952 423
>>2014539

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

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

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

Это же сплошные плюсы у монолита.

> Разница главная в продакшене, что намного легче поднимать что-то

Админу ничига не легче. Ему удобнее управлять одним сервисом, чем разбираться в куче микросервисов.
Аноним 2021/05/01 11:02:13  №2014959 424
>>2014542

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

> Даже контейнеры с БД, MQ, кешами и другим это самые что ни на есть микросервисы.

Нет. В концепции микросервисов у каждого микросервиса свое хранилище данных. То есть БД это не микросервис, а часть какого-то микросервиса.

>>2014542

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

Это правда для приложений вроде Вконтакте. Там очень высокая нагрузка и делаются сервисы на Си для отдельных задач вроде хранения списков друзей и сообщений (и кстати, они используют бинарные протоколы, а не HTTP с JSON). Но для обычных бизнес-приложений, мне кажется, это неактуально. Там могут быть высокие нагрузки, но на все подряд, а не на отдельные места.
Offline first Аноним 2021/05/01 14:54:44  №2015297 425
Привет, ОП! Мне интересно как делать offline-first приложения. Допустим, я хочу сделать список рецептов, который будет работать с телефона даже при отсутствии интернета. Правильно понимаю, что мне нужно на фронте использовать какую-то базу данных, чтобы при отсутствии интернета сохранять новые рецепты и не потерять их при выходе с сайта? Ещё нужно отслеживать offline/online статус и при появлении интернета выгружать все статьи из очереди? Так как это приложение рецептов, то там будет много картинок - предлагаю все кешировать через service worker. Ещё нужно сделать так, чтобы сайт предлагать "установить" его как приложения. Там вроде бы нужно в какой-то JSON конфиг что-то прописать.
Ответы: >>2015679
Аноним 2021/05/01 15:05:23  №2015324 426
>>2014742
до тех пор пока проект не разрастется и там черт ногу сломает, рефакторить код невозможно, не знаешь че он за собой потянет, менять что то страшно, там все по 10 раз переиспользуется и накидываешь на эту кучу с лопаты сверху
Ответы: >>2015392
Аноним 2021/05/01 15:19:05  №2015358 427
>>2014742
Пик - принцип ПВО.

Еще бывает не беру неприятную таску, жду, что кто-то другой возьмет
Аноним 2021/05/01 15:23:21  №2015370 428
>>2014948
>Чем это хуже?
то что этот кусок кода может переиспользоватся где то там/что то на него ссыдается/результаты где то еще используются и неизвестно что он за собой может потянуть, ты еще не видел некоторого говна.
Аноним 2021/05/01 15:23:34  №2015372 429
>>2014742
Главная проблема монолитов - зацепление помноженное на огромную кодовую базу. Разбираться и пытаться распутать этот клубок крайне сложно.
Не так страшны эти вещи по отдельности:
Сильное зацепление, но кодовая база маленькая - можно без сверхусилий разобраться и поправить код. Один из не очень хороших вариантов микросервисов
Слабое зацепление, но большая кодовая база - так же нет особой сложности для внесения изменений
Ответы: >>2015538 >>2015689
Аноним 2021/05/01 15:30:56  №2015389 430
>>2014948
>Да, ты не можешь прочесть весь код монолита, если в нем миллион строк. Но если у тебя 20 микросервисов по 50 000 строк, ты ведь тоже их всех не сможешь прочесть. Да даже один микросервис не прочтешь.
Так их и не надо читать все эти строки кода. Ни один разраб не сможет осилить такую огромную кодовую базу, будь он хоть трижды гением.
Микросервисы при удачном распиле можно отдать разным командам и играть в корпоративный пинг понг

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

>Но большинство компаний это не яндексы и у них ничего сложного нет
Помимо яндексов достаточно компаний, где крупная кодовая база, которой не хватает какого-то разбиения
Ответы: >>2015689
Аноним 2021/05/01 15:33:03  №2015392 431
>>2015324
О да, работаю по принципу: видишь вокруг говно - делай говно - лей в прод
Аноним 2021/05/01 15:41:30  №2015409 432
>>2014709
Пхп тормозной, а джава нет? Ебать у вас там хайлоад я вижу
Аноним 2021/05/01 17:07:34  №2015538 433
Ответы: >>2015663
Аноним 2021/05/01 17:38:50  №2015620 434
Для чего в heredoc идентификатор?
Ответы: >>2015743
Аноним 2021/05/01 17:43:11  №2015634 435
bjiidbfeibz (1).jpeg (94, 600x556)
556x600
>>2012720

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

https://ideone.com/SnepM5

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

Мимо все тот же тупой лягушенок
Ответы: >>2015743
Аноним 2021/05/01 17:54:26  №2015663 436
Ответы: >>2016229
Аноним 2021/05/01 18:04:17  №2015679 437
>>2015297

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

- мы (скорее всего) не можем выкачать всю серверную БД из-за большого объема, значит локальная БД всегда будет не полная и это не должно вызывать ошибок. Самый простой вариант - скачивать локально те рецепты, которые смотрит пользователь
- если мы будем бесконтрольно скачивать все подряд, мы можем превысить какие-нибудь лимиты (они жесткие на моб. устройствах). Как решение, можно удалять старые записи, которые пользователь дольше всего не смотрел.
- хорошо, если записи на сервере иммутабельны (можно добавлять новые, но нельзя редактировать или удалять старые). Тогда все просто. Если же это не так, надо продумывать, как обнаруживать и загружать изменения. Один из вариантов: при заходе на страницу показывать ее из локальной БД и одновременно посылать запрос на проверку актуальности данных на сервер. При этом можно ограничить частоту этих запросов (если мы проверяли минуту назад, то второй раз можно не проверять).
- если пользователь может как-то взаимодействовать со страницей: ставить лайки, писать комменты, то придется делать еще синхронизацию с клиента на сервер. То есть, добавлять лайк в локальную базу и в очередь на выгрузку на сервер. А при отображении страниц мы объединяем информацию о лайках с сервера с локальной.
- еще сложнее, если два пользователя могут редактировать один и тот же контент, будучи в оффлайне. Тогда на сервер придет 2 набора изменений, и какой он должен принять? Чьи-то правки могут потеряться. Это напоминает конфликты в гите и сплошная боль при реализации.

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

> Ещё нужно отслеживать offline/online статус и при появлении интернета выгружать все статьи из очереди?

А зачем? Если пользователь зашел в рецепт A, потом в B, потом в C и потом появился интернет, то достаточно скачать C. A и B уже пользователю неинтересны.

> предлагаю все кешировать через service worker
По моему, так это дублирование баз данных. У тебя есть Бд в приложении, и будет еще одна в сервис воркере? А зачем?

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

> Ещё нужно сделать так, чтобы сайт предлагать "установить" его как приложения.

Это элементарно.
Аноним 2021/05/01 18:10:48  №2015689 438
>>2015372

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

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

А вот у нас есть метод API в микросервисе. И мы хотим что-то в нем поменять. И это такой объем изменений, что лучше сразу оставить эту идею и оставить кривое, плохо спроектированное твоим предшественником (который и предложил внедрить микросервисы и успешно свалил) API. Разве я не прав?

>>2015389

> Микросервисы при удачном распиле можно отдать разным командам

Это если у тебя неограниченное число разработчиков. А если у тебя 5 человек и 20 микросервисов. И как они будут их всех поддерживать? Никак. А монолит абсолютно реально впятером потихонечку поддерживать и развивать.

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

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

Монолит - вот подход здорового человека.
Ответы: >>2015815
Аноним 2021/05/01 18:41:50  №2015743 439
>>2015620

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

$a = <<<END
тут текст
END; // <-- признак конца текста

То есть, текст заключен между END и END.

>>2015634

Неплохо, но тут многое стоит доработать.

Да, программа работает для массива из 4, 3 или 2 элементов. Но она не работает для массива из 5 элементов: она выдает лишь 40, а не 120 комбинаций.

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

И еще, я не очень понял принцип работы getCombinations, а именно это место:

> \t\tif($iterations <= $halfIterations){
>\t\t\tkrsort($combination);
>\t\t}

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

Вот тебе еще идеи по улучшению:

Вывод лучше делать через echo implode(), через пробел, в формате 1 2 3 4. Так читать будет легче.

Ты добавляешь $cutElement в конец массива, и из-за этого у тебя сначала идут все комбинации с 1 на конце, потом с 2 на конце и так далее. Но лучше бы добавлять $cutElement в начало массива.

Цикл foreach внутри getCombinations, как я понял, сдвигает массив (превращая [x, y, z] в [y, z, x]). Этот сдвиг можно было бы сделать через функции array_slice + array_unshift, получилось бы короче и понятнее. Или я что-то не учел?
Ответы: >>2021705
Аноним 2021/05/01 19:36:19  №2015815 440
>>2015689
>А вот у нас есть метод API в микросервисе. И мы хотим что-то в нем поменять. И это такой объем изменений, что лучше сразу оставить эту идею и оставить кривое, плохо спроектированное твоим предшественником (который и предложил внедрить микросервисы и успешно свалил) API. Разве я не прав?
Ты рассматриваешь будто один человек будет отвечать за пачку микросервисов. Это как раз плохой пример микросервиса, когда накладные расходы растут, а профита нет.

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

>А если у тебя 5 человек и 20 микросервисов
Тут ясен пень, что микросервисы ради микросервисов. С другой стороны можно каждому отдать по 4 штуки

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

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

>Монолит - вот подход здорового человека
До тех пор, пока этот монолит способна поддерживать команда из 5-7 разрабов. Дальше только разделять на сервисы.
Ответы: >>2015849 >>2016311 >>2016321
Аноним 2021/05/01 20:05:22  №2015849 441
>>2015815
>До тех пор, пока этот монолит способна поддерживать команда из 5-7 разрабов. Дальше только разделять на сервисы.
Всё-таки не совсем. Разделение не обязательно по сервисам, разделение может идти на разработчиков модулей-библиотек, каких-то частей проекта. Совершенно нормальная история.

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

Есть универсальный подход в любом сложном проектировании, даже не только в программировании и ИТ, в промышленности та же история. Модульная разработка, каждая команда делает свою какую-то часть по спецификациям интерфейсов. Условно ты занимаешься разработкой тормозов для автомобилей, у тебя есть спецификации, какие параметры у тормозов должны быть, интерфейс управления и датчики, ты эти параметры согласуешь с другими. API выкладываешь ты, но разработку согласуешь с другими.
Ответы: >>2016160
Аноним 2021/05/02 08:07:28  №2016154 442
https://ideone.com/BKPwZB
Как верно оформить регулярку, чтобы шел учет того, что знак препинания может повторяться? И обрезалось уже после последнего. И какая-то шляпа с кодировкой, вроде бы поставил всё как надо, но слетает в makeFirstLetterUppercase первый символ, если кириллица, а значит лажанул. Хелпуйте(
Ответы: >>2021834
Аноним 2021/05/02 08:16:07  №2016160 443
>>2015849
парень ты странный какой то, тебе уже несколько человек сказало, здоровые легаси монолиты тяжело поддерживать, ты чинишь одну функцию, ломается где то еще другая и начинается замкнутый круг ты чинишь баги, порождая новые баги.
Аноним 2021/05/02 09:51:30  №2016229 444
>>2015663
Теперь вижу. Серега, помимо мантр про low coupling и high cohesion, обязательно бы задвинул телегу о том, что не нужно использовать ОРМ для чтения.
Аноним 2021/05/02 11:15:00  №2016311 445
>>2015815

Вообще, в монолите тоже можно организовать версионность: сделать функции func1, func2, func3 итд. Но это, по моему, плохая идея, когда есть две функции, делающие одно и то же. Так можно делать только временно, на период пока ты меняешь старую функцию на новую.

> Меняется апи(контракт) - выпускаем новую версию апи. Кому нужно - переключатся на новое апи.

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

> Монолитные легаси системы в какой-то момент становится невозможно поддерживать. Фикс 1 бага порождает 3 новых.

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

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

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

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

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

Есть примеры, где сервисы (не микросервисы, а большие сервисы) нужны - это компании вроде Яндекс (выносить сервисы, которыми могут пользоваться несколько приложений) или Вконтакте (из-за высокой нагрузки приходится писать микросервисы на Си).
Ответы: >>2016795
Аноним 2021/05/02 11:27:51  №2016321 446
>>2015815

Я решил еще поискать в Интернете, в чем плюсы микросервисов. Ужас, что там пишут.

https://vc.ru/services/153410-zachem-krupnym-kompaniyam-mikroservisy-konteynery-i-kubernetes-kak-eti-tri-tehnologii-vyvodyat-it-na-novyy-uroven

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

Врут же. Какая еще пересборка? На PHP ничего не требуется пересобирать.

> Adidas — перенесли весь интернет-магазин на Kubernetes за полгода. Время загрузки сайта сократилось вдвое. Обновления стали развертывать 3-4 раза в день вместо раза в 4-6 недель.

Ну и чушь. Во-первых, интернет-магазину не нужны микросервисы, во-вторых, с чего бы время загрузки улучшилось? Микросервисы медленнее монолита из-за накладных расходов на передачу данных. Ну и непонятно, почему они раньше тратили по 6 недель на развертывание. У них там, наверно, ручное тестирование было. А потом просто решили не тестировать. От этого и снизилась задержка. Потому что ручное тестирование не позволяет делать 3-4 развертывания в день.

> Tinder. Из-за большого объема трафика инженерная команда Tinder столкнулась с проблемами увеличения мощностей и стабильности работы. Kubernetes стал выходом из ситуации: на него перенесли 200 сервисов — это 48 000 работающих контейнеров.

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

Я вообще перестаю видеть логику.
Ответы: >>2016331 >>2016386
Аноним 2021/05/02 11:36:53  №2016331 447
>>2016321
Заебал уже своей философией. Можно нанять одного разработчика который сделает красиво, но трудно нанять десять таких. Проще когда Васе нужно знать всего пару апи, он даже будет способен и зам задачу в жире накатать по хотелкам заказчика. Сейчас текучка во всех проектах. Сервисы это данность на больших проектах
Аноним 2021/05/02 11:40:29  №2016334 448
Ответы: >>2016343
Аноним 2021/05/02 11:44:31  №2016343 449
Аноним 2021/05/02 12:19:13  №2016379 450
Как же меня затрахал этот ларавель блять...
Особенно его DB-библиотека. Такой конченой хуйни в жизни не видел, оно состоит из костылей чуть менее, чем полностью.

Вот еще примерчик: ларавель ПРОСТ))0 взял и поменял таймзону на хуй знает какую при конвертации столбца времени в unix timestamp. То есть, умудрился похерить АБСОЛЮТНОЕ значение времени и высрать левый таймстамп.
Разумеется, таймзона на сервере пхп, mysql и в конфиге ларавеля идентична.

А все из-за того, что этот высер в самом своем нутре НЕ ИСПОЛЬЗУЕТ таймстамп блять, а выполняет овердохуя переконвертаций строковых значений времени. Библиотека карборн - вообще высер умалишенного блять
Ответы: >>2016384 >>2016398
Аноним 2021/05/02 12:24:04  №2016384 451
>>2016379
Ну а хули ты хотел то? РНР — personal home page. Писать хоть что-то серьезное на РНР... мягко говоря странный выбор.

zend franework или вызывай сишные функции через COM, ну или system (“date ...”) доя конвертации таймстампа
Ответы: >>2016398
Аноним 2021/05/02 12:24:33  №2016386 452
>>2016321
Там статья не про микросервисную архитектуру, а про кубернетис и контейнеры.

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

Без этого очень сложно что-то в работающем проекте изменить.

Ответы: >>2018742
Аноним 2021/05/02 12:27:06  №2016388 453
Аноним 2021/05/02 12:36:42  №2016398 454
>>2016379

Может это все же ты накосячил, а? UNIX_TIMESTAMP это абсолютное время (в UTC), а вот \DateTime - это местное время + таймзона. И если у тебя \DateTime, например, хранит Московское время, то оно сконвертируется в UTC при преобразовании в UNIX_TIMESTAMP. И наоборот, при преобразовании TIMESTAMP в Datetime будет учтена текущая таймзона.

К примеру, твой таймстамп 1619011200 это:

- 21 апреля, 13:20 в UTC
- 21 апреля, 16:20 по Москве

>>2016384

Мы еще не выяснили, в чем причина проблемы, а ты уже бежишь предъявлять претентзии к PHP. Возможно, PHP тут не причем, а также возможно что твой язык в 10 раз хуже, чем PHP.
Ответы: >>2016414
Аноним 2021/05/02 13:00:03  №2016414 455
>>2016398
Так я сам PHP разраб, только топлю за zend.

Не смог в байтоебство на асм/си для микроконтроллеров так и остался в вебдеве
Ответы: >>2016781
Аноним 2021/05/02 17:33:32  №2016781 456
>>2016414
А разве зенд не благополучно скончался? Сколько лет ты спал? Да, я знаю что его переименовали, но всем похуй
Ответы: >>2016861
Аноним 2021/05/02 17:41:07  №2016795 457
>>2016311
>слабым программистам легче писать новый код с нуля, чем разобраться в существующем. Писать новый код всегда легче, можно косячить как угодно, на раннем этапе это проблем не вызывает. Потому они и проталкивают эту идею "распилить" монолит. Потому что не осилили.
Еще не видел, чтобы кто-то так восхищался тем, что занимается легаси говном.
Ответы: >>2018700 >>2023710
Аноним 2021/05/02 18:08:28  №2016861 458
>>2016781
Л Е Г А С И
Е
Г
А
С
И

Во что переименовали? Видимо я правда проспал. Магенто/лава и правда больше пользуется спросом.
Ответы: >>2017225
Аноним 2021/05/02 20:32:25  №2017007 459
>>2013838

> Гацист с исправлением

> ([^,])\\s(а|но)
Здесь регулярка сработает на любое слово, начинающееся с "а" или "но". Также, выражение [^,] срабатывает на любой символ, включая пробел. То есть в этой ситуации регулярка вставит лишнюю запятую:

,(2 пробела)a

> Поиск опечаток

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

> Поиск опечаток с исправлением

Здесь та же проблема, программа в английских словах начнет заменять латинские буквы на русские.
Ответы: >>2017214 >>2020695
Аноним 2021/05/03 06:16:00  №2017214 460
Аноним 2021/05/03 06:27:25  №2017225 461
>>2016861
В ламинас. Эх, первая работа. Второй зенд и extjs. Сбежал оттуда через два месяца
Аноним 2021/05/03 13:55:57  №2017660 462
Можно ссылку на конфу в тг у треда, если такая есть
Ответы: >>2017691
Аноним 2021/05/03 14:32:35  №2017691 463
>>2017660
Зачем она тебе? Она мертва
Аноним 2021/05/03 16:26:08  №2017826 464
Ответы: >>2017919
Аноним 2021/05/03 17:38:10  №2017919 465
>>2017826

Боюсь, что придется отлаживать код. То есть либо отладчиком смотреть, что там происходит, либо натыкать var_dump по коду.
Аноним 2021/05/04 08:01:16  №2018700 466
>>2016795
Ну ты что, местного шиза не узнал? У этого месье и более скажем так, тонкие увлечения есть.
Аноним 2021/05/04 08:10:12  №2018709 467
Думал взять Слим 4 для своего пета и охуел - они говно какое-то лютое делать начали. Взяли и размазали весь микрофрейм по всему гитхабу - на каждый пук изволь поставить библиотеку, а в результате постоянные проблемы с версиями. Как эталон ебанутости - на этот фреймворк появились свои фреймворки, которые они называют скелетами. Прикиньте только - фреймворки для фреймворка. Охуеть.
Джва часа пытался собрать рабочее приложение, а в результате выяснилось, что мне ещё дописывать всё это дело самому нужно.
ОП, в учебных материалах лучше убери Слим из советов, или огранич 3 версией которая ещё целая потому, что вкатывальщикам ебаться со всем этим не варик вообще. А я укатываюсь на Люмен.

Моя жопа вышла на крейсерскую скорость.
Ответы: >>2018726
Аноним 2021/05/04 08:30:49  №2018726 468
>>2018709
Люмен тоже говно на самом деле, мне кажется что просто symfony/httpfoundation с Доктриной надо ставить, если нужно без комбайна обойтись. Еще может у Laminas API Tools ничего, но не пробовал.
Ответы: >>2018750
Аноним 2021/05/04 08:38:54  №2018742 469
>>2016386
Когда ж вы наиграетесь в свои контейнеры.
Заебали.
Аноним 2021/05/04 08:43:59  №2018750 470
>>2018726
Да понятно, что тоже говно. Мне почему Слим и нравился, что можно самому папочки накидать как удобно, прописать по своему вкусу где что, а у Люмен всё гвоздями прибито. Так и не понял зачем Слимовцы эту ересь начали творить - превращать микрофреймвор в, фактически, обычный маршрутизатор с пачкой внешних зависимостей, которые должен ставить конечный разработчик.
Ответы: >>2018860
Аноним 2021/05/04 10:15:10  №2018860 471
>>2018750
Чего тебе не хватило изкаропки то? это же микрофрэймворк для res/rec по сути. Они просто подогнали под psr по сути свои интерфейсы, как я понял.
Аноним 2021/05/04 10:54:07  №2018901 472
image.png (17, 665x220)
220x665
Пачаны, поясните почему фотка не подтягивается?

<img src="img/banner/photo.jpg">
Ответы: >>2018913
Аноним 2021/05/04 11:00:38  №2018913 473
>>2018901
Ты наверное девтулз нетворкинг заскринь, а не это
Ответы: >>2018916
Аноним 2021/05/04 11:05:26  №2018916 474
>>2018913
Хуйня какая-то, другую папку начал юзать и заработало
Ответы: >>2019131
Аноним 2021/05/04 13:04:45  №2019131 475
>>2018916
Ну значит прав не было/в конфиге веб-сервера директория не фигурировала.
Аноним 2021/05/04 14:09:35  №2019197 476
Почему так?
Ответы: >>2019201 >>2019217
Аноним 2021/05/04 14:11:37  №2019201 477
>>2019197
Зачем строку с числом сравниваешь?
Что ты ожидаешь увидеть?
Ответы: >>2019205
Аноним 2021/05/04 14:12:41  №2019205 478
>>2019201
В документации написано что при сравнений строки и числа строка конвертируется в число.
Аноним 2021/05/04 14:20:33  №2019217 479
Ответы: >>2019218
Аноним 2021/05/04 14:21:13  №2019218 480
Ответы: >>2019219
Аноним 2021/05/04 14:22:24  №2019219 481
>>2019218
Лол. В 8ой по-другому работает.
В 7ой всё как ты ожидал будет
Ответы: >>2019224
Аноним 2021/05/04 14:24:57  №2019224 482
>>2019219
Интересно они придумали конечно
Аноним 2021/05/04 14:25:43  №2019225 483
Аноним 2021/05/04 14:28:48  №2019231 484
Не могу настроить совместную работу докера, дебаггера и пхпшторма. Какого-то хера брейкпойнты работают только в фронт контроллере симфони. Поделись рабочим конфигом, анон
Аноним 2021/05/04 14:30:45  №2019233 485
Аноним 2021/05/04 14:31:15  №2019234 486
>>2019224
рекомендуют явный тайпкаст к числу делать, тогда результат как в 7ой версии
Аноним 2021/05/04 14:32:46  №2019239 487
image.png (5, 323x86)
86x323
Как-то так теперь
Аноним 2021/05/04 15:59:55  №2019380 488
>>2019224

Вообще, это плохо, что такое разрешается: "string" > 1 или "10" > 2. Так как тут непонятно, что хочет пользователь (особенно во втором примере):

- сравнить две строки по алфавиту
- сравнить два числа

Если сравнивать строки по алфавиту, то "10" < "2" так как 1 идет раньше, чем 2. Если сравнивать числа, то 10 > 2.

Такое надо избегать в коде. Явно сделай преобразование в нужный тип.
Ответы: >>2023712
Аноним 2021/05/04 16:01:42  №2019382 489
Вот кстати еще один интересный и неожиданный пример:

var_dump(-1 > null); // true

То есть, тут null не превращается в 0, как кажется интуитивно. Лучше бы конечно такая ситуация выдавала ошибку.
Аноним 2021/05/04 17:38:38  №2019464 490
Мутабельные дто - это кошерно?
Ответы: >>2019494 >>2021819
Аноним 2021/05/04 18:05:46  №2019494 491
>>2019464
Зависит от архитектуры, но вцелом скорее да, чем нет.
Ответы: >>2019501
Аноним 2021/05/04 18:11:03  №2019501 492
>>2019494
Архитектура уровня захуярить дто из реквеста в аргумент резолвере, провалидировать и отдать в контроллер
Аноним 2021/05/05 09:28:57  №2020160 493
Как запретить шторму закрываться при уходе компа в спящий режим? Бесит, сука! Раньше такого не было
Ответы: >>2020251
Аноним 2021/05/05 10:37:29  №2020251 494
>>2020160
> как

Руками

> где

В настройках
Ответы: >>2020360
Аноним 2021/05/05 11:51:50  №2020360 495
>>2020251
Не пизди, клоун. Нет там ничего, что бы относилось к режиму сна
Ответы: >>2020380
Аноним 2021/05/05 12:03:02  №2020380 496
>>2020360
Шлюха ты дырявая, ебать тебя в рот хуесоса плешивого, пидораса сутулого, опущенца ебанутого. Данному багу миллион лет, один ты особенный солнечный ребенок не в состоянии пофиксить. Пиздец ты скудомыслящий. Как ты ебанько такое нерадивое харкач только нашло? Проблядь ты рождённая от спидозного пидора-транса папаши и зарыганной лошади. Хуета из под кота ты доморощенная.

https://youtrack.jetbrains.com/issue/JBR-2732




Ответы: >>2020428 >>2020435 >>2020446
Аноним 2021/05/05 12:33:20  №2020428 497
>>2020380
Нихуя себе у тебя, падали подзалупной, бомбануло. Пиши еще, киса
Аноним 2021/05/05 12:36:38  №2020435 498
>>2020380
Ты еще и глазницы долбишься, петух, или читать не умеешь. Я спрашивал, почему шторм закрывается, а не тормозит. Как ты ебанько такое нерадивое харкач только нашло?
Аноним 2021/05/05 12:41:56  №2020446 499
>>2020380
От похапе аноны звереют.
Ответы: >>2020457 >>2020491
Аноним 2021/05/05 12:51:38  №2020457 500
>>2020446
Да это 100% python/javascript «программист»
Аноним 2021/05/05 13:08:04  №2020491 501
>>2020446
Да не, я пример в ОПчика беру, стараюсь няшно общаться и терпеливо.
Ответы: >>2020492
Аноним 2021/05/05 13:08:24  №2020492 502
>>2020491
С опчика*

быстрофикс
Аноним 2021/05/05 15:58:42  №2020695 503
Ответы: >>2020714 >>2021815
Аноним 2021/05/05 16:10:12  №2020714 504
>>2020695
Я в последних должен в регулярке поставить + чтобы все попадались опечатки. В общем пока читаю мануал по регуляркам и функциям.
Аноним 2021/05/05 16:56:50  №2020768 505
Псалмом обмазываетесь?
Ответы: >>2020773 >>2021805
Аноним 2021/05/05 17:06:55  №2020773 506
>>2020768
Обмазываюсь несвежим говном yii1
Ответы: >>2020778
Аноним 2021/05/05 17:11:37  №2020778 507
Ответы: >>2020783
Аноним 2021/05/05 17:16:33  №2020783 508
>>2020778
Там платят и почти не ебут
Ответы: >>2020794
Аноним 2021/05/05 17:32:32  №2020794 509
>>2020783
Так же и отупеть можно. Потом вообще хер куда устроишься. Я так сидел пару лет и в хуй не дул, ненапряжно крудоебствовал сутками, пока не понял, что реально деградирую
Ответы: >>2020797
Аноним 2021/05/05 17:35:19  №2020797 510
>>2020794
Пытаюсь иногда петик попиливать на говне посвежее, чтобы если выгнали, было куда податься.
С другой стороны этого несвежего говна столько, что без хлеба с икрой не останусь
Аноним 2021/05/05 20:01:52  №2020919 511
Можно ли сейчас найти работу на Zend?
Ответы: >>2021008
Аноним 2021/05/05 21:33:43  №2021008 512
>>2020919
Можно, но архи сложно
Аноним 2021/05/06 08:36:33  №2021288 513
Ананасы, у кого был такой опыт. Переката из пыха в жабу или шарп? Стоит ли так делать? Или и на пыхе есть интересные задачи?
Ответы: >>2021893
Аноним 2021/05/06 12:42:04  №2021705 514
>>2015743
>Ты можешь объяснить, почему мы сортируем половину перестановок, а другую половину - не сортируем?

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

>Это из-за того, что ты не используешь рекурсию. Ты можешь в Main() вызывать не getCombinations, а саму же Main(). То есть, тебе пришел массив из 4 элементов, ты вынимаешь один элемент и вызываешь Main() уже с массивом из трех элементов. Только надо чуть доработать функцию Main(). А функция getCombinations тогда будет не нужна вообще.

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

https://ideone.com/SnepM5

Я исправил вывод и добавление вырезанного элемента, но с остальным не понимаю что делать.

я совсем тупой что подобные задачи неделями не могу сам решить?
Ответы: >>2021800
Аноним 2021/05/06 13:32:37  №2021743 515
Есть кусок кода пик 1. Моя плюсовая прога получает пик 2. Можно ли избавиться от хуйни что вверху и оставить только строчку helloworld и тд. Или это обязательные данные, которые всегда будут присутствовать?
Аноним 2021/05/06 14:17:21  №2021800 516
>>2021705

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

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

> Мой алгоритм со сдвигом вообще будет работать с более чем тремя элементами?

Не будет. Если у нас 3 элемента [x, y, z], то сдвигами мы получаем 3 комбинации: xyz, yzx, zxy. Затем за счет сортировки мы получаем из них еще 3 комбинации, всего 6. Тут все верно. Но если у нас 4 элемента, то сдвигами мы получаем 4 комбинации, с учетом сортировки получается всего 8 комбинаций. А должно быть 24 комбинации для 4 элементов. Поэтому твоя функция getCombinations работает корректно только с 3 или менее элементами.

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

> Ведь при рекурсии он просто начнет повторять уже имеющиеся комбинации, или нет?

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

Допустим, нам дано 4 элемента [x, y, z, w]. На первое место в перестановке мы можем поставить любой из 4 элементов. Допустим, это x. Далее, на второе место мы можем поставить любой из 3 оставшихся элементов. Допустим, это y. На третье место мы можем поставить один из двух оставшихся элементов: z или w. Пусть это будет z. И на последнее место мы ставим тот элемент, который остался: w. Получилась перестановка xyzw. Выбирая другие элементы, мы получим другие перестановки.

А вот сам алгоритм, работающий по этому принципу:

Функция getCombinations(list):
.... пусть дан массив элементов list
.... если в list один элемент, то вернем единственную комбинацию из этого элемента
.... создаем пустой список комбинаций result
.... берем по очереди элементы list, выбранный элемент помещаем в переменную first:
........ вызываем getCombinations(), передавая ей список list с вырезанным элементом first. Эта функция вернет нам список возможных комбинаций.
........ к каждой из полученных комбинаций в начало приписываем first и добавляем в result
.... конец цикла
.... возвращаем result

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

Теперь рассмотрим, как будет работать этот алгоритм, если у нас дано 4 элемента: x, y, z, w

- функция вынет из массива x и вызовет себя, чтобы получить все комбинации из элементов y, z, w (их будет 6 штук: yzw, ywz, zyw, zwy, wyz, wzy). К ним в начало она припишет x.
- затем функция вынет из массива y и вызовет себя со списком x, z, w (еще 6 штук)
- затем вынет z и вызовет себя со списком x, y, w
- затем вынет w и вызовет себя со списком x, y, z

Каждый раз мы передаем себе разные наборы букв и потому получаем разные комбинации. И также, каждый раз мы приписываем в начало комбинаций разную букву: первый раз x, второй раз y, в третий z, в четвертый w. Таким образом, все 24 комбинации будут разные.

Попробуй написать эту функцию в виде кода и можешь убедиться, что она будет работать корректно.
Ответы: >>2023760
Аноним 2021/05/06 14:20:06  №2021805 517
>>2020768

Псалм на приватном проекте просто упал. phpstan работает хорошо, но выдает кучу предупреждений (не всегда по делу), потому вызываю его только для измененных файлов.
Ответы: >>2022172
Аноним 2021/05/06 14:28:56  №2021815 518
>>2020695

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

Если массивы будут больше, то трудно сопоставить между собой регулярку и соответствующее выражение для замены (надо отсчитывать, под каким номером они идут). Лучше было сделать один массив вида [регулярка => замена], а из него уже получать отдельные массивы.

> а|но)\\s+
Здесь лучше использовать \\b, так как после "но" может идти еще одна запятая.

> ([а-яА-Я])([aceopx])([а-яА-Я])
Эта регулярка не сработает, если латинская буква идет первой или последней в слове. Также, ё не входит в диапазон а-я и её надо указывать отдельно.

> $word = strtr($word, $replace);
Этим ты сохраняешь слово в переменную $word, но массив $text остается неизменным. $word это лишь копия слова из массива и ты меняешь копию, а не оригинал в массиве.

Аноним 2021/05/06 14:32:22  №2021819 519
>>2019464

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

Я, кстати, не особо люблю DTO, так как они добавляют преобразования. Сначала ты должен преобразовать данные в DTO, а потом это DTO в какую-нибудь модель. Добавляется лишний код для этих преобразований. Если можно без них обойтись, то наверно лучше обойтись.
Ответы: >>2022160
Аноним 2021/05/06 14:39:21  №2021834 520
>>2016154

> $text[0]
Ошибка здесь. Ты берешь не первую букву, а первый байт строки, а одна буква может состоять из нескольких байт и в этом случае ты лишь откусываешь от нее кусочек. Надо использовать mb_substr. Урок: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

Насчет регулярки. Ты использовал утверждение: разрезать строку в том месте, перед которым идет знак препинания. Надо добавить второе условие: разрезать строку в месте, перед которым идет знак препинания и после которого нет знака препинания.
Аноним 2021/05/06 15:07:32  №2021893 521
>>2021288
Перекатываться однозначно стоит. На РНР если только формы шлепать. Гостевые/форумы нахуй никому не нужны. А больше и не видно сферы применения. Шучу конечно. CRM и прочие корпоративные порталы всё ещё котируются. Интернет магазины ещё кому-то нужны.

Java/C# вечны. Работы на них существенно больше.
Ответы: >>2021946 >>2021976 >>2022304
Аноним 2021/05/06 15:44:54  №2021946 522
>>2021893
Ты сам-то шарпист/джавист или с дивана вещаешь?
Ответы: >>2022005
Аноним 2021/05/06 15:56:04  №2021976 523
>>2021893
Да хз стоит ли для старта в пых лезть, или сразу в шарпы. Ну и в шарп хуй попадёшь, дожить надо до этого момента
Ответы: >>2022005
Аноним 2021/05/06 16:08:51  №2022005 524
>>2021946
Я сам не разраб вовсе, а сетевой инженер. Так как опыт большой работы в разных компаниях, то повидал я разного. Даже в повседневной работе на виртуалочках у нас крутятся проекты на java/c#. Понятно, что есть zabbix и всякие прочие вещи на php, но это не разрабатываемые с 0 проекты. Это уже поддерживаемые продукты. Взять, например, продукты атлассина jira/confluence — java. Корпоративные порталы битрикс+1с повсеместно, есть какие-то самописные вещи на РНР, но это редкость. Я не говорю, что работы для РНР нет, она есть, но её сфера, как по мне, не стоит потраченного времени. Ява и с# более универсальные, работы в люьой сфере много. Как то так.


>>2021976
# сразу, можешь влиться в ряды QA automation ( selenium webdriver). А там подтянишь скиллы и куда кривая выведет: разрабы, девопсы, мытьё туалетов. Самое главное работа в команде, если будешь постоянно: а вот я думаю, а вот я решил — твое я и твое мнение мало кому нужно. Вот коллективный разум и умение работать в коллективе это 50% успеха.
Ответы: >>2022022 >>2022171
Аноним 2021/05/06 16:15:49  №2022022 525
>>2022005
>Корпоративные порталы битрикс+1с повсеместно, есть какие-то самописные вещи на РНР, но это редкость.
Выборка по пыхе маловата.
Так-то полно всякого продуктового на ларе/симфе
Ответы: >>2022095
Аноним 2021/05/06 16:47:12  №2022075 526
Вы бы лучше проанализировали вакансии на hh. Java неплохой язык, но на нем просто может не быть вакансий в вашем городе. А на PHP доступно много вакансий, включая удаленку.

C# неплохой язык, но работа на нем может оказаться связанной с созданием кривых уродливых форм под Windows или придется работать с MS SQL и сервером под виндой.
Ответы: >>2022088 >>2022174
Аноним 2021/05/06 17:03:02  №2022088 527
>>2022075
Про шарпы люто, бешено удваиваю кстати. Поэтому, если конечно не фанат винды - лучше предпочесть джаву, раз уж ооп хочется и всего вот этого. Но там конечно тоже свое дерьмо - легко можно нарваться на мрачнейшее корпоративное легаси и утонуть в нем. Тут вопрос вкуса наверное, из какой бочки хлебать приятнее.

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

Еще есть прекрасный рубио конечно, но он ксожалению сдувается и вакансии - сплошь легаси ебаное.
Аноним 2021/05/06 17:08:53  №2022095 528
>>2022022
Ну какая есть. 10-15 лет назад картина была совершенно противоположная.
Аноним 2021/05/06 18:36:39  №2022160 529
>>2021819
А не надо ручками дто создавать. В дто очень удобно описывать правила валидации модели, которая из него создается. Сплошные плюсы, код модели чище и она не может быть невалидна, так как создается из няшной валидной дтошки. И это только один пример
Аноним 2021/05/06 18:43:17  №2022171 530
>>2022005
Насчёт нахуй никому не нужного мнения согласен. Ну я хз как поступить, не охота изначально обосраться. И минимизировать это, ну и нужно в любом случае куда-то вкатиться. Лютый пиздец...
Ответы: >>2022341 >>2022381
Аноним 2021/05/06 18:44:22  №2022172 531
Аноним 2021/05/06 18:44:48  №2022174 532
>>2022075
Шарп как-то продуман, ну хз стоит ли вкатываться начинающему изначально в него. Пых не сильно охота, ну по-моему придётся в него входить...
Ответы: >>2022178
Аноним 2021/05/06 18:49:48  №2022178 533
>>2022174
Так не учи, блядь, если не охота. Тебя что, уговаривает кто-то?
Ответы: >>2022237
Аноним 2021/05/06 20:02:52  №2022237 534
>>2022178
нет, хочу понять, что более оптимально, дабы не обосраться
Ответы: >>2022274
Аноним 2021/05/06 20:30:03  №2022274 535
>>2022237
Оптимально, чтобы быстро заработать на хлеб с водой - пых/js/пистон (пистон с натяжкой, на джанге мало работы сейчас), хотя и js на бэке сейчас положнее пыха обычно.
Хочешь как тру бэкендер - любой популярный строгий язык (шарп, жава, го).
Хочешь быть тру погромистом - раст/кресты, но учиться будешь года три, и то если не тупой.
Ответы: >>2022282 >>2022283
Аноним 2021/05/06 20:35:48  №2022282 536
>>2022274
пыха развращает наверное, потом на строгий язык с мучениями переходить, наверное...
Ответы: >>2022521
Аноним 2021/05/06 20:36:05  №2022283 537
>>2022274
а так за ответ спасибо, анон
Аноним 2021/05/06 20:54:23  №2022304 538
>>2021893
Может ли симфони сделать вариант с развитием в пхп более перспективным и радужным? Говорят, это почти как джава.
Ответы: >>2022310 >>2022356 >>2022524
Аноним 2021/05/06 20:57:06  №2022310 539
>>2022304
Тебе же не нравится пыха?
Пиши на том, на чем приятнее, работа везде есть, удаленка, новые технологии и легаси...
Ответы: >>2022315 >>2022318
Аноним 2021/05/06 21:01:05  №2022315 540
>>2022310
это другой анон, интересуется, не я
Ответы: >>2022318
Аноним 2021/05/06 21:04:28  №2022318 541
Аноним 2021/05/06 21:21:03  №2022341 542
>>2022171
Не ссы, обсираются все и везде. Боязнь обосраться тебя будет демотивировать всю жизнь. Подумай наоборот. Вот тебе пример: есть тулза с номером билда 1.х.х которую пилили 5-10 лет, а потом хуяк и выкатили билд 2.х.х и в чейнджлоге читаешь: произведён рефакторинг кода. Производительность тулзы увеличена на 50%. Понимаешь? Даже такие матёрые разрабы как Линус Торвальдс пиля своё ядро писали такой код, что потом переписывали десятки других разрабов.

Лично я не вижу проблем с вкатом если: имеешь нормальную алгоритмическую подготовку, дружишь с алгеброй/геометрией/физикой, знаешь хотя бы 1 язык выше среднего. Т.е. для тебя нет проблем в плане самой разработки. Читай код на гитхабе, смотри, что ближе тебе.
Ответы: >>2022362
Аноним 2021/05/06 21:28:39  №2022356 543
>>2022304
Нет. Сфера РНР продукты для веба. Он этим и ограничится. Не взирая на попытки сделать язык более общего назначения. И то всякие ноды и питоны уже существенно наступают на пятки. Даже нахуй никому не нужный раби со своим одним единственным фрэймворком ROR местами имеет заявить.
Аноним 2021/05/06 21:31:06  №2022362 544
>>2022341
спасибо смотиваровал... легче стало, а то в депрессий
Аноним 2021/05/06 21:46:52  №2022381 545
>>2022171
>Ну я хз как поступить, не охота изначально обосраться
С таким будет тяжело в программировании.
Сам тоже борюсь с этой херней. Никак не приучу себя сначала быстро выдавать едва работающий говнокод, а потом фиксить в узких местах.
Пытаюсь заранее продумать, чтоб хорошо было. В итоге это сжирает кучу ресурсов у мозга, а кода как не было, так и не появилось.
Аноним 2021/05/07 06:33:53  №2022521 546
>>2022282
PSALM
PSALM
PSALM

От строгости охуеешь
Ответы: >>2022720
Аноним 2021/05/07 06:39:47  №2022524 547
>>2022304
Может, если найдешь нормальную работу, где обмазываются DDD, CQRS и всякими сагами с евент сорсингом. Но тебя туда не возьмут
Ответы: >>2022650 >>2023629 >>2024099
Аноним 2021/05/07 08:04:44  №2022650 548
>>2022524
>Но тебя туда не возьмут
Это самое обидное.
Пробовался пару раз на подобные ваки, на собесе завернули.
Хз как набрать нужный бекграунд, если на текущей работе сплошное говнолегаси
Ответы: >>2022673
Аноним 2021/05/07 08:19:02  №2022673 549
>>2022650
Ну можно попробовать читать Вернона с Эвансом, смотреть чужой код и пилить что-нибудь свое, начав с "тактического" ДДД
Аноним 2021/05/07 08:45:05  №2022720 550
>>2022521
Не сказал бы что это можно называть строго. Обычные правила читабельного кода. У меня и psalm и stan вместе лабают, отключена только ересь, вроде комментов в закрывающих конструкциях и phpdoc. И при этом говнокодить на коленке они не особо мешают (например писать какие нибудь разовые скрипты).
Ответы: >>2022733
Аноним 2021/05/07 08:54:46  №2022733 551
>>2022720
Псалм к читабельности кода относится чуть менее чем никак.
Ответы: >>2022774
Аноним 2021/05/07 09:15:43  №2022774 552
image.png (60, 904x391)
391x904
>>2022733
Действительно)) При чем бы тут читабельность кода.
Ответы: >>2022783
Аноним 2021/05/07 09:18:00  №2022783 553
>>2022774
Даже твой скрин подтверждает то, что псалм для контроля типов.
Ответы: >>2022785 >>2022897
Аноним 2021/05/07 09:19:28  №2022785 554
Ответы: >>2022791
Аноним 2021/05/07 09:20:49  №2022791 555
>>2022785
Сам съеби, болезный.
Аноним 2021/05/07 10:34:30  №2022897 556
>>2022783
А типы уже не влияют на читабельность?
Ответы: >>2023060
Аноним 2021/05/07 12:48:43  №2023060 557
>>2022897
Нахуй ты его кормишь?
Ответы: >>2023139
Аноним 2021/05/07 13:56:49  №2023139 558
>>2023060
Нахуй ты родился?
Все таки не зря похапешников долбоебами считают, если они даже не в состоянии определить основное назначение инструмента. И ты тому лишнее подтверждение. Возможность запилить дженерики и енамы в языке без дженериков и енамов, юнион типы (в старых версиях пхп), описание массивов - это про типы или про читаемость?

Аноним 2021/05/07 15:13:50  №2023275 559
Screenshot2.png (15, 439x403)
403x439
Почему подкласс может вызывать приватный метод базового класса?
Ответы: >>2023285 >>2023560 >>2023563
Аноним 2021/05/07 15:25:43  №2023285 560
>>2023275
Могу предположить что из-за того, что приватный метод вызывается внутри базового класса и под капотом происходит какая-то херь с именами классов.
Если поместить метод newSubclass в другой класс, то должен выбивать ошибку.

В целом очень странный кейс: создать потомка внутри родителя и вызывать от потомка метод родителя
Ответы: >>2023289
Аноним 2021/05/07 15:29:46  №2023289 561
Ответы: >>2023291
Аноним 2021/05/07 15:32:11  №2023291 562
>>2023289
Не вижу там похожего кода.
В доке вызов метода родители идет через $this
Ответы: >>2023294
Аноним 2021/05/07 15:34:44  №2023294 563
>>2023291
Там вот. $this принимает значение класса Foo
Ответы: >>2023560
Аноним 2021/05/07 16:13:02  №2023338 564
Untitled.png (48, 635x579)
579x635
помогите друзья программисты, учу ларавел и не получается справиться с одной проблемой, нужно в карусель вывести несколько штук, но они залазят друг на друга, пробовал делать это через for и не получается, как мне это сделать?

<div class="hero-quotes mt-5">
\t\t\t\t\t\t <div id="quotes-carousel" class="quotes-carousel carousel slide carousel-fade mb-5" data-ride="carousel" data-interval="8000">
\t\t\t\t\t\t\t\t<ol class="carousel-indicators">
\t\t\t\t\t\t\t\t\t<li data-target="#quotes-carousel" data-slide-to="0" class="active"></li>
\t\t\t\t\t\t\t\t\t<li data-target="#quotes-carousel" data-slide-to="1"></li>
\t\t\t\t\t\t\t\t\t<li data-target="#quotes-carousel" data-slide-to="2"></li>
\t\t\t\t\t\t\t\t</ol>
\t\t\t\t\t\t\t
\t\t\t\t\t\t\t <div class="carousel-inner">
\t\t\t\t\t\t\t\t\t@for ($i = 0; $i <= 2; $i++)\t
\t\t\t\t\t\t\t\t\t<div class="carousel-item active">
\t\t\t\t\t\t\t\t\t\t<blockquote class="quote p-4 theme-bg-light">
\t\t\t\t\t\t\t\t\t\t\t{{$review[$i]->description}}
\t\t\t\t\t\t\t\t </blockquote><!--//item-->
\t\t\t\t\t\t\t\t <div class="source media flex-column flex-md-row align-items-center">
\t\t\t\t\t\t\t\t\t\t\t<img class="source-profile mr-md-3" src="storage/{{$review[$i]->image}}" alt="image" >
\t\t\t\t\t\t\t\t\t <div class="source-info media-body text-center text-md-left">
\t\t\t\t\t\t\t\t\t\t\t\t<div class="source-name">{{$review[$i]->name}}</div>
\t\t\t\t\t\t\t\t\t\t <div class="soure-title">{{$review[$i]->position}}</div>
\t\t\t\t\t\t\t\t\t\t </div>
\t\t\t\t\t\t\t\t </div><!--//source-->
\t\t\t\t\t\t\t\t </div><!--//carousel-item-->
\t\t\t\t\t\t\t\t\t@endfor
\t\t\t\t\t\t\t\t</div><!--//carousel-inner-->
\t\t\t\t\t\t\t</div><!--//quotes-carousel-->
Ответы: >>2023342 >>2023348
Аноним 2021/05/07 16:18:50  №2023342 565
Аноним 2021/05/07 16:23:38  №2023348 566
>>2023338
А причем тут пхп, если проблема в верстке?
Аноним 2021/05/07 20:35:38  №2023560 567
>>2023275

private методы доступны в пределах класса, где они объявлены, от открывающей скобки { до закрывающей }.

Например, такой код допустим:

class A
{ // field виден начиная отсюда

private $field;

public function f(A $other)
{
$x = $other->field;
}

} // до сюда

Все корректно: обращение к field идет внутри класса A. При этом мы можем передать в f() вместо A его наследника B и все будет работать корректно.

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

В этом примере >>2023294 все интереснее. Когда мы объявляем класс Foo, мы переопределяем (заменяем) метод testPublic и добавляем второй метод с именем testPrivate. Хотя метод называется так же, как и метод в Bar, это 2 разных метода, каждый виден только в пределах своего класса. Потому они никак не конфликтуют друг с другом. Но это 2 разных метода, хоть и с одинаковым именем.

Ответы: >>2023749
Аноним 2021/05/07 20:37:57  №2023563 568
>>2023275

И еще. Ты пишешь:

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

Но разве подкласс вызывает метод callPrivate? Нет, место вызова находится в BaseClass. Он вызывает метод BaseClass#callPrivate у объекта класса SubClass.
Аноним 2021/05/07 21:50:55  №2023629 569
>>2022524
А вот с этого места поподробнее.
>где обмазываются DDD, CQRS и всякими сагами с евент сорсингом
Это какие-то практики, использование которых делает тебя крутым вне зависимости от выбранного языка?
Ответы: >>2023830
Аноним 2021/05/08 02:11:31  №2023710 570
>>2016795
Нас тут много %)

Я поддерживаю: натыкать на на каком-нибудь ларавеле "с нуля" приложение по гайдам с ютуба неизмеримо проще, чем поддерживать софт с многолетней историей. Соответственно, и платят меньше.
Ответы: >>2024198
Аноним 2021/05/08 02:13:43  №2023712 571
>>2019380
зачем же тогда РНР, если нельзя отстрелить себе ноги и жопу
Аноним 2021/05/08 06:07:01  №2023749 572
>>2023560
Я понимаю как работает доступ к private. Не понятно только почему подкласс может через -> обращаться к приватному свойству/методу базового класса. Даже если подкласс и в скобках { } базового, он, по моей логике, должен попытаться обратиться к своему свойству field.
Ответы: >>2024086
Аноним 2021/05/08 06:35:32  №2023760 573
>>2021800

>Функция getCombinations(list):
>.... пусть дан массив элементов list
>.... если в list один элемент, то вернем единственную >комбинацию из этого элемента
>.... создаем пустой список комбинаций result
>.... берем по очереди элементы list, выбранный элемент >помещаем в переменную first:
>........ вызываем getCombinations(), передавая ей список list с >вырезанным элементом first. Эта функция вернет нам список >возможных комбинаций.
>........ к каждой из полученных комбинаций в начало >приписываем first и добавляем в result
>.... конец цикла
>.... возвращаем result

Я это понял как:

https://ideone.com/h9J4W5

Ничего не работает. Я посмотрел простой пример работы рекурсии в нахождении факториала, там более-менее понятно, а что происходит здесь, и почему мы вызываем функцию внутри цикла, которая затем возвращает все имеющиеся комбинации (каким образом?) - мне непонятно.
Функция неполная и мне нужно ее как-то переделать или я не могу понять ее принцип?
Ответы: >>2024131 >>2024149
Аноним 2021/05/08 08:09:26  №2023830 574
>>2023629
>делает тебя крутым
Как минимум расширяет кругозор

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

А вообще проекты, на которых эти практики применяются, как правило намного интереснее и сложнее стандартного крудоебесия. И лучше оплачиваются. Уот такое мое мнение
Ответы: >>2024068
Аноним 2021/05/08 11:20:04  №2024068 575
>>2023830
Как же приобщиться к этому всему?
Ответы: >>2024231
Аноним 2021/05/08 11:33:24  №2024086 576
>>2023749

> Не понятно только почему подкласс может через -> обращаться к приватному свойству/методу базового класса.

Код в подклассе не может обратиться к приватному методу родителя. Это может сделать только код в родителе.

В случае с private/protected неважно, какого класса объект перед нами: BaseClass или SubClass (который создан на основе BaseClass). Важно только место, где происходит обращение. Если это место находится внутри скобок { } класса BaseClass, то подразумевается обращение к приватному методу из класса BaseClass. Если бы обращение было внутри класса SubClass, то приватный метод или свойство искались бы в нем.

Допустим, $object это объект класса C, который унаследован от B, который унаследован от A. Когда PHP видит запись вида:

$object->method();

то он ищет method сначала в C, потом в B, потом в A. При этом, если метод приватный, то проверяется, что он виден из текущего класса. То есть, при поиске еще учитывается контекст - место (класс), из которого мы делаем обращение. Например, если эта строчка написана внутри класса B, то поиск идет в таком порядке:

- сначала ищется public/protected метод в C
- если его нет в C, то ищется public/protected/private метод в B
- если его нет в B, то ищется public/protected метод в A

Если бы эта строчка была написана в классе A или C, то поиск работал бы немного по-другому в отношении приватных методов.

В твоем примере, при вызове callPrivate поиск идет так:

- ищется public/protected метод callPrivate в SubClass. Там его нет.
- ищется любой метод callPrivate в BaseClass

И поиск находит именно приватный метод в BaseClass.

Ты пишешь: "подкласс обращается". Но место, где происходит вызов callPrivate, находится в BaseClass, и это BaseClass обращается, а не подкласс. Строчка $sub->callPrivate() находится внутри BaseClass, а не внутри SubClass.

Хотя ты вызываешь $b->newSubclass(), но в реальности-то этот метод находится в BaseClass и именно из BaseClass он обращается к приватному методу.
Ответы: >>2025382
Аноним 2021/05/08 11:43:37  №2024099 577
>>2022524

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

Шины с событиями это вообще мрак. Код из-за событий становится менее понятным. Одно дело - ты вызываешь функцию x() и переходишь к ней в один клик в IDE. Другое дело - ты отправляешь событие в очередь и неизвестно, что с ним дальше произойдет. А если у тебя в системе 200 событий? А если у тебя 200 микросервисов к этой шине подсоединены? Разобраться в этом очень сложно.

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

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

Насчет DDD особо в нем не разбираюсь, прокомментировать не могу.
Ответы: >>2024225
Аноним 2021/05/08 12:08:16  №2024131 578
>>2023760

У тебя есть ошибки в реализации функции.

Во-первых, проблема тут:

>\tif(count($list) == 1){
>\t\treturn current($list);
>\t}

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

> \t\tforeach($combination as $el){
>\t\t\tarray_unshift($el, $first);
Здесь ты добавляешь элемент в $el. Но $el это не комбинация из $combination, а копия этой комбинации. Ты меняешь копию в $el, а оригинал в $combination остается неизменным.

> $result[] = $combination;
Здесь тоже ошибка. $result это список комбинаций: [k1, k2, k3] (где k1..3 - это одна комбинация в виде массива). $combination это тоже список комбинаций. Надо либо объединять эти списки, либо добавлять в result кобминации по одной, а не все сразу. Ты же вкладываешь список внутрь списка и из-за этого у тебя получился массив сложной формы.

Также, некоторые переменные названы неудачно, и это затрудняет чтение программы:

- $list лучше назвать $elements (да, я в алгоритме написал list, но это неудачное название)
- $value тогда станет $element
- $combination это не одна комбинация, а список потому надо добавить s в конце
- а вот $el переименовать в $combination

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

Ответы: >>2025372