Этого треда уже нет.
Это копия, сохраненная 6 июня 2021 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Клуб изучающих PHP #123 /php/ 1998470 В конец треда | Веб
Здесь мы изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
grammar.png55 Кб, 500x644
Важно 2 1998473
Код нужно писать аккуратно и оформлять, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на 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/
3 1998480
Вопрос, вытекающий из последних постов прошлого треда. Давно не касался авторизации и вот этого всего, знаю, что сейчас есть стандарты и тд. Но может кто подскажет в паре слов, насколько старый вариант с md5 хэшем сейчас безопасен?
4 1998506
>>1998480
Какой старый вариант? Тебе сложно вместо md5() вызвать password_hash()?
Если использовать нормальную соль то md5 сложно взломать злоумышленику с ресурсами меньшими государственных. Но нет смысла ебаться с md5 когда у тебя из каропки password_hash и password_verify тупо всю хуйню делают за тебя.
5 1998771
нужно написать парсер, но я хочу какать
пук.jpg51 Кб, 1080x531
6 1999047
Меня затрахали нерешаемые моим мозгом бонусные задачи из учебника, что делать?
7 1999073
>>1999047
Скорее всего ты чего-то недогнал в процессе обучения. Тут не работает как в школе\шараге и надо честно позадрачивать с недельку.
На чём всрался?
8 1999079
>>1999047

Ты можешь запостить свой код, и написать, что именно непонятно. Также, можно попробовать поискать решение задачи в гугле.
1522495958120494646.jpg136 Кб, 1080x971
9 1999103
>>1999073
>>1999079
Да че я не догнал... Все задачи решил предыдущие, но если попросить здесь помощи по бонусным мне в сотый раз льют в уши кучу помоев, которые никак не помогают решить задачу.

https://ideone.com/kzN6Eh

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

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

Я в центре на пикрелейтеде, inb4 я долбоеб неблагодарный и не ценю помощь, нахуй из треда
10 1999380
>>1999103
Потому что ты занимешься хуйней.
Там дел на пару строчек.
https://ideone.com/TYAMl1
11 1999384
Извлекать данные из БД на страницу надо через аджакс?
12 1999472
Пчелибосики, палите топовые IDE для PHP.
13 1999496
Аноны, паршу рефер откуда пришёл человек и сохраняю его, например https://ru.wikipedia.org/wiki/Заглавная_страница но при извлечении его из бд и отрисовки на странице если в нём была кириллица, она вся превращается в кашу типа https://ru.wikipedia.org/wiki/Заглавная_страница, как это говно во время вывода привести обратно в человеческий вид?
14 1999508
>>1999496
urldecode
15 1999528
>>1999496
Господи, куда смотрели W3C, когда вводились интернационализованные домены? Это же рак, убивающий интернеты.
16 1999547
>>1999528
Смотрели на шекели.
Долбоебы скупили свою местечковую хуиту, а теперь она никому не нужна и не используется.
17 1999548
Аноны, скажите если я в свойстве класса сохраняю не объект, а вообще класс в таком виде

$this->classProps = SomthClass::class;

для того что бы потом где то в методе объект этого класса получить - это лютый говнокод, или норм вариант?
18 1999559
>>1999548

>лютый говнокод


это
19 1999564
>>1999559
А как правильно? Мне нужно в методах создавать экземпляр этого условного класса каждый раз. Сделать фабрику этого класса?
20 1999571
>>1999564
Экземпляр класса до объявления методов нельзя сделать? И кидать его потом в качестве параметра методам?
21 1999575
>>1999571
Хочу связность снизить, этот класс не хочу в клиентском коде светить
22 1999586
>>1999575
Передай извне фабрику. Практически любой современный контейнер инверсии зависимостей умеет это делать.
Хотя это зависит от контекста конечно - иногда проще напрямую делать. Так же лучше не городить лишнего в небольших скриптах.
23 1999625
Всем ку, дамы и господа.

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

Так вот:

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

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

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

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

5. Куда смотреть дальше? Laravel/Yii2/Zend/Symphony?
24 1999639
>>1999103

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

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

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

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



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

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

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

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

Уточняй, если что непонятно.
25 1999646
>>1999625

> Полно школьников 18 летних


В пхп?
26 1999657
>>1999646
Да везде.
27 1999681
>>1999657
В пхп вроде самый высокий средний возраст разраба после крестов и совсем дедовской хуйни типо кобола.
Где-то 33, как Иисусу.
28 1999688
>>1999625

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


Зависит от тебя. Школьники тупые. Для успеха помимо непосредственно кодирования нужно иметь ещё кучу скиллов.

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


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

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


7-8. А под капотом у xampp/openserver будет тот же самый апач.

> 5. Куда смотреть дальше? Laravel/Yii2/Zend/Symphony?


Да.
40679190102159966426846297889124653757628416n.jpg79 Кб, 604x604
29 1999703
>>1999681
Кстати, давайте обсудим!

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

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

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

4. Какие профиты от симфони по быстродействию?
Если навключать всех кешей на всех уровнях -- можно ли говорить о вменяемом времени отклика по сравнению с быстрыми языками? Про остальное "фреймворки" говорить особого смысла нет: Zend подзагнулся, а остальные явно недотягивают до промышленной разработки.
15545801948502.png1,7 Мб, 1280x960
30 1999716
>>1999703
хочу дописать
5. Вечный вопрос (ТМ) человека, который ежедневно работает с языком:
Почему мы продолжаем любить и использовать РНР, если его свобода с одной стороны обходится так дорого (по быстродействию), а с другой, самые продвинутые фреймворки -- это бесконечные попытки зарегулировать эту самую свободу, ведущую к бесконечным ошибкам?

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

Раньше я уверенно декларировал ответ: "скорость разработки, быстрый и дешёвый старт любого проекта, невозможность "зависания"". Но сейчас, глядя на достаточно сложные в освоении и запуске Symfony-приложения, состоящие из многих пакетов и зависимостей, я начинаю сомневаться: до сих пор ли это так?
31 1999747
>>1999716

>ради чего мы должны мериться


Я неебу ради чего ты должен мериться. Я вот нихуя не должен - пилю приложухи и не несу пафосной хуиты. Надо будет го - подтяну го, надо ноду - подтяну ноду.
Это просто работа.
1618696465136.jpg230 Кб, 940x945
32 1999749
>>1999716
Язык говно. Профитов никаких. Используй "быстрые" языки. /дисказ
33 1999753
>>1999747
*мириться, опечатался
Я с 2004 года занят данной РАБотой, и для меня уже пора задумываться
34 1999756
>>1999749
спасибо, Владимир Владимирович! (отсылка к https://www.youtube.com/watch?v=sM1LOMZjFJ4 )
16183440700080.mp44,7 Мб, mp4,
640x360, 5:10
35 1999757
>>1999753
Ну не мирись тогда. Мирись-мирись и больше не дерись.
По моему опыту бекенд это дай-то бох 50% - язык программирование, который не суть щас бы крудошлёпство великим делом считать. Остальное - смежные технологии и знание как делать хайлоад не всрав разработку.
36 1999762
>>1999703
>>1999716
Почему мы дальше работаем с Симфони? Отвечу за себя, может спасу жизнь какого-то ньюфага, который решил вкатиться в пых.
Потому что это болото уже засосало. Можно, конечно, пойти пол годика работать каким-то охранником, учить параллельно джаву и вкатиться на позицию джуна, но зачем?
Сидишь себе не рыпаешься, деньги получаешь. Да, меньшие чем джависты за ту же работу. Да, неприятно, но что поделать? Только по этой причине на симфони остается работа, разве нет?
Еще есть надежда что по работе когда-то придется столкнуться с го/нодой. А там уже имея коммерческий опыт сделать перекат будет намного проще.
Хотя языки эти и их подходы мне не нравятся, с php общего там очень мало, но это единственный вариант быстрого переката для пыхера.
Зачем? Да, пока что корабль еще не тонет, но крысы уже всё чувствуют и понимают.
37 1999764
>>1999757
То да, я не спорю с твоим логичным определением бекенд-разработки, но мы же в треде именно про язык, вот его и обсуждаем.

Подумой: это же определённые люди, это получившиеся в итоге приложения и зависимости, это расход ресурсов при том самом хайлоаде.
photo2020-06-2601-53-32.jpg77 Кб, 640x641
38 1999765
>>1999762
Ну, для фуллстек-приложений на Symfony уже характерно наличие ноды (encore / webpack). Только вот нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.

Ну и почему охранником? После Symfony сложность Java не должна так уж испугать.
39 1999767
>>1999762

> го/нодой


> единственный вариант быстрого переката


чому единственный?

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

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

в европке за Симфони дают до $6000/мес.
42 1999783
>>1999775

>я не знаю, нахуй вам эти ларавели, симфони и др.


Потому, что код лучше чем на битрикс, быстродействие, масштабируемость и качество самих программистов в средем выше именно на современных фреймворках, чем у мартышек на битриксе. А на чистом пхп пишут сегодня разве что только вкатывальщики.
43 1999791
>>1999765
>>1999767
Тут не в сложности джавы дело, вы чего. Просто нужно освоить много информации, для этого нужно много времени. И, как никак, ты в джаву закатываешься как бы с нуля.
Изучать всё это будешь после работы. Когда наступит черед идти к работодателю, ему почти что всё равно будет на твой опыт разработки на пхп.
Слово "Symfony" там тоже никому ничего не скажет, все уверенны что это очередная CMS, а в PHP еще неймспейсы не завезли и пыхеры всё еще называют классы App_Http_Controllers_IndexController.
Читаю на днях требования к джуну на джаве. "Опыт с Java не менее двух лет. Опыт в разработке больших веб-приложений от трех лет очень желателен. Если это Java - отлично. Если это Python, C#, Ruby - хорошо. Если это PHP, все равно будет плюсом"
А с го/нодой можно начинать практиковаться прямо на пыхоработе, а из требований к джуну на go я даже часто встречал знание синтаксиса и годик-два опыта на пыхе.
44 1999799
>>1999765
Лол, я ещё помню клавиатуры на полноразмерных дин разъемах как в совковых магнитофонах.
45 1999814
>>1999380
На хуй отправляешься.
46 2000101
вы часто исп nginx вместо апача?
47 2000140
>>2000101
Апач это уже легаси.
48 2000154
>>2000140
а чем он лучше апача?
49 2000185
>>2000154
Да в общем всем.
Быстрее, меньше жрет, больше функционала.
50 2000214
>>1999703
>>1999716

6. Что лучше изучать - Симфони или Лару?
51 2000225
>>1999791

>требования к джуну


>Опыт в разработке больших веб-приложений от трех лет


Не, ну зачем явных долбоёбов-то в пример приводить?
52 2000228
>>1999765

>нода не сильно лучше на этом фоне и больше, чем за пых, за неё особо не платят.


Во тут совсем мимо, открой хотя бы hh. Весь смысл переката как раз в том, что за ноду, в часности нест сейчас готовы платить, иногда даже больше, чем за нормальные языки.
По крайней мере в ДС так.
53 2000240
У меня вопрос ещё актуален. На него никто не отвечает, к сожалению.

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

bin/console make:entity --regenerate App\\Entity\\Country
67 2000293
>>2000287
это mysqli можешь викунуть.учи PDO
68 2000296
>>2000293

>учи PDO


Наизусть учить?
69 2000413
Аноны, я просто любитель и у меня вопрос, есть массив с массивами в которых хранятся логи типа айпи, юзерагент и т.п., хочу его отсортировать и вырезать только массивы с нужным мне айпи, как это сделать? Пропустить всё это через цикл и поместить в новый массив или для этого уже есть нужная функция которой я бы мог просто передать айпи и чтобы она вырезала только массивы с этим айпи и поместила их в новый массив который я выведу?
70 2000518
>>2000260
С хуя ли, норкоман?
71 2000583
Есть массив
$arr = [
[ip => "146. 228. 14. 88", name => "Vasyan", age => "13"],
[ip => "127. 0. 0. 1", name => "Abu", age => "Petuh"],
[ip => "146. 228. 14. 88", name => "Valera", age => "54"],
[ip => "192. 168. 1. 1", name => "Vladimir", age => "68"],
]

Как сделать так чтобы в нём остались только массивы с айпи 146. 228. 14. 88? Только через цикл копируя в новый массив или есть какая-то готовая функция?
73 2000618
>>2000583
Есть, но выглядит уёбищно, лучше уж через цикл.
74 2000664
в чем отл mysql от postgres?
75 2000688
>>2000583
Есть array_filter, но положняк таков, что он сохраняет ключи, в итоге по твоему примеру у тебя останется дырявый массив с ключаемя 0 и 2. Чтобы переиндексировать его, нужно обернуть в array_values. В пхп 7.4 можно использовать стрелочные функции и спред, в итоге получится что-то вроде [...array_filter($arr, fn($item) => $item['ip'] === '1')]; но я бы так не стал писать
76 2000754
Спасибо аноны, пока сделал через цикл, попробую потом сделать через array_map и array_filter, чисто сравнить есть ли в них смысл
77 2000757
>>2000664
Вроде как в постгресе нативный джсон декоде есть, в мускул нет.
78 2000762
Аноны а такой вопрос, если мне нужно вывести значение из переменной которой ещё нет в начале страницы, как это сделать? С помощью функции? Вверху страницы пишем вызов функции, а снизу в ней определяем значение которое нужно будет вернуть?
79 2000771
>>2000762
Сперва всегда данные подготавливаются и только потом выводятся.
В крайнем случае можно так:
<?php
$pizdapidor = $db->select('WHERE blablabla ');
?>
<html>
<head>
...
</head>
<body>
<p><?= $pizdapidor ?></p>
</body>
</html>
sage 80 2000815
>>2000279
Ничего, через пять лет никич возможно свойства добавит, вот тогда-то заживем!
А вообще, в пыхошторме в три кнопки создаются все отсутствующие геттеры и сеттеры. Сначала alt+Insert, дальше сам.
81 2000963
>>1999639

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


У меня взорвалось очко от того что на более сложные задачи мне дают такие неинформативные ответы. Наверное, я не прав, что так грубо выражаюсь, спасибо за помощь.
image.png4 Кб, 101x229
82 2001009
Блджад посоны, столкнулся с тем что при сортировке по названию происходит такая хуйня, смотрите пик, что внезапно число 107 оказывается меньше чем 37 и выводится выше так как оно внезапно меньше, сортирую я это говно с помощью такого способа https://www.php.net/manual/ru/function.usort.php#example-5491 Пример #2
Как его отсортировать по человеческой сортировке где сперва будет 37, а потом 107? Вчера ещё натыкался на это но теперь не могу найти, всё это берётся из многомерного массива, так что сортировка просто по ключу или значению не вариант
83 2001027
>>2001009
По традиции, отвечаю сам себе strnatcmp
84 2001028
>>2001009
На сколько я понимаю он сортирует по первому символу строки.
Единственное, что могу посоветовать заюзать ip2long
85 2001189
>>1999625
1. Вкатился в 24. Вполне норм. Коллеги в среднем 30+
Для школоты пхп нимодна, они больше по жаваскриптам, да петухонам
2. Как первый - да, лучше взять что-то более строгое, классическое
3. Начинал тупо пролистав php.net и по ларакастам
4. 7ую бери, она сейчас везде на проде. Пока можешь xampp/openserver
5. Larave/Symphony - норм начало
Yii2 - устаревший кал
Zend - монструозный устаревший кал
86 2001237
>>2000771
Приучаем к хуевым практикам, а потом удивляемся, почему у пхп такая репутация
87 2001260
>>2001237
потому что сам дизайн языка корявый
88 2001281
>>2001260
Как будто тебя кто-то заставляет пользоваться этой легаси-хуйней из 90-х. Пхп конечно набит таким детским говном под завязку, но умные люди приводят к каким-то стандартам, развивают фреймворки.
Примерно то же происходит с жс, но намного быстрее в силу важности языка.
89 2001353
Аноны, вот есть либы для генерации эксель файлов.
А как такое самому , ручками навелосипедить? Есть статьи какие нибудь?
Чисто из любопытства.
90 2001360
>>2001353
Загляни в исходники тех самых либ, всё узнаешь
91 2001363
>>2001237
Блядь, он элементарные вещи спрашивает, а ты про фреймворки пердеть начал. Убейся что ли.
92 2001365
>>2001281

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


ЖС твой умирает как язык - сейчас почти везде тайпскрипт просят.
93 2001367
>>2001363
В глаза ебешься? Какие фреймворки?
Ты запостил код обращения к бд и хтмл рядом. Нуфаг прямо так скопирует и вот мы имеем +1 бед практис
94 2001379
>>2001367

>бед практис


Поясняй давай - где тут бед. И почему если <?php секцию сунуть в отдельный файл, то что-то должно поменяться?
95 2001383
>>2001379
Пиздец, с кем я в одном треде сижу...
96 2001396
>>2001383
Пруфы будут или так и будешь воздух портить?
97 2001400
>>2001396
Я мимо проходил, с долбоебами не общаюсь. Пусть тебе этот >>2001367 анон и поясняет, почему 2 + 2 = 4, если он хочет конечно.
98 2001406
>>2001400

>пук

99 2001410
>>2001365

>ЖС твой умирает как язык - сейчас почти везде тайпскрипт просят.


Лол блядь, ты вообще в курсе что ts это сахар над js?
100 2001412
>>2001379
Как минимум средней руки разраб не ожидает, чтоб шаблон будет общаться с бд. Задача шаблона отобразить данные, а не искать их.
101 2001413
Как писать сайты в ООП стиле?
102 2001417
>>2001413
$sait = new Sait();
$sait->make('zaebis');
103 2001418
>>2001353
xlsx это xml обычный и стили всякие в зип архиве, там ничего сложного. А старый xls это бинарная дрисня, его долго и нудно реверсили.
104 2001419
>>2001383
Но вообще технически код отделен от разметки. От того что ты вынесешь шаблон в отдельный файл - не дохуя изменится. Архитектурно ниче не поменяется.

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

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

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

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

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


Многие как запомнили начальные примеры, так потом и на продакшене срут. А там, не факт, что сидят люди умнее их или готовые это всё править. Так и остается нуфаг с бед практисом.
Отсюда и пошли все эти толстые контроллеры, потому что в документации так пишут.

Ну и мы пишем код в первую очередь для людей, для текущих и будущих коллег и для завтрашнего себя. Никому не хочется копаться в велосипедах, особенно в чужих
107 2001431
>>2001417
а что в классе Site находиться?
108 2001433
>>2001427

>Многие как запомнили начальные примеры, так потом и на продакшене срут.


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

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


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

>Никому не хочется копаться в велосипедах, особенно в чужих


Это не совсем велосипед - это старый стиль разработки на пхп, когда веб был проще. Хуёво, что ты такого не знаешь и считаешь велосипедом.
109 2001435
>>2001431

>а что в классе Site находиться?


Вот это
>>2000771
110 2001442
>>2001421
А C это сахар над ассемблером.
Сказать то что хотел?
Существует стандарт ES, который поддерживают браузеры. TS полностью зависит от этого стандарта. Завтра откатят ES к 2010 году и привет твоему тайпскрипту.
111 2001444
>>2001435
это не описание класса,где свойства,методы(ну один есть)?
112 2001445
>>2001442

>Сказать то что хотел?


У тебя проблемы с логикой.
Лично ты можешь называть js - ассемблером.
113 2001446
>>2001444
Иди Зандстру читай, приоткроются глаза.
Так ты ничего не поймешь.
114 2001451
>>2001445
А у тебя проблемы с тем, что ты себя считаешь молотком, а остальных гвоздями. Даже тут единицы тех кто будет с тобою вести праздный полудиалог-полусрач. Всем похуй на твои попытки самоутвердиться.

Арибидерчи:3
115 2001461
>>2001433

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


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

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


Деды так делали и нам велели. Только сейчас за такое по рукам надают. Ну а если не надают, то лучше сменить место работы
116 2001463
>>2001461

>Деды так делали и нам велели.


Я ж говорю - сразу на фреймворки ни у кого не получится. В любом случае придётся проходить эволюционный путь самого языка, в том или ином виде, чтобы понимать что как и зачем было придумано. А не как местные мартышки - вызубрили "бест практис", а зачем он нужен понятия не имеют.
117 2001469
>>2001413

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

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

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

Есть официальная спецификация и для XLS (бинарный формат), и для XLSX (это zip-архив с XML-файлами). Ты можешь нагуглить их и попробовать сделать свой читатель/писатель этих файлов. Но должен предупредить, спецификация там в сотни страниц.
119 2001491
>>1999765

>Ну, для фуллстек-приложений на Symfony уже характерно наличие ноды (encore / webpack).


Хмм, может я чего-то не знаю, но каким образом сборка фронтенда связана с работой на ноде? Тем более, там же вроде нода лишь под капотом.
120 2001499
>>2001009

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

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

Символ "3" считается "больше", чем символ "1", потому строка "37" больше чем "107".
121 2001547
>>2001491

>но каким образом сборка фронтенда связана с работой на ноде?


Чем фронтенд на проде собирать изволите? Ручками?
122 2001635
>>2001499
Ну да, натуральная сортировка называется или как-то так
123 2001896
>>2001413

>Как писать сайты в ООП стиле?


Зачем тебе ооп стиль? Все зависит от задачи. Если твоя задача сделать только три статические странички - нет смысла ставить туда симфони. А тому мудаку, который оскорбил уи я скажу - иди ты нахуй мудак оскорбивший уи
124 2001925
>>2001896
Да откуда вы все блядь повылезали в последнее время? То у вас запросы к БД в шаблонах нормальная практика, то йии и процедурщину защищаете, то CMSки и прочее. Вас действительно много по весне оттаяло или ты один человек?
Да, никто не спорит, для всего есть своя ниша. Но у нас тут тред разработчиков, а не макакенов. Макакены вроде как в /wrk/ сидят, по крайней мере года два назад сидели.
А эта доска называется "Программирование", если кто-то не обратил внимания. Где в ваших Yii и CMSках программирование, скажите?
Какое отношение

>сделать только три статические странички


имеет к программированию? Съебались нахуй отсюда, Господа.
125 2001935
>>2001925

>Где в ваших Yii и CMSках программирование, скажите?


Мартыха, ты понятия не имеешь - что такое программирование, если написал такое.
Сиди лучше молча.
126 2001953
>>2001925

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


Запросы в шаблонах охуенно же. Можно намакакать пять страничек, пока господин программист пишет контроллер для одной.
127 2002216
>>2001935
Senior Wordpress Developer в треде, количество шизофазии в треде увеличено втрое.
128 2002365
>>1999639

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



https://ideone.com/KWu2kP
129 2002397
>>2002365
Смотрю на ваши задачки и тоже хочется что-то мелкое попилить.
А приходится шатать легаси на пол ляма строк...
130 2002413
>>2002365

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

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

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

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

Уточняй, если что непонятно.
131 2002651
Сосоны, я начал читать Мэтта Зандстра ООП.

Похвалите меня, я с очень большим трудом понял прочитанное по темам Синглон и Абстрактная фабрика. Дальше читаю шаблон Прототип
132 2002710
>>2002651
Что понял?
Сможешь написать свой синглтон и фабрику?
133 2002718
>>2002710
Понял как строки кода из примеров работают. То есть понял, что написано в строках кода, что они делают.

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

В моём понимании так - мы берём количество записей, делим на 100 и получаем количество страниц, пагинацию пока опустим, далее мы берём номер страницы из гет запроса и делаем следующее - умножаем номер страницы на 100 и вычитаем 100, так мы получаем начальный индекс с которого нужно вырезать массив, например 3 страница, $cut = 3 100 - 100 или $cut = (3-1) 100 получаем array_slice($arr, $cut, 100)? Или как ещё по номеру страницы из гета определить с какого ключа и по какой нужно вырезать 100 записей?
135 2002872
>>2002857
Ну а концепция пагинации такая что если 1 страница, то выводим ссылки на 2 страницу, предпоследнюю и последнюю, а если допустим 100 страниц и мы на 10, то выводим 1, 2 страницы, предпоследнюю, последнюю и две влево и вправо от текущей страницы, то есть 8, 9 и 11, 12?
136 2002976
Столкнулся с какой-то очень странной фигней. Импортирую стили прямо в scss:

>@import '~select2/dist/css/select2.min.css';


>@import '~select2-theme-bootstrap4/dist/select2-bootstrap.min.css';


Всё работает. Но хотелось бы импортировать их в джаваскрипте, вот так:

>import 'select2/dist/css/select2.min.css';


>import 'select2-theme-bootstrap4/dist/select2-bootstrap.min.css';


Ошибок никаких нету, вебпак нормально собирается, но стили не импортируются(
При том что такой код у меня работал на другом проекте, на ларе, где над вебпаком Mix.
Сейчас же проблема эта на проекте с Симфони, может это какая-то специфика Encore?
138 2003112
Посмотрите htmldog.com как вам по содержанию, полезно?
изображение2021-04-21071842.png16 Кб, 1260x115
139 2003144
Возможно я просто сонный и чего не догоняю но вот проблема, из бд мне возвращается ничего, а в ошибке пишет просто "Ошибка". Таблица точно есть, и данные в ней тоже, регистрацию то запилил а тут что не так может быть?
140 2003169
>>2002413
Вроде бы получилось сделать с условиями как в задаче:

https://ideone.com/tSOxlD
141 2003223
Аноны, по вашему совету сделал сохранение топа в файл путём сохранения топа в временный файл и потом его переименование в нужный файл чтобы не было коллизий когда файлы затирают друг-друга, и столкнулся с тем что рандомно в течении дня проихсодит такая фигня что временный файл не удаляется, он в основном с рандомным именем и весит 0 килобайт, но есть и файлы размером в половину или весь файл топа в пол мегабайта, почему это может быть что временный до переименования файл не удаляется и остаётся? Приходится писать скрипт и удалять эти файлы им, потому что у них стоят права -600, и руками по фтп они не удаляются
142 2003289
>>2002857

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

>>2002872

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

>>2003091

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

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

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

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

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

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

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

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

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

>>2003169

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

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

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

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

После этой задачи, если ты ее сделаешь, я советую попросить у меня дополнительные задачи на массивы и рекурсию.
144 2003297
>>2003223

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



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

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

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



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

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



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

>возможно из-за превышения времени выполнения или ограничения на объем памяти


Точно, скорее всего проблема в ограничении памяти, то сть на сайт заходит много человек и идёт превышение памяти от чего скрипт просто дропается, ошибки быть не может так как запись идёт в самом конце файла, логи к сожалению посмотреть не могу, хостинг не даёт, но скорее всего из-за перегруза оперативки, на деректории стоят права -755, но я всё равно не могу руками удалить эти временные файлы -600, только скриптом явно указав их имена
146 2003344
Бамп годному треду.

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

Спасибо
image.png394 Кб, 500x500
147 2003367
>>1998470 (OP)
Пиздец, сел за одну легаси-часть проекта которая была написана на похапэ, раньше к ней не притрагивался, сразу же ахуел
Там как-то эти сраные темплейты рендерятся пыхой через хуй-пизду, прямиком в темплейтах сидит жс (жкьюри) код, чтобы сделать элементарную операцию вроде захода посетителя на новую страницу проходит несколько php-запросов, которые высирают эти ебучие tpl... И вот это считалось считается нормой. Просто пиздец. Нахуя вы это делаете?
148 2003383
>>2003367

>Нахуя вы это делаете?


За поддержку этого говна платят.
А так на пыхе особо выбора нет. Либо легаси поддерживать, либо в cms окунаться
149 2003429
Надо ли знать ооп, чтобы клепать сайты на cms-ках?
150 2003558
>>2003429
Если из плагинов клепать то там и программирование не нужно.
151 2003567
Здравствуйте, работяги. Я начинающий недо-ученик, в своей методичке дошёл до задания, цитирую: «с помощью двух циклов создайте двумерный массив такого типа: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]»

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

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

foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
154 2003584
>>2003576

> вордпрессу


Индусское говно. Работа с сИэМэС это неблагодарный ад.

> Дмитрия Полоса


Хз чо за хуй.

Мб стоит учить фреймворк?
155 2003585
>>2003567
https://pastebin.com/rfjtfeGt

Это не решение, а намёк, решать давай сам уже, там почти всё готово
156 2003601
>>2003294
Хорошо, при проверке data на false результат тот же
157 2003619
>>2003601
Так, а зачем проверка на false если в data - null, значит проблема в бд или в логине, но я вроде не совсем аутист, в бд есть записи, и логин передается
158 2003628
>>2003601

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

Если функция вернула false, то будет указана причина ошибки. Если функция вернула null, то естественно ошибки нету.
159 2003640
>>2003628
При === возвращает null, данные то все равно не находит
160 2003694
>>2003144
Пробовал сам скл запрос вызвать (без пхп)?
161 2003725
>>2003694
Да, все работает
162 2003737
>>1998470 (OP)
вопрос тупой очень мда но я спрошу
я ваще конкретный чайник пока в этой сфере и мне хотелось бы узнать
как мне сделать так чтоб я мог дать тегу <img> например собственное имя и в CSS управлять условными <img1> и <img2> по отдельности надеюсб ясно изъяснил
163 2003740
Bump
164 2003741
>>2003737

> собственное имя и в CSS управлять условными <img1> и <img2> по отдельност


классы им задать
14-148474pepe-the-frog-smart-hd-png-download.png40 Кб, 303x280
165 2003746
>>2003294

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


Не понял, что имеется ввиду.

https://ideone.com/tSOxlD

Вот так пока сделал.
166 2003752
>>2003741
а каккакать
167 2003760
>>2003752
<img class="img1"> а вообще погугли про элементы и атрибуты на MDN, ну че ты как этот
168 2003762
>>2003760
Да я знаю что как этот. Просто я нубик еще вкатился чисто чтоб сайт своей "муз.группе" сварганить ,могу скинуть в зацените)
169 2003770
>>2003585
Разобрался сам, огромное спасибо тебе, аноний. И доброго вечера.
170 2003774
171 2003783
Аноны, как из этого дерьма узнать что это за браузер?

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

