Программирование

Ответить в тред Ответить в тред
Check this out!
Клуб изучающих PHP #123 /php/ Аноним 16/04/21 Птн 21:36:32 19984701
php-noob-1.png 32Кб, 500x500
500x500
cat-cafe-osaka.jpg 140Кб, 1024x683
1024x683
welcome-to-php.png 187Кб, 853x480
853x480
cat-sad.jpg 194Кб, 1024x768
1024x768
Здесь мы изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
Важно Аноним 16/04/21 Птн 21:37:44 19984732
grammar.png 55Кб, 500x644
500x644
Код нужно писать аккуратно и оформлять, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на 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 19984803
Вопрос, вытекающий из последних постов прошлого треда. Давно не касался авторизации и вот этого всего, знаю, что сейчас есть стандарты и тд. Но может кто подскажет в паре слов, насколько старый вариант с md5 хэшем сейчас безопасен?
Аноним 16/04/21 Птн 22:28:48 19985064
>>1998480
Какой старый вариант? Тебе сложно вместо md5() вызвать password_hash()?
Если использовать нормальную соль то md5 сложно взломать злоумышленику с ресурсами меньшими государственных. Но нет смысла ебаться с md5 когда у тебя из каропки password_hash и password_verify тупо всю хуйню делают за тебя.
Аноним 17/04/21 Суб 08:06:01 19987715
нужно написать парсер, но я хочу какать
Аноним 17/04/21 Суб 14:49:34 19990476
пук.jpg 51Кб, 1080x531
1080x531
Меня затрахали нерешаемые моим мозгом бонусные задачи из учебника, что делать?
Аноним 17/04/21 Суб 15:11:23 19990737
>>1999047
Скорее всего ты чего-то недогнал в процессе обучения. Тут не работает как в школе\шараге и надо честно позадрачивать с недельку.
На чём всрался?
Аноним 17/04/21 Суб 15:13:26 19990798
>>1999047

Ты можешь запостить свой код, и написать, что именно непонятно. Также, можно попробовать поискать решение задачи в гугле.
Аноним 17/04/21 Суб 15:29:36 19991039
152249595812049[...].jpg 136Кб, 1080x971
1080x971
>>1999073
>>1999079
Да че я не догнал... Все задачи решил предыдущие, но если попросить здесь помощи по бонусным мне в сотый раз льют в уши кучу помоев, которые никак не помогают решить задачу.

https://ideone.com/kzN6Eh

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

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

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


Аноним 17/04/21 Суб 18:41:27 199938010
Аноним 17/04/21 Суб 18:49:27 199938411
Извлекать данные из БД на страницу надо через аджакс?
Аноним 17/04/21 Суб 20:06:28 199947212
Пчелибосики, палите топовые IDE для PHP.
Аноним 17/04/21 Суб 20:27:03 199949613
Аноны, паршу рефер откуда пришёл человек и сохраняю его, например 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 199950814
Аноним 17/04/21 Суб 20:46:44 199952815
>>1999496
Господи, куда смотрели W3C, когда вводились интернационализованные домены? Это же рак, убивающий интернеты.
Аноним 17/04/21 Суб 21:01:13 199954716
>>1999528
Смотрели на шекели.
Долбоебы скупили свою местечковую хуиту, а теперь она никому не нужна и не используется.
Аноним 17/04/21 Суб 21:02:29 199954817
Аноны, скажите если я в свойстве класса сохраняю не объект, а вообще класс в таком виде

$this->classProps = SomthClass::class;

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

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

Так вот:

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

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

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

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

5. Куда смотреть дальше? Laravel/Yii2/Zend/Symphony?
Аноним 17/04/21 Суб 22:26:34 199963924
>>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 199964625
>>1999625
> Полно школьников 18 летних
В пхп?
Аноним 17/04/21 Суб 22:51:59 199965726
Аноним 17/04/21 Суб 23:28:06 199968127
>>1999657
В пхп вроде самый высокий средний возраст разраба после крестов и совсем дедовской хуйни типо кобола.
Где-то 33, как Иисусу.
Аноним 17/04/21 Суб 23:44:05 199968828
>>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 199970329
406791901021599[...].jpg 79Кб, 604x604
604x604
>>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 199971630
15545801948502.png 1746Кб, 1280x960
1280x960
>>1999703
хочу дописать
5. Вечный вопрос (ТМ) человека, который ежедневно работает с языком:
Почему мы продолжаем любить и использовать РНР, если его свобода с одной стороны обходится так дорого (по быстродействию), а с другой, самые продвинутые фреймворки -- это бесконечные попытки зарегулировать эту самую свободу, ведущую к бесконечным ошибкам?

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

Раньше я уверенно декларировал ответ: "скорость разработки, быстрый и дешёвый старт любого проекта, невозможность "зависания"". Но сейчас, глядя на достаточно сложные в освоении и запуске Symfony-приложения, состоящие из многих пакетов и зависимостей, я начинаю сомневаться: до сих пор ли это так?
Аноним 18/04/21 Вск 00:52:29 199974731
>>1999716
>ради чего мы должны мериться
Я неебу ради чего ты должен мериться. Я вот нихуя не должен - пилю приложухи и не несу пафосной хуиты. Надо будет го - подтяну го, надо ноду - подтяну ноду.
Это просто работа.
Аноним 18/04/21 Вск 00:53:26 199974932
1618696465136.jpg 230Кб, 940x945
940x945
>>1999716
Язык говно. Профитов никаких. Используй "быстрые" языки. /дисказ
Аноним 18/04/21 Вск 00:56:10 199975333
>>1999747
*мириться, опечатался
Я с 2004 года занят данной РАБотой, и для меня уже пора задумываться
Аноним 18/04/21 Вск 01:01:34 199975634
Аноним 18/04/21 Вск 01:01:54 199975735
16183440700080.mp4 4852Кб, 640x360, 00:05:10
640x360
>>1999753
Ну не мирись тогда. Мирись-мирись и больше не дерись.
По моему опыту бекенд это дай-то бох 50% - язык программирование, который не суть щас бы крудошлёпство великим делом считать. Остальное - смежные технологии и знание как делать хайлоад не всрав разработку.
Аноним 18/04/21 Вск 01:07:12 199976236
>>1999703
>>1999716
Почему мы дальше работаем с Симфони? Отвечу за себя, может спасу жизнь какого-то ньюфага, который решил вкатиться в пых.
Потому что это болото уже засосало. Можно, конечно, пойти пол годика работать каким-то охранником, учить параллельно джаву и вкатиться на позицию джуна, но зачем?
Сидишь себе не рыпаешься, деньги получаешь. Да, меньшие чем джависты за ту же работу. Да, неприятно, но что поделать? Только по этой причине на симфони остается работа, разве нет?
Еще есть надежда что по работе когда-то придется столкнуться с го/нодой. А там уже имея коммерческий опыт сделать перекат будет намного проще.
Хотя языки эти и их подходы мне не нравятся, с php общего там очень мало, но это единственный вариант быстрого переката для пыхера.
Зачем? Да, пока что корабль еще не тонет, но крысы уже всё чувствуют и понимают.
Аноним 18/04/21 Вск 01:07:27 199976437
>>1999757
То да, я не спорю с твоим логичным определением бекенд-разработки, но мы же в треде именно про язык, вот его и обсуждаем.

Подумой: это же определённые люди, это получившиеся в итоге приложения и зависимости, это расход ресурсов при том самом хайлоаде.
Аноним 18/04/21 Вск 01:10:29 199976538
photo2020-06-26[...].jpg 77Кб, 640x641
640x641
>>1999762
Ну, для фуллстек-приложений на Symfony уже характерно наличие ноды (encore / webpack). Только вот нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.

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

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

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

в европке за Симфони дают до $6000/мес.
Аноним 18/04/21 Вск 01:33:28 199978342
>>1999775
>я не знаю, нахуй вам эти ларавели, симфони и др.
Потому, что код лучше чем на битрикс, быстродействие, масштабируемость и качество самих программистов в средем выше именно на современных фреймворках, чем у мартышек на битриксе. А на чистом пхп пишут сегодня разве что только вкатывальщики.
Аноним 18/04/21 Вск 01:49:19 199979143
>>1999765
>>1999767
Тут не в сложности джавы дело, вы чего. Просто нужно освоить много информации, для этого нужно много времени. И, как никак, ты в джаву закатываешься как бы с нуля.
Изучать всё это будешь после работы. Когда наступит черед идти к работодателю, ему почти что всё равно будет на твой опыт разработки на пхп.
Слово "Symfony" там тоже никому ничего не скажет, все уверенны что это очередная CMS, а в PHP еще неймспейсы не завезли и пыхеры всё еще называют классы App_Http_Controllers_IndexController.
Читаю на днях требования к джуну на джаве. "Опыт с Java не менее двух лет. Опыт в разработке больших веб-приложений от трех лет очень желателен. Если это Java - отлично. Если это Python, C#, Ruby - хорошо. Если это PHP, все равно будет плюсом"
А с го/нодой можно начинать практиковаться прямо на пыхоработе, а из требований к джуну на go я даже часто встречал знание синтаксиса и годик-два опыта на пыхе.
Аноним 18/04/21 Вск 02:18:06 199979944
>>1999765
Лол, я ещё помню клавиатуры на полноразмерных дин разъемах как в совковых магнитофонах.
Аноним 18/04/21 Вск 03:18:45 199981445
>>1999380
На хуй отправляешься.
Аноним 18/04/21 Вск 12:07:10 200010146
вы часто исп nginx вместо апача?
Аноним 18/04/21 Вск 12:48:32 200014047
>>2000101
Апач это уже легаси.
Аноним 18/04/21 Вск 13:05:16 200015448
>>2000140
а чем он лучше апача?
Аноним 18/04/21 Вск 13:47:45 200018549
>>2000154
Да в общем всем.
Быстрее, меньше жрет, больше функционала.
Аноним 18/04/21 Вск 14:21:54 200021450
Аноним 18/04/21 Вск 14:34:36 200022551
>>1999791
>требования к джуну
>Опыт в разработке больших веб-приложений от трех лет
Не, ну зачем явных долбоёбов-то в пример приводить?
Аноним 18/04/21 Вск 14:38:20 200022852
>>1999765
>нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.
Во тут совсем мимо, открой хотя бы hh. Весь смысл переката как раз в том, что за ноду, в часности нест сейчас готовы платить, иногда даже больше, чем за нормальные языки.
По крайней мере в ДС так.
Аноним 18/04/21 Вск 14:48:17 200024053
У меня вопрос ещё актуален. На него никто не отвечает, к сожалению.

Как известно, уже 8-ая версия пхп вышла. Как мне учить этот язык? Если начну изучать php 7 от Котерова, нормально вкачусь в изучение или нет? Может, есть что-то лучше? И выучу если с 7 версии, как на 8 перекатываться?
Аноним 18/04/21 Вск 14:51:59 200024754
>>2000240
ПХП 8 это ПХП 7 + несколько фич. Учи тот, на который у тебя учебные материалы есть.
Аноним 18/04/21 Вск 14:53:48 200025055
>>2000247
Спасибо. Буду по Котерову учить тогда, её вроде как все хвалят
Аноним 18/04/21 Вск 14:55:30 200025156
Аноним 18/04/21 Вск 14:59:20 200026057
>>1999496
По https нет реферера, чего ты там парсишь?
Аноним 18/04/21 Вск 14:59:39 200026258
Аноним 18/04/21 Вск 15:01:14 200026759
>>2000262
Аргументация у тебя ебическая, дружок.
Аноним 18/04/21 Вск 15:04:36 200027660
>>2000262
А с чего тогда начать?
Аноним 18/04/21 Вск 15:05:41 200027961
Начал изучать это ваше PHP и конечно чтоб сразу вкотиться, я же не даун в 256 раз читать про примитивные типы данных.
Решил запилить скриптик типа гостевая книга, ну а хули нет, разумеется для этого мне понадобился ORM я же не в 2004 чтоб просто данные выбирать и парсить, прочитал что doctrine популярен, ну стал читать, вроде все понятно, но! там предлагают в определении класса явно задавать геттеры и сеттеры. Че реально? Для каждого свойства. И разумеется если в модели что-то поменяется надо будет их добавлять/удалять. Они конечно все одинаковые абсолютно. Это как в джаве до какой-то 8 версии.
И почему-то ваши __get() и __set() не работают: определяю их, все по сигнатуре, а пых говорит call to undefined method при попытке вызова.
Нельзя было дефолтные методы что ли сделать?
Аноним 18/04/21 Вск 15:06:15 200028162
>>2000267
лучше иши php7 zend Certification guide(но она на англ)
каждую тему обязательно гугли дополнительно для лучшего понимания.
php.net чтобы быть в курсе всех возможностей.К примеру тема строки и все функции для него
Аноним 18/04/21 Вск 15:11:20 200028463
>>2000281
и еще не забудь про mysql и PDO
Аноним 18/04/21 Вск 15:12:35 200028764
>>2000284
Вот про musql как раз лучше забыть и использовать mysqli, дружок.
Аноним 18/04/21 Вск 15:13:37 200029065
>>2000287
я имел ввиду саму БД и драйвер
Аноним 18/04/21 Вск 15:14:08 200029266
Аноним 18/04/21 Вск 15:14:42 200029367
>>2000287
это mysqli можешь викунуть.учи PDO
Аноним 18/04/21 Вск 15:16:37 200029668
>>2000293
>учи PDO
Наизусть учить?
Аноним 18/04/21 Вск 16:42:51 200041369
Аноны, я просто любитель и у меня вопрос, есть массив с массивами в которых хранятся логи типа айпи, юзерагент и т.п., хочу его отсортировать и вырезать только массивы с нужным мне айпи, как это сделать? Пропустить всё это через цикл и поместить в новый массив или для этого уже есть нужная функция которой я бы мог просто передать айпи и чтобы она вырезала только массивы с этим айпи и поместила их в новый массив который я выведу?
Аноним 18/04/21 Вск 17:55:44 200051870
Аноним 18/04/21 Вск 18:44:28 200058371
Есть массив
$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 200058672
Аноним 18/04/21 Вск 19:05:53 200061873
>>2000583
Есть, но выглядит уёбищно, лучше уж через цикл.
Аноним 18/04/21 Вск 19:33:21 200066474
в чем отл mysql от postgres?
Аноним 18/04/21 Вск 19:59:32 200068875
>>2000583
Есть array_filter, но положняк таков, что он сохраняет ключи, в итоге по твоему примеру у тебя останется дырявый массив с ключаемя 0 и 2. Чтобы переиндексировать его, нужно обернуть в array_values. В пхп 7.4 можно использовать стрелочные функции и спред, в итоге получится что-то вроде [...array_filter($arr, fn($item) => $item['ip'] === '1')]; но я бы так не стал писать
Аноним 18/04/21 Вск 21:45:31 200075476
Спасибо аноны, пока сделал через цикл, попробую потом сделать через array_map и array_filter, чисто сравнить есть ли в них смысл
Аноним 18/04/21 Вск 21:49:22 200075777
>>2000664
Вроде как в постгресе нативный джсон декоде есть, в мускул нет.
Аноним 18/04/21 Вск 21:53:24 200076278
Аноны а такой вопрос, если мне нужно вывести значение из переменной которой ещё нет в начале страницы, как это сделать? С помощью функции? Вверху страницы пишем вызов функции, а снизу в ней определяем значение которое нужно будет вернуть?
Аноним 18/04/21 Вск 22:06:53 200077179
>>2000762
Сперва всегда данные подготавливаются и только потом выводятся.
В крайнем случае можно так:
<?php
$pizdapidor = $db->select('WHERE blablabla ');
?>
<html>
<head>
...
</head>
<body>
<p><?= $pizdapidor ?></p>
</body>
</html>
18/04/21 Вск 22:44:35 200081580
>>2000279
Ничего, через пять лет никич возможно свойства добавит, вот тогда-то заживем!
А вообще, в пыхошторме в три кнопки создаются все отсутствующие геттеры и сеттеры. Сначала alt+Insert, дальше сам.
Аноним 19/04/21 Пнд 06:45:56 200096381
>>1999639
>Ты ничего не переспросил в ответ на совет выводить пробел, вот тебе ничего больше и не посоветовали.
У меня взорвалось очко от того что на более сложные задачи мне дают такие неинформативные ответы. Наверное, я не прав, что так грубо выражаюсь, спасибо за помощь.
Аноним 19/04/21 Пнд 10:02:25 200100982
image.png 4Кб, 101x229
101x229
Блджад посоны, столкнулся с тем что при сортировке по названию происходит такая хуйня, смотрите пик, что внезапно число 107 оказывается меньше чем 37 и выводится выше так как оно внезапно меньше, сортирую я это говно с помощью такого способа https://www.php.net/manual/ru/function.usort.php#example-5491 Пример #2
Как его отсортировать по человеческой сортировке где сперва будет 37, а потом 107? Вчера ещё натыкался на это но теперь не могу найти, всё это берётся из многомерного массива, так что сортировка просто по ключу или значению не вариант
Аноним 19/04/21 Пнд 10:17:27 200102783
>>2001009
По традиции, отвечаю сам себе strnatcmp
Аноним 19/04/21 Пнд 10:17:32 200102884
>>2001009
На сколько я понимаю он сортирует по первому символу строки.
Единственное, что могу посоветовать заюзать ip2long
Аноним 19/04/21 Пнд 12:26:44 200118985
>>1999625
1. Вкатился в 24. Вполне норм. Коллеги в среднем 30+
Для школоты пхп нимодна, они больше по жаваскриптам, да петухонам
2. Как первый - да, лучше взять что-то более строгое, классическое
3. Начинал тупо пролистав php.net и по ларакастам
4. 7ую бери, она сейчас везде на проде. Пока можешь xampp/openserver
5. Larave/Symphony - норм начало
Yii2 - устаревший кал
Zend - монструозный устаревший кал
Аноним 19/04/21 Пнд 13:10:19 200123786
>>2000771
Приучаем к хуевым практикам, а потом удивляемся, почему у пхп такая репутация
Аноним 19/04/21 Пнд 13:27:27 200126087
>>2001237
потому что сам дизайн языка корявый
Аноним 19/04/21 Пнд 13:41:24 200128188
>>2001260
Как будто тебя кто-то заставляет пользоваться этой легаси-хуйней из 90-х. Пхп конечно набит таким детским говном под завязку, но умные люди приводят к каким-то стандартам, развивают фреймворки.
Примерно то же происходит с жс, но намного быстрее в силу важности языка.
Аноним 19/04/21 Пнд 14:36:00 200135389
Аноны, вот есть либы для генерации эксель файлов.
А как такое самому , ручками навелосипедить? Есть статьи какие нибудь?
Чисто из любопытства.
Аноним 19/04/21 Пнд 14:46:45 200136090
>>2001353
Загляни в исходники тех самых либ, всё узнаешь
Аноним 19/04/21 Пнд 14:47:35 200136391
>>2001237
Блядь, он элементарные вещи спрашивает, а ты про фреймворки пердеть начал. Убейся что ли.
Аноним 19/04/21 Пнд 14:49:54 200136592
>>2001281
>происходит с жс, но намного быстрее в силу важности языка
ЖС твой умирает как язык - сейчас почти везде тайпскрипт просят.
Аноним 19/04/21 Пнд 14:51:19 200136793
>>2001363
В глаза ебешься? Какие фреймворки?
Ты запостил код обращения к бд и хтмл рядом. Нуфаг прямо так скопирует и вот мы имеем +1 бед практис
Аноним 19/04/21 Пнд 15:05:37 200137994
>>2001367
>бед практис
Поясняй давай - где тут бед. И почему если <?php секцию сунуть в отдельный файл, то что-то должно поменяться?
Аноним 19/04/21 Пнд 15:07:06 200138395
>>2001379
Пиздец, с кем я в одном треде сижу...
Аноним 19/04/21 Пнд 15:12:33 200139696
>>2001383
Пруфы будут или так и будешь воздух портить?
Аноним 19/04/21 Пнд 15:14:25 200140097
>>2001396
Я мимо проходил, с долбоебами не общаюсь. Пусть тебе этот >>2001367 анон и поясняет, почему 2 + 2 = 4, если он хочет конечно.
Аноним 19/04/21 Пнд 15:16:53 200140698
Аноним 19/04/21 Пнд 15:18:39 200141099
>>2001365
>ЖС твой умирает как язык - сейчас почти везде тайпскрипт просят.
Лол блядь, ты вообще в курсе что ts это сахар над js?
Аноним 19/04/21 Пнд 15:20:52 2001412100
>>2001379
Как минимум средней руки разраб не ожидает, чтоб шаблон будет общаться с бд. Задача шаблона отобразить данные, а не искать их.
Аноним 19/04/21 Пнд 15:21:26 2001413101
Как писать сайты в ООП стиле?
Аноним 19/04/21 Пнд 15:22:37 2001417102
>>2001413
$sait = new Sait();
$sait->make('zaebis');
Аноним 19/04/21 Пнд 15:22:47 2001418103
>>2001353
xlsx это xml обычный и стили всякие в зип архиве, там ничего сложного. А старый xls это бинарная дрисня, его долго и нудно реверсили.
Аноним 19/04/21 Пнд 15:22:50 2001419104
>>2001383
Но вообще технически код отделен от разметки. От того что ты вынесешь шаблон в отдельный файл - не дохуя изменится. Архитектурно ниче не поменяется.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://ideone.com/KWu2kP

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

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

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

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

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

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

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

Свои не напишу.
Аноним 20/04/21 Втр 21:20:48 2002857134
Аноны, есть файл в котором хранятся логи, и там уже несколько тысяч строк, выводить их все на странице неочень, по этому хочу сделать постраничный вывод, например по 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 2002872135
>>2002857
Ну а концепция пагинации такая что если 1 страница, то выводим ссылки на 2 страницу, предпоследнюю и последнюю, а если допустим 100 страниц и мы на 10, то выводим 1, 2 страницы, предпоследнюю, последнюю и две влево и вправо от текущей страницы, то есть 8, 9 и 11, 12?
Аноним 20/04/21 Втр 23:28:52 2002976136
Столкнулся с какой-то очень странной фигней. Импортирую стили прямо в 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 2003091137
Аноним 21/04/21 Срд 06:20:21 2003112138
Посмотрите htmldog.com как вам по содержанию, полезно?
Аноним 21/04/21 Срд 07:19:45 2003144139
изображение2021[...].png 16Кб, 1260x115
1260x115
Возможно я просто сонный и чего не догоняю но вот проблема, из бд мне возвращается ничего, а в ошибке пишет просто "Ошибка". Таблица точно есть, и данные в ней тоже, регистрацию то запилил а тут что не так может быть?
Аноним 21/04/21 Срд 08:26:13 2003169140
Аноним 21/04/21 Срд 10:01:37 2003223141
Аноны, по вашему совету сделал сохранение топа в файл путём сохранения топа в временный файл и потом его переименование в нужный файл чтобы не было коллизий когда файлы затирают друг-друга, и столкнулся с тем что рандомно в течении дня проихсодит такая фигня что временный файл не удаляется, он в основном с рандомным именем и весит 0 килобайт, но есть и файлы размером в половину или весь файл топа в пол мегабайта, почему это может быть что временный до переименования файл не удаляется и остаётся? Приходится писать скрипт и удалять эти файлы им, потому что у них стоят права -600, и руками по фтп они не удаляются
Аноним 21/04/21 Срд 11:36:11 2003289142
>>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 2003294143
>>2003144

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

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

>>2003169

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Просто напишите с правильным синтаксисом решение этой задачи. Буду благодарен.
Аноним 21/04/21 Срд 16:40:13 2003576152
>>2003558
Я смотрел курс по вордпрессу Дмитрия Полоса, он там на пхп кодил
Аноним 21/04/21 Срд 16:42:29 2003579153
>>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 2003584154
>>2003576
> вордпрессу
Индусское говно. Работа с сИэМэС это неблагодарный ад.
> Дмитрия Полоса
Хз чо за хуй.

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

Аноним 21/04/21 Срд 16:53:48 2003585155
Аноним 21/04/21 Срд 17:06:26 2003601156
>>2003294
Хорошо, при проверке data на false результат тот же
Аноним 21/04/21 Срд 17:25:52 2003619157
>>2003601
Так, а зачем проверка на false если в data - null, значит проблема в бд или в логине, но я вроде не совсем аутист, в бд есть записи, и логин передается
Аноним 21/04/21 Срд 17:30:49 2003628158
>>2003601

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

Если функция вернула false, то будет указана причина ошибки. Если функция вернула null, то естественно ошибки нету.
Аноним 21/04/21 Срд 17:48:41 2003640159
>>2003628
При === возвращает null, данные то все равно не находит
Аноним 21/04/21 Срд 18:31:31 2003694160
>>2003144
Пробовал сам скл запрос вызвать (без пхп)?
Аноним 21/04/21 Срд 18:57:03 2003725161
Аноним 21/04/21 Срд 19:13:47 2003737162
>>1998470 (OP)
вопрос тупой очень мда но я спрошу
я ваще конкретный чайник пока в этой сфере и мне хотелось бы узнать
как мне сделать так чтоб я мог дать тегу <img> например собственное имя и в CSS управлять условными <img1> и <img2> по отдельности надеюсб ясно изъяснил
Аноним 21/04/21 Срд 19:17:40 2003740163
Bump
Аноним 21/04/21 Срд 19:18:15 2003741164
>>2003737
> собственное имя и в CSS управлять условными <img1> и <img2> по отдельност
классы им задать
Аноним 21/04/21 Срд 19:20:00 2003746165
14-148474pepe-t[...].png 40Кб, 303x280
303x280
>>2003294
>И наконец, отдельно можно написать код, который в цикле перебирает комбинации:
Не понял, что имеется ввиду.

https://ideone.com/tSOxlD

Вот так пока сделал.
Аноним 21/04/21 Срд 19:22:33 2003752166
Аноним 21/04/21 Срд 19:28:46 2003760167
>>2003752
<img class="img1"> а вообще погугли про элементы и атрибуты на MDN, ну че ты как этот
Аноним 21/04/21 Срд 19:31:25 2003762168
>>2003760
Да я знаю что как этот. Просто я нубик еще вкатился чисто чтоб сайт своей "муз.группе" сварганить ,могу скинуть в зацените)
Аноним 21/04/21 Срд 19:38:09 2003770169
>>2003585
Разобрался сам, огромное спасибо тебе, аноний. И доброго вечера.
Аноним 21/04/21 Срд 19:41:48 2003774170
Аноним 21/04/21 Срд 19:56:29 2003783171
Аноны, как из этого дерьма узнать что это за браузер?

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 2003801172
>>2003783
Есть мильйон либ для их разбора.
Аноним 21/04/21 Срд 21:49:16 2003841173
Аноним 22/04/21 Чтв 09:42:35 2004108174
>>2003801
>>2003841
Бля засирать код чужими костылями которые делают миллион бочек прежде чем выдать результат, да мой сервер загнётся пока проделает это 100000 раз чтобы их все разшифровать
Аноним 22/04/21 Чтв 09:56:26 2004121175
Аноним 22/04/21 Чтв 12:44:23 2004276176
>>2003325

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

>>2003640

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

>>2003367

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

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

Ну и необязательно сразу все строчки разбирать. Разбей по чанкам, сохраняй промежуточный результаты. Мб очередь прикрутить, хорошо подходит под эту задачу
Аноним 22/04/21 Чтв 13:07:43 2004314178
>>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 2004321179
>>2003576
И что скажешь? Норм курс?
А то я скачал и не могу нормально начать его проходить - постоянно в сон клонит от его голоса
Аноним 22/04/21 Чтв 13:14:17 2004328180
>>2004121
Что вообще делать с пользовательским юзер-агентом?
Какие-то тонкие настройки браузер специфик цссов?
Для статистики я бы пихнул третьи метрик сервисы
Аноним 22/04/21 Чтв 13:25:52 2004349181
>>2004321
Я поставил скорость 150%. На безрыбье и Дмитрий Полос гуру инфоцыганства
Аноним 22/04/21 Чтв 14:10:23 2004404182
>>2004314
>А затем написать основной код (либо вне функций, либо в еще одной функции), который и решает задачу, вызывая первые две функции.

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

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

Я вот опустившийся человек, я знаю на что иду, поэтому целенаправленно иду на вордпресс
Аноним 22/04/21 Чтв 14:35:26 2004431184
>>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 2004441185
>>2004430
Да я просто хочу побыстрее вкатиться, а там уже по ходу дела переметнуться в ларавель
Аноним 22/04/21 Чтв 15:00:16 2004450186
>>2004441
В ларавель с нуля вкатываются
Аноним 22/04/21 Чтв 15:02:48 2004452187
>>2004276
>Шаблоны использовать плохо
Да

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

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

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

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

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

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

