Сохранен 1289
https://2ch.hk/pr/res/1998470.html
Из-за проблем с продлением домена ARHIVACH.NET, с 13 октября он может перестать функционировать. В связи с этим Архивач временно переходит на использование прежнего домена ARHIVACH.NG.
Напоминаем, что сайт всегда доступен через Tor по адресу arhivachovtj2jrp.onion. Установите Tor Browser для беспрепятственного доступа!

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

 Аноним 16/04/21 Птн 21:36:32 #1 №1998470 
php-noob-1.png
cat-cafe-osaka.jpg
welcome-to-php.png
cat-sad.jpg
Здесь мы изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
Loading...
Важно Аноним 16/04/21 Птн 21:37:44 #2 №1998473 
grammar.png
Код нужно писать аккуратно и оформлять, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

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

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

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

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

PSR-1 (рус.): https://svyatoslav.biz/misc/psr_translation/#_PSR-1
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/
Аноним 16/04/21 Птн 21:46:53 #3 №1998480 
Вопрос, вытекающий из последних постов прошлого треда. Давно не касался авторизации и вот этого всего, знаю, что сейчас есть стандарты и тд. Но может кто подскажет в паре слов, насколько старый вариант с md5 хэшем сейчас безопасен?
Аноним 16/04/21 Птн 22:28:48 #4 №1998506 
>>1998480
Какой старый вариант? Тебе сложно вместо md5() вызвать password_hash()?
Если использовать нормальную соль то md5 сложно взломать злоумышленику с ресурсами меньшими государственных. Но нет смысла ебаться с md5 когда у тебя из каропки password_hash и password_verify тупо всю хуйню делают за тебя.
Аноним 17/04/21 Суб 08:06:01 #5 №1998771 
нужно написать парсер, но я хочу какать
Аноним 17/04/21 Суб 14:49:34 #6 №1999047 
пук.jpg
Меня затрахали нерешаемые моим мозгом бонусные задачи из учебника, что делать?
Аноним 17/04/21 Суб 15:11:23 #7 №1999073 
>>1999047
Скорее всего ты чего-то недогнал в процессе обучения. Тут не работает как в школе\шараге и надо честно позадрачивать с недельку.
На чём всрался?
Аноним 17/04/21 Суб 15:13:26 #8 №1999079 
>>1999047

Ты можешь запостить свой код, и написать, что именно непонятно. Также, можно попробовать поискать решение задачи в гугле.
Аноним 17/04/21 Суб 15:29:36 #9 №1999103 
1522495958120494646.jpg
>>1999073
>>1999079
Да че я не догнал... Все задачи решил предыдущие, но если попросить здесь помощи по бонусным мне в сотый раз льют в уши кучу помоев, которые никак не помогают решить задачу.

https://ideone.com/kzN6Eh

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

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

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


Аноним 17/04/21 Суб 18:41:27 #10 №1999380 
>>1999103
Потому что ты занимешься хуйней.
Там дел на пару строчек.
https://ideone.com/TYAMl1
Аноним 17/04/21 Суб 18:49:27 #11 №1999384 
Извлекать данные из БД на страницу надо через аджакс?
Аноним 17/04/21 Суб 20:06:28 #12 №1999472 
Пчелибосики, палите топовые IDE для PHP.
Аноним 17/04/21 Суб 20:27:03 #13 №1999496 
Аноны, паршу рефер откуда пришёл человек и сохраняю его, например 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, как это говно во время вывода привести обратно в человеческий вид?
Аноним 17/04/21 Суб 20:37:26 #14 №1999508 
>>1999496
urldecode
Аноним 17/04/21 Суб 20:46:44 #15 №1999528 
>>1999496
Господи, куда смотрели W3C, когда вводились интернационализованные домены? Это же рак, убивающий интернеты.
Аноним 17/04/21 Суб 21:01:13 #16 №1999547 
>>1999528
Смотрели на шекели.
Долбоебы скупили свою местечковую хуиту, а теперь она никому не нужна и не используется.
Аноним 17/04/21 Суб 21:02:29 #17 №1999548 
Аноны, скажите если я в свойстве класса сохраняю не объект, а вообще класс в таком виде

$this->classProps = SomthClass::class;

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

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

Так вот:

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

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

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

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

5. Куда смотреть дальше? Laravel/Yii2/Zend/Symphony?
Аноним 17/04/21 Суб 22:26:34 #24 №1999639 
>>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 быть не может).

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

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

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

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

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

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

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

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

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

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

Раньше я уверенно декларировал ответ: "скорость разработки, быстрый и дешёвый старт любого проекта, невозможность "зависания"". Но сейчас, глядя на достаточно сложные в освоении и запуске Symfony-приложения, состоящие из многих пакетов и зависимостей, я начинаю сомневаться: до сих пор ли это так?
Аноним 18/04/21 Вск 00:52:29 #31 №1999747 
>>1999716
>ради чего мы должны мериться
Я неебу ради чего ты должен мериться. Я вот нихуя не должен - пилю приложухи и не несу пафосной хуиты. Надо будет го - подтяну го, надо ноду - подтяну ноду.
Это просто работа.
Аноним 18/04/21 Вск 00:53:26 #32 №1999749 
1618696465136.jpg
>>1999716
Язык говно. Профитов никаких. Используй "быстрые" языки. /дисказ
Аноним 18/04/21 Вск 00:56:10 #33 №1999753 
>>1999747
*мириться, опечатался
Я с 2004 года занят данной РАБотой, и для меня уже пора задумываться
Аноним 18/04/21 Вск 01:01:34 #34 №1999756 
>>1999749
спасибо, Владимир Владимирович! (отсылка к https://www.youtube.com/watch?v=sM1LOMZjFJ4 )
Аноним 18/04/21 Вск 01:01:54 #35 №1999757 
16183440700080.mp4
>>1999753
Ну не мирись тогда. Мирись-мирись и больше не дерись.
По моему опыту бекенд это дай-то бох 50% - язык программирование, который не суть щас бы крудошлёпство великим делом считать. Остальное - смежные технологии и знание как делать хайлоад не всрав разработку.
Аноним 18/04/21 Вск 01:07:12 #36 №1999762 
>>1999703
>>1999716
Почему мы дальше работаем с Симфони? Отвечу за себя, может спасу жизнь какого-то ньюфага, который решил вкатиться в пых.
Потому что это болото уже засосало. Можно, конечно, пойти пол годика работать каким-то охранником, учить параллельно джаву и вкатиться на позицию джуна, но зачем?
Сидишь себе не рыпаешься, деньги получаешь. Да, меньшие чем джависты за ту же работу. Да, неприятно, но что поделать? Только по этой причине на симфони остается работа, разве нет?
Еще есть надежда что по работе когда-то придется столкнуться с го/нодой. А там уже имея коммерческий опыт сделать перекат будет намного проще.
Хотя языки эти и их подходы мне не нравятся, с php общего там очень мало, но это единственный вариант быстрого переката для пыхера.
Зачем? Да, пока что корабль еще не тонет, но крысы уже всё чувствуют и понимают.
Аноним 18/04/21 Вск 01:07:27 #37 №1999764 
>>1999757
То да, я не спорю с твоим логичным определением бекенд-разработки, но мы же в треде именно про язык, вот его и обсуждаем.

Подумой: это же определённые люди, это получившиеся в итоге приложения и зависимости, это расход ресурсов при том самом хайлоаде.
Аноним 18/04/21 Вск 01:10:29 #38 №1999765 
photo2020-06-2601-53-32.jpg
>>1999762
Ну, для фуллстек-приложений на Symfony уже характерно наличие ноды (encore / webpack). Только вот нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.

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

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

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

в европке за Симфони дают до $6000/мес.
Аноним 18/04/21 Вск 01:33:28 #42 №1999783 
>>1999775
>я не знаю, нахуй вам эти ларавели, симфони и др.
Потому, что код лучше чем на битрикс, быстродействие, масштабируемость и качество самих программистов в средем выше именно на современных фреймворках, чем у мартышек на битриксе. А на чистом пхп пишут сегодня разве что только вкатывальщики.
Аноним 18/04/21 Вск 01:49:19 #43 №1999791 
>>1999765
>>1999767
Тут не в сложности джавы дело, вы чего. Просто нужно освоить много информации, для этого нужно много времени. И, как никак, ты в джаву закатываешься как бы с нуля.
Изучать всё это будешь после работы. Когда наступит черед идти к работодателю, ему почти что всё равно будет на твой опыт разработки на пхп.
Слово "Symfony" там тоже никому ничего не скажет, все уверенны что это очередная CMS, а в PHP еще неймспейсы не завезли и пыхеры всё еще называют классы App_Http_Controllers_IndexController.
Читаю на днях требования к джуну на джаве. "Опыт с Java не менее двух лет. Опыт в разработке больших веб-приложений от трех лет очень желателен. Если это Java - отлично. Если это Python, C#, Ruby - хорошо. Если это PHP, все равно будет плюсом"
А с го/нодой можно начинать практиковаться прямо на пыхоработе, а из требований к джуну на go я даже часто встречал знание синтаксиса и годик-два опыта на пыхе.
Аноним 18/04/21 Вск 02:18:06 #44 №1999799 
>>1999765
Лол, я ещё помню клавиатуры на полноразмерных дин разъемах как в совковых магнитофонах.
Аноним 18/04/21 Вск 03:18:45 #45 №1999814 
>>1999380
На хуй отправляешься.
Аноним 18/04/21 Вск 12:07:10 #46 №2000101 
вы часто исп nginx вместо апача?
Аноним 18/04/21 Вск 12:48:32 #47 №2000140 
>>2000101
Апач это уже легаси.
Аноним 18/04/21 Вск 13:05:16 #48 №2000154 
>>2000140
а чем он лучше апача?
Аноним 18/04/21 Вск 13:47:45 #49 №2000185 
>>2000154
Да в общем всем.
Быстрее, меньше жрет, больше функционала.
Аноним 18/04/21 Вск 14:21:54 #50 №2000214 
>>1999703
>>1999716

6. Что лучше изучать - Симфони или Лару?
Аноним 18/04/21 Вск 14:34:36 #51 №2000225 
>>1999791
>требования к джуну
>Опыт в разработке больших веб-приложений от трех лет
Не, ну зачем явных долбоёбов-то в пример приводить?
Аноним 18/04/21 Вск 14:38:20 #52 №2000228 
>>1999765
>нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.
Во тут совсем мимо, открой хотя бы hh. Весь смысл переката как раз в том, что за ноду, в часности нест сейчас готовы платить, иногда даже больше, чем за нормальные языки.
По крайней мере в ДС так.
Аноним 18/04/21 Вск 14:48:17 #53 №2000240 
У меня вопрос ещё актуален. На него никто не отвечает, к сожалению.

Как известно, уже 8-ая версия пхп вышла. Как мне учить этот язык? Если начну изучать php 7 от Котерова, нормально вкачусь в изучение или нет? Может, есть что-то лучше? И выучу если с 7 версии, как на 8 перекатываться?
Аноним 18/04/21 Вск 14:51:59 #54 №2000247 
>>2000240
ПХП 8 это ПХП 7 + несколько фич. Учи тот, на который у тебя учебные материалы есть.
Аноним 18/04/21 Вск 14:53:48 #55 №2000250 
>>2000247
Спасибо. Буду по Котерову учить тогда, её вроде как все хвалят
Аноним 18/04/21 Вск 14:55:30 #56 №2000251 
>>2000250
Или вот эту - https://www.ozon.ru/context/detail/id/139127353/
Аноним 18/04/21 Вск 14:59:20 #57 №2000260 
>>1999496
По https нет реферера, чего ты там парсишь?
Аноним 18/04/21 Вск 14:59:39 #58 №2000262 
>>2000250
Котерова в топку
Аноним 18/04/21 Вск 15:01:14 #59 №2000267 
>>2000262
Аргументация у тебя ебическая, дружок.
Аноним 18/04/21 Вск 15:04:36 #60 №2000276 
>>2000262
А с чего тогда начать?
Аноним 18/04/21 Вск 15:05:41 #61 №2000279 
Начал изучать это ваше PHP и конечно чтоб сразу вкотиться, я же не даун в 256 раз читать про примитивные типы данных.
Решил запилить скриптик типа гостевая книга, ну а хули нет, разумеется для этого мне понадобился ORM я же не в 2004 чтоб просто данные выбирать и парсить, прочитал что doctrine популярен, ну стал читать, вроде все понятно, но! там предлагают в определении класса явно задавать геттеры и сеттеры. Че реально? Для каждого свойства. И разумеется если в модели что-то поменяется надо будет их добавлять/удалять. Они конечно все одинаковые абсолютно. Это как в джаве до какой-то 8 версии.
И почему-то ваши __get() и __set() не работают: определяю их, все по сигнатуре, а пых говорит call to undefined method при попытке вызова.
Нельзя было дефолтные методы что ли сделать?
Аноним 18/04/21 Вск 15:06:15 #62 №2000281 
>>2000267
лучше иши php7 zend Certification guide(но она на англ)
каждую тему обязательно гугли дополнительно для лучшего понимания.
php.net чтобы быть в курсе всех возможностей.К примеру тема строки и все функции для него
Аноним 18/04/21 Вск 15:11:20 #63 №2000284 
>>2000281
и еще не забудь про mysql и PDO
Аноним 18/04/21 Вск 15:12:35 #64 №2000287 
>>2000284
Вот про musql как раз лучше забыть и использовать mysqli, дружок.
Аноним 18/04/21 Вск 15:13:37 #65 №2000290 
>>2000287
я имел ввиду саму БД и драйвер
Аноним 18/04/21 Вск 15:14:08 #66 №2000292 
>>2000279
Надо было симфони брать php https://symfony.com/doc/current/doctrine/reverse_engineering.html#generating-the-getters-setters-or-php-classes

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://ideone.com/KWu2kP

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

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

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

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

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

Уточняй, если что непонятно.
Аноним 20/04/21 Втр 18:26:08 #131 №2002651 
Сосоны, я начал читать Мэтта Зандстра ООП.

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

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

В моём понимании так - мы берём количество записей, делим на 100 и получаем количество страниц, пагинацию пока опустим, далее мы берём номер страницы из гет запроса и делаем следующее - умножаем номер страницы на 100 и вычитаем 100, так мы получаем начальный индекс с которого нужно вырезать массив, например 3 страница, $cut = 3 100 - 100 или $cut = (3-1) 100 получаем array_slice($arr, $cut, 100)? Или как ещё по номеру страницы из гета определить с какого ключа и по какой нужно вырезать 100 записей?
Аноним 20/04/21 Втр 21:41:32 #135 №2002872 
>>2002857
Ну а концепция пагинации такая что если 1 страница, то выводим ссылки на 2 страницу, предпоследнюю и последнюю, а если допустим 100 страниц и мы на 10, то выводим 1, 2 страницы, предпоследнюю, последнюю и две влево и вправо от текущей страницы, то есть 8, 9 и 11, 12?
Аноним 20/04/21 Втр 23:28:52 #136 №2002976 
Столкнулся с какой-то очень странной фигней. Импортирую стили прямо в 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?
Аноним 21/04/21 Срд 05:16:47 #137 №2003091 
>>2002413
https://ideone.com/zoVlkR
Аноним 21/04/21 Срд 06:20:21 #138 №2003112 
Посмотрите htmldog.com как вам по содержанию, полезно?
Аноним 21/04/21 Срд 07:19:45 #139 №2003144 
изображение2021-04-21071842.png
Возможно я просто сонный и чего не догоняю но вот проблема, из бд мне возвращается ничего, а в ошибке пишет просто "Ошибка". Таблица точно есть, и данные в ней тоже, регистрацию то запилил а тут что не так может быть?
Аноним 21/04/21 Срд 08:26:13 #140 №2003169 
>>2002413
Вроде бы получилось сделать с условиями как в задаче:

https://ideone.com/tSOxlD
Аноним 21/04/21 Срд 10:01:37 #141 №2003223 
Аноны, по вашему совету сделал сохранение топа в файл путём сохранения топа в временный файл и потом его переименование в нужный файл чтобы не было коллизий когда файлы затирают друг-друга, и столкнулся с тем что рандомно в течении дня проихсодит такая фигня что временный файл не удаляется, он в основном с рандомным именем и весит 0 килобайт, но есть и файлы размером в половину или весь файл топа в пол мегабайта, почему это может быть что временный до переименования файл не удаляется и остаётся? Приходится писать скрипт и удалять эти файлы им, потому что у них стоят права -600, и руками по фтп они не удаляются
Аноним 21/04/21 Срд 11:36:11 #142 №2003289 
>>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 это количество элементов в массиве).

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



Аноним 21/04/21 Срд 11:45:35 #143 №2003294 
>>2003144

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

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

>>2003169

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Просто напишите с правильным синтаксисом решение этой задачи. Буду благодарен.
Аноним 21/04/21 Срд 16:40:13 #152 №2003576 
>>2003558
Я смотрел курс по вордпрессу Дмитрия Полоса, он там на пхп кодил
Аноним 21/04/21 Срд 16:42:29 #153 №2003579 
>>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";
}
}
Аноним 21/04/21 Срд 16:50:17 #154 №2003584 
>>2003576
> вордпрессу
Индусское говно. Работа с сИэМэС это неблагодарный ад.
> Дмитрия Полоса
Хз чо за хуй.

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

Аноним 21/04/21 Срд 16:53:48 #155 №2003585 
>>2003567
https://pastebin.com/rfjtfeGt

Это не решение, а намёк, решать давай сам уже, там почти всё готово
Аноним 21/04/21 Срд 17:06:26 #156 №2003601 
>>2003294
Хорошо, при проверке data на false результат тот же
Аноним 21/04/21 Срд 17:25:52 #157 №2003619 
>>2003601
Так, а зачем проверка на false если в data - null, значит проблема в бд или в логине, но я вроде не совсем аутист, в бд есть записи, и логин передается
Аноним 21/04/21 Срд 17:30:49 #158 №2003628 
>>2003601

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

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

https://ideone.com/tSOxlD

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

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
Аноним 21/04/21 Срд 20:36:41 #172 №2003801 
>>2003783
Есть мильйон либ для их разбора.
Аноним 21/04/21 Срд 21:49:16 #173 №2003841 
>>2003783
https://www.php.net/manual/ru/function.get-browser.php
Там еще в коментах либ насыпали
Аноним 22/04/21 Чтв 09:42:35 #174 №2004108 
>>2003801
>>2003841
Бля засирать код чужими костылями которые делают миллион бочек прежде чем выдать результат, да мой сервер загнётся пока проделает это 100000 раз чтобы их все разшифровать
Аноним 22/04/21 Чтв 09:56:26 #175 №2004121 
Аноны как вам такой код для детекта брузера? Вроде бы всё правильно выдаёт и не большой, стоит на него положиться? https://www.php.net/manual/ru/function.get-browser.php#123473
Аноним 22/04/21 Чтв 12:44:23 #176 №2004276 
>>2003325

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

>>2003640

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

>>2003367

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

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