Я думал что по последнему названию, то есть здесь это Safari, но нихуя, это Chrome
172 2003801
>>2003783
Есть мильйон либ для их разбора.
173 2003841
>>2003783
https://www.php.net/manual/ru/function.get-browser.php
Там еще в коментах либ насыпали
174 2004108
>>2003801
>>2003841
Бля засирать код чужими костылями которые делают миллион бочек прежде чем выдать результат, да мой сервер загнётся пока проделает это 100000 раз чтобы их все разшифровать
175 2004121
Аноны как вам такой код для детекта брузера? Вроде бы всё правильно выдаёт и не большой, стоит на него положиться? https://www.php.net/manual/ru/function.get-browser.php#123473
176 2004276
>>2003325

> на деректории стоят права -755,


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

>>2003640

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

>>2003367

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

Ну в том же реакте, например, в одном файле пишут и JS-код и похожую на HTML разметку. А вместо одного удобного шаблона там куча мелких компонентов - сиди разбирайся.
177 2004302
>>2004108

>Бля засирать код чужими костылями


Лучше засрать своими, от этого ничего не загнется.
Ну вон юзай встроенную функцию. Вряд ли что-то шустрее найдешь

Ну и необязательно сразу все строчки разбирать. Разбей по чанкам, сохраняй промежуточный результаты. Мб очередь прикрутить, хорошо подходит под эту задачу
178 2004314
>>2003746

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

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

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

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

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

-----

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

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

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

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

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

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

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

$install = 'A';

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

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

Если захочется погуглить, то это называется задача топологической сортировки.
178 2004314
>>2003746

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

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

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

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

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

-----

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

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

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

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

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

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

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

$install = 'A';

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

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

Если захочется погуглить, то это называется задача топологической сортировки.
179 2004321
>>2003576
И что скажешь? Норм курс?
А то я скачал и не могу нормально начать его проходить - постоянно в сон клонит от его голоса
180 2004328
>>2004121
Что вообще делать с пользовательским юзер-агентом?
Какие-то тонкие настройки браузер специфик цссов?
Для статистики я бы пихнул третьи метрик сервисы
181 2004349
>>2004321
Я поставил скорость 150%. На безрыбье и Дмитрий Полос гуру инфоцыганства
182 2004404
>>2004314

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



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

Задачки решу и скину, спасибо.
183 2004430
>>2004321
А ты уверен, что тебе нужен вордпресс? В шапке советуют фреймворки учить, а не цмс.

Я вот опустившийся человек, я знаю на что иду, поэтому целенаправленно иду на вордпресс
184 2004431
>>2004404

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

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

> for($N; $N>=0; $N--){


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

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

> }


> else{


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

> $result = [];


> array_push($result, $sum, $str);


>return $result;


это можно записать короче как return [$x, $y].

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

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

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

Так будет чуть нагляднее.
184 2004431
>>2004404

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

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

> for($N; $N>=0; $N--){


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

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

> }


> else{


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

> $result = [];


> array_push($result, $sum, $str);


>return $result;


это можно записать короче как return [$x, $y].

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

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

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

Так будет чуть нагляднее.
185 2004441
>>2004430
Да я просто хочу побыстрее вкатиться, а там уже по ходу дела переметнуться в ларавель
186 2004450
>>2004441
В ларавель с нуля вкатываются
187 2004452
>>2004276

>Шаблоны использовать плохо


Да

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


Пиздец как плохо

>там куча мелких компонентов


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

>Ну в том же реакте, например, в одном файле пишут и JS-код и похожую на HTML разметку


Там своя хуйня, ничего не скажу за реакт, я с ангуляром работал (в реакте особый язык JSX вроде или как-то так)
188 2004453
>>2004441
Вротпресс тоже долго учить. В гло академии в марте стрим был - там челик спросил у Артема Исламова - можно ли до начала лета успеть вротпресс освоить, если каждый день дрочиься не вылезая из компа. А Исламов сказал, что очко ставит, что нельзя вротпресс с марта до лета задрочить
189 2004462
>>2004441

>Хочу вротпресс


>чтобы потом ларавель


тоже самое, что

>хочу налево


>чтобы потом направо



Начинай с ларакастов сразу херачить крудик. Тебе знания вротпресса только мешать будут
190 2004465
>>2004462

Какие ларакасты, если он ООП не знает? Надо изучать основы сначала.
191 2004466
>>2004276

>А вместо одного удобного шаблона


Сваленная в кучу верстка, стили, жс на несколько тысяч строк - удобный шаблон?
В таком шаблоне невозможно понять, где заканчивается один компонент и начинается другой.
Можно с тем же успехом код не разбивать по файлам
image.png12 Кб, 802x66
192 2004467
Вот это платина как по мне
Так там выставляется токен для посетителя
>>2003367
193 2004480
>>2004450
>>2004453
Ладно, раз такая пьянка, продолжу тему вкатывания.

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

Есть еще куча сверстанных оригинальных макетов, но врядли они в этом случае что-то значат.
194 2004541
>>2004480
Стажеры не нужны
195 2004547
>>2004276
С находом данных разобрался, как у меня обычно бывает это была синтаксическая ошибка
sage 196 2004578
>>2004276

>Использовать JS код в шаблонах плохо?


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


Ну ты ебанутый...
sage 197 2004579
>>2004462
Двачую этого
198 2004595
>>2004465
В ларакастах и про основы пхп и про ооп есть свой mvc фрейм пилят по типу лары с нуля
image.png15 Кб, 776x193
199 2005020
((
200 2005048
Блин, да что сделать с Симфони формами, чтобы я мог в ChoiceType добавить с помощью js какой-то кастомный <option>, и он у меня в результате не отсеялся и прошел валидацию?
На стаковерфлоу нагуглил какие-то полтора наркоманских совета, которые на практике не работают. Не верю что в таком продуманном большом фреймворке могут быть настолько анальные ограничения.
201 2005064
>>2004480
MVC сейчас уже почти нигде не нужен, по крайней мере, где платят жирно, лучше осваивай DDD, событийную модель и бэкендовый бэкграунд. Шансов вкатится в нормальную контору будет поболе.
202 2005087
>>2005064
А как мвс и ддд мешают друг другу?
203 2005098
>>2005087
Неа, но в реальном мире у тебя V отваливается как минимум, а как дефолт ты начинаешь мыслить другими критериями и вопрос отделения контроллера от модели уже не встает.
204 2005232
Какая средняя зп у php-миддла в Москве и Барнаулах?
205 2005248
206 2005256
>>2005248
Блять middle-php, а не сколько ты за 6-1 по 12 часов грузчиком у себя в пятерочке получаешь.
image.png4 Кб, 796x55
207 2005281
Аноны, есть вот такая функция которая смотрит какая сортировка включена и передаёт гет в функцию strnatcmp, в один момент может быть только 1 из сортировок, или sort или rsort, чтобы не городить код с проверкой какая сортировка пришла я сделал их вывод через точку как на скрине, и у меня ВСТАЛ вопрос, а как можно сделать правильно без проверок? Пытался сделать типа $_GET['sort'] || $_GET['rsort']] но это не работает, как передать в $_GET 2 названия которые нужно проверять и чтобы он выводил то что из двух имеется? Или вариант который я сделал самый короткий?
208 2005289
Здравствуйте. От безысходности откликался на всё подряд, даже не читая вакансий. Ответили с компании в моей Мухосрани. Тащемта раньше интересовался программированием, но меня не хватало, есть ли сейчас смысл с помощью гугла решать эти задачи и идти на собеседование. Программирование - тема интересная, но времени на её изучение крайне мало. Смогу ли в процессе разобраться, параллельно изучая всё и вся, что связано с пхп
image.png3 Кб, 1097x22
209 2005295
>>2005281
И 2 вопрос как вот это сократить? Как проверить наличие запроса в гет сразу нескольких переменных? Или только так как на скрине?
Screenshot20210423115247.jpg252 Кб, 1080x1696
210 2005300
>>2005289
Со вторым заданием проебался, извините
211 2005311
.
212 2005393
Аноны, есть один апи, он лежит на сайте по адресу site.ru/api/hui, я прописал в robots.txt запрет на индексацию раздела Disallow:/api, могут ли поисковые системы из-за этого перестать грузить этот апи? Просто я сохраняю в логи всех кто загружал апи чтобы отслеживать плохие запросы, а тут заметил что от туда просто пропали все боты яндекса и гугла, блокировку раздела /api в robots.txt я уже удалил, но уже 2 день ботов в логах так и нет, они могут грузить станицу но резать запрос на апи потому что он был запрещён в robots.txt? Или это ебучий хостер что-то делает что в логах не сохраняются запросы от ботов? Или после разблокировки раздела в robots нужно ещё подождать?
213 2005394
>>2005256
Найс подрыв)
Интересно что же ты понимаешь под похапэ мидлом?) Он умеет что? У него опыт в крудошлепстве какой? Что кроме пыха умеет? Как у него с фронтом? Как с nosql? Как с очередями? как с кешированием? Как с написанием микросервисров?
Мидл в конторе на одном конце дс = некомпетентное чмо для конторы на другом. И у каждой блядской конторы свои требования и свои понятия лол кто пхп мидл, а кто черт ебаный. И зп у так называемого мидла могут быть 30/60/100/150 к.
Пиздуй смотреть ххашечку / гикжопы / хаброкарьеру
214 2005422
>>2005394
Я к чему вообще спросил, у меня знакомый один, он устроился на мясокомбинат, вообще нихуя не нужно было для этого, никаких знаний, корок. Зп 40-45. И также в моем мухосранске на хх висят объявы "пхп-разработчик", требования, на мой взгляд, там выше чем к джуну. Зарплата написана 45-60. Это что означает, те кто разместил эти объявы пидарасы которые хотят изъебнуться и найти за лоу прайс дурачков? Нахуй вообще нужно дрочиться и че-то изучать и практиковать годами, если ты можешь просто пойти хуярить быдлорабочим на производстве. Мое мнение, у чела с опытом в несколько лет на пыхе должна быть зп 75к в провинциальном городе.
215 2005467
>>2005422

>И также в моем мухосранске на хх висят объявы "пхп-разработчик", требования, на мой взгляд, там выше чем к джуну. Зарплата написана 45-60.


К сожалению не самый плохой варик для мухосрани

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


да, провинциальная разработка как она есть

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


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

>если ты можешь просто пойти хуярить быдлорабочим на производстве


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

>Перспективы и то, что жопа в теплом офисе/в квартире. Если человек немного способен в программирование, у него есть усердие, сила воли и интерес, то можно вполне себе зарабатывать нормальные деньги и даже на пхп и не надрывать жопу.



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



Для профессий с высоким порого вхождения должна быть на голову более высокая оплата, а не просто "офис, тепло, не надо махать киркой".
217 2005522
>>2005467
Два чая. В совсем уж мухосрани только развиваться собственными силами, потом релокейт/удаленка, хотя бы в крупный миллионник. Там уже можно найти +- адекватные конторы, готовые платить адекватную зп (100-150) именно за мидловый бэкенд на пыхе. Но, как анон выше писал - с одним знанием php и какой нибудь лары ты там нахуй не нужен, так что придется запотеть.
218 2005538
>>2005522

>крупный миллионник


>готовые платить адекватную зп (100-150) именно за мидловый бэкенд на пыхе



Хочешь сказать в Новосибе будут столько платить?
219 2005568
>>2005422

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


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

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

В моем миллионнике есть несколько контор с приличными зп, но за ними стоят достаточно крупные неместные (дсы/запад) клиенты.
На одну из таких работаю
220 2005578
>>2005513

>должна быть


Во первых никто тебе ничего не должен кроме тебя самого

>с высоким порого вхождения


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

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

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

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

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

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

Кажется, я нашел способ решить задачу быстрее. Например, в примере выше нам потребуется лишь 40002 = 16 миллионов шагов.
231 2006075
>>2006032

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

Это когда тебе надо работать с заранее неизвестными купюрами, например в 16, 17, 983 и 3751 рубль (заранее неизвестными), вот тогда уже сложно становится.
233 2006101
>>2005713
Победитель гугл кикстарта в треде блять, щас пояснит за скорость решения
234 2006110
>>2006096

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

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

Если же взять купюры 500, 200 и 100 то 500 нельзя набрать купюрами по 200 и алгоритм не сработает.
235 2006112
>>2006096

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

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

Тут "жадный" алгоритм возьмет 1 купюру по 500, останется 100 в остатке, но их он выдать не сможет.
236 2006120
>>2006075
То есть весь этот пиздец потому что я ищу русское слово? То есть stristr не может правильно привести слово из массива в нижний регистр чтобы сравнить?

Выход это прописать mb_internal_encoding('utf-8') и использовать mb_stristr?
237 2006121
Кстати, наша задача про банкомат эквивалентна задаче про грабителя (вот видите, наши задачи полезны и в реальной жизни):

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

---

Если заменить "золотой слиток весом x" на "1 купюра номиналом X", то получается задача про банкомат.
238 2006122
>>2006110
Всё верно, но всё равно алгоритм элементарно "хардкодится".

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

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

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

Когда рандомные номиналы, вот тогда уже надо ДП подключать.
239 2006127
>>2006112
А, понял о чём ты.

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

В любом случае под конкретные купюры задача сильно упрощается, даже с перебором, перебор будет проще.
240 2006130
>>2006121

>Если заменить "золотой слиток весом x" на "1 купюра номиналом X", то получается задача про банкомат.


Очевидно нет. Банкомат должен конкретную сумму выдать, а грабитель должен взять сумму не больше K. Но можно чуть меньше.
241 2006158
>>2006075
Пиздец анон спасибо, а то я уже с ума чуть не сошёл нахуй, не до конца тогда понимаю почему с большой буквы он всё таки находил, типа потому что при приведении строк в 1 битовые буквы в нижнем регистре они тупо просто совпадали я так понимаю, или даже потому что большая и маленькая буква имеют разные биты, точно
242 2006180
>>2006122

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

>>2006130

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

>>2006120

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

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

И типа тот который прилетит и запишется в переменную, а остальные просто дадут пустоту? Как правильно сделать? Этот способ работает, но мне кажется есть более правильный и такой же короткий
244 2006219
>>2006180
Я сижу в других тредах, где к программированию на PHP принято относиться поплёвывая свысока.

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

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

Задача о рюкзаке намного сложнее.
245 2006249
>>2006182
Засунуть ключи abcd в массив и проверять форичем isset($_GET[$i])
246 2006305
На сервере должны храниться все маки когда либо подключенных устройств. Как заранее загрузить с файла в оперативку до этого полученные маки, чтобы с ними сравнивать и не плодить копии, один раз. Это же бред для каждого подключения грузить файл с диска, а потом еще и если сохранять могут проблемы возникнуть при параллельном чтении/запси
247 2006316
>>2006219

> где к программированию на PHP принято относиться поплёвывая свысока


ванильный жс хуже если тебя утешит
248 2006382
>>2006305

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


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

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

Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.
249 2006482
https://ideone.com/QNJUya - Шифровка
https://ideone.com/RJN4F2 - 9| '/ |\/|4|\/|bI ><4|<[-|>
https://ideone.com/A2QEmU - На словах ты Лев Толстой
https://ideone.com/R8YiQI - Маяковский попытка
https://ideone.com/CvSBIm - Палиндром
https://ideone.com/4RPmjR - Айпад
ОП или кто нибудь можете проверить? Вдруг неправильно? Завтра регулярные буду изучать.
250 2006487
>>2006101

>Пук


Так победитель не в скорости, а в логике, лул.
251 2006488
>>2006249
Блин а чё нет варианта типа isset($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e'])? Цикл не всегда вариант вставлять
252 2006496
>>2006488
isset(...array_map(fn ($a) => $_GET[$a], ['a', 'b', 'c', 'd']));
253 2006504
>>2006382

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


Ну если средствами mysql это сделать быстрее и проще, то ок. Я думал на php такое быстрее написать.

> Каким образом твой скрип узнает мак адрес подключённого устройства я тоже не спрашиваю. Хотя узнать нельзя, по tcp/ip вне сегмента локальной сети эта информация не высылается, на уровне JS получить мак адрес тоже нельзя.


Клиент не через браузер подключается. Собственная c++ прога, которая мак узнает
254 2006507
>>2006496
На серваке пхп 5 версии, не вариант, кстати вот такой вариант тоже работает
if ($_GET['a'].$_GET['b'].$_GET['c'].$_GET['d'].$_GET['e']) как только одно из значений есть то условие срабатывает, но всё равно хочется что-то более правильное и без циклов
255 2006510
>>2006507

>пхп 5 версии


Соболезную. Надеюсь платят тонны нефти.
image.png201 Кб, 1276x720
256 2006550
Написал стыковку на похапе, всё нормально будет?
257 2006553
>>2006510
Я для себя пишу, хостер ебанат не хочет обновлять
258 2006557
Блджад посоны, почему вот это выдаёт ошибку?

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

Как правильно делать вывод условия в конкатенации?
image.png1,5 Мб, 1277x716
259 2006565
Ну похапе не подведи
260 2006930
>>2006553

>пхп 5 версии


>Я для себя пишу


Умом россию не понять
Screenshot2.jpg114 Кб, 810x824
261 2007046
Учу по туториалу из оп-поста. Тема - переменные.
Вот, есть такой код

<?php

error_reporting(-1);

$x = $x + 10;

Должно ли вывести после сложения какой-либо результат? У меня ничего нет.
262 2007071
>>2007046

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

Например,

echo $x;
263 2007073
>>2007071
Черт возьми, точно!
Спасибо
264 2007076
Привет, анонасы, хелпание, помогите разобраться. При устройстве на мидла нужно иметь какие-то свои проекты? Вот проработал джуном годик, чувствуешь, что можешь на мидла, но нет никаких своих проектов или это уже не нужно? Нужно было только при устройстве на джуна, чтобы хоть как-то показать свои умения?
265 2007081
>>2007076
Привет, анонас. На мой взгляд не нужно. При найме людей там где я работал никогда не было обязательно, если что-то есть на гитхабе, то хорошо что можно посмотреть стиль, как человек пишет, нет, да и хуй с ним, так пообщаемся. У меня своих проектов вообще никогда не было.
266 2007086
>>2007081
Главное чтобы кандидат по зарплате не раскатывал губу! А гитхаб не нужон он
267 2007108
>>2007086

>git


Полезная штука, считаю, что знать её сука обязательно!
268 2007123
>>2007108
Нинужна. Все российские компании сидят на хохлятском гитлабе ну почти все
269 2007188
>>2007076

>чувствуешь, что можешь на мидла


Связанный список напишешь? Сложность алгоритма посредством математической индукции сможешь доказать? Нет == не миддл.
270 2007206
>>2007188
А если могу, то == мидл?
271 2007251
>>2007206
Если можешь то мидл.
272 2007298
что эти ваши токены?
Аноны, вопрос к вам, где вы берете идеи для своих проектов!? 273 2007349
У меня вот творческий кризис, можете понакидать идей?
274 2007358
>>2007188
А как big o с помощью мат. индукции вычислить? Что то не припомню такого.
275 2007403
>>2007251
Ах, какбы я хотел, чтобы это так и работало. К сожалению сегодня средний мидл на бэке - это прост чувак который знает стек и просто умеет в ооп и смежную инфраструктуру.
Ебал бы каждого за алгоритмы на собесах, если бы решал я.
276 2007440
Обращаюсь к работающим анонам. Накидайте, пожалуйста, в тред примеров своих задач с работы. А я за это помолюсь за вас Господу нашему Иисусу Христу
277 2007482
>>2007358
Посмотри в CLRS
278 2007497
Написал разбор задачи про банкомат: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md

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

Гляньте, если интересно, и пишите, если что-то непонятно рассказано.
279 2007508
>>2005656

> Переменные


> Кубик


Ок

> Два кубика


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

> Вклад


Верно

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



В общем, верно, но коряво сделан вывод:

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



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

> Массивы №1


> Массивы №2


> Массивы №3


Все верно

> Генератор имен


Правильно.
280 2007515
>>2007440
Да пожалуйста.
a-12675 Исправить ошибку авторизации (при редиректе с oauth сервера), при отправке формы в задаче a-12579

a-12789 В очереди загрузки файлов из кабинета платильшиков накапливаются невыполненные задания
281 2007526
>>2005048
Бамп вопросу, еще актуален. Или серьезно никто в мире не знает, как обойти такое идиотское ограничение?
282 2007528
>>2007526
Тьфу. Брось каку
283 2007530
>>2007528
Ты про симфони или про пхп?
284 2007531
>>2007530
Про симфони формы
285 2007533
>>2007531
В смысле если ты с ними решишь на фронтенде что-то делать, это будут сплошные костыли и боль. No way
286 2007538
>>2007533
хотя если тебя не смущают костыли и лапша которую трудно разобрать как она отрабатывает и готов дебажить сутками то смотри в сторону https://symfony.com/doc/current/form/events.html
287 2007568
>>2007526

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

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

Так ты получишь виджет, который можно потом добавить в любую форму.
288 2007570
>>2007533

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

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

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

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

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

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

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

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

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

Главное, хочу сказать спасибо опу, чьи уроки мне очень помогли вкатываться в пых. Я желаю тебе всего самого хорошего, чел - ты красавчик, спасибо за твои уроки, они делают чью то жизнь лучше.
294 2007645
>>2007640
>>2007638
Ебучий макак. Я нинарошна.
295 2007686
>>2007638
Поздравляю, аноний. Правда зп твоя все еще в два раза меньше, чем у посудомойщицы в любой нормальной стране, но по нашим меркам ты почти как сын депутата

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


Эх, сколько уже времени пытаюсь миновать твои первые два этапа и сразу вкатиться сюда. А вакух то нет)
296 2007690
>>2007640
Поздравляю тоже. Ты молодец. Мне немношко завидно и грустно
297 2007789
>>2007508
Спасибо. Можешь еще проверить? - >>2006482
16172116062280.png1,6 Мб, 3840x2160
298 2007790
>>2007349
У меня есть как раз то, что тебе нужно.
299 2007824
Аноны, вопрос немного не в тему, я тот анон что юзерагенты собирает, заметил переходы с info.ertelecom.ru, может кто знает что это? Провайдер перед посещением сайта показывает свою заглушку? Есть такое у кого?
300 2008237
https://ideone.com/pZ36bd - Номера машин
https://ideone.com/oktwDf - Телефоны
https://ideone.com/sryKy6 - Телефоны с исправлениями
Пока эти три сделал, долго думал над ними проверьте пожалуйста!
301 2008246
>>2008237
Там в некоторых местах будут пропущены \\ я знаю что это ошибка, просто не исправил во время и оно не дает мне исправить уже.
1619500885501.png617 Кб, 728x1000
302 2009853
За сколько минимум по времени можно выучить достаточно, чтобы откликаться на вакансии джуна?
За 3 месяца реально задрочить php, ларку и уже идти искать работу?
303 2009888
>>2009853
Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.
304 2009948
>>2009888

>Я учебник в шапке решаю уже полгода с чем-то, так что сомневаюсь.


Что там решать пол года?
305 2009950
>>2009853

>За 3 месяца реально задрочить php, ларку и уже идти искать работу?


Если не тупой и задротишь часов по 40 в неделю, то вполне
306 2009979
>>2009853
Самый быстрый вкат, который я видел - 7 месяцев. Весьма одаренный малый был. За три месяца с нуля - яхз какая компания на лару возьмет такого джуна.
307 2010050
>>2007789

> Шифровка


> 9| '/ |\/|4|\/|bI ><4|<[-|>



> echo $cipher = strtr($text, $code)


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

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



> $wordArr[0][array_rand($wordArr[0])


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

> Маяковский попытка


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

> Палиндром


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

> Айпад


> $loan += ($initDeposit == 0) ? ($loan $percent) + $comission : ($loan $percent);



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

> $loan - $payment < 0


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

В остальном все верно.
307 2010050
>>2007789

> Шифровка


> 9| '/ |\/|4|\/|bI ><4|<[-|>



> echo $cipher = strtr($text, $code)


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

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



> $wordArr[0][array_rand($wordArr[0])


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

> Маяковский попытка


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

> Палиндром


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

> Айпад


> $loan += ($initDeposit == 0) ? ($loan $percent) + $comission : ($loan $percent);



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

> $loan - $payment < 0


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

В остальном все верно.
308 2010057
>>2009948
Может сам посмотришь и мне скажешь?
309 2010059
>>2008237

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



> [А,В,Е,К,М,Н,О,Р,С,Т,У,Х]


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

> Телефоны


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

> Телефоны с исправлениями


То же замечание, что и в предыдущей задаче, в остальном верно.
310 2010060
>>2009853
За 3 месяца можно многое успеть, особенно если ты в месяц занимаешься этим 300+ часов (10 часов в день уделяешь работе). Как вот этот чел - https://www.youtube.com/watch?v=uGrBHohIgQY&ab_channel=WilliamLin - он каждый день вставал, мылся и садился решать задачи, с перерывом на обед.
Если спросишь про меня, то я смотрю на вакансии и что они требуют в основных навыках, пока я это не знаю - не пойду, ибо не примут. Соответственно смотри по своим предпочтениям обязательно, ибо если неинтересно то зачем тебе тратить на это время, ведь потом это будет казуальным мучением.
А еще - если ты куда то торопишься, забей. Твои ресурсы тебе же не позволят ничего быстро сделать, ну к примеру адаптировать новые знания, тебе нужно отдыхать, мозг это тоже орган и он должен отдыхать, закреплять нейронные связи (Или как то так я не нейробиолог). Надеюсь помог, просто сталкивался с этой проблемой времени когда изучал свой первый язык программирования, если что еще спрашивай может я что-то знаю полезное для тебя.
cursed2Bcat2Bimages2Bideas2Bin2B20211.png565 Кб, 457x580
311 2010067
>>2010050
>>2010059
Спасибо ОПчик! После регулярок я уже пикрил, буду повторять.
Я вот еще решил:
https://ideone.com/PfG2bB - Дураки человеки
https://ideone.com/LoKWGR - Гацисты (Пока без исправлений)
Почту и гацистов доделаю после того как пройду PCRE в мануале, а еще нужно попрактиковать функции с массивами с строками.
312 2010070
>>2010057
А может ты?
Списком перечисли, что успел сделать, что предстоит сделать, что в прогрессе и примерное время потраченное на сделанное и в прогрессе
313 2010071
>>2010070
Двачую тоже интересно.
image.png294 Кб, 698x310
314 2010075
>>2010060

>За 3 месяца можно многое успеть, особенно если ты в месяц занимаешься этим 300+ часов (10 часов в день уделяешь работе).


Такими темпами только в гроб/дурку.
Лайтовый вариант вката часов 20-30 в неделю. Хардкорный 40-50.
Дальше идут адовые переработки и выгорание
315 2010078
>>2010070
Зачем? Чтобы ты мне потом высрал что я даун и не справился с простейшими задачами за то же время что и ты?
316 2010081
>>2010078

>я даун и не справился с простейшими задачами


Это и так очевидно
Интересно, на чем новички запинаются в процессе вката
317 2010083
>>2010081

>Интересно, на чем новички запинаются в процессе вката


Интересуйся дальше, может быть подскажет кто-нибудь.
318 2010085
>>2010075
Я в пример взял вот этого чела - https://www.youtube.com/watch?v=DPxnJn3W2Es&ab_channel=AnasNuurAli - Вдохновляет.
Честно я так не могу, сидеть и решать задачи весь день. Один раз попробовал написать в TIS-100 одну задачу где нужно было угадывать последовательность цифр, типа если 3 раза прошло одно и то же число то посылаешь TRUE. И я выгорел на неделю после этого, не стоило того.
>>2010083
Почему ты так боишься показать на чем ты остановился? В этом нет ничего постыдного, все мы дауны, просто мало кто это признает (А зря).
319 2010086
Поясните про разработку в докере. Зависимости устанавливать на хосте, а потом копировать в контейнер или наоборот?
320 2010087
>>2010083
Сам запинался и запинаюсь на многих вещах в разработке.
Только если в начале это были проблемы уровня 10 строк кода, то сейчас проблемы помасштабнее вроде "как уложиться в срок", "какую архитектуру тут использовать", "как обуздать этот ебучий легаси", "что из готового функционала взять, а что лучше с нуля написать"
321 2010089
>>2010085

>Почему ты так боишься показать на чем ты остановился? В этом нет ничего постыдного, все мы дауны, просто мало кто это признает (А зря).


Не люблю хамов, мне неприятно с тобой разговаривать.
322 2010094
>>2010089
Я мимокрок, ну ок
323 2010131
>>2010086

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

То есть, в Dockerfile ты пишешь только команды установки PHP и нужных расширений, и команду монтирования папки с кодом.
324 2010191
>>1998470 (OP)
Привет, ребята. За сколько по времени примерно учится PHP, если уже знаешь JS (фронт и совсем чуть-чуть ноду)? Здесь есть вкатуны из JS?
325 2010235
>>2010191

>За сколько по времени примерно учится PHP, если уже знаешь JS


За столько же, за сколько и без жс
326 2010327
>>2010235
Разве не быстрее?
327 2010362
>>2010191
Читай шапку.
328 2010368
>>2010327
С чего ты взял, что будет быстрее?
329 2010390
>>2010191
Если ты основательно выучил JS (и особенно TS), шаришь в алгоритмах и структурах данных, знаком с паттернами проектирования, то ты в принципе ты уже знаешь PHP. Ознакомься с бэкендом, поковыряй фреймворки и уже получишь представление об этом всем. JS в том виде, в котором он существует и требуется сейчас гораздо сложнее PHP.
330 2010426
>>2010390

>Если ты основательно выучил JS (и особенно TS), шаришь в алгоритмах и структурах данных, знаком с паттернами проектирования, то ты в принципе ты уже знаешь PHP


Если б так было, он бы уже работал мидлом.
По ощущениям - вкатун, который написал тудушку на жсе и возомнил себя кодером
331 2010429
>>2010426
Ну он написал, что знает. Под "знать JS" уже давно подразумевается не только тудушка.
16174184305511.png1,4 Мб, 1280x1004
332 2010645
>>2007076

> годик


ну пиздец, мидл уровня /b/

чому в РФ так любят называть вещи не своими именами?
помните раньше каждого полотёра "менеджером" величали?
333 2010660
334 2011049
>>2010645
А когда становишься мидлом?
335 2011067
>>2011049
Когда заебашишь предыдущего
336 2011108
>>2011067
Кто-то должен тебе сказать это? Или ты должен пройти какой то тест или проверку?
337 2011186
>>2004276

>Как будешь использовать транспилятор при добавлении жс-кода в шаблоны?


>Транспи... что?


>Ясно. Мы вам перезвоним

338 2011245
>>2011108
заходишь в опен спейс пм бросит доки на пол, если подымишь то трейни ебаный.
339 2011534
Посоветуйте фтп редактор для vs code.

Требования: чтоб умел помимо мгновенного сохранения на сервер, также переименовывать, создавать, удалять папки и файлы, как в нотепад++, в 2 клика
340 2011746
>>2011245
А на нормальном языке можно?
341 2011799
>>2004314

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



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

https://ideone.com/11ZXON

Это если не гуглить и не смотреть чужие алгоритмы.
342 2011935
>>2011746
Заходишь в офис, выбираешь самого слабого с виду мидла и атакуешь его. Если не уверен в себе, то можно напасть со спины, но это не приветствуется
343 2012237
>>2011935
говорят у фронтов нужно еще съесть печень
344 2012345
>>2011935
Ааа всё понял, спасибо! Буду знать.
345 2012445
Бамп
346 2012656
>>2012445
Нахуя?)
347 2012658
>>2007076
Если чувствуешь, что можешь на мидла, у тебя и зарплата ужэе должна быть мидлорвая очевидно. Проекты - это неплохо, особенно если в них есть что нибудь примечательное для конторы, но в результате все покажет собес+испытательный. И да, год опыта на мидла - это в 99% случаев маняфантазии.
348 2012720
>>2011799

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

---

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

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

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

---

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

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

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

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

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

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

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

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

Далее я опишу решение к сложному варианту задачи.
348 2012720
>>2011799

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

---

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

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

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

---

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

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

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

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

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

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

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

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

Далее я опишу решение к сложному варианту задачи.
349 2012721
>>2011799

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

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

12345
12354

12354
12435

13542
14235

15243
15324

25431
31245

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

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

123|45
123|54

15|243
15|324

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

|25431
|31245

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

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

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

-----

Кстати, по задаче с банкоматом я сделал отдельный разбор, можешь почитать, если любопытно: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md
349 2012721
>>2011799

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

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

12345
12354

12354
12435

13542
14235

15243
15324

25431
31245

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

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

123|45
123|54

15|243
15|324

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

|25431
|31245

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

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

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

-----

Кстати, по задаче с банкоматом я сделал отдельный разбор, можешь почитать, если любопытно: https://github.com/codedokode/pasta/blob/master/algorithm/atm.md
350 2012927
сап анчоусы, кто нибудь что-то знает про московску. галеру postuf ? ссылку на хх сами найдете
у всех разрабов вакансии с вилкой 300-400к + всякие бонусы, на собесе говорят что будет работа в каких то своих проектах. вопросы на тех собесе были обычные мидловские. зазывают очень усердно и настойчиво. из требований которые я выяснил на собесе: не пить не курить,отсутствие татуировок, не носить длинную бороду, не носить длинные волосы. сам про контору накопал что занимается типо white hat хакингом, но типо не на заказ, а делает контент на основе этого статьи на хабре, тик токи, видосы в инсте + то что там большая текучка и мало кто долго прорабатывает т.е. не больше года-полтора. из за чего становится непонятно откуда у них бабки чтобы платить разрабам такие бабосы. аноны, вы что нибудь знаете о ней, стоит ли туда соваться ?
351 2012960
>>2012927

>не пить не курить


Они там ебанутые какие-то
352 2012962
>>2012927
Собесился с ними.
Там какие-то поехавшие черти сидят.
Удаленку нельзя. Сидишь в офисе под трекером и тотальной толерастией. Т.е. коллегами будут различного рода муслимы.
Можно ли иммитировать юзера на php? 353 2012970
Я хочу, чтобы мой скрипт переходил на сайт, а сайт думал что это пользователь. Можно ли это как-то реализовать на PHP?
354 2012978
>>2012962

>Удаленку нельзя.


а мне сказали что можно. что еще можешь рассказать, анонче?
355 2012988
>>2012927

>хакингом


а хуй папе?
356 2012989
>>2012978

>Удаленку нельзя.


Точнее удаленка только на время пандемии, потом в офис.

>что еще можешь рассказать


Да ничего. Общался только с их эйчаром. Сказал ему, что не пойду дальше на тех собес ибо ебал в рот работать с бабахами и под трекером.
357 2013197
блять, аноны, ответьте дебилу, пожалуйста

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

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

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

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

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

FROM php:8.0-fpm

RUN apt-get update

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

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

WORKDIR /var/www/symfony

COPY ./composer.lock .
COPY ./composer.json .
RUN composer install
359 2013217
Анон, помоги с докером. В девопс треде тишина.
Допустим, я клонирую репу с каким-нибудь проектом. На компе пхп не установлен, то есть мне нужно все зависимости установить компосером в контейнере и скопировать vendor на хост, чтоб не ругался шторм. composer install в докерфайле отрабатывает без ошибок, но вендор на хосте не появляется. Но если запустить composer install из контейнера вручную через docker exec, то все срабатывает. Вот мои конфиги:

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

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

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

FROM php:8.0-fpm

RUN apt-get update

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

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

WORKDIR /var/www/symfony

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

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

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

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

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

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

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

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

----

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

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

То есть, для PHP кода volumes не подходят, это скорее для хранения данных какой-нибудь mysql, хотя опять же непонятно, почему бы не использовать для этого папку проекта? Может быть, тут есть кто-то, кто разбирается в этом дьявольском отродье и получше сможет объяснить.
363 2013254
>>2013217

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

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

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

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

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

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

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

----

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

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

То есть, для PHP кода volumes не подходят, это скорее для хранения данных какой-нибудь mysql, хотя опять же непонятно, почему бы не использовать для этого папку проекта? Может быть, тут есть кто-то, кто разбирается в этом дьявольском отродье и получше сможет объяснить.
364 2013272
>>2013213

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

Спасибо!
365 2013281
>>2013254

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

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

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

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

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

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

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

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

> Volumes are the preferred mechanism for persisting data


> Volumes have several advantages over bind mounts



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

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



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

Насчет RUN, по моему эти слои какое-то бессмысленное усложнение, можно было писать все в один образ и не париться, и тогда не пришлось бы писать команды через &&.
367 2013476
>>2012970
да, можно

далее консультации платные %)
368 2013608
>>2013254

>Этот докерфайл вообще, по моему, кривой.


Вполне вероятно. Я с докером работаю второй день

>Например, зачем там COPY, который копирует файл composer.json в то же самое место?


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

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


Через docker exec

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



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

Короче, я уже заебался по самое не могу. Всегда ненавидел колупание конфигов
369 2013838
https://ideone.com/zWA8vQ - Гацист с исправлением
https://ideone.com/pxpXCc - Поиск опечаток
https://ideone.com/EK49f2 - Поиск опечаток с исправлением
370 2013874
>>2013217
Убрал composer install из докерфайла и пока сделал установку зависимостей командой docker exec -it $(docker ps -aqf "name=php") /bin/bash -c "composer install"
371 2013876
>>2013838
Наверно, если показать, с каким кодом я работаю, тут большая часть новичков отвалится.
Кому интересно колупать километры легаси 5+ летней выдержки
372 2013880
>>2013874
Вполне норм. Нет смысла пытаться запихать всё в докер.
Подобные вещи обычно пишутся в ci/cd скриптах
373 2013881
Аноны Здравствуйте
Помогите пожалуйста нубу
Как создать эту блядскую схему БД для интернет магазина?
Какие нужны модели, связи?
Пишу на ларке
374 2013882
>>2013876
У меня на работе есть проект на симфони, в директории веб (которая в новых версиях симфы называется паблик) которого живет отдельная ебанина из второй половины нулевых. Вот там просто пиздец из месива пхп, жопаскрипа, верстки и sql
375 2013885
>>2013881
Вбей в гугл

>e commerce database schema


и выбирай на вкус и цвет
376 2013887
>>2013608

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



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

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

И он, получается, копирует composer.json в то же самое место.
377 2013894
>>2013887
Я тоже так думал, но без ручного копирования этих файлов composer ругался на отсутствующий composer.json
378 2013904
>>2013876
Покажи, интересно.
379 2013942
Как можно беспалевно пошарить код?
Чтобы его потом нельзя было нагуглить?
380 2013960
>>2013942
Нахуя? NDA?
381 2013973
>>2013960

>NDA?


да
382 2013974
Пробовал через сервисы типа code to img. В одном он обрезал код пополам, в другом выдал картинку на 20мб.
Пастбин боюсь, что индексироваться будет и мне потом в тык дадут
383 2013984
>>2013974

Ты можешь не выкладывать код, а написать аналогичный с другими именами функций и переменных.
384 2013990
>>2013973
Не выкладывай.
385 2014009
>>2013876
Я новичок, и я срусь со страху вот с этого
https://symfony.com/doc/current/page_creation.html
image.png413 Кб, 1051x459
386 2014012
>>2013880
Норм-то оно норм, а тесты не работают. И зависимости переустанавливал, и dump-autoload делал - ничего не помогает. С хоста все пашет
387 2014024
>>2014009
Иди в ларку, если симфы боишься. Там и работы больше
388 2014047
>>2013984
Вручную обфусцировать 2к строк не хочется...
389 2014048
>>2014009
Если с этого срешься, то в пхп мирке не выживешь
390 2014052
>>2014048
Чому? Мало ли говна на битриксах, вордпрессах и иже с ними. Будет лендинги хуярить за милую душу
391 2014053
>>2013984
Ща попробую лайтовым обфускатором прогнать
392 2014056
>>2014052

>говна на битриксах, вордпрессах и иже с ними


Там качество кода в разы хуже и файлы не на 2к строк, а на 10к+
393 2014074
ДА все норм
394 2014093
>>2014053
Хуета получается, по первым строчкам видно всё
395 2014102
О
396 2014103
>>2014093
Залей на гуглодиск файл, там думаю точно индексировать не будет
397 2014109
>>2013904
>>2014103
https://drive.google .com/file/d/12EkOmz2MIIVNubjuRXw9G9i0LqFqiYF6/view?usp=sharing
пробел уберите
398 2014115
>>2014109

>https://drive.google .com/file/d/12EkOmz2MIIVNubjuRXw9G9i0LqFqiYF6/view?usp=sharing


Сложно. Как в таком коде вообще ориентируешься?
399 2014129
>>2014115

>Как в таком коде вообще ориентируешься?


Буквально голову ломаю. После рабочего дня уже ничего не хочется кроме как спать.
Сильно помогает xdebug. Так же не брезгую читать исходники фреймворка
Yii.mp4388 Кб, mp4,
480x360, 0:09
400 2014141
>>2014109
Увидел хтмл теги и дальше не смотрел. Но на первый взгляд ничего сложного, просто очень громоздко
Yiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
image.png13 Кб, 635x103
401 2014144
>>2014109
Масло масляное
402 2014153
>>2014141

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


Этого "ничего сложного" пол ляма строк
403 2014162
>>2014153
Хотели жабу - кушайте жабу.
404 2014178
>>2014153
Сложность кучи говна не зависит от ее размера
405 2014186
>>2014178
Как раз таки зависит.
Иначе зачем микросервисы придумали?
406 2014471
>>2014186

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

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

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

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

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

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

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

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

Если тут есть умный анон, который может описать реальные плюсы от использования микросервисов, было бы интересно почитать.
406 2014471
>>2014186

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

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

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

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

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

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

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

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

Если тут есть умный анон, который может описать реальные плюсы от использования микросервисов, было бы интересно почитать.
407 2014529
>>2014471
В микросервисе мало кода, поэтому о нем легко рассуждать и соответственно добавлять фичи. По крайней мере программистам, у девопсов может быть иное мнение. У микросервисов меньшее зацепление кода. Сервис можно выбростить и переписать с нуля, с монолитом такое не сделаешь. В монолит не пустишь джуна, в монолит даже сеньер будет въезжать долго. Соответственно текучка кадров очень болезненна, старые работники, что писали это монолит становятся незаменимыми.
408 2014534
>>2014471
Ты просто привык писать в одно рыло, поэтому хочешь во всем коде разбираться и править там где тебя не просят? Ну сиди в одной конторе по 10 лет разбирайся.
409 2014539
>>2014529
В плане разработки микросервис ничем не проще обычного модуля или библиотеки.

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

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

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


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

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

Даже контейнеры с БД, MQ, кешами и другим это самые что ни на есть микросервисы.
411 2014543
>>2014539
Опять ты рассуждаешь с точки зрения, как будто ты в одиночку проект пишешь. Тут у тебя ошибка.
412 2014564
>>2014543
Есть масса монолит проектов, в которых кодовая база в миллионы строк, где работают десятки-сотни человек.

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

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

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

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

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

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

И чем сильнее ты дробишь, тем чаще у тебя будут такие проблемы возникать.
413 2014703
Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery.
Я правильно понимаю что верстальщиком быть-это ахуеть как нужно стараться что бы кодить и рисовать страницы, а разработчику ПХП-только писать скрипты?
16174184305511.png1,4 Мб, 1280x1004
414 2014709
>>2014471
Микросервисы ради микросервисов -- просто религия и мода, очевидно же.

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

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

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

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

Такой подход решает проблемы и при этом не создаёт ненужной работы.
415 2014710
>>2014703
Неправильно.
416 2014714
>>2014710
спасибо. но блин, у вас ващ мозг способен формулировать только булевое значение? _))))
image.png443 Кб, 737x630
417 2014742
>>2014709

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