Есть еще куча сверстанных оригинальных макетов, но врядли они в этом случае что-то значат.
Аноним 22/04/21 Чтв 16:14:12 2004541194
Аноним 22/04/21 Чтв 16:17:40 2004547195
>>2004276
С находом данных разобрался, как у меня обычно бывает это была синтаксическая ошибка
22/04/21 Чтв 16:38:24 2004578196
>>2004276
>Использовать JS код в шаблонах плохо?
>Ну в том же реакте, например, в одном файле пишут и JS-код и похожую на HTML разметку. А вместо одного удобного шаблона там куча мелких компонентов - сиди разбирайся.
Ну ты ебанутый...
22/04/21 Чтв 16:39:49 2004579197
Аноним 22/04/21 Чтв 16:49:11 2004595198
>>2004465
В ларакастах и про основы пхп и про ооп есть свой mvc фрейм пилят по типу лары с нуля
Аноним 22/04/21 Чтв 23:09:58 2005020199
image.png 15Кб, 776x193
776x193
((
Аноним 22/04/21 Чтв 23:32:52 2005048200
Блин, да что сделать с Симфони формами, чтобы я мог в ChoiceType добавить с помощью js какой-то кастомный <option>, и он у меня в результате не отсеялся и прошел валидацию?
На стаковерфлоу нагуглил какие-то полтора наркоманских совета, которые на практике не работают. Не верю что в таком продуманном большом фреймворке могут быть настолько анальные ограничения.
Аноним 23/04/21 Птн 00:03:48 2005064201
>>2004480
MVC сейчас уже почти нигде не нужен, по крайней мере, где платят жирно, лучше осваивай DDD, событийную модель и бэкендовый бэкграунд. Шансов вкатится в нормальную контору будет поболе.
Аноним 23/04/21 Птн 00:57:47 2005087202
>>2005064
А как мвс и ддд мешают друг другу?
Аноним 23/04/21 Птн 01:16:31 2005098203
>>2005087
Неа, но в реальном мире у тебя V отваливается как минимум, а как дефолт ты начинаешь мыслить другими критериями и вопрос отделения контроллера от модели уже не встает.
Аноним 23/04/21 Птн 09:49:43 2005232204
Какая средняя зп у php-миддла в Москве и Барнаулах?
Аноним 23/04/21 Птн 10:20:26 2005248205
Аноним 23/04/21 Птн 10:26:36 2005256206
>>2005248
Блять middle-php, а не сколько ты за 6-1 по 12 часов грузчиком у себя в пятерочке получаешь.
Аноним 23/04/21 Птн 10:51:35 2005281207
image.png 4Кб, 796x55
796x55
Аноны, есть вот такая функция которая смотрит какая сортировка включена и передаёт гет в функцию strnatcmp, в один момент может быть только 1 из сортировок, или sort или rsort, чтобы не городить код с проверкой какая сортировка пришла я сделал их вывод через точку как на скрине, и у меня ВСТАЛ вопрос, а как можно сделать правильно без проверок? Пытался сделать типа $_GET['sort'] || $_GET['rsort']] но это не работает, как передать в $_GET 2 названия которые нужно проверять и чтобы он выводил то что из двух имеется? Или вариант который я сделал самый короткий?
Аноним 23/04/21 Птн 10:56:00 2005289208
Screenshot20210[...].jpg 190Кб, 1080x1193
1080x1193
Screenshot20210[...].jpg 432Кб, 1080x2400
1080x2400
Здравствуйте. От безысходности откликался на всё подряд, даже не читая вакансий. Ответили с компании в моей Мухосрани. Тащемта раньше интересовался программированием, но меня не хватало, есть ли сейчас смысл с помощью гугла решать эти задачи и идти на собеседование. Программирование - тема интересная, но времени на её изучение крайне мало. Смогу ли в процессе разобраться, параллельно изучая всё и вся, что связано с пхп
Аноним 23/04/21 Птн 10:59:01 2005295209
image.png 3Кб, 1097x22
1097x22
>>2005281
И 2 вопрос как вот это сократить? Как проверить наличие запроса в гет сразу нескольких переменных? Или только так как на скрине?
Аноним 23/04/21 Птн 10:59:47 2005300210
Screenshot20210[...].jpg 252Кб, 1080x1696
1080x1696
>>2005289
Со вторым заданием проебался, извините
Аноним 23/04/21 Птн 11:03:27 2005311211
.
Аноним 23/04/21 Птн 11:58:34 2005393212
Аноны, есть один апи, он лежит на сайте по адресу site.ru/api/hui, я прописал в robots.txt запрет на индексацию раздела Disallow:/api, могут ли поисковые системы из-за этого перестать грузить этот апи? Просто я сохраняю в логи всех кто загружал апи чтобы отслеживать плохие запросы, а тут заметил что от туда просто пропали все боты яндекса и гугла, блокировку раздела /api в robots.txt я уже удалил, но уже 2 день ботов в логах так и нет, они могут грузить станицу но резать запрос на апи потому что он был запрещён в robots.txt? Или это ебучий хостер что-то делает что в логах не сохраняются запросы от ботов? Или после разблокировки раздела в robots нужно ещё подождать?
Аноним 23/04/21 Птн 11:58:59 2005394213
>>2005256
Найс подрыв)
Интересно что же ты понимаешь под похапэ мидлом?) Он умеет что? У него опыт в крудошлепстве какой? Что кроме пыха умеет? Как у него с фронтом? Как с nosql? Как с очередями? как с кешированием? Как с написанием микросервисров?
Мидл в конторе на одном конце дс = некомпетентное чмо для конторы на другом. И у каждой блядской конторы свои требования и свои понятия лол кто пхп мидл, а кто черт ебаный. И зп у так называемого мидла могут быть 30/60/100/150 к.
Пиздуй смотреть ххашечку / гикжопы / хаброкарьеру
Аноним 23/04/21 Птн 12:09:35 2005422214
>>2005394
Я к чему вообще спросил, у меня знакомый один, он устроился на мясокомбинат, вообще нихуя не нужно было для этого, никаких знаний, корок. Зп 40-45. И также в моем мухосранске на хх висят объявы "пхп-разработчик", требования, на мой взгляд, там выше чем к джуну. Зарплата написана 45-60. Это что означает, те кто разместил эти объявы пидарасы которые хотят изъебнуться и найти за лоу прайс дурачков? Нахуй вообще нужно дрочиться и че-то изучать и практиковать годами, если ты можешь просто пойти хуярить быдлорабочим на производстве. Мое мнение, у чела с опытом в несколько лет на пыхе должна быть зп 75к в провинциальном городе.
Аноним 23/04/21 Птн 12:34:17 2005467215
>>2005422
>И также в моем мухосранске на хх висят объявы "пхп-разработчик", требования, на мой взгляд, там выше чем к джуну. Зарплата написана 45-60.
К сожалению не самый плохой варик для мухосрани
>те кто разместил эти объявы пидарасы которые хотят изъебнуться и найти за лоу прайс дурачков
да, провинциальная разработка как она есть
>Нахуй вообще нужно дрочиться и че-то изучать и практиковать годами,
Перспективы и то, что жопа в теплом офисе/в квартире. Если человек немного способен в программирование, у него есть усердие, сила воли и интерес, то можно вполне себе зарабатывать нормальные деньги и даже на пхп и не надрывать жопу.
>если ты можешь просто пойти хуярить быдлорабочим на производстве
Ну, если для тебя в ойти больше гемороя, чем на быдлоработе, то думаю тогда лучше выбрать второе.

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

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

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

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

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

В моем миллионнике есть несколько контор с приличными зп, но за ними стоят достаточно крупные неместные (дсы/запад) клиенты.
На одну из таких работаю
Аноним 23/04/21 Птн 13:35:27 2005578220
>>2005513
>должна быть
Во первых никто тебе ничего не должен кроме тебя самого
>с высоким порого вхождения
в пхп до безобразия низкий порог вхождения. даже в тот же голенг сложнее вкатиться, несмотря на то, что его позиционируют как язык для пупсиков. Поэтому зарплаты ниже в целом по вебу. если больше 60к получать на адекватной удаленке, живя в мухосрани, да еще и с гибким графиком, то считай хорошо устроился
Сколько смотрел не войти професесии доступные большенству по своей мухосрани - зп средние 30к если не гос и не газпромы. А многие из этих вакансий адовые шо пизда.
Так что твои претензии выглядят смешно
Аноним 23/04/21 Птн 14:31:54 2005631221
Ананасы, в php нельзя просто узнать размер папки? Только обходом всех файлов внутри и сложением их размера?
Аноним 23/04/21 Птн 14:43:11 2005645222
>>2005631
линупсовый du через system, например.
Аноним 23/04/21 Птн 14:52:30 2005656223
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 2005682224
>>2005656
Малаца.
Долго всё это сделал?
мимо не оп
Аноним 23/04/21 Птн 15:08:46 2005686225
>>2005682
Спасибо, весь день пока проходил решал потихонечку.
Аноним 23/04/21 Птн 15:08:50 2005687226
>>2005656
>>2005682
Не малаца.
Хоть бы повыносил код в функции для повторного использования
Аноним 23/04/21 Птн 15:27:10 2005713227
>>2005300
Так это изи же. За час-два сделать можно.
Аноним 23/04/21 Птн 18:03:46 2005985228
>>2005538
За Новосиб не скажу, но +- думаю да, В Казани, Екате, Краснодаре и Нижнем - определенно да, при этом житзнь сильно дешевле чем в дсах.
Аноним 23/04/21 Птн 18:28:45 2006032229
Блять аноны, подскажите, я уже изъебался нахуй с этого говна, есть вот такая проверка массива в цикле 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 2006071230
Аноны, много лет у нас в задачнике висит задача про Банкомат (есть банкомат, в нем есть ограниченное количество купюр нескольких номиналов, как выдать сумму K?). Но все это время я сам не знал оптимального решения, и предлагал решать ее полным перебором. То есть, берем все возможные комбинации всех банкнот, пока не получим нужную сумму.

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

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

Кажется, я нашел способ решить задачу быстрее. Например, в примере выше нам потребуется лишь 40002 = 16 миллионов шагов.
Аноним 23/04/21 Птн 19:02:44 2006075231
Аноним 23/04/21 Птн 19:08:53 2006096232
>>2006071
Если купюры конкретные, естественных номиналов, то задача конечно простая.

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

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

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

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

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

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

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

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

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

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

---

Если заменить "золотой слиток весом x" на "1 купюра номиналом X", то получается задача про банкомат.
Аноним 23/04/21 Птн 19:30:12 2006122238
>>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 2006127239
>>2006112
А, понял о чём ты.

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

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

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

>>2006130

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

>>2006120

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

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

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

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

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

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

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

Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
Аноним 24/04/21 Суб 09:44:22 2006482249
Аноним 24/04/21 Суб 09:55:28 2006487250
>>2006101
>Пук
Так победитель не в скорости, а в логике, лул.
Аноним 24/04/21 Суб 09:57:37 2006488251
>>2006249
Блин а чё нет варианта типа isset($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e'])? Цикл не всегда вариант вставлять
Аноним 24/04/21 Суб 10:12:05 2006496252
>>2006488
isset(...array_map(fn ($a) => $_GET[$a], ['a', 'b', 'c', 'd']));
Аноним 24/04/21 Суб 10:19:30 2006504253
>>2006382
> Почему бы тебе просто не создать таблицу для маков в БД не спрашиваю. Видимо нельзя по ТЗ, иначе бы ты сам догадался.
Ну если средствами mysql это сделать быстрее и проще, то ок. Я думал на php такое быстрее написать.
> Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
Клиент не через браузер подключается. Собственная c++ прога, которая мак узнает
Аноним 24/04/21 Суб 10:26:00 2006507254
>>2006496
На серваке пхп 5 версии, не вариант, кстати вот такой вариант тоже работает
if ($_GET['a'].$_GET['b'].$_GET['c'].$_GET['d'].$_GET['e']) как только одно из значений есть то условие срабатывает, но всё равно хочется что-то более правильное и без циклов
Аноним 24/04/21 Суб 10:35:03 2006510255
>>2006507
>пхп 5 версии
Соболезную. Надеюсь платят тонны нефти.
Аноним 24/04/21 Суб 11:39:07 2006550256
image.png 201Кб, 1276x720
1276x720
Написал стыковку на похапе, всё нормально будет?
Аноним 24/04/21 Суб 11:39:57 2006553257
>>2006510
Я для себя пишу, хостер ебанат не хочет обновлять
Аноним 24/04/21 Суб 11:52:38 2006557258
Блджад посоны, почему вот это выдаёт ошибку?

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

Как правильно делать вывод условия в конкатенации?
Аноним 24/04/21 Суб 12:05:45 2006565259
image.png 1568Кб, 1277x716
1277x716
Ну похапе не подведи
Аноним 24/04/21 Суб 15:48:28 2006930260
>>2006553
>пхп 5 версии
>Я для себя пишу
Умом россию не понять
Аноним 24/04/21 Суб 16:43:29 2007046261
Screenshot2.jpg 114Кб, 810x824
810x824
Учу по туториалу из оп-поста. Тема - переменные.
Вот, есть такой код

<?php

error_reporting(-1);

$x = $x + 10;

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

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

Например,

echo $x;
Аноним 24/04/21 Суб 17:10:56 2007073263
>>2007071
Черт возьми, точно!
Спасибо
Аноним 24/04/21 Суб 17:15:57 2007076264
Привет, анонасы, хелпание, помогите разобраться. При устройстве на мидла нужно иметь какие-то свои проекты? Вот проработал джуном годик, чувствуешь, что можешь на мидла, но нет никаких своих проектов или это уже не нужно? Нужно было только при устройстве на джуна, чтобы хоть как-то показать свои умения?
Аноним 24/04/21 Суб 17:22:15 2007081265
>>2007076
Привет, анонас. На мой взгляд не нужно. При найме людей там где я работал никогда не было обязательно, если что-то есть на гитхабе, то хорошо что можно посмотреть стиль, как человек пишет, нет, да и хуй с ним, так пообщаемся. У меня своих проектов вообще никогда не было.
Аноним 24/04/21 Суб 17:29:30 2007086266
>>2007081
Главное чтобы кандидат по зарплате не раскатывал губу! А гитхаб не нужон он
Аноним 24/04/21 Суб 17:46:14 2007108267
>>2007086
>git
Полезная штука, считаю, что знать её сука обязательно!
Аноним 24/04/21 Суб 17:53:26 2007123268
>>2007108
Нинужна. Все российские компании сидят на хохлятском гитлабе ну почти все
Аноним 24/04/21 Суб 18:28:30 2007188269
>>2007076
>чувствуешь, что можешь на мидла
Связанный список напишешь? Сложность алгоритма посредством математической индукции сможешь доказать? Нет == не миддл.
Аноним 24/04/21 Суб 18:36:28 2007206270
>>2007188
А если могу, то == мидл?
Аноним 24/04/21 Суб 18:58:00 2007251271
>>2007206
Если можешь то мидл.
Аноним 24/04/21 Суб 19:35:48 2007298272
что эти ваши токены?
Аноны, вопрос к вам, где вы берете идеи для своих проектов!? Аноним 24/04/21 Суб 20:29:27 2007349273
У меня вот творческий кризис, можете понакидать идей?
Аноним 24/04/21 Суб 20:39:17 2007358274
>>2007188
А как big o с помощью мат. индукции вычислить? Что то не припомню такого.
Аноним 24/04/21 Суб 21:11:18 2007403275
>>2007251
Ах, какбы я хотел, чтобы это так и работало. К сожалению сегодня средний мидл на бэке - это прост чувак который знает стек и просто умеет в ооп и смежную инфраструктуру.
Ебал бы каждого за алгоритмы на собесах, если бы решал я.
Аноним 24/04/21 Суб 21:57:04 2007440276
Обращаюсь к работающим анонам. Накидайте, пожалуйста, в тред примеров своих задач с работы. А я за это помолюсь за вас Господу нашему Иисусу Христу
Аноним 24/04/21 Суб 22:33:51 2007482277
Аноним 24/04/21 Суб 22:45:48 2007497278
Написал разбор задачи про банкомат: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md

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

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

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

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

> Вклад
Верно

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

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

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

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

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

a-12789 В очереди загрузки файлов из кабинета платильшиков накапливаются невыполненные задания
Аноним 24/04/21 Суб 23:03:34 2007526281
>>2005048
Бамп вопросу, еще актуален. Или серьезно никто в мире не знает, как обойти такое идиотское ограничение?
Аноним 24/04/21 Суб 23:04:26 2007528282
Аноним 24/04/21 Суб 23:07:04 2007530283
>>2007528
Ты про симфони или про пхп?
Аноним 24/04/21 Суб 23:07:28 2007531284
Аноним 24/04/21 Суб 23:11:31 2007533285
>>2007531
В смысле если ты с ними решишь на фронтенде что-то делать, это будут сплошные костыли и боль. No way
Аноним 24/04/21 Суб 23:15:24 2007538286
>>2007533
хотя если тебя не смущают костыли и лапша которую трудно разобрать как она отрабатывает и готов дебажить сутками то смотри в сторону https://symfony.com/doc/current/form/events.html
Аноним 24/04/21 Суб 23:41:38 2007568287
>>2007526

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

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

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

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

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

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

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

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

Главное, хочу сказать спасибо опу, чьи уроки мне очень помогли вкатываться в пых. Я желаю тебе всего самого хорошего, чел - ты красавчик, спасибо за твои уроки, они делают чью то жизнь лучше.
Аноним 25/04/21 Вск 00:59:58 2007645294
Аноним 25/04/21 Вск 01:33:14 2007686295
>>2007638
Поздравляю, аноний. Правда зп твоя все еще в два раза меньше, чем у посудомойщицы в любой нормальной стране, но по нашим меркам ты почти как сын депутата
> Там уже были микросервисы, симфони, нормальное кодревью и оче крепкий воркфлоу. Я бысто понял, что раньше я творил просто лютую хуйню, здесь я обучился нормальному чистому коду, архитектуре и всякому нужному в скоупе бэкенда (особенно по работе с бд и контейнерами)
Эх, сколько уже времени пытаюсь миновать твои первые два этапа и сразу вкатиться сюда. А вакух то нет)
Аноним 25/04/21 Вск 01:37:34 2007690296
>>2007640
Поздравляю тоже. Ты молодец. Мне немношко завидно и грустно
Аноним 25/04/21 Вск 07:11:13 2007789297
Аноним 25/04/21 Вск 07:12:32 2007790298
16172116062280.png 1646Кб, 3840x2160
3840x2160
>>2007349
У меня есть как раз то, что тебе нужно.
Аноним 25/04/21 Вск 09:19:39 2007824299
Аноны, вопрос немного не в тему, я тот анон что юзерагенты собирает, заметил переходы с info.ertelecom.ru, может кто знает что это? Провайдер перед посещением сайта показывает свою заглушку? Есть такое у кого?
Аноним 25/04/21 Вск 18:17:13 2008237300
Аноним 25/04/21 Вск 18:20:26 2008246301
>>2008237
Там в некоторых местах будут пропущены \\ я знаю что это ошибка, просто не исправил во время и оно не дает мне исправить уже.
Аноним 27/04/21 Втр 08:36:16 2009853302
1619500885501.png 617Кб, 728x1000
728x1000
За сколько минимум по времени можно выучить достаточно, чтобы откликаться на вакансии джуна?
За 3 месяца реально задрочить php, ларку и уже идти искать работу?
Аноним 27/04/21 Втр 10:04:54 2009888303
>>2009853
Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
Аноним 27/04/21 Втр 11:17:37 2009948304
>>2009888
>Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
Что там решать пол года?
Аноним 27/04/21 Втр 11:18:10 2009950305
>>2009853
>За 3 месяца реально задрочить php, ларку и уже идти искать работу?
Если не тупой и задротишь часов по 40 в неделю, то вполне
Аноним 27/04/21 Втр 11:53:07 2009979306
>>2009853
Самый быстрый вкат, который я видел - 7 месяцев. Весьма одаренный малый был. За три месяца с нуля - яхз какая компания на лару возьмет такого джуна.
Аноним 27/04/21 Втр 12:51:40 2010050307
>>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 2010057308
>>2009948
Может сам посмотришь и мне скажешь?
Аноним 27/04/21 Втр 12:59:41 2010059309
>>2008237

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

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

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

> Телефоны с исправлениями
То же замечание, что и в предыдущей задаче, в остальном верно.
Аноним 27/04/21 Втр 13:01:39 2010060310
>>2009853
За 3 месяца можно многое успеть, особенно если ты в месяц занимаешься этим 300+ часов (10 часов в день уделяешь работе). Как вот этот чел - https://www.youtube.com/watch?v=uGrBHohIgQY&ab_channel=WilliamLin - он каждый день вставал, мылся и садился решать задачи, с перерывом на обед.
Если спросишь про меня, то я смотрю на вакансии и что они требуют в основных навыках, пока я это не знаю - не пойду, ибо не примут. Соответственно смотри по своим предпочтениям обязательно, ибо если неинтересно то зачем тебе тратить на это время, ведь потом это будет казуальным мучением.
А еще - если ты куда то торопишься, забей. Твои ресурсы тебе же не позволят ничего быстро сделать, ну к примеру адаптировать новые знания, тебе нужно отдыхать, мозг это тоже орган и он должен отдыхать, закреплять нейронные связи (Или как то так я не нейробиолог). Надеюсь помог, просто сталкивался с этой проблемой времени когда изучал свой первый язык программирования, если что еще спрашивай может я что-то знаю полезное для тебя.
Аноним 27/04/21 Втр 13:11:19 2010067311
cursed2Bcat2Bim[...].png 565Кб, 457x580
457x580
>>2010050
>>2010059
Спасибо ОПчик! После регулярок я уже пикрил, буду повторять.
Я вот еще решил:
https://ideone.com/PfG2bB - Дураки человеки
https://ideone.com/LoKWGR - Гацисты (Пока без исправлений)
Почту и гацистов доделаю после того как пройду PCRE в мануале, а еще нужно попрактиковать функции с массивами с строками.
Аноним 27/04/21 Втр 13:16:51 2010070312
>>2010057
А может ты?
Списком перечисли, что успел сделать, что предстоит сделать, что в прогрессе и примерное время потраченное на сделанное и в прогрессе
Аноним 27/04/21 Втр 13:17:18 2010071313
>>2010070
Двачую тоже интересно.
Аноним 27/04/21 Втр 13:20:23 2010075314
image.png 294Кб, 698x310
698x310
>>2010060
>За 3 месяца можно многое успеть, особенно если ты в месяц занимаешься этим 300+ часов (10 часов в день уделяешь работе).
Такими темпами только в гроб/дурку.
Лайтовый вариант вката часов 20-30 в неделю. Хардкорный 40-50.
Дальше идут адовые переработки и выгорание
Аноним 27/04/21 Втр 13:23:21 2010078315
>>2010070
Зачем? Чтобы ты мне потом высрал что я даун и не справился с простейшими задачами за то же время что и ты?
Аноним 27/04/21 Втр 13:27:28 2010081316
>>2010078
>я даун и не справился с простейшими задачами
Это и так очевидно
Интересно, на чем новички запинаются в процессе вката
Аноним 27/04/21 Втр 13:29:54 2010083317
>>2010081
>Интересно, на чем новички запинаются в процессе вката
Интересуйся дальше, может быть подскажет кто-нибудь.
Аноним 27/04/21 Втр 13:30:54 2010085318
>>2010075
Я в пример взял вот этого чела - https://www.youtube.com/watch?v=DPxnJn3W2Es&ab_channel=AnasNuurAli - Вдохновляет.
Честно я так не могу, сидеть и решать задачи весь день. Один раз попробовал написать в TIS-100 одну задачу где нужно было угадывать последовательность цифр, типа если 3 раза прошло одно и то же число то посылаешь TRUE. И я выгорел на неделю после этого, не стоило того.
>>2010083
Почему ты так боишься показать на чем ты остановился? В этом нет ничего постыдного, все мы дауны, просто мало кто это признает (А зря).
Аноним 27/04/21 Втр 13:32:52 2010086319
Поясните про разработку в докере. Зависимости устанавливать на хосте, а потом копировать в контейнер или наоборот?
Аноним 27/04/21 Втр 13:34:23 2010087320
>>2010083
Сам запинался и запинаюсь на многих вещах в разработке.
Только если в начале это были проблемы уровня 10 строк кода, то сейчас проблемы помасштабнее вроде "как уложиться в срок", "какую архитектуру тут использовать", "как обуздать этот ебучий легаси", "что из готового функционала взять, а что лучше с нуля написать"
Аноним 27/04/21 Втр 13:35:56 2010089321
>>2010085
>Почему ты так боишься показать на чем ты остановился? В этом нет ничего постыдного, все мы дауны, просто мало кто это признает (А зря).
Не люблю хамов, мне неприятно с тобой разговаривать.
Аноним 27/04/21 Втр 13:41:45 2010094322
Аноним 27/04/21 Втр 14:02:00 2010131323
>>2010086

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

То есть, в Dockerfile ты пишешь только команды установки PHP и нужных расширений, и команду монтирования папки с кодом.
Аноним 27/04/21 Втр 14:39:54 2010191324
>>1998470 (OP)
Привет, ребята. За сколько по времени примерно учится PHP, если уже знаешь JS (фронт и совсем чуть-чуть ноду)? Здесь есть вкатуны из JS?
Аноним 27/04/21 Втр 15:06:52 2010235325
>>2010191
>За сколько по времени примерно учится PHP, если уже знаешь JS
За столько же, за сколько и без жс
Аноним 27/04/21 Втр 15:51:50 2010327326
Аноним 27/04/21 Втр 16:17:14 2010362327
Аноним 27/04/21 Втр 16:19:21 2010368328
>>2010327
С чего ты взял, что будет быстрее?
Аноним 27/04/21 Втр 16:29:55 2010390329
>>2010191
Если ты основательно выучил JS (и особенно TS), шаришь в алгоритмах и структурах данных, знаком с паттернами проектирования, то ты в принципе ты уже знаешь PHP. Ознакомься с бэкендом, поковыряй фреймворки и уже получишь представление об этом всем. JS в том виде, в котором он существует и требуется сейчас гораздо сложнее PHP.
Аноним 27/04/21 Втр 16:51:20 2010426330
>>2010390
>Если ты основательно выучил JS (и особенно TS), шаришь в алгоритмах и структурах данных, знаком с паттернами проектирования, то ты в принципе ты уже знаешь PHP
Если б так было, он бы уже работал мидлом.
По ощущениям - вкатун, который написал тудушку на жсе и возомнил себя кодером
Аноним 27/04/21 Втр 16:53:25 2010429331
>>2010426
Ну он написал, что знает. Под "знать JS" уже давно подразумевается не только тудушка.
Аноним 27/04/21 Втр 20:12:32 2010645332
16174184305511.png 1462Кб, 1280x1004
1280x1004
>>2007076
> годик
ну пиздец, мидл уровня /b/

чому в РФ так любят называть вещи не своими именами?
помните раньше каждого полотёра "менеджером" величали?
Аноним 27/04/21 Втр 20:38:52 2010660333
Аноним 28/04/21 Срд 07:50:50 2011049334
>>2010645
А когда становишься мидлом?
Аноним 28/04/21 Срд 08:59:38 2011067335
>>2011049
Когда заебашишь предыдущего
Аноним 28/04/21 Срд 10:14:01 2011108336
>>2011067
Кто-то должен тебе сказать это? Или ты должен пройти какой то тест или проверку?
Аноним 28/04/21 Срд 11:17:14 2011186337
>>2004276
>Как будешь использовать транспилятор при добавлении жс-кода в шаблоны?
>Транспи... что?
>Ясно. Мы вам перезвоним
Аноним 28/04/21 Срд 12:08:44 2011245338
>>2011108
заходишь в опен спейс пм бросит доки на пол, если подымишь то трейни ебаный.
Аноним 28/04/21 Срд 15:50:18 2011534339
Посоветуйте фтп редактор для vs code.

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

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

https://ideone.com/11ZXON

Это если не гуглить и не смотреть чужие алгоритмы.
Аноним 28/04/21 Срд 20:37:27 2011935342
>>2011746
Заходишь в офис, выбираешь самого слабого с виду мидла и атакуешь его. Если не уверен в себе, то можно напасть со спины, но это не приветствуется
Аноним 29/04/21 Чтв 01:50:36 2012237343
>>2011935
говорят у фронтов нужно еще съесть печень
Аноним 29/04/21 Чтв 07:21:56 2012345344
>>2011935
Ааа всё понял, спасибо! Буду знать.
Аноним 29/04/21 Чтв 10:16:34 2012445345
Бамп
Аноним 29/04/21 Чтв 12:56:34 2012656346
Аноним 29/04/21 Чтв 12:59:22 2012658347
>>2007076
Если чувствуешь, что можешь на мидла, у тебя и зарплата ужэе должна быть мидлорвая очевидно. Проекты - это неплохо, особенно если в них есть что нибудь примечательное для конторы, но в результате все покажет собес+испытательный. И да, год опыта на мидла - это в 99% случаев маняфантазии.
Аноним 29/04/21 Чтв 14:13:45 2012720348
>>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 2012721349
>>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 2012927350
сап анчоусы, кто нибудь что-то знает про московску. галеру postuf ? ссылку на хх сами найдете
у всех разрабов вакансии с вилкой 300-400к + всякие бонусы, на собесе говорят что будет работа в каких то своих проектах. вопросы на тех собесе были обычные мидловские. зазывают очень усердно и настойчиво. из требований которые я выяснил на собесе: не пить не курить,отсутствие татуировок, не носить длинную бороду, не носить длинные волосы. сам про контору накопал что занимается типо white hat хакингом, но типо не на заказ, а делает контент на основе этого статьи на хабре, тик токи, видосы в инсте + то что там большая текучка и мало кто долго прорабатывает т.е. не больше года-полтора. из за чего становится непонятно откуда у них бабки чтобы платить разрабам такие бабосы. аноны, вы что нибудь знаете о ней, стоит ли туда соваться ?
Аноним 29/04/21 Чтв 18:13:15 2012960351
>>2012927
>не пить не курить
Они там ебанутые какие-то
Аноним 29/04/21 Чтв 18:15:44 2012962352
>>2012927
Собесился с ними.
Там какие-то поехавшие черти сидят.
Удаленку нельзя. Сидишь в офисе под трекером и тотальной толерастией. Т.е. коллегами будут различного рода муслимы.
Можно ли иммитировать юзера на php? Аноним 29/04/21 Чтв 18:21:11 2012970353
Я хочу, чтобы мой скрипт переходил на сайт, а сайт думал что это пользователь. Можно ли это как-то реализовать на PHP?
Аноним 29/04/21 Чтв 18:27:35 2012978354
>>2012962
>Удаленку нельзя.
а мне сказали что можно. что еще можешь рассказать, анонче?
Аноним 29/04/21 Чтв 18:34:00 2012988355
>>2012927
>хакингом
а хуй папе?
Аноним 29/04/21 Чтв 18:34:29 2012989356
>>2012978
>Удаленку нельзя.
Точнее удаленка только на время пандемии, потом в офис.

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

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