Ну и необязательно сразу все строчки разбирать. Разбей по чанкам, сохраняй промежуточный результаты. Мб очередь прикрутить, хорошо подходит под эту задачу
Аноним 22/04/21 Чтв 13:07:43 #178 №2004314 
>>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, то установить их не получится.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В моем миллионнике есть несколько контор с приличными зп, но за ними стоят достаточно крупные неместные (дсы/запад) клиенты.
На одну из таких работаю
Аноним 23/04/21 Птн 13:35:27 #220 №2005578 
>>2005513
>должна быть
Во первых никто тебе ничего не должен кроме тебя самого
>с высоким порого вхождения
в пхп до безобразия низкий порог вхождения. даже в тот же голенг сложнее вкатиться, несмотря на то, что его позиционируют как язык для пупсиков. Поэтому зарплаты ниже в целом по вебу. если больше 60к получать на адекватной удаленке, живя в мухосрани, да еще и с гибким графиком, то считай хорошо устроился
Сколько смотрел не войти професесии доступные большенству по своей мухосрани - зп средние 30к если не гос и не газпромы. А многие из этих вакансий адовые шо пизда.
Так что твои претензии выглядят смешно
Аноним 23/04/21 Птн 14:31:54 #221 №2005631 
Ананасы, в php нельзя просто узнать размер папки? Только обходом всех файлов внутри и сложением их размера?
Аноним 23/04/21 Птн 14:43:11 #222 №2005645 
>>2005631
линупсовый du через system, например.
Аноним 23/04/21 Птн 14:52:30 #223 №2005656 
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 - Генератор имен
ОП здесь? Может проверить? Завтра буду делать задачи на строки.
Аноним 23/04/21 Птн 15:07:21 #224 №2005682 
>>2005656
Малаца.
Долго всё это сделал?
мимо не оп
Аноним 23/04/21 Птн 15:08:46 #225 №2005686 
>>2005682
Спасибо, весь день пока проходил решал потихонечку.
Аноним 23/04/21 Птн 15:08:50 #226 №2005687 
>>2005656
>>2005682
Не малаца.
Хоть бы повыносил код в функции для повторного использования
Аноним 23/04/21 Птн 15:27:10 #227 №2005713 
>>2005300
Так это изи же. За час-два сделать можно.
Аноним 23/04/21 Птн 18:03:46 #228 №2005985 
>>2005538
За Новосиб не скажу, но +- думаю да, В Казани, Екате, Краснодаре и Нижнем - определенно да, при этом житзнь сильно дешевле чем в дсах.
Аноним 23/04/21 Птн 18:28:45 #229 №2006032 
Блять аноны, подскажите, я уже изъебался нахуй с этого говна, есть вот такая проверка массива в цикле foreach ( $array as $key => $value )

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

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

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

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

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

Кажется, я нашел способ решить задачу быстрее. Например, в примере выше нам потребуется лишь 40002 = 16 миллионов шагов.
Аноним 23/04/21 Птн 19:02:44 #231 №2006075 
>>2006032

А stristr разве поддерживает Юникод и UTF-8? Прочитай-ка урок https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
Аноним 23/04/21 Птн 19:08:53 #232 №2006096 
>>2006071
Если купюры конкретные, естественных номиналов, то задача конечно простая.

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

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

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

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

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

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

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

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

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

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

---

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

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

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

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

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

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

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

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

>>2006130

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

>>2006120

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

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

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

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

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

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

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

Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
Аноним 24/04/21 Суб 09:44:22 #249 №2006482 
https://ideone.com/QNJUya - Шифровка
https://ideone.com/RJN4F2 - 9| '/ |\/|4|\/|bI ><4|<[-|>
https://ideone.com/A2QEmU - На словах ты Лев Толстой
https://ideone.com/R8YiQI - Маяковский попытка
https://ideone.com/CvSBIm - Палиндром
https://ideone.com/4RPmjR - Айпад
ОП или кто нибудь можете проверить? Вдруг неправильно? Завтра регулярные буду изучать.
Аноним 24/04/21 Суб 09:55:28 #250 №2006487 
>>2006101
>Пук
Так победитель не в скорости, а в логике, лул.
Аноним 24/04/21 Суб 09:57:37 #251 №2006488 
>>2006249
Блин а чё нет варианта типа isset($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e'])? Цикл не всегда вариант вставлять
Аноним 24/04/21 Суб 10:12:05 #252 №2006496 
>>2006488
isset(...array_map(fn ($a) => $_GET[$a], ['a', 'b', 'c', 'd']));
Аноним 24/04/21 Суб 10:19:30 #253 №2006504 
>>2006382
> Почему бы тебе просто не создать таблицу для маков в БД не спрашиваю. Видимо нельзя по ТЗ, иначе бы ты сам догадался.
Ну если средствами mysql это сделать быстрее и проще, то ок. Я думал на php такое быстрее написать.
> Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
Клиент не через браузер подключается. Собственная c++ прога, которая мак узнает
Аноним 24/04/21 Суб 10:26:00 #254 №2006507 
>>2006496
На серваке пхп 5 версии, не вариант, кстати вот такой вариант тоже работает
if ($_GET['a'].$_GET['b'].$_GET['c'].$_GET['d'].$_GET['e']) как только одно из значений есть то условие срабатывает, но всё равно хочется что-то более правильное и без циклов
Аноним 24/04/21 Суб 10:35:03 #255 №2006510 
>>2006507
>пхп 5 версии
Соболезную. Надеюсь платят тонны нефти.
Аноним 24/04/21 Суб 11:39:07 #256 №2006550 
image.png
Написал стыковку на похапе, всё нормально будет?
Аноним 24/04/21 Суб 11:39:57 #257 №2006553 
>>2006510
Я для себя пишу, хостер ебанат не хочет обновлять
Аноним 24/04/21 Суб 11:52:38 #258 №2006557 
Блджад посоны, почему вот это выдаёт ошибку?

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

Как правильно делать вывод условия в конкатенации?
Аноним 24/04/21 Суб 12:05:45 #259 №2006565 
image.png
Ну похапе не подведи
Аноним 24/04/21 Суб 15:48:28 #260 №2006930 
>>2006553
>пхп 5 версии
>Я для себя пишу
Умом россию не понять
Аноним 24/04/21 Суб 16:43:29 #261 №2007046 
Screenshot2.jpg
Учу по туториалу из оп-поста. Тема - переменные.
Вот, есть такой код

<?php

error_reporting(-1);

$x = $x + 10;

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

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

Например,

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

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

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

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

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

> Вклад
Верно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Главное, хочу сказать спасибо опу, чьи уроки мне очень помогли вкатываться в пых. Я желаю тебе всего самого хорошего, чел - ты красавчик, спасибо за твои уроки, они делают чью то жизнь лучше.
Аноним 25/04/21 Вск 00:59:58 #294 №2007645 
>>2007640
>>2007638
Ебучий макак. Я нинарошна.
Аноним 25/04/21 Вск 01:33:14 #295 №2007686 
>>2007638
Поздравляю, аноний. Правда зп твоя все еще в два раза меньше, чем у посудомойщицы в любой нормальной стране, но по нашим меркам ты почти как сын депутата
> Там уже были микросервисы, симфони, нормальное кодревью и оче крепкий воркфлоу. Я бысто понял, что раньше я творил просто лютую хуйню, здесь я обучился нормальному чистому коду, архитектуре и всякому нужному в скоупе бэкенда (особенно по работе с бд и контейнерами)
Эх, сколько уже времени пытаюсь миновать твои первые два этапа и сразу вкатиться сюда. А вакух то нет)
Аноним 25/04/21 Вск 01:37:34 #296 №2007690 
>>2007640
Поздравляю тоже. Ты молодец. Мне немношко завидно и грустно
Аноним 25/04/21 Вск 07:11:13 #297 №2007789 
>>2007508
Спасибо. Можешь еще проверить? - >>2006482
Аноним 25/04/21 Вск 07:12:32 #298 №2007790 
16172116062280.png
>>2007349
У меня есть как раз то, что тебе нужно.
Аноним 25/04/21 Вск 09:19:39 #299 №2007824 
Аноны, вопрос немного не в тему, я тот анон что юзерагенты собирает, заметил переходы с info.ertelecom.ru, может кто знает что это? Провайдер перед посещением сайта показывает свою заглушку? Есть такое у кого?
Аноним 25/04/21 Вск 18:17:13 #300 №2008237 
https://ideone.com/pZ36bd - Номера машин
https://ideone.com/oktwDf - Телефоны
https://ideone.com/sryKy6 - Телефоны с исправлениями
Пока эти три сделал, долго думал над ними проверьте пожалуйста!
Аноним 25/04/21 Вск 18:20:26 #301 №2008246 
>>2008237
Там в некоторых местах будут пропущены \\ я знаю что это ошибка, просто не исправил во время и оно не дает мне исправить уже.
Аноним 27/04/21 Втр 08:36:16 #302 №2009853 
1619500885501.png
За сколько минимум по времени можно выучить достаточно, чтобы откликаться на вакансии джуна?
За 3 месяца реально задрочить php, ларку и уже идти искать работу?
Аноним 27/04/21 Втр 10:04:54 #303 №2009888 
>>2009853
Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
Аноним 27/04/21 Втр 11:17:37 #304 №2009948 
>>2009888
>Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
Что там решать пол года?
Аноним 27/04/21 Втр 11:18:10 #305 №2009950 
>>2009853
>За 3 месяца реально задрочить php, ларку и уже идти искать работу?
Если не тупой и задротишь часов по 40 в неделю, то вполне
Аноним 27/04/21 Втр 11:53:07 #306 №2009979 
>>2009853
Самый быстрый вкат, который я видел - 7 месяцев. Весьма одаренный малый был. За три месяца с нуля - яхз какая компания на лару возьмет такого джуна.
Аноним 27/04/21 Втр 12:51:40 #307 №2010050 
>>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. Также, если мы обнаружили различие в буквах, то можно выйти из цикла, а не продолжать сравнение.

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

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

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

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


Аноним 27/04/21 Втр 12:59:27 #308 №2010057 
>>2009948
Может сам посмотришь и мне скажешь?
Аноним 27/04/21 Втр 12:59:41 #309 №2010059 
>>2008237

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

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

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

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

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

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

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

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

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

https://ideone.com/11ZXON

Это если не гуглить и не смотреть чужие алгоритмы.
Аноним 28/04/21 Срд 20:37:27 #342 №2011935 
>>2011746
Заходишь в офис, выбираешь самого слабого с виду мидла и атакуешь его. Если не уверен в себе, то можно напасть со спины, но это не приветствуется
Аноним 29/04/21 Чтв 01:50:36 #343 №2012237 
>>2011935
говорят у фронтов нужно еще съесть печень
Аноним 29/04/21 Чтв 07:21:56 #344 №2012345 
>>2011935
Ааа всё понял, спасибо! Буду знать.
Аноним 29/04/21 Чтв 10:16:34 #345 №2012445 
Бамп
Аноним 29/04/21 Чтв 12:56:34 #346 №2012656 
>>2012445
Нахуя?)
Аноним 29/04/21 Чтв 12:59:22 #347 №2012658 
>>2007076
Если чувствуешь, что можешь на мидла, у тебя и зарплата ужэе должна быть мидлорвая очевидно. Проекты - это неплохо, особенно если в них есть что нибудь примечательное для конторы, но в результате все покажет собес+испытательный. И да, год опыта на мидла - это в 99% случаев маняфантазии.
Аноним 29/04/21 Чтв 14:13:45 #348 №2012720 
>>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 элемента".

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

Далее я опишу решение к сложному варианту задачи.
Аноним 29/04/21 Чтв 14:15:13 #349 №2012721 
>>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
Аноним 29/04/21 Чтв 17:50:28 #350 №2012927 
сап анчоусы, кто нибудь что-то знает про московску. галеру postuf ? ссылку на хх сами найдете
у всех разрабов вакансии с вилкой 300-400к + всякие бонусы, на собесе говорят что будет работа в каких то своих проектах. вопросы на тех собесе были обычные мидловские. зазывают очень усердно и настойчиво. из требований которые я выяснил на собесе: не пить не курить,отсутствие татуировок, не носить длинную бороду, не носить длинные волосы. сам про контору накопал что занимается типо white hat хакингом, но типо не на заказ, а делает контент на основе этого статьи на хабре, тик токи, видосы в инсте + то что там большая текучка и мало кто долго прорабатывает т.е. не больше года-полтора. из за чего становится непонятно откуда у них бабки чтобы платить разрабам такие бабосы. аноны, вы что нибудь знаете о ней, стоит ли туда соваться ?
Аноним 29/04/21 Чтв 18:13:15 #351 №2012960 
>>2012927
>не пить не курить
Они там ебанутые какие-то
Аноним 29/04/21 Чтв 18:15:44 #352 №2012962 
>>2012927
Собесился с ними.
Там какие-то поехавшие черти сидят.
Удаленку нельзя. Сидишь в офисе под трекером и тотальной толерастией. Т.е. коллегами будут различного рода муслимы.
Можно ли иммитировать юзера на php? Аноним 29/04/21 Чтв 18:21:11 #353 №2012970 
Я хочу, чтобы мой скрипт переходил на сайт, а сайт думал что это пользователь. Можно ли это как-то реализовать на PHP?
Аноним 29/04/21 Чтв 18:27:35 #354 №2012978 
>>2012962
>Удаленку нельзя.
а мне сказали что можно. что еще можешь рассказать, анонче?
Аноним 29/04/21 Чтв 18:34:00 #355 №2012988 
>>2012927
>хакингом
а хуй папе?
Аноним 29/04/21 Чтв 18:34:29 #356 №2012989 
>>2012978
>Удаленку нельзя.
Точнее удаленка только на время пандемии, потом в офис.

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

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

В каком-то виде есть, но надо использовать асинхронное I/O, а не обычное. Смотри ReactPHP, Swoole, RoadRunner.
Аноним 29/04/21 Чтв 21:23:53 #359 №2013217 
Анон, помоги с докером. В девопс треде тишина.
Допустим, я клонирую репу с каким-нибудь проектом. На компе пхп не установлен, то есть мне нужно все зависимости установить компосером в контейнере и скопировать 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
Аноним 29/04/21 Чтв 21:28:12 #360 №2013220 
>>2013217
Помню, ебался с этим кейсом.
Суть в том, что на момент сборки образа вольюмы не монтируются в хост или монтируются, но исчезают, не суть. Т.е. композер зависимости ставит, но ты их на хосте не увидишь.
Тут варианта 2:
1. Намертво зашивать вендор в докер образ
2. Ставить зависимости внешним инструментом после конца сборки, например мейком как я и сделал
Аноним 29/04/21 Чтв 21:29:49 #361 №2013221 
>>2013220
>>2013217
А не, пизжу, я в пете баш скриптом ставил.
Мейк сейчас на рабочем проекте. Перепутал
Аноним 29/04/21 Чтв 21:37:44 #362 №2013223 
>>2013220
>>2013221
Понял, спасибо. Буду ебаться с башем в таком случае
Аноним 29/04/21 Чтв 22:12:43 #363 №2013254 
>>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, хотя опять же непонятно, почему бы не использовать для этого папку проекта? Может быть, тут есть кто-то, кто разбирается в этом дьявольском отродье и получше сможет объяснить.
Аноним 29/04/21 Чтв 22:33:16 #364 №2013272 
>>2013213

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

Спасибо!
Аноним 29/04/21 Чтв 22:41:10 #365 №2013281 
>>2013254

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

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

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

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

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

- версионирование окружения. nginx сам по себе, php сам по себе. и когда тебе внезапно захочется протестировать работу приложение на другой версии php - всего лишь пересобираешь php, а не весь огромный зоопарк
Аноним 29/04/21 Чтв 23:05:09 #366 №2013292 
>>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, по моему эти слои какое-то бессмысленное усложнение, можно было писать все в один образ и не париться, и тогда не пришлось бы писать команды через &&.
Аноним 30/04/21 Птн 02:28:09 #367 №2013476 
>>2012970
да, можно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Такой подход решает проблемы и при этом не создаёт ненужной работы.
Аноним 01/05/21 Суб 09:24:59 #415 №2014710 
>>2014703
Неправильно.
Аноним 01/05/21 Суб 09:27:18 #416 №2014714 
>>2014710
спасибо. но блин, у вас ващ мозг способен формулировать только булевое значение? _))))
Аноним 01/05/21 Суб 10:11:04 #417 №2014742 
image.png
>>2014709
>Зумеры и вкатывальщики не задумываясь тащат эту идеологию просто потому что им так сказали.
В последнее время стал натыкаться на статьи о том, что монолиты это заебись, а микросервисы говно.
Аноним 01/05/21 Суб 10:34:47 #418 №2014757 
>>2014024
И ларка и симфони одинаково интересны, но предпочтение симфони отдаю, ибо сложно.
Аноним 01/05/21 Суб 10:36:20 #419 №2014759 
>>2014703
Неправильно.
Аноним 01/05/21 Суб 10:44:11 #420 №2014765 
>>2014759
>>2014714
спасибо.
но блин, у вас ващ мозг способен формулировать только булевое значение? _))))

Аноним 01/05/21 Суб 13:47:34 #421 №2014948 
>>2014529

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

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

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

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

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

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

>>2014534

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

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

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

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

Аноним 01/05/21 Суб 13:52:11 #422 №2014951 
.
Аноним 01/05/21 Суб 13:53:06 #423 №2014952 
>>2014539

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

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

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

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

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

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

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

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

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

>>2014542

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

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

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

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

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

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

https://ideone.com/SnepM5

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

Мимо все тот же тупой лягушенок
Аноним 01/05/21 Суб 20:54:26 #436 №2015663 
>>2015538
Нет, это не я.
Аноним 01/05/21 Суб 21:04:17 #437 №2015679 
>>2015297

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

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

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

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

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

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

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

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

Это элементарно.
Аноним 01/05/21 Суб 21:10:48 #438 №2015689 
>>2015372

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

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

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

>>2015389

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

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

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

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

Монолит - вот подход здорового человека.
Аноним 01/05/21 Суб 21:41:50 #439 №2015743 
>>2015620

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

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

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

>>2015634

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

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

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

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

> if($iterations <= $halfIterations){
> krsort($combination);
> }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Есть примеры, где сервисы (не микросервисы, а большие сервисы) нужны - это компании вроде Яндекс (выносить сервисы, которыми могут пользоваться несколько приложений) или Вконтакте (из-за высокой нагрузки приходится писать микросервисы на Си).
Аноним 02/05/21 Вск 14:27:51 #446 №2016321 
>>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 сервисов? Они что, на каждый экран по микросервису делают?