В последнее время стал натыкаться на статьи о том, что монолиты это заебись, а микросервисы говно.
418 2014757
>>2014024
И ларка и симфони одинаково интересны, но предпочтение симфони отдаю, ибо сложно.
419 2014759
>>2014703
Неправильно.
420 2014765
>>2014759
>>2014714
спасибо.
но блин, у вас ващ мозг способен формулировать только булевое значение? _))))
421 2014948
>>2014529

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



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

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



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

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

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

>>2014534

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

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

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

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

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



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

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

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

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



Админу ничига не легче. Ему удобнее управлять одним сервисом, чем разбираться в куче микросервисов.
424 2014959
>>2014542

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

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



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

>>2014542

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



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

Еще бывает не беру неприятную таску, жду, что кто-то другой возьмет
428 2015370
>>2014948

>Чем это хуже?


то что этот кусок кода может переиспользоватся где то там/что то на него ссыдается/результаты где то еще используются и неизвестно что он за собой может потянуть, ты еще не видел некоторого говна.
429 2015372
>>2014742
Главная проблема монолитов - зацепление помноженное на огромную кодовую базу. Разбираться и пытаться распутать этот клубок крайне сложно.
Не так страшны эти вещи по отдельности:
Сильное зацепление, но кодовая база маленькая - можно без сверхусилий разобраться и поправить код. Один из не очень хороших вариантов микросервисов
Слабое зацепление, но большая кодовая база - так же нет особой сложности для внесения изменений
430 2015389
>>2014948

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


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

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


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

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


Помимо яндексов достаточно компаний, где крупная кодовая база, которой не хватает какого-то разбиения
431 2015392
>>2015324
О да, работаю по принципу: видишь вокруг говно - делай говно - лей в прод
432 2015409
>>2014709
Пхп тормозной, а джава нет? Ебать у вас там хайлоад я вижу
433 2015538
>>2015372
Серега, ты что ли?
434 2015620
Для чего в heredoc идентификатор?
bjiidbfeibz (1).jpeg94 Кб, 600x556
435 2015634
>>2012720

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

https://ideone.com/SnepM5

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

Мимо все тот же тупой лягушенок
436 2015663
>>2015538
Нет, это не я.
437 2015679
>>2015297

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

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

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

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



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

> предлагаю все кешировать через service worker


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

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

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



Это элементарно.
437 2015679
>>2015297

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

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

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

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



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

> предлагаю все кешировать через service worker


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

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

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



Это элементарно.
438 2015689
>>2015372

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

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

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

>>2015389

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



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

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

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

Монолит - вот подход здорового человека.
439 2015743
>>2015620

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

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

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

>>2015634

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

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

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

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

> if($iterations <= $halfIterations){


> krsort($combination);


> }



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

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

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

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

Цикл foreach внутри getCombinations, как я понял, сдвигает массив (превращая [x, y, z] в [y, z, x]). Этот сдвиг можно было бы сделать через функции array_slice + array_unshift, получилось бы короче и понятнее. Или я что-то не учел?
439 2015743
>>2015620

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

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

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

>>2015634

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

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

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

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

> if($iterations <= $halfIterations){


> krsort($combination);


> }



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

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

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

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

Цикл foreach внутри getCombinations, как я понял, сдвигает массив (превращая [x, y, z] в [y, z, x]). Этот сдвиг можно было бы сделать через функции array_slice + array_unshift, получилось бы короче и понятнее. Или я что-то не учел?
440 2015815
>>2015689

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


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

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

>А если у тебя 5 человек и 20 микросервисов


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

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


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

>можно выбросить и переписать заново


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

>То есть ты серьезно предлагаешь бизнесу выбросить работу нескольких человек за месяц?


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

>Монолит - вот подход здорового человека


До тех пор, пока этот монолит способна поддерживать команда из 5-7 разрабов. Дальше только разделять на сервисы.
441 2015849
>>2015815

>До тех пор, пока этот монолит способна поддерживать команда из 5-7 разрабов. Дальше только разделять на сервисы.


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

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

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

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

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



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

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



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

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

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

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

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

Есть примеры, где сервисы (не микросервисы, а большие сервисы) нужны - это компании вроде Яндекс (выносить сервисы, которыми могут пользоваться несколько приложений) или Вконтакте (из-за высокой нагрузки приходится писать микросервисы на Си).
446 2016321
>>2015815

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

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

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



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

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



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

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



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

Я вообще перестаю видеть логику.
447 2016331
>>2016321
Заебал уже своей философией. Можно нанять одного разработчика который сделает красиво, но трудно нанять десять таких. Проще когда Васе нужно знать всего пару апи, он даже будет способен и зам задачу в жире накатать по хотелкам заказчика. Сейчас текучка во всех проектах. Сервисы это данность на больших проектах
448 2016334
parallel https://www.php.net/manual/en/book.parallel.php работает полноценно или через GIL?
449 2016343
>>2016334
В пхп нет GIL.
450 2016379
Как же меня затрахал этот ларавель блять...
Особенно его DB-библиотека. Такой конченой хуйни в жизни не видел, оно состоит из костылей чуть менее, чем полностью.

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

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

zend franework или вызывай сишные функции через COM, ну или system (“date ...”) доя конвертации таймстампа
452 2016386
>>2016321
Там статья не про микросервисную архитектуру, а про кубернетис и контейнеры.

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

Без этого очень сложно что-то в работающем проекте изменить.
453 2016388
>>2013476
ахахахааха
454 2016398
>>2016379

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

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

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

>>2016384

Мы еще не выяснили, в чем причина проблемы, а ты уже бежишь предъявлять претентзии к PHP. Возможно, PHP тут не причем, а также возможно что твой язык в 10 раз хуже, чем PHP.
455 2016414
>>2016398
Так я сам PHP разраб, только топлю за zend.

Не смог в байтоебство на асм/си для микроконтроллеров так и остался в вебдеве
456 2016781
>>2016414
А разве зенд не благополучно скончался? Сколько лет ты спал? Да, я знаю что его переименовали, но всем похуй
457 2016795
>>2016311

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


Еще не видел, чтобы кто-то так восхищался тем, что занимается легаси говном.
458 2016861
>>2016781
Л Е Г А С И
Е
Г
А
С
И

Во что переименовали? Видимо я правда проспал. Магенто/лава и правда больше пользуется спросом.
459 2017007
>>2013838

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



> ([^,])\\s(а|но)


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

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

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



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

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



Здесь та же проблема, программа в английских словах начнет заменять латинские буквы на русские.
460 2017214
>>2017007
Оки исправлю.
461 2017225
>>2016861
В ламинас. Эх, первая работа. Второй зенд и extjs. Сбежал оттуда через два месяца
462 2017660
Можно ссылку на конфу в тг у треда, если такая есть
463 2017691
>>2017660
Зачем она тебе? Она мертва
464 2017826
Кто -нибудь из присутствующих трогал это https://moneyphp.org/en/stable/features/currency-conversion.html ?
Почему-то обрезается дробная часть при обмене
465 2017919
>>2017826

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

Моя жопа вышла на крейсерскую скорость.
468 2018726
>>2018709
Люмен тоже говно на самом деле, мне кажется что просто symfony/httpfoundation с Доктриной надо ставить, если нужно без комбайна обойтись. Еще может у Laminas API Tools ничего, но не пробовал.
469 2018742
>>2016386
Когда ж вы наиграетесь в свои контейнеры.
Заебали.
470 2018750
>>2018726
Да понятно, что тоже говно. Мне почему Слим и нравился, что можно самому папочки накидать как удобно, прописать по своему вкусу где что, а у Люмен всё гвоздями прибито. Так и не понял зачем Слимовцы эту ересь начали творить - превращать микрофреймвор в, фактически, обычный маршрутизатор с пачкой внешних зависимостей, которые должен ставить конечный разработчик.
471 2018860
>>2018750
Чего тебе не хватило изкаропки то? это же микрофрэймворк для res/rec по сути. Они просто подогнали под psr по сути свои интерфейсы, как я понял.
image.png17 Кб, 665x220
472 2018901
Пачаны, поясните почему фотка не подтягивается?

<img src="img/banner/photo.jpg">
473 2018913
>>2018901
Ты наверное девтулз нетворкинг заскринь, а не это
474 2018916
>>2018913
Хуйня какая-то, другую папку начал юзать и заработало
475 2019131
>>2018916
Ну значит прав не было/в конфиге веб-сервера директория не фигурировала.
изображение.png5 Кб, 449x145
476 2019197
Почему так?
477 2019201
>>2019197
Зачем строку с числом сравниваешь?
Что ты ожидаешь увидеть?
478 2019205
>>2019201
В документации написано что при сравнений строки и числа строка конвертируется в число.
479 2019217
>>2019197
Какая версия пхп?
480 2019218
481 2019219
>>2019218
Лол. В 8ой по-другому работает.
В 7ой всё как ты ожидал будет
482 2019224
>>2019219
Интересно они придумали конечно
483 2019225
>>2019224
https://www.php.net/manual/ru/language.operators.comparison.php
Тут пишут, что был какой-то баг при таком сравнении
484 2019231
Не могу настроить совместную работу докера, дебаггера и пхпшторма. Какого-то хера брейкпойнты работают только в фронт контроллере симфони. Поделись рабочим конфигом, анон
485 2019233
>>2019224
https://www.php.net/manual/ru/migration80.incompatible.php

Теперь числа в строки перегоняют, а не строки в числа
486 2019234
>>2019224
рекомендуют явный тайпкаст к числу делать, тогда результат как в 7ой версии
image.png5 Кб, 323x86
487 2019239
Как-то так теперь
488 2019380
>>2019224

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

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

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

Такое надо избегать в коде. Явно сделай преобразование в нужный тип.
489 2019382
Вот кстати еще один интересный и неожиданный пример:

var_dump(-1 > null); // true

То есть, тут null не превращается в 0, как кажется интуитивно. Лучше бы конечно такая ситуация выдавала ошибку.
490 2019464
Мутабельные дто - это кошерно?
491 2019494
>>2019464
Зависит от архитектуры, но вцелом скорее да, чем нет.
492 2019501
>>2019494
Архитектура уровня захуярить дто из реквеста в аргумент резолвере, провалидировать и отдать в контроллер
493 2020160
Как запретить шторму закрываться при уходе компа в спящий режим? Бесит, сука! Раньше такого не было
494 2020251
>>2020160

> как



Руками

> где



В настройках
495 2020360
>>2020251
Не пизди, клоун. Нет там ничего, что бы относилось к режиму сна
496 2020380
>>2020360
Шлюха ты дырявая, ебать тебя в рот хуесоса плешивого, пидораса сутулого, опущенца ебанутого. Данному багу миллион лет, один ты особенный солнечный ребенок не в состоянии пофиксить. Пиздец ты скудомыслящий. Как ты ебанько такое нерадивое харкач только нашло? Проблядь ты рождённая от спидозного пидора-транса папаши и зарыганной лошади. Хуета из под кота ты доморощенная.

https://youtrack.jetbrains.com/issue/JBR-2732
497 2020428
>>2020380
Нихуя себе у тебя, падали подзалупной, бомбануло. Пиши еще, киса
498 2020435
>>2020380
Ты еще и глазницы долбишься, петух, или читать не умеешь. Я спрашивал, почему шторм закрывается, а не тормозит. Как ты ебанько такое нерадивое харкач только нашло?
499 2020446
>>2020380
От похапе аноны звереют.
500 2020457
>>2020446
Да это 100% python/javascript «программист»
501 2020491
>>2020446
Да не, я пример в ОПчика беру, стараюсь няшно общаться и терпеливо.
502 2020492
>>2020491
С опчика*