В каком-то виде есть, но надо использовать асинхронное I/O, а не обычное. Смотри ReactPHP, Swoole, RoadRunner.
Аноним 29/04/21 Чтв 21:23:53 2013217359
Анон, помоги с докером. В девопс треде тишина.
Допустим, я клонирую репу с каким-нибудь проектом. На компе пхп не установлен, то есть мне нужно все зависимости установить компосером в контейнере и скопировать 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 2013220360
>>2013217
Помню, ебался с этим кейсом.
Суть в том, что на момент сборки образа вольюмы не монтируются в хост или монтируются, но исчезают, не суть. Т.е. композер зависимости ставит, но ты их на хосте не увидишь.
Тут варианта 2:
1. Намертво зашивать вендор в докер образ
2. Ставить зависимости внешним инструментом после конца сборки, например мейком как я и сделал
Аноним 29/04/21 Чтв 21:29:49 2013221361
>>2013220
>>2013217
А не, пизжу, я в пете баш скриптом ставил.
Мейк сейчас на рабочем проекте. Перепутал
Аноним 29/04/21 Чтв 21:37:44 2013223362
>>2013220
>>2013221
Понял, спасибо. Буду ебаться с башем в таком случае
Аноним 29/04/21 Чтв 22:12:43 2013254363
>>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 2013272364
>>2013213

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

Спасибо!
Аноним 29/04/21 Чтв 22:41:10 2013281365
>>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 2013292366
>>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 2013476367
>>2012970
да, можно

далее консультации платные %)
Аноним 30/04/21 Птн 09:46:19 2013608368
>>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 2013838369
Аноним 30/04/21 Птн 13:50:45 2013874370
>>2013217
Убрал composer install из докерфайла и пока сделал установку зависимостей командой docker exec -it $(docker ps -aqf "name=php") /bin/bash -c "composer install"
Аноним 30/04/21 Птн 13:51:39 2013876371
>>2013838
Наверно, если показать, с каким кодом я работаю, тут большая часть новичков отвалится.
Кому интересно колупать километры легаси 5+ летней выдержки
Аноним 30/04/21 Птн 13:55:31 2013880372
>>2013874
Вполне норм. Нет смысла пытаться запихать всё в докер.
Подобные вещи обычно пишутся в ci/cd скриптах
Аноним 30/04/21 Птн 13:56:33 2013881373
Аноны Здравствуйте
Помогите пожалуйста нубу
Как создать эту блядскую схему БД для интернет магазина?
Какие нужны модели, связи?
Пишу на ларке
Аноним 30/04/21 Птн 13:57:42 2013882374
>>2013876
У меня на работе есть проект на симфони, в директории веб (которая в новых версиях симфы называется паблик) которого живет отдельная ебанина из второй половины нулевых. Вот там просто пиздец из месива пхп, жопаскрипа, верстки и sql
Аноним 30/04/21 Птн 14:00:36 2013885375
>>2013881
Вбей в гугл
>e commerce database schema
и выбирай на вкус и цвет
Аноним 30/04/21 Птн 14:02:30 2013887376
>>2013608

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

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

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

И он, получается, копирует composer.json в то же самое место.
Аноним 30/04/21 Птн 14:08:44 2013894377
>>2013887
Я тоже так думал, но без ручного копирования этих файлов composer ругался на отсутствующий composer.json
Аноним 30/04/21 Птн 14:29:58 2013904378
Аноним 30/04/21 Птн 15:16:49 2013942379
Как можно беспалевно пошарить код?
Чтобы его потом нельзя было нагуглить?
Аноним 30/04/21 Птн 15:47:10 2013960380
Аноним 30/04/21 Птн 15:55:19 2013973381
Аноним 30/04/21 Птн 15:56:47 2013974382
Пробовал через сервисы типа code to img. В одном он обрезал код пополам, в другом выдал картинку на 20мб.
Пастбин боюсь, что индексироваться будет и мне потом в тык дадут
Аноним 30/04/21 Птн 16:06:15 2013984383
>>2013974

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

Аноним 30/04/21 Птн 16:09:52 2013990384
Аноним 30/04/21 Птн 16:21:30 2014009385
Аноним 30/04/21 Птн 16:23:32 2014012386
image.png 413Кб, 1051x459
1051x459
>>2013880
Норм-то оно норм, а тесты не работают. И зависимости переустанавливал, и dump-autoload делал - ничего не помогает. С хоста все пашет
Аноним 30/04/21 Птн 16:29:56 2014024387
>>2014009
Иди в ларку, если симфы боишься. Там и работы больше
Аноним 30/04/21 Птн 16:45:16 2014047388
>>2013984
Вручную обфусцировать 2к строк не хочется...
Аноним 30/04/21 Птн 16:46:09 2014048389
>>2014009
Если с этого срешься, то в пхп мирке не выживешь
Аноним 30/04/21 Птн 16:48:20 2014052390
>>2014048
Чому? Мало ли говна на битриксах, вордпрессах и иже с ними. Будет лендинги хуярить за милую душу
Аноним 30/04/21 Птн 16:48:27 2014053391
>>2013984
Ща попробую лайтовым обфускатором прогнать
Аноним 30/04/21 Птн 16:49:21 2014056392
>>2014052
>говна на битриксах, вордпрессах и иже с ними
Там качество кода в разы хуже и файлы не на 2к строк, а на 10к+
Аноним 30/04/21 Птн 17:00:03 2014074393
ДА все норм
Аноним 30/04/21 Птн 17:13:59 2014093394
>>2014053
Хуета получается, по первым строчкам видно всё
Аноним 30/04/21 Птн 17:18:18 2014102395
О
Аноним 30/04/21 Птн 17:18:41 2014103396
>>2014093
Залей на гуглодиск файл, там думаю точно индексировать не будет
Аноним 30/04/21 Птн 17:21:15 2014109397
Аноним 30/04/21 Птн 17:24:25 2014115398
>>2014109
>https://drive.google .com/file/d/12EkOmz2MIIVNubjuRXw9G9i0LqFqiYF6/view?usp=sharing
Сложно. Как в таком коде вообще ориентируешься?
Аноним 30/04/21 Птн 17:33:11 2014129399
>>2014115
>Как в таком коде вообще ориентируешься?
Буквально голову ломаю. После рабочего дня уже ничего не хочется кроме как спать.
Сильно помогает xdebug. Так же не брезгую читать исходники фреймворка
Аноним 30/04/21 Птн 17:48:45 2014141400
Yii.mp4 388Кб, 480x360, 00:00:09
480x360
>>2014109
Увидел хтмл теги и дальше не смотрел. Но на первый взгляд ничего сложного, просто очень громоздко
Yiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Аноним 30/04/21 Птн 17:55:12 2014144401
image.png 13Кб, 635x103
635x103
Аноним 30/04/21 Птн 18:13:03 2014153402
>>2014141
>Но на первый взгляд ничего сложного, просто очень громоздко
Этого "ничего сложного" пол ляма строк
Аноним 30/04/21 Птн 18:18:51 2014162403
>>2014153
Хотели жабу - кушайте жабу.
Аноним 30/04/21 Птн 18:28:04 2014178404
>>2014153
Сложность кучи говна не зависит от ее размера
Аноним 30/04/21 Птн 18:32:24 2014186405
>>2014178
Как раз таки зависит.
Иначе зачем микросервисы придумали?
Аноним 30/04/21 Птн 22:50:25 2014471406
>>2014186

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Такой подход решает проблемы и при этом не создаёт ненужной работы.
Аноним 01/05/21 Суб 09:24:59 2014710415
Аноним 01/05/21 Суб 09:27:18 2014714416
>>2014710
спасибо. но блин, у вас ващ мозг способен формулировать только булевое значение? _))))
Аноним 01/05/21 Суб 10:11:04 2014742417
image.png 443Кб, 737x630
737x630
>>2014709
>Зумеры и вкатывальщики не задумываясь тащат эту идеологию просто потому что им так сказали.
В последнее время стал натыкаться на статьи о том, что монолиты это заебись, а микросервисы говно.
Аноним 01/05/21 Суб 10:34:47 2014757418
>>2014024
И ларка и симфони одинаково интересны, но предпочтение симфони отдаю, ибо сложно.
Аноним 01/05/21 Суб 10:36:20 2014759419
Аноним 01/05/21 Суб 10:44:11 2014765420
>>2014759
>>2014714
спасибо.
но блин, у вас ващ мозг способен формулировать только булевое значение? _))))

Аноним 01/05/21 Суб 13:47:34 2014948421
>>2014529

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

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

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

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

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

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

>>2014534

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

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

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

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

Аноним 01/05/21 Суб 13:52:11 2014951422
.
Аноним 01/05/21 Суб 13:53:06 2014952423
>>2014539

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

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

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

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

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

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

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

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

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

>>2014542

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

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

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

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

>Но большинство компаний это не яндексы и у них ничего сложного нет
Помимо яндексов достаточно компаний, где крупная кодовая база, которой не хватает какого-то разбиения
Аноним 01/05/21 Суб 18:33:03 2015392431
>>2015324
О да, работаю по принципу: видишь вокруг говно - делай говно - лей в прод
Аноним 01/05/21 Суб 18:41:30 2015409432
>>2014709
Пхп тормозной, а джава нет? Ебать у вас там хайлоад я вижу
Аноним 01/05/21 Суб 20:07:34 2015538433
Аноним 01/05/21 Суб 20:38:50 2015620434
Для чего в heredoc идентификатор?
Аноним 01/05/21 Суб 20:43:11 2015634435
bjiidbfeibz (1).jpeg 94Кб, 600x556
600x556
>>2012720

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

https://ideone.com/SnepM5

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

Мимо все тот же тупой лягушенок
Аноним 01/05/21 Суб 20:54:26 2015663436
Аноним 01/05/21 Суб 21:04:17 2015679437
>>2015297

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

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

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

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

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

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

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

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

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

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

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

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

>>2015389

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

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

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

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

Монолит - вот подход здорового человека.
Аноним 01/05/21 Суб 21:41:50 2015743439
>>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 2015815440
>>2015689
>А вот у нас есть метод API в микросервисе. И мы хотим что-то в нем поменять. И это такой объем изменений, что лучше сразу оставить эту идею и оставить кривое, плохо спроектированное твоим предшественником (который и предложил внедрить микросервисы и успешно свалил) API. Разве я не прав?
Ты рассматриваешь будто один человек будет отвечать за пачку микросервисов. Это как раз плохой пример микросервиса, когда накладные расходы растут, а профита нет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Есть примеры, где сервисы (не микросервисы, а большие сервисы) нужны - это компании вроде Яндекс (выносить сервисы, которыми могут пользоваться несколько приложений) или Вконтакте (из-за высокой нагрузки приходится писать микросервисы на Си).
Аноним 02/05/21 Вск 14:27:51 2016321446
>>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 2016331447
>>2016321
Заебал уже своей философией. Можно нанять одного разработчика который сделает красиво, но трудно нанять десять таких. Проще когда Васе нужно знать всего пару апи, он даже будет способен и зам задачу в жире накатать по хотелкам заказчика. Сейчас текучка во всех проектах. Сервисы это данность на больших проектах
Аноним 02/05/21 Вск 14:40:29 2016334448
Аноним 02/05/21 Вск 14:44:31 2016343449
Аноним 02/05/21 Вск 15:19:13 2016379450
Screenshot20210[...].png 9Кб, 404x78
404x78
Screenshot20210[...].png 11Кб, 598x80
598x80
Как же меня затрахал этот ларавель блять...
Особенно его DB-библиотека. Такой конченой хуйни в жизни не видел, оно состоит из костылей чуть менее, чем полностью.

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

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

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

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

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

Аноним 02/05/21 Вск 15:27:06 2016388453
Аноним 02/05/21 Вск 15:36:42 2016398454
>>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 2016414455
>>2016398
Так я сам PHP разраб, только топлю за zend.

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

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

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

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

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

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

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

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

Здесь та же проблема, программа в английских словах начнет заменять латинские буквы на русские.
Аноним 03/05/21 Пнд 09:16:00 2017214460
Аноним 03/05/21 Пнд 09:27:25 2017225461
>>2016861
В ламинас. Эх, первая работа. Второй зенд и extjs. Сбежал оттуда через два месяца
Аноним 03/05/21 Пнд 16:55:57 2017660462
Можно ссылку на конфу в тг у треда, если такая есть
Аноним 03/05/21 Пнд 17:32:35 2017691463
>>2017660
Зачем она тебе? Она мертва
Аноним 03/05/21 Пнд 19:26:08 2017826464
Аноним 03/05/21 Пнд 20:38:10 2017919465
>>2017826

Боюсь, что придется отлаживать код. То есть либо отладчиком смотреть, что там происходит, либо натыкать var_dump по коду.
Аноним 04/05/21 Втр 11:01:16 2018700466
>>2016795
Ну ты что, местного шиза не узнал? У этого месье и более скажем так, тонкие увлечения есть.
Аноним 04/05/21 Втр 11:10:12 2018709467
photo2018-12-06[...].jpg 48Кб, 456x599
456x599
Думал взять Слим 4 для своего пета и охуел - они говно какое-то лютое делать начали. Взяли и размазали весь микрофрейм по всему гитхабу - на каждый пук изволь поставить библиотеку, а в результате постоянные проблемы с версиями. Как эталон ебанутости - на этот фреймворк появились свои фреймворки, которые они называют скелетами. Прикиньте только - фреймворки для фреймворка. Охуеть.
Джва часа пытался собрать рабочее приложение, а в результате выяснилось, что мне ещё дописывать всё это дело самому нужно.
ОП, в учебных материалах лучше убери Слим из советов, или огранич 3 версией которая ещё целая потому, что вкатывальщикам ебаться со всем этим не варик вообще. А я укатываюсь на Люмен.

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

<img src="img/banner/photo.jpg">
Аноним 04/05/21 Втр 14:00:38 2018913473
>>2018901
Ты наверное девтулз нетворкинг заскринь, а не это
Аноним 04/05/21 Втр 14:05:26 2018916474
>>2018913
Хуйня какая-то, другую папку начал юзать и заработало
Аноним 04/05/21 Втр 16:04:45 2019131475
>>2018916
Ну значит прав не было/в конфиге веб-сервера директория не фигурировала.
Аноним 04/05/21 Втр 17:09:35 2019197476
изображение.png 5Кб, 449x145
449x145
Почему так?
Аноним 04/05/21 Втр 17:11:37 2019201477
>>2019197
Зачем строку с числом сравниваешь?
Что ты ожидаешь увидеть?
Аноним 04/05/21 Втр 17:12:41 2019205478
>>2019201
В документации написано что при сравнений строки и числа строка конвертируется в число.
Аноним 04/05/21 Втр 17:20:33 2019217479
Аноним 04/05/21 Втр 17:21:13 2019218480
Аноним 04/05/21 Втр 17:22:24 2019219481
>>2019218
Лол. В 8ой по-другому работает.
В 7ой всё как ты ожидал будет
Аноним 04/05/21 Втр 17:24:57 2019224482
>>2019219
Интересно они придумали конечно
Аноним 04/05/21 Втр 17:25:43 2019225483
Аноним 04/05/21 Втр 17:28:48 2019231484
Не могу настроить совместную работу докера, дебаггера и пхпшторма. Какого-то хера брейкпойнты работают только в фронт контроллере симфони. Поделись рабочим конфигом, анон
Аноним 04/05/21 Втр 17:30:45 2019233485
Аноним 04/05/21 Втр 17:31:15 2019234486
>>2019224
рекомендуют явный тайпкаст к числу делать, тогда результат как в 7ой версии
Аноним 04/05/21 Втр 17:32:46 2019239487
image.png 5Кб, 323x86
323x86
Как-то так теперь
Аноним 04/05/21 Втр 18:59:55 2019380488
>>2019224

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

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

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

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

var_dump(-1 > null); // true

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

Руками

> где

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

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




Аноним 05/05/21 Срд 15:33:20 2020428497
>>2020380
Нихуя себе у тебя, падали подзалупной, бомбануло. Пиши еще, киса
Аноним 05/05/21 Срд 15:36:38 2020435498
>>2020380
Ты еще и глазницы долбишься, петух, или читать не умеешь. Я спрашивал, почему шторм закрывается, а не тормозит. Как ты ебанько такое нерадивое харкач только нашло?
Аноним 05/05/21 Срд 15:41:56 2020446499
>>2020380
От похапе аноны звереют.
Аноним 05/05/21 Срд 15:51:38 2020457500
>>2020446
Да это 100% python/javascript «программист»
Аноним 05/05/21 Срд 16:08:04 2020491501
>>2020446
Да не, я пример в ОПчика беру, стараюсь няшно общаться и терпеливо.
Аноним 05/05/21 Срд 16:08:24 2020492502
>>2020491
С опчика*

быстрофикс
Аноним 05/05/21 Срд 18:58:42 2020695503
Аноним 05/05/21 Срд 19:10:12 2020714504
>>2020695
Я в последних должен в регулярке поставить + чтобы все попадались опечатки. В общем пока читаю мануал по регуляркам и функциям.
Аноним 05/05/21 Срд 19:56:50 2020768505
Псалмом обмазываетесь?
Аноним 05/05/21 Срд 20:06:55 2020773506
>>2020768
Обмазываюсь несвежим говном yii1
Аноним 05/05/21 Срд 20:11:37 2020778507
Аноним 05/05/21 Срд 20:16:33 2020783508
>>2020778
Там платят и почти не ебут
Аноним 05/05/21 Срд 20:32:32 2020794509
>>2020783
Так же и отупеть можно. Потом вообще хер куда устроишься. Я так сидел пару лет и в хуй не дул, ненапряжно крудоебствовал сутками, пока не понял, что реально деградирую
Аноним 05/05/21 Срд 20:35:19 2020797510
>>2020794
Пытаюсь иногда петик попиливать на говне посвежее, чтобы если выгнали, было куда податься.
С другой стороны этого несвежего говна столько, что без хлеба с икрой не останусь
Аноним 05/05/21 Срд 23:01:52 2020919511
Можно ли сейчас найти работу на Zend?
Аноним 06/05/21 Чтв 00:33:43 2021008512
>>2020919
Можно, но архи сложно
Аноним 06/05/21 Чтв 11:36:33 2021288513
Ананасы, у кого был такой опыт. Переката из пыха в жабу или шарп? Стоит ли так делать? Или и на пыхе есть интересные задачи?
Аноним 06/05/21 Чтв 15:42:04 2021705514
a7db6fa033d5cec[...].jpg 13Кб, 236x205
236x205
>>2015743
>Ты можешь объяснить, почему мы сортируем половину перестановок, а другую половину - не сортируем?

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

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

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

https://ideone.com/SnepM5

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

я совсем тупой что подобные задачи неделями не могу сам решить?
Аноним 06/05/21 Чтв 16:32:37 2021743515
изображение.png 20Кб, 744x413
744x413
изображение.png 7Кб, 518x188
518x188
Есть кусок кода пик 1. Моя плюсовая прога получает пик 2. Можно ли избавиться от хуйни что вверху и оставить только строчку helloworld и тд. Или это обязательные данные, которые всегда будут присутствовать?
Аноним 06/05/21 Чтв 17:17:21 2021800516
>>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 2021805517
>>2020768

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

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

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

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

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

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

Аноним 06/05/21 Чтв 17:32:22 2021819519
>>2019464

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

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

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

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

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


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

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

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

Еще есть прекрасный рубио конечно, но он ксожалению сдувается и вакансии - сплошь легаси ебаное.
Аноним 06/05/21 Чтв 20:08:53 2022095528
>>2022022
Ну какая есть. 10-15 лет назад картина была совершенно противоположная.
Аноним 06/05/21 Чтв 21:36:39 2022160529
>>2021819
А не надо ручками дто создавать. В дто очень удобно описывать правила валидации модели, которая из него создается. Сплошные плюсы, код модели чище и она не может быть невалидна, так как создается из няшной валидной дтошки. И это только один пример
Аноним 06/05/21 Чтв 21:43:17 2022171530
>>2022005
Насчёт нахуй никому не нужного мнения согласен. Ну я хз как поступить, не охота изначально обосраться. И минимизировать это, ну и нужно в любом случае куда-то вкатиться. Лютый пиздец...
Аноним 06/05/21 Чтв 21:44:22 2022172531
Аноним 06/05/21 Чтв 21:44:48 2022174532
>>2022075
Шарп как-то продуман, ну хз стоит ли вкатываться начинающему изначально в него. Пых не сильно охота, ну по-моему придётся в него входить...
Аноним 06/05/21 Чтв 21:49:48 2022178533
>>2022174
Так не учи, блядь, если не охота. Тебя что, уговаривает кто-то?
Аноним 06/05/21 Чтв 23:02:52 2022237534
>>2022178
нет, хочу понять, что более оптимально, дабы не обосраться
Аноним 06/05/21 Чтв 23:30:03 2022274535
>>2022237
Оптимально, чтобы быстро заработать на хлеб с водой - пых/js/пистон (пистон с натяжкой, на джанге мало работы сейчас), хотя и js на бэке сейчас положнее пыха обычно.
Хочешь как тру бэкендер - любой популярный строгий язык (шарп, жава, го).
Хочешь быть тру погромистом - раст/кресты, но учиться будешь года три, и то если не тупой.
Аноним 06/05/21 Чтв 23:35:48 2022282536
>>2022274
пыха развращает наверное, потом на строгий язык с мучениями переходить, наверное...
Аноним 06/05/21 Чтв 23:36:05 2022283537
>>2022274
а так за ответ спасибо, анон
Аноним 06/05/21 Чтв 23:54:23 2022304538
>>2021893
Может ли симфони сделать вариант с развитием в пхп более перспективным и радужным? Говорят, это почти как джава.
Аноним 06/05/21 Чтв 23:57:06 2022310539
>>2022304
Тебе же не нравится пыха?
Пиши на том, на чем приятнее, работа везде есть, удаленка, новые технологии и легаси...
Аноним 07/05/21 Птн 00:01:05 2022315540
>>2022310
это другой анон, интересуется, не я
Аноним 07/05/21 Птн 00:04:28 2022318541
Аноним 07/05/21 Птн 00:21:03 2022341542
>>2022171
Не ссы, обсираются все и везде. Боязнь обосраться тебя будет демотивировать всю жизнь. Подумай наоборот. Вот тебе пример: есть тулза с номером билда 1.х.х которую пилили 5-10 лет, а потом хуяк и выкатили билд 2.х.х и в чейнджлоге читаешь: произведён рефакторинг кода. Производительность тулзы увеличена на 50%. Понимаешь? Даже такие матёрые разрабы как Линус Торвальдс пиля своё ядро писали такой код, что потом переписывали десятки других разрабов.

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

От строгости охуеешь
Аноним 07/05/21 Птн 09:39:47 2022524547
>>2022304
Может, если найдешь нормальную работу, где обмазываются DDD, CQRS и всякими сагами с евент сорсингом. Но тебя туда не возьмут
Аноним 07/05/21 Птн 11:04:44 2022650548
>>2022524
>Но тебя туда не возьмут
Это самое обидное.
Пробовался пару раз на подобные ваки, на собесе завернули.
Хз как набрать нужный бекграунд, если на текущей работе сплошное говнолегаси
Аноним 07/05/21 Птн 11:19:02 2022673549
>>2022650
Ну можно попробовать читать Вернона с Эвансом, смотреть чужой код и пилить что-нибудь свое, начав с "тактического" ДДД
Аноним 07/05/21 Птн 11:45:05 2022720550
>>2022521
Не сказал бы что это можно называть строго. Обычные правила читабельного кода. У меня и psalm и stan вместе лабают, отключена только ересь, вроде комментов в закрывающих конструкциях и phpdoc. И при этом говнокодить на коленке они не особо мешают (например писать какие нибудь разовые скрипты).
Аноним 07/05/21 Птн 11:54:46 2022733551
>>2022720
Псалм к читабельности кода относится чуть менее чем никак.
Аноним 07/05/21 Птн 12:15:43 2022774552
image.png 60Кб, 904x391
904x391
>>2022733
Действительно)) При чем бы тут читабельность кода.
Аноним 07/05/21 Птн 12:18:00 2022783553
>>2022774
Даже твой скрин подтверждает то, что псалм для контроля типов.
Аноним 07/05/21 Птн 12:19:28 2022785554
Аноним 07/05/21 Птн 12:20:49 2022791555
>>2022785
Сам съеби, болезный.
Аноним 07/05/21 Птн 13:34:30 2022897556
>>2022783
А типы уже не влияют на читабельность?
Аноним 07/05/21 Птн 15:48:43 2023060557
>>2022897
Нахуй ты его кормишь?
Аноним 07/05/21 Птн 16:56:49 2023139558
>>2023060
Нахуй ты родился?
Все таки не зря похапешников долбоебами считают, если они даже не в состоянии определить основное назначение инструмента. И ты тому лишнее подтверждение. Возможность запилить дженерики и енамы в языке без дженериков и енамов, юнион типы (в старых версиях пхп), описание массивов - это про типы или про читаемость?

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

В целом очень странный кейс: создать потомка внутри родителя и вызывать от потомка метод родителя
Аноним 07/05/21 Птн 18:29:46 2023289561
Аноним 07/05/21 Птн 18:32:11 2023291562
>>2023289
Не вижу там похожего кода.
В доке вызов метода родители идет через $this
Аноним 07/05/21 Птн 18:34:44 2023294563
изображение.png 42Кб, 400x821
400x821
>>2023291
Там вот. $this принимает значение класса Foo
Аноним 07/05/21 Птн 19:13:02 2023338564
Untitled.png 48Кб, 635x579
635x579
помогите друзья программисты, учу ларавел и не получается справиться с одной проблемой, нужно в карусель вывести несколько штук, но они залазят друг на друга, пробовал делать это через 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 2023342565
image2021-05-07[...].png 66Кб, 1098x501
1098x501
Аноним 07/05/21 Птн 19:23:38 2023348566
>>2023338
А причем тут пхп, если проблема в верстке?
Аноним 07/05/21 Птн 23:35:38 2023560567
>>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 2023563568
>>2023275

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

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

Но разве подкласс вызывает метод callPrivate? Нет, место вызова находится в BaseClass. Он вызывает метод BaseClass#callPrivate у объекта класса SubClass.
Аноним 08/05/21 Суб 00:50:55 2023629569
>>2022524
А вот с этого места поподробнее.
>где обмазываются DDD, CQRS и всякими сагами с евент сорсингом
Это какие-то практики, использование которых делает тебя крутым вне зависимости от выбранного языка?
Аноним 08/05/21 Суб 05:11:31 2023710570
photo2020-10-26[...].jpg 89Кб, 750x683
750x683
>>2016795
Нас тут много %)

Я поддерживаю: натыкать на на каком-нибудь ларавеле "с нуля" приложение по гайдам с ютуба неизмеримо проще, чем поддерживать софт с многолетней историей. Соответственно, и платят меньше.
Аноним 08/05/21 Суб 05:13:43 2023712571
>>2019380
зачем же тогда РНР, если нельзя отстрелить себе ноги и жопу
Аноним 08/05/21 Суб 09:07:01 2023749572
>>2023560
Я понимаю как работает доступ к private. Не понятно только почему подкласс может через -> обращаться к приватному свойству/методу базового класса. Даже если подкласс и в скобках { } базового, он, по моей логике, должен попытаться обратиться к своему свойству field.
Аноним 08/05/21 Суб 09:35:32 2023760573
11e9c70fcce436b[...].jpg 63Кб, 1024x753
1024x753
>>2021800

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

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

https://ideone.com/h9J4W5

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

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

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

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

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

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

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

Насчет DDD особо в нем не разбираюсь, прокомментировать не могу.
Аноним 08/05/21 Суб 15:08:16 2024131578
>>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 2024149579
>>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 2024198580
>>2023710
Когда монолиты из меня сделают сильного девелопера?
Аноним 08/05/21 Суб 16:12:17 2024225581
>>2024099
А где я утверждал, что эти практики применимы к любому проекту? Если там обычное формошлепство, то естественно там не нужны саги и проч.

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

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

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