Я вообще перестаю видеть логику.
Аноним 02/05/21 Вск 14:36:53 #447 №2016331 
>>2016321
Заебал уже своей философией. Можно нанять одного разработчика который сделает красиво, но трудно нанять десять таких. Проще когда Васе нужно знать всего пару апи, он даже будет способен и зам задачу в жире накатать по хотелкам заказчика. Сейчас текучка во всех проектах. Сервисы это данность на больших проектах
Аноним 02/05/21 Вск 14:40:29 #448 №2016334 
parallel https://www.php.net/manual/en/book.parallel.php работает полноценно или через GIL?
Аноним 02/05/21 Вск 14:44:31 #449 №2016343 
>>2016334
В пхп нет GIL.
Аноним 02/05/21 Вск 15:19:13 #450 №2016379 
Screenshot20210502151224.png
Screenshot20210502151231.png
Как же меня затрахал этот ларавель блять...
Особенно его DB-библиотека. Такой конченой хуйни в жизни не видел, оно состоит из костылей чуть менее, чем полностью.

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

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

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

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

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

Аноним 02/05/21 Вск 15:27:06 #453 №2016388 
>>2013476
ахахахааха
Аноним 02/05/21 Вск 15:36:42 #454 №2016398 
>>2016379

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

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

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

>>2016384

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

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

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

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

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

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

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

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

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

Здесь та же проблема, программа в английских словах начнет заменять латинские буквы на русские.
Аноним 03/05/21 Пнд 09:16:00 #460 №2017214 
>>2017007
Оки исправлю.
Аноним 03/05/21 Пнд 09:27:25 #461 №2017225 
>>2016861
В ламинас. Эх, первая работа. Второй зенд и extjs. Сбежал оттуда через два месяца
Аноним 03/05/21 Пнд 16:55:57 #462 №2017660 
Можно ссылку на конфу в тг у треда, если такая есть
Аноним 03/05/21 Пнд 17:32:35 #463 №2017691 
>>2017660
Зачем она тебе? Она мертва
Аноним 03/05/21 Пнд 19:26:08 #464 №2017826 
Кто -нибудь из присутствующих трогал это https://moneyphp.org/en/stable/features/currency-conversion.html ?
Почему-то обрезается дробная часть при обмене
Аноним 03/05/21 Пнд 20:38:10 #465 №2017919 
>>2017826

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

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

<img src="img/banner/photo.jpg">
Аноним 04/05/21 Втр 14:00:38 #473 №2018913 
>>2018901
Ты наверное девтулз нетворкинг заскринь, а не это
Аноним 04/05/21 Втр 14:05:26 #474 №2018916 
>>2018913
Хуйня какая-то, другую папку начал юзать и заработало
Аноним 04/05/21 Втр 16:04:45 #475 №2019131 
>>2018916
Ну значит прав не было/в конфиге веб-сервера директория не фигурировала.
Аноним 04/05/21 Втр 17:09:35 #476 №2019197 
изображение.png
Почему так?
Аноним 04/05/21 Втр 17:11:37 #477 №2019201 
>>2019197
Зачем строку с числом сравниваешь?
Что ты ожидаешь увидеть?
Аноним 04/05/21 Втр 17:12:41 #478 №2019205 
>>2019201
В документации написано что при сравнений строки и числа строка конвертируется в число.
Аноним 04/05/21 Втр 17:20:33 #479 №2019217 
>>2019197
Какая версия пхп?
Аноним 04/05/21 Втр 17:21:13 #480 №2019218 
>>2019217
8.0.1
Аноним 04/05/21 Втр 17:22:24 #481 №2019219 
>>2019218
Лол. В 8ой по-другому работает.
В 7ой всё как ты ожидал будет
Аноним 04/05/21 Втр 17:24:57 #482 №2019224 
>>2019219
Интересно они придумали конечно
Аноним 04/05/21 Втр 17:25:43 #483 №2019225 
>>2019224
https://www.php.net/manual/ru/language.operators.comparison.php
Тут пишут, что был какой-то баг при таком сравнении
Аноним 04/05/21 Втр 17:28:48 #484 №2019231 
Не могу настроить совместную работу докера, дебаггера и пхпшторма. Какого-то хера брейкпойнты работают только в фронт контроллере симфони. Поделись рабочим конфигом, анон
Аноним 04/05/21 Втр 17:30:45 #485 №2019233 
>>2019224
https://www.php.net/manual/ru/migration80.incompatible.php

Теперь числа в строки перегоняют, а не строки в числа
Аноним 04/05/21 Втр 17:31:15 #486 №2019234 
>>2019224
рекомендуют явный тайпкаст к числу делать, тогда результат как в 7ой версии
Аноним 04/05/21 Втр 17:32:46 #487 №2019239 
image.png
Как-то так теперь
Аноним 04/05/21 Втр 18:59:55 #488 №2019380 
>>2019224

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

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

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

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

var_dump(-1 > null); // true

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

Руками

> где

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

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




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

быстрофикс
Аноним 05/05/21 Срд 18:58:42 #503 №2020695 
>>2017007
https://ideone.com/BgBgWC - Исправил исправления, хочу спросить, а правилен ли этот подход с массивами регулярок и заменой? Или можно сделать получше?
https://ideone.com/34fpy7
https://ideone.com/wbKUuC и эти два, вроде работает верно
Аноним 05/05/21 Срд 19:10:12 #504 №2020714 
>>2020695
Я в последних должен в регулярке поставить + чтобы все попадались опечатки. В общем пока читаю мануал по регуляркам и функциям.
Аноним 05/05/21 Срд 19:56:50 #505 №2020768 
Псалмом обмазываетесь?
Аноним 05/05/21 Срд 20:06:55 #506 №2020773 
>>2020768
Обмазываюсь несвежим говном yii1
Аноним 05/05/21 Срд 20:11:37 #507 №2020778 
>>2020773
Нахуй так жить?
Аноним 05/05/21 Срд 20:16:33 #508 №2020783 
>>2020778
Там платят и почти не ебут
Аноним 05/05/21 Срд 20:32:32 #509 №2020794 
>>2020783
Так же и отупеть можно. Потом вообще хер куда устроишься. Я так сидел пару лет и в хуй не дул, ненапряжно крудоебствовал сутками, пока не понял, что реально деградирую
Аноним 05/05/21 Срд 20:35:19 #510 №2020797 
>>2020794
Пытаюсь иногда петик попиливать на говне посвежее, чтобы если выгнали, было куда податься.
С другой стороны этого несвежего говна столько, что без хлеба с икрой не останусь
Аноним 05/05/21 Срд 23:01:52 #511 №2020919 
Можно ли сейчас найти работу на Zend?
Аноним 06/05/21 Чтв 00:33:43 #512 №2021008 
>>2020919
Можно, но архи сложно
Аноним 06/05/21 Чтв 11:36:33 #513 №2021288 
Ананасы, у кого был такой опыт. Переката из пыха в жабу или шарп? Стоит ли так делать? Или и на пыхе есть интересные задачи?
Аноним 06/05/21 Чтв 15:42:04 #514 №2021705 
a7db6fa033d5cec30f8e6b9923a01426--frog-meme-humor-memes.jpg
>>2015743
>Ты можешь объяснить, почему мы сортируем половину перестановок, а другую половину - не сортируем?

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

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

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

https://ideone.com/SnepM5

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

я совсем тупой что подобные задачи неделями не могу сам решить?
Аноним 06/05/21 Чтв 16:32:37 #515 №2021743 
изображение.png
изображение.png
Есть кусок кода пик 1. Моя плюсовая прога получает пик 2. Можно ли избавиться от хуйни что вверху и оставить только строчку helloworld и тд. Или это обязательные данные, которые всегда будут присутствовать?
Аноним 06/05/21 Чтв 17:17:21 #516 №2021800 
>>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 комбинации будут разные.

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

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

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

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

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

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

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

Аноним 06/05/21 Чтв 17:32:22 #519 №2021819 
>>2019464

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

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

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

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

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


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

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

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

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

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

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

Аноним 07/05/21 Птн 18:13:50 #559 №2023275 
Screenshot2.png
Почему подкласс может вызывать приватный метод базового класса?
Аноним 07/05/21 Птн 18:25:43 #560 №2023285 
>>2023275
Могу предположить что из-за того, что приватный метод вызывается внутри базового класса и под капотом происходит какая-то херь с именами классов.
Если поместить метод newSubclass в другой класс, то должен выбивать ошибку.

В целом очень странный кейс: создать потомка внутри родителя и вызывать от потомка метод родителя
Аноним 07/05/21 Птн 18:29:46 #561 №2023289 
>>2023285
Я взял это из доков но там это поведение не объясняется.
https://www.php.net/manual/ru/language.oop5.visibility.php#language.oop5.visiblity-methods
Аноним 07/05/21 Птн 18:32:11 #562 №2023291 
>>2023289
Не вижу там похожего кода.
В доке вызов метода родители идет через $this
Аноним 07/05/21 Птн 18:34:44 #563 №2023294 
изображение.png
>>2023291
Там вот. $this принимает значение класса Foo
Аноним 07/05/21 Птн 19:13:02 #564 №2023338 
Untitled.png
помогите друзья программисты, учу ларавел и не получается справиться с одной проблемой, нужно в карусель вывести несколько штук, но они залазят друг на друга, пробовал делать это через for и не получается, как мне это сделать?

<div class="hero-quotes mt-5">
<div id="quotes-carousel" class="quotes-carousel carousel slide carousel-fade mb-5" data-ride="carousel" data-interval="8000">
<ol class="carousel-indicators">
<li data-target="#quotes-carousel" data-slide-to="0" class="active"></li>
<li data-target="#quotes-carousel" data-slide-to="1"></li>
<li data-target="#quotes-carousel" data-slide-to="2"></li>
</ol>

<div class="carousel-inner">
@for ($i = 0; $i <= 2; $i++)
<div class="carousel-item active">
<blockquote class="quote p-4 theme-bg-light">
{{$review[$i]->description}}
</blockquote><!--//item-->
<div class="source media flex-column flex-md-row align-items-center">
<img class="source-profile mr-md-3" src="storage/{{$review[$i]->image}}" alt="image" >
<div class="source-info media-body text-center text-md-left">
<div class="source-name">{{$review[$i]->name}}</div>
<div class="soure-title">{{$review[$i]->position}}</div>
</div>
</div><!--//source-->
</div><!--//carousel-item-->
@endfor
</div><!--//carousel-inner-->
</div><!--//quotes-carousel-->
Аноним 07/05/21 Птн 19:18:50 #565 №2023342 
image2021-05-07221847.png
>>2023338
Аноним 07/05/21 Птн 19:23:38 #566 №2023348 
>>2023338
А причем тут пхп, если проблема в верстке?
Аноним 07/05/21 Птн 23:35:38 #567 №2023560 
>>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 разных метода, хоть и с одинаковым именем.

Аноним 07/05/21 Птн 23:37:57 #568 №2023563 
>>2023275

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

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

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

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

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

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

https://ideone.com/h9J4W5

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

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

А вообще проекты, на которых эти практики применяются, как правило намного интереснее и сложнее стандартного крудоебесия. И лучше оплачиваются. Уот такое мое мнение
Аноним 08/05/21 Суб 14:20:04 #575 №2024068 
>>2023830
Как же приобщиться к этому всему?
Аноним 08/05/21 Суб 14:33:24 #576 №2024086 
>>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 он обращается к приватному методу.
Аноним 08/05/21 Суб 14:43:37 #577 №2024099 
>>2022524

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

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

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

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

Насчет DDD особо в нем не разбираюсь, прокомментировать не могу.
Аноним 08/05/21 Суб 15:08:16 #578 №2024131 
>>2023760

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

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

> if(count($list) == 1){
> return current($list);
> }

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

> foreach($combination as $el){
> array_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

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

Аноним 08/05/21 Суб 15:18:56 #579 №2024149 
>>2023760

> почему мы вызываем функцию внутри цикла

Мы используем цикл, чтобы по очереди вынуть каждый элемент из списка. Если нам дан список x, y, z, w, то мы сначала вынимаем x, потом y, и так далее. Потому мы используем цикл, чтобы обойти все элементы по очереди.

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

> которая затем возвращает все имеющиеся комбинации (каким образом?)

Попробуй рассмотреть, как функция работает, если ей дать 1 элемент. Затем, как она работает с 2 элементами. Затем с тремя. И так далее.

Если нам дали один элемент, то мы возвращаем единственную комбинацию из него.

Далее, допустим, у нас 2 элемента x и y. Функция работает так:

- вынимаем элемент x, вызываем саму себя с элементом y. Добавляем x в начало, получаем комбинацию xy
- вынимаем элемент y, вызываем саму себя с элементом x. Получаем комбинацию yx.

Для 2 элементов, как видно, все комбинации найдены. Рассмотрим ситуацию с 3 элементами x, y, z.

- вынимаем элемент x, остаются y, z. Вызываем себя, и получаем 2 комбинации из элементов y, z: yz и zy. Приписываем к ним в начало x, получаем xyz и xzy.
- вынимаем элемент y и делаем те же шаги. Получим комбинации yxz и yzx.
- вынимаем элемент z и получаем комбинации zxy и zyx

Для трех элементов функция смогла найти все 6 комбинаций.

Дальше можешь рассмотреть, как функция будет работать с 4 элементами.
Аноним 08/05/21 Суб 15:48:50 #580 №2024198 
>>2023710
Когда монолиты из меня сделают сильного девелопера?
Аноним 08/05/21 Суб 16:12:17 #581 №2024225 
>>2024099
А где я утверждал, что эти практики применимы к любому проекту? Если там обычное формошлепство, то естественно там не нужны саги и проч.

>как будто код без CQRS априори плохой. Хотя по факту он проще и читабельнее
А еще проще хуярить всю логику прямо в экшенах контроллеров. По факту оверхед от cqrs и тактического ддд совсем небольшой и он совсем не ухудшает читабельность, а наоборот облегчает в том числе навигацию по проекту и разграничение фич. Пара лишних классов ни на что не влияет

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

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

>Ты пишешь, как будто события это такая хорошая вещь, которая улучшает код. Но по факту это плохая вещь, к которой приходится прибегать, потому что по другому не работает.
Я нигде этого не пишу, всему свое место. Бложикам и лендингам действительно эти подходы к разработке и нахер не нужны. Но никогда и никому не завредит познакомиться с этими практиками хотя бы для общего развития. Не стоит замыкаться в мирке тупых толстых контроллеров. Всем денег, посоны!
Аноним 08/05/21 Суб 16:15:45 #582 №2024231 
>>2024068
Я слышал, что можно гуглить ключевые слова и находить статьи и видео по интересующей тематике. Сам не пробовал, так что не могу утверждать, что это сработает
Аноним 08/05/21 Суб 16:48:19 #583 №2024295 
>>2024231
Спасибо, анончик.
Аноним 08/05/21 Суб 17:23:06 #584 №2024359 
https://ideone.com/4OtKeb
Аноним 08/05/21 Суб 17:23:34 #585 №2024360 
>>2024359
Пока эту сделал.
Аноним 08/05/21 Суб 19:05:39 #586 №2024534 
анончики, докеризирую свой ларавель апп, и встрял на моменте подключения ноды и npm в проект. делаю по гайдику с digital ocean. но там было только подключение пыхи нгингс и бд. нужна еще нода. сам yml файл https://ideone.com/sAh4tM
все оки работает и пашет кроме контейнера с нодой - когда смотрю через docker-compose ps у него нет портов и статус постоянно restarting. как фиксить ? нода и нпм нужна для того чтобы ставить какие то зависимости и пересобирать app.js. никакого фреймворка фронтендовского на проекте нет, все на блейдах. в гугле тоже нихуя нет =/
Аноним 09/05/21 Вск 00:08:12 #587 №2024926 
>>2024534

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

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

Во втором случае тебе надо запускать не образ, а конкретную команду. Это та же команда, которую ты до докера запускал в консоли вручную. Она указывается в docker-compose с помощью command: https://docs.docker.com/compose/compose-file/compose-file-v3/#command . Или, может быть, с помощью entrypoint, не знаю.

> у него нет портов

Нода это не сервер, она не слушает порты.

---

Какое же все уродливое в этом Докере. Вот, например, скрипт сборки ноды: https://github.com/nodejs/docker-node/blob/8b68fca7a5089bd8795ae85b55617314e966487b/16/alpine3.11/Dockerfile

Посмотрите, сколько он лишнего мусора добавляет в образ! Там и gcc, и python, и curl, и tar! А если у тебя несколько разных образов, то скорее всего в каждом будут эти лишние зависимости.

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

А еще у Докера какие-то свои костыли для организации сети между контейнерами, там по моему у них свой демон написан для этого. Разве не уродливо?

Под виндой Докер запускает виртуальную машину вместо того, чтобы ставить windows-версии php, nodejs и так далее. Разве это не уродливо, тащить целую машину с линуксом, с ядром, с демонами, туда, где это не нужно? Еще наверно и тормозит неслабо.

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

Аноним 09/05/21 Вск 00:30:38 #588 №2024942 
Вот что мне не нравится в Докере. Что вместо решения исходной проблемы (как дать возможность разработчику легко развернуть проект) они добавляют слои поверх существующих решений. Усложняя все.

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

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

- нельзя поставить программу или библиотеку не глобально, а в папку с проектом (как это умеет делать Композер)

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

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

Как видно, Линукс плохо ориентирован на разработку в принципе. Это вполне реальные проблемы.

И что делает Докер? Он исправляет пакетные менеджеры? Улучшает линукс? Нет, он берет и создает контейнер с виртуальным Линуксом и внутри ставит нужное приложение и все его зависимости. Причем не просто ставит, а компилирует и собирает. Причем собирает не какой-то единой для всех приложений командой, а каждый раз по-разному, качает какие-то архивы tar.gz откуда-то, а не из универсального репозитория. Костыли на костылях (то есть сборка программ в линукс это костыли и тут мы еще костыль в виде контейнера добавляем).

Или другая проблема. Нельзя как-то универсально описать список зависимостей, чтобы это работало под любым дистрибутивом Линукса, Windows и мака. И что делает Докер? Может быть, он исправляет Windows и MacOS? Нет, он просто запускает тяжелую виртуальную машину с линуксом внутри. Разве это не уродливо?

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

А как должно быть? Пишешь в файлике нужные зависимости. Запускаешь команду в любой ОС и они устанавливаются из универсального репозитория.

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

Аноним 09/05/21 Вск 00:56:05 #589 №2024966 
16183251353492.jpg
>>2024942
Съеби
Аноним 09/05/21 Вск 11:21:16 #590 №2025316 
image.png
>>2024942
>часто нельзя ставить несколько версий программы, например нельзя поставить пакетным менеджером ноду 10 и ноду 11 одновременно
Аноним 09/05/21 Вск 11:43:58 #591 №2025333 
>>2025316
Он не знает про переключение между версиями... Жаль.
Аноним 09/05/21 Вск 12:07:24 #592 №2025372 
>>2024131

https://ideone.com/h9J4W5

Мне нужна подсказка где здесь ошибка.
Аноним 09/05/21 Вск 12:14:03 #593 №2025382 
>>2024086
Спасибо.
Я наверное не заслуживаю такого развернутого ответа.
Аноним 09/05/21 Вск 19:23:18 #594 №2025963 
>>2025316

Это обычно достигается за счет сторонних репозиториев, где на каждую версию создается свой пакет. Соответственно, это работает для PHP, но не будет работать, например, для библиотеки вроде openssl и других программ.
Аноним 09/05/21 Вск 19:25:56 #595 №2025967 
>>2025372

Ты удаляешь элемент из $elements с помощью unset, но не добавляешь его обратно.
Аноним 09/05/21 Вск 19:41:07 #596 №2025996 
Нормально ли иметь слушатель событий для исключения, чтобы в нем преобразовать это исключение в другое (для которого уже есть другой слушатель событий)?
Аноним 09/05/21 Вск 20:00:00 #597 №2026028 
>>2025967
Заработало, спасибо. Теперь буду пытаться вникнуть как она работает (вопросов пока нет).
Аноним 09/05/21 Вск 20:46:03 #598 №2026054 
>>2024926
>только иногда чтобы что-то установить или пересобрать
this
так как мне в итоге только свой докер файл модить чтоли и туда уже тянуть ноду с нпмом ? пытался так, но из за того что делаю с образа php7.4-fpm там нету тупа образа ноды
запускаю из под макоси биг сюр если чо
Аноним 10/05/21 Пнд 00:10:17 #599 №2026230 
>>2026054
>с образа php7.4-fpm там нету тупа образа ноды
Нода там и не нужна. Подтяни отдельный контейнер с нодой в докер композ
Аноним 10/05/21 Пнд 01:21:07 #600 №2026261 
https://ideone.com/c4JI35 - Йода
Проверьте пожалуйста!
Аноним 10/05/21 Пнд 09:06:06 #601 №2026342 
>>2026230
окей, а как это тогда сделать ? я же говорю что изначально так пытался сделать, но он постоянно в рестартинг уходит =/
Аноним 10/05/21 Пнд 10:54:57 #602 №2026373 
>>2026342
Полно же статей, епта
https://dev.to/aschmelyun/crafting-a-better-local-laravel-dev-environment-with-docker-45cj
Аноним 10/05/21 Пнд 22:21:14 #603 №2027046 
Аноны, чет я запутался с авторизацией в ларавел 7.
Дефолтный вариант по доке - это установить пакет laravel/ui и развернуть его php artisan ui vue --auth. И лара создасть набор роутов и twig-шаблонов.
Проблема - я хочу запилить на Vue spa. Простенькое spa я могу сделать, api бекенд на ларе - тоже могу.
Не понимаю как должна быть сделана авторизация в данном случае , как вообще spa - авторизируется? Подскажите где почитать ?
Лара предоставляет аж три пакета:
Socialite, Passport, Sanctum - на какой стул мне сесть? И какая между ними разница? Все они используют JWT?
Аноним 11/05/21 Втр 02:15:19 #604 №2027231 
Почему все говорят, что язык умирает?
я только начал вкатываться и все, все, блять, поголовно говорят, что пхп учить как первый яп это пиздец хуево блять. Потом все говорят, что выучив пыху, я буду работать только на поддержке старых проектов. Лол, их щас хуева гора. Лет 10 ещё на пыхе точно будет хуева гора работы. Тот же битрикс будет в топе ещё дохуя лет (минимум пять, как по мне). А вордпресс? Там вообще ебанись какое коммьюнити. На битриксе и вордпрессе онли со стороны бэка вполне изично можно получать 120к+. Для меня это большие деньги. А потом можно подучить Laravel и спокойно пиздовать бэкендером в 200к+. При необходимости потом, если нужно будет, можно будет перекатиться в НОВОМОДНЫЙ околоГОУЛЕНГ язык и получать там дохуя бабок.
Можете меня обоссать, но я прав. Пыха будет минимум до 2030 года в топах, а за это время можно дохуища бабла на пыхе заработать.
Аноним 11/05/21 Втр 03:25:06 #605 №2027250 
>>2027231
Нужно окунуться в историю откуда пошла фраза "PHP это мертвый язык". Ты видимо её плохо знаешь, так же как и те кто эту фразу наверняка говорит.
Дело в том, что PHP создавался от безысходности, потому как в те времена не было языка для бэкенда и все пользовались CGI, соответственно код писался на C, а ты понимаешь, что такое писать код на C для сайта, трудное занятие.
Именно из-за этого и создался PHP, другой альтернативы никто даже не предлагал, даже Ruby или Pearl который так критикует PHP.
Создатель PHP создал этот язык как временную панацею от этой проблемы, все говорили, что этот язык не нужен, но в то же время множество компаний спрашивало как им пользоваться, парадокс, правда? Поэтому была создана документация и в неё добавлялся весь нужный функционал, математические функций например, или строковые.
Создатель PHP говорил с выходом новой версий, что когда появится альтернатива, PHP умрёт и даже он им не будет пользоваться. Давал срок в полгода. Но её так и не появилось и таким образом, каждые полгода выходила новая версия. И это продолжается по сей день.
Аноним 11/05/21 Втр 09:07:18 #606 №2027297 
>>2027046
Я когда-то использовал это https://github.com/tymondesigns/jwt-auth
Но это было больше трех лет назад. Не знаю, что сейчас в моде у ларавельщиков
Аноним 11/05/21 Втр 12:23:42 #607 №2027432 
>>2027046
>twig-шаблонов
Неужели в лярве отказались от богомерзкого бляда blade по умолчанию?
Аноним 11/05/21 Втр 12:29:05 #608 №2027440 
>>2027231
>Почему все говорят, что язык умирает?
Умирает после каждого запроса

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

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

>можно будет перекатиться в НОВОМОДНЫЙ околоГОУЛЕНГ язык
А вот с этим будут проблемы, т.к. там нужны немного другие фундаментальные языка. Пыхакультура не способствует их освоению

>Пыха будет минимум до 2030 года в топах
Не факт, что в топах, но на наш век работы хватит, а может и нашим детям достанется
Аноним 11/05/21 Втр 14:24:35 #609 №2027551 
>>2024198
если ты вкатывальщик, то лет через 10
Аноним 11/05/21 Втр 15:00:05 #610 №2027577 
>>2027440
А по бабкам и возрасту?
Все пишут, что в 25-26 вкатываться уже поздно в пыху.
И джуны начинают с 30к, это правда?
Аноним 11/05/21 Втр 15:06:55 #611 №2027580 
>>2027551
5ый год работаю уже заебался нихуя не знать
Аноним 11/05/21 Втр 15:08:35 #612 №2027582 
>>2027577
>Все пишут, что в 25-26 вкатываться уже поздно в пыху
Нагло пиздят, я в 24-25 вкатывался и уже давно работаю

>И джуны начинают с 30к, это правда?
Зависит от того, куда пойдешь. В среднем разброс по рф от 500 до 1000 $ за джуна
Аноним 11/05/21 Втр 15:11:45 #613 №2027587 
>>2027577
Вкатился в 34. Но до этого всю жизнь с детства говнокодил для удовольствия
Аноним 11/05/21 Втр 15:15:35 #614 №2027590 
>>2027587
Говнокодил на Сишечке, 7 классов, вкатываюсь с 21, сейчас 23, мне пизда я даун?
Аноним 11/05/21 Втр 15:19:44 #615 №2027600 
>>2027590
Может ты неправильно вкатывешься? По собеседованиям ходишь? Что знаешь? На чем валишься? Изучить синтаксис не проблема, а вот задрочить всю сопутствующую экосистему может быть сложновато
Аноним 11/05/21 Втр 15:25:16 #616 №2027606 
>>2027580
>уже заебался нихуя не знать
Как тебе это удается? Не ебут на работе?
Аноним 11/05/21 Втр 18:21:36 #617 №2027743 
>>2027440
>>А вот с этим будут проблемы, т.к. там нужны немного другие фундаментальные языка. Пыхакультура не способствует их освоению
Ща пыха культура уже другая, я до того как зндстру прочел - чувстовал себя пидорашкой.

Кстаит в похопе скора выкатят файберы, маня асинхронность.
Дохоронят пхп до того что лет через пять она ноду начнет выгонять из ниши быстрых-асинхронных приложений, лол.
Аноним 11/05/21 Втр 18:42:29 #618 №2027758 
>>2027606
На работе нужен уровень крудоклепателя. Большинство тасок программируется иф елсами, там много ума не надо. Архитектурные таски разбирают синьоры, инфраструктурные - девопсы
Аноним 11/05/21 Втр 18:43:31 #619 №2027760 
>>2027743
>ноду начнет выгонять из ниши быстрых-асинхронных приложений
Её уже го потеснил
Аноним 11/05/21 Втр 19:54:01 #620 №2027807 
>>2027743
>я до того как зндстру прочел - чувстовал себя пидорашкой
Анончик, опиши подробнее, что именно изменилось после.
Аноним 11/05/21 Втр 20:23:45 #621 №2027826 
15293094001630.jpg
>>2027743
А теперь еще читани Мартина, банду четырех и Эванса с Верноном - будешь одним своим существованием унижать жопаскрип макак и петухоноблядков
Аноним 11/05/21 Втр 20:30:59 #622 №2027832 
>>2027758
Платят-то хоть нормально?
Аноним 11/05/21 Втр 21:33:40 #623 №2027877 
Накидал небольшую либу для работы с конфигами. Хочу услышать мнение более толковых людей.

https://github.com/freezemage0/config/
Аноним 11/05/21 Втр 22:18:31 #624 №2027911 
>>2027832
Сотыгу имею
Аноним 11/05/21 Втр 22:50:13 #625 №2027941 
Хуйня ваш пхп. Больше 30к джун не получит и будет выгорать. Не учите пхп, тем более он году так в 2030 нахуй никому не нужен будет
Аноним 11/05/21 Втр 22:51:25 #626 №2027942 
>>2027941
>году так в 2030 нахуй никому не нужен будет
Ты скозал?
Аноним 11/05/21 Втр 22:53:51 #627 №2027944 
>>2027942
да я скозал и что ты мне сделаешь
Аноним 11/05/21 Втр 23:05:42 #628 №2027957 
>>2027944
Если ты в другом городе-ничего.
Аноним 11/05/21 Втр 23:10:17 #629 №2027961 
>>2027957
а я в другом городе как раз :р
Аноним 11/05/21 Втр 23:59:08 #630 №2028012 
>>2027600
Пока не ходил на собесы, решаю задачки на всяких сайтах, думаю начать скоро. А так параллельно симфоньку.
Аноним 12/05/21 Срд 00:49:38 #631 №2028052 
>>2028012
>А так параллельно симфоньку.
Какой-то пет пишешь?
Аноним 12/05/21 Срд 01:15:27 #632 №2028070 
>>2028052
Что такое пет?
А если я уже могу круд приложение заебумбенькать, могу ли я рассчитывать на позицию джуна за 40к?
мимодругойанон
Аноним 12/05/21 Срд 01:16:36 #633 №2028071 
40679190102159966426846297889124653757628416n.jpg
>>2027941
Минусы очевидны.

А объективные плюсы:
-- Прощает ошибки и не зависает
-- Можно программировать в любом стиле, на любом уровне абстракции, значит легко учить постепенно
-- 30-40К пока ещё хорошая зарплатка для некоторых регионов
-- Огромное количество обучающих материалов и готового кода
-- До сих пор 80% сайтов на РНР, куча работы
Аноним 12/05/21 Срд 01:56:23 #634 №2028097 
>>2028070
>А если я уже могу круд приложение заебумбенькать
Можешь или забубенькал? Разница существенна
Аноним 12/05/21 Срд 02:00:21 #635 №2028099 
>>2028071
>-- Прощает ошибки и не зависает
Прибавь докер и xdebug и будет зависать, а без них хуй отладишь
>-- 30-40К пока ещё хорошая зарплатка для некоторых регионов
Лет 5 назад с этого начинал, на чипсеки и бургеры хватало
>-- Огромное количество обучающих материалов и готового кода
Много мусора, но есть толковые
Аноним 12/05/21 Срд 04:27:22 #636 №2028128 
>>2028097
Писал раза два уже. Сначала с использованием mysqli, потом с использованием PDO.

Могу синглтон реализовать, правда не до конца понимаю, нахуя он нужен. Фасад могу ебануть (как я понял, он нужен для того, чтобы скрыть как работает система), остальное не помню
Аноним 12/05/21 Срд 04:28:07 #637 №2028129 
>>2028099
>Много мусора, но есть толковые
Подскажи плиииииз, буду признателен!
Аноним 12/05/21 Срд 05:19:40 #638 №2028137 
>>2028052
Да форум. О кстати! Посоветуй что для портфолио такое можно замутить сложное?

(Я на Си умею в типы данных итд, т.е сложность не имеет значения меня уже изнаСиловали)
Аноним 12/05/21 Срд 05:21:22 #639 №2028139 
https://ideone.com/Odsrjm - Суммы прописью.
Вроде работает, но там я как понимаю все проще можно было сделать.
Пишу калькулятор пока.
Аноним 12/05/21 Срд 09:51:30 #640 №2028215 
>>2028128
> Ну там синглтоны фасады хуемое я нихуя не помню
Ебаный ты козел блять, я бы тебя и за десятку не взял.
Аноним 12/05/21 Срд 10:22:04 #641 №2028240 
>>2028137
Когда я устраивался в первый раз, то показывал два свои проекта - сокращатель ссылок на симфони и парсер новостей на тогда еще живом сайлексе
Аноним 12/05/21 Срд 10:24:08 #642 №2028242 
>>2028129
https://github.com/jupeter/clean-code-php
https://phptherightway.com/
Аноним 12/05/21 Срд 10:36:23 #643 №2028249 
>>2027877
А зачем? Чем оно отличается, например, от https://github.com/symfony/config ?
Особо не вчитывался, но заметил, что нарушаешь psr 2 (12) и консистентность объявления сигнатур методов, в одних местах возвращаемые типы есть, в других - хер. Рекомендую натравить статический анализатор и охуеть.
Аноним 12/05/21 Срд 11:00:14 #644 №2028262 
>>2028249
> Неконсистентность типизации
А как стипизировать mixed на PHP 7.2?

> Чем отличается?
Key chaining

> Нарушаешь psr 2 (12)
> PHP Standard Recommendations

> натравить анализатор
Травил писали, default reporting level и не охуел.

Конкретно по самой архитектуре будет что сказать?
Аноним 12/05/21 Срд 11:02:29 #645 №2028264 
>>2028262
*Травил псалм
Аноним 12/05/21 Срд 11:32:01 #646 №2028279 
>>2028240
Ок записал.
Аноним 12/05/21 Срд 11:32:21 #647 №2028280 
>>2028240
Спасибо.
Аноним 12/05/21 Срд 12:27:03 #648 №2028334 
>>2028128
Сделай круд на симфе с доктриной, тогда и поговорим
Аноним 12/05/21 Срд 12:30:21 #649 №2028340 
>>2028129
Ларакасты - основы пыхи, ооп и ларавел
Елисеев - практика на yii/laravel/symfony
Отус - более обзорно как в вузе, есть по языку и по фреймворкам ищи на торентах
Аноним 12/05/21 Срд 12:34:41 #650 №2028348 
>>2028137
Форум неплохой проект для пета. Содержит многие фичи крудов. Там можно много всего нахерачить: аутентификация, разграничение прав, менеджмент файлов, поиск, сервисы рассылок, кеш и т.д. на сколько сил хватит.
Аноним 12/05/21 Срд 12:35:54 #651 №2028350 
>>2028240
Тоже писал сокращатель ссылок на симфе. Уже не помню, чье это тестовое. Даже в докер обернул его
Аноним 12/05/21 Срд 12:44:19 #652 №2028363 
>>2028262
>А как стипизировать mixed на PHP 7.2?
Стараться избегать mixed

> Нарушаешь psr 2 (12)
> PHP Standard Recommendations
Если ты пишешь код, которым будет пользоваться кто-то кроме тебя, то псры 1, 2 мастхев
Аноним 12/05/21 Срд 12:51:54 #653 №2028373 
>>2028363
Как избежать mixed, если, например, json_decode() его возвращает?

> пср 1, 2 мастхэв если кто-то будет пользоваться твоим кодом
Пользоваться и дорабатывать - разные вещи. Для использования кода достаточно создать один инстанс, для доработки - перечитать весь существующий код.
Аноним 12/05/21 Срд 12:59:12 #654 №2028383 
>>2028373
>Как избежать mixed, если, например, json_decode() его возвращает?
Ты же знаешь, что хочешь из json_decode получить? Или тупо проксируешь вызов? Так то можно типы проверить в методе, сделав интерфейс твоей либы чище

>Пользоваться и дорабатывать - разные вещи. Для использования кода достаточно создать один инстанс, для доработки - перечитать весь существующий код.
По работе частенько смотрю в кишочки фреймворков и либ. И гораздо проще и быстрее это делать, если код написан в едином стиле от кишочков yii1 плююсь, т.к. их писали до создания пср
Аноним 12/05/21 Срд 12:59:55 #655 №2028385 
>>2028373
>Как избежать mixed, если, например, json_decode() его возвращает?
Ну по хорошему он должен возвращать объект или массив, но какие-то сверхразумы подумали что хорошо бы еще парсить 'true' в true без топ-левел жсон объектов или массивов
Аноним 12/05/21 Срд 13:06:22 #656 №2028393 
>>2028383
> Ты же знаешь, что хочешь из json_decode() получить?
Нет, в этом и суть.
Была идея представить все значения в виде какого-нибудь ConfigValue, который знает о типе, но это тупость какая-то.
Аноним 12/05/21 Срд 13:47:22 #657 №2028409 
>>2028215
Я работал тестером в огромной компании, у которой сайт был на Битриксе. Зп миддла пхп разраба бали 180-220к. ООП как такового не было в принципе. Задачи были простейшие: вывести товары на экран, обработать фильтры и прочая поебистика. Где там нахуй нужен синглтон, м?
Если у меня будет выбор: стать супер-профессионалом в шкодинге или быть быдло-говнокодером и получать 200к, то я выберу 2 и даже, сука, глазом не моргну
Аноним 12/05/21 Срд 14:00:48 #658 №2028431 
>>2028409
>быть быдло-говнокодером и получать 200к, то я выберу 2 и даже, сука, глазом не моргну
И через пару лет охуеешь и пойдешь плотничеством заниматься
Аноним 12/05/21 Срд 14:13:41 #659 №2028447 
>>2028393
Попробуй хотя бы через интерфейс определить возращаемый тип, а то рили хуйня какая-то. Не понятно, что ждать, современными тайпчеками пыхи не обмажешься.
Ладно json_decode, когда он писался у пыхи про типы не думали. Но мы то solid-ные разрабы
Аноним 12/05/21 Срд 14:14:58 #660 №2028449 
>>2028409
Раз таков твой выбор и ты не сгоришь от этого за пару лет, то вай нот. Должен кто-то и легаси на битриксе поддерживать
Аноним 12/05/21 Срд 14:28:01 #661 №2028471 
>>2028431
200125. За 5 лет 12кк, Минус налоги, минус хавка, дорога и прочая дрочь. Лямов 9 точно останется. Мне их хватит до конца жизни.
Аноним 12/05/21 Срд 14:28:26 #662 №2028473 
>>2028449
Спасибо.
Аноним 12/05/21 Срд 14:36:22 #663 №2028488 
>>2028447
Перепиливать типы данных пыхи под классы звучит ну сверх тупостью. Знаю, что у Себастиана Бергмана есть такой пакет, с типами данных который, но чёт даже хз. Имхо, непрактично со стороны пользователя либы.
Аноним 12/05/21 Срд 15:03:13 #664 №2028557 
>>2028488
>Перепиливать типы данных пыхи под классы звучит ну сверх тупостью
Имел в виду либо вернуть 1 тип данных, либо обернуть несколько типов за интерфейсом

В чем проблема возвращать 1 тип данных? Так и разрабу понятнее и ide нормально автокоплитит.
Нет, мы вернем тебе строку, или инт, или аррей, или нахуй иди
Аноним 12/05/21 Срд 15:56:30 #665 №2028621 
>>2028099
> Прибавь докер и xdebug и будет зависать, а без них хуй отладишь
ни разу не видел зависший xDebug;
живу без докера, с другими виртуалками, все живы, на бекенде ничего никогда не висло
Аноним 12/05/21 Срд 16:02:58 #666 №2028624 
>>2028621
Это происходит так.
Есть тормознутый легаси проект.
Ставлю иде в режим дебага, расставляю точки, делаю запрос. Запрос вместо ожидаемых секунд 15 идет больше минуты. Внутри докер контейнера что-то подвисает и приходится перезапускать, чтобы поймать дебагером запрос
Аноним 12/05/21 Срд 16:05:07 #667 №2028625 
А почему в мануале пишут, что функция mt_rand() небезопасна? (сорри, я нуб если что). Как я понял, она генерирует сид на основе таймстампа, pid и каких-то других внутренних параметров. Разве есть рабочие методы предугадать число, или подразумевается, что она небезопасна только теоретически?
Аноним 12/05/21 Срд 17:06:34 #668 №2028690 
>>2028625
Ты бы хоть попытался поискать
https://stackoverflow.com/questions/17362402/why-is-phps-mt-rand-not-cryptographically-secure
Аноним 12/05/21 Срд 17:14:18 #669 №2028702 
>>2028139
https://ideone.com/VHRk6q
У меня ошибка была, не все числа переводились.
Аноним 12/05/21 Срд 18:03:11 #670 №2028746 
>>2028690
Это да, я нагуглил уже, но там идет речь, что в теории можно предсказть. Мне интересно, есть ли готовый эксплоит, который все это делает.
Аноним 12/05/21 Срд 19:10:37 #671 №2028828 
Laravel echo
Аноним 12/05/21 Срд 19:21:04 #672 №2028840 
Помогите советом, а то я уже утратил любую надежду и впал в депру. Когда-то думал мол вкачусь вон в разработку через PHP быстро, вакансий же море.
Вот уже прошел год, успел всякое попробовать, выяснил что единственный приемлемый вариант для меня - это Симфони.
С ларавелом уяснил что он мне совсем не нравится, срань типа всяких CMS никогда даже не рассматривал.
Вот только выяснилось, что джуны на Симфони никому не нужны. По крайней мере в моем городе. За этот год вообще таких вакансий не появлялось, хрен знает на что я, дурак, совсем надеялся.
Переезжать по некоторым причинам сейчас никуда не могу. Руки совсем упали, дальше пилить проекты на Симфе кажется лишенным смысла, так вообще вечным ждуном можно стать.
В ларавел не хочу, там сапоги защищать надо. Может по каким-то другим языкам двигаться?
Вообще хочется в golang, но это в будущем. Джуны там не больше нужны чем на симфони.
Куда с моими входными податься? Вроде кандидат я не самый хреновый. Молодой, вышка там, знания широкие по IT в целом, не одним пыхом деланный.
Или может есть какие-то варианты таки в Симфони попасть? Может писать всем компаниям, которые ищут миддлов и сеньйоров, что я такой-то класный-прикольный, готов вылизывать эйчарше ноги и работать за еду?
Поделитесь опытом, короче.
Аноним 12/05/21 Срд 19:47:11 #673 №2028864 
>>2028840
А что умеешь?
Аноним 12/05/21 Срд 21:15:58 #674 №2028938 
>>2028840
Так откликайся на мыдловакансии, если ты такой не самый хреновый.

>В ларавел не хочу, там сапоги защищать надо
Што

>знания широкие по IT в целом, не одним пыхом деланный
Что-то мне кажется, что здесь попахивает эффектом Даннинга-Крюгера
Аноним 12/05/21 Срд 21:41:56 #675 №2028953 
>>2028864
Ты за пых спрашиваешь или за другие языки?
Если за пых, то стандартные вещи, которые должен уметь джун, ну еще линуксы. Из того, с чем еще не сталкивался: докер, нереляционные БД, всякие кролики, а так же всё что связано с деплоем. Но такое у джунов никто и не требует.
>>2028938
>Так откликайся на мыдловакансии, если ты такой не самый хреновый.
>Что-то мне кажется, что здесь попахивает эффектом Даннинга-Крюгера
Да что ты сразу унижать меня принялся. Я просто с иронией написал что я не совсем вкатывальщик с улицы и с программированием и смежными вещами знаком много лет.
А эти универские "широкие знания" мне разве что на собесе помогут, я это за особое достоинство не считаю, т.к. понимаю что никому на практике широкие знания не нужны, нужны узкие и глубокие.
Аноним 12/05/21 Срд 21:51:29 #676 №2028958 
>>2028840
Так откликайся на мидло ваки. Наври про опыт в резюме. Потрай собесы, собери платину из вопросов, вызубри и по новой. И не брезгуй удаленкой.
За год уже мог бы вкатиться
Аноним 12/05/21 Срд 21:52:18 #677 №2028959 
>>2028840
>я такой-то класный-прикольный, готов вылизывать эйчарше ноги и работать за еду?
В тебе задетектят неуверенного в себе вкатуна и укажут на дверь.
Проси рыночную зп, чтобы сойти за своего
Аноним 12/05/21 Срд 21:54:56 #678 №2028962 
>>2028953
>что я не совсем вкатывальщик с улицы
А производишь иное впечатление

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

>А эти универские "широкие знания" мне разве что на собесе помогут
Не помогут, там другое спрашивают
Аноним 12/05/21 Срд 22:41:55 #679 №2029007 
>>2028958
>>2028959
Да ну, я вообще не верю в такие истории кабанячие. Отсутствие реального коммерческого опыта детектится за минуту, к чему тут платиновые вопросы?
>>2028962
>А толку то? Работу ведь не нашел
Так и нету работы, 3 года коммерческого минимум просят, и знания соответствующие
Аноним 12/05/21 Срд 23:12:04 #680 №2029040 
>>2029007
>Отсутствие реального коммерческого опыта детектится за минуту
Оно не детектится, если:
1. Ты писал код
2. Ты знаешь ответы на платину
3. Можешь наврать про то, чем занимался на работе и про процессы
Сойдешь за мидла
Аноним 12/05/21 Срд 23:12:41 #681 №2029042 
>>2029007
>Так и нету работы, 3 года коммерческого минимум просят, и знания соответствующие
Тебе же написали, что нужно есть суп ложкой. Положи нож
Аноним 13/05/21 Чтв 01:24:51 #682 №2029131 
>>2028625

Потому, что вихрь Мерсенна не является криптографическим генератором случайных чисел.

В википедии есть ссылка, где написано: https://en.wikipedia.org/wiki/Mersenne_Twister#Disadvantages

> Is not cryptographically secure, unless the CryptMT variant (discussed below) is used. The reason is that observing a sufficient number of iterations (624 in the case of MT19937, since this is the size of the state vector from which future iterations are produced) allows one to predict all future iterations.

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

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

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

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

Правда, mt_rand() использует вихрь Мерсенна, который имеет довольно большое пространство состояний, а длина последовательности там равна 2 в 19337 степени, что затрудняет восстановление чисел.

Однако, прикручен этот генератор не очень правильно. Хотя размер состояния генератора 2 в 19337 степени (очень много), размер сида в PHP всего 32 бита (4 млрд вариантов) и начальное состояние, все 19337 битов генерируются из этих 32 бит. То есть, вместо мощного генератора с огромной последовательностью мы получаем всего 4 млрд возможных последовательностей.

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

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

Также, гугление выдает такие статьи:

- https://labs.bishopfox.com/tech-blog/2014/08/untwisting-mersenne-twister-killed-prng - Untwister, пытается подобрать сид перебором, имея несколько полученных от генератора чисел
- https://github.com/kmyk/mersenne-twister-predictor - утверждает, что может предсказать состояние генератора по 624 полученным от него подряд числам
- https://www.ambionics.io/blog/php-mt-rand-prediction - тут утверждается, что по 2 значениям (с промежутком в 226 вызовов) восстанавливается состояние генератора.

Советую почитать.
Аноним 13/05/21 Чтв 09:55:04 #683 №2029281 
>>2028953
Сорян, унижать не собирался. Ты на собесы-то ходил? Во первых, не стесняйся откликаться на вакансии для мидлов. Ты даже не можешь представить, какие чудовищные долбоебы иногда иногда откликаются даже на синьерские вакансии, и они не терзаются сомнениями, а берут и приходят работы, правда, не получают. Во вторых, напизди про коммерческий опыт я так сделал когда-то, брат жив
Аноним 13/05/21 Чтв 12:05:54 #684 №2029401 
Стоит ли писать цикл и в нём if, или сперва if а потом 2 разных цикла?
Аноним 13/05/21 Чтв 14:00:16 #685 №2029522 
>>2029401
Приведи конкретный код
Аноним 13/05/21 Чтв 17:54:31 #686 №2029724 
Анон, подай идею для какого-нибудь небольшого интересного приложения, где можно было бы использовать брокер сообщений
Аноним 13/05/21 Чтв 18:18:12 #687 №2029742 
>>2029724
Делал одно приложение, куда воткнули ребит.
Парсер выдачи гугла.
Скармливаешь приложению кучу запросов (список строк). Каждый запрос кладешь в очередь. Соответственно достаешь из очереди и делаешь запрос в гугл, результат кладешь в базу (или куда хз).
Цель была в том, чтобы отслежить позиции определенных сайтов в выдаче гугла по запросам.
Аноним 13/05/21 Чтв 18:20:42 #688 №2029745 
>>2029742

Не лучше ли тут использовать очередь на основе таблицы в БД? Тогда для каждого запроса можно отслеживать статус, кол-во неудачных попыток. А то в Rabbit закинул задачи и непонятно, на сколько процентов задача выполнена и сколько еще ждать.
Аноним 13/05/21 Чтв 18:29:26 #689 №2029755 
>>2029745
>Тогда для каждого запроса можно отслеживать статус, кол-во неудачных попыток. А то в Rabbit закинул задачи и непонятно, на сколько процентов задача выполнена и сколько еще ждать.
В ребите есть средства мониторинга
Аноним 13/05/21 Чтв 20:33:12 #690 №2029869 
120-1208910pepe-meme-rarepepe-cartoon-transparent-rare-pepe[...].png
Зачем решать задачки если вкатываются по связям? Для интереса?
Аноним 13/05/21 Чтв 20:56:59 #691 №2029886 
photo2021-05-1320-55-48.jpg
>>2029869
> вкатываются по связям
в твоём манямирке обиженки

мимо 20 лет опыта, успел поработать по связям и без, первую РАБоту в IT в 2001 году нашёл тупо по собеседованиям
Аноним 13/05/21 Чтв 21:10:25 #692 №2029897 
12owoq.jpg
>>2029886
>в 2001 году
Аноним 13/05/21 Чтв 23:13:45 #693 №2029977 
>>2028409
>на Битриксе
>ООП как такового не было
Там его некуда вкорячивать, если только в /local замутить композер и писать классы по psr, но работа с самим битриксом сведёт на нет все старания с ооп, поскольку большинство логики придется писать в шаблонах в файлах result_modifier, либо писать с нуля компоненты и уже можно чуть чуть в ооп

>Где там нахуй нужен синглтон, м?
Там в ядре он повсеместно используется, но где в твоём коде его писать это уже по задачам. Я с этим говном полгода работал и не разу не довелось писать синглтон.

>или быть быдло-говнокодером
Если тебе нравиться колупаться в говне, то почему бы и нет. Работу с ним я сравнил бы работу в автосервисе для тазов, открываешь капот девятки, а там пиздейшн, канистры, шланги, хаотично расположенная проводка, что-то замотано изолентой, хуй до чего доберешься пока полмашины не разберешь и все в слое масла и говна.
Аноним 14/05/21 Птн 01:55:56 #694 №2030050 
>>2029869
Задачки не решал.
Вкатился без связей.
Аноним 14/05/21 Птн 02:17:08 #695 №2030058 
>>2029897
и чо? что-то изменилось?
Аноним 14/05/21 Птн 02:55:03 #696 №2030071 
>>2030058
Неее, ты чеее.....
Аноним 14/05/21 Птн 10:50:26 #697 №2030201 
Аноны, такой вот вопрос - нихуя не разбираюсь в том сколько мне брать за работу. Я не имею большого опыта в коммерческой разработке, и а периодически из круга знакомых приходят предложения о том что бы написать небольшую приложуху. А я не знаю сколько брать денег.
Как пример - один человек просит что бы я реализовал ему приложение по аналогии с примерно таким приложением:
авторизация/регистрация, в систему в можно внести клиента, и в календаре (датапикер) с выбором дат можно для этого клиента выбрать пару услуг на какой либо день. Соответственно в самом календаре отмечаются дни в которые назначены услуги.
В общем все довольно просто. Как пример он мне показал подобное приложение написанное для его знакомого. Оно сделано на пхп 5.3, на клиенте джейквери, на сервере никаких фреймворков, роутинга нет (естественно всего остального тоже нет), сделано относительно архаично - url - тупо отражает физические каталоги сервера.
Приложение написано спецом из одной бедной перефирийной республики юга России - и стоило со слов моего знакомого который хочет аналогичное -16 тыс рублей.
Это адекватная цена? Мне кажется реально низкой. Но я территориально в более богатом регионе .
И я естественно так примитивно не хочу его реализовывать - вообще хочу spa на vue и на бэке slim. А то и ларавел (понимаю что избыточно)
И если такое делать spa + slim или laravel - какие адекватные границы стоимости такого приложения?

Аноним 14/05/21 Птн 11:08:30 #698 №2030210 
photo2018-01-2022-39-51.jpg
>>2030201
Чо как маленький

- обязательно объясни и покажи заказчику отличия
- посчитай трудозатраты в часах, и умножь на согласованный с заказчиком рейт
...
- профит
Аноним 14/05/21 Птн 11:10:21 #699 №2030213 
>>2030201
олсо, заказчику как правило чуть более чем похуй

если он не собирается растить их этого поделия какую-то супер-систему, а рассматривает проект как небольшую утилитку, то нафиг эти SPA никому не упёрлись, цена важнее
Аноним 14/05/21 Птн 11:13:31 #700 №2030219 
>>2028840
Я чуть с другой стороны скажу тебе. О том что меня последнее время стало аж глушить.
Мне за 30 децл, ойти-вышка в вузе прогинг был, админил, последние 3 года я обратно-вкатываюсь. Уже чето могу. И вот что скажу - меня последние время аж от самого себя корячит, а именно от инертности и неспособности активно дергаться и суетиться, потому что за годы нихуя не делания эта овощность реально вьелась глубоко в шкуру. Особенно стремно потому что у меня не мало кабанчиков в окружении есть, и я смотрю как они подскакивают с переменным успехом - но они подскакивают, и по итогу в плюс.
От этой овощеватости хочется самому себе по ебалу надавать. Дико бесит. Но выученная беспомощность - это лютое говно говна. Дико сложно себя переделать.
Поэтому оч советую - не скатись в эту парашу. Забей хуй но то что ты чего то не знаешь - активно скачи по интернету, проходи собесы, ищи заказы как угодно, пили как можешь. Короче я понимаю что я со свой стороны деформации говорю - но я искренне считаю что психика - важнее навыка. И что по жизни гораздо лучще быть подскакивающим кабанчиком со средними знаниями, чем овощным , но высокоуровневым спецом
Навык технический он придет, а вот если ты свою психику загонишь в болото "инертного говна" - вылезти будет так тяжело что ты охуеешь. И не факт что сможешь.
Аноним 14/05/21 Птн 11:20:59 #701 №2030224 
>>2030210
>> обязательно объясни и покажи заказчику отличия
Это я сделал.
>посчитай трудозатраты в часах, и умножь на согласованный с заказчиком рейт

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

>>2030213
>>если он не собирается растить их этого поделия какую-то супер-систему
потенциально собирается. А если нет - ради опыта я реализую на ларе и вью - за среднюю цену подобного приложения. Вопрос в средней цене.
Аноним 14/05/21 Птн 11:55:12 #702 №2030243 
937811118775742826690337362283443876528128n.jpg
>>2030224
>не понимаю как посчитать трудозатраты
Берёшь и считаешь количество часов, которое тебе реально понадобится, умножаешь на согласованный с заказчиком рейт, к примеру, 1-2 тыс. рублей за час да, в Рашке программер дешевле шлюхи. Получается цена.

Если у заказчика денег нет -- затягиваешь ремень и отталкиваешься от его бюджета только зачем.
Аноним 14/05/21 Птн 11:59:05 #703 №2030244 
16206636724053.png
Аноны сап. Интересует ваш опыт в поиске галеры. Многие сейчас используют таймтрекерв? и был ли у вас позитивный лол опыт работы с такими конторами. Если кто то из деревенской галеры успешно перекатился в нормальную контору, поделитесь своими историями. И в целом про стеки интересно. Что умели чему научились.
Всем добра.
Аноним 14/05/21 Птн 12:09:03 #704 №2030250 
>>2030244
> деревенской
Тут непонятно, почему "деревенской"?

Время от времени нанимался в галеры, ничего плохого в них не вижу. Вообще, по-умолчанию нет никакого преимущества в статусе "не-галеры".
Аноним 14/05/21 Птн 12:15:50 #705 №2030254 
>>2030244
>Многие сейчас используют таймтрекерв?
Наличие таймтрекера - недоверие к тебе как к специалисту. Норм разраб будет и без таймтрекера таски закрывать, а проебщик найдет как обмануть трекер.
С конторами использующими трекер не сложилось. Работаю без трекера, потраченное время постфактум списываю в жиру

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

>И в целом про стеки интересно
Что про стеки? Symfony>Laravel>Yii
CMS говно не рассматриваю
Аноним 14/05/21 Птн 12:41:45 #706 №2030271 
>>2030254
> Что про стеки?

Ну например с чем работал на старой работе и на что перекатился на новой галере

>>2030250
> > деревенской
> Тут непонятно, почему "деревенской"?
Если взять какой нить полу-миллионник, то обычно ищут кабанчика на зп 35, который умеет и в девопс и в spa, должен иметь опыт работы со всеми фреймворками, цмс готов работать по 12 часов в сутки без выходных. Ну и пилить в одного проект, на который нужно ещё минимум человека 2-3. Без внятного тз и/или макета, с кучей мелких правок, которые ломают весь написанный код.
Я конечно утрировал, но суть думаю ясна.



Аноним 14/05/21 Птн 12:44:53 #707 №2030282 
15269761020020.jpg
>>2030250
>Вообще, по-умолчанию нет никакого преимущества в статусе "не-галеры"
Аноним 14/05/21 Птн 12:50:28 #708 №2030293 
>>2030271
>Ну например с чем работал на старой работе и на что перекатился на новой галере
Работал с Yii и Laravel попеременно

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

>Ну и пилить в одного проект, на который нужно ещё минимум человека 2-3
Откуда ты знаешь, сколько человек нужно на проект? Это решать менеджменту. Если бизнес не устраивает скорость поставки фич, он будет думать, что делать: расширить команду, нанять более опытного разраба или снижать качество работы.

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

>с кучей мелких правок, которые ломают весь написанный код
А это уже твоя прямая компетенция писать код, который несложно менять. Естественно в рамках сроков. Если сроки занижены - код будет крайне хрупкий
Аноним 14/05/21 Птн 13:22:35 #709 №2030328 
>>2030293
>>Ищут обычного разраба на 8 часов.
У меня есть знакомые кабанчики - они все максимально режут углы по ЗП для сотрудников, по офисам - короче экономят по максимуму. Когда речь идет о том что бы бэху новую себе взять - о экономии и слова нет.

Это я к тому что ухо востро нужно держать, а нос по ветру.
Аноним 14/05/21 Птн 13:39:24 #710 №2030346 
>>2030282
ну для меня нет, а ты как хочешь

по моему опыту, точно гораздо лучше работать на аутсорсинговую компанию с выстроенной культурой, чем на мелкие конторки
Аноним 14/05/21 Птн 14:09:41 #711 №2030391 
>>2030293
Ты зелень? Или куколд, который яростно дефает бизнес?
Ты точно пишешь про галеры из мухосраней? Или это галеры из твоего манямирка? В регионах, чем дальше от ДСов, тем больше этот самый бизнес пиздодельный и хочет экономить на всем.

>Ищут обычного разраба на 8 часов
Да, в вакансиях все радужно и с понями и печеньки лол в офисе. Я так пытался перекатиться в другую галеру, в которой и зп побольше и задачи типа поинтересней. А потом узнал что у нас работает чувак который оттуда еле свалил. Да, говорит, задачки там были повеселей, но если ты внезапно решил свалить после 8 часов работы, то на тебя все косятся, а потом тимлид начинает тебя подгонять по срокам и с улыбкой на лице говорить, что мы семья и у нас коллективная ответственность.
Со некоторыми местными конторами я обсобеседовался. В одной даже оффер прислали. Но там работал знакомый пару лет назад он успешно перекатился в дс2. Который рассказал про таймтрекеры / штрафы которые как бы внезапно противозаконны
В третью меня чуть ли не упрашивали пройти собеседование. Вежливо слился ибо контора слишком мутная и зп серая 20/80.
>Нет тз - проси тз. Неточное тз - уточняй, задавай вопросы, требуй макет
Кейс "ты чо тупой тут все понятно и без тз" / "нет времени пока что ответить займись чем нить другим" никогда не встречал? Тогда поздравляю.

>Откуда ты знаешь, сколько человек нужно на проект? Это решать менеджменту
Oh boi. Риторика из разряда "нас ебут а мы крепчаем" / "бизнесу видней"?

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





Аноним 14/05/21 Птн 14:40:48 #712 №2030426 
>>2030328
Только зачем идти к таким работать?
Аноним 14/05/21 Птн 14:48:45 #713 №2030434 
>>2030391
Хз, где ты такие галеры нашел.
Работал в региональной конторе, уходил отработав 8 часов, никто косо не смотрел. На удаленке с этим еще проще.

>Который рассказал про таймтрекеры / штрафы
Узнаешь про подобную хрень на собесе.
Если херка напиздела "у нас нет трекеров и штрафов", а при выходе на работу тебя просят ставить трекер, увольняешься сразу же. (или откат договора, как получится)

>Кейс "ты чо тупой тут все понятно и без тз"
Очевидные неадекваты, с которыми не стоит работать

>Oh boi. Риторика из разряда "нас ебут а мы крепчаем" / "бизнесу видней"?
Тебе то какая разница, сколько работает над проектом людей? Главное - таски закрывать

>По твоему код это абстрактная хуета, которую достаточно просто написать по всем паттернам и все? Вот тебе пример: пишешь ты йоба круд по макету, а потом хуякс прилетает задача "Ой у нас там в макете не точности, мы вот это перенесли в другой раздел, вот это убрали а здесь поменяли. Там немного правок, сроки не сдвигаем" и в итоге нужно переделывать базу данных, логику контроллеров, вьюшки, шаблоны.
Оформляешь отдельной таской с отдельным эстимейтом.
У исходной таски был свой эстимейт, который завязан на требования, описанные в ней. Меняются требования - меняется эстимейт
Аноним 14/05/21 Птн 16:15:04 #714 №2030558 
>>2030426
В той или иной форме - все кабанчики такие.
Исключения - полусемейные небольшие фирмочки, где народ уже лет 7-8 вместе работает. И где твой "начальник" твой друган с детства, и ты его за кофе можешь нахуй послать.
Кабанчик на которого ты работаешь - отлично понимает что тебя эксплуатирует, и что ты время своей жизни размениваешь на его доход. Степень кривизны этого мышления меняется от личных качеств кабанчика, но присутствует у каждого.
Нельзя быть бойцом - не будучи агресивным, упорным и жестоким. Нельзя быть кабанчиком - и быть человечным к своим сотрудникам. Так или иначе сотрудник - ресурс.
Я видел совершеннейших мразей, которые эксплуатировали своих сотрудников по максимуму, засирая мозги хуитой про "семью", подавляя психологически и взращивая комплекс неполноценности как специалиста - и платил минималку.
При этом личный его доход вылился в двухуровневый пентхаус, и тачку за 6 лямов.
Это не ДС, и не ДС2. Региональная столица.

Так что лучше личную кабанчиковость развивать постоянно.

Аноним 14/05/21 Птн 19:45:16 #715 №2030848 
Чем Ларавел лучше Симфони?
Аноним 14/05/21 Птн 21:29:48 #716 №2030931 
>>2030848
Тем же, чем вордпресс лучше ларавела.
Аноним 14/05/21 Птн 21:38:26 #717 №2030939 
>>2030931
А кроме шуток, епта? Мне в свое время понравилась валидация через реквесты (теперь и в симфони так делаю) и миддлвари (в симфе по ходу только через евент листенеры можно сделать).
Аноним 14/05/21 Птн 22:26:44 #718 №2030998 
>>2030939
А я без шуток говорю. Зависит от уровня проекта. На самом дне вротпресс и прочие CMSки лучше всего, на не самом дне ларавел. На среднего уровня проектах Симфони, если еще выше - лучше не пхп.
Аноним 15/05/21 Суб 15:07:00 #719 №2031407 
Бля, заебался тупить. Пил спа на вью + лара. Для аутентификации поставил пакет санктум - вроде все это работает. Но я чето торможу в понимании как. по паре туториалов сделал регистрацию + логин. Лара - у меня седьмая, пакет laravel/ui поставил, развернул php artisan ui vue --auth

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

Может мне эти роуты аутентификаци развернуть в файле api.php?

И соответственно от spa клиента при логине обрабатывается маршрут login ( register , logout ) из блока web.php - это правильно?

И согласно туториалам все осталдьные запросы от spa уже идут на роуты из блока api - так и должно быть?

Опять же по доке мидлвэйр auth:sanctum - устанавливается в блоке api.
Почему не в web блоке роутов?

Короче чет я нихуя не пойму. Хотя вроде кое как все рабоатет.

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

Я недавно погрузился в ларавел и vue+vue router_vuex - и все это в свовокупности не слабо ебет меня в мозг.
Аноним 15/05/21 Суб 19:02:25 #720 №2031573 
>>2031407
>И еще вопрос по клиенту - в спа я получаю объект пользователя в момент логина, но если я перегружу страницу - то JS перегружается и все объекты становятся пусты, как фиксисть?

Обычно делают какой-то рут, который возвращает объект текущего пользователя по токену/куке. То есть при перезагрузке страницы ты пытаешься первым делом получить текущего юзера.
Аноним 15/05/21 Суб 19:17:11 #721 №2031588 
>>2031407
Еще у тебя может быть такая логика, что например если текущий юзер = null, то происходит редирект на страницу логина. При перезагрузке страницы у тебя текущий юзер в любом случае какое-то время будет null, тут можно даже что-то такое попробовать сделать:
authService.tryLoginCurrentUser().then(() => {
new Vue({
//
})
})

Смотри только чтобы из условного tryLoginCurrentUser никакие ошибки не вылетали. Если у тебя не получилось зафетчить текущего юзера, то тут уже наверняка что-то с токеном, можно например смело инитить приложение и редиректить на страницу логина
Аноним 15/05/21 Суб 20:00:36 #722 №2031623 
>>2031573

А еще хорошей идеей будет впечь этого юзера прямо в страницу (например, в тег с типом application/json), чтобы не делать лишних запросов.
Аноним 15/05/21 Суб 20:15:06 #723 №2031631 
>>2028702

> intval($number)
Для округления правильнее использовать что-нибудь из набора floor, ceil, round.

> if ($number > 99) {
> $number %= 100;
> }
Короче и понятнее будет тут написать return $number % 100

Функцию getlastDigit надо вызывать из функции inclineWord. inclineWord принимает не любое число, а только обработанное функцией getLastDigit. Но откуда я это узнаю? Я просто передам число в функцию, и она вернет неправильную форму слова. Чтобы этого избежать, надо встроить вызов getLastDigit внутрь inclineWord. А может быть, вообще объединить эти функции.

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

Аноним 15/05/21 Суб 20:35:47 #724 №2031651 
>>2027877

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

- зачем в ImporterInterface целых три функции, почему нельзя использовать одну функцию import(string $filename)? По моему, так и проще и логичнее. К тому же исключается ситуация, когда мы имя файла не задали и пытаемся что-то импортировать. И сразу видно, что надо передать имя файла.

- для какой цели сделан интерфейс ConfigException?

- почему форматирование не по PSR? Зачем проявлять свою оригинальность и писать код не как все? Мне удобнее читать код, написанный в одинаковом стиле, а не подстраиваться под личные особенности каждого писателя.

> foreach ($this->importerMap as $f => $importer) {
> if ($f == $format) {
Цикл тут бессмысленный (так как не может быть двух одинаковых ключей) и заменяется на array_key_exists.

> return clone $importer;
Почему каждый раз создается новый импортер?

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

- непонятно, зачем в ConfigInterface методы get/setImporter/Exporter. Чище было бы сделать отдельно объект конфига (отвечающий только за хранение данных), отдельно объект для импорта/экспорта конфига. А так получается, мы должны создать конфиг, передать внутрь него экспортер. и только после этого можем сохранять. Нелогично. Если убрать отсюда шаг "передать внутрь экспортер", то по моему будет и проще и логичнее.

И тогда можно будет избавиться от такого сомнительного кода:

> if (!empty($this->importer->getFilename())) {
> $this->config = $this->importer->import();
> }

Более того, у тебя вообще нельзя создать объект конфига без привязки к импорту/экспорту. А было бы красивее, если бы можно было просто создать объект конфига и куда-то передать. На мой взгляд, тут нарушение разделения ответственности (хранение и импорт/экспорт).



Аноним 15/05/21 Суб 20:43:13 #725 №2031658 
>>2025996

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

"Слушатели" исключений предназначены для единственной цели - показать страницу ошибки и записать исключение в лог. Не надо туда пихать лишний функционал. Если ты хочешь при ошибке HTTP-запроса повторить его, тебе нужен не слушатель исключений и события, а обычный try/catch. Не надо усложнять вещи.

Но может, конечно, у тебя есть причина.

>>2026261

> array_push($reversed,

Вместо этого можно просто писать $reversed[] = ....

А так, верно.
Аноним 16/05/21 Вск 09:31:49 #726 №2032006 
>>2031658
Спасибо за проверки, пока написал калькулятор, но хочу со скобками и порядком написать. Как сделаю выложу сразу всё.
Аноним 17/05/21 Пнд 16:07:23 #727 №2033462 
>>2030848
ничем
Аноним 17/05/21 Пнд 20:53:00 #728 №2033896 
Сап, аноны. Щас прохожу бесплатную стажировку, она продлится неделю, надо будет выполнить 5 заданий такого типа
https://docs.google.com/document/d/1y9yN8WWmXRNhZhmt6Ccwukxt49Qq6r_jStbb992kbKo
Это адекватные тестовые задания для стажёра-джуна на 15к? Стоит ли потеть или нахуй надо?

Аноним 17/05/21 Пнд 21:32:55 #729 №2033936 
>>1998470 (OP)
Есть get-запрос на некий пхп-эндпоинт, мне надо с фронта закинуть туда некоторые данные из localStorage чтобы пхп-бэк их обработал. Как это сделать? Только через query-параметры?
Аноним 17/05/21 Пнд 22:01:56 #730 №2033957 
image.png
>>2031658
Вот про показ страницы ошибки (точнее про возвращение текста с ошибками в виде json) и идет речь. Второй слушатель нужен для перехвата исключений, которые бросает фреймворк, и для преобразовывания их в JsonException
Нормальный ли это подход?
Аноним 18/05/21 Втр 10:53:44 #731 №2034189 
>>2030848
Лара построена на симфони.
Аноним 18/05/21 Втр 11:33:13 #732 №2034249 
>>2033957
>false === $ex instanceof JsonException
Нихуя себе я утром чуть не всрался от такой конструкции
Аноним 18/05/21 Втр 12:27:28 #733 №2034322 
>>2033896
Зачем аплаишься на гроши? Никто в айти не получает такие копейки. Даже приходящая в офис уборщица будет смеяться.
Насчет задачи - задача адекватна для мидла за 100к, но никак не для стажера за 15к
Аноним 18/05/21 Втр 12:28:37 #734 №2034324 
>>2033936
Обычно такое постом делается
Аноним 18/05/21 Втр 12:56:01 #735 №2034375 
>>2034322
В мухосоранске моём вакансий нет, ищу удалёночку с нулём опыта работы. Кидаю дохуя откликов, за пол месяца только эти ответили и 1с.
Аноним 18/05/21 Втр 13:02:33 #736 №2034386 
>>2034375
>ищу удалёночку с нулём опыта работы
А нарисовать опыт не судьба?
Аноним 18/05/21 Втр 13:17:03 #737 №2034418 
>>2034386
Не ебу что отвечать когда спрашивают про ДОСТИЖЕНИЯ или просто интересные проекты. У меня интересных проектов 0, обычные магазы, новостные сайты и парсеры
Аноним 18/05/21 Втр 13:22:13 #738 №2034429 
>>2034418
Любую задачу можно приукрасить и подвести к достижениям. Например парсер, мб ты там удачно применил какой-то инструмент (очереди, кеш, что-то еще), увеличив производительность в десятки раз.
Или в новостном сайте прикрутил хитрий алгоритм рекомендаций.
Общий рецепт - ищем в другом проекте классную фичу, думаем, как бы реализовали, на собесе говорим, что реализовали и как.
Аноним 18/05/21 Втр 14:51:01 #739 №2034525 
>>2034429
>>2034386
Мне интересно, это только в пхп засилие такие долбоебов, или везде?
Аноним 18/05/21 Втр 15:05:41 #740 №2034538 
>>2034249
с Йода познакомиться нужно нотацией тебе
Аноним 18/05/21 Втр 15:54:32 #741 №2034623 
>>2034249
А что не так с той конструкцией? Я всегда так пишу, если не использую предикаты, да и то только если условие проверяется на истинность

if ($person->isGay()) {
$person->suck($nigger->getDick());
}

if (false === $person->isGay()) { ... }
Аноним 18/05/21 Втр 16:39:30 #742 №2034723 
>>2034623
Я залип на скрин пару минут потому что мне показалось что if ((false === $ex) instanceof JsonException), ну ты понял

>if (false === $person->isGay()) { ... }
Тут хуй знает что хуже, использовать такую йобда нотацию, или не использовать простое отрицание. Вроде уже давно все присваивания в ифах подсвечиваются, не пойму к чему это всё
Аноним 18/05/21 Втр 17:09:55 #743 №2034775 
Чето на убунте настройка опача ебет меня в голову. Не могу новыйх виртуальный хост добавить.
Создаю новый файл, прописываю в него необходимый минимум.
Добавляю в конфигурацию апача
sudo a2ensite my-example

Он пишет что конфигурация изменена, рестартните. Я перезапускаю и получаю хуй.
Полдня дрочусь, заебло.
Аноним 18/05/21 Втр 17:15:51 #744 №2034783 
>>2034775
п.с.

теперь вообще ахуительное поведение:

решил отключить ранее настроенный виртуальный хост, хз когда то сделал и получилось.
Отключил командой sudo a2dissite old-site.conf
И что вы думаете? Браузер при обращени к этому старому сайту перестал его показывать, но блядь теперь он мне просто структуру корневого каталога этого сайта показывает.
Вот мразь
Аноним 18/05/21 Втр 17:17:11 #745 №2034788 
>>2034723
На мой взгляд, дело не в ошибочном присваивании (это кем нужно быть, чтобы так проебаться?), а в удобстве и читабельности.

>>2034775
А зачем в 2021 году апач?
В sites-enabled симлинк присутствует? Адрес в hosts добавить не забыл?
Аноним 18/05/21 Втр 18:35:55 #746 №2034916 
>>2034788
>>А зачем в 2021 году апач?
А есть разница для обычно сайта?

Я уже разобрался - сам себе в ногу выстрелил полгода назад, когда "настраивал" iptables.
Аноним 18/05/21 Втр 18:43:23 #747 №2034929 
>>2034525
А ты пойди прорвись с 0 опыта через толпу вайтишников
Аноним 18/05/21 Втр 19:42:20 #748 №2035001 
какова ситуация с асинхроностью на пхп?
Аноним 18/05/21 Втр 19:51:48 #749 №2035012 
>>2035001
В 8.1 возможно завезут файберы https://wiki.php.net/rfc/fibers
Пока - только корутины ручками (можно с промисами от Guzzle, например).
Аноним 18/05/21 Втр 19:52:45 #750 №2035014 
>>2035001
А ну ещё swool есть https://www.swoole.co.uk/
И ReactPHP, который хоронят, но он копротивляется: хз че там
Аноним 18/05/21 Втр 20:22:21 #751 №2035039 
>>2035014
Про амп забыл https://amphp.org/amp/
Да и еще куча всего есть, но я бы при всей своей нелюбви к жопаскрипу использовал ноду
Аноним 18/05/21 Втр 20:27:47 #752 №2035048 
Это какой-то платиновый вопрос. В каждом треде приходит кто-то, спрашивает "а как у вас с асинхронностью" и жалуется, что лучше использовать ноду. Ну так сразу бы и использовал, чего споры разводить.

Хотя на практике асинхронность мало где и нужна.
Аноним 18/05/21 Втр 20:30:39 #753 №2035052 
Что написать нужное на PHP?
Аноним 18/05/21 Втр 20:35:19 #754 №2035058 
>>2034375
>>2033896
Это у них не задание явно а по работе хотят чтобы ты им за копейки сделал, вали с этой конторки
Аноним 18/05/21 Втр 20:40:50 #755 №2035068 
>>2035052

Обычно идеи появляются сами. Например, понадобилось тебе валидировать ИНН, ты погуглил, не нашел ни одной нормальной бибилиотеки и решил написать свою и выложить. Или понадобилась точная работа с дробями, поискал класс Rational, не нашел, сделал свой. Или понадобилось искать в ФИАС введенный в произвольной форме адрес, не нашел, сделал что-то свое.
Аноним 18/05/21 Втр 20:47:52 #756 №2035078 
>>2033936

Можно в теле POST-запроса отправить JSON.

>>2033957

Думаю, что неправильный.

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

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

Понятнее всего, как мне кажется, будет явная обработка ошибок по типу:

если (сущность не найдена) {
отдать ответ с ошибкой 404;
}

Чуть похуже, но приемлемо будет явно выкидывать JSONException, по его названию понятно, что оно будет преобразовано в JSON ответ:

если (сущность не найдена) {
выкинуть исключение JSONEXception;
}


Аноним 18/05/21 Втр 20:50:52 #757 №2035083 
>>2035078
Да с чего ты взял, что любые? Только некоторые, наподобие 404 итд, они явно прописаны во втором слушателе.
Аноним 18/05/21 Втр 21:20:10 #758 №2035117 
>>2035039
а в чем проблема сделать асинк?
как то же js посадили на движок из С
Аноним 18/05/21 Втр 21:26:21 #759 №2035125 
Кто шарит за js?
Как изменить цвет блока при удержании мышью?
токсик из жс треда,ты тут?
Аноним 19/05/21 Срд 01:50:00 #760 №2035271 
>>2035048
Да, дружок, ты уже заебал если у меня детектор не сломался, тебе ничего не нужно на твоих древних микропроектах в зассаной галере. Ни асинхронности, ни микросервисов, ни разделения бэка и фронта. Но зачем всем об этом знать?
Аноним 19/05/21 Срд 08:10:01 #761 №2035317 
>>2035012
Думаю файберы будут почти на 100 процентов. Всратая асинхронность из коробки закроет еще какой то определенный диапазон тасков. пихипи собственно так и развивается - разползаясь по чужим нишам потихоньку.
Аноним 19/05/21 Срд 10:28:23 #762 №2035370 
Вы используете в работе подход GraphQL?
Аноним 19/05/21 Срд 11:14:21 #763 №2035398 
>>2035001
Говорят, что только amp пригоден для прода
Аноним 19/05/21 Срд 11:47:08 #764 №2035424 
>>2035317
>Всратая асинхронность из коробки
И что именно в ней будет всрато?
Аноним 19/05/21 Срд 11:56:44 #765 №2035431 
>>2035398
А овчинка стоит выделки?
Аноним 19/05/21 Срд 12:38:26 #766 №2035455 
>>2035431
Зависит от задач. Если хочется всего лишь небольшого ускорения, то можно посмотреть в сторону роадраннера
Аноним 19/05/21 Срд 14:05:20 #767 №2035523 
>>2035455
Хочу вебсокетов
Аноним 19/05/21 Срд 14:42:03 #768 №2035554 
>>2035068
У меня такое ощущение как будто все уже изобрели.
Аноним 19/05/21 Срд 15:14:45 #769 №2035573 
2 стула
валидировать форму на сервере или через жс на фронте?
Аноним 19/05/21 Срд 15:40:53 #770 №2035591 
>>2035573
>валидировать форму на сервере
Это обязательно

>через жс на фронте
Это говно легко обходится, только в дополнение к серверной валидации для юзер экспириенса
Аноним 19/05/21 Срд 15:59:47 #771 №2035605 
>>2035591
я так понимаю,надо учить упоротые регулярные выражения?
Аноним 19/05/21 Срд 16:01:15 #772 №2035606 
>>2035605
Нет, надо учиться пользоваться либами для валидации
Аноним 19/05/21 Срд 16:03:19 #773 №2035608 
>>2035523
Тогда амп
Аноним 19/05/21 Срд 16:05:02 #774 №2035611 
>>2035606
которые на основе их сделаны?
к каждой полю формы идет функция,так?
Аноним 19/05/21 Срд 16:14:50 #775 №2035628 
>>2035611
Если на фронте и без фреймворков, то да. Можно взять какой-нибудь input mask и описать правила валидации для каждого поля ввода. Там наверняка из коробки будут все типовые случаи и можно будет обойтись без регулярок, чтобы не дать ввести то, что не нужно. Но это все не отменяет необходимости делать валидацию на бэке
Аноним 19/05/21 Срд 16:24:35 #776 №2035642 
>>2035605
Зачем?
Не помню, когда последний раз имел с ними дело на проде
Аноним 19/05/21 Срд 16:26:10 #777 №2035644 
>>2035642
ну как,основа же для вката
Аноним 19/05/21 Срд 16:30:17 #778 №2035647 
>>2035644
Ну можешь уделить час на теорию и пару часов на практику. А так не вижу смысла их ковырять, пока таска по ним не пришла. Достаточно знать, что есть вот такой кроссплатформенный инструмент работы со строками
Аноним 19/05/21 Срд 20:27:00 #779 №2035799 
А как можно защитить статические файлы - картинки, файлы с js кодом, css и т. д.? Вот допустим такая ситуация: есть админка в ее шаблоне подключается через тег script js файл, который лежит на сервере, но ведь кто-то другой, допустим, начнет брутфорсить и сможет его найти, а там по коду фронтенда админки можно лучше понять как работает сайт, что плохо для безопасности. То есть надо это как-то на уровне апача/нжикса блокировать?
Аноним 19/05/21 Срд 21:10:08 #780 №2035840 
>>2035799
>но ведь кто-то другой, допустим, начнет брутфорсить и сможет его найти
Не сильно понял что ты имеешь ввиду под брутфорсить, но если жс подключается только для залогиненных пользователей, то никто его не увидит. Другое дело что много ума не нужно написать в урле /assets/admin.js или что-то подобное

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

>То есть надо это как-то на уровне апача/нжикса блокировать?
Опять же, если у тебя весь сайт как какой-то вордпресс валяется в публичной папке, то да, нужно денаить папку .git, папки vendor и т.д.
Аноним 19/05/21 Срд 21:49:15 #781 №2035890 
Заканчиваю универ немного по другой специальности. Нашел вакансию стажера на пхп. Пишут, что обучают полностью с нуля. Из требований - только основы php, js, MySQL. Мб кто подскажет, что могут вообще спрашивать и что надо знать в таких случаях? В универе прогал немного, но в целом основы знаю какие-никакие
Аноним 19/05/21 Срд 22:12:45 #782 №2035913 
>>2035840
>не нужно написать в урле /assets/admin.js или что-то подобное
Да, я это и подразумевал, что кто-то просто будет перебирать названия файлов по адресу /assets/
Аноним 19/05/21 Срд 22:50:15 #783 №2035945 
>>2035605

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

>>2035642

У всех прод разный.

>>2035799

Если тебе хочется максимальной безопасности, можно весь раздел админки закрыть HTTP-авторизацией и никакие файлы оттуда не будут выдаваться. Но придется два раза логиниться.
Аноним 20/05/21 Чтв 08:14:14 #784 №2036172 
>>2035945
> можно весь раздел админки закрыть HTTP-авторизацией и никакие файлы оттуда не будут выдаваться. Но придется два раза логиниться.
поподробнее
Аноним 20/05/21 Чтв 14:39:06 #785 №2036569 
>>2035554
Так и есть, это какой-то программисткий юмор у чела
Аноним 20/05/21 Чтв 14:41:32 #786 №2036572 
image.png
>>2035554
всё поверхностное -- да

но многое переизобретается,
либо с новыми инновационными технологиями,
либо просто в нужном месте в нужное время
Аноним 20/05/21 Чтв 15:24:07 #787 №2036612 
>>2036572
Как всегда простые и понятные сервисы рубят бабло...
эх..
Аноним 20/05/21 Чтв 18:46:11 #788 №2036944 
Если у меня много $_POST на приеме,так и херачить десяток списком?
Аноним 20/05/21 Чтв 19:04:48 #789 №2036966 
>>2036944
Маппер напиши
Аноним 21/05/21 Птн 11:28:50 #790 №2037308 
image.png
Аноним 21/05/21 Птн 12:12:12 #791 №2037372 
eEk4qpFTGM.jpg
>>2037308
Аноним 21/05/21 Птн 13:00:36 #792 №2037417 
Ratchet кто-нибудь трогал? Как можно безболезненно прикрутить чятик к готовому приложению с аутентификацией через jwt?
Аноним 21/05/21 Птн 15:41:17 #793 №2037608 
Вот допустим есть функция проверки формы(логин и пароль)Сначала проверяем логин с условием,если тру идем к паролю,а если фолз,то что кодить?
Аноним 21/05/21 Птн 15:55:27 #794 №2037636 
>>2037608
Нескурно их отдельно проверять.
Проверяй их вместе(грубо говоря делать запрос в базу на наличие логина с паролем) и выдавай общую ошибку вида "не верный логин или пароль"
Аноним 21/05/21 Птн 16:05:28 #795 №2037649 
>>2037636
а если валидность?
допустим логин,имя или пароль не правильно записаны,там меньше 6 символов или есть ненужные символы?
Сделать убийство скрипта и выбросить сообщение?
Аноним 21/05/21 Птн 16:10:36 #796 №2037659 
>>2037649
Так ты определись для начала, что за форма у тебя: логин или регистрация. Там правила валидации разные
Аноним 21/05/21 Птн 16:13:10 #797 №2037664 
>>2037659
ну давай для регистрации.
я щас как раз читаю регулярки
Аноним 21/05/21 Птн 16:13:12 #798 №2037665 
>>2037649
В общем случае для формы задается список правил валидации (встроенные в фреймворк, либо кастомные функции) вида [параметр => правила] или кастомный валидатор. Потом проходимся по этому списку, возникшие ошибки заносим в массив $errors и отдаем (по апи или рендерим в шаблон)
Аноним 21/05/21 Птн 16:47:00 #799 №2037694 
regex1.jpg
Так,почему не подходит под шаблон?
Аноним 21/05/21 Птн 17:05:51 #800 №2037707 
regex2.jpg
>>2037694
а вот так получилось
Аноним 21/05/21 Птн 17:13:53 #801 №2037717 
>>2037694
Потому что подчеркивание не входит в выбранные тобой диапазоны символов
Аноним 21/05/21 Птн 17:19:31 #802 №2037727 
>>2037717
интересно,а как обстоят дела с алфавитам где есть точки,круглишки,хвостики?
Аноним 21/05/21 Птн 17:23:29 #803 №2037733 
>>2037727
Гугли regex unicode range
Аноним 21/05/21 Птн 17:35:39 #804 №2037745 
>>2037733
а если я хочу определенный символ @ добавить в допустимые к буквам и цифрам?Как записать?
Аноним 21/05/21 Птн 17:39:11 #805 №2037750 
>>2037745
Взял бы какую вводную статью по регуляркам, да почитал. Там есть про диапазоны символов
Аноним 21/05/21 Птн 17:40:37 #806 №2037753 
>>2037750
да я тупанул,дочитал
можно в квадратные скобки запихать или \@
Аноним 21/05/21 Птн 18:02:52 #807 №2037787 
> В случае, если первым символом описания класса является '^', логика работы инвертируется: класс соответствует одиночному символу, который не содержится в наборе, определяемым классом
[^@]-то есть этот символ отвергается как допустимый?
Аноним 21/05/21 Птн 19:39:39 #808 №2037897 
regex3.jpg
Ошибка на 31 строке.
Где я неправильно накодил?
Аноним 21/05/21 Птн 19:42:12 #809 №2037905 
>>2037897
Ошибку мы должны из космоса прочитать?
Аноним 21/05/21 Птн 19:43:26 #810 №2037906 
>>2037905
сорри
Аноним 21/05/21 Птн 19:46:43 #811 №2037909 
>>2037906
PHP Fatal error: Uncaught Error: Call to undefined function checking_login() in /workspace/Main.php:32
Stack trace:
#0 {main}
thrown in /workspace/Main.php on line 32
Аноним 21/05/21 Птн 19:47:16 #812 №2037911 
>>2037897
Поставь пхпшторм. У тебя опечатка в синтаксисе (название функции). Он бы тебе подсветил
Аноним 21/05/21 Птн 20:09:00 #813 №2037938 
>>2037911
да,исправил
Аноним 21/05/21 Птн 20:18:56 #814 №2037951 
>>2037897
Возвращай из таких функций булевы значения, а не строки

function isLoginValid(string $login): bool
{
return 0 !== preg_match('/^[a-zA-Z\d_]{6,}$/', $login);
}

Аноним 21/05/21 Птн 22:21:56 #815 №2038063 
>>2037727

Это зависит от того, как символы алфавита расположены в таблице Юникода. Выражение вида [a-z] значит "все символы, которые в таблице Юникода расположены между a и z".

Юникод - это такая большая таблица, где есть куча символов разных алфавитов и каждому присвоен уникальный код. Посмотреть на нее можно тут: https://unicode-table.com/ru/

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

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

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

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

Если же тебе надо указать "любая буква из любого алфавита" или "любой знак препинания" - то все намного проще. В регулярках для этого есть специальные коды, которые перечислены тут: https://www.php.net/manual/ru/regexp.reference.unicode.php

Например, \pL значит "любая буква любого языка".

Аноним 21/05/21 Птн 22:26:24 #816 №2038065 
>>2037787

[^@] значит "любой символ, кроме @"
[^a-z] значит "любой символ, кроме букв a-z"
Аноним 21/05/21 Птн 22:32:29 #817 №2038067 
>>2037608

Если логин в принципе неправильный (содержит недопустимые символы), то пишем соответствующее сообщение.

Если же логин соответствует шаблону, но такого логина нет в БД, то тут есть два варианта:

- написать "неправильный логин"
- написать "неправильный логин или пароль"

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

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

Ну и, надеюсь, ты знаешь, что пароли в базе надо солить и хешировать, а не хранить в открытом виде.
Аноним 21/05/21 Птн 22:34:49 #818 №2038068 
>>2035083

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

На практике, конечно, многие не думают об очевидности кода, а просто лепят как проще.
Аноним 21/05/21 Птн 22:39:57 #819 №2038071 
>>2036172

HTTP-авторизация - это когда при попытке открыть сайт (или определенную страницу на нем) выскакивает окно от браузера с запросом логина и пароля. Оно показывается в ответ на код 401 от сервера. Почитай про этот HTTP-код и про HTTP-авторизацию.

Это обычно настраивается не в PHP коде, а на уровне веб-сервера, например, в Апаче или Нгинксе.
Отрицание ^ в квадратных скобках, RegExp Аноним 22/05/21 Суб 12:03:03 #820 №2038391 
IMG20210522135139.png
IMG20210522135155.png
Имею такую, казалось бы, простенькую задачу. По краям две буквы 'a', а между ними - какой угодно символ, кроме 'e'/'x'. Результат виден на пикриле. Почему код не сработал, как следует, что на самом деле произошло?
Аноним 22/05/21 Суб 12:07:08 #821 №2038395 
IMG20210522140403.png
>>2038391
Добавлю, данный код сработал на отлично, когда я написал вот так: '#\ba[^ex]a\b#'

Что это значит, объясните пожалуйста подробно.
Аноним 22/05/21 Суб 16:02:44 #822 №2038704 
Напомните почему в документации нет инфы как усатанвоить пыху
Аноним 22/05/21 Суб 16:09:48 #823 №2038712 
>>2038391

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

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

>>2038395

\b обозначает границу слова, то есть такое место, где с одной стороны стоит буква, а с другой - не-буква.

Соответственно \ba обозначает "символ a, слева от которого нет буквы".А a\b значит "символ a, справа от которого нет буквы".

При этом \b не соответствует какому-то символу, а соответствует границе между двумя символами.
Аноним 22/05/21 Суб 16:17:01 #824 №2038724 
>>2038704

Во-первых, есть раздел по установке: https://www.php.net/manual/ru/install.php

Например, под Линукс установка сводится к набору команды вроде sudo apt-get install php.

Правда, под виндоуз там в основном советы по настройке PHP вместе с IIS (то есть, конфигурация для сервера под Windows, а не для домашнего компьютера).

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

Потому под Windows проще установить все вручную. Скачать нужную сборку с https://windows.php.net/download/ (желательно 64-битную версию, если система это поддерживает), распаковать в папку, добавить эту папку в PATH.Также, скачать и установить с сайта Майкрософт Visual C++ Redistributable for Visual Studio 2015-2019 (это не Visual Studio, а лишь небольшая библиотека). Ссылка на VC Redist есть на том же сайте слева.

Аноним 22/05/21 Суб 17:54:30 #825 №2038883 
Сколько ядер использует пхп?
1?
Аноним 22/05/21 Суб 18:41:17 #826 №2038934 
Почему версия ларки такая старая, или я что-то не так понимаю?
Аноним 22/05/21 Суб 18:42:06 #827 №2038936 
фвыфы.jpg
>>2038934
отклеилось
Аноним 22/05/21 Суб 18:43:18 #828 №2038938 
>>2038936
ты ставил по офиц гайду?
Аноним 22/05/21 Суб 19:05:20 #829 №2038959 
>>2038938
Установил пыху, потом композер и через него
Аноним 22/05/21 Суб 19:50:14 #830 №2038994 
>>2038936
Так это же вроде версия конкретно инсталлера, не пользовался им. Версию ларки посмотри например в composer.json
Аноним 22/05/21 Суб 20:15:25 #831 №2039025 
pizda.jpg
Как фиксить?
Аноним 22/05/21 Суб 20:17:29 #832 №2039028 
>>2039025
Валера, ну япона мать. Ты или загугли, или скинь версию пыхи и ларавеля
Аноним 22/05/21 Суб 20:30:24 #833 №2039045 
>>2039028
Laravel Framework 7.30.4

пыха восьмая
Аноним 22/05/21 Суб 21:16:31 #834 №2039085 
>>2038712
> Но "любой символ" включает и пробел, потому твоя регулярка может найти последовательность вида "a a", то есть кусок между двумя соседними словами.
> Возможно, надо исключить пробел из числа разрешенных символов?
А ведь и вправду. Большое спасибо за помощь, впредь буду внимательнее.
Аноним 23/05/21 Вск 00:53:03 #835 №2039290 
>>2038883

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

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

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

Также, ты можешь поэкспериментировать с многопоточностью и создать несколько потоков внутри одного процесса. Тогда тоже можно будет использовать несколько ядер, но могут быть сложности с обменом данными между потоками.
Аноним 23/05/21 Вск 01:08:42 #836 №2039295 
>>2039025

Эта ошибка не из-за твоих действий, а скорее всего, какая-то проблема в Ларавеле (или слишком новый PHP). Тебе надо загуглить текст ошибки:

Laravel ReflectionParameter::getClass is deprecated

Поиск показывает, что в PHP8 произошли изменения, к которым Ларавель оказался не готов (а именно: удалена функция getClass). Вот ошибка в их багтрекере: https://github.com/laravel/framework/issues/33387

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

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

- либо снести установленный фреймворк и как-нибудь установить 8-ю версию
- либо исправить версию фреймворка и библиотек в composer.json и сделать composer update. Это полезно для лучшего изучения композера. Сравни свой composer.json с конфигом от Ларвеля 8: https://github.com/laravel/laravel/blob/8.x/composer.json и внеси себе нужные изменения.


Аноним 23/05/21 Вск 09:28:30 #837 №2039411 
>>2038724
А что выбирать thrfead safe или Non Thread Safe ?
Аноним 23/05/21 Вск 10:07:18 #838 №2039427 
Какая охуенная документация на пыхе
https://www.php.net/manual/ru/xsl.installation.php
Аноним 23/05/21 Вск 10:31:29 #839 №2039448 
>>2038724
>распаковать в папку, добавить эту папку в PATH

Как добавить?
Аноним 23/05/21 Вск 10:57:49 #840 №2039489 
1234.jpg
>>2039448
Все разобрался, но у меня теперь нету php.ini
Аноним 23/05/21 Вск 11:00:15 #841 №2039491 
zaebalo.jpg
Как фиксить?
Аноним 23/05/21 Вск 11:22:21 #842 №2039522 
>>2039489
Пробовал восьмерку, там тоже нет
Аноним 23/05/21 Вск 15:35:48 #843 №2039774 
загружено (1).mp4snapshot00.03[2021.05.0418.09.52].jpg
>>2039491
>>2039522
>>2039489
>>2039295
Все, запустил, спасибо
Аноним 23/05/21 Вск 17:55:27 #844 №2039944 
Валера, похапе на винде - это путь по хуям в никуда.
Аноним 23/05/21 Вск 19:57:40 #845 №2040118 
>>2039774
Поставь виртуалку с линуксом,если конечно у тебя не старое железо
Аноним 23/05/21 Вск 21:58:56 #846 №2040223 
>>2040118
На Винду лучше wsl накатить, правда докер ебется с памятью но шо поделать
Аноним 23/05/21 Вск 22:31:59 #847 №2040250 
>>2040118
>>2040223
Проще поставить убунту рядом с виндой и не ебать мозг ни себе ни людям
Аноним 23/05/21 Вск 23:03:43 #848 №2040286 
>>2040250
и шоб отвалился вай-фай,блютуз и сетевуха как у меня?
Аноним 24/05/21 Пнд 02:45:18 #849 №2040426 
>>2039944
>>2040118
>>2040223
>>2040250
>>2040286
вы, безрукие педики, анон давно всё запустил, и тут вы с непрошенными советами, хаха
Аноним 24/05/21 Пнд 05:25:09 #850 №2040444 
>>2030434
Разговоры из разряда "нет хлеба - ешьте пирожные".
Нужно быть достаточно прошаренным чтобы выкупить на собесе что тебе пиздят. И нужно быть достаточно богатым, чтобы тут же на изичах уволиться и сидеть без зарплаты условные пол месяца, пока ищешь другой вариант. Да и в целом, если ты можешь себе позволить выбирать работодателя, то для тебя как минимум весь российский рынок открыт.

Я сам именно потому и съебал в свое время из региона, что даже с охуенным опытом у тебя на выбор пять контор. А там уже как фартанет, может будет норм, а может душка. Любой якорек типа ипотеки или личинуса и ты уже хуй куда денешься оттуда.
Аноним 24/05/21 Пнд 08:02:55 #851 №2040473 
Вкатился я в ваше айти, аноны. Вкат занял ~5.5 месяцев практически с нуля.
Перед поиском работы потыкал ларку около месяца и по ней же начал что-то искать. На поиск работы ушло пару недель от силы, при условии, что я сам не особо охотно откликался на вакансии и живу далеко не в дс1, дс2. В итоге за неделю получил сразу 4 оффера: два на удаленку, два в офис. К собесам никак не готовился. По факту из 4 собесов более-менее неплохой оказался один, хотя вопросы плюс-минус везде были похожие.
Удачи тем, кто пытается вкатиться, если есть вопросы, спрашивайте.
Аноним 24/05/21 Пнд 08:55:54 #852 №2040495 
Аноны, чет не могу найти = как в пхп читать напрямую из потока http запроса?
В ноде я понимаю как это делать, а с пхп чет затупил. Хочу разобраться как из потока в файл например, или в другой поток писать - что бы не загружать все тело post запроса сразу в память, а по кускам.

Аноним 24/05/21 Пнд 09:59:20 #853 №2040562 
>>2040286
За почти пять лет на убунте только однажды после обновления отвалился звук.
Аноним 24/05/21 Пнд 10:01:28 #854 №2040565 
Можно ли гонять запросы между скриптами?
Аноним 24/05/21 Пнд 10:04:30 #855 №2040573 
>>2040495
Ни разу с этой херней не сталкивался, но возможно тебе нужно смотреть в сторону php://input
Аноним 24/05/21 Пнд 10:04:53 #856 №2040574 
>>2040565
Можно, гоняй.
Аноним 24/05/21 Пнд 10:24:24 #857 №2040601 
>>2040473
Тухлый вброс.
Аноним 24/05/21 Пнд 10:28:07 #858 №2040609 
>>2040601
Так он же не написал, что за работа. Может его взяли на пару сотен вордпрессобитриксы колупать
Аноним 24/05/21 Пнд 10:29:11 #859 №2040611 
>>2040574
С какой скоростью?
Аноним 24/05/21 Пнд 10:36:53 #860 №2040625 
>>2040601
С чего ? Если аноны годами не могут вкатиться - это я уже хз, как надо так стараться. У меня заняло это столько времени, с учетом того, что я прогал 6-7/7 по 8 часов стабильно. Так что этот срок я еще считаю долгим.

>>2040609
Да нет, битрикс никогда в жизни не курил и даже не рассматривал вакансии по нему. Проект на ларке, пару месяцев уже работаю, но думаю в ближайшее время искать что-то другое, ибо скиллы никак не апаются, ничего нового я не узнаю, поэтому смысла торчать в этой кампании кроме как на зп сидеть - нет.
По поводу вилки, то на всех четырех давали 45-55 на руки (позиция джуна). Тут я уже не могу судить, много это или нет для мухосрани, но точно куда выше средней зп по региону.
Аноним 24/05/21 Пнд 10:41:24 #861 №2040634 
>>2040611
Не больше 90 км/ч
Аноним 24/05/21 Пнд 11:19:26 #862 №2040706 
>>2040625
>45-55 на руки (позиция джуна)
>мухосрань

Хотя зачем вообще боту что-то отвечать?
Аноним 24/05/21 Пнд 11:49:30 #863 №2040772 
>>2040625
А по каким курсам/материалам вкатывался? Что на собесе спрашивали?
Аноним 24/05/21 Пнд 12:01:50 #864 №2040792 
Аноны, кто-нибудь может по этому учебнику что-нибудь сказать?

http://sd.blackball.lv/library/Learn_PHP_8_2nd_Edition_(2020).pdf

Думаю начать изучать PHP с него.
Аноним 24/05/21 Пнд 12:03:22 #865 №2040793 
>>2040772
Разговариваешь с троллем.
Аноним 24/05/21 Пнд 12:41:58 #866 №2040849 
>>2040772
HTML, CSS изучал по http://htmlbook.ru/ и https://webref.ru/. Иногда некоторые моменты вычитывал еще в https://developer.mozilla.org/
После сверстал пару макетов и забил на html & css.

PHP начинал с курсов от Игоря Борисова там несколько модулей. Очень годные курсы, особенно если начинать с нуля. Все очень понятно и доступно объясняет. Все вещи, которые нужны - там есть. Хоть курсы и довольно старые, но с того времени ничего кардинального в языке не поменялось. Чтобы понять и разобраться в основах - достаточно, к тому же затрагивается ООП. Некоторые моменты просто гуглил, если вдруг хотелось во что-то получше углубиться или что-то было непонятно.
Есть еще годный сайт, если вдруг видео не особо заходят http://code.mu/, но я его особо не курил, ибо после курсов от Борисова, там ничего нового нет, но учебник годный.

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

После списка студентов уже начал курить ларку. У Елисеева есть годный курс по ларе, но они очень долгие и не каждый осилит, но знаний там можно вытянуть достаточно + если смотреть на скорости х1,3-1,4, то вполне неплохо. Без знаний ООП и параллельного курения самой документации лары особого смысла нет смотреть. Параллельно с изучением лары начал читать Зандстру.

Да и все в принципе, git учил по первому сайту гугла, js иногда курил по learn.javascript, но жс просто для общих знаний, практики на нем особо нет. Для основ sql неплохой сайт https://sql-academy.org/ и на метаните вроде видел. Докер почитывал по оф доке.

Из вопросов на собесах ничего необычного. В основном банальные вопросы про ООП. Что такое классы, объекты, принципы ООП, как они работают и т.д. Чем интерфейс от абстрактного класса отличается, чем абстрактный от обычного - это можно тоже отнести к банальным вопросам про ООП. Про http протокол вопросы были, а-ля как он работает, какие методы есть, их отличие, коды ответов и подобная лажа. Вроде были еще вопросы про сами нюансы PHP, как происходит преобразование типов, как этого избежать, можно ли добиться строгой типизации и тому подобное.
Про SOLID спрашивали, в основном просили объяснить как каждый принцип работает и для чего нужен вообще. Про SOLID понравились вопросы только на одном собесе, там прям знатно душили, но как сказал техлид, джунов обычно так не душат с солидом, но я сам попросил, чтобы знания проверить и узнать что-то новое.
По SQL вопросы тоже дефолтные, что такое индексы, составные индексы, внешние ключи, отличие джойнов, про нормализацию еще были вопросы вроде. Но по SQL не так много вопросов, в основном была задачка и нужно было написать запрос.
На одном собесе парочка вопросов про линь было и несколько про гит.
Ну и самые дефолтные вопросы на каждом собесе: чем занимался, что делал, что за прокеты и т.д.
Как-то так.
Аноним 24/05/21 Пнд 12:47:40 #867 №2040860 
>>2040849
Забыл добавить, про паттерны были вопросы на двух собесах вроде. На одном простые вопросы, какие виды есть, какие знаешь. На другом, где душили про солид, там уже намного глубже в эту тему углубились, но опять же со слов техлида - джунов у них с этим не дрочат, но я сам попросил х2.
Аноним 24/05/21 Пнд 13:58:30 #868 №2041011 
>>2040849
Скрин тасков из джиры или пиздабол.
Аноним 24/05/21 Пнд 14:50:23 #869 №2041108 
>>2041011
Может тебе еще скрины диалогов из слака, скрины проекта и до кучи фотку договора скинуть ? Или ты думаешь, что мне заняться больше нечем, как доказывать что-то какому-то анону ?
Живи просто дальше в свое мирке, в котором тебя все хотят наебать.
Аноним 24/05/21 Пнд 14:55:27 #870 №2041113 
>>2041108
Ты забыл где ты находишься? Пруфай хоть чем-нибудь или пиздабол официально.
Аноним 24/05/21 Пнд 15:35:26 #871 №2041168 
>>2041113
Ты первый пруфай
Аноним 24/05/21 Пнд 15:36:48 #872 №2041170 
>>2040473
>Вкат занял ~5.5 месяцев практически с нуля
Вполне адекватный срок. Не понимаю, с чего здешние неосиляторы бугуртят. Сидели бы учили фреймворк и код писали, глядишь тоже вкатились бы
Аноним 24/05/21 Пнд 15:53:01 #873 №2041201 
>>2041168
Все ясно.
Аноним 24/05/21 Пнд 15:53:34 #874 №2041202 
>>2039411

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

>>2039427

Это инструкция на случай, если ты захочешь сам компилировать PHP из исходников. Если же ты используешь Линукс, то ставишь библиотеку командой вроде apt-get install. Если винду, то скорее всего это расширение идет в архиве вместе с PHP и достаточно разрешить его в php.ini.

>>2039489

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

Аноним 24/05/21 Пнд 15:55:02 #875 №2041205 
>>2041170
Тоже в недоумении, с чего срок вката такой бугурт вызвал. Ибо я до этого считал, что это даже долго, с учетом того, что я по 8-10 часов практически каждый день сидел.
Мб здешние вкатуны просто бояться по собесам ходить, может у них знаний уже вполне достаточно для вката, но они об этом не знают. По собесам можно и нужно ходить чтобы хотя бы проверить свои знания и получить экспириенс. Не пройдешь собес и что ? Зато будешь знать, что тебе подтянуть, имхо. По крайней мере я проходя собесы не ставил на первое место цель вкатиться.
Аноним 24/05/21 Пнд 16:04:50 #876 №2041227 
>>2040286

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

>>2040118

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

В то время как в Windows все работает из коробки. Запускаешь встроенный в PHP сервер и не надо ни нгинкс, ни апач настраивать.

>>2040250

Не вводи в заблуждение. Не проще.

Аноним 24/05/21 Пнд 16:14:52 #877 №2041238 
>>2041227
>Не вводи в заблуждение. Не проще.
С точки зрения долбоеба человека, не умеющего гуглить, безусловно.

>>2041108
Официально определен в пиздаболы
Аноним 24/05/21 Пнд 16:14:57 #878 №2041239 
>>2040495

В PHP есть php://input, но фактически он будет читать данные из памяти (PHP сначала загружает весь запрос в память, а только после запускает твой скрипт).

Если у тебя гигабайтные запросы и хочется их читать потоком, то тебе надо не использовать встроенный в PHP сервер, а написать свой веб-сервер (например, на ReactPHP, amphp или чем-нибудь подобном) и тогда все будет работать аналогично ноде.

>>2040860

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

И собеседующий тоже кроме определений этих паттернов сам ничего не знает.

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

Аноним 24/05/21 Пнд 16:17:33 #879 №2041241 
>>2041239
Из какого года капчуешь? Синглтон давно считается антипаттерном наряду с сервис локатором и реестром.
Аноним 24/05/21 Пнд 17:07:54 #880 №2041331 
>>2041205
>Мб здешние вкатуны просто бояться по собесам ходить, может у них знаний уже вполне достаточно для вката, но они об этом не знают
По ощущениям здешние вкатуны либо тратят недостаточно времени на вкат, либо прикладывают усилия не туда. Они учатся программировать с самых азов, когда нужно быстро херачить круды на фреймворках. А программировать можно учиться в процессе работы по мере усложнения задач
Аноним 24/05/21 Пнд 17:10:05 #881 №2041334 
>>2041239
>давайте обсуждать реально применяемые паттерны
Давайте поговорим про Актив Рекорд
Аноним 24/05/21 Пнд 18:17:24 #882 №2041467 
>>2041334
Ловите ларавельщика
Аноним 24/05/21 Пнд 19:55:22 #883 №2041640 
nd86798.jpg
>>2040849
Благодарю!
Аноним 24/05/21 Пнд 20:03:07 #884 №2041651 
алгоритмы не спрашивают на собесах?
Аноним 24/05/21 Пнд 20:14:30 #885 №2041664 
>>2041205
Не представляю каким надо быть терминатором чтобы по 8-10 часов сидеть пыхтеть, я уже через полчаса хочу расслабится и посомтреть аниме\чекнуть социалки и т.д.
Аноним 24/05/21 Пнд 20:15:25 #886 №2041667 
>>2040625
Либо толсто/зелено, либо зафартило.
Впрочем не важно.
Аноним 24/05/21 Пнд 20:17:00 #887 №2041669 
>>2041205
Хуй знает какогь уровня ты зелень, и семен , но то что нужно подскакивать и по собесам ходить - факт железный.
Аноним 24/05/21 Пнд 20:28:54 #888 №2041686 
>>2041239
В PHP есть php://input, но фактически он будет читать данные из памяти (PHP сначала загружает весь запрос в память, а только после запускает твой скрипт).
>>В PHP есть php://input, но фактически он будет читать данные из памяти
>>PHP сначала загружает весь запрос в память, а только после запускает твой скрипт
Точно?
Я не встроенный использую - а апач, но логика такая же? То есть по дефолту я как в ноде не могу читать объект потока по кускам, сразу pipe-ая его в другой какой нибудь поток?
Про php://input и обертки читал. Но вот с файлами к примеру, или вводом/выводом в системные потоки по идее все обстоит обычно, можно открыть два дискриптора потока, и по кускам из файла например пайпить в консольный вывод, как я понимаю. И в response так же есть возможность по кусочкам заливать данные, опять же в psr7 , есть какие то stream интерфейсы.


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

>>2041241
У того же Зандстры синглтоон превращается в реестр, который со совими статическими методами плавно превращается в сервис локатор.

>>2040573
LДа я больше из интереса, так то на ларе пишу, там это не особо нужно. Но даже в ларе помнится можно потоком отдавать данные.
Аноним 24/05/21 Пнд 20:45:13 #889 №2041695 
>>2041664
Тут уже зависит от самих анонов, я думаю. От целей и умения выходить из зоны комфорта. У меня с этим особых проблем нет, да и интересно программирование как таковое. Под конец конечно немного тяжко было, в плане того, что время идет, а кушать что-то надо, поэтому еще решил попробовать походить по собесам.

>>2041667
На счет подфортило или нет - тут я не скажу, ибо было только 4 собеса, с каждого в итоге дали оффер. Как буду перекатываться в другую компанию, там будет видно.
Аноним 24/05/21 Пнд 21:22:51 #890 №2041737 
>>2041651
Меня спрашивали
Аноним 24/05/21 Пнд 22:10:33 #891 №2041781 
>>2041686
>У того же Зандстры синглтоон превращается в реестр, который со совими статическими методами плавно превращается в сервис локатор.
И что? Если Зандстра использует эти антипаттерны, то они внезапно перестали быть подобием глобальных переменных?
Аноним 24/05/21 Пнд 22:13:43 #892 №2041783 
Прошу совета у бывалых, какой рейт на апворке ставить?
Аноним 25/05/21 Втр 00:01:32 #893 №2041882 
>>2041664
>Не представляю каким надо быть терминатором чтобы по 8-10 часов сидеть пыхтеть
Я пыхтел по 4-6 часов, т.к. на большее не хватало. Соответственно вкатывался подольше.
Ща на работе когда тасок срочных нет, можно знатно поебланить
Аноним 25/05/21 Втр 00:03:04 #894 №2041886 
>>2041695
>4 собеса, с каждого в итоге дали оффер
Очевидный успех. Трудно только первый оффер получить, потом полегче, выбора больше, отношение не как к залетышу
Аноним 25/05/21 Втр 11:40:56 #895 №2042237 
1621932142151.png
>>2041334
>Актив Рекорд