быстрофикс
503 2020695
>>2017007
https://ideone.com/BgBgWC - Исправил исправления, хочу спросить, а правилен ли этот подход с массивами регулярок и заменой? Или можно сделать получше?
https://ideone.com/34fpy7
https://ideone.com/wbKUuC и эти два, вроде работает верно
504 2020714
>>2020695
Я в последних должен в регулярке поставить + чтобы все попадались опечатки. В общем пока читаю мануал по регуляркам и функциям.
505 2020768
Псалмом обмазываетесь?
506 2020773
>>2020768
Обмазываюсь несвежим говном yii1
507 2020778
>>2020773
Нахуй так жить?
508 2020783
>>2020778
Там платят и почти не ебут
509 2020794
>>2020783
Так же и отупеть можно. Потом вообще хер куда устроишься. Я так сидел пару лет и в хуй не дул, ненапряжно крудоебствовал сутками, пока не понял, что реально деградирую
510 2020797
>>2020794
Пытаюсь иногда петик попиливать на говне посвежее, чтобы если выгнали, было куда податься.
С другой стороны этого несвежего говна столько, что без хлеба с икрой не останусь
511 2020919
Можно ли сейчас найти работу на Zend?
512 2021008
>>2020919
Можно, но архи сложно
513 2021288
Ананасы, у кого был такой опыт. Переката из пыха в жабу или шарп? Стоит ли так делать? Или и на пыхе есть интересные задачи?
a7db6fa033d5cec30f8e6b9923a01426--frog-meme-humor-memes.jpg13 Кб, 236x205
514 2021705
>>2015743

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



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

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



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

https://ideone.com/SnepM5

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

я совсем тупой что подобные задачи неделями не могу сам решить?
515 2021743
Есть кусок кода пик 1. Моя плюсовая прога получает пик 2. Можно ли избавиться от хуйни что вверху и оставить только строчку helloworld и тд. Или это обязательные данные, которые всегда будут присутствовать?
516 2021800
>>2021705

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

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

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



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

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

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



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

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

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

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

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

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

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

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

Попробуй написать эту функцию в виде кода и можешь убедиться, что она будет работать корректно.
516 2021800
>>2021705

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

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

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



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

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

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



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

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

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

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

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

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

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

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

Попробуй написать эту функцию в виде кода и можешь убедиться, что она будет работать корректно.
517 2021805
>>2020768

Псалм на приватном проекте просто упал. phpstan работает хорошо, но выдает кучу предупреждений (не всегда по делу), потому вызываю его только для измененных файлов.
518 2021815
>>2020695

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



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

> а|но)\\s+


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

> ([а-яА-Я])([aceopx])([а-яА-Я])


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

> $word = strtr($word, $replace);


Этим ты сохраняешь слово в переменную $word, но массив $text остается неизменным. $word это лишь копия слова из массива и ты меняешь копию, а не оригинал в массиве.
519 2021819
>>2019464

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

Я, кстати, не особо люблю DTO, так как они добавляют преобразования. Сначала ты должен преобразовать данные в DTO, а потом это DTO в какую-нибудь модель. Добавляется лишний код для этих преобразований. Если можно без них обойтись, то наверно лучше обойтись.
520 2021834
>>2016154

> $text[0]


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

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

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

>>2021976
# сразу, можешь влиться в ряды QA automation ( selenium webdriver). А там подтянишь скиллы и куда кривая выведет: разрабы, девопсы, мытьё туалетов. Самое главное работа в команде, если будешь постоянно: а вот я думаю, а вот я решил — твое я и твое мнение мало кому нужно. Вот коллективный разум и умение работать в коллективе это 50% успеха.
525 2022022
>>2022005

>Корпоративные порталы битрикс+1с повсеместно, есть какие-то самописные вещи на РНР, но это редкость.


Выборка по пыхе маловата.
Так-то полно всякого продуктового на ларе/симфе
526 2022075
Вы бы лучше проанализировали вакансии на hh. Java неплохой язык, но на нем просто может не быть вакансий в вашем городе. А на PHP доступно много вакансий, включая удаленку.

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

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

Еще есть прекрасный рубио конечно, но он ксожалению сдувается и вакансии - сплошь легаси ебаное.
528 2022095
>>2022022
Ну какая есть. 10-15 лет назад картина была совершенно противоположная.
529 2022160
>>2021819
А не надо ручками дто создавать. В дто очень удобно описывать правила валидации модели, которая из него создается. Сплошные плюсы, код модели чище и она не может быть невалидна, так как создается из няшной валидной дтошки. И это только один пример
530 2022171
>>2022005
Насчёт нахуй никому не нужного мнения согласен. Ну я хз как поступить, не охота изначально обосраться. И минимизировать это, ну и нужно в любом случае куда-то вкатиться. Лютый пиздец...
531 2022172
>>2021805
Никогда таких проблем не было. У меня псалм в связке вот с этой штукой https://github.com/squizlabs/PHP_CodeSniffer
532 2022174
>>2022075
Шарп как-то продуман, ну хз стоит ли вкатываться начинающему изначально в него. Пых не сильно охота, ну по-моему придётся в него входить...
533 2022178
>>2022174
Так не учи, блядь, если не охота. Тебя что, уговаривает кто-то?
534 2022237
>>2022178
нет, хочу понять, что более оптимально, дабы не обосраться
535 2022274
>>2022237
Оптимально, чтобы быстро заработать на хлеб с водой - пых/js/пистон (пистон с натяжкой, на джанге мало работы сейчас), хотя и js на бэке сейчас положнее пыха обычно.
Хочешь как тру бэкендер - любой популярный строгий язык (шарп, жава, го).
Хочешь быть тру погромистом - раст/кресты, но учиться будешь года три, и то если не тупой.
536 2022282
>>2022274
пыха развращает наверное, потом на строгий язык с мучениями переходить, наверное...
537 2022283
>>2022274
а так за ответ спасибо, анон
538 2022304
>>2021893
Может ли симфони сделать вариант с развитием в пхп более перспективным и радужным? Говорят, это почти как джава.
539 2022310
>>2022304
Тебе же не нравится пыха?
Пиши на том, на чем приятнее, работа везде есть, удаленка, новые технологии и легаси...
540 2022315
>>2022310
это другой анон, интересуется, не я
541 2022318
>>2022310
>>2022315
Да, это другой ананас.
542 2022341
>>2022171
Не ссы, обсираются все и везде. Боязнь обосраться тебя будет демотивировать всю жизнь. Подумай наоборот. Вот тебе пример: есть тулза с номером билда 1.х.х которую пилили 5-10 лет, а потом хуяк и выкатили билд 2.х.х и в чейнджлоге читаешь: произведён рефакторинг кода. Производительность тулзы увеличена на 50%. Понимаешь? Даже такие матёрые разрабы как Линус Торвальдс пиля своё ядро писали такой код, что потом переписывали десятки других разрабов.

Лично я не вижу проблем с вкатом если: имеешь нормальную алгоритмическую подготовку, дружишь с алгеброй/геометрией/физикой, знаешь хотя бы 1 язык выше среднего. Т.е. для тебя нет проблем в плане самой разработки. Читай код на гитхабе, смотри, что ближе тебе.
543 2022356
>>2022304
Нет. Сфера РНР продукты для веба. Он этим и ограничится. Не взирая на попытки сделать язык более общего назначения. И то всякие ноды и питоны уже существенно наступают на пятки. Даже нахуй никому не нужный раби со своим одним единственным фрэймворком ROR местами имеет заявить.
544 2022362
>>2022341
спасибо смотиваровал... легче стало, а то в депрессий
545 2022381
>>2022171

>Ну я хз как поступить, не охота изначально обосраться


С таким будет тяжело в программировании.
Сам тоже борюсь с этой херней. Никак не приучу себя сначала быстро выдавать едва работающий говнокод, а потом фиксить в узких местах.
Пытаюсь заранее продумать, чтоб хорошо было. В итоге это сжирает кучу ресурсов у мозга, а кода как не было, так и не появилось.
546 2022521
>>2022282
PSALM
PSALM
PSALM

От строгости охуеешь
547 2022524
>>2022304
Может, если найдешь нормальную работу, где обмазываются DDD, CQRS и всякими сагами с евент сорсингом. Но тебя туда не возьмут
548 2022650
>>2022524

>Но тебя туда не возьмут


Это самое обидное.
Пробовался пару раз на подобные ваки, на собесе завернули.
Хз как набрать нужный бекграунд, если на текущей работе сплошное говнолегаси
549 2022673
>>2022650
Ну можно попробовать читать Вернона с Эвансом, смотреть чужой код и пилить что-нибудь свое, начав с "тактического" ДДД
550 2022720
>>2022521
Не сказал бы что это можно называть строго. Обычные правила читабельного кода. У меня и psalm и stan вместе лабают, отключена только ересь, вроде комментов в закрывающих конструкциях и phpdoc. И при этом говнокодить на коленке они не особо мешают (например писать какие нибудь разовые скрипты).
551 2022733
>>2022720
Псалм к читабельности кода относится чуть менее чем никак.
image.png60 Кб, 904x391
552 2022774
>>2022733
Действительно)) При чем бы тут читабельность кода.
553 2022783
>>2022774
Даже твой скрин подтверждает то, что псалм для контроля типов.
554 2022785
>>2022783
Съеби, зелень.
555 2022791
>>2022785
Сам съеби, болезный.
556 2022897
>>2022783
А типы уже не влияют на читабельность?
557 2023060
>>2022897
Нахуй ты его кормишь?
558 2023139
>>2023060
Нахуй ты родился?
Все таки не зря похапешников долбоебами считают, если они даже не в состоянии определить основное назначение инструмента. И ты тому лишнее подтверждение. Возможность запилить дженерики и енамы в языке без дженериков и енамов, юнион типы (в старых версиях пхп), описание массивов - это про типы или про читаемость?
Screenshot2.png15 Кб, 439x403
559 2023275
Почему подкласс может вызывать приватный метод базового класса?
560 2023285
>>2023275
Могу предположить что из-за того, что приватный метод вызывается внутри базового класса и под капотом происходит какая-то херь с именами классов.
Если поместить метод newSubclass в другой класс, то должен выбивать ошибку.

В целом очень странный кейс: создать потомка внутри родителя и вызывать от потомка метод родителя
561 2023289
>>2023285
Я взял это из доков но там это поведение не объясняется.
https://www.php.net/manual/ru/language.oop5.visibility.php#language.oop5.visiblity-methods
562 2023291
>>2023289
Не вижу там похожего кода.
В доке вызов метода родители идет через $this
изображение.png42 Кб, 400x821
563 2023294
>>2023291
Там вот. $this принимает значение класса Foo
Untitled.png48 Кб, 635x579
564 2023338
помогите друзья программисты, учу ларавел и не получается справиться с одной проблемой, нужно в карусель вывести несколько штук, но они залазят друг на друга, пробовал делать это через for и не получается, как мне это сделать?

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

<div class="carousel-inner">
@for ($i = 0; $i <= 2; $i++)
<div class="carousel-item active">
<blockquote class="quote p-4 theme-bg-light">
{{$review[$i]->description}}
</blockquote><!--//item-->
<div class="source media flex-column flex-md-row align-items-center">
<img class="source-profile mr-md-3" src="storage/{{$review[$i]->image}}" alt="image" >
<div class="source-info media-body text-center text-md-left">
<div class="source-name">{{$review[$i]->name}}</div>
<div class="soure-title">{{$review[$i]->position}}</div>
</div>
</div><!--//source-->
</div><!--//carousel-item-->
@endfor
</div><!--//carousel-inner-->
</div><!--//quotes-carousel-->
Untitled.png48 Кб, 635x579
564 2023338
помогите друзья программисты, учу ларавел и не получается справиться с одной проблемой, нужно в карусель вывести несколько штук, но они залазят друг на друга, пробовал делать это через for и не получается, как мне это сделать?

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

<div class="carousel-inner">
@for ($i = 0; $i <= 2; $i++)
<div class="carousel-item active">
<blockquote class="quote p-4 theme-bg-light">
{{$review[$i]->description}}
</blockquote><!--//item-->
<div class="source media flex-column flex-md-row align-items-center">
<img class="source-profile mr-md-3" src="storage/{{$review[$i]->image}}" alt="image" >
<div class="source-info media-body text-center text-md-left">
<div class="source-name">{{$review[$i]->name}}</div>
<div class="soure-title">{{$review[$i]->position}}</div>
</div>
</div><!--//source-->
</div><!--//carousel-item-->
@endfor
</div><!--//carousel-inner-->
</div><!--//quotes-carousel-->
image2021-05-07221847.png66 Кб, 1098x501
565 2023342
566 2023348
>>2023338
А причем тут пхп, если проблема в верстке?
567 2023560
>>2023275

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

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

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

private $field;

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

} // до сюда

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

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

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

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

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



Но разве подкласс вызывает метод callPrivate? Нет, место вызова находится в BaseClass. Он вызывает метод BaseClass#callPrivate у объекта класса SubClass.
569 2023629
>>2022524
А вот с этого места поподробнее.

>где обмазываются DDD, CQRS и всякими сагами с евент сорсингом


Это какие-то практики, использование которых делает тебя крутым вне зависимости от выбранного языка?
photo2020-10-2615-04-46.jpg89 Кб, 750x683
570 2023710
>>2016795
Нас тут много %)

Я поддерживаю: натыкать на на каком-нибудь ларавеле "с нуля" приложение по гайдам с ютуба неизмеримо проще, чем поддерживать софт с многолетней историей. Соответственно, и платят меньше.
571 2023712
>>2019380
зачем же тогда РНР, если нельзя отстрелить себе ноги и жопу
572 2023749
>>2023560
Я понимаю как работает доступ к private. Не понятно только почему подкласс может через -> обращаться к приватному свойству/методу базового класса. Даже если подкласс и в скобках { } базового, он, по моей логике, должен попытаться обратиться к своему свойству field.
11e9c70fcce436b48b9d5bbb3ebd3d32731420b9r1-2048-1506v2hq.jpg63 Кб, 1024x753
573 2023760
>>2021800

>Функция getCombinations(list):


>.... пусть дан массив элементов list


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


>.... создаем пустой список комбинаций result


>.... берем по очереди элементы list, выбранный элемент >помещаем в переменную first:


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


>........ к каждой из полученных комбинаций в начало >приписываем first и добавляем в result


>.... конец цикла


>.... возвращаем result



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

https://ideone.com/h9J4W5

Ничего не работает. Я посмотрел простой пример работы рекурсии в нахождении факториала, там более-менее понятно, а что происходит здесь, и почему мы вызываем функцию внутри цикла, которая затем возвращает все имеющиеся комбинации (каким образом?) - мне непонятно.
Функция неполная и мне нужно ее как-то переделать или я не могу понять ее принцип?
574 2023830
>>2023629

>делает тебя крутым


Как минимум расширяет кругозор

>вне зависимости от выбранного языка


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

А вообще проекты, на которых эти практики применяются, как правило намного интереснее и сложнее стандартного крудоебесия. И лучше оплачиваются. Уот такое мое мнение
575 2024068
>>2023830
Как же приобщиться к этому всему?
576 2024086
>>2023749

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



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

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

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

$object->method();

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

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

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

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

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

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

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

Хотя ты вызываешь $b->newSubclass(), но в реальности-то этот метод находится в BaseClass и именно из BaseClass он обращается к приватному методу.
576 2024086
>>2023749

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



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

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

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

$object->method();

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

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

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

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

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

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

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

Хотя ты вызываешь $b->newSubclass(), но в реальности-то этот метод находится в BaseClass и именно из BaseClass он обращается к приватному методу.
577 2024099
>>2022524

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

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

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

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

Насчет DDD особо в нем не разбираюсь, прокомментировать не могу.
578 2024131
>>2023760

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

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

>if(count($list) == 1){


> return current($list);


>}



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