>Ты пишешь, как будто события это такая хорошая вещь, которая улучшает код. Но по факту это плохая вещь, к которой приходится прибегать, потому что по другому не работает.
Я нигде этого не пишу, всему свое место. Бложикам и лендингам действительно эти подходы к разработке и нахер не нужны. Но никогда и никому не завредит познакомиться с этими практиками хотя бы для общего развития. Не стоит замыкаться в мирке тупых толстых контроллеров. Всем денег, посоны!
Аноним 08/05/21 Суб 16:15:45 2024231582
>>2024068
Я слышал, что можно гуглить ключевые слова и находить статьи и видео по интересующей тематике. Сам не пробовал, так что не могу утверждать, что это сработает
Аноним 08/05/21 Суб 16:48:19 2024295583
Аноним 08/05/21 Суб 17:23:06 2024359584
Аноним 08/05/21 Суб 17:23:34 2024360585
Аноним 08/05/21 Суб 19:05:39 2024534586
анончики, докеризирую свой ларавель апп, и встрял на моменте подключения ноды и npm в проект. делаю по гайдику с digital ocean. но там было только подключение пыхи нгингс и бд. нужна еще нода. сам yml файл https://ideone.com/sAh4tM
все оки работает и пашет кроме контейнера с нодой - когда смотрю через docker-compose ps у него нет портов и статус постоянно restarting. как фиксить ? нода и нпм нужна для того чтобы ставить какие то зависимости и пересобирать app.js. никакого фреймворка фронтендовского на проекте нет, все на блейдах. в гугле тоже нихуя нет =/
Аноним 09/05/21 Вск 00:08:12 2024926587
>>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 2024942588
Вот что мне не нравится в Докере. Что вместо решения исходной проблемы (как дать возможность разработчику легко развернуть проект) они добавляют слои поверх существующих решений. Усложняя все.

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

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

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

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

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

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

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

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

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

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

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

Аноним 09/05/21 Вск 00:56:05 2024966589
16183251353492.jpg 77Кб, 811x456
811x456
Аноним 09/05/21 Вск 11:21:16 2025316590
image.png 159Кб, 1068x679
1068x679
>>2024942
>часто нельзя ставить несколько версий программы, например нельзя поставить пакетным менеджером ноду 10 и ноду 11 одновременно
Аноним 09/05/21 Вск 11:43:58 2025333591
>>2025316
Он не знает про переключение между версиями... Жаль.
Аноним 09/05/21 Вск 12:07:24 2025372592
Аноним 09/05/21 Вск 12:14:03 2025382593
>>2024086
Спасибо.
Я наверное не заслуживаю такого развернутого ответа.
Аноним 09/05/21 Вск 19:23:18 2025963594
>>2025316

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

Ты удаляешь элемент из $elements с помощью unset, но не добавляешь его обратно.
Аноним 09/05/21 Вск 19:41:07 2025996596
Нормально ли иметь слушатель событий для исключения, чтобы в нем преобразовать это исключение в другое (для которого уже есть другой слушатель событий)?
Аноним 09/05/21 Вск 20:00:00 2026028597
>>2025967
Заработало, спасибо. Теперь буду пытаться вникнуть как она работает (вопросов пока нет).
Аноним 09/05/21 Вск 20:46:03 2026054598
>>2024926
>только иногда чтобы что-то установить или пересобрать
this
так как мне в итоге только свой докер файл модить чтоли и туда уже тянуть ноду с нпмом ? пытался так, но из за того что делаю с образа php7.4-fpm там нету тупа образа ноды
запускаю из под макоси биг сюр если чо
Аноним 10/05/21 Пнд 00:10:17 2026230599
>>2026054
>с образа php7.4-fpm там нету тупа образа ноды
Нода там и не нужна. Подтяни отдельный контейнер с нодой в докер композ
Аноним 10/05/21 Пнд 01:21:07 2026261600
Аноним 10/05/21 Пнд 09:06:06 2026342601
>>2026230
окей, а как это тогда сделать ? я же говорю что изначально так пытался сделать, но он постоянно в рестартинг уходит =/
Аноним 10/05/21 Пнд 10:54:57 2026373602
Аноним 10/05/21 Пнд 22:21:14 2027046603
Аноны, чет я запутался с авторизацией в ларавел 7.
Дефолтный вариант по доке - это установить пакет laravel/ui и развернуть его php artisan ui vue --auth. И лара создасть набор роутов и twig-шаблонов.
Проблема - я хочу запилить на Vue spa. Простенькое spa я могу сделать, api бекенд на ларе - тоже могу.
Не понимаю как должна быть сделана авторизация в данном случае , как вообще spa - авторизируется? Подскажите где почитать ?
Лара предоставляет аж три пакета:
Socialite, Passport, Sanctum - на какой стул мне сесть? И какая между ними разница? Все они используют JWT?
Аноним 11/05/21 Втр 02:15:19 2027231604
Почему все говорят, что язык умирает?
я только начал вкатываться и все, все, блять, поголовно говорят, что пхп учить как первый яп это пиздец хуево блять. Потом все говорят, что выучив пыху, я буду работать только на поддержке старых проектов. Лол, их щас хуева гора. Лет 10 ещё на пыхе точно будет хуева гора работы. Тот же битрикс будет в топе ещё дохуя лет (минимум пять, как по мне). А вордпресс? Там вообще ебанись какое коммьюнити. На битриксе и вордпрессе онли со стороны бэка вполне изично можно получать 120к+. Для меня это большие деньги. А потом можно подучить Laravel и спокойно пиздовать бэкендером в 200к+. При необходимости потом, если нужно будет, можно будет перекатиться в НОВОМОДНЫЙ околоГОУЛЕНГ язык и получать там дохуя бабок.
Можете меня обоссать, но я прав. Пыха будет минимум до 2030 года в топах, а за это время можно дохуища бабла на пыхе заработать.
Аноним 11/05/21 Втр 03:25:06 2027250605
>>2027231
Нужно окунуться в историю откуда пошла фраза "PHP это мертвый язык". Ты видимо её плохо знаешь, так же как и те кто эту фразу наверняка говорит.
Дело в том, что PHP создавался от безысходности, потому как в те времена не было языка для бэкенда и все пользовались CGI, соответственно код писался на C, а ты понимаешь, что такое писать код на C для сайта, трудное занятие.
Именно из-за этого и создался PHP, другой альтернативы никто даже не предлагал, даже Ruby или Pearl который так критикует PHP.
Создатель PHP создал этот язык как временную панацею от этой проблемы, все говорили, что этот язык не нужен, но в то же время множество компаний спрашивало как им пользоваться, парадокс, правда? Поэтому была создана документация и в неё добавлялся весь нужный функционал, математические функций например, или строковые.
Создатель PHP говорил с выходом новой версий, что когда появится альтернатива, PHP умрёт и даже он им не будет пользоваться. Давал срок в полгода. Но её так и не появилось и таким образом, каждые полгода выходила новая версия. И это продолжается по сей день.
Аноним 11/05/21 Втр 09:07:18 2027297606
Аноним 11/05/21 Втр 12:23:42 2027432607
>>2027046
>twig-шаблонов
Неужели в лярве отказались от богомерзкого бляда blade по умолчанию?
Аноним 11/05/21 Втр 12:29:05 2027440608
>>2027231
>Почему все говорят, что язык умирает?
Умирает после каждого запроса

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

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

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

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

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

Кстаит в похопе скора выкатят файберы, маня асинхронность.
Дохоронят пхп до того что лет через пять она ноду начнет выгонять из ниши быстрых-асинхронных приложений, лол.
Аноним 11/05/21 Втр 18:42:29 2027758618
>>2027606
На работе нужен уровень крудоклепателя. Большинство тасок программируется иф елсами, там много ума не надо. Архитектурные таски разбирают синьоры, инфраструктурные - девопсы
Аноним 11/05/21 Втр 18:43:31 2027760619
>>2027743
>ноду начнет выгонять из ниши быстрых-асинхронных приложений
Её уже го потеснил
Аноним 11/05/21 Втр 19:54:01 2027807620
>>2027743
>я до того как зндстру прочел - чувстовал себя пидорашкой
Анончик, опиши подробнее, что именно изменилось после.
Аноним 11/05/21 Втр 20:23:45 2027826621
15293094001630.jpg 47Кб, 567x604
567x604
>>2027743
А теперь еще читани Мартина, банду четырех и Эванса с Верноном - будешь одним своим существованием унижать жопаскрип макак и петухоноблядков
Аноним 11/05/21 Втр 20:30:59 2027832622
>>2027758
Платят-то хоть нормально?
Аноним 11/05/21 Втр 21:33:40 2027877623
Накидал небольшую либу для работы с конфигами. Хочу услышать мнение более толковых людей.

https://github.com/freezemage0/config/
Аноним 11/05/21 Втр 22:18:31 2027911624
Аноним 11/05/21 Втр 22:50:13 2027941625
Хуйня ваш пхп. Больше 30к джун не получит и будет выгорать. Не учите пхп, тем более он году так в 2030 нахуй никому не нужен будет
Аноним 11/05/21 Втр 22:51:25 2027942626
>>2027941
>году так в 2030 нахуй никому не нужен будет
Ты скозал?
Аноним 11/05/21 Втр 22:53:51 2027944627
>>2027942
да я скозал и что ты мне сделаешь
Аноним 11/05/21 Втр 23:05:42 2027957628
>>2027944
Если ты в другом городе-ничего.
Аноним 11/05/21 Втр 23:10:17 2027961629
>>2027957
а я в другом городе как раз :р
Аноним 11/05/21 Втр 23:59:08 2028012630
>>2027600
Пока не ходил на собесы, решаю задачки на всяких сайтах, думаю начать скоро. А так параллельно симфоньку.
Аноним 12/05/21 Срд 00:49:38 2028052631
>>2028012
>А так параллельно симфоньку.
Какой-то пет пишешь?
Аноним 12/05/21 Срд 01:15:27 2028070632
>>2028052
Что такое пет?
А если я уже могу круд приложение заебумбенькать, могу ли я рассчитывать на позицию джуна за 40к?
мимодругойанон
Аноним 12/05/21 Срд 01:16:36 2028071633
406791901021599[...].jpg 79Кб, 604x604
604x604
>>2027941
Минусы очевидны.

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

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

(Я на Си умею в типы данных итд, т.е сложность не имеет значения меня уже изнаСиловали)
Аноним 12/05/21 Срд 05:21:22 2028139639
https://ideone.com/Odsrjm - Суммы прописью.
Вроде работает, но там я как понимаю все проще можно было сделать.
Пишу калькулятор пока.
Аноним 12/05/21 Срд 09:51:30 2028215640
>>2028128
> Ну там синглтоны фасады хуемое я нихуя не помню
Ебаный ты козел блять, я бы тебя и за десятку не взял.
Аноним 12/05/21 Срд 10:22:04 2028240641
>>2028137
Когда я устраивался в первый раз, то показывал два свои проекта - сокращатель ссылок на симфони и парсер новостей на тогда еще живом сайлексе
Аноним 12/05/21 Срд 10:24:08 2028242642
Аноним 12/05/21 Срд 10:36:23 2028249643
>>2027877
А зачем? Чем оно отличается, например, от https://github.com/symfony/config ?
Особо не вчитывался, но заметил, что нарушаешь psr 2 (12) и консистентность объявления сигнатур методов, в одних местах возвращаемые типы есть, в других - хер. Рекомендую натравить статический анализатор и охуеть.
Аноним 12/05/21 Срд 11:00:14 2028262644
>>2028249
> Неконсистентность типизации
А как стипизировать mixed на PHP 7.2?

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

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

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

Конкретно по самой архитектуре будет что сказать?
Аноним 12/05/21 Срд 11:02:29 2028264645
Аноним 12/05/21 Срд 11:32:01 2028279646
Аноним 12/05/21 Срд 11:32:21 2028280647
Аноним 12/05/21 Срд 12:27:03 2028334648
>>2028128
Сделай круд на симфе с доктриной, тогда и поговорим
Аноним 12/05/21 Срд 12:30:21 2028340649
>>2028129
Ларакасты - основы пыхи, ооп и ларавел
Елисеев - практика на yii/laravel/symfony
Отус - более обзорно как в вузе, есть по языку и по фреймворкам ищи на торентах
Аноним 12/05/21 Срд 12:34:41 2028348650
>>2028137
Форум неплохой проект для пета. Содержит многие фичи крудов. Там можно много всего нахерачить: аутентификация, разграничение прав, менеджмент файлов, поиск, сервисы рассылок, кеш и т.д. на сколько сил хватит.
Аноним 12/05/21 Срд 12:35:54 2028350651
>>2028240
Тоже писал сокращатель ссылок на симфе. Уже не помню, чье это тестовое. Даже в докер обернул его
Аноним 12/05/21 Срд 12:44:19 2028363652
>>2028262
>А как стипизировать mixed на PHP 7.2?
Стараться избегать mixed

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

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

>Пользоваться и дорабатывать - разные вещи. Для использования кода достаточно создать один инстанс, для доработки - перечитать весь существующий код.
По работе частенько смотрю в кишочки фреймворков и либ. И гораздо проще и быстрее это делать, если код написан в едином стиле от кишочков yii1 плююсь, т.к. их писали до создания пср
Аноним 12/05/21 Срд 12:59:55 2028385655
>>2028373
>Как избежать mixed, если, например, json_decode() его возвращает?
Ну по хорошему он должен возвращать объект или массив, но какие-то сверхразумы подумали что хорошо бы еще парсить 'true' в true без топ-левел жсон объектов или массивов
Аноним 12/05/21 Срд 13:06:22 2028393656
>>2028383
> Ты же знаешь, что хочешь из json_decode() получить?
Нет, в этом и суть.
Была идея представить все значения в виде какого-нибудь ConfigValue, который знает о типе, но это тупость какая-то.
Аноним 12/05/21 Срд 13:47:22 2028409657
>>2028215
Я работал тестером в огромной компании, у которой сайт был на Битриксе. Зп миддла пхп разраба бали 180-220к. ООП как такового не было в принципе. Задачи были простейшие: вывести товары на экран, обработать фильтры и прочая поебистика. Где там нахуй нужен синглтон, м?
Если у меня будет выбор: стать супер-профессионалом в шкодинге или быть быдло-говнокодером и получать 200к, то я выберу 2 и даже, сука, глазом не моргну
Аноним 12/05/21 Срд 14:00:48 2028431658
>>2028409
>быть быдло-говнокодером и получать 200к, то я выберу 2 и даже, сука, глазом не моргну
И через пару лет охуеешь и пойдешь плотничеством заниматься
Аноним 12/05/21 Срд 14:13:41 2028447659
>>2028393
Попробуй хотя бы через интерфейс определить возращаемый тип, а то рили хуйня какая-то. Не понятно, что ждать, современными тайпчеками пыхи не обмажешься.
Ладно json_decode, когда он писался у пыхи про типы не думали. Но мы то solid-ные разрабы
Аноним 12/05/21 Срд 14:14:58 2028449660
>>2028409
Раз таков твой выбор и ты не сгоришь от этого за пару лет, то вай нот. Должен кто-то и легаси на битриксе поддерживать
Аноним 12/05/21 Срд 14:28:01 2028471661
>>2028431
200125. За 5 лет 12кк, Минус налоги, минус хавка, дорога и прочая дрочь. Лямов 9 точно останется. Мне их хватит до конца жизни.
Аноним 12/05/21 Срд 14:28:26 2028473662
Аноним 12/05/21 Срд 14:36:22 2028488663
>>2028447
Перепиливать типы данных пыхи под классы звучит ну сверх тупостью. Знаю, что у Себастиана Бергмана есть такой пакет, с типами данных который, но чёт даже хз. Имхо, непрактично со стороны пользователя либы.
Аноним 12/05/21 Срд 15:03:13 2028557664
>>2028488
>Перепиливать типы данных пыхи под классы звучит ну сверх тупостью
Имел в виду либо вернуть 1 тип данных, либо обернуть несколько типов за интерфейсом

В чем проблема возвращать 1 тип данных? Так и разрабу понятнее и ide нормально автокоплитит.
Нет, мы вернем тебе строку, или инт, или аррей, или нахуй иди
Аноним 12/05/21 Срд 15:56:30 2028621665
>>2028099
> Прибавь докер и xdebug и будет зависать, а без них хуй отладишь
ни разу не видел зависший xDebug;
живу без докера, с другими виртуалками, все живы, на бекенде ничего никогда не висло
Аноним 12/05/21 Срд 16:02:58 2028624666
>>2028621
Это происходит так.
Есть тормознутый легаси проект.
Ставлю иде в режим дебага, расставляю точки, делаю запрос. Запрос вместо ожидаемых секунд 15 идет больше минуты. Внутри докер контейнера что-то подвисает и приходится перезапускать, чтобы поймать дебагером запрос
Аноним 12/05/21 Срд 16:05:07 2028625667
А почему в мануале пишут, что функция mt_rand() небезопасна? (сорри, я нуб если что). Как я понял, она генерирует сид на основе таймстампа, pid и каких-то других внутренних параметров. Разве есть рабочие методы предугадать число, или подразумевается, что она небезопасна только теоретически?
Аноним 12/05/21 Срд 17:06:34 2028690668
Аноним 12/05/21 Срд 17:14:18 2028702669
Аноним 12/05/21 Срд 18:03:11 2028746670
>>2028690
Это да, я нагуглил уже, но там идет речь, что в теории можно предсказть. Мне интересно, есть ли готовый эксплоит, который все это делает.
Аноним 12/05/21 Срд 19:10:37 2028828671
Laravel echo
Аноним 12/05/21 Срд 19:21:04 2028840672
Помогите советом, а то я уже утратил любую надежду и впал в депру. Когда-то думал мол вкачусь вон в разработку через PHP быстро, вакансий же море.
Вот уже прошел год, успел всякое попробовать, выяснил что единственный приемлемый вариант для меня - это Симфони.
С ларавелом уяснил что он мне совсем не нравится, срань типа всяких CMS никогда даже не рассматривал.
Вот только выяснилось, что джуны на Симфони никому не нужны. По крайней мере в моем городе. За этот год вообще таких вакансий не появлялось, хрен знает на что я, дурак, совсем надеялся.
Переезжать по некоторым причинам сейчас никуда не могу. Руки совсем упали, дальше пилить проекты на Симфе кажется лишенным смысла, так вообще вечным ждуном можно стать.
В ларавел не хочу, там сапоги защищать надо. Может по каким-то другим языкам двигаться?
Вообще хочется в golang, но это в будущем. Джуны там не больше нужны чем на симфони.
Куда с моими входными податься? Вроде кандидат я не самый хреновый. Молодой, вышка там, знания широкие по IT в целом, не одним пыхом деланный.
Или может есть какие-то варианты таки в Симфони попасть? Может писать всем компаниям, которые ищут миддлов и сеньйоров, что я такой-то класный-прикольный, готов вылизывать эйчарше ноги и работать за еду?
Поделитесь опытом, короче.
Аноним 12/05/21 Срд 19:47:11 2028864673
Аноним 12/05/21 Срд 21:15:58 2028938674
>>2028840
Так откликайся на мыдловакансии, если ты такой не самый хреновый.

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

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

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

>А эти универские "широкие знания" мне разве что на собесе помогут
Не помогут, там другое спрашивают
Аноним 12/05/21 Срд 22:41:55 2029007679
>>2028958
>>2028959
Да ну, я вообще не верю в такие истории кабанячие. Отсутствие реального коммерческого опыта детектится за минуту, к чему тут платиновые вопросы?
>>2028962
>А толку то? Работу ведь не нашел
Так и нету работы, 3 года коммерческого минимум просят, и знания соответствующие
Аноним 12/05/21 Срд 23:12:04 2029040680
>>2029007
>Отсутствие реального коммерческого опыта детектится за минуту
Оно не детектится, если:
1. Ты писал код
2. Ты знаешь ответы на платину
3. Можешь наврать про то, чем занимался на работе и про процессы
Сойдешь за мидла
Аноним 12/05/21 Срд 23:12:41 2029042681
>>2029007
>Так и нету работы, 3 года коммерческого минимум просят, и знания соответствующие
Тебе же написали, что нужно есть суп ложкой. Положи нож
Аноним 13/05/21 Чтв 01:24:51 2029131682
>>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 2029281683
>>2028953
Сорян, унижать не собирался. Ты на собесы-то ходил? Во первых, не стесняйся откликаться на вакансии для мидлов. Ты даже не можешь представить, какие чудовищные долбоебы иногда иногда откликаются даже на синьерские вакансии, и они не терзаются сомнениями, а берут и приходят работы, правда, не получают. Во вторых, напизди про коммерческий опыт я так сделал когда-то, брат жив
Аноним 13/05/21 Чтв 12:05:54 2029401684
Стоит ли писать цикл и в нём if, или сперва if а потом 2 разных цикла?
Аноним 13/05/21 Чтв 14:00:16 2029522685
>>2029401
Приведи конкретный код
Аноним 13/05/21 Чтв 17:54:31 2029724686
Анон, подай идею для какого-нибудь небольшого интересного приложения, где можно было бы использовать брокер сообщений
Аноним 13/05/21 Чтв 18:18:12 2029742687
>>2029724
Делал одно приложение, куда воткнули ребит.
Парсер выдачи гугла.
Скармливаешь приложению кучу запросов (список строк). Каждый запрос кладешь в очередь. Соответственно достаешь из очереди и делаешь запрос в гугл, результат кладешь в базу (или куда хз).
Цель была в том, чтобы отслежить позиции определенных сайтов в выдаче гугла по запросам.
Аноним 13/05/21 Чтв 18:20:42 2029745688
>>2029742

Не лучше ли тут использовать очередь на основе таблицы в БД? Тогда для каждого запроса можно отслеживать статус, кол-во неудачных попыток. А то в Rabbit закинул задачи и непонятно, на сколько процентов задача выполнена и сколько еще ждать.
Аноним 13/05/21 Чтв 18:29:26 2029755689
>>2029745
>Тогда для каждого запроса можно отслеживать статус, кол-во неудачных попыток. А то в Rabbit закинул задачи и непонятно, на сколько процентов задача выполнена и сколько еще ждать.
В ребите есть средства мониторинга
Аноним 13/05/21 Чтв 20:33:12 2029869690
120-1208910pepe[...].png 35Кб, 312x280
312x280
Зачем решать задачки если вкатываются по связям? Для интереса?
Аноним 13/05/21 Чтв 20:56:59 2029886691
photo2021-05-13[...].jpg 70Кб, 828x1224
828x1224
>>2029869
> вкатываются по связям
в твоём манямирке обиженки

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

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

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

Аноним 14/05/21 Птн 11:08:30 2030210698
photo2018-01-20[...].jpg 163Кб, 1185x1080
1185x1080
>>2030201
Чо как маленький

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

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

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

>>2030213
>>если он не собирается растить их этого поделия какую-то супер-систему
потенциально собирается. А если нет - ради опыта я реализую на ларе и вью - за среднюю цену подобного приложения. Вопрос в средней цене.
Аноним 14/05/21 Птн 11:55:12 2030243702
937811118775742[...].jpg 110Кб, 677x950
677x950
>>2030224
>не понимаю как посчитать трудозатраты
Берёшь и считаешь количество часов, которое тебе реально понадобится, умножаешь на согласованный с заказчиком рейт, к примеру, 1-2 тыс. рублей за час да, в Рашке программер дешевле шлюхи. Получается цена.

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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





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

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

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

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

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

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

Аноним 14/05/21 Птн 19:45:16 2030848715
Чем Ларавел лучше Симфони?
Аноним 14/05/21 Птн 21:29:48 2030931716
>>2030848
Тем же, чем вордпресс лучше ларавела.
Аноним 14/05/21 Птн 21:38:26 2030939717
>>2030931
А кроме шуток, епта? Мне в свое время понравилась валидация через реквесты (теперь и в симфони так делаю) и миддлвари (в симфе по ходу только через евент листенеры можно сделать).
Аноним 14/05/21 Птн 22:26:44 2030998718
>>2030939
А я без шуток говорю. Зависит от уровня проекта. На самом дне вротпресс и прочие CMSки лучше всего, на не самом дне ларавел. На среднего уровня проектах Симфони, если еще выше - лучше не пхп.
Аноним 15/05/21 Суб 15:07:00 2031407719
Бля, заебался тупить. Пил спа на вью + лара. Для аутентификации поставил пакет санктум - вроде все это работает. Но я чето торможу в понимании как. по паре туториалов сделал регистрацию + логин. Лара - у меня седьмая, пакет 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 2031573720
>>2031407
>И еще вопрос по клиенту - в спа я получаю объект пользователя в момент логина, но если я перегружу страницу - то JS перегружается и все объекты становятся пусты, как фиксисть?

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

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

А еще хорошей идеей будет впечь этого юзера прямо в страницу (например, в тег с типом application/json), чтобы не делать лишних запросов.
Аноним 15/05/21 Суб 20:15:06 2031631723
>>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 2031651724
>>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 2031658725
>>2025996

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

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

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

>>2026261

> array_push($reversed,

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

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

Аноним 17/05/21 Пнд 21:32:55 2033936729
>>1998470 (OP)
Есть get-запрос на некий пхп-эндпоинт, мне надо с фронта закинуть туда некоторые данные из localStorage чтобы пхп-бэк их обработал. Как это сделать? Только через query-параметры?
Аноним 17/05/21 Пнд 22:01:56 2033957730
image.png 67Кб, 771x609
771x609
>>2031658
Вот про показ страницы ошибки (точнее про возвращение текста с ошибками в виде json) и идет речь. Второй слушатель нужен для перехвата исключений, которые бросает фреймворк, и для преобразовывания их в JsonException
Нормальный ли это подход?
Аноним 18/05/21 Втр 10:53:44 2034189731
>>2030848
Лара построена на симфони.
Аноним 18/05/21 Втр 11:33:13 2034249732
>>2033957
>false === $ex instanceof JsonException
Нихуя себе я утром чуть не всрался от такой конструкции
Аноним 18/05/21 Втр 12:27:28 2034322733
>>2033896
Зачем аплаишься на гроши? Никто в айти не получает такие копейки. Даже приходящая в офис уборщица будет смеяться.
Насчет задачи - задача адекватна для мидла за 100к, но никак не для стажера за 15к
Аноним 18/05/21 Втр 12:28:37 2034324734
>>2033936
Обычно такое постом делается
Аноним 18/05/21 Втр 12:56:01 2034375735
>>2034322
В мухосоранске моём вакансий нет, ищу удалёночку с нулём опыта работы. Кидаю дохуя откликов, за пол месяца только эти ответили и 1с.
Аноним 18/05/21 Втр 13:02:33 2034386736
>>2034375
>ищу удалёночку с нулём опыта работы
А нарисовать опыт не судьба?
Аноним 18/05/21 Втр 13:17:03 2034418737
>>2034386
Не ебу что отвечать когда спрашивают про ДОСТИЖЕНИЯ или просто интересные проекты. У меня интересных проектов 0, обычные магазы, новостные сайты и парсеры
Аноним 18/05/21 Втр 13:22:13 2034429738
>>2034418
Любую задачу можно приукрасить и подвести к достижениям. Например парсер, мб ты там удачно применил какой-то инструмент (очереди, кеш, что-то еще), увеличив производительность в десятки раз.
Или в новостном сайте прикрутил хитрий алгоритм рекомендаций.
Общий рецепт - ищем в другом проекте классную фичу, думаем, как бы реализовали, на собесе говорим, что реализовали и как.
Аноним 18/05/21 Втр 14:51:01 2034525739
>>2034429
>>2034386
Мне интересно, это только в пхп засилие такие долбоебов, или везде?
Аноним 18/05/21 Втр 15:05:41 2034538740
>>2034249
с Йода познакомиться нужно нотацией тебе
Аноним 18/05/21 Втр 15:54:32 2034623741
>>2034249
А что не так с той конструкцией? Я всегда так пишу, если не использую предикаты, да и то только если условие проверяется на истинность

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

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

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

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

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

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

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

Я уже разобрался - сам себе в ногу выстрелил полгода назад, когда "настраивал" iptables.
Аноним 18/05/21 Втр 18:43:23 2034929747
>>2034525
А ты пойди прорвись с 0 опыта через толпу вайтишников
Аноним 18/05/21 Втр 19:42:20 2035001748
какова ситуация с асинхроностью на пхп?
Аноним 18/05/21 Втр 19:51:48 2035012749
>>2035001
В 8.1 возможно завезут файберы https://wiki.php.net/rfc/fibers
Пока - только корутины ручками (можно с промисами от Guzzle, например).
Аноним 18/05/21 Втр 19:52:45 2035014750
Аноним 18/05/21 Втр 20:22:21 2035039751
>>2035014
Про амп забыл https://amphp.org/amp/
Да и еще куча всего есть, но я бы при всей своей нелюбви к жопаскрипу использовал ноду
Аноним 18/05/21 Втр 20:27:47 2035048752
Это какой-то платиновый вопрос. В каждом треде приходит кто-то, спрашивает "а как у вас с асинхронностью" и жалуется, что лучше использовать ноду. Ну так сразу бы и использовал, чего споры разводить.

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

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

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

>>2033957

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

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

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

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

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

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

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


Аноним 18/05/21 Втр 20:50:52 2035083757
>>2035078
Да с чего ты взял, что любые? Только некоторые, наподобие 404 итд, они явно прописаны во втором слушателе.
Аноним 18/05/21 Втр 21:20:10 2035117758
>>2035039
а в чем проблема сделать асинк?
как то же js посадили на движок из С
Аноним 18/05/21 Втр 21:26:21 2035125759
Кто шарит за js?
Как изменить цвет блока при удержании мышью?
токсик из жс треда,ты тут?
Аноним 19/05/21 Срд 01:50:00 2035271760
>>2035048
Да, дружок, ты уже заебал если у меня детектор не сломался, тебе ничего не нужно на твоих древних микропроектах в зассаной галере. Ни асинхронности, ни микросервисов, ни разделения бэка и фронта. Но зачем всем об этом знать?
Аноним 19/05/21 Срд 08:10:01 2035317761
>>2035012
Думаю файберы будут почти на 100 процентов. Всратая асинхронность из коробки закроет еще какой то определенный диапазон тасков. пихипи собственно так и развивается - разползаясь по чужим нишам потихоньку.
Аноним 19/05/21 Срд 10:28:23 2035370762
Вы используете в работе подход GraphQL?
Аноним 19/05/21 Срд 11:14:21 2035398763
>>2035001
Говорят, что только amp пригоден для прода
Аноним 19/05/21 Срд 11:47:08 2035424764
>>2035317
>Всратая асинхронность из коробки
И что именно в ней будет всрато?
Аноним 19/05/21 Срд 11:56:44 2035431765
>>2035398
А овчинка стоит выделки?
Аноним 19/05/21 Срд 12:38:26 2035455766
>>2035431
Зависит от задач. Если хочется всего лишь небольшого ускорения, то можно посмотреть в сторону роадраннера
Аноним 19/05/21 Срд 14:05:20 2035523767
Аноним 19/05/21 Срд 14:42:03 2035554768
>>2035068
У меня такое ощущение как будто все уже изобрели.
Аноним 19/05/21 Срд 15:14:45 2035573769
2 стула
валидировать форму на сервере или через жс на фронте?
Аноним 19/05/21 Срд 15:40:53 2035591770
>>2035573
>валидировать форму на сервере
Это обязательно

>через жс на фронте
Это говно легко обходится, только в дополнение к серверной валидации для юзер экспириенса
Аноним 19/05/21 Срд 15:59:47 2035605771
>>2035591
я так понимаю,надо учить упоротые регулярные выражения?
Аноним 19/05/21 Срд 16:01:15 2035606772
>>2035605
Нет, надо учиться пользоваться либами для валидации
Аноним 19/05/21 Срд 16:03:19 2035608773
Аноним 19/05/21 Срд 16:05:02 2035611774
>>2035606
которые на основе их сделаны?
к каждой полю формы идет функция,так?
Аноним 19/05/21 Срд 16:14:50 2035628775
>>2035611
Если на фронте и без фреймворков, то да. Можно взять какой-нибудь input mask и описать правила валидации для каждого поля ввода. Там наверняка из коробки будут все типовые случаи и можно будет обойтись без регулярок, чтобы не дать ввести то, что не нужно. Но это все не отменяет необходимости делать валидацию на бэке
Аноним 19/05/21 Срд 16:24:35 2035642776
>>2035605
Зачем?
Не помню, когда последний раз имел с ними дело на проде
Аноним 19/05/21 Срд 16:26:10 2035644777
>>2035642
ну как,основа же для вката
Аноним 19/05/21 Срд 16:30:17 2035647778
>>2035644
Ну можешь уделить час на теорию и пару часов на практику. А так не вижу смысла их ковырять, пока таска по ним не пришла. Достаточно знать, что есть вот такой кроссплатформенный инструмент работы со строками
Аноним 19/05/21 Срд 20:27:00 2035799779
А как можно защитить статические файлы - картинки, файлы с js кодом, css и т. д.? Вот допустим такая ситуация: есть админка в ее шаблоне подключается через тег script js файл, который лежит на сервере, но ведь кто-то другой, допустим, начнет брутфорсить и сможет его найти, а там по коду фронтенда админки можно лучше понять как работает сайт, что плохо для безопасности. То есть надо это как-то на уровне апача/нжикса блокировать?
Аноним 19/05/21 Срд 21:10:08 2035840780
>>2035799
>но ведь кто-то другой, допустим, начнет брутфорсить и сможет его найти
Не сильно понял что ты имеешь ввиду под брутфорсить, но если жс подключается только для залогиненных пользователей, то никто его не увидит. Другое дело что много ума не нужно написать в урле /assets/admin.js или что-то подобное

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

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

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

>>2035642

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

>>2035799

Если тебе хочется максимальной безопасности, можно весь раздел админки закрыть HTTP-авторизацией и никакие файлы оттуда не будут выдаваться. Но придется два раза логиниться.
Аноним 20/05/21 Чтв 08:14:14 2036172784
>>2035945
> можно весь раздел админки закрыть HTTP-авторизацией и никакие файлы оттуда не будут выдаваться. Но придется два раза логиниться.
поподробнее
Аноним 20/05/21 Чтв 14:39:06 2036569785
>>2035554
Так и есть, это какой-то программисткий юмор у чела
Аноним 20/05/21 Чтв 14:41:32 2036572786
image.png 281Кб, 763x827
763x827
>>2035554
всё поверхностное -- да

но многое переизобретается,
либо с новыми инновационными технологиями,
либо просто в нужном месте в нужное время
Аноним 20/05/21 Чтв 15:24:07 2036612787
>>2036572
Как всегда простые и понятные сервисы рубят бабло...
эх..
Аноним 20/05/21 Чтв 18:46:11 2036944788
Если у меня много $_POST на приеме,так и херачить десяток списком?
Аноним 20/05/21 Чтв 19:04:48 2036966789
Аноним 21/05/21 Птн 11:28:50 2037308790
image.png 311Кб, 560x430
560x430
Аноним 21/05/21 Птн 12:12:12 2037372791
eEk4qpFTGM.jpg 54Кб, 695x494
695x494
Аноним 21/05/21 Птн 13:00:36 2037417792
Ratchet кто-нибудь трогал? Как можно безболезненно прикрутить чятик к готовому приложению с аутентификацией через jwt?
Аноним 21/05/21 Птн 15:41:17 2037608793
Вот допустим есть функция проверки формы(логин и пароль)Сначала проверяем логин с условием,если тру идем к паролю,а если фолз,то что кодить?
Аноним 21/05/21 Птн 15:55:27 2037636794
>>2037608
Нескурно их отдельно проверять.
Проверяй их вместе(грубо говоря делать запрос в базу на наличие логина с паролем) и выдавай общую ошибку вида "не верный логин или пароль"
Аноним 21/05/21 Птн 16:05:28 2037649795
>>2037636
а если валидность?
допустим логин,имя или пароль не правильно записаны,там меньше 6 символов или есть ненужные символы?
Сделать убийство скрипта и выбросить сообщение?
Аноним 21/05/21 Птн 16:10:36 2037659796
>>2037649
Так ты определись для начала, что за форма у тебя: логин или регистрация. Там правила валидации разные
Аноним 21/05/21 Птн 16:13:10 2037664797
>>2037659
ну давай для регистрации.
я щас как раз читаю регулярки
Аноним 21/05/21 Птн 16:13:12 2037665798
>>2037649
В общем случае для формы задается список правил валидации (встроенные в фреймворк, либо кастомные функции) вида [параметр => правила] или кастомный валидатор. Потом проходимся по этому списку, возникшие ошибки заносим в массив $errors и отдаем (по апи или рендерим в шаблон)
Аноним 21/05/21 Птн 16:47:00 2037694799
regex1.jpg 22Кб, 431x328
431x328
Так,почему не подходит под шаблон?
Аноним 21/05/21 Птн 17:05:51 2037707800
regex2.jpg 16Кб, 312x199
312x199
>>2037694
а вот так получилось
Аноним 21/05/21 Птн 17:13:53 2037717801
>>2037694
Потому что подчеркивание не входит в выбранные тобой диапазоны символов
Аноним 21/05/21 Птн 17:19:31 2037727802
>>2037717
интересно,а как обстоят дела с алфавитам где есть точки,круглишки,хвостики?
Аноним 21/05/21 Птн 17:23:29 2037733803
Аноним 21/05/21 Птн 17:35:39 2037745804
>>2037733
а если я хочу определенный символ @ добавить в допустимые к буквам и цифрам?Как записать?
Аноним 21/05/21 Птн 17:39:11 2037750805
>>2037745
Взял бы какую вводную статью по регуляркам, да почитал. Там есть про диапазоны символов
Аноним 21/05/21 Птн 17:40:37 2037753806
>>2037750
да я тупанул,дочитал
можно в квадратные скобки запихать или \@
Аноним 21/05/21 Птн 18:02:52 2037787807
> В случае, если первым символом описания класса является '^', логика работы инвертируется: класс соответствует одиночному символу, который не содержится в наборе, определяемым классом
[^@]-то есть этот символ отвергается как допустимый?
Аноним 21/05/21 Птн 19:39:39 2037897808
regex3.jpg 67Кб, 733x639
733x639
Ошибка на 31 строке.
Где я неправильно накодил?
Аноним 21/05/21 Птн 19:42:12 2037905809
>>2037897
Ошибку мы должны из космоса прочитать?
Аноним 21/05/21 Птн 19:43:26 2037906810
Аноним 21/05/21 Птн 19:46:43 2037909811
>>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 2037911812
>>2037897
Поставь пхпшторм. У тебя опечатка в синтаксисе (название функции). Он бы тебе подсветил
Аноним 21/05/21 Птн 20:09:00 2037938813
Аноним 21/05/21 Птн 20:18:56 2037951814
>>2037897
Возвращай из таких функций булевы значения, а не строки

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

Аноним 21/05/21 Птн 22:21:56 2038063815
>>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 2038065816
>>2037787

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

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

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

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

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

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

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

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

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

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

Это обычно настраивается не в PHP коде, а на уровне веб-сервера, например, в Апаче или Нгинксе.
Отрицание ^ в квадратных скобках, RegExp Аноним 22/05/21 Суб 12:03:03 2038391820
IMG202105221351[...].png 16Кб, 720x149
720x149
IMG202105221351[...].png 56Кб, 720x292
720x292
Имею такую, казалось бы, простенькую задачу. По краям две буквы 'a', а между ними - какой угодно символ, кроме 'e'/'x'. Результат виден на пикриле. Почему код не сработал, как следует, что на самом деле произошло?
Аноним 22/05/21 Суб 12:07:08 2038395821
IMG202105221404[...].png 54Кб, 720x292
720x292
>>2038391
Добавлю, данный код сработал на отлично, когда я написал вот так: '#\ba[^ex]a\b#'

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

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

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

>>2038395

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

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

При этом \b не соответствует какому-то символу, а соответствует границе между двумя символами.
Аноним 22/05/21 Суб 16:17:01 2038724824
>>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 2038883825
Сколько ядер использует пхп?
1?
Аноним 22/05/21 Суб 18:41:17 2038934826
Почему версия ларки такая старая, или я что-то не так понимаю?
Аноним 22/05/21 Суб 18:42:06 2038936827
фвыфы.jpg 66Кб, 536x382
536x382
Аноним 22/05/21 Суб 18:43:18 2038938828
>>2038936
ты ставил по офиц гайду?
Аноним 22/05/21 Суб 19:05:20 2038959829
>>2038938
Установил пыху, потом композер и через него
Аноним 22/05/21 Суб 19:50:14 2038994830
>>2038936
Так это же вроде версия конкретно инсталлера, не пользовался им. Версию ларки посмотри например в composer.json
Аноним 22/05/21 Суб 20:15:25 2039025831
pizda.jpg 355Кб, 1006x728
1006x728
Как фиксить?
Аноним 22/05/21 Суб 20:17:29 2039028832
>>2039025
Валера, ну япона мать. Ты или загугли, или скинь версию пыхи и ларавеля
Аноним 22/05/21 Суб 20:30:24 2039045833
>>2039028
Laravel Framework 7.30.4

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

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

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

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

Также, ты можешь поэкспериментировать с многопоточностью и создать несколько потоков внутри одного процесса. Тогда тоже можно будет использовать несколько ядер, но могут быть сложности с обменом данными между потоками.
Аноним 23/05/21 Вск 01:08:42 2039295836
>>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 2039411837
>>2038724
А что выбирать thrfead safe или Non Thread Safe ?
Аноним 23/05/21 Вск 10:07:18 2039427838
Аноним 23/05/21 Вск 10:31:29 2039448839
>>2038724
>распаковать в папку, добавить эту папку в PATH

Как добавить?
Аноним 23/05/21 Вск 10:57:49 2039489840
1234.jpg 113Кб, 634x518
634x518
>>2039448
Все разобрался, но у меня теперь нету php.ini
Аноним 23/05/21 Вск 11:00:15 2039491841
zaebalo.jpg 228Кб, 1010x726
1010x726
Как фиксить?
Аноним 23/05/21 Вск 11:22:21 2039522842
>>2039489
Пробовал восьмерку, там тоже нет
Аноним 23/05/21 Вск 15:35:48 2039774843
загружено (1).m[...].jpg 91Кб, 576x758
576x758
Аноним 23/05/21 Вск 17:55:27 2039944844
Валера, похапе на винде - это путь по хуям в никуда.
Аноним 23/05/21 Вск 19:57:40 2040118845
>>2039774
Поставь виртуалку с линуксом,если конечно у тебя не старое железо
Аноним 23/05/21 Вск 21:58:56 2040223846
>>2040118
На Винду лучше wsl накатить, правда докер ебется с памятью но шо поделать
Аноним 23/05/21 Вск 22:31:59 2040250847
>>2040118
>>2040223
Проще поставить убунту рядом с виндой и не ебать мозг ни себе ни людям
Аноним 23/05/21 Вск 23:03:43 2040286848
>>2040250
и шоб отвалился вай-фай,блютуз и сетевуха как у меня?
Аноним 24/05/21 Пнд 02:45:18 2040426849
Аноним 24/05/21 Пнд 05:25:09 2040444850
>>2030434
Разговоры из разряда "нет хлеба - ешьте пирожные".
Нужно быть достаточно прошаренным чтобы выкупить на собесе что тебе пиздят. И нужно быть достаточно богатым, чтобы тут же на изичах уволиться и сидеть без зарплаты условные пол месяца, пока ищешь другой вариант. Да и в целом, если ты можешь себе позволить выбирать работодателя, то для тебя как минимум весь российский рынок открыт.

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

Аноним 24/05/21 Пнд 09:59:20 2040562853
>>2040286
За почти пять лет на убунте только однажды после обновления отвалился звук.
Аноним 24/05/21 Пнд 10:01:28 2040565854
Можно ли гонять запросы между скриптами?
Аноним 24/05/21 Пнд 10:04:30 2040573855
>>2040495
Ни разу с этой херней не сталкивался, но возможно тебе нужно смотреть в сторону php://input
Аноним 24/05/21 Пнд 10:04:53 2040574856
Аноним 24/05/21 Пнд 10:24:24 2040601857
Аноним 24/05/21 Пнд 10:28:07 2040609858
>>2040601
Так он же не написал, что за работа. Может его взяли на пару сотен вордпрессобитриксы колупать
Аноним 24/05/21 Пнд 10:29:11 2040611859
Аноним 24/05/21 Пнд 10:36:53 2040625860
>>2040601
С чего ? Если аноны годами не могут вкатиться - это я уже хз, как надо так стараться. У меня заняло это столько времени, с учетом того, что я прогал 6-7/7 по 8 часов стабильно. Так что этот срок я еще считаю долгим.

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

Хотя зачем вообще боту что-то отвечать?
Аноним 24/05/21 Пнд 11:49:30 2040772863
>>2040625
А по каким курсам/материалам вкатывался? Что на собесе спрашивали?
Аноним 24/05/21 Пнд 12:01:50 2040792864
Аноним 24/05/21 Пнд 12:03:22 2040793865
>>2040772
Разговариваешь с троллем.
Аноним 24/05/21 Пнд 12:41:58 2040849866
>>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 2040860867
>>2040849
Забыл добавить, про паттерны были вопросы на двух собесах вроде. На одном простые вопросы, какие виды есть, какие знаешь. На другом, где душили про солид, там уже намного глубже в эту тему углубились, но опять же со слов техлида - джунов у них с этим не дрочат, но я сам попросил х2.
Аноним 24/05/21 Пнд 13:58:30 2041011868
>>2040849
Скрин тасков из джиры или пиздабол.
Аноним 24/05/21 Пнд 14:50:23 2041108869
>>2041011
Может тебе еще скрины диалогов из слака, скрины проекта и до кучи фотку договора скинуть ? Или ты думаешь, что мне заняться больше нечем, как доказывать что-то какому-то анону ?
Живи просто дальше в свое мирке, в котором тебя все хотят наебать.
Аноним 24/05/21 Пнд 14:55:27 2041113870
>>2041108
Ты забыл где ты находишься? Пруфай хоть чем-нибудь или пиздабол официально.
Аноним 24/05/21 Пнд 15:35:26 2041168871
Аноним 24/05/21 Пнд 15:36:48 2041170872
>>2040473
>Вкат занял ~5.5 месяцев практически с нуля
Вполне адекватный срок. Не понимаю, с чего здешние неосиляторы бугуртят. Сидели бы учили фреймворк и код писали, глядишь тоже вкатились бы
Аноним 24/05/21 Пнд 15:53:01 2041201873
Аноним 24/05/21 Пнд 15:53:34 2041202874
>>2039411

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

>>2039427

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

>>2039489

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

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

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

>>2040118

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

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

>>2040250

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

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

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

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

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

>>2040860

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

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

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

Аноним 24/05/21 Пнд 16:17:33 2041241879
>>2041239
Из какого года капчуешь? Синглтон давно считается антипаттерном наряду с сервис локатором и реестром.
Аноним 24/05/21 Пнд 17:07:54 2041331880
>>2041205
>Мб здешние вкатуны просто бояться по собесам ходить, может у них знаний уже вполне достаточно для вката, но они об этом не знают
По ощущениям здешние вкатуны либо тратят недостаточно времени на вкат, либо прикладывают усилия не туда. Они учатся программировать с самых азов, когда нужно быстро херачить круды на фреймворках. А программировать можно учиться в процессе работы по мере усложнения задач
Аноним 24/05/21 Пнд 17:10:05 2041334881
>>2041239
>давайте обсуждать реально применяемые паттерны
Давайте поговорим про Актив Рекорд
Аноним 24/05/21 Пнд 18:17:24 2041467882
>>2041334
Ловите ларавельщика
Аноним 24/05/21 Пнд 19:55:22 2041640883
nd86798.jpg 317Кб, 1200x801
1200x801
Аноним 24/05/21 Пнд 20:03:07 2041651884
алгоритмы не спрашивают на собесах?
Аноним 24/05/21 Пнд 20:14:30 2041664885
>>2041205
Не представляю каким надо быть терминатором чтобы по 8-10 часов сидеть пыхтеть, я уже через полчаса хочу расслабится и посомтреть аниме\чекнуть социалки и т.д.
Аноним 24/05/21 Пнд 20:15:25 2041667886
>>2040625
Либо толсто/зелено, либо зафартило.
Впрочем не важно.
Аноним 24/05/21 Пнд 20:17:00 2041669887
>>2041205
Хуй знает какогь уровня ты зелень, и семен , но то что нужно подскакивать и по собесам ходить - факт железный.
Аноним 24/05/21 Пнд 20:28:54 2041686888
>>2041239
В PHP есть php://input, но фактически он будет читать данные из памяти (PHP сначала загружает весь запрос в память, а только после запускает твой скрипт).
>>В PHP есть php://input, но фактически он будет читать данные из памяти
>>PHP сначала загружает весь запрос в память, а только после запускает твой скрипт
Точно?
Я не встроенный использую - а апач, но логика такая же? То есть по дефолту я как в ноде не могу читать объект потока по кускам, сразу pipe-ая его в другой какой нибудь поток?
Про php://input и обертки читал. Но вот с файлами к примеру, или вводом/выводом в системные потоки по идее все обстоит обычно, можно открыть два дискриптора потока, и по кускам из файла например пайпить в консольный вывод, как я понимаю. И в response так же есть возможность по кусочкам заливать данные, опять же в psr7 , есть какие то stream интерфейсы.


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

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

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

>>2041667
На счет подфортило или нет - тут я не скажу, ибо было только 4 собеса, с каждого в итоге дали оффер. Как буду перекатываться в другую компанию, там будет видно.
Аноним 24/05/21 Пнд 21:22:51 2041737890
Аноним 24/05/21 Пнд 22:10:33 2041781891
>>2041686
>У того же Зандстры синглтоон превращается в реестр, который со совими статическими методами плавно превращается в сервис локатор.
И что? Если Зандстра использует эти антипаттерны, то они внезапно перестали быть подобием глобальных переменных?
Аноним 24/05/21 Пнд 22:13:43 2041783892
Прошу совета у бывалых, какой рейт на апворке ставить?
Аноним 25/05/21 Втр 00:01:32 2041882893
>>2041664
>Не представляю каким надо быть терминатором чтобы по 8-10 часов сидеть пыхтеть
Я пыхтел по 4-6 часов, т.к. на большее не хватало. Соответственно вкатывался подольше.
Ща на работе когда тасок срочных нет, можно знатно поебланить
Аноним 25/05/21 Втр 00:03:04 2041886894
>>2041695
>4 собеса, с каждого в итоге дали оффер
Очевидный успех. Трудно только первый оффер получить, потом полегче, выбора больше, отношение не как к залетышу
Аноним 25/05/21 Втр 11:40:56 2042237895
1621932142151.png 145Кб, 300x199
300x199
Аноним 25/05/21 Втр 13:43:10 2042348896
>>2041467
>>2042237
Что еще в пыхе используют помимо активрекорда и датамеппера?
Аноним 25/05/21 Втр 18:05:41 2042725897
Перепощу свой вопрос из БД треда. Тут поживее. Мож кто знает.


Аноны, помогите вэб-макаке кое что понять.
Мне нужно помененять в базе данных даты со сдвигом по времени назад на 5 минут. Я использую такую команду:
... date = date - INTERVAL 5 minute
проблема в том что значение интревала - не статичные 5 минут, со сдвигом в 5 минут.
Тоесть первая запись приема с 08:00 до 08:20, вторая 08:20 до 08:40, потом третья 08:40 до 9.00 и так до 12 часов. Тоесть сдвиг в 5 минту.
Мне нужно уже существующие записи перекроить на 15 минутный интервал.
первый с 08:00 до 08:15,
второй с 08:15 ( тут минус 5 минут относительно прошлого значнеия 08:20 ) до 08.30 ,
третий с 08.30 ( а тут уже минус 10 минут относительно прошлого значения в ) до 08.45,
и т.д.
тоесть шаг изменения времени растет , и просто у каждой даты отнять 5 минут - не вариант
В принципе в рамках чистого sql можно ткое реализовать? Нужно что то типа переменной меняющейся после обновления каждой строки.
Аноним 25/05/21 Втр 20:14:32 2042919898
>>2042348
Пиши с PDO чистые запросы
Аноним 25/05/21 Втр 20:27:14 2042929899
>>2042919
Потом такой кайф разгребать трехатажный скл и параметризировать его. Тьфу бля
Аноним 25/05/21 Втр 21:04:24 2042974900
>>2042725
В Postgres такое изи сделать: сначала рекурсивным запросом формируешь таблицу со сдвигами, потом UPDATE FROM и все. https://dbfiddle.uk/?rdbms=postgres_13&fiddle=3acd482552e339836e82cde1b28a69e9

А вот в MySql до восьмой версии только формировать запрос сразу со значениями. А потом INSERT ... ON DUPLICATE KEY UPDATE
Аноним 25/05/21 Втр 22:01:24 2043054901
>>2042725

Это проще сделать скриптом на PHP (или, к примеру, на Питоне, если тебе не нравится простой и удобный PHP).

Также, ты можешь вычислить сдвиг. Для начала первой записи он будет 0 минут (было 08:00 - стало 08:00), для второй - минус 5 минут (было 08:20 - стало 08:15), для третьей - минус 10 минут (08:40 -> 08:30) и так далее. То есть 5 минут умножить на номер записи. Номер записи можно вычислить как время начала минус 08:00 поделить на 20 минут.
Аноним 25/05/21 Втр 22:02:31 2043057902
>>2042974

Тут можно математически по времени начала вычислить номер приема, и посчитать его новое значение.
Аноним 26/05/21 Срд 14:45:12 2043645903
>>2040849
Читаю про собесы и прям грустно становится. Надо тоже начать откликаться, но понимаю, что завалюсь на первом же вопросе. Хоть и пишу всякие проектики, но не знаю вообще нихуя.
Аноним 26/05/21 Срд 14:50:12 2043654904
>>2043645
Прям про солид не расскажешь и физбаз не решишь?
Аноним 26/05/21 Срд 15:09:40 2043684905
>>2043654
Ну с этим еще справлюсь
Аноним 26/05/21 Срд 16:21:15 2043796906
>>2041695
Анон, рад за тебя. Чему посоветуешь уделить внимание вкатышу, чтобы не обосраться на собесах?
Аноним 26/05/21 Срд 16:24:36 2043804907
Похаписты, не заебывает ли вас эта работа? Можно ли рассматривать пых как стартовый вариант с последующим переходом на другие смежные технологии, стеки? Вообщем каков карьерный путь пхп-разраба?
Аноним 26/05/21 Срд 16:28:12 2043809908
>>2043804
Меня не заебывает. Пишу апи для мобильных казуалок и приложений, все достаточно просто и без всякой там верстки. Вот подумываю го выучить и съебывать.
Аноним 26/05/21 Срд 16:36:06 2043834909
>>2043809
Хорошо если не заебывает. Тоже буду в пых вкатываться наверное, только в него и получается.
Аноним 26/05/21 Срд 16:37:50 2043840910
>>2043684
Ну так и че боишься? На 90% собесах это и спрашивают + про опыт работы, интересные нет проекты и задачи
Аноним 26/05/21 Срд 16:42:56 2043851911
>>2043804
>не заебывает ли вас эта работа?
Заебывает легаси ковырять. Но оно везде, это легаси

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

>Вообщем каков карьерный путь пхп-разраба?
Как и у любого другого бекендера. Чисто технический джун-мидл-синьор, а дальше можешь в руководство податся: лид, техдир, сто, и т.д.
Аноним 26/05/21 Срд 16:46:33 2043857912
>>2043851
Не совсем корректно вопрос сформулировал я. Я рассматривал фронтенд, но без опыта сложно пробиться. А вот в пых проще. Думаю с опытом пыха, поболее шансов будет. Или я не прав?
Аноним 26/05/21 Срд 16:48:01 2043860913
>>2043851
>Как и у любого другого бекендера. Чисто технический джун-мидл-синьор, а дальше можешь в руководство податся: лид, техдир, сто, и т.д.

А по деньгам у пыхача как в сравнении с другими бэкендерами? С питонистами и джавистами к примеру.
Аноним 26/05/21 Срд 16:49:15 2043862914
>>2043857
>Я рассматривал фронтенд, но без опыта сложно пробиться
Мне кажется наоборот, спрос выше, а большинство соискателей такие же вкатыши после курсов.
>>2043860
Меньше.
Аноним 26/05/21 Срд 16:53:14 2043867915
>>2043862
Спасибо анон. И всего наилучшего тебе.
Аноним 26/05/21 Срд 17:00:48 2043878916
>>2043862
>Меньше.
Процентов на 10-20 меньше же, судя по всяким статам, правильно?
Аноним 26/05/21 Срд 17:04:21 2043886917
>>2043857
Щас на пыхе много легаси. Кабанитые разрабы ливают на модные стеки. А легаси кому-то надо поддерживать, так что активно набирают джуномидлов, пох даже если наврешь об опыте. Всё равно придется разбираться в древнем говне, пока не начнешь таски закрывать
Аноним 26/05/21 Срд 17:14:50 2043899918
Аноним 26/05/21 Срд 17:18:08 2043903919
>>2043899
Так наоборот. Из пхп люди укатываются, но работы меньше не становится, т.к. легаси кода полно.
Если легаси не пугает, то велкам
Аноним 26/05/21 Срд 17:22:01 2043910920
>>2043809
Вкатился в ГОвно в дополнение к похапе весной 19-го года. Не выдержал даже двух месяцев, выкатился и больше этот гной даже близко видеть не могу и никому не советую.
Аноним 26/05/21 Срд 17:25:01 2043916921
>>2043910
а что тогда посоветуешь?
Аноним 26/05/21 Срд 17:39:13 2043938922
>>2043916
Даже не знаю. Некоторым и го нормально заходит. Лично я продолжаю спокойно пилить всякие црмки на симфе и не думаю никуда выкатываться. Кроме пыхи и го пробовал писать бэкенды на ноде и питоне - не понравилось хотя и бешенства не испытывал, как в случае с го. На досуге пилю пет проект на спринге, но пока без цели переката
В плане синтаксиса очень нравится шарп, но мне кажется, что с количеством вакансий на нем все печально
Аноним 26/05/21 Срд 17:49:21 2043965923
>>2043910
Ты наверное попал к бывшим пехапешникам, которые большие приложения с кучей бизнес логики на го пытались писать. го не для этого создан, суки
Тоже попал в подобное, поработал немного, разосрался с лидом и ушел обратно на пых
Аноним 26/05/21 Срд 17:51:58 2043971924
>>2043938
Тоже шарп нравится, но кушать хочется. Поэтому пока, смотрю то что доступно.
Аноним 26/05/21 Срд 17:53:04 2043976925
>>2043938
Часто работу меняешь? Или в одном месте работаешь, и просишь повышения?
Аноним 26/05/21 Срд 19:43:57 2044188926
>>2043965
Про развесистую бизнес-логику на го - в точку! Это ад. На нем хорошо писать что-нибудь тупое, но резкое и быстрое как понос.

>>2043976
За четыре с половиной года работал в трех разных местах, на последнем уже около двух лет
Аноним 26/05/21 Срд 19:44:37 2044190927
Для онлайн игры на пхп нужен брокер сообщений?
Аноним 26/05/21 Срд 20:03:57 2044208928
Аноним 26/05/21 Срд 20:08:37 2044210929
>>2044208
Пошаговая.Мне сказали, что вебсокеты необязательны.
Или на пхп такого нет?
Аноним 26/05/21 Срд 20:21:31 2044218930
>>2044210
Если пошаговая, то можно хоть на голом пхп делать + лонгполлинг для обновлений на клиенте
Аноним 26/05/21 Срд 20:22:05 2044219931
>>2044210
Ну и брокер сообщений там ни к чему
Аноним 26/05/21 Срд 20:27:04 2044229932
>>2044218
А ДДОС сам себе не получиться?
Аноним 26/05/21 Срд 20:43:06 2044245933
>>2044229
Нормально лонг поллинг сделай и не будет ддоса
Аноним 26/05/21 Срд 21:08:37 2044268934
>>2039944
Почему это? Все что можно делать с ним на линухе можно сделать и на винде
Аноним 27/05/21 Чтв 07:37:14 2044548935
Screenshot4.png 46Кб, 1032x549
1032x549
Screenshot5.png 28Кб, 501x429
501x429
Screenshot7.png 29Кб, 527x256
527x256
Screenshot6.png 11Кб, 933x428
933x428
>>1998470 (OP)
Проверьте кто-нибудь задачу про экранирование, заранее спасибо.
Аноним 27/05/21 Чтв 08:53:41 2044569936
>>2044548
Забыл на третьем пике параметры ENT_QUOTES указать.*

самофикс
Аноним 27/05/21 Чтв 09:24:11 2044602937
Screenshot8.png 35Кб, 603x307
603x307
>>2044548
И еще чтобы блок с текстом выводился только при нажатии на ссылку*

самофикс
Аноним 27/05/21 Чтв 14:17:33 2045026938
Аноним 27/05/21 Чтв 14:37:32 2045063939
16044578053960.jpg 90Кб, 900x900
900x900
Был сегодня на очередном собеседование в оптовой торговой конторе в промзоне, 7 км за МКАД-ом (хотя офис приличный). Такие активно автоматизируются сейчас (с довольно нормальными окладами).

Профессионалы в торговле и складском учёте, в ИТ они достаточно осторожны и, видимо, привыкли к потоку вкатывальщиков. Достаточно простые задачи преподносят как инновации и ждут серьёзного или восторженного отношения к ним.

Вряд ли договоримся, хотя кто знает. На следующем собесе буду посерьёзнее, раз народ этого ждёт. И надо больше рассказывать самому, т.к. они походу не знают, что спрашивать.
Аноним 27/05/21 Чтв 14:55:24 2045101940
photo2020-05-27[...].jpg 58Кб, 492x611
492x611
>>2044210
Всё-таки, зависит от динамики ходов.
Если это что-то типа "героев", где каждый ходит по 5 минут -- то задержка неважна.

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

Исключение -- если это пет-проект типа клуба любителей настолок 40+, тогда наверн всем пофигу.
Аноним 27/05/21 Чтв 16:46:53 2045243941
Сотня нефти.png 137Кб, 400x173
400x173
>>2040849
Годный пост, форумчанин, спасибо за наводку на учебник, как раз такой искал.
Аноним 27/05/21 Чтв 16:48:47 2045249942
Аноним 27/05/21 Чтв 16:56:30 2045263943
Аноним 27/05/21 Чтв 18:17:33 2045379944
>>2045263
Этот еблан даже ссылку на гитхаб не дал.
Код с виду хуевый. Подробнее не ознакомиться.
Зачем-то через одну строку пропускает - нет, чтобы в иде настроить междустрочный интервал.
А судя по длинне видосов, он там тугодумит.
Ну и нужно тебе такое? Лучше Елисеева навернуть, он там хоть много кода пишет и по ходу поясняет все решения
Аноним 27/05/21 Чтв 18:26:47 2045394945
Блять кому не похуй как автолоадер работает, нахуя такую еботу спрашивать на собесах блять.
Аноним 27/05/21 Чтв 18:57:40 2045432946
>>2045394
А что еще тебя спрашивать? Про солид которого ни в одном проекте нет? Или кишочки фреймворка?
Аноним 27/05/21 Чтв 19:07:42 2045442947
>>2045432
бло я б прост спросил чем человек занимался на проекте конкретно, разрабатывал ли архитектуру, почему такую выбрал и т.д.
Это гонево по справочнику пыха и да, кишков фреймворков ЧТО ТАКОЕ СЕРВИС-КОНТЕЙНЕР? вымораживает, я уже хотел просто всю эту хуйню распечатать и сидеть тупо вычитывать, но слава богу уже нашёл где вкалывать за гроши.
Аноним 27/05/21 Чтв 19:09:17 2045445948
>>2045101
лол,угадал-до 1 минуты ход
Аноним 27/05/21 Чтв 21:07:30 2045625949
0A0TPBCbc2o.jpg 101Кб, 720x1080
720x1080
>>1998470 (OP)
Аноны, мне нужно научиться делать простейшие веб-страницы с формами для обновления и редактирования таблиц в БД (либо мускуль, либо какой-нибудь из таймсириес движков), возможно с авторизацией. Для себя, для внутреннего пользования в небольшой конторе.
Посоветуйте актуально руководство для наиболее быстрого вката в это дело. Опыта с пхп не было, но думаю, что это самый подходящий инструмент для написания такой логики.
Аноним 27/05/21 Чтв 21:19:36 2045640950
Аноним 27/05/21 Чтв 21:21:46 2045643951
>>2045640
Это не ответ на мой вопрос. Надеюсь, ты не программист
Аноним 27/05/21 Чтв 22:09:27 2045695952
>>2045625
Таких организмов даже нахуй лень посылать.
Аноним 27/05/21 Чтв 22:16:16 2045703953
>>2045643
Ну ищешь статейки по пхп,выполняешь задачки а потом гуглишь how to
Аноним 27/05/21 Чтв 22:18:07 2045707954
какие каналы посоветуете новичку для просмотра на ютабе?
> желательно не времен палеозоя
Аноним 27/05/21 Чтв 23:10:37 2045782955
изображение.png 118Кб, 696x470
696x470
>>2045695
Ладно, давай тогда я. Пошел нахуй

>>2045703
Задачки в 99.9% случаев это просто задачки на знание управляющих конструкций. Их я себе представляю.
Мне нужно сразу чтоб практика была
Что-то типа пика, но я не знаю, норм это книженция или нет
Аноним 27/05/21 Чтв 23:15:14 2045791956
>>2045782
Короче,ты должен знать базу-это 100%
Дальше просто гуглишь каждую задачу,можешь здесь уточнять.
А так начни с клепания формочки и отправки запроса к БД,получения ответа.Ну узучи SQL
Потом сделать форму и систему регистрации(с валидацией) и тд
Аноним 28/05/21 Птн 00:05:20 2045893957
какие дистры линукс юзают, в продакшене?
Аноним 28/05/21 Птн 09:16:05 2046091958
>>2045782
Возьми какой-нибудь вордпресс и клепай свои формочки. Хотя я сильно сомневаюсь, что даже это по силам дегенерату, не умеющему в гугл
Аноним 28/05/21 Птн 10:17:01 2046127959
>>2045893
RHEL/CentOS, Debian, SUSE. Причем тут /pr/ - ума не приложу.
Аноним 28/05/21 Птн 10:26:40 2046136960
>>2046091
>Возьми какой-нибудь вордпресс
1. Это полнейший оверинжениринг для задачи "создать форму для обновления записи в бд". Надеюсь, ты не программист.
2. Требует изучения классов и методов самого WP, что, разумеется, совершенно избыточно и не нужно для моих задач.
Спойлер не открывал, там ничего умного все равно не будет. И пожалуй еще раз, если с первого не дошло: пошел нахуй.

>>2045791
>Короче,ты должен знать базу-это 100%
Это есть
>Дальше просто гуглишь каждую задачу,можешь здесь уточнять.
Вангую, что будет проблема как раз из-за отсутствия общего повествования. Хотя надрать кусков из разных мест это, конечно, классика
Аноним 28/05/21 Птн 10:39:27 2046148961
Аноним 28/05/21 Птн 11:17:13 2046187962
Прошел я учебник из ОП поста, поповторял за ютубом пару проектов и возомнив нифига-себе экспертом, начал слать резюме на всякие стажировки.

В итогу у меня один собес сегодня, 2 на следующей неделе и одно тестовое.

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

Видимо идея слать резюме была не самой лучшей. Облажаюсь сегодня просто жестко(
Аноним 28/05/21 Птн 11:20:26 2046193963
>>2046187
>Облажаюсь сегодня просто жестко(
Ну и что? Бывает.
Впереди еще будет 50 собесов.
Аноним 28/05/21 Птн 12:22:22 2046281964
Аноним 28/05/21 Птн 12:24:32 2046284965
>>2046187
Лучше напиши когда пройдешь о чем спрашивали в деталях.
Аноним 28/05/21 Птн 12:26:29 2046287966
>>2046187
>В итогу у меня один собес сегодня, 2 на следующей неделе и одно тестовое.
Для начала неплохо. Главное вопросы с собесов и задачи записывай, потом пройдешь, если офер не дадут

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

>Видимо идея слать резюме была не самой лучшей. Облажаюсь сегодня просто жестко(
Ты правильно сделал. Нужно ходить на собесы, проваливаться, доучивать и снова на собесы
Аноним 28/05/21 Птн 12:27:09 2046292967
>>2046136
>Это полнейший оверинжениринг для задачи "создать форму для обновления записи в бд".

Поставь какой-то phpmyadmin, и пусть редактируют базу. Можешь еще разных юзеров создать, дать права на чтение и запись определенных таблиц. Я так понимаю что вам для какого-то внутреннего учёта какого-то говна. В будущем сможешь к бд прилепить какой-то свой интерфейс если захочешь
Аноним 28/05/21 Птн 12:30:43 2046299968
>>2046284
Смысл спрашивать такое? На каждом собесе по разному.

Самое частое: Солид, паттерны, архитектура, физбаз, сортировка/поиск/другая изи алго задачка, скл запрос, рассказ про опыт
Аноним 28/05/21 Птн 12:31:35 2046300969
>>2046136
Wordpress примитивнейшая хуйня, сделанная так, чтобы даже такой умственно отсталый как ты, смог начать клепать говно через пару десятков минут после вката. Ты все равно лучше и проще не сделаешь.

Я тебя нахуй не посылал, но раз ты так хочешь, то пошел нахуй.
Аноним 28/05/21 Птн 12:33:27 2046305970
Аноним 28/05/21 Птн 12:39:54 2046317971
>>2046305
Что душнила? Я прошел собесов 50 валился на низких софтах
Каждый раз по-разному проходит. Где-то могут по душам поговорить, где-то дрючить по теории. Никогда не угадаешь к кому попадешь на собес
Аноним 28/05/21 Птн 13:43:09 2046416972
изображение.png 154Кб, 286x355
286x355
>>2046300
>Wordpress примитивнейшая хуйня, сделанная так, чтобы даже такой умственно отсталый как ты, смог начать клепать говно через пару десятков минут после вката. Ты все равно лучше и проще не сделаешь.
Слишком толсто. У меня несколько сайтов на WP и я прекрасно знаю, как он работает. Чтобы что-то писать с интеграцией в сам WP, надо понимать именно обвязку WP; ну это очевидно любому, кроме тебя с твоим-то двухзначным IQ.
>Я тебя нахуй не посылал
Держи в курсе. А лично я и в третий раз не поленюсь

>>2046292
Это все понятно, но хочется красиво и без лишнего говна, буквально в несколько полей. Так-то и навикатом каким-нибудь подключаться можно.
Ну в общем я понял, почитаю какую-нибудь хуйню с пика или с >>2045782
Судя по содержанию, там раскрыто то, что мне нужно - ААА и связка с базой
Аноним 28/05/21 Птн 13:48:37 2046422973
>>2046187
>открыл известный многим список "250 вопросов для пхп собеса"
Дай ссылку
Аноним 28/05/21 Птн 13:55:13 2046429974
Аноним 28/05/21 Птн 14:16:07 2046466975
>>2046429
>Назовите различия между nginx и Apache
Интересно, ответ "nginx я пользовался, а апачи нет" сойдет?
Аноним 28/05/21 Птн 14:33:38 2046497976
>>2046416
Это достаточно старая книга еще времен php5. Потом придется подтягивать фишечки php7-8
28/05/21 Птн 14:49:25 2046516977
>>2046127
>Причем тут /pr/ - ума не приложу.
Пыхомакака должна быть и девопсом, и фронтом, и бэком, и дизайнером, и нодистом, и гофером, и охуенным кабанчиком. И это всё за зарплату, меньшую в два раза чем у любого из перечисленных.
Аноним 28/05/21 Птн 15:46:12 2046645978
>>2045625
Про вордпресс лучше не думай, это легаси-движок для блогов/новостных изданий.

CRUD-ы очень быстро делаются на Symfony, только вот потом их модификация требует навыков.

Поэтому, проще сначала разобраться с чистым PHP:
https://www.php.net/manual/ru/reserved.variables.php
https://www.php.net/manual/ru/pdo.query.php

Выйду на пенсию -- запилю учебник.
Аноним 28/05/21 Птн 16:47:08 2046751979
>>2046497
Ну да, я просто для примера привел

>>2046645
Естессно совет про вп был мимо.
А сразу в симфони можно вкатиться или там нужно глубокое понимание ООП™?
Если что, писать что-то еще на пэхэпэ не планирую
Аноним 28/05/21 Птн 16:59:46 2046774980
>>2046751
>А сразу в симфони можно вкатиться или там нужно глубокое понимание ООП™?
Можно.
Насобираешь тонну подводных. Если выживешь - человеком станешь
Аноним 28/05/21 Птн 17:00:11 2046776981
аноны, хелп, пожалуйста.
есть арай, раньше был через обычную базу с SELECT итд, где можно было прописать все нужные критерии до селекта.
но сейчас все идет кучей и джейсоном.

суть. есть арай в котором есть id_name, email, region.
и вот в email есть не уникальные записи, а мне надо вытянуть данные чтобы не было повторов. как сделать?

я пытался пропустить через 2 foreach и in_array, неуникальных становиться меньше, но все равно не 1.
есть какой-то метод в пхп для этого? без js.

выглядит как-то так:
Array (
[1] => Array ( [id] =>23345 [email] => test1@test.com [region] => 1
[2] => Array ( [id] =>664 [email] => test2@test.com [region] => 1
[3] => Array ( [id] =>74 [email] => test3@test.com [region] => 1
[4] => Array ( [id] =>32 [email] => test1@test.com [region] => 1
[5] => Array ( [id] =>8888 [email] => test4@test.com [region] => 1
)
Аноним 28/05/21 Птн 17:11:46 2046800982
>>2046776
Всё это делается православным foreach-ем.
Вопрос в том, что ты понимаешь под уникальностью. Какое поле должно быть уникально.
Как вариант, можешь проиндексировать список по имейл. При добавлении в результирующий список проверять, занят ли такой имейл - если занят, то не добавлять строку.
Аноним 28/05/21 Птн 17:14:33 2046804983
>>2046516
А какие ещё варианты вкатышу?
Аноним 28/05/21 Птн 17:16:41 2046811984
>>2046317
Собес много времени занимает? Целый день на него теряешь? В том смысле интересуюсь, отпрашиваться ли со своей работы на собес..
Аноним 28/05/21 Птн 17:21:15 2046824985
>>2046811
Обычно от часа до 3. Обычно в рабочее время.
Аноним 28/05/21 Птн 17:22:46 2046827986
>>2046800
что-то не так с моим православным форечем,
на тестовых, где мало даных, все ок, но как подлючаю сервис, то не работает.
но количество уменьшаеться, в некоторых мейла с 200+ до 30. хотя все 200 одинаковы.
Аноним 28/05/21 Птн 17:25:15 2046832987
>>2046811
С херкой - минут 15.
Технический 1-1.5 часа
Если ты на удаленке, то даже отпрашиваться не нужно.
Аноним 28/05/21 Птн 17:25:59 2046833988
>>2046827
Нужно по конкретным кейсам дебажить, почему он дубли оставляет.
Без кода и тестовых данных мы не разберемся
Аноним 28/05/21 Птн 18:34:22 2046874989
>>2046776
>арай
это что за новояз?

"вытянуть" из БД -- используй либо SELECT DISTINCT,
либо GROUP BY `уникальноеПоле`

вы чо ему советуете
Аноним 28/05/21 Птн 21:24:59 2047221990
>>2045249
Я офис выбрал. Хоть и удаленка казалась куда ближе в плане своих плюшек и т.д. Со слов других людей - джунам на удаленке намного сложнее, нежели в офисе. Тут скорее уже зависит от того, какие конкретно у тебя приоритеты, анон. В офисе на начальном этапе намного больше плюшек в плане развития. Тут и софт скиллы прокачиваешь и намного проще заебывать людей разными вопросами, узнавать что-то новое от них и прочее.

Думаю, что начиная с миддла уже можно перекатываться спокойно на удаленку, если она ближе. Тут уже дело вкуса, имхо.
Аноним 28/05/21 Птн 21:25:13 2047225991
Аноны, я вот задумался - все хотя вкатиться, вкатиться.
Но ведь в этом никакого полета мысли, унылая работать на дядю. Что гречневый на заводе, что мы - суть одинакова. У нас ток кормушка красивее.
Я вдруг понял это как то кристально.
У меня есть навыки, как я могу их применить что бы хоть херня - но лично мне падала? Это не банальное "где заработать денех в интернете", это более емкое - я владею инструментом и навыками, благодаря котором я могу создавать удивительные вещи. Но сдаю это в аренду другим.
Завел себе блокнот, в который мысли какие то пишу.
Пока не написал нихуя толкового, но буду педалировать эту тему жестко.
Кто то в моем ракурсе рассуждает?
Аноним 28/05/21 Птн 23:46:33 2047373992
>>2047225
>Пока не написал нихуя толкового, но буду педалировать эту тему жестко.
На этом всё обычно и заканчивается.
А создают что-то ушлые манагеры руками других людей
Аноним 29/05/21 Суб 07:12:11 2047657993
>>2047225
Я со временем буду перекатываться в android/iOS разработку, у меня гораздо больше идей разных приложений, чем бизнеса и сайтов для него.
Аноним 29/05/21 Суб 09:51:38 2047688994
>>2047225
Ну понятное дело что прогер это такая же работа как сантехник или пожарный с медсестрой, это сейчас из-за хайпа что там "сидишь целый день за кампухтером и получаешь триста тыщ" из них начали делать какую-то отдельную социальную прослойку и элиту.
Аноним 29/05/21 Суб 09:52:36 2047689995
>>2046824
Блять, что можно спрашивать три часа? Даже час это пиздец как много когда есть гитхабы и можно отправить домой с тестовым.
Аноним 29/05/21 Суб 09:59:34 2047693996
kitera-dent-gwJ[...].jpg 116Кб, 816x824
816x824
Аноним 29/05/21 Суб 10:16:52 2047697997
image.png 199Кб, 679x655
679x655
>>1998470 (OP)
Встретил интересную задачу в тесте, не могу разобраться, как можно вызвать не именнованный метод класса, если бы просили создать ф-ию, то понятно, но в задании просят сделать класс.

Вот такой код приводит к ошибке "Fatal error: Uncaught Error: Function name must be a string in C:\work\SimpleClass.php:8":

class SimpleClass {
function stdout($string) {
print($string);
}
}
$obj = new SimpleClass;
$obj()->stdout('Hello');
Аноним 29/05/21 Суб 10:27:10 2047703998
>>2047689
>Блять, что можно спрашивать три часа?
На собесы походи, узнаешь. Зависит от количества спецов, которые тебя собеседуют. Если собес коллективный - то быстрее все проходит, разумеется. + на хрюшу некоторое время тратится
Аноним 29/05/21 Суб 11:13:12 2047721999
>>2047373
>>На этом всё обычно и заканчивается.
У меня не закончится, я дисциплинированный дохуя. Ща думаю в своем городе как то начать шляться по всяким бизнес тусовкам. Буду отслеживать.
Потому что сидя дома на жопе - явно никаких мыслей не придет в голову никаких. Нужен какой то контекст.
Аноним 29/05/21 Суб 11:14:57 20477251000
>>2047688
>>делать какую-то отдельную социальную прослойку и элиту.
естественно скилл-бокс как будет продавать свои курсы?

Я у меня есть и комерссы знакомые, и даже из элиты. Между кабанчиком и прогером по личным качествам огромный перевес в сторону кабанчика.
Аноним 29/05/21 Суб 11:15:17 20477261001
>>2047657
Дарт изучай, сам хочу.
Аноним 29/05/21 Суб 11:35:51 20477461002
image.png 54Кб, 696x470
696x470
Бьют ли ногами за подобное использование рефлексии? Пока енамы не подвезли сделал такую херню.
Аноним 29/05/21 Суб 11:40:32 20477491003
>>2047746
Тут есть ограничение в том, что в константах могут быть значения разных групп. У тебя тут только ивенты. Соотв если добавить другую группу констант, то их придется фильтровать.
А так прикольный способ.
Аноним 29/05/21 Суб 11:42:42 20477521004
>>2047697
Надеюсь, у них нет такого в продакшене.
Вообще похоже на джаваскрипт. В пхп так не принято
Аноним 29/05/21 Суб 11:43:29 20477531005
>>2047688
>элита
>не может по велению пятки купить тачку или хату
Аноним 29/05/21 Суб 11:48:17 20477621006
>>2047697
Гугли про __invoke() и fluent interface
>>2047749
Добавление других групп констант не планируется, другие события будут жить в отдельных классах
Аноним 29/05/21 Суб 13:47:16 20478521007
Если я хочу манипулировать юзерами динамично через жс в админке,то после извлечения данных надо все в JSON перегнать?
Аноним 29/05/21 Суб 14:11:55 20478951008
Аноним 29/05/21 Суб 15:26:53 20480151009
>>2047762
спасибо, не знал про __invoke
Аноним 29/05/21 Суб 15:34:19 20480251010
image.png 411Кб, 504x495
504x495
Аноним 29/05/21 Суб 16:11:04 20480791011
Нужно ли полностью читать и практиковаться по этому учебнику или стоит уже переходить к основам HTML/CSS/ООП/PDO и делать приложение про список студентов?

https://phpclub.ru/mysql/doc/tutorial.html
Аноним 29/05/21 Суб 16:12:35 20480841012
Screenshot9.png 9Кб, 381x185
381x185
>>2048079
Пока вот до этого места осилил.
Аноним 29/05/21 Суб 16:53:23 20481461013
>>2048079
>>2048084
Да пофигу, можешь параллельно.
Всё зависит от твоих мозгов и таланта.
Аноним 29/05/21 Суб 17:49:20 20482221014
>>2048146
Учитывая что тут кто-то за 5 месяцев на ларавел уже на работу вкатился, а я за эти 5 месяцев только до этого дошел, слово мозг можно зачеркивать.
Аноним 29/05/21 Суб 17:52:39 20482261015
image.png 857Кб, 800x600
800x600
Аноним 29/05/21 Суб 18:38:25 20482691016
>>2048222
мб проблема с мотивацией? зачем оно тебе? что ты любишь делать вне работы?
Аноним 29/05/21 Суб 18:45:03 20482771017
Аноним 29/05/21 Суб 19:00:19 20482971018
>>2048277
тогда просто что любишь делать?
Аноним 29/05/21 Суб 19:11:55 20483151019
>>2048297
прокрастинировать за компутером
Аноним 29/05/21 Суб 19:22:52 20483281020
>>2048297
короче за ~5 месяцев погромирования из которых я минимум месяц занимался ничем я решил:
учебник опа без бонусных задач (2 бонусные решил и все);
прочитал про хттп, шаблонизацию на пыхе, решил все задачи, которые нужны для того чтобы можно было решать задачу про список студентов (непонятно как решать по замыслу автора если там требуется ООП), перешёл на подробное изучение sql (около недели потратил на выгеперечисленное);
То есть большую часть времени я просрал на решение неинтересных задач, а ещё нужно начинать вкатываться в ООП, поднатаскать CSS, кучу других трудновыговариваемых вещей и писать пет проекты.

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

Аноним 29/05/21 Суб 19:27:30 20483341021
>>2048328
а вообще наверное нужно перестать вестись на сказочников и просто делать что в моих силах
Аноним 29/05/21 Суб 19:48:22 20483571022
111.jpg 67Кб, 738x438
738x438
Обязательно такой вырвиглазный треш писать? Можно по другому как то?
Аноним 29/05/21 Суб 19:50:12 20483601023
>>2048357
Я про эхо и кавычки на каждую строчку
Аноним 29/05/21 Суб 19:54:31 20483631024
>>2048357
>Обязательно такой вырвиглазный треш писать?

Необязательно.

> Можно по другому как то?

Конечно.


>>2048360

Читай про шаблоны и шаблонизаторы, MVC и прочие паттерны.

В книге пример из рубежа 90х/00х.
Аноним 29/05/21 Суб 20:24:26 20484031025
Как строить сайт,если у него много блоков и все превратилось в лапшу?
Аноним 29/05/21 Суб 20:41:42 20484151026
>>2048403
Я не знаю как тебе помочь, поэтому поделюсь способом приготовления доширака, может быть кому-то понадобится:
1. Распаковать "Доширак", высыпать маленькие пакетики с овощами и суповой основой в контейнер ;
2. Скипятить чайник, затем налить кипяток в контейнер до отметки;
3. Закрыть крышкой и подождать 5 минут.

Приятного аппетита!
Аноним 29/05/21 Суб 20:47:27 20484251027
>>2048415
Перефразирую-я утонул в инлюдах и нейминге
Аноним 29/05/21 Суб 20:53:28 20484311028
>>2048425
Жди экспертов местных, я только щитпостить умею.
Аноним 29/05/21 Суб 20:53:57 20484321029
>>2048222
С таким прогрессом ты вкатишься, когда пхп будет чем-то вроде кобола
Аноним 29/05/21 Суб 20:55:04 20484341030
>>2048328
>То есть большую часть времени я просрал на решение неинтересных задач
Готов к реальной работе. Километры багов и однообразных формочек ждут тебя
Аноним 29/05/21 Суб 20:57:31 20484391031
>>2048357
Нет. Голый php может выступать в роли шаблонизатора.
Т.е. ты в одном файле может мешать php, html, css, js но так делать в продакшене не надо, такое только для учебных целей
Аноним 29/05/21 Суб 20:58:28 20484401032
>>2048432
Учел ваше охуенно важное мнение.
Аноним 29/05/21 Суб 20:58:32 20484411033
>>2048403
Изучать шаблонизаторы и разбивать на компоненты
Аноним 29/05/21 Суб 21:03:29 20484481034
2a0cef017d4751e[...].jpg 36Кб, 720x720
720x720
И вообще, я обязательно вкачусь, потому что я вездесущ нахуй, я выше всех ваших таймингов, нет границ в моем познании!
Аноним 29/05/21 Суб 21:07:16 20484551035
>>2048328
А чем ты недоволен-то?
Сделай простейший CRUD для студентов, покрась кнопки -- и уже можешь идти поражать воображение провинциалов ОЙТИ-магией

>>2048425
И что же ты такого понаписал, чтобы УТОНУТЬ в инклюдах на этапе изучения?

Сначала разложи всё по папкам,
потом сделай простой роутинг типа ?page=boo.php ,
потом двигайся в сторону MVC
Аноним 29/05/21 Суб 21:10:08 20484571036
>>2048455
Тут только ленивый не упоминает что за 5 месяцев уже мидлами за 300 к/наносек работают, а я все до ООП не дошёл.
Аноним 29/05/21 Суб 21:30:20 20484771037
>>2048457
Так вкатуны время тратят на всякую херь, которая в работе им не поможет на первых порах. Отсюда и замечания про 5 месяцев.
Понятно, что это вкатуны, они не понимают, что от них ждут на галере.
Вкатуны всё какие-то внутрянки пхп дрочат, ооп, мвц изобретают.
А надо круды ебашить +- как старшие коллеги по цеху.
Аноним 29/05/21 Суб 23:04:31 20485821038
>>2048432
>С таким прогрессом ты вкатишься, когда пхп будет чем-то вроде кобола

Востребованным специалистом будет. Бабок лопатой гребсти будет...

обзмеился с аналогии сука
Аноним 29/05/21 Суб 23:59:21 20486521039
>>2048457
> за 5 месяцев мидлами
очевидно же, что это нонсенс

>до ООП не дошёл
так дойди, в чём проблема
Аноним 30/05/21 Вск 00:41:37 20486981040
Недавно вкатившиеся, не желаете о выборе пыхи? Если бы выбирали сейчас, то выбрали бы пыху или с опытом сделали другие выводы? Я заебался от того что определиться не могу. Или пых или вронтенд. Ну фронт такая петушня, но и его требуют всем. Спасибо, сильно не хуесосте.
Аноним 30/05/21 Вск 01:25:43 20487311041
>>2048457
>за 5 месяцев ... я все до ООП не дошёл.

Хули там доходить-то? Ты овердохуя потратил времени на какую-то хуйню. А если думаешь, что 2-3 часа в день для вката это норм, то это нихуя не норм. И да, веди конспект. Прям как в школе. Только в электронном виде — очень сильно помогает. Не дрочи функции наизусть, для этого справочник есть. Код сниппеты полезная вещь. За 5 месяцев пиздец как реально выучить язык, PSR-* , уверенно плавать в ООП, познавать азы алгоритмов, композер с гитом использовать. Подумай дважды: либо бросай и займись чемто другим, либо заканчивай прокрастинировать.
Аноним 30/05/21 Вск 04:29:14 20487601042
>>2048731
Вы очень милый человек!
Аноним 30/05/21 Вск 04:36:56 20487611043
>>2048760
Перефразирую - иди на хуй
Аноним 30/05/21 Вск 09:25:49 20488011044
>>2048698
иди на фронт. Вакансий меньше, но оплата больше и конторы всегда адекватные.
Аноним 30/05/21 Вск 11:06:20 20488341045
>>2047746
>Бьют ли ногами за подобное
Если ты имеешь ввиду энтерпрайз разработку, то бьют в кадык с пыра.

>Пока енамы не подвезли
И "енамы" и рефлексия используются очень ограниченно и в строго отведенных для этого местах. Могу подробнее расписать если интересно.
Аноним 30/05/21 Вск 11:32:54 20488581046
>>2048834
>Если ты имеешь ввиду энтерпрайз разработку, то бьют в кадык с пыра.

За що?

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

Интересно, как ты используешь енамы в языке без енамов? Кроме псалма или возни с рефлексией ничего в голову не приходит.
Аноним 30/05/21 Вск 11:54:03 20489121047
>>2048801
А сам на php работаешь? Мне казалось наоборот, у похапэ более адекватно всё...
Аноним 30/05/21 Вск 12:04:30 20489331048
>>2048912
Нет. Часто берут пыхача и он ещё и фронт пишет за копейки. А вот если есть отдельный фронтендер, значит что контора не скупится на персонал/зп и все своим делом заняты.
Аноним 30/05/21 Вск 12:04:30 20489341049
>>2048858
>За що?
Есть технический аспект - слишком медленно работает, слишком запутанный код получается. Читать эту хуйню потом очень тяжело.

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

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

>Кроме псалма или возни с рефлексией ничего в голову не приходит.
https://3v4l.org/lOC2h
Аноним 30/05/21 Вск 12:08:11 20489371050
>>2047746
вот же ты мразь погана. Не проще сделать конфиг? Или уже как нормальные дяди заводи класс под каждое событие
Аноним 30/05/21 Вск 12:54:45 20489951051
>>2048698
Хз даже. С одной стороны особо выбора не было тогда в городе: либо 1ass, либо верстка, либо битрикс/вордпресс. Кое-как попал туда, где на фреймворках пишут.
Так бы хотел, конечно, на шарпы закатиться бекенд писать
Аноним 30/05/21 Вск 13:05:08 20490111052
>>2048995
А ты в замкадье... В дефолт-сити поинтереснее вакансий. Ну для вкатунов, не особо весело всё.
Аноним 30/05/21 Вск 13:16:07 20490451053
>>2048934
>https://3v4l.org/lOC2h
Именно для того, чтобы избавиться от этой хуйни (ручного дублирования констант в методе или массиве, возвращающем их список) я и родил свою хуйню. Я еще и дальше пошел и сделал через __callStatic, чтобы можно было вызывать UserEvents::userCreated() лол.
В итоге удалил все к ебени матери и оставил только список констант.

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

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

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


Аноним 30/05/21 Вск 13:23:41 20490571054
Аноны, что за хуйня, у каждого долбаеба в вакансии "Хорошее знание и понимание математики: аналитической геометрии, алгоритмов на графах, численных методов, математического анализа." Причем даже если вакансия не связана с геом. моделирование, анализом и т.д. Если там есть с++ то там 100% будет это
Аноним 30/05/21 Вск 13:25:15 20490621055
Аноним 30/05/21 Вск 13:25:34 20490641056
>>2049057
А хули ты думал? Будешь как миленький ворочать красно-черные деревья на собесе и урчать
Аноним 30/05/21 Вск 13:30:14 20490741057
>>2049064
Да я знал все это дерьмо, но извини когда это было! Я матаном уже столько не пользовался
Аноним 30/05/21 Вск 14:03:32 20490991058
>>2049074
Я перед собесами в обязательно порядке перелистываю "Грокаем алгоритмы" и "Дискретную математику для программистов" Хаггарти.
Аноним 30/05/21 Вск 14:11:07 20491061059
>>2049045
>ручного дублирования констант в методе или массиве, возвращающем их список
Это не дублирование. Ты не дублируешь определение констант, а определяешь новую со списком возможных вариантов.
В твоем же коде с рефлексией множество констант со значениями перечисления это подмножество всех констант класса. А работаешь ты с какого-то хуя именно со всеми константами класса, а не с конкретным подмножеством. Но это все технические детали твоего конкретного решения.

В целом речь о том зачем тебе вообще использовать список всех возможных вариантов. Я вижу только одну причину: у тебя есть строка с названием события 'user.created' и тебе нужно создать объект UserCreatedEvent. А для этого вообще не нужен концепт перечисления. Создание будет происходить в одном единственном месте. В каком-то условном сервисе CreateUserEvent или UserEventFactory и нет никакой нужды создавать для этого какой-то специальный класс перечисления.

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

>Касательно скорости работы с рефлексией, не думаю, что падение производительности будет заметным даже на фоне рядового чтения из бд
В доктрине, например, для скорости используются прокси, а не рефлексия. А тут https://github.com/myclabs/php-enum используется кэш.
Аноним 30/05/21 Вск 15:40:49 20492181060
>>2048760
>>2048761

Осуждаю ваши постиронию и грубость. Лучше доведите, где я не прав? 5-6 месяцев интенсива и ты уже уверенный в себе джун.
Аноним 30/05/21 Вск 15:45:37 20492261061
>>2049099
Нахуя? Ты на РНР «программируешь», зачем тебе что-то сложнее основных математических операторов? Когда ты последний раз что-то серьёзнее псевдослучайного генератора писал?
Аноним 30/05/21 Вск 16:04:31 20492701062
>>2049218
У ОПа в шапке написано не меньше 6-8 месяцев, understand? Какой нахуй джун?
Аноним 30/05/21 Вск 16:28:06 20493101063
>>2049270
А кто блядь?! 6-8 месяцев это с учетом освоения фреймворков js/php, выполнением учебных заданий.

Чисто язык, ООП, шаблоны, проектирование, git, composer как раз в 5 месяцев уложишься. Потому что погружение в лаву/симфони может занять ещё ровно столько же. Опять же, джун на то и джун, что в начале своего пути и знает что-то из основ.
Аноним 30/05/21 Вск 16:30:58 20493151064
Аноны, для того чтобы научиться писать бэкенд на php, лучше ведь практиковаться в написании CRUDов правильно?
Аноним 30/05/21 Вск 17:45:10 20494931065
>>2048448
Не хочешь скооперироваться?
Аноним 30/05/21 Вск 17:46:30 20494961066
Аноним 30/05/21 Вск 18:07:09 20495331067
>>2049496
А есть где нибудь задания практические, типа дана верстка, к ней надо круды написать? Гугл ничего не дает(( Или самому все придумывать и исполнять?
Аноним 30/05/21 Вск 18:24:09 20495501068
Аноним 30/05/21 Вск 18:41:58 20495811069
>>2049226
Например потому, что в тех местах, где я соглашусь работать, вопросы про алгоритмы на собесах встречаются почти всегда. Во вторых, похапе всего лишь один из языков, на которых я пишу. В третьих, тот, кто не умеет посчитать сложность алгоритма, не знаком с наиболее распространенными структурами данных, булевой алгеброй, хотя бы зачатками комбинаторики и теории графов итд., не программист, а макака ебаная.
Если ты не занимался ничем, кроме крудобесия, то не нужно проецировать свой "опыт" на всех остальных.
Аноним 30/05/21 Вск 19:00:37 20495991070
>>2049581
Тут собрались формошлепы, а ты за теорию графов и булеву алгебру какая сложность ебана в рот, кого ты удивить то решил?, лол.

Вообще, вот его высер надо перекатить в следующий тред, эталонный дебил. Пишешь свою бд в рамках курса университета? Ну пиши далее, про реляционную алгебру не забудь.
Аноним 30/05/21 Вск 19:08:40 20496121071
>>2049581
>Клуб изучающих PHP
>тот, кто не умеет
>не программист, а макака ебаная
Ты попал по адресу. Милости прошу к нашему шалашу.

Ну вот допустим если отбросить подъебки. Какой алгоритм ты реализовывал, чтобы пришлось считать его сложность? Какие структуры данных создавал и с какой целью? Понятно что на пхп это бред. Но помимо пхп, на любом из тебе известных языков.
Аноним 30/05/21 Вск 19:14:10 20496201072
>>2049310
>Чисто язык, ООП, шаблоны, проектирование, git, composer как раз в 5 месяцев уложишься
Ну если в твоем супер-режиме когда ты без перерыва 8 часов хуячишь и остаешься сконцентрированным все это время, то может быть.
Аноним 30/05/21 Вск 19:19:03 20496301073
Какое практическое применение интерфейсов и абстрактных классов?
Аноним 30/05/21 Вск 19:55:18 20496951074
>>2049620
А что собственно сложного? Ты же 8 часов не думаешь над реализацией , читай как придумывание, ты занимаешься пониманием написаного и повторения изученого.
Аноним 30/05/21 Вск 19:59:03 20496991075
>>2049630
Упрощают написание своих движков
Аноним 30/05/21 Вск 20:05:35 20497171076
>>2049695
Ну если ты копипастил с гугла решение для задач из учебника, а не сам решал, то нет проблем.
Аноним 30/05/21 Вск 20:38:31 20498021077
>>2049717
Ты не занимайся подменой понятий. Я писал про другое. Понятное дело, что решение задач из учебника может занять достаточно времени. Тут уж вовсе индивидуально. Помню несколько тредов назад чувак потратил на решение одной задачи около двух недель. Когда она решалась буквально за 2-3 часа.

И опять же повторю, прочитай мои комментарии выше ещё раз. Я писал не про решение задач, а про изучение основ.
Аноним 31/05/21 Пнд 00:52:04 20500651078
>>2049315

А задача про студентов из ОП-поста чем не CRUD? Только она с кучей комментариев и советов. А еще у нас есть задача про TestHub, там есть админка с кучей страниц, там круда предостаточно.

Аноним 31/05/21 Пнд 01:01:58 20500711079
>>2049630

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

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

Уточняй, если что непонятно.
Аноним 31/05/21 Пнд 03:42:13 20501061080
В армии 5 месяц. Работал джуном. Что можно делать полезного с телефона в свободное время? Книги, видео?
Аноним 31/05/21 Пнд 04:52:49 20501141081
>>2049802
Кто-то тут еще подменяет понятия, рассматривая "изучение основ" без решения задач... Сука...
Аноним 31/05/21 Пнд 08:59:39 20501681082
Аноны, подскаите куда копать - почему то не добавляется новый виртуальныхь хост апач в убунте.
Причем ранее я удачно добавил виртуальный хост на порт 5001
<VirtualHost :5001>
...
</VirtualHost>

сейчас пробую добавить новый сайт на порт 8000

<VirtualHost
:8000>
...
</VirtualHost>

команда -

и в браузере получаю тупо "попытка соединения не удалась"
В ufw пишет что порт 8000 открыт.
Если пишу кооманду netstat -tulpn то среде вывод нет моего 8000 порта.
Где косяк можете предположить? Сломался апач? Или я навасянил с настройками iptables.
Я не помню уже, с этой виртуалкой чето делал полгода назад, бляд
И еще - я попробовал отключить по умолчанию установленный вируал хост - сайт перестал работать, но апач2 в браузере начал открывать каталог этого сайта.


Аноним 31/05/21 Пнд 09:39:41 20501881083
>>2050106
Подучить английский, изучить computer science, по сетям почитать теорию. Если использованием техи у вас нет проблем то вообще збс.
Аноним 31/05/21 Пнд 10:24:20 20502261084
>>2050106
Если ты задаешь этот вопрос только на пятый месяц, то у меня для тебя плохие новости - ты скорее всего не будешь делать нихуя полезного остаток времени.

>>2050188
>по сетям почитать теорию
Неактуально и бесполезно.
Первое - потому что сетевики уже нахуй не нужны и их зарплаты неуклонно падают, а для других областей глубоко знать сети не нужно, максимум L2+L3.
Второе - потому что теория без практики ничего не даст и он без лаб уже забудешь все, что прочитал через пару дней. А разумеется, в армии нет нормального сетевого оборудования.

>>2050188
>Подучить английский
Тут соглашусь, норм совет. Только если есть стабильный интернет и возможность заниматься с нейтивами или хотя бы индусами с italki. Если никто не будет тебя проверять - эффект будет стремиться к нулю.
Аноним 31/05/21 Пнд 11:20:38 20502761085
>>2049011
В дс я бы сразу шел на интересующий стек
Аноним 31/05/21 Пнд 11:32:25 20502941086
>>2050276
В дс, много подводных. Если не устроишься сразу, то хуево будет.
Аноним 31/05/21 Пнд 11:42:32 20503111087
>>2050294
В дс хотя бы эти самые ваки есть. За мкадом их просто нет. А удаленка на тот момент не была особо популярной
Аноним 31/05/21 Пнд 11:46:20 20503221088
>>2050311
Единственное, что могу порекомендовать быть максимально подготовленным (готовься, как в последний раз), и как можно больше денег брать. На своем опыте говорю, неудачно приехал в дс, работаю курьером и теперь крайне сложно вкатиться.
Аноним 31/05/21 Пнд 12:26:37 20503571089
>>2050322
Я уже ни в какие дсы не планирую. Работаю пыхарем на удаленке
>На своем опыте говорю, неудачно приехал в дс, работаю курьером и теперь крайне сложно вкатиться
Соболезную.
У замкадышей не много шансов на нормальный вкат в дс. Только если он гениус, либо родители деньгами подсобят

А ты в какой стек катишься?
Аноним 31/05/21 Пнд 12:31:34 20503621090
>>2050357
Либо в пых, либо во фронтенд. Пока не могу определиться.
Аноним 31/05/21 Пнд 12:56:54 20503931091
>>2050114
Челик, чо ты такой токсичный-то ебана в рот? Ну сиди изучай на практике вывод и форматирование строк, реверсно печатай их и играйся с их регистром. Задачи навроде булевой алгеброй, массивы, циклы действительно стоят внимания ну никак не дольше пары-тройки дней. На что ты так уповаешь я откровенно говоря понять не могу.

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

Чет вы нежные какие-то, натуральные жуки-плавунцы. В обучение не можете. Хули вы там резину тяните-то? У вас либо проблема с абстрактным мышлением, а это говорит о хуевой мат подготовке, либо вы прокрастинируете попутно думая нахуй оно это мне надо и хули мне девки не дают.
Аноним 31/05/21 Пнд 13:01:36 20503991092
>>2050168
Документацию не читай
@
Комментарий оставляй

Ты xampp поди юзаешь?

Короче, в httpd.conf добавь строку

Listen номер порта

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

Перезагрузи демон апача и проверяй.
Аноним 31/05/21 Пнд 13:06:50 20504051093
>>2050226
>сетевики уже нахуй не нужны и их зарплаты неуклонно падают, а для других областей глубоко знать сети не нужно, максимум L2+L3.

Ох лол бля. Если бы ты понимал про что ты пишешь, маня.

мимо
Аноним 31/05/21 Пнд 13:24:06 20504201094
>>2050393
>токсичный
Сразу детект дебила.
Аноним 31/05/21 Пнд 14:52:48 20505131095
>>2049802
>Помню несколько тредов назад чувак потратил на решение одной задачи около двух недель. Когда она решалась буквально за 2-3 часа.

Лол, меня аж запомнили. Я кстати уже полгода не могу сделать сайт по регистрации студентов
Аноним 31/05/21 Пнд 14:53:03 20505141096
>>2050420
Лучи диареи тебе, уёбок
Аноним 31/05/21 Пнд 14:56:38 20505251097
>>2050513
Да как тебя забудешь-то? Впервые таких необучаемых увидел. Я же тебе тогда писал оставь программирование это не твоё. Отучись пока не поздно на электрика или газосварщика. И деньги всегда будут и ума особо не надо.
Аноним 31/05/21 Пнд 15:05:01 20505511098
Аноним 31/05/21 Пнд 15:05:20 20505541099
>>2050525
Какой закомплексованный программист-анальник.
Аноним 31/05/21 Пнд 15:18:14 20505811100
>>2050554
Но ты то ведь бездарь, который до сих пор не смог вкатиться. Умение работать руками тебе всегда поможет честным трудом заработать на хлеб с молоком.
Аноним 31/05/21 Пнд 15:21:20 20505881101
>>2050581
>Но ты то ведь бездарь, который до сих пор не смог вкатиться.
А ты настолько счастливый вкатун, что серишь в треде на дваче на невкатившихся. Глазки болят наверное, анальник?
Аноним 31/05/21 Пнд 15:23:59 20505941102
>>2050588
Как могу так и самоутверждаюсь.
Аноним 31/05/21 Пнд 15:24:39 20505961103
>>2050594
Счастливым вкатунам не нужно самоутверждаться, я вот о чем.
Аноним 31/05/21 Пнд 15:32:22 20506131104
С каких пор php тред стал филиалом мвп треда?
Аноним 31/05/21 Пнд 15:32:42 20506151105
>>2050596
Я счастлив, а ты так и не смог стать счастливым разработчиком. Я тебе даю ценные, дельные советы, а ты подобно макаке своими фекалиями в окружающих кидаешься.
Аноним 31/05/21 Пнд 15:32:50 20506171106
>>2050594
двачую додика, так держать
Аноним 31/05/21 Пнд 15:34:07 20506211107
>>2050615
не обращай внимание на шкилу
Аноним 31/05/21 Пнд 15:34:54 20506241108
>>2050615
Оправдывайся, засерыш. Не хотел бы стать таким как ты.
Аноним 31/05/21 Пнд 15:37:29 20506271109
>>2050624
Почему, ты так разговариваешь? Тебя не воспитывали?
Аноним 31/05/21 Пнд 15:38:09 20506291110
>>2050624
Ебало завали пожалуйста, не на пусть говорят
Аноним 31/05/21 Пнд 15:38:40 20506301111
>>2050627
Положил свой половой орган тебе в рот.
Аноним 31/05/21 Пнд 15:41:29 20506391112
>>2050630
Адрес свой напиши, герой-клавиатуры. Быстро пока я добрый.
Аноним 31/05/21 Пнд 15:42:35 20506431113
>>2050624
ты на ларе, или на симфони пишешь?
Аноним 31/05/21 Пнд 15:42:41 20506441114
>>2050639
Москва, улица Кузнецова, 3а.
>>2050629
Семен, спок.
Аноним 31/05/21 Пнд 15:43:08 20506451115
Аноним 31/05/21 Пнд 15:45:20 20506501116

>>2050645
у тебя спрашиваю, не ошибся
Аноним 31/05/21 Пнд 15:46:30 20506531117
>>2050650
Я не тот анон который сайт написать не может, я к фреймворкам еще не притрагивался.
Аноним 31/05/21 Пнд 15:46:46 20506541118
>>2050644
хорошо спасибо, пиццу закажу тебе, кстати какую тебе?
Аноним 31/05/21 Пнд 15:47:50 20506561119
>>2050653
сорян, в этих реплаях можно запутаться
Аноним 31/05/21 Пнд 15:50:41 20506581120
>>2050656
Это потому что я того анона начал защищать от этого петуха.
>>2050654
Цыпленок барбекю.
Аноним 31/05/21 Пнд 15:53:31 20506631121
>>2050658
хорошо, приятного аппетита друг
Аноним 31/05/21 Пнд 15:54:00 20506641122
Аноним 31/05/21 Пнд 16:51:35 20507881123
Котаны, подскажите, как можно реализовать такую хрень:

Вот есть у меня сервис на PHP. И допустим, он парсит некий сторонний сайт, берет оттуда данные. Проблема, что тот сайт быстро меня забанит, так как все юзеры моего сайта по сути будут действовать от IP моего сайта.

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

если, вообще, это возможно. Мне кажется на JavaScript что ли?
Аноним 31/05/21 Пнд 17:26:32 20508531124
Аноним 31/05/21 Пнд 17:31:43 20508701125
>>2050788
Найди бесплатный проксилист, и через него делай запросы.
Аноним 31/05/21 Пнд 17:42:14 20508931126
>>2050788
Так ты разные user agent используй для своих «юзеров».
Аноним 31/05/21 Пнд 18:07:15 20509361127
ssstiktok162153[...].mp4 1412Кб, 576x1024, 00:00:07
576x1024
>>2050525
Самое забавное что я итак отучился на сварщика но рвать жопу ради средней по россии тоже не мое
Аноним 31/05/21 Пнд 18:14:08 20509471128
ohio.png 117Кб, 630x630
630x630
Аноним 31/05/21 Пнд 18:17:54 20509601129
>>2050936
А напрягать голову, овертаймить и выгорать хочешь?
Аноним 31/05/21 Пнд 18:26:49 20509831130
>>2050936
братик ебатик, как ты не поймёшь, что ты сваркой в месяц можешь иметь больше, чем вкатывальщик в офисе. Никто не говорит ебашить на заводе/стройке. Первое время, конечно, стоило бы на заводе ума да опыту набраться, за год повысил бы квалификацию, а далее по авито/хуито раскидываешь объявы частный сварщик. В дачный сезон, с апреля по октябрь, у тебя отбоя не будет от сварки ворот до заборов. И постепенно набиваешь клиентскую базу с помощью визиток. Ах да, если освоишь электромонтаж — ты в среднем 200к/месяц будешь чистыми иметь. Это я про кручение кабанчиком имел ввиду. Нет заказов по сварке ебашишь электриком. А есть ещё сантехника. Ремонт вообще дело такое. Так что анон, оставь программирование и работай на себя. Главное побольше профессий освой. И не бужет нужды унижаться на собеседованиях, учить каждый день 2 новых фреймворка.
Аноним 31/05/21 Пнд 18:31:58 20509981131
>>2050983
Двачую.
Как стал интересоваться, сколько ремонт стоит, знатно прихуел. Моей сотыги не хватит на это всё
Аноним 31/05/21 Пнд 19:01:44 20510551132
>>2050983
Ой да, щас бы с пидорахами иметь дела в плане предложения услуг-их оплаты, уж лучше в офисе работать за опыт, чем с пробитой головой лежать в дачной канаве, потому что отказался принять в качестве оплаты пузырь и перетерть с ним за жизнь на полянке.
Аноним 31/05/21 Пнд 19:07:06 20510671133
>>2051055
двачую белого человека
Аноним 31/05/21 Пнд 19:08:13 20510681134
>>2051067
блядь пока писал это, возле меня ничер нарисовался, лел
Аноним 31/05/21 Пнд 19:18:43 20510811135
>>2051055
Лол, ты ещё не имел опыта наеба в офисе. Кстати, систему предоплаты и договоры никто не отменял. Ну смотри, ананас, как хочешь. Поверь, вкат не стоит того как ты себе его представляешь.
Аноним 31/05/21 Пнд 21:22:15 20512241136
Если вкатываться в проганье, то только ради своих проектов, которые если выстрелят - унесут тебя в топ, к недосягаемым горизонтам, недостижимым на обычной работе по найму. Считаю, что усираться учить кодить, чтобы потом пойти работать на кого-то - не самая лучшая идея. Спасибо, но у меня, уже есть обычная работа. Менять шило на мыло нет смысла. Надо пилить свои проекты!

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

Даже, если ничего не выгорит, то максимум чего я лишаюсь это несколько десятков баксов на домены и хостинг. И мое время. Но какая разница куда тратить время, просматривая очередную ненужную ленту какого-нибудь хвастограма, или писать свои формочки с запросиками. Главное, знать меру, не перенапрягаться, отдыхать, чтобы не перегореть. Всем успешного пути!
Аноним 01/06/21 Втр 09:45:47 20516251137
0672D556-8C73-4[...].png 302Кб, 750x1334
750x1334
Успешный java middle с з/п 250к вкатился итт. Ну, привет, «погромисты». Как там успехи на галерах? Всё пишите высонагруженный бэкэнд с 10.000 запросов в секунду? Ну, успехов. А, кстати, я слышал 100к для вас серьезные деньги. Спешите видеть пикрил, случайно в инсте увидел, решил вам оставить, вдруг пригодиться.
Аноним 01/06/21 Втр 10:13:35 20516451138
Аноним 01/06/21 Втр 14:25:04 20518771139
>>2051625
>Как расти в зарплате
Жить в дс
Подскакивать кабанчиком
Аноним 01/06/21 Втр 14:41:20 20519021140
Не, а если серьезно, насколько отличается, скажем, зп пхп миддла в мск от джава миддла там же?
Аноним 01/06/21 Втр 15:54:56 20519811141
>>2051902
Существенно. У джависта область куда шире, чем у нас. Миддл РНР будет 120 в среднем иметь, часто слышу, что это пиздешь и все получают больше, но пруфов ни у кого нет. 120 это ещё прилично. В основном 100. Джава разраб спокойно 200-250 будет иметь. Особенно те, кто в банках работает. У меня знакомый в оракл работает, пилит какие-то части их базы данных. На руки получает 250. Он как раз мидл. Как по навыкам, так и по знаниям. И рост, с его слов, у него едва ли не безграничный. Опять же с его слов нач их отдела получает 600к, сам он джава разраб со стажем 15 лет, куча сертов, успел поработать на Западе, куча связей, регулярно выступает на конференциях, может в архитектуру с 0 до 100% проект выполнить.
Аноним 01/06/21 Втр 17:04:41 20520581142
>>2051981
>Миддл РНР будет 120 в среднем иметь,... 120 это ещё прилично
Это значит, что мне еще повезло, что по медиане получаю? А мог бы как тот кадр 6 лет опыта и 90к
Аноним 01/06/21 Втр 18:11:44 20521991143
>>2052058
Выходит повезло. Опять же, галера галере рознь и может где-то правда платят 150-200 РНР мидлам, но я откровенно говоря сомневаюсь. Вот фулл стэк сеньорам да, тут соглашусь. У этих з/п приличная по меркам РНР разрабов там и 250 как нехуй делать можно иметь в месяц. Чистый бэкэнд если только тимлид/архитектор будет получать прилично. В основном это жалкая 100. Увы, рыночек порешал.
Аноним 01/06/21 Втр 18:16:52 20522111144
image.png 563Кб, 672x495
672x495
Аноним 01/06/21 Втр 18:33:18 20522471145
>>2050405
Конечно я понимаю, работал сетевиком, имею устаревший CCNP и актуальный HCIP по облачным ресурсам
Аноним 01/06/21 Втр 18:35:09 20522531146
>>2052211
Ну, в принципе, если тебе 20 и ты не обрамлён тяготами семейной жизни, то 100 это норм. Сычевать на окраине ДС, в клоповнике за 30к, 20к на пожарть и 50к откладывать на будущее. За год можно скопить 600к, а за 10 лет 6кк. Но потом надо будет что-то думать. Либо перекат в с#/java, либо обратно в деревню с 6кк.
Аноним 01/06/21 Втр 18:39:39 20522621147
>>2052247
Кому в пидорахе нужны профессионалы облачные? Ты совсе ебобо что ли? Ты ещё azure/aws подтяни, лол. Пиздуй в безопасность, а там из банков будут звать к ним за 200-300к.
Аноним 01/06/21 Втр 18:41:00 20522641148
>>2052253
Когда мне было 25, получал 30к и жил с мамкой это казалось неплохими деньгами.
Сейчас сотыга воспринимает как обычная рабочая зп, которая должна быть у веб макаки. С голоду не дохнешь, но и не пошикуешь особо
не дс
Аноним 01/06/21 Втр 18:44:01 20522661149
>>2052262
>Кому в пидорахе нужны профессионалы облачные?
Моей прошлой конторе были нужны, ну тем более, что они сами заплатили за обучение и сертификацию (хуавеевскую). А циску я получал сам, по приколу, много лет назад.

>Ты совсе ебобо что ли?
Где ты оставил аргументы? Вернись и подыми

>Ты ещё azure/aws подтяни, лол.
Если мне оплатят это дело - легко. Но я не занимаюсь ни ажурой, ни aws, так что шансы невысоки.

>Пиздуй в безопасность, а там из банков будут звать к ним за 200-300к.
Неинтересно, спасибо.
Аноним 01/06/21 Втр 19:14:20 20523221150
>>2052266
Ну и пошёл на хуй, мудак ты чсвшный. Хуй соси губой тряси, терпила в жопу выебанная.
Аноним 01/06/21 Втр 19:39:33 20523751151
Всем привет. Прохожу сейчас уроки, что в шапке и в разделе Бонусные задачки(http://phpbook.ga/l1/mou-ikkai.html) последняя, что про поиск пути, вызвала у меня на редкость много трудностей. Плюс, не смотря на то, что я её решил, в результате вышел совсем уж страшный быдлокод. Может кто заценить и сказать, в чём заключаются совсем уж конченые моменты в моём коде?
https://ideone.com/i6y0lf
Аноним 01/06/21 Втр 21:15:34 20524721152
>>2052375
Ты что-нибудь знаешь про алгоритмы, ИИ, теорию графов? Задачу ты хоть и решил, но это пиздец. Посчитай сложность алгоритма, у тебя же код медленно работает пздц.
Аноним 01/06/21 Втр 23:23:11 20526841153
Аноним 02/06/21 Срд 00:00:39 20527071154
>>2052472
Про графы и всякие алгоритмы их обхода в универе учил. Кстати, всегда очень неплохо получалось решать всякие штуки с ними. Поэтому и крайне неприятно удивился себе и тому, сколько трудностей задача вызвала.
Аноним 02/06/21 Срд 01:01:23 20527201155
>>2051625
ты попутал
на Java стыдно 250 зарабатывать,
а для РНР это обычная зарплатка сейчас.
Аноним 02/06/21 Срд 01:27:34 20527371156
>>2052720
>250
>а для РНР это обычная зарплатка сейчас

Ох какой жир. На hh.ru правда есть пара вакансий middle php 300-400к, но я со своим опытом в 10 лет даже не стану туда кидать резюме. А ты дерзай, будешь успешным.
Аноним 02/06/21 Срд 03:43:57 20527721157
Аноним 02/06/21 Срд 07:14:00 20527891158
Джавистом хуй найдёшь. На ней пишут какое-нибудь ультра-секурное говно в 3 конторах. В это время пыхари могут спокойно харкаться в ебало лидам и не трястись за место.
Аноним 02/06/21 Срд 10:11:45 20528441159
у меня тут спросили недавно: вот у тебя класс животные, от него ты унаследовал класс птицы и хочешь сделать класс пингвин, но он же не летает, как быть?
Аноним 02/06/21 Срд 11:07:03 20528971160
>>2052772
Ну ты же понимаешь, что приведённые тобою ссылки скорее исключение из правил? Ну, действительно есть конторы, которые платят мало. Тоже самое справедливо и для галер. Сколько раз итт постили вакансии чуть ли не сеньоров, а предлагали за это 50к. И опять же, выше речь шла за ДС, а не за провинцию.
Аноним 02/06/21 Срд 11:09:59 20528991161
>>2052844
Как раз выше задавали вопрос про абстрактные классы и интерфейсы. Через них это всё реализуется. Наследуешь класс, добавляешь ему поля и радуешься жизни.
Аноним 02/06/21 Срд 12:08:47 20529721162
>>2052844
а какой долбоёб в классе птицы добавил функцию летать? git blame и нахуй мудилу из профессии
Аноним 02/06/21 Срд 12:32:22 20530101163
>>2052772
Какой джавист пойдет на такую зп?
Только джун-вкатун без опыта
Аноним 02/06/21 Срд 17:14:39 20535531164
Прикрепляю код многостраничного каталога. Каталог по категориям в отдельном файле, пока не начинал все в один файл запихивать.
Насколько все хуево? Вкатываюсь ну как, уже работаю администратором пары сайтов в небольшой фирме по продаже всякой промышленной хуйни 3 год.
http://pastie.org/p/78bwFnG64jV0zngJ9YHkEF
Аноним 02/06/21 Срд 17:15:39 20535551165
есть есть тут кто вкатился норм в польше?
Аноним 02/06/21 Срд 18:43:27 20537091166
>>2053553
>Насколько все хуево?

А ты как-будто бы сам не понимаешь? Твой код выглядит как код из книги 2005 года для PHP 4.
Аноним 02/06/21 Срд 18:56:33 20537461167
>>2053553
Такой код может быть достаточен для какого-то лендинга или простого многостраничника.
Только вот объем кода, с которым работает средней руки макака раз в 1000 больше для справки текущий мой проект 500к строк, плюс этот код прикручен к фреймворку, плюс там ооп и мвц.
Так что лучше напиши какой-нибудь CRUD из шапки на симфони/ларавел - с этим уже можно на собес идти
Аноним 03/06/21 Чтв 04:09:17 20543251168
>>2053553

Вот что плохо:

- логика получения данных и отображение данных перемешано в одном файле. Правильно было бы разделить получение данных (один файл) и их вывод с помощью шаблона (другой файл). Также, плохая идея выводить HTML с помощью echo. Ты можешь почитать про шаблонизацию, чтобы это исправить: https://github.com/codedokode/pasta/blob/master/php/templates.md .

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

- код написан стеной без разделения на части. Лучше было бы вынести получение данных в отдельные функции с понятными именами вроде getСategoriesList(). эти функции могли бы пригодиться и на других страницах.

Если ты хочешь научиться сделать свой код лучше, я советую посмотреть нашу задачу про студентов (в шапке треда). В ней много полезных советов, и ты бы мог их использовать для улучшения своего кода.
Аноним 03/06/21 Чтв 04:10:39 20543261169
>>2053553

И еще. Пагинатор имеет смысл сделать отдельным независимым шаблоном, чтобы его можно было подключить на любой другой странице сайта.
Аноним 03/06/21 Чтв 10:43:49 20544451170
Capture d’écran[...].png 23Кб, 942x66
942x66
>>2053553
Я бы со всем примирился, но вот это пиздец
Аноним 03/06/21 Чтв 16:47:58 20551481171
что будет если использовать readfile в теле функции для вывода шаблона?
или так не делают?
Аноним 03/06/21 Чтв 21:54:07 20556341172
Ананасы, допустим есть приложение, в котором используются задачи в фоне (компонент симфони мессенджер и кролик). Куда принято складывать проебанные задачи - в другую очередь или в базу данных? Как чаще делают?
Аноним 04/06/21 Птн 01:34:59 20558041173
>>2055634
зависит от того, что ты хочешь с ними сделать
Аноним 04/06/21 Птн 12:31:57 20561351174
>>2055634
>Куда принято складывать проебанные задачи
Переассайнить на напарника.
Аноним 04/06/21 Птн 20:20:42 20569131175
16056889634810.jpg 24Кб, 1024x752
1024x752
Аноним 05/06/21 Суб 11:17:17 20577061176
Аноны, а если переделать поля в задаче про студентов со студентов на что-то другое, её можно как образец кода в свой гитхаб залить?
Аноним 05/06/21 Суб 11:35:36 20577461177
>>2057706
Тебе кто-то запрещал это делать?

ЗЫ: это называется форк и ты как бы должен указать источник откуда спиздошил код.
Аноним 05/06/21 Суб 11:52:34 20577711178
>>2057746
Так код сам буду писать по заданию, какие форки.
Аноним 05/06/21 Суб 11:52:45 20577731179
>>2057706
зачем их переделывать?
Аноним 05/06/21 Суб 11:56:04 20577771180
Ладно, понял, тупой вопрос, забейте.
Аноним 05/06/21 Суб 16:05:53 20579961181
typical-php.png 130Кб, 403x394
403x394
Аноним 05/06/21 Суб 16:36:16 20580261182
Аноним 05/06/21 Суб 16:52:23 20580521183
Если я выполнил задачу про студентов, то значит ли, что я могу уже на собес и устраиваться джуном???
05/06/21 Суб 17:57:42 20581221184
>>2058052
Боюсь что ты только пенис пососать можешь.
Аноним 05/06/21 Суб 21:56:26 20584881185
Вы говорите что можно начать с Елисеева. А в каком порядке смотреть материал?
Аноним 05/06/21 Суб 23:43:48 20586201186
Аноним 05/06/21 Суб 23:53:46 20586311187
>>2058488
Это один анон говорит постоянно. Какие мы?
Аноним 06/06/21 Вск 00:13:55 20586501188
Вот хочу допустим интернет магазин сделать для гитхаба, ну или что-то другое более-менее реальное, а не сферические тестхабы в вакууме. Как в нем вообще реализовать платежную систему? Это сильно сложно?
Аноним 06/06/21 Вск 03:16:41 20587621189
>>2055634

Надежнее наверно в БД, но тогда надо, чтобы кто-то их периодически проверял.

>>2057706

Можно, если ты сам напишешь код.

>>2058650

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

То есть ты обычно сам не принимаешь платежи, а используешь, например, робокассу, яндекс-кассу, stripe и другие подобные сервисы. С ними идет взаимодействие через API: они отправляют тебе HTTP-запрос в случае успешной или неуспешной оплаты.

Вот пример API от Яндекс-кассы: https://yookassa.ru/developers

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

Аноним 06/06/21 Вск 03:17:25 20587631190
image.png 913Кб, 1280x720
1280x720
Аноним 06/06/21 Вск 03:23:56 20587671191
>>2055148

Так можно сделать, но шаблонизации не будет. readfile просто выводит файл как есть.
Аноним 06/06/21 Вск 06:36:04 20587821192
>>2058631
а ты что посоветуешь?
Аноним 06/06/21 Вск 08:13:16 20588041193
Аноним 06/06/21 Вск 08:22:45 20588051194
Есть какой-нибудь видео мануал или более разжеванный текстовой, как запилить сайт с регистрацией студентов из задачника ОПа?
Аноним 06/06/21 Вск 08:54:26 20588121195
Есть абстрактный класс
abstract class Department {}

Как лучше назвать наследуемый класс:

class Sales extends Department {}

или

class salesDepartment extends Department?
Аноним 06/06/21 Вск 10:39:09 20588471196
>>2058812
Я бы назвал просто Sales. И не salesDepartment, a SalesDepartment
Аноним 06/06/21 Вск 12:10:53 20589181197
Автор уроков из шапки, перепиши, пожалуйста, по-братски все под PHP 8.
Аноним 06/06/21 Вск 13:07:43 20589851198
>>2058805
Оставь, умственный труд не твоё. Пойди лучше вагоны разгружать или улицы подметать.
Аноним 06/06/21 Вск 13:08:50 20589861199
>>2058918
Ишь ты чего захотел, ушкуйник. А говна на лопате тебе не дать?
Аноним 06/06/21 Вск 13:10:22 20589881200
Аноним 06/06/21 Вск 13:16:03 20589941201
Аноним 06/06/21 Вск 14:03:06 20590401202
>>2058488
Берешь какой-нибудь один мастеркласс (они оч длинные). Например как он клон авито делал на ларавеле. Смотришь, пытаешься повторить такой же функционал.
Как осилишь такой же проект без видео сделать - считай мидол
Аноним 06/06/21 Вск 14:05:59 20590461203
>>2058805
На работе код писать тоже за тебя будут?
Задача про студентов - пример того, что могут дать в виде тестового или в виде задач на работе. Не справляешься с этим - идешь нахер
Аноним 06/06/21 Вск 14:06:55 20590481204
>>2058918
Там прибавилось 1.5 фичи. Что там переписывать собрался?
Аноним 06/06/21 Вск 14:23:41 20590621205
>>2059040
Я так понял, что лучше вначале глянуть его курс по ООП, а потом лару? И норм смотреть его видосы со знаниями приблизительно из нашего шапкогайда?
Аноним 06/06/21 Вск 14:45:37 20591001206
https://ideone.com/UYQNwn

Можете чекнуть, указать на ошибки? Пока дописываю потихонечку.
Алсо не смертельно будет если я не решил сложные задачки, но пытаюсь решить? Застрял на калькуляторе, пока двигаюсь по учебнику.
06/06/21 Вск 15:09:09 20591341207
>>2059100
>Алсо не смертельно будет если я не решил сложные задачки
Значит не можешь в математический склад ума и не станешь программистом, sad but true
Аноним 06/06/21 Вск 15:16:40 20591431208
>>2059134
В контексте имелось ввиду, что "пока" не решил. Так то я и посложнее решаю задачки на кодфорсах.
Аноним 06/06/21 Вск 15:17:28 20591471209
>>2059134
Покормил. А вообще иди нахуй чорт двачерский
Аноним 06/06/21 Вск 15:20:24 20591561210
>>2059134
Джеф Безос ахуевает с твоих слов, от тайны жизни.
Аноним 06/06/21 Вск 15:24:00 20591661211
Аноним 06/06/21 Вск 15:44:14 20591971212
>>2059134
ой да ладно тебе пиздить. У меня 2 друга 300к наносек и ни один не математик. Пиздабол
Аноним 06/06/21 Вск 16:30:26 20593101213
06/06/21 Вск 16:51:44 20593591214
>>2059143
Их решают нормальные люди за пару часов, ниче там "пока" решать не надо. Если не можешь - не твое.
Аноним 06/06/21 Вск 16:55:05 20593661215
06/06/21 Вск 16:58:48 20593711216
>>2059366
Не все могут программировать, ты просто не создан для этого. Оп хуй занимается враньем пиля учебник для таких же задротов
Аноним 06/06/21 Вск 17:04:06 20593831217
>>2059371
Эх жаль тебя, такой глупый. Зачем ты занимаешься этим сейчас? Ты понимаешь, что у тебя с головушкой проблемы?
06/06/21 Вск 17:10:50 20594011218
>>2059383
Да, понимаю. Только ты все равно не сможешь в программирование, сантехник
Аноним 06/06/21 Вск 17:12:56 20594051219
Аноним 06/06/21 Вск 17:17:09 20594151220
>>2059401
>сантехник
ебать, если ты сантехник, а судя по конкретике это так, то как сюда зашел?
Аноним 06/06/21 Вск 17:29:22 20594391221
Аноним 06/06/21 Вск 18:10:55 20595381222
Сап, у кого опыт переката из пыха был, в другие технологии? Так понимаю пыхарский опыт не котируется?
06/06/21 Вск 19:48:02 20597291223
>>2059538
Если умеешь работать головой, то спокойно перекатишься в любую технологию особо не напрягаясь.
Аноним 06/06/21 Вск 22:19:24 20599301224
Аноны, а в чем сакральный смысл прятать в докер базу данных, притом что файлы в которых хранятся собственно данные - торчат в файловой системе хоста? Я понимаю что на продакшене само приложение удобно спрятать в контейнер, что бы от сревера к серверу не настраивать окружение. В разработке удобно тестировать в работе с разными окружениями, ну и удобно передавать в команде вместе с готовым окружением.
А вот смысла бд в докер-контейнере чето не уловлю. Один хрен хвост наружу торчит
Аноним 06/06/21 Вск 23:53:58 20600261225
>>2058782
Я посоветую не учить пхп. Серьезно, это был бы самый лучший совет для меня в прошлом.
Аноним 07/06/21 Пнд 01:13:33 20600961226
>>2060026
Хули ты здесь забыла тогда ебанина?
Аноним 07/06/21 Пнд 07:26:26 20601611227
Аноним 07/06/21 Пнд 12:04:51 20603201228
>>2060026
Кушать хочется, придется в пых. Хз, короче. Знаю только что, многие пахари, в жабу или шарп хотят.
Аноним 07/06/21 Пнд 12:07:37 20603241229
>>2059930
Как думаешь, зачем вообще использовать докер?
Аноним 07/06/21 Пнд 12:17:15 20603391230
>>2059062
>вначале глянуть его курс по ООП, а потом лару
Можно и так.

>И норм смотреть его видосы со знаниями приблизительно из нашего шапкогайда?
Норм
Аноним 07/06/21 Пнд 12:20:50 20603471231
>>2059538
Пытался в го. Понял, что туда лучше с c/c++ катить из-за дроча кишочков языка и многопотока, да и язык говно ебаное, остался на пыхе
Аноним 07/06/21 Пнд 12:22:39 20603481232
>>2060026
Поддвачну. Хотел бы на шарпы уехать, да в нет кор. Но поезд ушел
Аноним 07/06/21 Пнд 12:22:58 20603501233
Аноним 07/06/21 Пнд 12:25:13 20603531234
>>2060348
Считай с нуля начинаешь...
Аноним 07/06/21 Пнд 12:26:02 20603541235
Аноним 07/06/21 Пнд 12:31:04 20603581236
Аноним 07/06/21 Пнд 12:32:50 20603671237
>>2060353
Вот вот. Пробовал простую утилитку на винформах написать и чет обосрался от нормального программирования
Аноним 07/06/21 Пнд 12:37:51 20603801238
>>2060367
Попробуй ещё раз анон... Может со второго захода получится... Я тоже наверное попробую
Аноним 07/06/21 Пнд 12:51:35 20603991239
>>2060380
Я тут внутри пыхи на симфони спрыгнуть не могу. Никаких сил моральных нет уже. Во время работы выматываюсь так, что ни вечером, ни на выходных не могу собраться и за пет сесть
Аноним 07/06/21 Пнд 12:58:24 20604091240
>>2060399
Сочувствую... Если б сейчас вкатывался, сразу на шарпы шёл бы?
Аноним 07/06/21 Пнд 13:10:31 20604341241
>>2060409
Да, если б у мамки на шее сидел и знал парочку шарпистов, которых сейчас знаю, то да
Аноним 07/06/21 Пнд 13:33:06 20604741242
YwTeKlN30s.jpg 155Кб, 900x900
900x900
Добрые люди, помогите, пожалуйста, недалекой девушке написать диплом по базам данных. Делаю сайт в Wordpress, осталось 10 дней, а мозгов не хватает понять как вообще создать бд и взаимодействовать с ней.
Если у тебя много свободного времени и совсем нечем заняться, напиши мне, я на грани опустить руки и отчислиться.
Аноним 07/06/21 Пнд 13:33:24 20604751243
>>2060474
Забыла приложить контакты:
Аноним 07/06/21 Пнд 13:34:18 20604781244
Аноним 07/06/21 Пнд 13:41:55 20604921245
>>2060434
Бляя, пиздец мне это знакомо... Как будто и про меня написал. Удачи тебе, и терпения...
Аноним 07/06/21 Пнд 13:52:42 20605071246
>>2060474
phpmyadmin, не пробывала использовать?
Аноним 07/06/21 Пнд 13:59:06 20605201247
>>2060507
да конечно, его и использую, только у меня есть куча вопросов как это работает и что мне делать
Аноним 07/06/21 Пнд 17:09:06 20607751248
>>2060474
как так-то... может видеоуроки посмотреть, более наглядно
Аноним 07/06/21 Пнд 20:47:55 20610221249
>>2060775
это слишком сложно
Аноним 07/06/21 Пнд 21:54:20 20610911250
>>2061022
Сложно ей блядь, иди нахуй тогда
Аноним 07/06/21 Пнд 22:22:09 20611301251
Аноним 07/06/21 Пнд 22:52:01 20611621252
>>2060474
> девушке
Толстый, плиз. Это не прокатит уже в 2021. Пиздуй учи, там нехуй делать, если тебе нужен обычный круд.
Аноним 08/06/21 Втр 03:34:52 20612821253
>>2059371
Обобщаешь значит пиздабол.
Аноним 08/06/21 Втр 03:39:29 20612831254
>>2060474
Вот сайт который мне помог быстро изучить базы данных и всё что связано, не благодари. Удачки сдать.

https://dev.mysql.com/doc/
Аноним 08/06/21 Втр 03:43:39 20612841255
>>2059359
Скинь свое решение калькулятора в тред, с временным штампом и тестами. Есть что сказать не?
Аноним 08/06/21 Втр 03:47:46 20612861256
>>2059134
Математика и программирование никак не связаны друг с другом, абсолютно разные дисциплины. Ты бы еще сказал, что не можешь в физический склад ума. Идиот.
Аноним 08/06/21 Втр 03:48:40 20612871257
изображение.png 44Кб, 150x150
150x150
Какие же двачеры тупые
Аноним 08/06/21 Втр 05:07:54 20613081258
>>2061286
>любой сложный алгоритм предполагает использование математики
>никак не связаны
Аноним 08/06/21 Втр 07:21:45 20613271259
>>2061308
щаз бы на пэхэпэ алгоритмы писать
Аноним 08/06/21 Втр 08:24:29 20613411260
>>2061327
>последняя часть учебника целиком из алгоритмов
Аноним 08/06/21 Втр 08:50:41 20613481261
>>2061308
Ну ты туповатый еще, подрастешь поймешь.
Аноним 08/06/21 Втр 08:56:05 20613511262
Аноним 08/06/21 Втр 09:17:34 20613581263
>>2061351
Нужно было написать что из математических алгоритмов, но зачем метать бисер перед свиньями?
Аноним 08/06/21 Втр 09:30:12 20613661264
>>2061341
>учебник
Ясно, свободен.
Аноним 08/06/21 Втр 09:48:20 20613761265
>>2061358
А то есть ты хуже свиней.
Аноним 08/06/21 Втр 09:53:49 20613811266
images.jpg 8Кб, 225x225
225x225
>>2061376
>А то есть ты хуже свиней.
Аноним 08/06/21 Втр 09:55:09 20613821267
Ну что еще от ребенка ожидать.
Аноним 08/06/21 Втр 10:00:55 20613851268
изображение.png 4Кб, 268x156
268x156
16221310795510.mp4 15932Кб, 720x540, 00:00:52
720x540
Аноны, подскажите, плес. Как лучше сделать, ajax'ом вызывать отдельные файлы(как на пик1) или все в один файл и там по функциями распихать?
Мимо вкатышь в js. Хотю немного бека.
Аноним 08/06/21 Втр 11:22:01 20614651269
>>2061385
Обычно делают единую точку входа, которая разбирает урл и вызывает нужный контроллер.
Аноним 08/06/21 Втр 11:43:03 20614951270
>>2061385
написать все функции в одном файле и вызывать их в зависимости от входящего параметра
Аноним 08/06/21 Втр 12:04:30 20615111271
16213554130540.mp4 2724Кб, 480x640, 00:00:24
480x640
Аноним 08/06/21 Втр 12:07:45 20615161272
>>2061511
Спасиб.
Отклеилось.
Аноним 08/06/21 Втр 15:03:35 20617491273
БД умеет считать проценты по времени?
Аноним 08/06/21 Втр 15:38:03 20617861274
Сап пыхеры. Хочу зп 100к, что я должен из себя представлять на текущий день, чтобы претендовать на такую зп в ДС1 или ДС2?
Аноним 08/06/21 Втр 16:26:18 20618581275
>>2061786
Открой хх, да посмотри
Аноним 08/06/21 Втр 19:38:11 20622011276
>>2044548

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

- название функции scr непонятное, и сбивает с толку при чтении кода
- непонятно, зачем ты парсишь только что созданную ссылку с помощью parse_str, если можно просто взять текст из переменной $output. parse_str тут лишний.
- внутри тега <pre> нельзя использовать <p>. Вот что написано в спецификации HTML: https://www.w3.org/TR/html52/grouping-content.html#the-pre-element

> 4.4.4. The pre element
> Content model: Phrasing content.

"Phrasing content" не включает тег <p>. Вкладывать <pre> внутрь <p> тоже нельзя. Однако, ты можешь вложить pre внутрь div.
Аноним 08/06/21 Втр 19:55:40 20622171277
>>2048403

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

Есть пара способов сделать код в шаблонах более читабельным:

- используй шаблонизатор вроде twig вместо шаблона на PHP - в нем все выглядит компактнее и читабельнее
- ты можешь выносить отдельные блоки в подшаблоны (особенно удобно это делать в twig с помощью макросов).
Аноним 08/06/21 Втр 22:33:44 20624321278
>>2052375

Что касается алгоритма, то главный недостаток рекурсивного алгоритма в том, что он не очень эффективен. Допустим, из точки A можно пойти в B и С. Алгоритм сначала пойдет в B, изучит все пути из нее (например: в D, E, F), потом пойдет в C, и, если она соединена с D, E, F, то обойдет те же самые пути по второму разу.

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

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

Функция findPaths могла бы возвращать не массив, в котором перемешаны пути и время, а массив из массивов вида ['path' => ..., 'time' => ...] и тогда преобразование этого массива в функции findBestPath не требовалось бы.

Функция findPaths() может вызвать сама себя и получить массив результатов. Она могла бы сразу отобрать один лучший путь и вернуть только его (вызвав вспомогательную функцию для отбора лучшего пути), а не возвращать весь массив возможных путей. Из-за того, что ты возвращаешь все пути, у тебя может образоваться (после многократных рекурсивных вызовов) большой список путей. Ну то есть, функция findPaths() вызывает сама себя, вызванная функция вызывает сама себя и так еще 2 раза (то есть, делается 4 шага). Если на каждом шаге возможен выбор из 5 путей, то в итоге за 4 вызова соберется 54 ~ 600 возможных путей.

Странно, что функция findPaths() может вернуть массив двух разных видов: либо с ключами path и time, либо с перемешанными наборами path и time с числовыми ключами. Должно быть единообразие возвращаемых значений. То есть лучше, если функция findPaths будет выбирать лучший путь и всегда возвращать единственный результат (либо null, если путь построить невозможно).

Такой код:

$t = [];
$t['x'] = $x;
$t['y'] = $y;
$result[] = $t;

можно и нужно писать короче как

$result[] = ['x' => $x, 'y' => $y];

Меньше кода - быстрее читается.

Такой код:

$newPathDone = $pathDone;
array_push($newPathDone, $connectedPoint);

Можно записать как:

$newPathDone = array_merge($pathDone, [$point]);
или в PHP >= 7.4: $newPathDone = [...$pathDone, $point];

Наконец, этот else никогда не выполнится:

if(count($result) == 1){
}elseif(count($result) > 1){
}else{

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



Аноним 08/06/21 Втр 22:36:38 20624361279
>>2052844

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

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

Аноним 08/06/21 Втр 22:49:44 20624481280
>>2058805

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

>>2058812

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

Аноним 08/06/21 Втр 23:10:58 20624661281
>>2058918

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

>>2059100

Очень странное наследование департаментов. Например: ты объявил метод addEmployees абстрактным. То есть, это значит, что в каждом классе-наследнике будет свой алгоритм добавления работников? Я думаю, что добавление работников происходит абсолютно одинаково в любом департаменте и значит, этот метод надо реализовать в классе Department.

То же касается методов вроде totalCoffee(). Я думаю, эта цифра будет считаться по одинаковому алгоритму в любом департаменте. Или я что-то не учел?

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

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

Далее, имена методов принято начинать с глагола. Не totalCoffee, а countTotalCoffee.

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

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

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

Далее, в Employee абстрактный конструктор. Первый раз с таким сталкиваюсь. Думаю, что не надо требовать от наследников реализовать конструктор.

В наследниках класса Employee у тебя много копипасты. Метод countSalary() выглядит одинаково. Не логичнее ли его перенести в базовый класс Employee? То же касается конструкторов.

Имена классов начинают с большой буквы (marketingExpert).

И еще, у тебя предполагается, что класс-наследник Employee должен заполнить поля вроде baseRate. Но если я хочу написать класс-наследник, как я об этом узнаю? Это требование нигде не описано. Чтобы это исправить, я советую сделать абстрактный метод getBaseRate(). Это позволит записать требование, что наследник должен определить базовую ставку.

И еще. Почитай про тайп-хинты: https://www.php.net/manual/ru/language.types.declarations.php

В PHP можно указывать тип для: аргументов функции, результата функции и (в PHP >= 7.4) для свойств класса. Я советую расставить типы, это сделает код понятнее и защитит от ошибок, если ты попытаешься передать не то значение в функцию.

Ждем исправленный код.
Аноним 08/06/21 Втр 23:15:36 20624731282
>>2059100

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

>>2059930

Наверно идея в том, что тебе не надо устанавливать на хост базу данных нужной версии с нужными плагинами, а достаточно запустить docker-compose up и все скачается и запустится само. И данные от БД не хранятся в /var/lib/mysql, а где-то в другом месте.

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

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

Аноним 08/06/21 Втр 23:17:43 20624761283
>>2060474

Можно писать вопросы тут, может кто-нибудь и захочет помочь. Но вначале стоит самостоятельно погуглить вопрос, чтобы не спрашивать то, что можно найти на первой странице гугла.
Аноним 08/06/21 Втр 23:23:43 20624811284
>>2061385

Пока у тебя немного файлов, ты можешь делать каждый контроллер отдельным файлом. Но дальше ты заметишь, что ты делаешь в начале каждого файла одни и те же действия и эффективнее сделать единую точку входа - чтобы сервер при любом URL (вроде /ajax/users/) вызывал index.php, а этот файл анализировал бы URL и вызывал нужный обработчик.

Вообще, по мере роста проекта лучше перейти на микрофреймворк вроде Slim. В нем уже есть роутер для разбора URL.

>>2061495

Это корявенько и приведет к некрасивым URL вроде /index.php?act=users вместо /ajax/users/.

>>2061749

Не понял вопрос. Какие еще проценты?
Аноним 08/06/21 Втр 23:43:38 20625001285
Этот тред закончился. Переходите в новый тред: >>2062494 (OP)

Если вас пропустили или не ответили, можете повторить свой вопрос в новом треде.
Аноним 09/06/21 Срд 12:27:13 20628311286
>>2062217
Минус шаблонизаторов — они существенно замедляют работу. Тут уже придётся во все поля ебаться с кэшированием.

>>2048403
Аноним 09/06/21 Срд 20:02:11 20635731287
>>2062831

Не обязательно. Твиг, например, компилирует шаблон в чистый PHP и в дальнейшем выполняет этот PHP файл.
Аноним 17/06/21 Чтв 16:43:30 20714771288
Работаю третью неделю недо-джуном. Постоянно чувствую себя не то что тупым, а прям полным кретином. Бывает сижу и думаю "Бляяяя. Что я тут делаю? Я же нихера не знаю"

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

Надеюсь с опытом придет и уверенность(
Аноним 17/06/21 Чтв 18:09:11 20715781289
>>2071477
Да это в любой области так. Не вешай нос. Шутки про программирование на стэковерфлоу наверняка слышал? Они ведь не на пустом месте родились.

Я тебе дам совет, заведи себе заметки, в которые закидывай сниппеты кода, терминологию ООП, принципы, концепции. Нахуй это всё держать в голове? Один хуй после недели ковыряния в условном легаси все улетучится, а так открыл заметки, полистал — бам, что-то вспомнил, бам, на что-то знакомое посмотрел по новому.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов