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

Ответить в тред Ответить в тред
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