> foreach($combination as $el){


> array_unshift($el, $first);


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

> $result[] = $combination;


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

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

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

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

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

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

>if(count($list) == 1){


> return current($list);


>}



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

> foreach($combination as $el){


> array_unshift($el, $first);


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

> $result[] = $combination;


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

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

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

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

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



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

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

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



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

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

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

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

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

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

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

Дальше можешь рассмотреть, как функция будет работать с 4 элементами.
579 2024149
>>2023760

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



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

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

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



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

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

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

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

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

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

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

Дальше можешь рассмотреть, как функция будет работать с 4 элементами.
580 2024198
>>2023710
Когда монолиты из меня сделают сильного девелопера?
581 2024225
>>2024099
А где я утверждал, что эти практики применимы к любому проекту? Если там обычное формошлепство, то естественно там не нужны саги и проч.

>как будто код без CQRS априори плохой. Хотя по факту он проще и читабельнее


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

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


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

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


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

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


Я нигде этого не пишу, всему свое место. Бложикам и лендингам действительно эти подходы к разработке и нахер не нужны. Но никогда и никому не завредит познакомиться с этими практиками хотя бы для общего развития. Не стоит замыкаться в мирке тупых толстых контроллеров. Всем денег, посоны!
582 2024231
>>2024068
Я слышал, что можно гуглить ключевые слова и находить статьи и видео по интересующей тематике. Сам не пробовал, так что не могу утверждать, что это сработает
583 2024295
>>2024231
Спасибо, анончик.
585 2024360
>>2024359
Пока эту сделал.
586 2024534
анончики, докеризирую свой ларавель апп, и встрял на моменте подключения ноды и npm в проект. делаю по гайдику с digital ocean. но там было только подключение пыхи нгингс и бд. нужна еще нода. сам yml файл https://ideone.com/sAh4tM
все оки работает и пашет кроме контейнера с нодой - когда смотрю через docker-compose ps у него нет портов и статус постоянно restarting. как фиксить ? нода и нпм нужна для того чтобы ставить какие то зависимости и пересобирать app.js. никакого фреймворка фронтендовского на проекте нет, все на блейдах. в гугле тоже нихуя нет =/
587 2024926
>>2024534

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

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

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

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



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

---

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы конечно можете сказать, что Докер вообще-то не для разработчиков написан, и не для того, чтобы улучшать линукс, а он для того, чтобы подсадить богатые компании на использование контейнеров и кластеров, чтобы они платили заоблачные тарифы в "облаках" и покупали дорогие сервисы от Докера. Тут конечно возразить трудно, но от этого он менее уродливым не становится.
16183251353492.jpg77 Кб, 811x456
589 2024966
>>2024942
Съеби
image.png159 Кб, 1068x679
590 2025316
>>2024942

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

591 2025333
>>2025316
Он не знает про переключение между версиями... Жаль.
592 2025372
>>2024131

https://ideone.com/h9J4W5

Мне нужна подсказка где здесь ошибка.
593 2025382
>>2024086
Спасибо.
Я наверное не заслуживаю такого развернутого ответа.
594 2025963
>>2025316

Это обычно достигается за счет сторонних репозиториев, где на каждую версию создается свой пакет. Соответственно, это работает для PHP, но не будет работать, например, для библиотеки вроде openssl и других программ.
595 2025967
>>2025372

Ты удаляешь элемент из $elements с помощью unset, но не добавляешь его обратно.
596 2025996
Нормально ли иметь слушатель событий для исключения, чтобы в нем преобразовать это исключение в другое (для которого уже есть другой слушатель событий)?
597 2026028
>>2025967
Заработало, спасибо. Теперь буду пытаться вникнуть как она работает (вопросов пока нет).
598 2026054
>>2024926

>только иногда чтобы что-то установить или пересобрать


this
так как мне в итоге только свой докер файл модить чтоли и туда уже тянуть ноду с нпмом ? пытался так, но из за того что делаю с образа php7.4-fpm там нету тупа образа ноды
запускаю из под макоси биг сюр если чо
599 2026230
>>2026054

>с образа php7.4-fpm там нету тупа образа ноды


Нода там и не нужна. Подтяни отдельный контейнер с нодой в докер композ
600 2026261
https://ideone.com/c4JI35 - Йода
Проверьте пожалуйста!
601 2026342
>>2026230
окей, а как это тогда сделать ? я же говорю что изначально так пытался сделать, но он постоянно в рестартинг уходит =/
603 2027046
Аноны, чет я запутался с авторизацией в ларавел 7.
Дефолтный вариант по доке - это установить пакет laravel/ui и развернуть его php artisan ui vue --auth. И лара создасть набор роутов и twig-шаблонов.
Проблема - я хочу запилить на Vue spa. Простенькое spa я могу сделать, api бекенд на ларе - тоже могу.
Не понимаю как должна быть сделана авторизация в данном случае , как вообще spa - авторизируется? Подскажите где почитать ?
Лара предоставляет аж три пакета:
Socialite, Passport, Sanctum - на какой стул мне сесть? И какая между ними разница? Все они используют JWT?
604 2027231
Почему все говорят, что язык умирает?
я только начал вкатываться и все, все, блять, поголовно говорят, что пхп учить как первый яп это пиздец хуево блять. Потом все говорят, что выучив пыху, я буду работать только на поддержке старых проектов. Лол, их щас хуева гора. Лет 10 ещё на пыхе точно будет хуева гора работы. Тот же битрикс будет в топе ещё дохуя лет (минимум пять, как по мне). А вордпресс? Там вообще ебанись какое коммьюнити. На битриксе и вордпрессе онли со стороны бэка вполне изично можно получать 120к+. Для меня это большие деньги. А потом можно подучить Laravel и спокойно пиздовать бэкендером в 200к+. При необходимости потом, если нужно будет, можно будет перекатиться в НОВОМОДНЫЙ околоГОУЛЕНГ язык и получать там дохуя бабок.
Можете меня обоссать, но я прав. Пыха будет минимум до 2030 года в топах, а за это время можно дохуища бабла на пыхе заработать.
605 2027250
>>2027231
Нужно окунуться в историю откуда пошла фраза "PHP это мертвый язык". Ты видимо её плохо знаешь, так же как и те кто эту фразу наверняка говорит.
Дело в том, что PHP создавался от безысходности, потому как в те времена не было языка для бэкенда и все пользовались CGI, соответственно код писался на C, а ты понимаешь, что такое писать код на C для сайта, трудное занятие.
Именно из-за этого и создался PHP, другой альтернативы никто даже не предлагал, даже Ruby или Pearl который так критикует PHP.
Создатель PHP создал этот язык как временную панацею от этой проблемы, все говорили, что этот язык не нужен, но в то же время множество компаний спрашивало как им пользоваться, парадокс, правда? Поэтому была создана документация и в неё добавлялся весь нужный функционал, математические функций например, или строковые.
Создатель PHP говорил с выходом новой версий, что когда появится альтернатива, PHP умрёт и даже он им не будет пользоваться. Давал срок в полгода. Но её так и не появилось и таким образом, каждые полгода выходила новая версия. И это продолжается по сей день.
606 2027297
>>2027046
Я когда-то использовал это https://github.com/tymondesigns/jwt-auth
Но это было больше трех лет назад. Не знаю, что сейчас в моде у ларавельщиков
607 2027432
>>2027046

>twig-шаблонов


Неужели в лярве отказались от богомерзкого бляда blade по умолчанию?
608 2027440
>>2027231

>Почему все говорят, что язык умирает?


Умирает после каждого запроса

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


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

>потом можно подучить Laravel


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

>можно будет перекатиться в НОВОМОДНЫЙ околоГОУЛЕНГ язык


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

>Пыха будет минимум до 2030 года в топах


Не факт, что в топах, но на наш век работы хватит, а может и нашим детям достанется
609 2027551
>>2024198
если ты вкатывальщик, то лет через 10
610 2027577
>>2027440
А по бабкам и возрасту?
Все пишут, что в 25-26 вкатываться уже поздно в пыху.
И джуны начинают с 30к, это правда?
611 2027580
>>2027551
5ый год работаю уже заебался нихуя не знать
612 2027582
>>2027577

>Все пишут, что в 25-26 вкатываться уже поздно в пыху


Нагло пиздят, я в 24-25 вкатывался и уже давно работаю

>И джуны начинают с 30к, это правда?


Зависит от того, куда пойдешь. В среднем разброс по рф от 500 до 1000 $ за джуна
613 2027587
>>2027577
Вкатился в 34. Но до этого всю жизнь с детства говнокодил для удовольствия
614 2027590
>>2027587
Говнокодил на Сишечке, 7 классов, вкатываюсь с 21, сейчас 23, мне пизда я даун?
615 2027600
>>2027590
Может ты неправильно вкатывешься? По собеседованиям ходишь? Что знаешь? На чем валишься? Изучить синтаксис не проблема, а вот задрочить всю сопутствующую экосистему может быть сложновато
616 2027606
>>2027580

>уже заебался нихуя не знать


Как тебе это удается? Не ебут на работе?
617 2027743
>>2027440

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


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

Кстаит в похопе скора выкатят файберы, маня асинхронность.
Дохоронят пхп до того что лет через пять она ноду начнет выгонять из ниши быстрых-асинхронных приложений, лол.
618 2027758
>>2027606
На работе нужен уровень крудоклепателя. Большинство тасок программируется иф елсами, там много ума не надо. Архитектурные таски разбирают синьоры, инфраструктурные - девопсы
619 2027760
>>2027743

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


Её уже го потеснил
620 2027807
>>2027743

>я до того как зндстру прочел - чувстовал себя пидорашкой


Анончик, опиши подробнее, что именно изменилось после.
15293094001630.jpg47 Кб, 567x604
621 2027826
>>2027743
А теперь еще читани Мартина, банду четырех и Эванса с Верноном - будешь одним своим существованием унижать жопаскрип макак и петухоноблядков
622 2027832
>>2027758
Платят-то хоть нормально?
623 2027877
Накидал небольшую либу для работы с конфигами. Хочу услышать мнение более толковых людей.

https://github.com/freezemage0/config/
624 2027911
>>2027832
Сотыгу имею
625 2027941
Хуйня ваш пхп. Больше 30к джун не получит и будет выгорать. Не учите пхп, тем более он году так в 2030 нахуй никому не нужен будет
626 2027942
>>2027941

>году так в 2030 нахуй никому не нужен будет


Ты скозал?
627 2027944
>>2027942
да я скозал и что ты мне сделаешь
628 2027957
>>2027944
Если ты в другом городе-ничего.
629 2027961
>>2027957
а я в другом городе как раз :р
630 2028012
>>2027600
Пока не ходил на собесы, решаю задачки на всяких сайтах, думаю начать скоро. А так параллельно симфоньку.
631 2028052
>>2028012

>А так параллельно симфоньку.


Какой-то пет пишешь?
632 2028070
>>2028052
Что такое пет?
А если я уже могу круд приложение заебумбенькать, могу ли я рассчитывать на позицию джуна за 40к?
мимодругойанон
40679190102159966426846297889124653757628416n.jpg79 Кб, 604x604
633 2028071
>>2027941
Минусы очевидны.

А объективные плюсы:
-- Прощает ошибки и не зависает
-- Можно программировать в любом стиле, на любом уровне абстракции, значит легко учить постепенно
-- 30-40К пока ещё хорошая зарплатка для некоторых регионов
-- Огромное количество обучающих материалов и готового кода
-- До сих пор 80% сайтов на РНР, куча работы
634 2028097
>>2028070

>А если я уже могу круд приложение заебумбенькать


Можешь или забубенькал? Разница существенна
635 2028099
>>2028071

>-- Прощает ошибки и не зависает


Прибавь докер и xdebug и будет зависать, а без них хуй отладишь

>-- 30-40К пока ещё хорошая зарплатка для некоторых регионов


Лет 5 назад с этого начинал, на чипсеки и бургеры хватало

>-- Огромное количество обучающих материалов и готового кода


Много мусора, но есть толковые
636 2028128
>>2028097
Писал раза два уже. Сначала с использованием mysqli, потом с использованием PDO.

Могу синглтон реализовать, правда не до конца понимаю, нахуя он нужен. Фасад могу ебануть (как я понял, он нужен для того, чтобы скрыть как работает система), остальное не помню
637 2028129
>>2028099

>Много мусора, но есть толковые


Подскажи плиииииз, буду признателен!
638 2028137
>>2028052
Да форум. О кстати! Посоветуй что для портфолио такое можно замутить сложное?

(Я на Си умею в типы данных итд, т.е сложность не имеет значения меня уже изнаСиловали)
639 2028139
https://ideone.com/Odsrjm - Суммы прописью.
Вроде работает, но там я как понимаю все проще можно было сделать.
Пишу калькулятор пока.
640 2028215
>>2028128

> Ну там синглтоны фасады хуемое я нихуя не помню


Ебаный ты козел блять, я бы тебя и за десятку не взял.
641 2028240
>>2028137
Когда я устраивался в первый раз, то показывал два свои проекта - сокращатель ссылок на симфони и парсер новостей на тогда еще живом сайлексе
643 2028249
>>2027877
А зачем? Чем оно отличается, например, от https://github.com/symfony/config ?
Особо не вчитывался, но заметил, что нарушаешь psr 2 (12) и консистентность объявления сигнатур методов, в одних местах возвращаемые типы есть, в других - хер. Рекомендую натравить статический анализатор и охуеть.
644 2028262
>>2028249

> Неконсистентность типизации


А как стипизировать mixed на PHP 7.2?

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


Key chaining

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


> PHP Standard Recommendations



> натравить анализатор


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

Конкретно по самой архитектуре будет что сказать?
645 2028264
>>2028262
*Травил псалм
646 2028279
>>2028240
Ок записал.
647 2028280
>>2028240
Спасибо.
648 2028334
>>2028128
Сделай круд на симфе с доктриной, тогда и поговорим
649 2028340
>>2028129
Ларакасты - основы пыхи, ооп и ларавел
Елисеев - практика на yii/laravel/symfony
Отус - более обзорно как в вузе, есть по языку и по фреймворкам ищи на торентах
650 2028348
>>2028137
Форум неплохой проект для пета. Содержит многие фичи крудов. Там можно много всего нахерачить: аутентификация, разграничение прав, менеджмент файлов, поиск, сервисы рассылок, кеш и т.д. на сколько сил хватит.
651 2028350
>>2028240
Тоже писал сокращатель ссылок на симфе. Уже не помню, чье это тестовое. Даже в докер обернул его
652 2028363
>>2028262

>А как стипизировать mixed на PHP 7.2?


Стараться избегать mixed

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


> PHP Standard Recommendations


Если ты пишешь код, которым будет пользоваться кто-то кроме тебя, то псры 1, 2 мастхев
653 2028373
>>2028363
Как избежать mixed, если, например, json_decode() его возвращает?

> пср 1, 2 мастхэв если кто-то будет пользоваться твоим кодом


Пользоваться и дорабатывать - разные вещи. Для использования кода достаточно создать один инстанс, для доработки - перечитать весь существующий код.
654 2028383
>>2028373

>Как избежать mixed, если, например, json_decode() его возвращает?


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

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


По работе частенько смотрю в кишочки фреймворков и либ. И гораздо проще и быстрее это делать, если код написан в едином стиле от кишочков yii1 плююсь, т.к. их писали до создания пср
655 2028385
>>2028373

>Как избежать mixed, если, например, json_decode() его возвращает?


Ну по хорошему он должен возвращать объект или массив, но какие-то сверхразумы подумали что хорошо бы еще парсить 'true' в true без топ-левел жсон объектов или массивов
656 2028393
>>2028383

> Ты же знаешь, что хочешь из json_decode() получить?


Нет, в этом и суть.
Была идея представить все значения в виде какого-нибудь ConfigValue, который знает о типе, но это тупость какая-то.
657 2028409
>>2028215
Я работал тестером в огромной компании, у которой сайт был на Битриксе. Зп миддла пхп разраба бали 180-220к. ООП как такового не было в принципе. Задачи были простейшие: вывести товары на экран, обработать фильтры и прочая поебистика. Где там нахуй нужен синглтон, м?
Если у меня будет выбор: стать супер-профессионалом в шкодинге или быть быдло-говнокодером и получать 200к, то я выберу 2 и даже, сука, глазом не моргну
658 2028431
>>2028409

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


И через пару лет охуеешь и пойдешь плотничеством заниматься
659 2028447
>>2028393
Попробуй хотя бы через интерфейс определить возращаемый тип, а то рили хуйня какая-то. Не понятно, что ждать, современными тайпчеками пыхи не обмажешься.
Ладно json_decode, когда он писался у пыхи про типы не думали. Но мы то solid-ные разрабы
660 2028449
>>2028409
Раз таков твой выбор и ты не сгоришь от этого за пару лет, то вай нот. Должен кто-то и легаси на битриксе поддерживать
661 2028471
>>2028431
200125. За 5 лет 12кк, Минус налоги, минус хавка, дорога и прочая дрочь. Лямов 9 точно останется. Мне их хватит до конца жизни.
662 2028473
>>2028449
Спасибо.
663 2028488
>>2028447
Перепиливать типы данных пыхи под классы звучит ну сверх тупостью. Знаю, что у Себастиана Бергмана есть такой пакет, с типами данных который, но чёт даже хз. Имхо, непрактично со стороны пользователя либы.
664 2028557
>>2028488

>Перепиливать типы данных пыхи под классы звучит ну сверх тупостью


Имел в виду либо вернуть 1 тип данных, либо обернуть несколько типов за интерфейсом

В чем проблема возвращать 1 тип данных? Так и разрабу понятнее и ide нормально автокоплитит.
Нет, мы вернем тебе строку, или инт, или аррей, или нахуй иди
665 2028621
>>2028099

> Прибавь докер и xdebug и будет зависать, а без них хуй отладишь


ни разу не видел зависший xDebug;
живу без докера, с другими виртуалками, все живы, на бекенде ничего никогда не висло
666 2028624
>>2028621
Это происходит так.
Есть тормознутый легаси проект.
Ставлю иде в режим дебага, расставляю точки, делаю запрос. Запрос вместо ожидаемых секунд 15 идет больше минуты. Внутри докер контейнера что-то подвисает и приходится перезапускать, чтобы поймать дебагером запрос
667 2028625
А почему в мануале пишут, что функция mt_rand() небезопасна? (сорри, я нуб если что). Как я понял, она генерирует сид на основе таймстампа, pid и каких-то других внутренних параметров. Разве есть рабочие методы предугадать число, или подразумевается, что она небезопасна только теоретически?
669 2028702
>>2028139
https://ideone.com/VHRk6q
У меня ошибка была, не все числа переводились.
670 2028746
>>2028690
Это да, я нагуглил уже, но там идет речь, что в теории можно предсказть. Мне интересно, есть ли готовый эксплоит, который все это делает.
671 2028828
Laravel echo
672 2028840
Помогите советом, а то я уже утратил любую надежду и впал в депру. Когда-то думал мол вкачусь вон в разработку через PHP быстро, вакансий же море.
Вот уже прошел год, успел всякое попробовать, выяснил что единственный приемлемый вариант для меня - это Симфони.
С ларавелом уяснил что он мне совсем не нравится, срань типа всяких CMS никогда даже не рассматривал.
Вот только выяснилось, что джуны на Симфони никому не нужны. По крайней мере в моем городе. За этот год вообще таких вакансий не появлялось, хрен знает на что я, дурак, совсем надеялся.
Переезжать по некоторым причинам сейчас никуда не могу. Руки совсем упали, дальше пилить проекты на Симфе кажется лишенным смысла, так вообще вечным ждуном можно стать.
В ларавел не хочу, там сапоги защищать надо. Может по каким-то другим языкам двигаться?
Вообще хочется в golang, но это в будущем. Джуны там не больше нужны чем на симфони.
Куда с моими входными податься? Вроде кандидат я не самый хреновый. Молодой, вышка там, знания широкие по IT в целом, не одним пыхом деланный.
Или может есть какие-то варианты таки в Симфони попасть? Может писать всем компаниям, которые ищут миддлов и сеньйоров, что я такой-то класный-прикольный, готов вылизывать эйчарше ноги и работать за еду?
Поделитесь опытом, короче.
673 2028864
>>2028840
А что умеешь?
674 2028938
>>2028840
Так откликайся на мыдловакансии, если ты такой не самый хреновый.

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


Што

>знания широкие по IT в целом, не одним пыхом деланный


Что-то мне кажется, что здесь попахивает эффектом Даннинга-Крюгера
675 2028953
>>2028864
Ты за пых спрашиваешь или за другие языки?
Если за пых, то стандартные вещи, которые должен уметь джун, ну еще линуксы. Из того, с чем еще не сталкивался: докер, нереляционные БД, всякие кролики, а так же всё что связано с деплоем. Но такое у джунов никто и не требует.
>>2028938

>Так откликайся на мыдловакансии, если ты такой не самый хреновый.


>Что-то мне кажется, что здесь попахивает эффектом Даннинга-Крюгера


Да что ты сразу унижать меня принялся. Я просто с иронией написал что я не совсем вкатывальщик с улицы и с программированием и смежными вещами знаком много лет.
А эти универские "широкие знания" мне разве что на собесе помогут, я это за особое достоинство не считаю, т.к. понимаю что никому на практике широкие знания не нужны, нужны узкие и глубокие.
676 2028958
>>2028840
Так откликайся на мидло ваки. Наври про опыт в резюме. Потрай собесы, собери платину из вопросов, вызубри и по новой. И не брезгуй удаленкой.
За год уже мог бы вкатиться
677 2028959
>>2028840

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


В тебе задетектят неуверенного в себе вкатуна и укажут на дверь.
Проси рыночную зп, чтобы сойти за своего
678 2028962
>>2028953

>что я не совсем вкатывальщик с улицы


А производишь иное впечатление

>и с программированием и смежными вещами знаком много лет


А толку то? Работу ведь не нашел

>А эти универские "широкие знания" мне разве что на собесе помогут


Не помогут, там другое спрашивают
679 2029007
>>2028958
>>2028959
Да ну, я вообще не верю в такие истории кабанячие. Отсутствие реального коммерческого опыта детектится за минуту, к чему тут платиновые вопросы?
>>2028962

>А толку то? Работу ведь не нашел


Так и нету работы, 3 года коммерческого минимум просят, и знания соответствующие
680 2029040
>>2029007

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


Оно не детектится, если:
1. Ты писал код
2. Ты знаешь ответы на платину
3. Можешь наврать про то, чем занимался на работе и про процессы
Сойдешь за мидла
681 2029042
>>2029007

>Так и нету работы, 3 года коммерческого минимум просят, и знания соответствующие


Тебе же написали, что нужно есть суп ложкой. Положи нож
682 2029131
>>2028625

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

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

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



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

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

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

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

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

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

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

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

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

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

Советую почитать.
682 2029131
>>2028625

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

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

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



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

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

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

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

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

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

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

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

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

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

Советую почитать.
683 2029281
>>2028953
Сорян, унижать не собирался. Ты на собесы-то ходил? Во первых, не стесняйся откликаться на вакансии для мидлов. Ты даже не можешь представить, какие чудовищные долбоебы иногда иногда откликаются даже на синьерские вакансии, и они не терзаются сомнениями, а берут и приходят работы, правда, не получают. Во вторых, напизди про коммерческий опыт я так сделал когда-то, брат жив
684 2029401
Стоит ли писать цикл и в нём if, или сперва if а потом 2 разных цикла?
685 2029522
>>2029401
Приведи конкретный код
686 2029724
Анон, подай идею для какого-нибудь небольшого интересного приложения, где можно было бы использовать брокер сообщений
687 2029742
>>2029724
Делал одно приложение, куда воткнули ребит.
Парсер выдачи гугла.
Скармливаешь приложению кучу запросов (список строк). Каждый запрос кладешь в очередь. Соответственно достаешь из очереди и делаешь запрос в гугл, результат кладешь в базу (или куда хз).
Цель была в том, чтобы отслежить позиции определенных сайтов в выдаче гугла по запросам.
688 2029745
>>2029742

Не лучше ли тут использовать очередь на основе таблицы в БД? Тогда для каждого запроса можно отслеживать статус, кол-во неудачных попыток. А то в Rabbit закинул задачи и непонятно, на сколько процентов задача выполнена и сколько еще ждать.
689 2029755
>>2029745

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


В ребите есть средства мониторинга
120-1208910pepe-meme-rarepepe-cartoon-transparent-rare-pepe[...].png35 Кб, 312x280
690 2029869
Зачем решать задачки если вкатываются по связям? Для интереса?
photo2021-05-1320-55-48.jpg70 Кб, 828x1224
691 2029886
>>2029869

> вкатываются по связям


в твоём манямирке обиженки

мимо 20 лет опыта, успел поработать по связям и без, первую РАБоту в IT в 2001 году нашёл тупо по собеседованиям
12owoq.jpg66 Кб, 884x800
692 2029897
>>2029886

>в 2001 году

693 2029977
>>2028409

>на Битриксе


>ООП как такового не было


Там его некуда вкорячивать, если только в /local замутить композер и писать классы по psr, но работа с самим битриксом сведёт на нет все старания с ооп, поскольку большинство логики придется писать в шаблонах в файлах result_modifier, либо писать с нуля компоненты и уже можно чуть чуть в ооп

>Где там нахуй нужен синглтон, м?


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

>или быть быдло-говнокодером


Если тебе нравиться колупаться в говне, то почему бы и нет. Работу с ним я сравнил бы работу в автосервисе для тазов, открываешь капот девятки, а там пиздейшн, канистры, шланги, хаотично расположенная проводка, что-то замотано изолентой, хуй до чего доберешься пока полмашины не разберешь и все в слое масла и говна.
694 2030050
>>2029869
Задачки не решал.
Вкатился без связей.
695 2030058
>>2029897
и чо? что-то изменилось?
696 2030071
>>2030058
Неее, ты чеее.....
697 2030201
Аноны, такой вот вопрос - нихуя не разбираюсь в том сколько мне брать за работу. Я не имею большого опыта в коммерческой разработке, и а периодически из круга знакомых приходят предложения о том что бы написать небольшую приложуху. А я не знаю сколько брать денег.
Как пример - один человек просит что бы я реализовал ему приложение по аналогии с примерно таким приложением:
авторизация/регистрация, в систему в можно внести клиента, и в календаре (датапикер) с выбором дат можно для этого клиента выбрать пару услуг на какой либо день. Соответственно в самом календаре отмечаются дни в которые назначены услуги.
В общем все довольно просто. Как пример он мне показал подобное приложение написанное для его знакомого. Оно сделано на пхп 5.3, на клиенте джейквери, на сервере никаких фреймворков, роутинга нет (естественно всего остального тоже нет), сделано относительно архаично - url - тупо отражает физические каталоги сервера.
Приложение написано спецом из одной бедной перефирийной республики юга России - и стоило со слов моего знакомого который хочет аналогичное -16 тыс рублей.
Это адекватная цена? Мне кажется реально низкой. Но я территориально в более богатом регионе .
И я естественно так примитивно не хочу его реализовывать - вообще хочу spa на vue и на бэке slim. А то и ларавел (понимаю что избыточно)
И если такое делать spa + slim или laravel - какие адекватные границы стоимости такого приложения?
photo2018-01-2022-39-51.jpg163 Кб, 1185x1080
698 2030210
>>2030201
Чо как маленький

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

если он не собирается растить их этого поделия какую-то супер-систему, а рассматривает проект как небольшую утилитку, то нафиг эти SPA никому не упёрлись, цена важнее
700 2030219
>>2028840
Я чуть с другой стороны скажу тебе. О том что меня последнее время стало аж глушить.
Мне за 30 децл, ойти-вышка в вузе прогинг был, админил, последние 3 года я обратно-вкатываюсь. Уже чето могу. И вот что скажу - меня последние время аж от самого себя корячит, а именно от инертности и неспособности активно дергаться и суетиться, потому что за годы нихуя не делания эта овощность реально вьелась глубоко в шкуру. Особенно стремно потому что у меня не мало кабанчиков в окружении есть, и я смотрю как они подскакивают с переменным успехом - но они подскакивают, и по итогу в плюс.
От этой овощеватости хочется самому себе по ебалу надавать. Дико бесит. Но выученная беспомощность - это лютое говно говна. Дико сложно себя переделать.
Поэтому оч советую - не скатись в эту парашу. Забей хуй но то что ты чего то не знаешь - активно скачи по интернету, проходи собесы, ищи заказы как угодно, пили как можешь. Короче я понимаю что я со свой стороны деформации говорю - но я искренне считаю что психика - важнее навыка. И что по жизни гораздо лучще быть подскакивающим кабанчиком со средними знаниями, чем овощным , но высокоуровневым спецом
Навык технический он придет, а вот если ты свою психику загонишь в болото "инертного говна" - вылезти будет так тяжело что ты охуеешь. И не факт что сможешь.
701 2030224
>>2030210

>> обязательно объясни и покажи заказчику отличия


Это я сделал.

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



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

>>2030213

>>если он не собирается растить их этого поделия какую-то супер-систему


потенциально собирается. А если нет - ради опыта я реализую на ларе и вью - за среднюю цену подобного приложения. Вопрос в средней цене.
937811118775742826690337362283443876528128n.jpg110 Кб, 677x950
702 2030243
>>2030224

>не понимаю как посчитать трудозатраты


Берёшь и считаешь количество часов, которое тебе реально понадобится, умножаешь на согласованный с заказчиком рейт, к примеру, 1-2 тыс. рублей за час да, в Рашке программер дешевле шлюхи. Получается цена.

Если у заказчика денег нет -- затягиваешь ремень и отталкиваешься от его бюджета только зачем.
16206636724053.png287 Кб, 413x462
703 2030244
Аноны сап. Интересует ваш опыт в поиске галеры. Многие сейчас используют таймтрекерв? и был ли у вас позитивный лол опыт работы с такими конторами. Если кто то из деревенской галеры успешно перекатился в нормальную контору, поделитесь своими историями. И в целом про стеки интересно. Что умели чему научились.
Всем добра.
704 2030250
>>2030244

> деревенской


Тут непонятно, почему "деревенской"?

Время от времени нанимался в галеры, ничего плохого в них не вижу. Вообще, по-умолчанию нет никакого преимущества в статусе "не-галеры".
705 2030254
>>2030244

>Многие сейчас используют таймтрекерв?


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

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


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

>И в целом про стеки интересно


Что про стеки? Symfony>Laravel>Yii
CMS говно не рассматриваю
706 2030271
>>2030254

> Что про стеки?



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

>>2030250

> > деревенской


> Тут непонятно, почему "деревенской"?


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

>Вообще, по-умолчанию нет никакого преимущества в статусе "не-галеры"

708 2030293
>>2030271

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


Работал с Yii и Laravel попеременно

>ищут кабанчика на зп 35, который умеет и в девопс и в spa, должен иметь опыт работы со всеми фреймворками, цмс готов работать по 12 часов в сутки без выходных


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

>Ну и пилить в одного проект, на который нужно ещё минимум человека 2-3


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

>Без внятного тз и/или макета


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

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


А это уже твоя прямая компетенция писать код, который несложно менять. Естественно в рамках сроков. Если сроки занижены - код будет крайне хрупкий
709 2030328
>>2030293

>>Ищут обычного разраба на 8 часов.


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

Это я к тому что ухо востро нужно держать, а нос по ветру.
710 2030346
>>2030282
ну для меня нет, а ты как хочешь

по моему опыту, точно гораздо лучше работать на аутсорсинговую компанию с выстроенной культурой, чем на мелкие конторки
711 2030391
>>2030293
Ты зелень? Или куколд, который яростно дефает бизнес?
Ты точно пишешь про галеры из мухосраней? Или это галеры из твоего манямирка? В регионах, чем дальше от ДСов, тем больше этот самый бизнес пиздодельный и хочет экономить на всем.

>Ищут обычного разраба на 8 часов


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

>Нет тз - проси тз. Неточное тз - уточняй, задавай вопросы, требуй макет


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

>Откуда ты знаешь, сколько человек нужно на проект? Это решать менеджменту


Oh boi. Риторика из разряда "нас ебут а мы крепчаем" / "бизнесу видней"?

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


По твоему код это абстрактная хуета, которую достаточно просто написать по всем паттернам и все? Вот тебе пример: пишешь ты йоба круд по макету, а потом хуякс прилетает задача "Ой у нас там в макете не точности, мы вот это перенесли в другой раздел, вот это убрали а здесь поменяли. Там немного правок, сроки не сдвигаем" и в итоге нужно переделывать базу данных, логику контроллеров, вьюшки, шаблоны.
712 2030426
>>2030328
Только зачем идти к таким работать?
713 2030434
>>2030391
Хз, где ты такие галеры нашел.
Работал в региональной конторе, уходил отработав 8 часов, никто косо не смотрел. На удаленке с этим еще проще.

>Который рассказал про таймтрекеры / штрафы


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

>Кейс "ты чо тупой тут все понятно и без тз"


Очевидные неадекваты, с которыми не стоит работать

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


Тебе то какая разница, сколько работает над проектом людей? Главное - таски закрывать

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


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

Так что лучше личную кабанчиковость развивать постоянно.
715 2030848
Чем Ларавел лучше Симфони?
716 2030931
>>2030848
Тем же, чем вордпресс лучше ларавела.
717 2030939
>>2030931
А кроме шуток, епта? Мне в свое время понравилась валидация через реквесты (теперь и в симфони так делаю) и миддлвари (в симфе по ходу только через евент листенеры можно сделать).
718 2030998
>>2030939
А я без шуток говорю. Зависит от уровня проекта. На самом дне вротпресс и прочие CMSки лучше всего, на не самом дне ларавел. На среднего уровня проектах Симфони, если еще выше - лучше не пхп.
719 2031407
Бля, заебался тупить. Пил спа на вью + лара. Для аутентификации поставил пакет санктум - вроде все это работает. Но я чето торможу в понимании как. по паре туториалов сделал регистрацию + логин. Лара - у меня седьмая, пакет laravel/ui поставил, развернул php artisan ui vue --auth

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

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

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

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

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

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

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

Я недавно погрузился в ларавел и vue+vue router_vuex - и все это в свовокупности не слабо ебет меня в мозг.
720 2031573
>>2031407

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



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

Смотри только чтобы из условного tryLoginCurrentUser никакие ошибки не вылетали. Если у тебя не получилось зафетчить текущего юзера, то тут уже наверняка что-то с токеном, можно например смело инитить приложение и редиректить на страницу логина
722 2031623
>>2031573

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

> intval($number)


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

> if ($number > 99) {


> $number %= 100;


> }


Короче и понятнее будет тут написать return $number % 100

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

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

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

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

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

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

> foreach ($this->importerMap as $f => $importer) {


> if ($f == $format) {


Цикл тут бессмысленный (так как не может быть двух одинаковых ключей) и заменяется на array_key_exists.

> return clone $importer;


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

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

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

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

> if (!empty($this->importer->getFilename())) {


> $this->config = $this->importer->import();


> }



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

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

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

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

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

> foreach ($this->importerMap as $f => $importer) {


> if ($f == $format) {


Цикл тут бессмысленный (так как не может быть двух одинаковых ключей) и заменяется на array_key_exists.

> return clone $importer;


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

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

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

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

> if (!empty($this->importer->getFilename())) {


> $this->config = $this->importer->import();


> }



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

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

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

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

>>2026261

> array_push($reversed,



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

А так, верно.
726 2032006
>>2031658
Спасибо за проверки, пока написал калькулятор, но хочу со скобками и порядком написать. Как сделаю выложу сразу всё.
727 2033462
>>2030848
ничем
728 2033896
Сап, аноны. Щас прохожу бесплатную стажировку, она продлится неделю, надо будет выполнить 5 заданий такого типа
https://docs.google.com/document/d/1y9yN8WWmXRNhZhmt6Ccwukxt49Qq6r_jStbb992kbKo
Это адекватные тестовые задания для стажёра-джуна на 15к? Стоит ли потеть или нахуй надо?
729 2033936
>>1998470 (OP)
Есть get-запрос на некий пхп-эндпоинт, мне надо с фронта закинуть туда некоторые данные из localStorage чтобы пхп-бэк их обработал. Как это сделать? Только через query-параметры?
image.png67 Кб, 771x609
730 2033957
>>2031658
Вот про показ страницы ошибки (точнее про возвращение текста с ошибками в виде json) и идет речь. Второй слушатель нужен для перехвата исключений, которые бросает фреймворк, и для преобразовывания их в JsonException
Нормальный ли это подход?
731 2034189
>>2030848
Лара построена на симфони.
732 2034249
>>2033957

>false === $ex instanceof JsonException


Нихуя себе я утром чуть не всрался от такой конструкции
733 2034322
>>2033896
Зачем аплаишься на гроши? Никто в айти не получает такие копейки. Даже приходящая в офис уборщица будет смеяться.
Насчет задачи - задача адекватна для мидла за 100к, но никак не для стажера за 15к
734 2034324
>>2033936
Обычно такое постом делается
735 2034375
>>2034322
В мухосоранске моём вакансий нет, ищу удалёночку с нулём опыта работы. Кидаю дохуя откликов, за пол месяца только эти ответили и 1с.
736 2034386
>>2034375

>ищу удалёночку с нулём опыта работы


А нарисовать опыт не судьба?
737 2034418
>>2034386
Не ебу что отвечать когда спрашивают про ДОСТИЖЕНИЯ или просто интересные проекты. У меня интересных проектов 0, обычные магазы, новостные сайты и парсеры
738 2034429
>>2034418
Любую задачу можно приукрасить и подвести к достижениям. Например парсер, мб ты там удачно применил какой-то инструмент (очереди, кеш, что-то еще), увеличив производительность в десятки раз.
Или в новостном сайте прикрутил хитрий алгоритм рекомендаций.
Общий рецепт - ищем в другом проекте классную фичу, думаем, как бы реализовали, на собесе говорим, что реализовали и как.
739 2034525
>>2034429
>>2034386
Мне интересно, это только в пхп засилие такие долбоебов, или везде?
740 2034538
>>2034249
с Йода познакомиться нужно нотацией тебе
741 2034623
>>2034249
А что не так с той конструкцией? Я всегда так пишу, если не использую предикаты, да и то только если условие проверяется на истинность

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

if (false === $person->isGay()) { ... }
742 2034723
>>2034623
Я залип на скрин пару минут потому что мне показалось что if ((false === $ex) instanceof JsonException), ну ты понял

>if (false === $person->isGay()) { ... }


Тут хуй знает что хуже, использовать такую йобда нотацию, или не использовать простое отрицание. Вроде уже давно все присваивания в ифах подсвечиваются, не пойму к чему это всё
743 2034775
Чето на убунте настройка опача ебет меня в голову. Не могу новыйх виртуальный хост добавить.
Создаю новый файл, прописываю в него необходимый минимум.
Добавляю в конфигурацию апача
sudo a2ensite my-example

Он пишет что конфигурация изменена, рестартните. Я перезапускаю и получаю хуй.
Полдня дрочусь, заебло.
744 2034783
>>2034775
п.с.

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

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

>>2034775
А зачем в 2021 году апач?
В sites-enabled симлинк присутствует? Адрес в hosts добавить не забыл?
746 2034916
>>2034788

>>А зачем в 2021 году апач?


А есть разница для обычно сайта?

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

Хотя на практике асинхронность мало где и нужна.
753 2035052
Что написать нужное на PHP?
754 2035058
>>2034375
>>2033896
Это у них не задание явно а по работе хотят чтобы ты им за копейки сделал, вали с этой конторки
755 2035068
>>2035052

Обычно идеи появляются сами. Например, понадобилось тебе валидировать ИНН, ты погуглил, не нашел ни одной нормальной бибилиотеки и решил написать свою и выложить. Или понадобилась точная работа с дробями, поискал класс Rational, не нашел, сделал свой. Или понадобилось искать в ФИАС введенный в произвольной форме адрес, не нашел, сделал что-то свое.
756 2035078
>>2033936

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

>>2033957

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

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

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

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

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

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

если (сущность не найдена) {
выкинуть исключение JSONEXception;
}
757 2035083
>>2035078
Да с чего ты взял, что любые? Только некоторые, наподобие 404 итд, они явно прописаны во втором слушателе.
758 2035117
>>2035039
а в чем проблема сделать асинк?
как то же js посадили на движок из С
759 2035125
Кто шарит за js?
Как изменить цвет блока при удержании мышью?
токсик из жс треда,ты тут?
760 2035271
>>2035048
Да, дружок, ты уже заебал если у меня детектор не сломался, тебе ничего не нужно на твоих древних микропроектах в зассаной галере. Ни асинхронности, ни микросервисов, ни разделения бэка и фронта. Но зачем всем об этом знать?
761 2035317
>>2035012
Думаю файберы будут почти на 100 процентов. Всратая асинхронность из коробки закроет еще какой то определенный диапазон тасков. пихипи собственно так и развивается - разползаясь по чужим нишам потихоньку.
762 2035370
Вы используете в работе подход GraphQL?
763 2035398
>>2035001
Говорят, что только amp пригоден для прода
764 2035424
>>2035317

>Всратая асинхронность из коробки


И что именно в ней будет всрато?
765 2035431
>>2035398
А овчинка стоит выделки?
766 2035455
>>2035431
Зависит от задач. Если хочется всего лишь небольшого ускорения, то можно посмотреть в сторону роадраннера
767 2035523
>>2035455
Хочу вебсокетов
768 2035554
>>2035068
У меня такое ощущение как будто все уже изобрели.
769 2035573
2 стула
валидировать форму на сервере или через жс на фронте?
770 2035591
>>2035573

>валидировать форму на сервере


Это обязательно

>через жс на фронте


Это говно легко обходится, только в дополнение к серверной валидации для юзер экспириенса
771 2035605
>>2035591
я так понимаю,надо учить упоротые регулярные выражения?
772 2035606
>>2035605
Нет, надо учиться пользоваться либами для валидации
773 2035608
>>2035523
Тогда амп
774 2035611
>>2035606
которые на основе их сделаны?
к каждой полю формы идет функция,так?
775 2035628
>>2035611
Если на фронте и без фреймворков, то да. Можно взять какой-нибудь input mask и описать правила валидации для каждого поля ввода. Там наверняка из коробки будут все типовые случаи и можно будет обойтись без регулярок, чтобы не дать ввести то, что не нужно. Но это все не отменяет необходимости делать валидацию на бэке
776 2035642
>>2035605
Зачем?
Не помню, когда последний раз имел с ними дело на проде
777 2035644
>>2035642
ну как,основа же для вката
778 2035647
>>2035644
Ну можешь уделить час на теорию и пару часов на практику. А так не вижу смысла их ковырять, пока таска по ним не пришла. Достаточно знать, что есть вот такой кроссплатформенный инструмент работы со строками
779 2035799
А как можно защитить статические файлы - картинки, файлы с js кодом, css и т. д.? Вот допустим такая ситуация: есть админка в ее шаблоне подключается через тег script js файл, который лежит на сервере, но ведь кто-то другой, допустим, начнет брутфорсить и сможет его найти, а там по коду фронтенда админки можно лучше понять как работает сайт, что плохо для безопасности. То есть надо это как-то на уровне апача/нжикса блокировать?
780 2035840
>>2035799

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


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

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


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

>То есть надо это как-то на уровне апача/нжикса блокировать?


Опять же, если у тебя весь сайт как какой-то вордпресс валяется в публичной папке, то да, нужно денаить папку .git, папки vendor и т.д.
781 2035890
Заканчиваю универ немного по другой специальности. Нашел вакансию стажера на пхп. Пишут, что обучают полностью с нуля. Из требований - только основы php, js, MySQL. Мб кто подскажет, что могут вообще спрашивать и что надо знать в таких случаях? В универе прогал немного, но в целом основы знаю какие-никакие
782 2035913
>>2035840

>не нужно написать в урле /assets/admin.js или что-то подобное


Да, я это и подразумевал, что кто-то просто будет перебирать названия файлов по адресу /assets/
783 2035945
>>2035605

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

>>2035642

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

>>2035799

Если тебе хочется максимальной безопасности, можно весь раздел админки закрыть HTTP-авторизацией и никакие файлы оттуда не будут выдаваться. Но придется два раза логиниться.
784 2036172
>>2035945

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


поподробнее
785 2036569
>>2035554
Так и есть, это какой-то программисткий юмор у чела
image.png281 Кб, 763x827
786 2036572
>>2035554
всё поверхностное -- да

но многое переизобретается,
либо с новыми инновационными технологиями,
либо просто в нужном месте в нужное время
787 2036612
>>2036572
Как всегда простые и понятные сервисы рубят бабло...
эх..
788 2036944
Если у меня много $_POST на приеме,так и херачить десяток списком?
789 2036966
>>2036944
Маппер напиши
image.png311 Кб, 560x430
790 2037308
eEk4qpFTGM.jpg54 Кб, 695x494
791 2037372
792 2037417
Ratchet кто-нибудь трогал? Как можно безболезненно прикрутить чятик к готовому приложению с аутентификацией через jwt?
793 2037608
Вот допустим есть функция проверки формы(логин и пароль)Сначала проверяем логин с условием,если тру идем к паролю,а если фолз,то что кодить?
794 2037636
>>2037608
Нескурно их отдельно проверять.
Проверяй их вместе(грубо говоря делать запрос в базу на наличие логина с паролем) и выдавай общую ошибку вида "не верный логин или пароль"
795 2037649
>>2037636
а если валидность?
допустим логин,имя или пароль не правильно записаны,там меньше 6 символов или есть ненужные символы?
Сделать убийство скрипта и выбросить сообщение?
796 2037659
>>2037649
Так ты определись для начала, что за форма у тебя: логин или регистрация. Там правила валидации разные
797 2037664
>>2037659
ну давай для регистрации.
я щас как раз читаю регулярки
798 2037665
>>2037649
В общем случае для формы задается список правил валидации (встроенные в фреймворк, либо кастомные функции) вида [параметр => правила] или кастомный валидатор. Потом проходимся по этому списку, возникшие ошибки заносим в массив $errors и отдаем (по апи или рендерим в шаблон)
regex1.jpg22 Кб, 431x328
799 2037694
Так,почему не подходит под шаблон?
regex2.jpg16 Кб, 312x199
800 2037707
>>2037694
а вот так получилось
801 2037717
>>2037694
Потому что подчеркивание не входит в выбранные тобой диапазоны символов
802 2037727
>>2037717
интересно,а как обстоят дела с алфавитам где есть точки,круглишки,хвостики?
803 2037733
>>2037727
Гугли regex unicode range
804 2037745
>>2037733
а если я хочу определенный символ @ добавить в допустимые к буквам и цифрам?Как записать?
805 2037750
>>2037745
Взял бы какую вводную статью по регуляркам, да почитал. Там есть про диапазоны символов
806 2037753
>>2037750
да я тупанул,дочитал
можно в квадратные скобки запихать или \@
807 2037787

> В случае, если первым символом описания класса является '^', логика работы инвертируется: класс соответствует одиночному символу, который не содержится в наборе, определяемым классом


[^@]-то есть этот символ отвергается как допустимый?
regex3.jpg67 Кб, 733x639
808 2037897
Ошибка на 31 строке.
Где я неправильно накодил?
809 2037905
>>2037897
Ошибку мы должны из космоса прочитать?
810 2037906
>>2037905
сорри
811 2037909
>>2037906
PHP Fatal error: Uncaught Error: Call to undefined function checking_login() in /workspace/Main.php:32
Stack trace:
#0 {main}
thrown in /workspace/Main.php on line 32
812 2037911
>>2037897
Поставь пхпшторм. У тебя опечатка в синтаксисе (название функции). Он бы тебе подсветил
813 2037938
>>2037911
да,исправил
814 2037951
>>2037897
Возвращай из таких функций булевы значения, а не строки

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

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

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

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

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

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

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

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

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

[^@] значит "любой символ, кроме @"
[^a-z] значит "любой символ, кроме букв a-z"
817 2038067
>>2037608

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

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

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

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

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

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

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

На практике, конечно, многие не думают об очевидности кода, а просто лепят как проще.
819 2038071
>>2036172

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

Это обычно настраивается не в PHP коде, а на уровне веб-сервера, например, в Апаче или Нгинксе.
Отрицание ^ в квадратных скобках, RegExp 820 2038391
Имею такую, казалось бы, простенькую задачу. По краям две буквы 'a', а между ними - какой угодно символ, кроме 'e'/'x'. Результат виден на пикриле. Почему код не сработал, как следует, что на самом деле произошло?
IMG20210522140403.png54 Кб, 720x292
821 2038395
>>2038391
Добавлю, данный код сработал на отлично, когда я написал вот так: '#\ba[^ex]a\b#'

Что это значит, объясните пожалуйста подробно.
822 2038704
Напомните почему в документации нет инфы как усатанвоить пыху
823 2038712
>>2038391

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

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

>>2038395

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

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

При этом \b не соответствует какому-то символу, а соответствует границе между двумя символами.
824 2038724
>>2038704

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

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

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

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

Потому под Windows проще установить все вручную. Скачать нужную сборку с https://windows.php.net/download/ (желательно 64-битную версию, если система это поддерживает), распаковать в папку, добавить эту папку в PATH.Также, скачать и установить с сайта Майкрософт Visual C++ Redistributable for Visual Studio 2015-2019 (это не Visual Studio, а лишь небольшая библиотека). Ссылка на VC Redist есть на том же сайте слева.
825 2038883
Сколько ядер использует пхп?
1?
826 2038934
Почему версия ларки такая старая, или я что-то не так понимаю?
фвыфы.jpg66 Кб, 536x382
827 2038936
>>2038934
отклеилось
828 2038938
>>2038936
ты ставил по офиц гайду?
829 2038959
>>2038938
Установил пыху, потом композер и через него
830 2038994
>>2038936
Так это же вроде версия конкретно инсталлера, не пользовался им. Версию ларки посмотри например в composer.json
pizda.jpg355 Кб, 1006x728
831 2039025
Как фиксить?
832 2039028
>>2039025
Валера, ну япона мать. Ты или загугли, или скинь версию пыхи и ларавеля
833 2039045
>>2039028
Laravel Framework 7.30.4

пыха восьмая
834 2039085
>>2038712

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


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


А ведь и вправду. Большое спасибо за помощь, впредь буду внимательнее.
835 2039290
>>2038883

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

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

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

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

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

Laravel ReflectionParameter::getClass is deprecated

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

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

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

- либо снести установленный фреймворк и как-нибудь установить 8-ю версию
- либо исправить версию фреймворка и библиотек в composer.json и сделать composer update. Это полезно для лучшего изучения композера. Сравни свой composer.json с конфигом от Ларвеля 8: https://github.com/laravel/laravel/blob/8.x/composer.json и внеси себе нужные изменения.
837 2039411
>>2038724
А что выбирать thrfead safe или Non Thread Safe ?
838 2039427
Какая охуенная документация на пыхе
https://www.php.net/manual/ru/xsl.installation.php
839 2039448
>>2038724

>распаковать в папку, добавить эту папку в PATH



Как добавить?
1234.jpg113 Кб, 634x518
840 2039489
>>2039448
Все разобрался, но у меня теперь нету php.ini
zaebalo.jpg228 Кб, 1010x726
841 2039491
Как фиксить?
842 2039522
>>2039489
Пробовал восьмерку, там тоже нет
загружено (1).mp4snapshot00.03[2021.05.0418.09.52].jpg91 Кб, 576x758
843 2039774
>>2039491
>>2039522
>>2039489
>>2039295
Все, запустил, спасибо
844 2039944
Валера, похапе на винде - это путь по хуям в никуда.
845 2040118
>>2039774
Поставь виртуалку с линуксом,если конечно у тебя не старое железо
846 2040223
>>2040118
На Винду лучше wsl накатить, правда докер ебется с памятью но шо поделать
847 2040250
>>2040118
>>2040223
Проще поставить убунту рядом с виндой и не ебать мозг ни себе ни людям
848 2040286
>>2040250
и шоб отвалился вай-фай,блютуз и сетевуха как у меня?
849 2040426
>>2039944
>>2040118
>>2040223
>>2040250
>>2040286
вы, безрукие педики, анон давно всё запустил, и тут вы с непрошенными советами, хаха
850 2040444
>>2030434
Разговоры из разряда "нет хлеба - ешьте пирожные".
Нужно быть достаточно прошаренным чтобы выкупить на собесе что тебе пиздят. И нужно быть достаточно богатым, чтобы тут же на изичах уволиться и сидеть без зарплаты условные пол месяца, пока ищешь другой вариант. Да и в целом, если ты можешь себе позволить выбирать работодателя, то для тебя как минимум весь российский рынок открыт.

Я сам именно потому и съебал в свое время из региона, что даже с охуенным опытом у тебя на выбор пять контор. А там уже как фартанет, может будет норм, а может душка. Любой якорек типа ипотеки или личинуса и ты уже хуй куда денешься оттуда.
851 2040473
Вкатился я в ваше айти, аноны. Вкат занял ~5.5 месяцев практически с нуля.
Перед поиском работы потыкал ларку около месяца и по ней же начал что-то искать. На поиск работы ушло пару недель от силы, при условии, что я сам не особо охотно откликался на вакансии и живу далеко не в дс1, дс2. В итоге за неделю получил сразу 4 оффера: два на удаленку, два в офис. К собесам никак не готовился. По факту из 4 собесов более-менее неплохой оказался один, хотя вопросы плюс-минус везде были похожие.
Удачи тем, кто пытается вкатиться, если есть вопросы, спрашивайте.
852 2040495
Аноны, чет не могу найти = как в пхп читать напрямую из потока http запроса?
В ноде я понимаю как это делать, а с пхп чет затупил. Хочу разобраться как из потока в файл например, или в другой поток писать - что бы не загружать все тело post запроса сразу в память, а по кускам.
853 2040562
>>2040286
За почти пять лет на убунте только однажды после обновления отвалился звук.
854 2040565
Можно ли гонять запросы между скриптами?
855 2040573
>>2040495
Ни разу с этой херней не сталкивался, но возможно тебе нужно смотреть в сторону php://input
856 2040574
>>2040565
Можно, гоняй.
857 2040601
>>2040473
Тухлый вброс.
858 2040609
>>2040601
Так он же не написал, что за работа. Может его взяли на пару сотен вордпрессобитриксы колупать
859 2040611
>>2040574
С какой скоростью?
860 2040625
>>2040601
С чего ? Если аноны годами не могут вкатиться - это я уже хз, как надо так стараться. У меня заняло это столько времени, с учетом того, что я прогал 6-7/7 по 8 часов стабильно. Так что этот срок я еще считаю долгим.

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

>45-55 на руки (позиция джуна)


>мухосрань



Хотя зачем вообще боту что-то отвечать?
863 2040772
>>2040625
А по каким курсам/материалам вкатывался? Что на собесе спрашивали?
864 2040792
Аноны, кто-нибудь может по этому учебнику что-нибудь сказать?

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

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

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

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

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

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

Из вопросов на собесах ничего необычного. В основном банальные вопросы про ООП. Что такое классы, объекты, принципы ООП, как они работают и т.д. Чем интерфейс от абстрактного класса отличается, чем абстрактный от обычного - это можно тоже отнести к банальным вопросам про ООП. Про http протокол вопросы были, а-ля как он работает, какие методы есть, их отличие, коды ответов и подобная лажа. Вроде были еще вопросы про сами нюансы PHP, как происходит преобразование типов, как этого избежать, можно ли добиться строгой типизации и тому подобное.
Про SOLID спрашивали, в основном просили объяснить как каждый принцип работает и для чего нужен вообще. Про SOLID понравились вопросы только на одном собесе, там прям знатно душили, но как сказал техлид, джунов обычно так не душат с солидом, но я сам попросил, чтобы знания проверить и узнать что-то новое.
По SQL вопросы тоже дефолтные, что такое индексы, составные индексы, внешние ключи, отличие джойнов, про нормализацию еще были вопросы вроде. Но по SQL не так много вопросов, в основном была задачка и нужно было написать запрос.
На одном собесе парочка вопросов про линь было и несколько про гит.
Ну и самые дефолтные вопросы на каждом собесе: чем занимался, что делал, что за прокеты и т.д.
Как-то так.
866 2040849
>>2040772
HTML, CSS изучал по http://htmlbook.ru/ и https://webref.ru/. Иногда некоторые моменты вычитывал еще в https://developer.mozilla.org/
После сверстал пару макетов и забил на html & css.

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

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

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

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

Из вопросов на собесах ничего необычного. В основном банальные вопросы про ООП. Что такое классы, объекты, принципы ООП, как они работают и т.д. Чем интерфейс от абстрактного класса отличается, чем абстрактный от обычного - это можно тоже отнести к банальным вопросам про ООП. Про http протокол вопросы были, а-ля как он работает, какие методы есть, их отличие, коды ответов и подобная лажа. Вроде были еще вопросы про сами нюансы PHP, как происходит преобразование типов, как этого избежать, можно ли добиться строгой типизации и тому подобное.
Про SOLID спрашивали, в основном просили объяснить как каждый принцип работает и для чего нужен вообще. Про SOLID понравились вопросы только на одном собесе, там прям знатно душили, но как сказал техлид, джунов обычно так не душат с солидом, но я сам попросил, чтобы знания проверить и узнать что-то новое.
По SQL вопросы тоже дефолтные, что такое индексы, составные индексы, внешние ключи, отличие джойнов, про нормализацию еще были вопросы вроде. Но по SQL не так много вопросов, в основном была задачка и нужно было написать запрос.
На одном собесе парочка вопросов про линь было и несколько про гит.
Ну и самые дефолтные вопросы на каждом собесе: чем занимался, что делал, что за прокеты и т.д.
Как-то так.
867 2040860
>>2040849
Забыл добавить, про паттерны были вопросы на двух собесах вроде. На одном простые вопросы, какие виды есть, какие знаешь. На другом, где душили про солид, там уже намного глубже в эту тему углубились, но опять же со слов техлида - джунов у них с этим не дрочат, но я сам попросил х2.
868 2041011
>>2040849
Скрин тасков из джиры или пиздабол.
869 2041108
>>2041011
Может тебе еще скрины диалогов из слака, скрины проекта и до кучи фотку договора скинуть ? Или ты думаешь, что мне заняться больше нечем, как доказывать что-то какому-то анону ?
Живи просто дальше в свое мирке, в котором тебя все хотят наебать.
870 2041113
>>2041108
Ты забыл где ты находишься? Пруфай хоть чем-нибудь или пиздабол официально.
871 2041168
>>2041113
Ты первый пруфай
872 2041170
>>2040473

>Вкат занял ~5.5 месяцев практически с нуля


Вполне адекватный срок. Не понимаю, с чего здешние неосиляторы бугуртят. Сидели бы учили фреймворк и код писали, глядишь тоже вкатились бы
873 2041201
>>2041168
Все ясно.
874 2041202
>>2039411

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

>>2039427

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

>>2039489

Там есть образцы php.ini. Ты можешь создать его, взяв за основу файл php.ini-development и поменяв его в соответствие со своими предпочтениями.
875 2041205
>>2041170
Тоже в недоумении, с чего срок вката такой бугурт вызвал. Ибо я до этого считал, что это даже долго, с учетом того, что я по 8-10 часов практически каждый день сидел.
Мб здешние вкатуны просто бояться по собесам ходить, может у них знаний уже вполне достаточно для вката, но они об этом не знают. По собесам можно и нужно ходить чтобы хотя бы проверить свои знания и получить экспириенс. Не пройдешь собес и что ? Зато будешь знать, что тебе подтянуть, имхо. По крайней мере я проходя собесы не ставил на первое место цель вкатиться.
876 2041227
>>2040286

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

>>2040118

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

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

>>2040250

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

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


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

>>2041108
Официально определен в пиздаболы
878 2041239
>>2040495

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

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

>>2040860

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

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

Если уж обсуждать паттерны, давайте обсуждать реально применяемые паттерны и зачем реально они нужны. Как написать синглтон любой дурак может прочесть.
879 2041241
>>2041239
Из какого года капчуешь? Синглтон давно считается антипаттерном наряду с сервис локатором и реестром.
880 2041331
>>2041205

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


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

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


Давайте поговорим про Актив Рекорд
882 2041467
>>2041334
Ловите ларавельщика
nd86798.jpg317 Кб, 1200x801
883 2041640
>>2040849
Благодарю!
884 2041651
алгоритмы не спрашивают на собесах?
885 2041664
>>2041205
Не представляю каким надо быть терминатором чтобы по 8-10 часов сидеть пыхтеть, я уже через полчаса хочу расслабится и посомтреть аниме\чекнуть социалки и т.д.
886 2041667
>>2040625
Либо толсто/зелено, либо зафартило.
Впрочем не важно.
887 2041669
>>2041205
Хуй знает какогь уровня ты зелень, и семен , но то что нужно подскакивать и по собесам ходить - факт железный.
888 2041686
>>2041239
В PHP есть php://input, но фактически он будет читать данные из памяти (PHP сначала загружает весь запрос в память, а только после запускает твой скрипт).

>>В PHP есть php://input, но фактически он будет читать данные из памяти


>>PHP сначала загружает весь запрос в память, а только после запускает твой скрипт


Точно?
Я не встроенный использую - а апач, но логика такая же? То есть по дефолту я как в ноде не могу читать объект потока по кускам, сразу pipe-ая его в другой какой нибудь поток?
Про php://input и обертки читал. Но вот с файлами к примеру, или вводом/выводом в системные потоки по идее все обстоит обычно, можно открыть два дискриптора потока, и по кускам из файла например пайпить в консольный вывод, как я понимаю. И в response так же есть возможность по кусочкам заливать данные, опять же в psr7 , есть какие то stream интерфейсы.

>>А я против вопросов про паттерны.


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

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

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

>>2041667
На счет подфортило или нет - тут я не скажу, ибо было только 4 собеса, с каждого в итоге дали оффер. Как буду перекатываться в другую компанию, там будет видно.
890 2041737
>>2041651
Меня спрашивали
891 2041781
>>2041686

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


И что? Если Зандстра использует эти антипаттерны, то они внезапно перестали быть подобием глобальных переменных?
892 2041783
Прошу совета у бывалых, какой рейт на апворке ставить?
893 2041882
>>2041664

>Не представляю каким надо быть терминатором чтобы по 8-10 часов сидеть пыхтеть


Я пыхтел по 4-6 часов, т.к. на большее не хватало. Соответственно вкатывался подольше.
Ща на работе когда тасок срочных нет, можно знатно поебланить
894 2041886
>>2041695

>4 собеса, с каждого в итоге дали оффер


Очевидный успех. Трудно только первый оффер получить, потом полегче, выбора больше, отношение не как к залетышу
1621932142151.png145 Кб, 300x199
895 2042237
>>2041334

>Актив Рекорд

896 2042348
>>2041467
>>2042237
Что еще в пыхе используют помимо активрекорда и датамеппера?
897 2042725
Перепощу свой вопрос из БД треда. Тут поживее. Мож кто знает.

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

А вот в MySql до восьмой версии только формировать запрос сразу со значениями. А потом INSERT ... ON DUPLICATE KEY UPDATE
901 2043054
>>2042725

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

Также, ты можешь вычислить сдвиг. Для начала первой записи он будет 0 минут (было 08:00 - стало 08:00), для второй - минус 5 минут (было 08:20 - стало 08:15), для третьей - минус 10 минут (08:40 -> 08:30) и так далее. То есть 5 минут умножить на номер записи. Номер записи можно вычислить как время начала минус 08:00 поделить на 20 минут.
902 2043057
>>2042974

Тут можно математически по времени начала вычислить номер приема, и посчитать его новое значение.
903 2043645
>>2040849
Читаю про собесы и прям грустно становится. Надо тоже начать откликаться, но понимаю, что завалюсь на первом же вопросе. Хоть и пишу всякие проектики, но не знаю вообще нихуя.
904 2043654
>>2043645
Прям про солид не расскажешь и физбаз не решишь?
905 2043684
>>2043654
Ну с этим еще справлюсь
906 2043796
>>2041695
Анон, рад за тебя. Чему посоветуешь уделить внимание вкатышу, чтобы не обосраться на собесах?
907 2043804
Похаписты, не заебывает ли вас эта работа? Можно ли рассматривать пых как стартовый вариант с последующим переходом на другие смежные технологии, стеки? Вообщем каков карьерный путь пхп-разраба?
908 2043809
>>2043804
Меня не заебывает. Пишу апи для мобильных казуалок и приложений, все достаточно просто и без всякой там верстки. Вот подумываю го выучить и съебывать.
909 2043834
>>2043809
Хорошо если не заебывает. Тоже буду в пых вкатываться наверное, только в него и получается.
910 2043840
>>2043684
Ну так и че боишься? На 90% собесах это и спрашивают + про опыт работы, интересные нет проекты и задачи
911 2043851
>>2043804

>не заебывает ли вас эта работа?


Заебывает легаси ковырять. Но оно везде, это легаси

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


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

>Вообщем каков карьерный путь пхп-разраба?


Как и у любого другого бекендера. Чисто технический джун-мидл-синьор, а дальше можешь в руководство податся: лид, техдир, сто, и т.д.
912 2043857
>>2043851
Не совсем корректно вопрос сформулировал я. Я рассматривал фронтенд, но без опыта сложно пробиться. А вот в пых проще. Думаю с опытом пыха, поболее шансов будет. Или я не прав?
913 2043860
>>2043851

>Как и у любого другого бекендера. Чисто технический джун-мидл-синьор, а дальше можешь в руководство податся: лид, техдир, сто, и т.д.



А по деньгам у пыхача как в сравнении с другими бэкендерами? С питонистами и джавистами к примеру.
914 2043862
>>2043857

>Я рассматривал фронтенд, но без опыта сложно пробиться


Мне кажется наоборот, спрос выше, а большинство соискателей такие же вкатыши после курсов.
>>2043860
Меньше.
915 2043867
>>2043862
Спасибо анон. И всего наилучшего тебе.
916 2043878
>>2043862

>Меньше.


Процентов на 10-20 меньше же, судя по всяким статам, правильно?
917 2043886
>>2043857
Щас на пыхе много легаси. Кабанитые разрабы ливают на модные стеки. А легаси кому-то надо поддерживать, так что активно набирают джуномидлов, пох даже если наврешь об опыте. Всё равно придется разбираться в древнем говне, пока не начнешь таски закрывать
918 2043899
>>2043886
всё так плохо?
919 2043903
>>2043899
Так наоборот. Из пхп люди укатываются, но работы меньше не становится, т.к. легаси кода полно.
Если легаси не пугает, то велкам
920 2043910
>>2043809
Вкатился в ГОвно в дополнение к похапе весной 19-го года. Не выдержал даже двух месяцев, выкатился и больше этот гной даже близко видеть не могу и никому не советую.
921 2043916
>>2043910
а что тогда посоветуешь?
922 2043938
>>2043916
Даже не знаю. Некоторым и го нормально заходит. Лично я продолжаю спокойно пилить всякие црмки на симфе и не думаю никуда выкатываться. Кроме пыхи и го пробовал писать бэкенды на ноде и питоне - не понравилось хотя и бешенства не испытывал, как в случае с го. На досуге пилю пет проект на спринге, но пока без цели переката
В плане синтаксиса очень нравится шарп, но мне кажется, что с количеством вакансий на нем все печально
923 2043965
>>2043910
Ты наверное попал к бывшим пехапешникам, которые большие приложения с кучей бизнес логики на го пытались писать. го не для этого создан, суки
Тоже попал в подобное, поработал немного, разосрался с лидом и ушел обратно на пых
924 2043971
>>2043938
Тоже шарп нравится, но кушать хочется. Поэтому пока, смотрю то что доступно.
925 2043976
>>2043938
Часто работу меняешь? Или в одном месте работаешь, и просишь повышения?
926 2044188
>>2043965
Про развесистую бизнес-логику на го - в точку! Это ад. На нем хорошо писать что-нибудь тупое, но резкое и быстрое как понос.

>>2043976
За четыре с половиной года работал в трех разных местах, на последнем уже около двух лет
927 2044190
Для онлайн игры на пхп нужен брокер сообщений?
928 2044208
>>2044190
Какого рода игра?
929 2044210
>>2044208
Пошаговая.Мне сказали, что вебсокеты необязательны.
Или на пхп такого нет?
930 2044218
>>2044210
Если пошаговая, то можно хоть на голом пхп делать + лонгполлинг для обновлений на клиенте
931 2044219
>>2044210
Ну и брокер сообщений там ни к чему
932 2044229
>>2044218
А ДДОС сам себе не получиться?
933 2044245
>>2044229
Нормально лонг поллинг сделай и не будет ддоса
934 2044268
>>2039944
Почему это? Все что можно делать с ним на линухе можно сделать и на винде
935 2044548
>>1998470 (OP)
Проверьте кто-нибудь задачу про экранирование, заранее спасибо.
936 2044569
>>2044548
Забыл на третьем пике параметры ENT_QUOTES указать.*

самофикс
Screenshot8.png35 Кб, 603x307
937 2044602
>>2044548
И еще чтобы блок с текстом выводился только при нажатии на ссылку*

самофикс
938 2045026
>>2039290
лови шизоида
16044578053960.jpg90 Кб, 900x900
939 2045063
Был сегодня на очередном собеседование в оптовой торговой конторе в промзоне, 7 км за МКАД-ом (хотя офис приличный). Такие активно автоматизируются сейчас (с довольно нормальными окладами).

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

Вряд ли договоримся, хотя кто знает. На следующем собесе буду посерьёзнее, раз народ этого ждёт. И надо больше рассказывать самому, т.к. они походу не знают, что спрашивать.
photo2020-05-2712-39-14.jpg58 Кб, 492x611
940 2045101
>>2044210
Всё-таки, зависит от динамики ходов.
Если это что-то типа "героев", где каждый ходит по 5 минут -- то задержка неважна.

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

Исключение -- если это пет-проект типа клуба любителей настолок 40+, тогда наверн всем пофигу.
Сотня нефти.png137 Кб, 400x173
941 2045243
>>2040849
Годный пост, форумчанин, спасибо за наводку на учебник, как раз такой искал.
942 2045249
>>2040473
Удаленка или офис?
943 2045263
Как думаете, толковые тут видосы для новичков?

https://www.youtube.com/channel/UCjQ-mFzOpsWRg2zxUJHDkrQ/featured
944 2045379
>>2045263
Этот еблан даже ссылку на гитхаб не дал.
Код с виду хуевый. Подробнее не ознакомиться.
Зачем-то через одну строку пропускает - нет, чтобы в иде настроить междустрочный интервал.
А судя по длинне видосов, он там тугодумит.
Ну и нужно тебе такое? Лучше Елисеева навернуть, он там хоть много кода пишет и по ходу поясняет все решения
945 2045394
Блять кому не похуй как автолоадер работает, нахуя такую еботу спрашивать на собесах блять.
946 2045432
>>2045394
А что еще тебя спрашивать? Про солид которого ни в одном проекте нет? Или кишочки фреймворка?
947 2045442
>>2045432
бло я б прост спросил чем человек занимался на проекте конкретно, разрабатывал ли архитектуру, почему такую выбрал и т.д.
Это гонево по справочнику пыха и да, кишков фреймворков ЧТО ТАКОЕ СЕРВИС-КОНТЕЙНЕР? вымораживает, я уже хотел просто всю эту хуйню распечатать и сидеть тупо вычитывать, но слава богу уже нашёл где вкалывать за гроши.
948 2045445
>>2045101
лол,угадал-до 1 минуты ход
0A0TPBCbc2o.jpg101 Кб, 720x1080
949 2045625
>>1998470 (OP)
Аноны, мне нужно научиться делать простейшие веб-страницы с формами для обновления и редактирования таблиц в БД (либо мускуль, либо какой-нибудь из таймсириес движков), возможно с авторизацией. Для себя, для внутреннего пользования в небольшой конторе.
Посоветуйте актуально руководство для наиболее быстрого вката в это дело. Опыта с пхп не было, но думаю, что это самый подходящий инструмент для написания такой логики.
950 2045640
>>2045625
Google-
How to ...
951 2045643
>>2045640
Это не ответ на мой вопрос. Надеюсь, ты не программист
952 2045695
>>2045625
Таких организмов даже нахуй лень посылать.
953 2045703
>>2045643
Ну ищешь статейки по пхп,выполняешь задачки а потом гуглишь how to
954 2045707
какие каналы посоветуете новичку для просмотра на ютабе?

> желательно не времен палеозоя

изображение.png118 Кб, 696x470
955 2045782
>>2045695
Ладно, давай тогда я. Пошел нахуй

>>2045703
Задачки в 99.9% случаев это просто задачки на знание управляющих конструкций. Их я себе представляю.
Мне нужно сразу чтоб практика была
Что-то типа пика, но я не знаю, норм это книженция или нет
956 2045791
>>2045782
Короче,ты должен знать базу-это 100%
Дальше просто гуглишь каждую задачу,можешь здесь уточнять.
А так начни с клепания формочки и отправки запроса к БД,получения ответа.Ну узучи SQL
Потом сделать форму и систему регистрации(с валидацией) и тд
957 2045893
какие дистры линукс юзают, в продакшене?
958 2046091
>>2045782
Возьми какой-нибудь вордпресс и клепай свои формочки. Хотя я сильно сомневаюсь, что даже это по силам дегенерату, не умеющему в гугл
959 2046127
>>2045893
RHEL/CentOS, Debian, SUSE. Причем тут /pr/ - ума не приложу.
960 2046136
>>2046091

>Возьми какой-нибудь вордпресс


1. Это полнейший оверинжениринг для задачи "создать форму для обновления записи в бд". Надеюсь, ты не программист.
2. Требует изучения классов и методов самого WP, что, разумеется, совершенно избыточно и не нужно для моих задач.
Спойлер не открывал, там ничего умного все равно не будет. И пожалуй еще раз, если с первого не дошло: пошел нахуй.

>>2045791

>Короче,ты должен знать базу-это 100%


Это есть

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


Вангую, что будет проблема как раз из-за отсутствия общего повествования. Хотя надрать кусков из разных мест это, конечно, классика
961 2046148
>>2046136
Еще раз,сделай формочку для записи в БД.
Mysql,PDO тебя ждут
https://www.php.net/manual/ru/language.variables.external.php
простейший обработчик
962 2046187
Прошел я учебник из ОП поста, поповторял за ютубом пару проектов и возомнив нифига-себе экспертом, начал слать резюме на всякие стажировки.

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

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

Видимо идея слать резюме была не самой лучшей. Облажаюсь сегодня просто жестко(
963 2046193
>>2046187

>Облажаюсь сегодня просто жестко(


Ну и что? Бывает.
Впереди еще будет 50 собесов.
964 2046281
965 2046284
>>2046187
Лучше напиши когда пройдешь о чем спрашивали в деталях.
966 2046287
>>2046187

>В итогу у меня один собес сегодня, 2 на следующей неделе и одно тестовое.


Для начала неплохо. Главное вопросы с собесов и задачи записывай, потом пройдешь, если офер не дадут

>Начал готовиться к собесу, открыл известный многим список "250 вопросов для пхп собеса" и теперь сижу в полном ужасе. Не смог толком ни на что ответить, от паники капец как трясет.


Да и похуй. Никогда не знаешь, что тебя спросят на собесе. Могут дать то, чего нет в этих 250 вопросах - и что ты будешь делать?

>Видимо идея слать резюме была не самой лучшей. Облажаюсь сегодня просто жестко(


Ты правильно сделал. Нужно ходить на собесы, проваливаться, доучивать и снова на собесы
967 2046292
>>2046136

>Это полнейший оверинжениринг для задачи "создать форму для обновления записи в бд".



Поставь какой-то phpmyadmin, и пусть редактируют базу. Можешь еще разных юзеров создать, дать права на чтение и запись определенных таблиц. Я так понимаю что вам для какого-то внутреннего учёта какого-то говна. В будущем сможешь к бд прилепить какой-то свой интерфейс если захочешь
968 2046299
>>2046284
Смысл спрашивать такое? На каждом собесе по разному.

Самое частое: Солид, паттерны, архитектура, физбаз, сортировка/поиск/другая изи алго задачка, скл запрос, рассказ про опыт
969 2046300
>>2046136
Wordpress примитивнейшая хуйня, сделанная так, чтобы даже такой умственно отсталый как ты, смог начать клепать говно через пару десятков минут после вката. Ты все равно лучше и проще не сделаешь.

Я тебя нахуй не посылал, но раз ты так хочешь, то пошел нахуй.
970 2046305
>>2046299
Ну и душнила.
971 2046317
>>2046305
Что душнила? Я прошел собесов 50 валился на низких софтах
Каждый раз по-разному проходит. Где-то могут по душам поговорить, где-то дрючить по теории. Никогда не угадаешь к кому попадешь на собес
изображение.png154 Кб, 286x355
972 2046416
>>2046300

>Wordpress примитивнейшая хуйня, сделанная так, чтобы даже такой умственно отсталый как ты, смог начать клепать говно через пару десятков минут после вката. Ты все равно лучше и проще не сделаешь.


Слишком толсто. У меня несколько сайтов на WP и я прекрасно знаю, как он работает. Чтобы что-то писать с интеграцией в сам WP, надо понимать именно обвязку WP; ну это очевидно любому, кроме тебя с твоим-то двухзначным IQ.

>Я тебя нахуй не посылал


Держи в курсе. А лично я и в третий раз не поленюсь

>>2046292
Это все понятно, но хочется красиво и без лишнего говна, буквально в несколько полей. Так-то и навикатом каким-нибудь подключаться можно.
Ну в общем я понял, почитаю какую-нибудь хуйню с пика или с >>2045782
Судя по содержанию, там раскрыто то, что мне нужно - ААА и связка с базой
973 2046422
>>2046187

>открыл известный многим список "250 вопросов для пхп собеса"


Дай ссылку
974 2046429
>>2046422

>"250 вопросов для пхп собеса"


https://techrocks.ru/2021/04/18/250-php-job-interview-questions/
975 2046466
>>2046429

>Назовите различия между nginx и Apache


Интересно, ответ "nginx я пользовался, а апачи нет" сойдет?
976 2046497
>>2046416
Это достаточно старая книга еще времен php5. Потом придется подтягивать фишечки php7-8
sage 977 2046516
>>2046127

>Причем тут /pr/ - ума не приложу.


Пыхомакака должна быть и девопсом, и фронтом, и бэком, и дизайнером, и нодистом, и гофером, и охуенным кабанчиком. И это всё за зарплату, меньшую в два раза чем у любого из перечисленных.
978 2046645
>>2045625
Про вордпресс лучше не думай, это легаси-движок для блогов/новостных изданий.

CRUD-ы очень быстро делаются на Symfony, только вот потом их модификация требует навыков.

Поэтому, проще сначала разобраться с чистым PHP:
https://www.php.net/manual/ru/reserved.variables.php
https://www.php.net/manual/ru/pdo.query.php

Выйду на пенсию -- запилю учебник.
979 2046751
>>2046497
Ну да, я просто для примера привел

>>2046645
Естессно совет про вп был мимо.
А сразу в симфони можно вкатиться или там нужно глубокое понимание ООП™?
Если что, писать что-то еще на пэхэпэ не планирую
980 2046774
>>2046751

>А сразу в симфони можно вкатиться или там нужно глубокое понимание ООП™?


Можно.
Насобираешь тонну подводных. Если выживешь - человеком станешь
981 2046776
аноны, хелп, пожалуйста.
есть арай, раньше был через обычную базу с SELECT итд, где можно было прописать все нужные критерии до селекта.
но сейчас все идет кучей и джейсоном.

суть. есть арай в котором есть id_name, email, region.
и вот в email есть не уникальные записи, а мне надо вытянуть данные чтобы не было повторов. как сделать?

я пытался пропустить через 2 foreach и in_array, неуникальных становиться меньше, но все равно не 1.
есть какой-то метод в пхп для этого? без js.

выглядит как-то так:
Array (
[1] => Array ( [id] =>23345 [email] => tef~8st1ANUStes^mRtPUNCTUMc09Vom [region] => 1
[2] => Array ( [id] =>664 [email] => te7"bst2ANUStCu0estPUNCTUMcoKa"m [region] => 1
[3] => Array ( [id] =>74 [email] => tNl#est3ANUStp8bestPUNCTUMco#Ezm [region] => 1
[4] => Array ( [id] =>32 [email] => testT@u1ANUStef~istPUNCTUMcj#hom [region] => 1
[5] => Array ( [id] =>8888 [email] => testNn14ANUSteO_:stPUNCTUMc9xZom [region] => 1
)
982 2046800
>>2046776
Всё это делается православным foreach-ем.
Вопрос в том, что ты понимаешь под уникальностью. Какое поле должно быть уникально.
Как вариант, можешь проиндексировать список по имейл. При добавлении в результирующий список проверять, занят ли такой имейл - если занят, то не добавлять строку.
983 2046804
>>2046516
А какие ещё варианты вкатышу?
984 2046811
>>2046317
Собес много времени занимает? Целый день на него теряешь? В том смысле интересуюсь, отпрашиваться ли со своей работы на собес..
985 2046824
>>2046811
Обычно от часа до 3. Обычно в рабочее время.
986 2046827
>>2046800
что-то не так с моим православным форечем,
на тестовых, где мало даных, все ок, но как подлючаю сервис, то не работает.
но количество уменьшаеться, в некоторых мейла с 200+ до 30. хотя все 200 одинаковы.
987 2046832
>>2046811
С херкой - минут 15.
Технический 1-1.5 часа
Если ты на удаленке, то даже отпрашиваться не нужно.
988 2046833
>>2046827
Нужно по конкретным кейсам дебажить, почему он дубли оставляет.
Без кода и тестовых данных мы не разберемся
989 2046874
>>2046776

>арай


это что за новояз?

"вытянуть" из БД -- используй либо SELECT DISTINCT,
либо GROUP BY `уникальноеПоле`

вы чо ему советуете
990 2047221
>>2045249
Я офис выбрал. Хоть и удаленка казалась куда ближе в плане своих плюшек и т.д. Со слов других людей - джунам на удаленке намного сложнее, нежели в офисе. Тут скорее уже зависит от того, какие конкретно у тебя приоритеты, анон. В офисе на начальном этапе намного больше плюшек в плане развития. Тут и софт скиллы прокачиваешь и намного проще заебывать людей разными вопросами, узнавать что-то новое от них и прочее.

Думаю, что начиная с миддла уже можно перекатываться спокойно на удаленку, если она ближе. Тут уже дело вкуса, имхо.
991 2047225
Аноны, я вот задумался - все хотя вкатиться, вкатиться.
Но ведь в этом никакого полета мысли, унылая работать на дядю. Что гречневый на заводе, что мы - суть одинакова. У нас ток кормушка красивее.
Я вдруг понял это как то кристально.
У меня есть навыки, как я могу их применить что бы хоть херня - но лично мне падала? Это не банальное "где заработать денех в интернете", это более емкое - я владею инструментом и навыками, благодаря котором я могу создавать удивительные вещи. Но сдаю это в аренду другим.
Завел себе блокнот, в который мысли какие то пишу.
Пока не написал нихуя толкового, но буду педалировать эту тему жестко.
Кто то в моем ракурсе рассуждает?
992 2047373
>>2047225

>Пока не написал нихуя толкового, но буду педалировать эту тему жестко.


На этом всё обычно и заканчивается.
А создают что-то ушлые манагеры руками других людей
993 2047657
>>2047225
Я со временем буду перекатываться в android/iOS разработку, у меня гораздо больше идей разных приложений, чем бизнеса и сайтов для него.
994 2047688
>>2047225
Ну понятное дело что прогер это такая же работа как сантехник или пожарный с медсестрой, это сейчас из-за хайпа что там "сидишь целый день за кампухтером и получаешь триста тыщ" из них начали делать какую-то отдельную социальную прослойку и элиту.
995 2047689
>>2046824
Блять, что можно спрашивать три часа? Даже час это пиздец как много когда есть гитхабы и можно отправить домой с тестовым.
kitera-dent-gwJ2Wa-zjfA-unsplash-1280x2000-1.jpg116 Кб, 816x824
996 2047693
image.png199 Кб, 679x655
997 2047697
>>1998470 (OP)
Встретил интересную задачу в тесте, не могу разобраться, как можно вызвать не именнованный метод класса, если бы просили создать ф-ию, то понятно, но в задании просят сделать класс.

Вот такой код приводит к ошибке "Fatal error: Uncaught Error: Function name must be a string in C:\work\SimpleClass.php:8":

class SimpleClass {
function stdout($string) {
print($string);
}
}
$obj = new SimpleClass;
$obj()->stdout('Hello');
998 2047703
>>2047689

>Блять, что можно спрашивать три часа?


На собесы походи, узнаешь. Зависит от количества спецов, которые тебя собеседуют. Если собес коллективный - то быстрее все проходит, разумеется. + на хрюшу некоторое время тратится
999 2047721
>>2047373

>>На этом всё обычно и заканчивается.


У меня не закончится, я дисциплинированный дохуя. Ща думаю в своем городе как то начать шляться по всяким бизнес тусовкам. Буду отслеживать.
Потому что сидя дома на жопе - явно никаких мыслей не придет в голову никаких. Нужен какой то контекст.
1000 2047725
>>2047688

>>делать какую-то отдельную социальную прослойку и элиту.


естественно скилл-бокс как будет продавать свои курсы?

Я у меня есть и комерссы знакомые, и даже из элиты. Между кабанчиком и прогером по личным качествам огромный перевес в сторону кабанчика.
1001 2047726
>>2047657
Дарт изучай, сам хочу.
image.png54 Кб, 696x470
1002 2047746
Бьют ли ногами за подобное использование рефлексии? Пока енамы не подвезли сделал такую херню.
1003 2047749
>>2047746
Тут есть ограничение в том, что в константах могут быть значения разных групп. У тебя тут только ивенты. Соотв если добавить другую группу констант, то их придется фильтровать.
А так прикольный способ.
1004 2047752
>>2047697
Надеюсь, у них нет такого в продакшене.
Вообще похоже на джаваскрипт. В пхп так не принято
1005 2047753
>>2047688

>элита


>не может по велению пятки купить тачку или хату

1006 2047762
>>2047697
Гугли про __invoke() и fluent interface
>>2047749
Добавление других групп констант не планируется, другие события будут жить в отдельных классах
1007 2047852
Если я хочу манипулировать юзерами динамично через жс в админке,то после извлечения данных надо все в JSON перегнать?
1008 2047895
>>2047852
Use the serializer, Luke!
1009 2048015
>>2047762
спасибо, не знал про __invoke
image.png411 Кб, 504x495
1010 2048025
1011 2048079
Нужно ли полностью читать и практиковаться по этому учебнику или стоит уже переходить к основам HTML/CSS/ООП/PDO и делать приложение про список студентов?

https://phpclub.ru/mysql/doc/tutorial.html
Screenshot9.png9 Кб, 381x185
1012 2048084
>>2048079
Пока вот до этого места осилил.
1013 2048146
>>2048079
>>2048084
Да пофигу, можешь параллельно.
Всё зависит от твоих мозгов и таланта.
1014 2048222
>>2048146
Учитывая что тут кто-то за 5 месяцев на ларавел уже на работу вкатился, а я за эти 5 месяцев только до этого дошел, слово мозг можно зачеркивать.
image.png857 Кб, 800x600
1015 2048226
>>2048025
Жиза
1016 2048269
>>2048222
мб проблема с мотивацией? зачем оно тебе? что ты любишь делать вне работы?
1017 2048277
>>2048269
у меня нет работы
1018 2048297
>>2048277
тогда просто что любишь делать?
1019 2048315
>>2048297
прокрастинировать за компутером
1020 2048328
>>2048297
короче за ~5 месяцев погромирования из которых я минимум месяц занимался ничем я решил:
учебник опа без бонусных задач (2 бонусные решил и все);
прочитал про хттп, шаблонизацию на пыхе, решил все задачи, которые нужны для того чтобы можно было решать задачу про список студентов (непонятно как решать по замыслу автора если там требуется ООП), перешёл на подробное изучение sql (около недели потратил на выгеперечисленное);
То есть большую часть времени я просрал на решение неинтересных задач, а ещё нужно начинать вкатываться в ООП, поднатаскать CSS, кучу других трудновыговариваемых вещей и писать пет проекты.

Короче я еблан тупой раз тут некоторые личности за полгода уже работу нашли (это при условии что я путягу закончил по этой специальности).
1021 2048334
>>2048328
а вообще наверное нужно перестать вестись на сказочников и просто делать что в моих силах
111.jpg67 Кб, 738x438
1022 2048357
Обязательно такой вырвиглазный треш писать? Можно по другому как то?
1023 2048360
>>2048357
Я про эхо и кавычки на каждую строчку
1024 2048363
>>2048357

>Обязательно такой вырвиглазный треш писать?



Необязательно.

> Можно по другому как то?



Конечно.

>>2048360

Читай про шаблоны и шаблонизаторы, MVC и прочие паттерны.

В книге пример из рубежа 90х/00х.
1025 2048403
Как строить сайт,если у него много блоков и все превратилось в лапшу?
1026 2048415
>>2048403
Я не знаю как тебе помочь, поэтому поделюсь способом приготовления доширака, может быть кому-то понадобится:
1. Распаковать "Доширак", высыпать маленькие пакетики с овощами и суповой основой в контейнер ;
2. Скипятить чайник, затем налить кипяток в контейнер до отметки;
3. Закрыть крышкой и подождать 5 минут.

Приятного аппетита!
1027 2048425
>>2048415
Перефразирую-я утонул в инлюдах и нейминге
1028 2048431
>>2048425
Жди экспертов местных, я только щитпостить умею.
1029 2048432
>>2048222
С таким прогрессом ты вкатишься, когда пхп будет чем-то вроде кобола
1030 2048434
>>2048328

>То есть большую часть времени я просрал на решение неинтересных задач


Готов к реальной работе. Километры багов и однообразных формочек ждут тебя
1031 2048439
>>2048357
Нет. Голый php может выступать в роли шаблонизатора.
Т.е. ты в одном файле может мешать php, html, css, js но так делать в продакшене не надо, такое только для учебных целей
1032 2048440
>>2048432
Учел ваше охуенно важное мнение.
1033 2048441
>>2048403
Изучать шаблонизаторы и разбивать на компоненты
2a0cef017d4751eb993a5812154315dd.jpg36 Кб, 720x720
1034 2048448
И вообще, я обязательно вкачусь, потому что я вездесущ нахуй, я выше всех ваших таймингов, нет границ в моем познании!
1035 2048455
>>2048328
А чем ты недоволен-то?
Сделай простейший CRUD для студентов, покрась кнопки -- и уже можешь идти поражать воображение провинциалов ОЙТИ-магией

>>2048425
И что же ты такого понаписал, чтобы УТОНУТЬ в инклюдах на этапе изучения?

Сначала разложи всё по папкам,
потом сделай простой роутинг типа ?page=boo.php ,
потом двигайся в сторону MVC
1036 2048457
>>2048455
Тут только ленивый не упоминает что за 5 месяцев уже мидлами за 300 к/наносек работают, а я все до ООП не дошёл.
1037 2048477
>>2048457
Так вкатуны время тратят на всякую херь, которая в работе им не поможет на первых порах. Отсюда и замечания про 5 месяцев.
Понятно, что это вкатуны, они не понимают, что от них ждут на галере.
Вкатуны всё какие-то внутрянки пхп дрочат, ооп, мвц изобретают.
А надо круды ебашить +- как старшие коллеги по цеху.
1038 2048582
>>2048432

>С таким прогрессом ты вкатишься, когда пхп будет чем-то вроде кобола



Востребованным специалистом будет. Бабок лопатой гребсти будет...

обзмеился с аналогии сука
1039 2048652
>>2048457

> за 5 месяцев мидлами


очевидно же, что это нонсенс

>до ООП не дошёл


так дойди, в чём проблема
1040 2048698
Недавно вкатившиеся, не желаете о выборе пыхи? Если бы выбирали сейчас, то выбрали бы пыху или с опытом сделали другие выводы? Я заебался от того что определиться не могу. Или пых или вронтенд. Ну фронт такая петушня, но и его требуют всем. Спасибо, сильно не хуесосте.
1041 2048731
>>2048457

>за 5 месяцев ... я все до ООП не дошёл.



Хули там доходить-то? Ты овердохуя потратил времени на какую-то хуйню. А если думаешь, что 2-3 часа в день для вката это норм, то это нихуя не норм. И да, веди конспект. Прям как в школе. Только в электронном виде — очень сильно помогает. Не дрочи функции наизусть, для этого справочник есть. Код сниппеты полезная вещь. За 5 месяцев пиздец как реально выучить язык, PSR-* , уверенно плавать в ООП, познавать азы алгоритмов, композер с гитом использовать. Подумай дважды: либо бросай и займись чемто другим, либо заканчивай прокрастинировать.
1042 2048760
>>2048731
Вы очень милый человек!
1043 2048761
>>2048760
Перефразирую - иди на хуй
1044 2048801
>>2048698
иди на фронт. Вакансий меньше, но оплата больше и конторы всегда адекватные.
1045 2048834
>>2047746

>Бьют ли ногами за подобное


Если ты имеешь ввиду энтерпрайз разработку, то бьют в кадык с пыра.

>Пока енамы не подвезли


И "енамы" и рефлексия используются очень ограниченно и в строго отведенных для этого местах. Могу подробнее расписать если интересно.
1046 2048858
>>2048834

>Если ты имеешь ввиду энтерпрайз разработку, то бьют в кадык с пыра.



За що?

>И "енамы" и рефлексия используются очень ограниченно и в строго отведенных для этого местах.



Интересно, как ты используешь енамы в языке без енамов? Кроме псалма или возни с рефлексией ничего в голову не приходит.
1047 2048912
>>2048801
А сам на php работаешь? Мне казалось наоборот, у похапэ более адекватно всё...
1048 2048933
>>2048912
Нет. Часто берут пыхача и он ещё и фронт пишет за копейки. А вот если есть отдельный фронтендер, значит что контора не скупится на персонал/зп и все своим делом заняты.
1049 2048934
>>2048858

>За що?


Есть технический аспект - слишком медленно работает, слишком запутанный код получается. Читать эту хуйню потом очень тяжело.

Есть семантический - слишком много углов срезается, слишком большие возможности там где минимум ответственности. Код пишется не от пизды, а сос мыслом. Например список констант, в твоем случае, это не список возможных событий.

>Интересно, как ты используешь енамы в языке без енамов?


Я и написал в кавычках. В коде приложения вообще никаких "енамов" и не должно быть. Все это используется в обвязке, чтобы создать объекты с нормальными типами.

>Кроме псалма или возни с рефлексией ничего в голову не приходит.


https://3v4l.org/lOC2h
1050 2048937
>>2047746
вот же ты мразь погана. Не проще сделать конфиг? Или уже как нормальные дяди заводи класс под каждое событие
1051 2048995
>>2048698
Хз даже. С одной стороны особо выбора не было тогда в городе: либо 1ass, либо верстка, либо битрикс/вордпресс. Кое-как попал туда, где на фреймворках пишут.
Так бы хотел, конечно, на шарпы закатиться бекенд писать
1052 2049011
>>2048995
А ты в замкадье... В дефолт-сити поинтереснее вакансий. Ну для вкатунов, не особо весело всё.
1053 2049045
>>2048934

>https://3v4l.org/lOC2h


Именно для того, чтобы избавиться от этой хуйни (ручного дублирования констант в методе или массиве, возвращающем их список) я и родил свою хуйню. Я еще и дальше пошел и сделал через __callStatic, чтобы можно было вызывать UserEvents::userCreated() лол.
В итоге удалил все к ебени матери и оставил только список констант.

>Например список констант, в твоем случае, это не список возможных событий.


Почему?

На работе лишь однажды пришлось использовать рефлексию, когда было нужно протестировать приватный метод. На мой вопрос, нахуя его тестировать, сказали что так у них заведено

Касательно скорости работы с рефлексией, не думаю, что падение производительности будет заметным даже на фоне рядового чтения из бд
1054 2049057
Аноны, что за хуйня, у каждого долбаеба в вакансии "Хорошее знание и понимание математики: аналитической геометрии, алгоритмов на графах, численных методов, математического анализа." Причем даже если вакансия не связана с геом. моделирование, анализом и т.д. Если там есть с++ то там 100% будет это
1055 2049062
>>2049057
Не в тот тред
1056 2049064
>>2049057
А хули ты думал? Будешь как миленький ворочать красно-черные деревья на собесе и урчать
1057 2049074
>>2049064
Да я знал все это дерьмо, но извини когда это было! Я матаном уже столько не пользовался
1058 2049099
>>2049074
Я перед собесами в обязательно порядке перелистываю "Грокаем алгоритмы" и "Дискретную математику для программистов" Хаггарти.
1059 2049106
>>2049045

>ручного дублирования констант в методе или массиве, возвращающем их список


Это не дублирование. Ты не дублируешь определение констант, а определяешь новую со списком возможных вариантов.
В твоем же коде с рефлексией множество констант со значениями перечисления это подмножество всех констант класса. А работаешь ты с какого-то хуя именно со всеми константами класса, а не с конкретным подмножеством. Но это все технические детали твоего конкретного решения.

В целом речь о том зачем тебе вообще использовать список всех возможных вариантов. Я вижу только одну причину: у тебя есть строка с названием события 'user.created' и тебе нужно создать объект UserCreatedEvent. А для этого вообще не нужен концепт перечисления. Создание будет происходить в одном единственном месте. В каком-то условном сервисе CreateUserEvent или UserEventFactory и нет никакой нужды создавать для этого какой-то специальный класс перечисления.

>__callStatic


Та же история что и с рефлексией. Все это метапрограммирование снижает предсказуемость и понятность кода. У такого класса просто нет внятного интерфейса, и пока в него не залезешь хуй поймешь что у него можно вызвать, а что нельзя. Ниче, пару раз порасковыриваешь кал из магических методов или поищешь косяк вызванный рефлексией и сразу перейдешь от "нихуя как могу" к "надо попроще".

>Касательно скорости работы с рефлексией, не думаю, что падение производительности будет заметным даже на фоне рядового чтения из бд


В доктрине, например, для скорости используются прокси, а не рефлексия. А тут https://github.com/myclabs/php-enum используется кэш.
1060 2049218
>>2048760
>>2048761

Осуждаю ваши постиронию и грубость. Лучше доведите, где я не прав? 5-6 месяцев интенсива и ты уже уверенный в себе джун.
1061 2049226
>>2049099
Нахуя? Ты на РНР «программируешь», зачем тебе что-то сложнее основных математических операторов? Когда ты последний раз что-то серьёзнее псевдослучайного генератора писал?
1062 2049270
>>2049218
У ОПа в шапке написано не меньше 6-8 месяцев, understand? Какой нахуй джун?
1063 2049310
>>2049270
А кто блядь?! 6-8 месяцев это с учетом освоения фреймворков js/php, выполнением учебных заданий.

Чисто язык, ООП, шаблоны, проектирование, git, composer как раз в 5 месяцев уложишься. Потому что погружение в лаву/симфони может занять ещё ровно столько же. Опять же, джун на то и джун, что в начале своего пути и знает что-то из основ.
1064 2049315
Аноны, для того чтобы научиться писать бэкенд на php, лучше ведь практиковаться в написании CRUDов правильно?
1065 2049493
>>2048448
Не хочешь скооперироваться?
1066 2049496
1067 2049533
>>2049496
А есть где нибудь задания практические, типа дана верстка, к ней надо круды написать? Гугл ничего не дает(( Или самому все придумывать и исполнять?
1068 2049550
>>2049493
Каким образом?
1069 2049581
>>2049226
Например потому, что в тех местах, где я соглашусь работать, вопросы про алгоритмы на собесах встречаются почти всегда. Во вторых, похапе всего лишь один из языков, на которых я пишу. В третьих, тот, кто не умеет посчитать сложность алгоритма, не знаком с наиболее распространенными структурами данных, булевой алгеброй, хотя бы зачатками комбинаторики и теории графов итд., не программист, а макака ебаная.
Если ты не занимался ничем, кроме крудобесия, то не нужно проецировать свой "опыт" на всех остальных.
1070 2049599
>>2049581
Тут собрались формошлепы, а ты за теорию графов и булеву алгебру какая сложность ебана в рот, кого ты удивить то решил?, лол.

Вообще, вот его высер надо перекатить в следующий тред, эталонный дебил. Пишешь свою бд в рамках курса университета? Ну пиши далее, про реляционную алгебру не забудь.
1071 2049612
>>2049581

>Клуб изучающих PHP


>тот, кто не умеет


>не программист, а макака ебаная


Ты попал по адресу. Милости прошу к нашему шалашу.

Ну вот допустим если отбросить подъебки. Какой алгоритм ты реализовывал, чтобы пришлось считать его сложность? Какие структуры данных создавал и с какой целью? Понятно что на пхп это бред. Но помимо пхп, на любом из тебе известных языков.
1072 2049620
>>2049310

>Чисто язык, ООП, шаблоны, проектирование, git, composer как раз в 5 месяцев уложишься


Ну если в твоем супер-режиме когда ты без перерыва 8 часов хуячишь и остаешься сконцентрированным все это время, то может быть.
1073 2049630
Какое практическое применение интерфейсов и абстрактных классов?
1074 2049695
>>2049620
А что собственно сложного? Ты же 8 часов не думаешь над реализацией , читай как придумывание, ты занимаешься пониманием написаного и повторения изученого.
1075 2049699
>>2049630
Упрощают написание своих движков
1076 2049717
>>2049695
Ну если ты копипастил с гугла решение для задач из учебника, а не сам решал, то нет проблем.
1077 2049802
>>2049717
Ты не занимайся подменой понятий. Я писал про другое. Понятное дело, что решение задач из учебника может занять достаточно времени. Тут уж вовсе индивидуально. Помню несколько тредов назад чувак потратил на решение одной задачи около двух недель. Когда она решалась буквально за 2-3 часа.

И опять же повторю, прочитай мои комментарии выше ещё раз. Я писал не про решение задач, а про изучение основ.
1078 2050065
>>2049315

А задача про студентов из ОП-поста чем не CRUD? Только она с кучей комментариев и советов. А еще у нас есть задача про TestHub, там есть админка с кучей страниц, там круда предостаточно.
1079 2050071
>>2049630

Абстрактный класс - это класс, предназначенный для наследования от него других классов. например, ты прикручиваешь оплату через разные платежные системы. И можешь, используя абстрактный класс, реализовать основу, а далее уже используя конкретные классы, реализовать взаимодействие с разными платежными системами. И если завтра понадобится подключить еще одну платежную систему, то (при правильном проектировании) достаточно будет лишь дописать еще один класс, и существующий код сможет с ним работать.

Интерфейсы. Допустим, что у тебя есть разные сущности, пользователи могут их создавать, а модератор может просматривать их список и "публиковать" сущности на сайте. Ты можешь сделать общий интерфейс для модерируемых сущностей, и тогда один и тот же код позволит публиковать их, несмотря на то, что каждая сущность представлена своим классом. И опять же, если завтра понадобится добавить еще одну сущность, то достаточно будет сделать, чтобы она реализовывала интерфейс. Из интерфейса будет видно, какие методы необходимо реализовать.

Уточняй, если что непонятно.
1080 2050106
В армии 5 месяц. Работал джуном. Что можно делать полезного с телефона в свободное время? Книги, видео?
1081 2050114
>>2049802
Кто-то тут еще подменяет понятия, рассматривая "изучение основ" без решения задач... Сука...
1082 2050168
Аноны, подскаите куда копать - почему то не добавляется новый виртуальныхь хост апач в убунте.
Причем ранее я удачно добавил виртуальный хост на порт 5001
<VirtualHost :5001>
...
</VirtualHost>

сейчас пробую добавить новый сайт на порт 8000

<VirtualHost
:8000>
...
</VirtualHost>

команда -

и в браузере получаю тупо "попытка соединения не удалась"
В ufw пишет что порт 8000 открыт.
Если пишу кооманду netstat -tulpn то среде вывод нет моего 8000 порта.
Где косяк можете предположить? Сломался апач? Или я навасянил с настройками iptables.
Я не помню уже, с этой виртуалкой чето делал полгода назад, бляд
И еще - я попробовал отключить по умолчанию установленный вируал хост - сайт перестал работать, но апач2 в браузере начал открывать каталог этого сайта.
1083 2050188
>>2050106
Подучить английский, изучить computer science, по сетям почитать теорию. Если использованием техи у вас нет проблем то вообще збс.
1084 2050226
>>2050106
Если ты задаешь этот вопрос только на пятый месяц, то у меня для тебя плохие новости - ты скорее всего не будешь делать нихуя полезного остаток времени.

>>2050188

>по сетям почитать теорию


Неактуально и бесполезно.
Первое - потому что сетевики уже нахуй не нужны и их зарплаты неуклонно падают, а для других областей глубоко знать сети не нужно, максимум L2+L3.
Второе - потому что теория без практики ничего не даст и он без лаб уже забудешь все, что прочитал через пару дней. А разумеется, в армии нет нормального сетевого оборудования.

>>2050188

>Подучить английский


Тут соглашусь, норм совет. Только если есть стабильный интернет и возможность заниматься с нейтивами или хотя бы индусами с italki. Если никто не будет тебя проверять - эффект будет стремиться к нулю.
1085 2050276
>>2049011
В дс я бы сразу шел на интересующий стек
1086 2050294
>>2050276
В дс, много подводных. Если не устроишься сразу, то хуево будет.
1087 2050311
>>2050294
В дс хотя бы эти самые ваки есть. За мкадом их просто нет. А удаленка на тот момент не была особо популярной
1088 2050322
>>2050311
Единственное, что могу порекомендовать быть максимально подготовленным (готовься, как в последний раз), и как можно больше денег брать. На своем опыте говорю, неудачно приехал в дс, работаю курьером и теперь крайне сложно вкатиться.
1089 2050357
>>2050322
Я уже ни в какие дсы не планирую. Работаю пыхарем на удаленке

>На своем опыте говорю, неудачно приехал в дс, работаю курьером и теперь крайне сложно вкатиться


Соболезную.
У замкадышей не много шансов на нормальный вкат в дс. Только если он гениус, либо родители деньгами подсобят

А ты в какой стек катишься?
1090 2050362
>>2050357
Либо в пых, либо во фронтенд. Пока не могу определиться.
1091 2050393
>>2050114
Челик, чо ты такой токсичный-то ебана в рот? Ну сиди изучай на практике вывод и форматирование строк, реверсно печатай их и играйся с их регистром. Задачи навроде булевой алгеброй, массивы, циклы действительно стоят внимания ну никак не дольше пары-тройки дней. На что ты так уповаешь я откровенно говоря понять не могу.

ООП действительно сложная тема, но я и написал, что в него за 5 месяцев можно окунуться до уровня понимания основ.

Чет вы нежные какие-то, натуральные жуки-плавунцы. В обучение не можете. Хули вы там резину тяните-то? У вас либо проблема с абстрактным мышлением, а это говорит о хуевой мат подготовке, либо вы прокрастинируете попутно думая нахуй оно это мне надо и хули мне девки не дают.
1092 2050399
>>2050168
Документацию не читай
@
Комментарий оставляй

Ты xampp поди юзаешь?

Короче, в httpd.conf добавь строку

Listen номер порта

Номер порта понятное дело такой же как у виртуального хоста. Ясен хуй не забудь проверить что ты там нахуевертил в iptables. Лучше всего очищай сразу все правила в нем.

Перезагрузи демон апача и проверяй.
1093 2050405
>>2050226

>сетевики уже нахуй не нужны и их зарплаты неуклонно падают, а для других областей глубоко знать сети не нужно, максимум L2+L3.



Ох лол бля. Если бы ты понимал про что ты пишешь, маня.

мимо
1094 2050420
>>2050393

>токсичный


Сразу детект дебила.
1095 2050513
>>2049802

>Помню несколько тредов назад чувак потратил на решение одной задачи около двух недель. Когда она решалась буквально за 2-3 часа.



Лол, меня аж запомнили. Я кстати уже полгода не могу сделать сайт по регистрации студентов
1096 2050514
>>2050420
Лучи диареи тебе, уёбок
1097 2050525
>>2050513
Да как тебя забудешь-то? Впервые таких необучаемых увидел. Я же тебе тогда писал оставь программирование это не твоё. Отучись пока не поздно на электрика или газосварщика. И деньги всегда будут и ума особо не надо.
1098 2050551
>>2050514
Напугал...
1099 2050554
>>2050525
Какой закомплексованный программист-анальник.
1100 2050581
>>2050554
Но ты то ведь бездарь, который до сих пор не смог вкатиться. Умение работать руками тебе всегда поможет честным трудом заработать на хлеб с молоком.
1101 2050588
>>2050581

>Но ты то ведь бездарь, который до сих пор не смог вкатиться.


А ты настолько счастливый вкатун, что серишь в треде на дваче на невкатившихся. Глазки болят наверное, анальник?
1102 2050594
>>2050588
Как могу так и самоутверждаюсь.
1103 2050596
>>2050594
Счастливым вкатунам не нужно самоутверждаться, я вот о чем.
1104 2050613
С каких пор php тред стал филиалом мвп треда?
1105 2050615
>>2050596
Я счастлив, а ты так и не смог стать счастливым разработчиком. Я тебе даю ценные, дельные советы, а ты подобно макаке своими фекалиями в окружающих кидаешься.
1106 2050617
>>2050594
двачую додика, так держать
1107 2050621
>>2050615
не обращай внимание на шкилу
1108 2050624
>>2050615
Оправдывайся, засерыш. Не хотел бы стать таким как ты.
1109 2050627
>>2050624
Почему, ты так разговариваешь? Тебя не воспитывали?
1110 2050629
>>2050624
Ебало завали пожалуйста, не на пусть говорят
1111 2050630
>>2050627
Положил свой половой орган тебе в рот.
1112 2050639
>>2050630
Адрес свой напиши, герой-клавиатуры. Быстро пока я добрый.
1113 2050643
>>2050624
ты на ларе, или на симфони пишешь?
1114 2050644
>>2050639
Москва, улица Кузнецова, 3а.
>>2050629
Семен, спок.
1115 2050645
>>2050643
Адресатом ошибся?
1116 2050650
>>2050645
у тебя спрашиваю, не ошибся
1117 2050653
>>2050650
Я не тот анон который сайт написать не может, я к фреймворкам еще не притрагивался.
1118 2050654
>>2050644
хорошо спасибо, пиццу закажу тебе, кстати какую тебе?
1119 2050656
>>2050653
сорян, в этих реплаях можно запутаться
1120 2050658
>>2050656
Это потому что я того анона начал защищать от этого петуха.
>>2050654
Цыпленок барбекю.
1121 2050663
>>2050658
хорошо, приятного аппетита друг
1122 2050664
>>2050663
Спасибо!
1123 2050788
Котаны, подскажите, как можно реализовать такую хрень:

Вот есть у меня сервис на PHP. И допустим, он парсит некий сторонний сайт, берет оттуда данные. Проблема, что тот сайт быстро меня забанит, так как все юзеры моего сайта по сути будут действовать от IP моего сайта.

Как реализовать эту схему таким образом, чтобы юзеры заходили на мой сайт, но далее парсинг стороннего сайта производился бы от имени ихних IP?

если, вообще, это возможно. Мне кажется на JavaScript что ли?
1125 2050870
>>2050788
Найди бесплатный проксилист, и через него делай запросы.
1126 2050893
>>2050788
Так ты разные user agent используй для своих «юзеров».
ssstiktok1621530976.mp41,4 Мб, mp4,
576x1024, 0:07
1127 2050936
>>2050525
Самое забавное что я итак отучился на сварщика но рвать жопу ради средней по россии тоже не мое
ohio.png117 Кб, 630x630
1128 2050947
1129 2050960
>>2050936
А напрягать голову, овертаймить и выгорать хочешь?
1130 2050983
>>2050936
братик ебатик, как ты не поймёшь, что ты сваркой в месяц можешь иметь больше, чем вкатывальщик в офисе. Никто не говорит ебашить на заводе/стройке. Первое время, конечно, стоило бы на заводе ума да опыту набраться, за год повысил бы квалификацию, а далее по авито/хуито раскидываешь объявы частный сварщик. В дачный сезон, с апреля по октябрь, у тебя отбоя не будет от сварки ворот до заборов. И постепенно набиваешь клиентскую базу с помощью визиток. Ах да, если освоишь электромонтаж — ты в среднем 200к/месяц будешь чистыми иметь. Это я про кручение кабанчиком имел ввиду. Нет заказов по сварке ебашишь электриком. А есть ещё сантехника. Ремонт вообще дело такое. Так что анон, оставь программирование и работай на себя. Главное побольше профессий освой. И не бужет нужды унижаться на собеседованиях, учить каждый день 2 новых фреймворка.
1131 2050998
>>2050983
Двачую.
Как стал интересоваться, сколько ремонт стоит, знатно прихуел. Моей сотыги не хватит на это всё
1132 2051055
>>2050983
Ой да, щас бы с пидорахами иметь дела в плане предложения услуг-их оплаты, уж лучше в офисе работать за опыт, чем с пробитой головой лежать в дачной канаве, потому что отказался принять в качестве оплаты пузырь и перетерть с ним за жизнь на полянке.
1133 2051067
>>2051055
двачую белого человека
1134 2051068
>>2051067
блядь пока писал это, возле меня ничер нарисовался, лел
1135 2051081
>>2051055
Лол, ты ещё не имел опыта наеба в офисе. Кстати, систему предоплаты и договоры никто не отменял. Ну смотри, ананас, как хочешь. Поверь, вкат не стоит того как ты себе его представляешь.
1136 2051224
Если вкатываться в проганье, то только ради своих проектов, которые если выстрелят - унесут тебя в топ, к недосягаемым горизонтам, недостижимым на обычной работе по найму. Считаю, что усираться учить кодить, чтобы потом пойти работать на кого-то - не самая лучшая идея. Спасибо, но у меня, уже есть обычная работа. Менять шило на мыло нет смысла. Надо пилить свои проекты!

Как там, классическая схема: сперва найди какую-то проблему, недоработку. Затем придумай как это исправить или улучшить. И наконец - заработай на этом! Справедливости ради, скажу, что еще не придумал, что конкретно буду пилить, но думаю найду в процессе, погружаясь в разные области. Это может быть новый платный плагин, скрипт, или вообще сервис.

Даже, если ничего не выгорит, то максимум чего я лишаюсь это несколько десятков баксов на домены и хостинг. И мое время. Но какая разница куда тратить время, просматривая очередную ненужную ленту какого-нибудь хвастограма, или писать свои формочки с запросиками. Главное, знать меру, не перенапрягаться, отдыхать, чтобы не перегореть. Всем успешного пути!
0672D556-8C73-480F-8491-8AEC811EA5D9.png302 Кб, 750x1334
1137 2051625
Успешный java middle с з/п 250к вкатился итт. Ну, привет, «погромисты». Как там успехи на галерах? Всё пишите высонагруженный бэкэнд с 10.000 запросов в секунду? Ну, успехов. А, кстати, я слышал 100к для вас серьезные деньги. Спешите видеть пикрил, случайно в инсте увидел, решил вам оставить, вдруг пригодиться.
1138 2051645
>>2051625
Очень уныло.
1139 2051877
>>2051625

>Как расти в зарплате


Жить в дс
Подскакивать кабанчиком
1140 2051902
Не, а если серьезно, насколько отличается, скажем, зп пхп миддла в мск от джава миддла там же?
1141 2051981
>>2051902
Существенно. У джависта область куда шире, чем у нас. Миддл РНР будет 120 в среднем иметь, часто слышу, что это пиздешь и все получают больше, но пруфов ни у кого нет. 120 это ещё прилично. В основном 100. Джава разраб спокойно 200-250 будет иметь. Особенно те, кто в банках работает. У меня знакомый в оракл работает, пилит какие-то части их базы данных. На руки получает 250. Он как раз мидл. Как по навыкам, так и по знаниям. И рост, с его слов, у него едва ли не безграничный. Опять же с его слов нач их отдела получает 600к, сам он джава разраб со стажем 15 лет, куча сертов, успел поработать на Западе, куча связей, регулярно выступает на конференциях, может в архитектуру с 0 до 100% проект выполнить.
1142 2052058
>>2051981

>Миддл РНР будет 120 в среднем иметь,... 120 это ещё прилично


Это значит, что мне еще повезло, что по медиане получаю? А мог бы как тот кадр 6 лет опыта и 90к
1143 2052199
>>2052058
Выходит повезло. Опять же, галера галере рознь и может где-то правда платят 150-200 РНР мидлам, но я откровенно говоря сомневаюсь. Вот фулл стэк сеньорам да, тут соглашусь. У этих з/п приличная по меркам РНР разрабов там и 250 как нехуй делать можно иметь в месяц. Чистый бэкэнд если только тимлид/архитектор будет получать прилично. В основном это жалкая 100. Увы, рыночек порешал.
image.png563 Кб, 672x495
1144 2052211
1145 2052247
>>2050405
Конечно я понимаю, работал сетевиком, имею устаревший CCNP и актуальный HCIP по облачным ресурсам
1146 2052253
>>2052211
Ну, в принципе, если тебе 20 и ты не обрамлён тяготами семейной жизни, то 100 это норм. Сычевать на окраине ДС, в клоповнике за 30к, 20к на пожарть и 50к откладывать на будущее. За год можно скопить 600к, а за 10 лет 6кк. Но потом надо будет что-то думать. Либо перекат в с#/java, либо обратно в деревню с 6кк.
1147 2052262
>>2052247
Кому в пидорахе нужны профессионалы облачные? Ты совсе ебобо что ли? Ты ещё azure/aws подтяни, лол. Пиздуй в безопасность, а там из банков будут звать к ним за 200-300к.
1148 2052264
>>2052253
Когда мне было 25, получал 30к и жил с мамкой это казалось неплохими деньгами.
Сейчас сотыга воспринимает как обычная рабочая зп, которая должна быть у веб макаки. С голоду не дохнешь, но и не пошикуешь особо
не дс
1149 2052266
>>2052262

>Кому в пидорахе нужны профессионалы облачные?


Моей прошлой конторе были нужны, ну тем более, что они сами заплатили за обучение и сертификацию (хуавеевскую). А циску я получал сам, по приколу, много лет назад.

>Ты совсе ебобо что ли?


Где ты оставил аргументы? Вернись и подыми

>Ты ещё azure/aws подтяни, лол.


Если мне оплатят это дело - легко. Но я не занимаюсь ни ажурой, ни aws, так что шансы невысоки.

>Пиздуй в безопасность, а там из банков будут звать к ним за 200-300к.


Неинтересно, спасибо.
1150 2052322
>>2052266
Ну и пошёл на хуй, мудак ты чсвшный. Хуй соси губой тряси, терпила в жопу выебанная.
1151 2052375
Всем привет. Прохожу сейчас уроки, что в шапке и в разделе Бонусные задачки(http://phpbook.ga/l1/mou-ikkai.html) последняя, что про поиск пути, вызвала у меня на редкость много трудностей. Плюс, не смотря на то, что я её решил, в результате вышел совсем уж страшный быдлокод. Может кто заценить и сказать, в чём заключаются совсем уж конченые моменты в моём коде?
https://ideone.com/i6y0lf
1152 2052472
>>2052375
Ты что-нибудь знаешь про алгоритмы, ИИ, теорию графов? Задачу ты хоть и решил, но это пиздец. Посчитай сложность алгоритма, у тебя же код медленно работает пздц.
1153 2052684
>>2051981
Грустно это(
1154 2052707
>>2052472
Про графы и всякие алгоритмы их обхода в универе учил. Кстати, всегда очень неплохо получалось решать всякие штуки с ними. Поэтому и крайне неприятно удивился себе и тому, сколько трудностей задача вызвала.
1155 2052720
>>2051625
ты попутал
на Java стыдно 250 зарабатывать,
а для РНР это обычная зарплатка сейчас.
1156 2052737
>>2052720

>250


>а для РНР это обычная зарплатка сейчас



Ох какой жир. На hh.ru правда есть пара вакансий middle php 300-400к, но я со своим опытом в 10 лет даже не стану туда кидать резюме. А ты дерзай, будешь успешным.
1157 2052772
На словах тут все Львы Толстые, а если мы откроем hh, то там не редкость будут вакансии типа такой: https://spb.hh.ru/vacancy/44788899?query=java разработчик

50-70 000 р для Java разработчика, и желательно еще знать C++.

А бывает и такое: https://spb.hh.ru/vacancy/44314799
1158 2052789
Джавистом хуй найдёшь. На ней пишут какое-нибудь ультра-секурное говно в 3 конторах. В это время пыхари могут спокойно харкаться в ебало лидам и не трястись за место.
1159 2052844
у меня тут спросили недавно: вот у тебя класс животные, от него ты унаследовал класс птицы и хочешь сделать класс пингвин, но он же не летает, как быть?
1160 2052897
>>2052772
Ну ты же понимаешь, что приведённые тобою ссылки скорее исключение из правил? Ну, действительно есть конторы, которые платят мало. Тоже самое справедливо и для галер. Сколько раз итт постили вакансии чуть ли не сеньоров, а предлагали за это 50к. И опять же, выше речь шла за ДС, а не за провинцию.
1161 2052899
>>2052844
Как раз выше задавали вопрос про абстрактные классы и интерфейсы. Через них это всё реализуется. Наследуешь класс, добавляешь ему поля и радуешься жизни.
1162 2052972
>>2052844
а какой долбоёб в классе птицы добавил функцию летать? git blame и нахуй мудилу из профессии
1163 2053010
>>2052772
Какой джавист пойдет на такую зп?
Только джун-вкатун без опыта
1164 2053553
Прикрепляю код многостраничного каталога. Каталог по категориям в отдельном файле, пока не начинал все в один файл запихивать.
Насколько все хуево? Вкатываюсь ну как, уже работаю администратором пары сайтов в небольшой фирме по продаже всякой промышленной хуйни 3 год.
http://pastie.org/p/78bwFnG64jV0zngJ9YHkEF
1165 2053555
есть есть тут кто вкатился норм в польше?
1166 2053709
>>2053553

>Насколько все хуево?



А ты как-будто бы сам не понимаешь? Твой код выглядит как код из книги 2005 года для PHP 4.
1167 2053746
>>2053553
Такой код может быть достаточен для какого-то лендинга или простого многостраничника.
Только вот объем кода, с которым работает средней руки макака раз в 1000 больше для справки текущий мой проект 500к строк, плюс этот код прикручен к фреймворку, плюс там ооп и мвц.
Так что лучше напиши какой-нибудь CRUD из шапки на симфони/ларавел - с этим уже можно на собес идти
1168 2054325
>>2053553

Вот что плохо:

- логика получения данных и отображение данных перемешано в одном файле. Правильно было бы разделить получение данных (один файл) и их вывод с помощью шаблона (другой файл). Также, плохая идея выводить HTML с помощью echo. Ты можешь почитать про шаблонизацию, чтобы это исправить: https://github.com/codedokode/pasta/blob/master/php/templates.md .

- делать много запросов (на каждую категорию) в цикле неэффективно. Эффективнее выбрать массив всех категорий одним запросом.

- код написан стеной без разделения на части. Лучше было бы вынести получение данных в отдельные функции с понятными именами вроде getСategoriesList(). эти функции могли бы пригодиться и на других страницах.

Если ты хочешь научиться сделать свой код лучше, я советую посмотреть нашу задачу про студентов (в шапке треда). В ней много полезных советов, и ты бы мог их использовать для улучшения своего кода.
1169 2054326
>>2053553

И еще. Пагинатор имеет смысл сделать отдельным независимым шаблоном, чтобы его можно было подключить на любой другой странице сайта.
Capture d’écran du 2021-06-03 10-42-40.png23 Кб, 942x66
1170 2054445
>>2053553
Я бы со всем примирился, но вот это пиздец
1171 2055148
что будет если использовать readfile в теле функции для вывода шаблона?
или так не делают?
1172 2055634
Ананасы, допустим есть приложение, в котором используются задачи в фоне (компонент симфони мессенджер и кролик). Куда принято складывать проебанные задачи - в другую очередь или в базу данных? Как чаще делают?
1173 2055804
>>2055634
зависит от того, что ты хочешь с ними сделать
1174 2056135
>>2055634

>Куда принято складывать проебанные задачи


Переассайнить на напарника.
16056889634810.jpg24 Кб, 1024x752
1175 2056913
1176 2057706
Аноны, а если переделать поля в задаче про студентов со студентов на что-то другое, её можно как образец кода в свой гитхаб залить?
1177 2057746
>>2057706
Тебе кто-то запрещал это делать?

ЗЫ: это называется форк и ты как бы должен указать источник откуда спиздошил код.
1178 2057771
>>2057746
Так код сам буду писать по заданию, какие форки.
1179 2057773
>>2057706
зачем их переделывать?
1180 2057777
Ладно, понял, тупой вопрос, забейте.
typical-php.png130 Кб, 403x394
1181 2057996
>>1998470 (OP)
Типичный пхп-разраб
1182 2058026
>>2057996
Папка твой?
1183 2058052
Если я выполнил задачу про студентов, то значит ли, что я могу уже на собес и устраиваться джуном???
sage 1184 2058122
>>2058052
Боюсь что ты только пенис пососать можешь.
1185 2058488
Вы говорите что можно начать с Елисеева. А в каком порядке смотреть материал?
1186 2058620
>>2058122
Ну хоть что-то.
1187 2058631
>>2058488
Это один анон говорит постоянно. Какие мы?
1188 2058650
Вот хочу допустим интернет магазин сделать для гитхаба, ну или что-то другое более-менее реальное, а не сферические тестхабы в вакууме. Как в нем вообще реализовать платежную систему? Это сильно сложно?
1189 2058762
>>2055634

Надежнее наверно в БД, но тогда надо, чтобы кто-то их периодически проверял.

>>2057706

Можно, если ты сам напишешь код.

>>2058650

Чтобы подключить платежную систему, надо заключать с ними договор. Без договора ты можешь только поискать какую-то платежную систему, которая предоставляет демо-доступ к тестовому API.

То есть ты обычно сам не принимаешь платежи, а используешь, например, робокассу, яндекс-кассу, stripe и другие подобные сервисы. С ними идет взаимодействие через API: они отправляют тебе HTTP-запрос в случае успешной или неуспешной оплаты.

Вот пример API от Яндекс-кассы: https://yookassa.ru/developers

А вообще, тестхаб по сложности приближается к реальным приложениям (реальные приложения отличаются от учебных в основном огромным объемом, принципы там те же). Так что если ты хочешь что-то близкое к реальности, то это должно быть что-то сложное с кучей возможностей. Например, в магазине какой-то сложный каталог, система скидок, много способов доставки и оплаты, аналитика по продажам итд.
image.png913 Кб, 1280x720
1190 2058763
>>2057996
Вот он
1191 2058767
>>2055148

Так можно сделать, но шаблонизации не будет. readfile просто выводит файл как есть.
Тред утонул или удален.
Это копия, сохраненная 6 июня 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски