Главная Юзердоски Каталог Трекер NSFW Настройки

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 368 27 98
Клуб изучающих PHP #138 /php/ Аноним 19/04/24 Птн 17:17:31 3128808 1
17104329354240.jpg 110Кб, 750x857
750x857
Добро пожаловать.
Тут мы по прежнему изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

Предыдущий тред был тут: >>3034858 (OP)

Старые треды тут https://2ch.hk/pr/arch/ (искать по слову php), а также на архиваче и в гугле по словам по словам "клуб изучающих PHP".

С чего начать - основы PHP

Наши уроки по PHP собраны по адресу http://codedokode.github.io/phpbook . Это учебник для изучающих с нуля. Там есть задачи, их нужно решать. Но если этот учебник тебе не нравится, можно читать любой другой. Или официальный справочник ( https://www.php.net/manual/ru/langref.php ). Или все сразу.

Если что-то непонятно, запости код и попроси подсказку или поищи задачу в архиве тредов.

Какой редактор использовать

Простые задачки можно решать в онлайн-песочницах вроде https://onlinephp.io/ , https://paiza.io/en/projects/new?language=php , https://www.programiz.com/php/online-compiler/ , но для программ посложнее лучше установить редактор. Есть (дорогая) IDE PhpStorm, есть бесплатный Netbeans и VSCode, условно-бесплатный Sublime Text. Чтобы в последних получить автодополнение для PHP, нужно установить и настроить PHP language server.

Вот инструкции по установке PHP на компьютер: https://github.com/codedokode/pasta/blob/master/soft/php-install.md
Гайд по командной строке: https://github.com/codedokode/pasta/blob/master/soft/cli.md

Что изучать дальше

Зная лишь основы PHP, сайт ты не сделаешь и работу не найдешь. Обычно от начинающего требуют чуть-чуть больше:

PHP, ООП, основы HTTP, HTML/CSS (основы верстки), JS, SQL, PDO, MVC, git, composer, какой-нибудь фреймворк (Laravel или Symfony), основы автоматического тестирования, основы linux, английский.

Вот неофициальный роадмап (карта того, что можно изучать): https://miro.com/app/board/o9J_lbUUBBQ=/

По многим из этих тем у нас есть уроки или задачки:

- для понимания, что такое веб-сервер, прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- для понимая MVC, работы с БД и формами, реши задачу про студентов, в ней много полезных советов: 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
- почитать про паттерны можно тут https://designpatternsphp.readthedocs.io/ru/latest/ (если ты не изучил ни одного фреймворка, то это будет рановато). Если хочешь увидеть примеры использования паттернов в реальном коде - ковыряй исходники Симфони, например Symfony Forms. Ну и скажем честно, начинающему без опыта, который не видел сложный код, паттерны понять будет сложно.
- для улучшения английского можно читать news.ycombinator.com - там много статей на тему IT.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- задачи на HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- хороший учебник по JS: https://learn.javascript.ru/
- задачи на 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/
- задачки на SQL: https://www.sql-ex.ru/ (нужна регистрация), https://sql-academy.org/ru/trainer и немного наших задачек: https://github.com/codedokode/pasta/blob/master/db/databases.md

Что еще почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- https://phptherightway.com/
- Книга: Профессиональное программирование на PHP Джордж Шлосснейгл
- Книга: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- Про Git: https://git-scm.com/book/ru/v2
- Задачи на алгоритмы: https://codeforces.com/problemset

Дополнительно

- скачать учебник: зайди на https://github.com/codedokode/phpbook, нажми зеленую кнопку Code -> Download ZIP, распакуй на рабочий стол и открой index.html
- что будут спрашивать на собеседовании, если 0 опыта - будут гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- сколько времени надо изучать все это? - все зависит от тебя, в районе 12-24 месяцев
Аноним 19/04/24 Птн 17:43:12 3128832 2
А почему ни слова про битрикс в шапке?
Аноним 19/04/24 Птн 17:45:19 3128835 3
>>3128832
Проебался. И css забыл. Теперь новички не научатся кнопки расскрашивать. Какой же это пхп?
Аноним 19/04/24 Птн 17:55:29 3128853 4
Что такое трейты? Классы обычные, классы абстрактные, интерфейсы знаю, а это что?

Макрос, который просто при использовании (use) включает некоторый код в определение класса? По типу #define из Си?
Аноним 19/04/24 Птн 17:59:38 3128863 5
Аноним 19/04/24 Птн 18:08:21 3128877 6
Кстати, если уж добавили https://learn.javascript.ru/ с уроками по JavaScript, можно еще и эти ресурсы:
https://htmlbook.ru/ - справочник по HTML и CSS (старый)
https://webref.ru/ - справочник HTML и CSS (новый)
https://www.php.net/manual/ru/index.php - описание языка PHP и встроенных функций на русском
Я учился по PHP.SU в нулевых, но сейчас он закрылся.
Аноним 19/04/24 Птн 18:24:08 3128901 7
>>3128853
Да. Кусок логики класса, который ты можешь всунуть в любой класс. Использование трейтов считается антипатерном и хуйовой практикой
Аноним 19/04/24 Птн 18:29:18 3128906 8
>>3128877
Про denwer забыл, дедуля
Аноним 19/04/24 Птн 18:31:38 3128910 9
перекот.gif 404Кб, 220x141
220x141
>>3128835
> Проебался
В следующий раз кати с нормальными картинками сразу. Такие треды очень чувствительные к перекату и вызывают бурление по поводу проблем с шапкой. Если видишь что проебался, то кидай репорт, но только не заруинь больше никогда картинки.
Аноним 19/04/24 Птн 18:32:44 3128911 10
>>3128906
Никогда не понимал, зачем нужен этот кал. В Windows 7 без проблем ставится Apache. А в XP можно было запускать PHP на майкрософтовском IIS.
Аноним 19/04/24 Птн 18:55:30 3128929 11
О госпаде. Всетаки втулили в шапку эту простыню из говна. Похоже пыхе реально суждено не выбраться из хуиты с задачками про два стула яблока и калькулятора на хтмле и джейквери
Аноним 19/04/24 Птн 19:20:05 3128937 12
Аноним 19/04/24 Птн 19:39:24 3128951 13
image.png 147Кб, 1509x800
1509x800
>>3128929
Профессор МГУ одобряет (кроме жквери и жабоскрипта позорного).
Аноним 19/04/24 Птн 19:44:48 3128956 14
Аноним 19/04/24 Птн 22:05:48 3129098 15
>>3128951
Че блядь? Какой профессор? Че за пик? Че сказать хотел? Ты душевнобольной?
Аноним 20/04/24 Суб 02:08:34 3129266 16
>>3129098
Чмоня, ты залетный с хабры? Учи матчасть, не позорься.
Аноним 20/04/24 Суб 02:21:23 3129271 17
>>3129266
И где эту загадочную матчасть про профессоров можно изучить? Тебя мама не учила что пиздеть хуйню без ссылок - это невежливо?
Аноним 20/04/24 Суб 08:43:27 3129352 18
>>3128951
>Таксист без образования не различает профессора и доцента
Аноним 20/04/24 Суб 17:08:24 3129770 19
>>3128808 (OP)
Нужно импортировать XSLX файл. Как я понимаю без библиотек это можно сделать только при помощи класса ZipArchive. Хотел его использовать, но мне пишут, что
'ext-zip' is missing in composer.json
То есть у PHP нет встроенной поддержки работы с Zip? Ну ладно, если честно я не понимаю, может ли установка расширения Zip привлечь к нагрузке к проекту? Я не хочу писать лиду в выходной. Но просто я не знаю о последствиях, которые может привести подключение лишнего расширения. Если это как то затормозит проект, тогда вряд ли позволят его подключить, и я скажу продакту, что использовать буду CSV.
Аноним 20/04/24 Суб 18:09:48 3129827 20
>>3129770
Возможно оно установлено, но в php.ini отключено. Позырькай туда
Аноним 20/04/24 Суб 20:12:51 3129924 21
>>3128853

Трейт это набор полей и методов, которые можно добавить в любой класс.

Если ты из трейта обращаешься к методам, которых нет в трейте, и которые должны быть в использующем трейт классе, то, по моему, надо делать их абстрактными в трейте. Чтобы код был понятнее и чтобы находить ошиюки. Но почему-то почти никто так не делает.
Аноним 20/04/24 Суб 20:14:03 3129926 22
>>3128901

А аргументы есть, почему это плохая практика? Если код с ними проще и понятнее, то я не готов считать это "плохой" практикой.
Аноним 20/04/24 Суб 20:16:23 3129931 23
>>3129770

Есть библиотека phpoffice для работы с такими документами.

> То есть у PHP нет встроенной поддержки работы с Zip?

Нет, так как это не всем нужно. Если тебе нужно, то надо его установить.

> может ли установка расширения Zip привлечь к нагрузке к проекту?

Думаю, нет.
Аноним 20/04/24 Суб 20:42:15 3129948 24
>>3129926
А аргументы есть, почему множественное наследование "проще и понятнее", чем обычное?
Аноним 21/04/24 Вск 06:05:11 3130205 25
Дальше определения (в изучении JS) что такое объекты в JS не ушел, сложно будет разобраться с AJAX?
Аноним 21/04/24 Вск 07:17:54 3130219 26
>>3130205
Хэш-таблица, она же словарь, она же ассоциативный массив. Если значением поля (ключа) является функция, то оно называется методом. Все просто. Такой же механизм в Lua, но в Js есть еще и наследование. Вот в PHP не знаю, как устроены объекты.

AJAX - с помощью fetch отправляешь на сервер HTTP-запрос (GET, POST и др.), тебе приходит ответ с JSON данными (или ошибка). На хабре все описано: https://habr.com/ru/articles/252941/
Аноним 21/04/24 Вск 07:30:42 3130220 27
Аноним 21/04/24 Вск 07:32:24 3130221 28
>>3129924
>Если ты из трейта обращаешься к методам, которых нет в трейте, и которые должны быть в использующем трейт классе
Ужаснулся, какая это свалка должна быть, в жизни бы не стал прикасаться к подобному коду.
Аноним 21/04/24 Вск 07:41:38 3130223 29
>>3129271
Порридж, за вежливостью и нетоксичным общением на хабр или пикабу. А Столяров это местный мем. То, что ты не знаком с его книгами, уже говорит о многом (хотя для PHP'шника это в общем простительно).
Аноним 21/04/24 Вск 08:39:29 3130245 30
>>3130223
Больной на голову хуила, нахуя ты написал "учи матчасть", если учить нихуя не надо и никакой матчасти нет?
Аноним 21/04/24 Вск 18:27:50 3130831 31
>>3130205

JS не такой уж и сложный, если это не твой первый язык, то за неделю основные моменты прочесть и изучить можно. "AJAX" это написание кода на JS, и без знания JS тут никуда.
Аноним 22/04/24 Пнд 06:25:15 3131256 32
>>3130245
Уебывай просто нахуй отсюда, на хабру или откуда ты вылезла, чмоня.
Аноним 22/04/24 Пнд 18:43:50 3132067 33
14385124862660.png 5238Кб, 1920x1080
1920x1080
>>3128808 (OP)
Есть задача сделать некий функционал на чистом пхп, без фреймворков. Допустим, наполнить базу товарами, сделать поиск/редактирование/удаление товаров и ещё что-то в таком духе. И нужно сделать это максимально ООП-шно.

Я накидал такую схему: есть index.php, который показывает страницу с кнопками, списками и прочим. По кнопкам срабатывают js-срипты и аяксом дёргают файл-роутер router.php. В нём подгружается класс DB.php (подключение базы), Product.php (вся работа с товарами) и другие. Далее идёт разбор реквеста и определяется, какой метод нужно дёрнуть. В каждом методе свой валидатор (выносить куда-то в конструктор, а то и в отдельные файлы-реквесты и делать ларавелоподобный валидатор будет слишком наворочено, мне кажется). То есть, метод из класса Product валидирует реквест, тут же запрашивает через PDO базу, анализирует ответ и выдаёт echo, которое возвращается аяксом в браузер.

И что-то мне это не нравится. Как бы это всё более феншуйно оформить?
Аноним 22/04/24 Пнд 18:52:05 3132079 34
>>3132067

Ты случайно не переизобретаешь велосипед? Попробуй почитать про MVC и ООП-паттерны для работы с БД:

- https://github.com/codedokode/pasta/blob/master/arch/mvc.md
- https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

> То есть, метод из класса Product валидирует реквест, тут же запрашивает через PDO базу, анализирует ответ и выдаёт echo, которое возвращается аяксом в браузер.

Ты совмещаешь 3 функции MVC в одном классе:

- управление обработкой запроса (что должен делать контроллер)
- внесение изменений в БД (задача модели)
- вывод результата (задача представления)

MVC - это как раз идея, как эту свалку кода разделить.
Аноним 22/04/24 Пнд 21:44:40 3132276 35
>>3132079
Конечно, изобретаю.

Прочитал. Не совсем понятны отличия разных схем работы с БД, и главное, как это всё применить на живом проекте. Там как будто нет кусков текста. Например, class News extends ActiveRecordBase - в ActiveRecordBase , насколько я понимаю, нужно прописать методы круда.

В первой статье разобран пример
>Сначала напишем Контроллер, который будет при обращении к нему выводить список объявлений.
Но это один контроллер. На каждый запрос писать свой контроллер, без роутера? Там же всё одинаковое, кроме самого запроса нужного метода. Логично же подгрузить всё нужное, затем выяснить, какой экшен запросили, и вызвать нужный метод нужного сервиса. Правда, получится один контроллер на всё приложение. Но блин, если по контроллеру на каждый запрос писать, они же реально практически не будут отличаться.

>- вывод результата (задача представления)
Запросы идут через аякс, следовательно, вью тут у всех одинаковый: просто джисоним то, что нужно отправить в браузер и делаем echo. Разве нет?
Аноним 23/04/24 Втр 04:04:49 3132424 36
изображение.png 83Кб, 1516x352
1516x352
Вы правда не слышали о symfonycasts? Там много хороших видеогайдов. На ютубе в основном пустышки.
Аноним 23/04/24 Втр 08:52:43 3132491 37
Есть строка, нужно заменить конкретные символы на другие конкретные символы.

Вроде можно задать массив, где
ключ - что заменить;
значение - на что заменить.

И заменять по этому массиву.

Но я не ебу как.
Я помню, что когда-то делал похожее.
Аноним 23/04/24 Втр 10:28:29 3132567 38
>>3132491
Все, я нашел решение.
Аноним 23/04/24 Втр 14:16:14 3132843 39
Бетмены, можете phar.readonly = Off в php.ini и запустить файл со следующим кодом:

$phar = new Phar('file.phar');
$phar->buildFromDirectory(__DIR__);
$phar->stopBuffering();
foreach ($phar as $file) {
echo $file->getFilename() . "\n";
}

Можно ещё в папку, в которой будет лежать этот код, кинуть ещё пару файлов. Хоть пустые txt создать.
При первом запуске, когда file.phar не существовал и только вот был создан, у вас что-нибудь выводится? Потому что у меня нихуя, хотя, говорят, должно. Если вместо
> $phar->stopBuffering();
Сделать переоткрытие
> $phar = new Phar('file.phar');
То всё чинится, но, по-моему, это говной какой-то отдаёт. Как мне получить актуальный список файлов в phar-архиве без его переоткрытия, ёпта?
Аноним 23/04/24 Втр 16:08:41 3132994 40
>>3132276

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

Там описана идея, а не дается готовый кусок кода. Самая простая реализация это TableDataGateway - когда для каждой таблицы ты делаешь класс, и помещаешь в этот класс все операции над таблицей (например: добавление записи, удаление, поиск и тд).

> в ActiveRecordBase , насколько я понимаю, нужно прописать методы круда.

Да.

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

Да. Вот, например, у тебя есть: 1) просмотр списка товаров, 2) добавление товара 3) удаление товара - это нужно 3 контроллера (но обычно делают не 3 класса, а один класс, а в нем 3 метода).

Что касается роутера, это компонет, который смотрит на URL и решает, какой контроллер вызвать. Он обычно один. В статье про MVC для упрощения роутер не пишется на PHP, а используется возможность веб-сервера делать роутинг.

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

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

> Там же всё одинаковое, кроме самого запроса нужного метода.

В случае удаления товара и добавления товара, нам приходят разные параметры в запросе, и их по-разному надо парсить. Вот уже различие. Парсить запрос - это задача контроллера. А сервис не должен лезть в $_GET или $_POST.

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

> Запросы идут через аякс, следовательно, вью тут у всех одинаковый: просто джисоним то, что нужно отправить в браузер и делаем echo. Разве нет?

Это надо делать в контроллере. И скорее всего разные контроллеры должны возвращать разный набор данных и твоя идея сделать один класс не сработает.
Аноним 23/04/24 Втр 16:09:29 3132998 41
>>3132424

По Симфони есть документация на английском, которую надо прочесть в первую очередь. Симфони как раз очень хорошо документирована, хотя иногда и приходится искать ответ в коде.
Аноним 23/04/24 Втр 16:17:31 3133013 42
>>3132843

Phar реализует интерфейс RecursiveDirectoryIterator и является итератором. То есть, его можно перебирать в цикле и в нем есть указатель на текущий перебираемый элемент.

Возможно, что в твоем коде просто этот указатель указывает на самый последний элемент и foreach ничего не выводит. Попробуй сделать $phar->rewind() перед foreach.

Также, Phar реализует ArrayAccess. Если способ выше не заработает, попробуй сдампить, чему равен $phar[0], $phar[1] И так далее.

Также, вроде бы надо вызывать startBuffering перед добавлением файлов.
Аноним 23/04/24 Втр 16:58:01 3133053 43
> Возможно, что в твоем коде просто этот указатель указывает на самый последний элемент и foreach ничего не выводит. Попробуй сделать $phar->rewind() перед foreach.

Авотхуй. Скажу больше
> var_dump(iterator_to_array($phar));
Результат
> array(0) {}

> Также, Phar реализует ArrayAccess. Если способ выше не заработает, попробуй сдампить, чему равен $phar[0], $phar[1] И так далее.
Авотхуй x2, но не совсем. $phar[0] равен нихуя. Но вот $phar["file1.txt"] возвращает object(PharFileInfo), как мне бы того и хотелось. Но проблема в чём? Я не знаю, как при всём при этом сделать что-то типа array_keys($phar). Если я знаю название файла, то да. Но я-то его могу не знать. И как быть? Итератор пустой, поэтому array_keys(iterator_to_array($phar)) не покатит.

> Также, вроде бы надо вызывать startBuffering перед добавлением файлов.
Авотхуй x3. Я пробовал, не помогло.

Я не уверен в своих выводах, потому что нуб, читать исходники на C совсем трудно, но сложилось такое впечатление. При вызове Phar::__construct(), создаётся итератор, который Phar. И всё, ёпт. Дальше мы добавляем файлы с помощью buildFromDirectory, например, а итератор не меняется.
https://github.com/php/php-src/blob/master/ext/phar/phar_object.c#L1220
Вот, смотри. spl_ce_RecursiveDirectoryIterator->constructor дёргается всего в двух местах, в Phar::__construct() и buildFromDirectory https://github.com/php/php-src/blob/master/ext/phar/phar_object.c#L1735
Но во втором случае, как я понимаю, это итератор, который, собственно, собирает файлы, которые пойдут в Phar-архив. А не сам итератор Phar-объекта.
Из чего следует картина, которую я обрисовал выше. Итератор phar-объекта создаётся в момент __construct и больше не меняется по ходу. Хочешь получить актуальный список файлов - пересоздай Phar. Так и задумано.

Где я обосрался? Или так оно всё и есть?
Аноним 24/04/24 Срд 06:39:54 3133579 44
Решаю задачу, где требуется работать с большим объемом данных.
Там массивы с количеством элементов 10к+.
И localhost стал подвисать. Ему перестало хватать 30 сек.
Что можно тут сделать?
Сомневаюсь, что смогу сбавить ему нагрузку.
Аноним 24/04/24 Срд 14:05:05 3133906 45
Есть какие-нибудь библиотеки или типа того для php, чтобы отправлять ajax-запросы?
Я не знаю нихуя JS и мне нужно реализовать ajax-запросы в ближайшее время.
Либо вместо библиотеки напишите какие именно темы нужно дрочить в JS, чтобы смочь написать ajax-запрос на чистом JS.
Аноним 24/04/24 Срд 14:06:36 3133908 46
>>3133579
Разбить данные на пакеты и обрабатывать в очереди, а не в одном запросе.
Аноним 24/04/24 Срд 14:09:45 3133917 47
Аноним 24/04/24 Срд 18:47:03 3134183 48
Аноним 24/04/24 Срд 19:31:41 3134224 49
>>3134183
Наебалово какое-то. Где тут процедуры? Ты когда $con->prepare() пишешь у тебя в голове ничего не щелкает? Может для приличия загуглишь что такое "процедура"?
Аноним 24/04/24 Срд 19:53:47 3134239 50
>>3133053

Ого, ты даже в Си полез. Но, в одном из случаев найденный тобой объект это не часть объекта Phar, а он всего лишь используется для обхода дерева файлов при вызове buildDirectory().

Я замечу еще, что Phar это не просто "плоский" итератор, а RecursiveDirectoryIterator - то есть, итератор по дереву с подкаталогами. Если попытаться его перебрать, то он возвращает одну странную запись - ключом в ней является путь к phar-архиву, а при попытке поучить значение через $phar->current() мы получаем исключение. Поэтому твой foreach наверно ничего и не показывал. Но если у него вызвать getChildren(), то мы получим итератор по файлам в архиве.

Смотри код: https://3v4l.org/YvbU3#v8.3.6
Аноним 24/04/24 Срд 19:55:23 3134242 51
>>3133579

Есть 2 варианта:

1) оптимизировать алгоритм, может у тебя, например, там вложенные циклы можно убрать или еще что-то

2) использовать для долгих задач очередь задач - ты помещаешь в нее задачу и консольный скрипт в фоновом режиме ее выполняет.
Аноним 24/04/24 Срд 19:55:55 3134246 52
Аноним 24/04/24 Срд 20:08:31 3134259 53
>>3134183

У тебя здесь "слепая" SQL-инъекция: https://github.com/casshh87/Project/blob/main/add_user.php#L16 , с ее помощью можно вытянуть всю базу данных. Не подставляй данные напрямую в запрос, а используй подготовленные запросы. Про уязвимость: https://github.com/codedokode/pasta/blob/master/security/sql-injection.md

Здесь XSS-уязвимость, пользователь может вывести произвольный HTML/JS код на страницу, указав его в имени пользователя: https://github.com/casshh87/Project/blob/main/index.php#L35 . Про XSS: https://github.com/codedokode/pasta/blob/master/security/xss.md

Нету никакой валидации при регистрации - у тебя есть валидация на JS, но ее легко обойти, отключив ее в браузере либо отправив запрос напрямую через curl.

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

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

Я тебе предлагаю сделать такие исправления:

- убрать все SQL-инъекции (использовать подготовленные запросы)
- убрать все XSS-уязвимости (сделать экранирование при выводе всех переменных)
- разбить код на 2 части: в одном файле логика, в другом - HTML-шаблон
- добавить валидацию данных при регистрации на стороне PHP

В процедурном подходе я не вижу ничего плохого, но в моем понимании, это когда у тебя есть отдельно файлы с функциями (процедурами), а отдельно шаблоны. И каждая функция выполняет какую-то свою задачу. А у тебя все перемешано в кучу. Если тебе интересно улучшить свой код, можешь писать вопросы, я отвечу.
Аноним 24/04/24 Срд 20:09:58 3134263 54
Аноним 24/04/24 Срд 22:00:31 3134340 55
>>3134183
чувак ты 87 года выпуска?
Аноним 24/04/24 Срд 22:34:17 3134378 56
Аноним 25/04/24 Чтв 00:19:46 3134454 57
>>3134183
Каким же нужно быть быдлом, чтобы в свой логин впихнуть циферки
Аноним 25/04/24 Чтв 00:44:45 3134470 58
>>3134454
Каким же надо быть дегенератом, чтобы читать название фейкоакка
Аноним 25/04/24 Чтв 01:03:01 3134475 59
>>3134470
Stassssss777, плиз. Иди задачки про студентов решай, авось с завода свалишь
Аноним 25/04/24 Чтв 01:26:36 3134489 60
20240425005023.jpg 119Кб, 1200x800
1200x800
Аноним 25/04/24 Чтв 01:34:48 3134498 61
image.png 24Кб, 212x238
212x238
Аноним 25/04/24 Чтв 05:44:24 3134531 62
>>3134239
>Но, в одном из случаев найденный тобой объект это не часть объекта Phar, а он всего лишь используется для обхода дерева файлов при вызове buildDirectory()
Ну да, я об этом и говорю. У меня сложилось впечатление, что итератор, который Phar, строится только в момент __construct и далее не обновляется, когда мы добавляем в него файлы.

> Если попытаться его перебрать, то он возвращает одну странную запись - ключом в ней является путь к phar-архиву, а при попытке поучить значение через $phar->current() мы получаем исключение. Поэтому твой foreach наверно ничего и не показывал. Но если у него вызвать getChildren(), то мы получим итератор по файлам в архиве.
Хотел было сказать, что ты не прав, но ты прав! И это странно. Один и тот же код:

$phar = new Phar('phar.phar');
$phar->buildFromDirectory('.');
var_dump('первый перебор');
foreach ($phar as $file) {
var_dump($file);
}
var_dump('второй перебор');
foreach ($phar->getChildren() as $file) {
var_dump($file);
}
var_dump('третий перебор');
foreach (new RecursiveIteratorIterator($phar->getChildren()) as $file) {
var_dump($file);
}

При первом запуске (phar.phar не существует), первый перебор пустой. Второй и третий не пустые. При втором (phar.phar уже есть), первый перебор не пустой. Второй и третий тоже не пустые. Из чего, упрощая, формулирую такой вывод: чтобы получить обновлённые данные о содержимом PHAR, нужно не сам объект итерировать, а его getChildren(). И поскольку оно работает всегда, и при первом, и при втором, и при каком угодно запуске, для получения списка файлов правильно использовать не
> foreach ($phar as $f) {}
а
> foreach ($phar->getChildren() as $f) {}
Ну, с поправкой на то, что это бы ещё в рекурсивитераторитератор завернуть, чтобы он ходил по вложенным папкам. Сейчас разговор не об этом.
Нихуя не понятно почему так. Типа, при 2+ запусках он же и без getChildren() может получить список файлов. А при первом - только с getChildren(). Это что получается? При первом запуске, когда архива ещё нет, он добавляет в него файлы так, будто $phar - директория, в которой находится директория, в которой находятся файлы. А при последующих, $phar - директория, в которой находятся файлы. И почему тогда
> foreach (new RecursiveIteratorIterator($phar)) {}
не работает? В смысле, не выводит список файлов актуальный. Он же автоматически должен дёргать getChildren() и любую такую фигню, нет?
> Если попытаться его перебрать, то он возвращает одну странную запись - ключом в ней является путь к phar-архиву, а при попытке поучить значение через $phar->current() мы получаем исключение
Видимо, по этой причине? Потому что Phar добавляет какую-то свою костыльную магию, и как бы итератор, но не совсем обычный?
Видимо, это уже какие-то совсем дебри. Будем считать, что разобрались. Спасибо!
Аноним 25/04/24 Чтв 07:00:04 3134574 63
>>3134378
да чет зацепился за 87, того ж года, ты вкатился?
Аноним 25/04/24 Чтв 09:25:21 3134679 64
>>3134574
Да. Видишь задачки уже решает
Аноним 25/04/24 Чтв 16:05:46 3135064 65
>>3134259
>использовать подготовленные запросы
А как сделать сортировку по клику на имя столбца с помощью подготовленного запроса ? Там вроде нельзя подставлять имя столбца в плейсхолдер.
Аноним 25/04/24 Чтв 16:09:48 3135072 66
>>3135064

В такой ситуации подставляем переменную напрямую, но предварительно проверяем, что она входит в разрешенный список полей.
Аноним 25/04/24 Чтв 16:11:45 3135074 67
>>3134531

По-хорошему, надо бы разобраться на уровне Си, специально это сделано или баг, и если баг, то зарепортить.
Аноним 25/04/24 Чтв 16:32:42 3135111 68
>>3135072
Понятно, а запрос оставить подготовленным или обычным писать ? есть смысл делать подготовленный запрос если у меня нет никаких параметров забинденых ?
Аноним 25/04/24 Чтв 20:15:29 3135458 69
>>3135111

Если нет параметров, то не надо делать.
Аноним 25/04/24 Чтв 22:05:30 3135625 70
>>3135064
Это делается с помощью сервиса со схемой базы, который знает какие должны быть названия таблиц и колонок. Ты получаешь название колонок оттуда, а не подставляешь напрямую. https://3v4l.org/fugVD

А подстановка значений должна работать всегда. Поэтому для соединения с базой всегда используют PDO. Офк никто не делает это руками, а пишут сервис, который делает это за тебя.
Аноним 25/04/24 Чтв 23:36:01 3135718 71
>>3135625
>Это делается с помощью сервиса со схемой базы,
Это все прекрасно про сервис и про базу, у меня по клику на имя колонки происходит сначала сортировка по убыванию, а по второму клику она меняется на противоположную хуяк и по возрастанию. То есть переключатель такой который работает как ссылка.

Теперь новый прикол - решив вынести это во вью файл началась магия. Через ссылки в html переворот не работает, если рисую ссылки через php echo - все работает.

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

А нахуй мне все это надо ?
Аноним 25/04/24 Чтв 23:46:29 3135721 72
Короче если я во вью файле пишу html код и подставляю в ссылку <?php перменная ?> то она не меняет значение по клику.
Если пишу echo '<a> .... ' - заебись все робит.
Аноним 25/04/24 Чтв 23:50:23 3135722 73
В ссылку я подставляю query запрос что бы через него изменить вид сортировки в переменной и её уже отправить в запрос.

И разгадка явно кроется в том что я инклюжу view файл в мой основной пхп код он склеивается, а вот что происходит с html парашей не ясно куда и как она лепится.
Аноним 26/04/24 Птн 00:06:18 3135732 74
>>3135722
>>3135721
>>3135718
*fix ошибка найдена - не падайте только, я лишние кавычки ставил в ссылку href=?param="<?php ?>". Кодинг явно не моё.
Аноним 26/04/24 Птн 00:18:21 3135736 75
>>3135732
Пчел, код пишентся в phpstorm, ане на салфетке. Шторм тебе все ошибки подсветит.
Аноним 26/04/24 Птн 10:11:42 3135786 76
Всем привет!

Подскажите, пожалуйста, у нас в компании автотесты пишутся на phpunit и мне надо подхватить это (я тестер ручник).

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

Слышал про ооп, классы, экземпляры классов (даже понимаю, что это такое), но никогда не пробовал.

И вот мне показали код на phpunit и я увидел, что там тесты на нативном пхп идут. У меня был опыт с codeception/cypress, но там всё очень-очень просто, типа такого (для человека, кто базово знает программирование всё очень и очень даже понятно)
$I = new WebGuy($scenario);
$I->wantTo('Хочу убедиться, что форма скрипта Toupper работает корректно');
$I->amOnPage('toupper.html');
$I->see('Конвертируй меня!');

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

А если я не прав, то за сколько примерно можно подтянуть пхп, чтобы писать код в пхпюнит?
Аноним 26/04/24 Птн 12:29:34 3135915 77
>>3135786
Ты же должен понимать ооп, ди и пр штуки чтобы писать юнит тесты. Нужнао же понимать как внедрить моковые объекты например
Аноним 26/04/24 Птн 13:12:39 3135948 78
>>3135915
В идеале да, я это понимаю, что должен понимать и знать, но на собесе об этом слова не было. Распрашивали о прошлом опыте автотестов, я так и сказал, что тестил фронт на сайпрессе и селениуме, но там детский код был, а тут чистый пхп с ооп, которого я не знаю, тут получается по-хорошему учить программирование на пхп до уровня джуна как минимум, чтобы писать такие тесты
Аноним 26/04/24 Птн 13:23:13 3135952 79
>>3135948
Хз, я всегда думал, что юнит тесты сами разрабы пишут. Сомневаюсь, что джун может в ди, да и описание моков требует понимание того, что там в коде происходит
Аноним 26/04/24 Птн 13:38:00 3135959 80
Как в phpstorm выделять по вертикали? В гугле пишут комбинации которые мне окно перетаскивают
Аноним 26/04/24 Птн 14:03:44 3135982 81
>>3135952
Так у нас разрабы и пишут сами эти тесты, просто мне (тестеру) тоже нужно развивать автоматизацию.

Из проектов у нас апи и мобилки. С апи работал только как ручник в постмане. С мобилками ваще не работал.

Хз, надо будет обговаривать походу этот момент. Либо ебашить ещё и пхп.

Сколько кстати просить повышения к ЗП при таком условии, что я с нуля документацию пишу, вкатываюсь в автоматизацию и буду учавствовать в её развитии? Пока что зп 110, через 3-5 месяцев получится убедить их грейднуть мне зп хотя бы до 130-150к?
Аноним 26/04/24 Птн 16:18:59 3136109 82
>>3128808 (OP)
Есть какой-нибудь грамотный вариант решения задачки.
Допустим есть строки, которые отображают числовые значения Но есть проблема, так как целочисленные значения отображаются вместе с нулем, то есть
64 => 64.0
75 => 75.0
653.34 => 653.34
343.2 => 343.2
Как сделать так, чтобы отобразить эти значения в нормальном виде, то есть 64.0 в виде 64, а 75.0 в 75, а 653.34 отсалось таким же?
Аноним 26/04/24 Птн 16:56:04 3136164 83
Аноним 26/04/24 Птн 17:35:44 3136213 84
>>3136164
Как ты нашел этот ответ? Как ты правильно загуглил? Спасибо
Аноним 26/04/24 Птн 17:42:36 3136220 85
Аноним 26/04/24 Птн 17:47:49 3136232 86
>>3136220
Как тебе в голову пришла именно эта мобинация слов? Ведь если бы было 3143.00034, тогда не нужно было удалять нули?
Аноним 26/04/24 Птн 17:51:27 3136238 87
>>3135959

Если у тебя линукс и Alt + клик перетаскивает окно, попробуй правый Alt или погугли, как поменять клавишу для перетаскивания (может быть программой вроде Gnome Tweaks, если у тебя Gnome). В моем линуксе окно перетаскивается по Win + клик и проблем нет.
Аноним 26/04/24 Птн 20:16:50 3136459 88
>>3136238
Да, у меня линукс, а какие клавиши там по умолчанию для вертикального выделения?
Аноним 26/04/24 Птн 20:35:47 3136471 89
>>3136459
>>3136238
Всё не надо, попробовал на винде это альт с кликом или альт шифт. Спасибо за совет, не догадался бы что линукс свинью подкинул
Аноним 26/04/24 Птн 20:46:40 3136476 90
>>3136232
Php remove ze...
Дальше браузер сам подсказал
Аноним 27/04/24 Суб 10:01:21 3136816 91
А это нормально что даже решение задачи уровня 2х2 в кодинге вызывает у меня паническую атаку и я в душе не ебу как сопоставить эти закорючки скобочки буковки чтобы получить решение?
Думаю даже школьник бы интуитивно догадался, а я не могу
Как развить элементарную логику?
Аноним 27/04/24 Суб 10:35:27 3136841 92
>>3136816
Для этого нужно постоянно изучать и применять новое. Возьми почитать книжку по дискретной математике, будет в любом случае полезно.
Аноним 27/04/24 Суб 12:31:09 3136970 93
Когда вставляешь данные в БД нужны плейсхолдеры.
А когда достаешь из БД?
Если я сохраню sql-код в БД и запрошу его SELECT, то СУБД просто отдаст его или выполнит?
Аноним 27/04/24 Суб 12:32:02 3136974 94
>>3136816
>задачи уровня 2х2
Что это?
Аноним 27/04/24 Суб 13:28:42 3137042 95
Отправил POST данные на сервер, при перезагрузке страницы выскакивает уведомление о том, повторить ли отправку формы.
Есть способы убрать кроме редиректа?
Аноним 27/04/24 Суб 16:14:05 3137189 96
Screenshot 2024[...].png 22Кб, 776x149
776x149
Когда phpstorm сможет также?
Аноним 27/04/24 Суб 16:45:12 3137202 97
Какой положняк по switch против множества elseif? Я сначала думал, что круто, а потом узнал, что это аналог == вместо ===, теперь сомневаюсь. Было бы просто синтаксическим вопросом - ок, но ведь и поведение меняется слегка.
Аноним 27/04/24 Суб 18:49:19 3137289 98
>>3136471

А почему Линукс? Может быть, разработчики IDE не учли эту особенность? Она известна уже много лет. Ну и линуксы разные, у меня клавиша Win используется для перетаскивания окон. В твоем Линуксе тоже скорее всего можно поменять эту клавишу. Что у тебя за оболочка, Gnome? KDE?
Аноним 27/04/24 Суб 18:51:07 3137292 99
>>3136970

Плейсхолдеры нужны только при вставки. При их использовании БД правильно экранирует все спецсимволы (вроде кавычек) и в БД вставится ровно тот текст, который ты передал. При получении из БД ты получишь его в точно таком же виде. SQL код, вставленный в БД, не выполнится - можешь проверить и посмотреть, что вставится.
Аноним 27/04/24 Суб 18:51:37 3137293 100
>>3137042

Надо делать Post-Redirect-Get.
Аноним 27/04/24 Суб 18:51:58 3137295 101
Аноним 27/04/24 Суб 19:33:56 3137328 102
>>3135074
Как же PHP срёт вонюче. Всем похуй, но.

1. > При втором (phar.phar уже есть), первый перебор не пустой. Второй и третий тоже не пустые.
Толку от этого примерно нихуя. Он как бы не пустой, но содержит не актуальные данные. Типа, есть у нас phar.phar. Мы запускаем скрипт, добавляя в него какой-то новый файл. Так вот первый перебор этого нового файла в себя не включает, а содержит снимок на момент запуска скрипта.
Иначе говоря, вообще нет ситуаций, в которых $phar имело бы смысл перебирать, только $phar->getChildren() может содержать актуальные данные.

2. Допустим, ну и хуй с ним! - скажет мне анон. Я и так пришёл к выводу
> нужно не сам объект итерировать, а его getChildren()
Ага. Только есть одно но:
> И поскольку оно работает всегда, и при первом, и при втором, и при каком угодно запуске
Это нихуя не так, лол. С первого взгляда - так, но со второго - нет.


$phar = new Phar('phar.phar');
$phar->buildFromDirectory('.');
var_dump('первый перебор');
foreach ($phar as $file) {
var_dump($file);
}
var_dump('второй перебор');
foreach ($phar->getChildren() as $file) {
var_dump($file);
}
var_dump('третий перебор');
foreach (new RecursiveIteratorIterator($phar->getChildren()) as $file) {
var_dump($file);
}

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

$phar = new Phar('phar.phar');
$phar->buildFromDirectory('.');
//var_dump('первый перебор');
//foreach ($phar as $file) {
//var_dump($file);
//}
//var_dump('второй перебор');
//foreach ($phar->getChildren() as $file) {
//var_dump($file);
//}
var_dump('третий перебор');
foreach (new RecursiveIteratorIterator($phar->getChildren()) as $file) {
var_dump($file);
}

Хуяк! При 2+ запуске будет
> Uncaught UnexpectedValueException: RecursiveDirectoryIterator::__construct failed to open dir: operation failed

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

Добавил перед третьим проходом ещё один пустой проход по $phar
> foreach ($phar as $f) {}
Хуяк! Всё заработало. Того же самого эффекта можно добиться через
> $phar->seek($phar->count());
Но если делать так, то при 1 запуске (когда phar.phar ещё нет) будет ошибка.
И да, бля, Phar::seek именно на Phar::count(), без декремента. Какого хуя? Мы ведь выходим за границы итератора.
А вот)
Я нихуя не понимаю, короче. Сейчас, вроде, оно работает именно так, как мне нужно, но почему это работает - хуй поймёшь.

Вот финальный рабочий код:

$phar = new Phar('phar.phar');
$phar->buildFromDirectory('.');
foreach ($phar as $f) {}
foreach (new RecursiveIteratorIterator($phar->getChildren()) as $f) {
var_dump($f);
}

За каким хуем нужен пустой
> foreach ($phar as $f) {}
Я вообще не понимаю, но он нужен.
Аноним 28/04/24 Вск 01:10:02 3137542 103
Аноним 28/04/24 Вск 05:15:00 3137567 104
В каком году вообще сделаны ваши уроки?
Навевает 2008
Аноним 28/04/24 Вск 05:45:38 3137568 105
image.png 60Кб, 971x704
971x704
image.png 452Кб, 709x595
709x595
было не легко но я справился полчаса зачем то делил вместо умножения, идем дальше
Аноним 28/04/24 Вск 05:51:13 3137571 106
image.png 171Кб, 1051x693
1051x693
и нахуя это? в чем проблема просто вызвать переменную и переписать ее значение на нужное, всяко проще чем ебаться с прибавлением убавлением чисел
Аноним 28/04/24 Вск 06:05:45 3137573 107
>>3137571
Например ты чтобы делать всякое с переменными в которых ты не знаешь что будет лежать?
$killToDeathRatio = $kills / $deaths
$circleCircumference = $circleDiameter * 3.14159265

Пример в гайде просто для наглядности
Аноним 28/04/24 Вск 06:27:15 3137575 108
>>3137568
Когда ты вводишь циферки просто в программу это называется ЛИТЕРАЛ. Вот у тебя тут ЧИСЛОВЫЕ ЛИТЕРАЛЫ и они присваиваются переменным. Вся идея ЛИТЕРАЛОВ что они всегда должны в программе объясняться где-то рядом с собой. Когда ты значение в переменную записываешь, то понятно становится что обозначает ЛИТЕРАЛ. Но когда ты оперируешь значениями, там не должно быть никаких неоднозначных литералов.
Твоя программа должна читаться как инструкция на английском. И в седьмой строке у тебя должно было быть записано правило расчёта курса. А в правиле не должно быть никакой конкретики, литералы в правиле абсолютно непонятно что означают, правило действует для всех долларов и рублей.
Поэтому тебе надо было там написать
$roubles = $dollars * $exchangeRate;
Видишь как в этой строке потерялась конкретика про числа? Ты абстрагировался от конкретики и теперь стал настоящим программистом.
Либо я тебя покормил, либо тебя ждёт долгая дорога, типа лет десять до первой вакухи
Аноним 28/04/24 Вск 06:30:00 3137576 109
>>3137571
Это просто наследие ассемблера PDP-11, не обращай внимания. Тогда программировали на перфокартах и надо было каждый символ экономить.
Все пиздец к такой записи привыкли и от неё отказываться уже поздно, будешь постоянно в программах встречать.
Аноним 28/04/24 Вск 06:39:00 3137578 110
>>3137571
слушай сюда сынка нах айти это тебе не про комфорт это про сверление тебе в анусай всякой старой хуеты которая просто есть и которую нужно просто принять и затолкнуть поглубже в очко если ты хочешь найти работу
Аноним 28/04/24 Вск 06:47:47 3137580 111
>>3137575
>Поэтому тебе надо было там написать
$roubles = $dollars * $exchangeRate;
Звучит разумно, по моему я так и написал впервые, но не там где нужно.
Сейчас буду решать задачку про кубик!
Ждите через пол дня
Аноним 28/04/24 Вск 13:23:19 3137781 112
>>3137542

Согласно информации из интернета, Alt для перетаскивания окон можно отключить в настройках:

System > Control Center > Windows > Behaviour > Movement Key

Поменять Alt на Super Key (это так в Линуксе называется клавиша с логотипом Windows) или что-нибудь еще.
Аноним 28/04/24 Вск 13:26:57 3137789 113
>>3137571

Это короче писать и нагляднее, по крайней мере для меня:

$x += 10; // сразу понятно, что надо увеличить x на 10

$x = $x + 10; // надо чуть дольше читать чтобы понять, что тут делается

Если же ты имел в виду "почему нельзя написать просто $x = 20", то ответ, иногда мы сами не знаем, чему будет равна переменная, но хотим ее увеличить на 10.

Но тот анон про наследие PDP (компьютер из 70-х), возможно, и прав. Эта конструкция унаследована из языка Си (так что теперь ты заодно знаешь, как увеличивать переменные в Си).
Аноним 28/04/24 Вск 13:28:59 3137790 114
>>3137568

Надо было использовать переменные, а не числа в строчке 7. Сейчас, если ты хочешь узнать, сколько стоят 300 долларов, тебе надо 2 раза менять числа. А желательно, чтобы число 200 было написано только один раз и достаточно было поменять его в одном месте.
Аноним 29/04/24 Пнд 07:38:58 3138439 115
>>3137789
> как увеличивать переменные в Си
ШОК! СЕНСАЦИЯ!
УВЕЛИЧЬ СВОЮ ПЕРЕМЕННУЮ ДО 64 БИТОВ! НАДО ВСЕГО ЛИШЬ В НАСТРОЙКАХ КОМПИЛЯТОРА УКАЗАТЬ ПРОСТОЙ, КОПЕЕЧНЫЙ...
Аноним 29/04/24 Пнд 08:23:51 3138477 116
Аноним 29/04/24 Пнд 08:25:16 3138479 117
Еще можно и в ручную всё настроить
Аноним 29/04/24 Пнд 08:27:43 3138481 118
Хочу Rabbitmq освоить. Есть нормальная документация по библиотеке?
Аноним 29/04/24 Пнд 22:40:42 3139199 119
Что не так со скобочками { } в preg_match в пхп ? эта хуйня ломает мне regexp там где нужно указать минимум 1 символ { 1 }.
Аноним 29/04/24 Пнд 22:43:22 3139201 120
>>3139199
Всё я разобрался надо u в конце добавить было, а то с русскими буквами не отображалось.
Аноним 30/04/24 Втр 10:01:52 3139458 121
>>3139201
Молодец. Ты вкатишься.
Аноним 30/04/24 Втр 10:33:56 3139490 122
У меня есть сайт, сделанный на Laravel, как теперь его выкинуть на какой-нибудь хостинг?
Или лучше, как из локального сервера сделать доступный из интернета сервер?
На компе стоит Apache
Аноним 30/04/24 Втр 10:52:16 3139504 123
otvetit-polzova[...].mp4 2287Кб, 540x710, 00:00:07
540x710
Аноним 30/04/24 Втр 13:01:32 3139616 124
Что джуна отличает от сеньора?
Джун это тоже самое, что и сеньор, только без опыта работы?
Или джун это тупой говнокодер, который в будущем должен стать сеньором с чистым кодом?
Аноним 30/04/24 Втр 19:28:40 3140061 125
>>3139616
Да много чем отличается, посмотри матрицы компетенций разных крупных компаний, там детально расписано.
Аноним 30/04/24 Втр 20:07:59 3140106 126
>>3139616

Теоретически, синьор - это тот, у кого есть какой-то опыт коммерческой разработки, и который типа может самостоятельно предлагать и реализовывать решения. На практике же все очень размыто - есть т.н. "джуны" способные разработать приложение от и до, есть т.н. "синьоры", которые годами кнопки красят. Короче, вся эта дифференциация по цвету штанов в основном нужна как предлог работодателю тебя по зп опустить.
Аноним 30/04/24 Втр 22:34:01 3140230 127
Не понимаю хейта в сторону битрикса. Как технология может и говно, но для вкатунцов это спасение.

Битрикс > лара/симф > Го > пенсия

Твёрдо и чётко.
Аноним 01/05/24 Срд 00:58:13 3140305 128
На первую работу выходил как пхпшник. Но спустя неделю стал полноценным фронтендером на Вуе и нуксте. И с тех пор прошло больше двух лет
Стоит пытаться вернуться в пхп? Возможно ли это без просадок зарплаты?
Аноним 01/05/24 Срд 23:44:17 3141657 129
>>3139504
Зайти в настройки, в поиске code style и зайти в php
Аноним 02/05/24 Чтв 16:30:38 3142426 130
>>3128808 (OP)
Как перевести число с Е в десятичное?
1231231231233,21 отображается как 1,23123123123321E12, хотя мне нужен первый вариант
Аноним 02/05/24 Чтв 17:09:14 3142481 131
Здарова пачаны, нужно выучить пхп на хорошем уровне (на уровне типизации и расмотра полноценного ООП, МВС и прочей белиберды).

Мне просто для себя, я как тестер просто хочу ещё как хобби нахуй после работы сидеть и кодить
Аноним 02/05/24 Чтв 17:47:02 3142518 132
>>3142426
Умножить на 10 в 12 степени

А если серьёзно, то обернуть в double(x) попробуй
Аноним 02/05/24 Чтв 17:55:24 3142533 133
>>3142481
Тогда учи нормальный язык. Нахуя жрать говно если ты не на грани голодной смерти?
Аноним 02/05/24 Чтв 18:29:38 3142597 134
>>3142533
Какой? Я питон хотел, но че т не знаю. Остальные не зашли в своё время, когда учился в ВУЗе

++, #, джаву, джс, пхп, лисп знаю на уровне циклов и условий.

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

Пока особо интересны пхп и питон (но на питоне вроде матан хуян нужно классно знать, а я могу только 2+2 сложить)
Аноним 02/05/24 Чтв 18:56:33 3142657 135
>>3142597
Ты даже близко не смыслишь в программировании. Учи любой, кроме пхп - python, c#, haskell. Просто покрути колесо с именами япов и что выпадет то и учи абсолютно без задней мысли.
Аноним 02/05/24 Чтв 19:13:00 3142687 136
image.png 248Кб, 1852x1000
1852x1000
>>3142657
В смысле не смыслю в программировании? Я даже знаю, что такое полиморфизм и паттерны проектирования.

Выпал го, ебаный в рот
Аноним 02/05/24 Чтв 21:10:59 3142765 137
>>3142687
Ну го заебись. И строго типизированный и компилируемый и популярный и в девопсе юзается и в вебе и можно на мобилки даже че-то склепать, даже игровой движок есть. Выпало лучшее что можно "для себя" изучать. Может только синтаксис не очень понравится, но мозг быстро привыкнет.
Аноним 02/05/24 Чтв 21:18:38 3142770 138
>>3142518
>>3142426
А если серьезно? Неужели на php нет функции, которая занимается преобразованием чисел с E?
Аноним 02/05/24 Чтв 21:36:33 3142778 139
Аноним 02/05/24 Чтв 21:39:01 3142779 140
Есть тут битриксоиды? Сколько времени на работу тратите из 8 часового рабочего дня? Есть время на саморазвитие (laravel или другие стеки) или только во вне рабочее время получается?
Аноним 02/05/24 Чтв 23:26:16 3142857 141
>>3128808 (OP)
fgetcsv возвращает округленный вариант ячейки? А как сделать так, чтобы возвращался полный вариант?
Аноним 02/05/24 Чтв 23:28:37 3142859 142
>>3142778
>>3142426
Нашел такой вариант BigDecimal::of($cellValue);
number_format() не подходит
Но теперь оказывается не совпадение между данными полученными из XLSX файла и CSV файла. Так как XLSX отдает числа с E, а CSV формат числа округляет
Аноним 03/05/24 Птн 06:06:42 3142907 143
Подкиньте книг или статей, где основательно, живым языком рассказывают как работает php под капотом.
Аноним 03/05/24 Птн 13:09:20 3143236 144
>>3142426
floatval() если у тебя оно строка
Аноним 03/05/24 Птн 13:21:11 3143254 145
Есть какие-нибудь крупные задачи на php и js одновременно?
Чтобы в js пришлось писать не только аякс-запросы.
Ну и подкиньте идеи какое веб-приложение можно написать, где пригодился бы js.
Хочу попрактиковаться.
Аноним 03/05/24 Птн 13:59:02 3143305 146
image.png 97Кб, 588x683
588x683
Соре, за относительный нерелейтед, но все же спрошу.
Анон-лапочка в одном из разделов скинул кастомный CSS для макабы, который скрывал все посты, к которым не прикреплены картинки/шебм, а я его пролюбил - помогите плес придумать его заново
Помню только логику внутри, типа сначала всем блокам сообщений ставился скрытый статус, а затем те что с медиа раскрывались обратно
Аноним 03/05/24 Птн 14:26:51 3143330 147
>>3143254
любой фронт не статичный как кал
Аноним 03/05/24 Птн 14:58:39 3143349 148
>>3143305
Уот так уот https://jsfiddle.net/q6vcs359/

В идеале разумеется нужен JS скрипт, который будет встроенный класс post_type_hidden проставлять, тогда будет функционал обратного раскрытия работать и вообще все будет как обычно работать. Но если нужно просто скрыть все навсегда, то и так пойдет.
Аноним 03/05/24 Птн 15:05:42 3143353 149
>>3143349
Ах ты мое солнышко, спасибо!
Аноним 03/05/24 Птн 19:44:57 3143767 150
Если мне надо асинхронные данные загрузить в ларе типо списка фильмов, мне нужно какие то библиотеки подрубать async ? и где это хранить в самой ларе, в отдельном файле ?
Аноним 03/05/24 Птн 19:48:21 3143772 151
>>3143767
Я так понял очереди этим занимаются.
Аноним 03/05/24 Птн 20:36:20 3143828 152
>>3137189
А нахуя если psr 12 устарел
Аноним 03/05/24 Птн 20:41:58 3143835 153
>>3143772
Чем? Асинхронных данных не бывает и я уверен, что речь идёт об аяксе из жикевери и к ларе это никакого отношения не имеет
Аноним 03/05/24 Птн 22:17:38 3143947 154
В пхп файле если пишу html код то не работает background url(1.jpeg) тупо не грузит картинку, если в html файлике то все ок работает.
Аноним 03/05/24 Птн 23:23:46 3144046 155
>>3143947
Через xamp все работает, через встроенный пыха сервер нет ну и хуй с ним.
Аноним 03/05/24 Птн 23:31:47 3144061 156
Аноним 04/05/24 Суб 19:45:18 3144940 157
image.png 31Кб, 360x360
360x360
image.png 368Кб, 500x375
500x375
>>3128808 (OP)
Почему похапешники все время воруют нашего слоняру PostgreSQL?
Ведь всем известно, что слоник PHP зеленого цвета.
Аноним 05/05/24 Вск 10:18:11 3145278 158
>>3142779
Я на битриксе РАБотал, съебал в конце прошлого года. Если в кратце, то это лютая потогонка, никаких сил и времени на саморазвитие не остается
Аноним 05/05/24 Вск 13:09:09 3145408 159
>>3144940
А может это постсикуэль ворует? Наш слоник раньше появился
Аноним 05/05/24 Вск 13:17:00 3145412 160
>>3145278
Ну это хотя бы опыт с пхп. Я блчть пять лет в 1с пердолю, вот у нас рил потогонка без перспектив, щас вот вкатываюсь в пхп
Аноним 06/05/24 Пнд 14:18:54 3146407 161
И с помощью ini_set, и с помощью set_include_path, я могу добиться ровно одного и того же. Просто первое более универсальное и как бы более низкий уровень, а второе под конкретную директиву include_path. Правильно понял?
Аноним 06/05/24 Пнд 20:54:12 3146819 162
Аноны скорректируйте меня по вкату плз, я разобрался кое как со студентами т.е. понял все составляющие. Так же я полистал книжонку по ларе, типо сделал туду лист, увидел мидллвар, валидацию, языки, аутинфекацию. Потыкал mysql.

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

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

Ощущение что я вообще не могу все это говно выучить одновременно.
Аноним 06/05/24 Пнд 21:10:57 3146835 163
>>3145412
Чел битрикс это опыт говна, ничему нормальному ты там не научишься, но проебешь кучу сил времени на освоение битриксовых костылей
Аноним 06/05/24 Пнд 21:13:37 3146838 164
>>3146819
Да, конечно, стоит, если состряпал хотя бы 1 проектик на ларе. Только на собесах поймешь чего не хватает, учить будешь более предметно
Аноним 06/05/24 Пнд 21:31:17 3146854 165
>>3146838
Вот сколько раз замечаю, что любите вы вкатуны пиздеть чего не знаете. Ну если ты не был на собесах никогда, так нахуй ты пиздишь хуйню какую-то выдуманную?

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

Только на этом этапе с тобой вообще живые люди разговаривать будут. И офк нужно будет еще не обосраться на тех единицах собесов, на которые тебя ВОЗМОЖНО пригласят.
Вот и думай.
Аноним 07/05/24 Втр 07:21:37 3147037 166
>>3146854
>Только на собесах поймешь чего не хватает, учить будешь более предметно
Ну вообще, анон, мб прав.
Я проходил тестовое.
Это, конечно, не собес, но все же.
Узнал немного нового.
+ появилась мотивация JS учить.
Щас вот дочитываю учебник.
>Не будет у тебя никаких собесов.
И все что дальше - согласен.
Работодатели вообще пидорасы.
2 раза давали мне тестовое задание, 2 раза я его делал, кидал им и они два раза просто игнорили. Просто игнорили. Джун все равно что пыль для них, раз само величество лид или сеньор не могут написать "Мы уже нашли человека на эту должность" или "Вы нам не подходите".
Аноним 07/05/24 Втр 14:32:06 3147411 167
image.png 783Кб, 640x640
640x640
>>3145408
История появления логотипа PostgreSQL хорошо известна:

https://postgrespro.ru/blog/company/postgresqlogo

> Слон, как талисман постгреса был предложен в 1997 году по мотивам произведения Агаты Кристи «Слоны умеют помнить». (Я помню, как на своей страничке гордо вешал логотип Постгреса в виде гепарда).
> "Помните детскую сказку про то, как портной-индиец воткнул иголку в слоновий бивень? Нет, конечно, не в бивень, а в хобот. Когда слон в следующий раз проходил мимо, он набрал воды и окатил портного с головы до ног, хотя не видел его несколько лет. Он запомнил, потому что слоны умеют помнить."

> Наш слоник раньше появился

Но он был зеленым, а не синим. Не надо воровать чужих слонов.
Аноним 07/05/24 Втр 15:10:46 3147437 168
image.png 80Кб, 1024x1024
1024x1024
Аноним 07/05/24 Втр 15:14:27 3147441 169
>>3147437
Пожоже на ермолку с пейсами
Аноним 07/05/24 Втр 18:17:48 3147664 170
>>3147037
Накрути опыта, год хотя бы. Не можешь сам - найди наставника, который поможет
Аноним 08/05/24 Срд 01:48:40 3148251 171
Как понять что готов к изучению ооп?
Аноним 08/05/24 Срд 06:08:18 3148311 172
>>3148251
Никак.
Бери и учи.
Со временем освоишься.
Сначала будет каша в голове, потом станет легче.
Аноним 08/05/24 Срд 06:09:54 3148312 173
>>3147664
Да разве в опыте дело?
Если бы было дело в нем, то наверное тестовое не давали бы?
Аноним 08/05/24 Срд 07:17:07 3148325 174
Аноним 08/05/24 Срд 10:28:07 3148417 175
>>3148325
В 2024 fetch везде работает...
Аноним 08/05/24 Срд 11:00:20 3148436 176
Что нужно знать веб-программисту об ОС?
Текущие познания: ОС - важная штука. Есть винда, линукс, макос.
Что еще нужно знать?
Аноним 08/05/24 Срд 18:03:36 3148809 177
>>3142907
>где основательно, живым языком рассказывают как работает php под капотом.
Под капотом языком работают только битриксоиды
Аноним 08/05/24 Срд 18:30:31 3148845 178
>>3148312
Будет опыт, будут и вакансия без тестового.
Аноним 09/05/24 Чтв 18:26:23 3149861 179
image.png 12Кб, 297x207
297x207
Куда вкатываться после Yii2?
laravel / symfony?

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

Вопрос только времени.
1. Что там вообще нужно знать чтобы вот пойти и получить работу?
2. Интересует именно удаленка.
3. Имея опыт с yii / slim framework норм ли напиздеть про опыт с симфони, а то требуют от 3х лет именно с симфони.
4. Если еще DDD навернуть, то нужно Вернона читать или Эванса для начала хватит чтобы работать?
5. И какой стек для Симфони учить? Какой набор инструментов? Стат анализ нужен? Очереди какие? Какая база для работы?
6. И какие проекты на симфе делают? бек с json'ом и rest? Или сайты для домашней выпечки? Какие задачи у вас были?
7. Ну и прав что хочу Симфони выучить? Мол, можно конечно ларавель, но зачем, если можно лучше выучить и иметь норм работу, а не говносайты клепать? Что короче на перспективу?
Аноним 09/05/24 Чтв 20:05:08 3149984 180
>>3149861
На перспективу спираль. Во всех вакансиях пишут: фреймворкнейм или любой другой популярный фреймворк. Нахуя тебе учить очередной однотипный фреймворк? Вкатывайся в спираль и роадраннер а потом и в го
Аноним 09/05/24 Чтв 20:07:02 3149987 181
>>3149861
На перспективу спираль. Во всех вакансиях пишут: фреймворкнейм или любой другой популярный фреймворк. Нахуя тебе учить очередной однотипный фреймворк? Вкатывайся в спираль и роадраннер а потом и в го
Аноним 10/05/24 Птн 00:43:05 3150252 182
>>3149987
Спираль это на перспективу, года 2 в нём копаться, слишком сложно.
Аноним 10/05/24 Птн 04:22:12 3150278 183
>>3150252
Че бля? Ты же сам переул, что похуй на сложно. Какие года два нахуй?
Аноним 10/05/24 Птн 08:24:19 3150317 184
Часто анон в практике имеет дело с генераторами?
Генераторы это имба?
Когда их стоит использовать?
Аноним 10/05/24 Птн 09:38:21 3150355 185
Зачем вы учите пхп? Ему же пизда
Аноним 10/05/24 Птн 12:06:13 3150450 186
>>3150278
Ты видел доку этого инструмента. Там с ума сойдёшь сколько новых концепций. Это все равно что сейчас хаскель сесть изучать после пхп. Ты с ума сойдёшь уже на рекурсии. Так что не годится. Рекомендуй мне либо ларавел либо симпхони.
Аноним 10/05/24 Птн 12:28:38 3150491 187
Аноним 10/05/24 Птн 12:29:29 3150492 188
Аноним 10/05/24 Птн 12:59:00 3150516 189
>>3150355
Что-что. Девопс конечно, что же ещё.
Аноним 10/05/24 Птн 12:59:55 3150518 190
>>3150355
Нет, вкат возможен только в пэхапе
Аноним 10/05/24 Птн 13:02:30 3150522 191
>>3150491
Сварку, например. В сварщики вкатиться хотя бы реально. Учить сейчас любой ЯП - это путь в никуда. Есть смысл, только если у тебя есть знакомые, которые помогут с трудоустройством ну или ты порридж студент 1-2 курса, который волчком крутится будет и пробиваться на стажировки.
Аноним 10/05/24 Птн 15:12:40 3150658 192
Я тут подумал, вы извините, не хотел вас демотивировать. Просто реально ощущение такое что про вкат можно забыть. Если 10 лет назад брали с улицы любого бомжа и реально можно было изи вкатится, то сейчас это пиздец. Охуевшие требования, ебучие автофильтры, по 1000 откликов на вакансию.
Аноним 10/05/24 Птн 15:36:13 3150676 193
Аноним 10/05/24 Птн 15:55:24 3150696 194
>>3150658
Да, максимум куда можно вкатиться - пэхапе и 1с
но на пэхапе ты будешь битрикс херню клепать за 50к
Аноним 10/05/24 Птн 16:28:31 3150755 195
>>3150658
Люди, которые плачут по поводу требований, ответьте на вопрос: зачем брать человека, знания которого о программировании сопоставимы со знанием школьника 9-го класса, который сел изучать основы любого ЯП?
Аноним 10/05/24 Птн 16:49:36 3150791 196
>>3150755
Да как вы заебали, суки. Я пройду собес на джунскую вакансию. Знаний достаточно. Проблема в том, что на собес еще хуй попадешь, это из разряда фантастики.
Аноним 10/05/24 Птн 18:34:56 3150942 197
>>3150791
Вкат все, закрыайте тред
Аноним 11/05/24 Суб 00:44:54 3151228 198
>>3150942
Согласен. Все треды по вкату надо закрывать. Заебали еще инфоцыгане, пиздящие везде про то, как охуенно в айтишечке и что на работу устроится можно хоть в 40 лет без опыта с нуля без вышки, после говнокурсов скиллбокса или самообучения даже. Это все пиздеж. На деле ты заканчиваешь свой говнокурс за 200к, тебе дают пдф: Иван Говнов прослушал курс "пхп от бомжа до синьора". Ну либо не дают, если ты самообучался. Дальше ты создаешь резюме на ебаном пидаристическом хх сру. Где, кстати, инфоцыги тоже сидят, вообще вся система найма - это говно ебаное, не только в айти. Там, кстати, на этом хх сру предлагают запилить тебе резюме за бабки, за такую услугу залупляют ценник 10к+. Ну и сидишь ты как долбоеб со своим говнорезюме без опыта или с накрученным (а особо тупые индивиды год обучения в скиллбоксе себе в опыт записывают) и буквально сосешь хуи. На вакансию джуниора в ООО Вектор в мухосрани, у которых у самих весь сайт в рот отъебан и вообще на джумле сделан и отвалился сертификат (тру стори, реальный случай), 200 откликов висит. Звонит тебе хуй, спрашивает сколько ты хочешь денег, говоришь 20 тысяч хочу, а он тебе отвечает: извините, 20 не можем предложить без опыта. А по остальным откликам либо отказ проставляется, либо тишина. И сидишь ты как долбоеб клацаешь отклики во все подряд, а вдруг хотя бы на собеседование пригласят, но везде отказы или игнор и по 1000 откликов на вакансию. Очередь за забором стоит. А если тебе повезло и тебя позвали на собеседование - будут тебя дрочить от 2х часов на позицию стажера за 15к в офисе с отвалившимися обоями, заебывая тупорылыми вопросами, которые не имеют никакого отношения к тому, чем ты будешь заниматься. А ебани-ка алгоритм тасования Фишера-Йетса. Как это ты не знаешь? Ну все, не прошел. И опять все по новой, жмакаешь по кнопкам "Откликнуться" на каждой вакансюльке, надеясь что еще раз повезет и пригласят на собеседование. А там тоже за 2 часа дрочева есть вероятность на каком-нибудь вопросе проебаться.
Совсем охуели уже, пидорасы. Не вы, если что, а те, кто вот это все говно устроил с таким дрочевом лютейшим при найме.
Аноним 11/05/24 Суб 07:20:45 3151376 199
Какие хорошие раньше были сайты: http://celnet.ru/OSI1.php
Все спокойно, гладко, тихо.
Современные сайты в большинстве - тысячи окошек, уведомлений, реклама, которая вылетает и закрывает весь экран.
И какой-то 1% мб действительно хороших сайтов.
Аноним 11/05/24 Суб 08:08:45 3151393 200
>>3151376
особенно ебучие spa... технология то збс, но исполнение...
Аноним 11/05/24 Суб 09:04:50 3151406 201
Приведите пример использования анонимных классов.
Аноним 11/05/24 Суб 09:07:36 3151408 202
>>3151228
Так так так, у вас в резюме написано 10 лет сеньером, это все хорошо, но что если строку умножить на два....
Аноним 11/05/24 Суб 11:56:17 3151541 203
>>3151406
Когда лень создавать обычный класс.
Аноним 11/05/24 Суб 12:05:17 3151550 204
>>3151541
Умно.
А если без жирноты?
Аноним 11/05/24 Суб 12:12:26 3151555 205
Как же я заебался из-за одного учебного проекта.
Никак не могу добиться желаемого поведения.
А самое обидное, что там целый проект, а в треде хуй расскажешь что именно у тебя происходит и чего ты хочешь добиться.
Блять, ну за що.
Аноним 11/05/24 Суб 12:27:24 3151567 206
>>3151550
Если без жирноты, то ни разу не приходил случай, чтобы использование анонимных классов было в идее архитектуры. Лично сам его использовал так: сторонняя библиотека хочет принять в функцию класс из собственной библиотеки. Мне нужно, чтобы получился другой результат после вызова этой функции, но создавать целый класс у себя не хочется, поэтому я прямо там динамично создаю анонимный класс наследник и передаю его функции. Поэтому не знаю о других способах использования анонимного класса, кроме как удобного обхода такого рода ограничений. Да вот те же анонимные функции, тоже ведь тема для удобства.
Аноним 11/05/24 Суб 12:33:06 3151573 207
А вас домашние не дразнят? Ну там вроде "Джуниор ты мой 20 летний" или "Сеньер-помидор", например.
Аноним 11/05/24 Суб 12:47:13 3151579 208
>>3151573
Максимум, если не можешь почитать какую угодно технику, скажут: "Ты же программист! Почему не можешь!"
Аноним 11/05/24 Суб 12:47:34 3151580 209
Аноним 11/05/24 Суб 12:52:08 3151583 210
>>3151579
Да тоже сталкиваюсь с этим постоянно. у меня батя системный администратор, но занимаеются абсолютно всей техникой в организации от принтеров до камер и еще сайт им пилит и админит. Постоянно ругается, что я ничего не умею.
Аноним 11/05/24 Суб 13:09:31 3151618 211
>>3151376
Это больше к кабанам вопросы, это им обязательно нужно справа внизу чат с менеджером и 10 всплывающих модалок с рекламой
Аноним 11/05/24 Суб 21:10:11 3152244 212
Вкатываюсь в 1с-битрикс. Вопросы?
Аноним 11/05/24 Суб 22:34:04 3152332 213
Аноним 11/05/24 Суб 22:47:54 3152351 214
Аноним 12/05/24 Вск 13:16:29 3152717 215
>>3152244
Первый год будешь только битриксом заниматься, во второй год можешь выйти на полставки за те же деньги (~40-50к) и по 4 часа задротить норм фреймворк или вообще другой язык и другой стек, через полгода выходишь в отпуск, в отпуске ебашишь по 12 часов и параллельно ищешь работу, обязательно привираешь, если это тру-фреймворк, что уже что-то делал на нём, а если другой стек, то тоже ври, что работал уже с тру-фреймворком.

Ну и вот, спустя 1.5-2 года ты выходишь на норм стек. Правда придётся эти 2 года работать за гроши (~40-50к). Ну и возможно третий год тоже, если не на мидла отсобесишься.

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

Конечно всё познаётся в сравнении. Например, по сравнению с кассиром, оставившим свои мечты далеко позади, ты будешь в более выгодном положении, но ведь ты мог бы лучше, и ты ещё на этапе выбора - можешь или не можешь (не хочешь, выбираешь путь полегче)
Аноним 12/05/24 Вск 15:14:14 3152884 216
>>3152717
50к это после устройства, 100к на второгй год, 200к на третий год, а дальше как получится. Зарплаты беру из жизни и hh.
Аноним 12/05/24 Вск 15:20:27 3152895 217
>>3142779
Я думаю это больше зависит от чиловости конторки, я работаю меньше 4 часов всегда.

1С это очень неплохо, я бы остался там, и становился экспертом.
Аноним 12/05/24 Вск 21:36:16 3153476 218
>>3152895
С каких пор навернуть говна половником стало неплохо?
Аноним 12/05/24 Вск 22:00:48 3153502 219
Аноним 12/05/24 Вск 22:16:59 3153521 220
>>3149861
>Куда вкатываться после Yii2
в другой яп лара если боишься голодной смерти симф если хочешь сурйозный энтерпрайз за чуть больший прайс чем лара
Аноним 12/05/24 Вск 22:21:20 3153523 221
>>3151406
если нужно сделать мок твоего говна в рантайме а пхпюнит не позволяет использовать религия
Аноним 12/05/24 Вск 22:53:40 3153555 222
Почему данный код выдает 33, а не 5 или 23:
echo 2 + print 3;
Аноним 12/05/24 Вск 23:41:34 3153596 223
Screenshot 2024[...].png 23Кб, 1890x74
1890x74
>>3153555
Потому что пхп это язык из говна в говне.
Аноним 13/05/24 Пнд 07:58:09 3153769 224
Если стоит домашняя винда, то хуй мне, а не возможность работать с Docker?
Аноним 13/05/24 Пнд 08:09:56 3153772 225
>>3153769
Можешь поставить на Виндовс VMWARE, в него поставить LInux, а в линуксе докер.
Аноним 13/05/24 Пнд 08:16:04 3153774 226
>>3153772
поставить на Виндовс VMWARE
в него поставить Linux
в Linux поставить VirtualBox
в VirtualBox поставить Виндовс
в Виндовс поставить Linux
а в него уже поставить кубер

Зато какой уровень изоляции! Ни один хакир не прорвется!
Аноним 13/05/24 Пнд 09:32:37 3153818 227
>>3153774
Ох, что-то сложно, полегче есть?
Аноним 13/05/24 Пнд 09:34:48 3153824 228
>>3153818
> полегче есть?

Hyper-V
Но на домшнюю виндоуз его не взгромоздить.
Аноним 13/05/24 Пнд 10:33:36 3153899 229
Читаю паттерны проектирования Банды Четырех и не понимаю что имеется ввиду.

Цитата из книги: "Важно также понимать различие между наследованием класса и наследованием интерфейса (или порождением типов). В случае наследования класса реализация объекта определяется в терминах реализации другого объекта. Проще говоря, это механизм разделения кода и представления. Напротив, наследование интерфейса (порождение подтипов) описывает, когда один объект можно использовать вместо другого".


Про наследование интерфейса понял, а вот про наследование класса - нет.

Есть кто может пояснить этот момент?
Аноним 13/05/24 Пнд 11:35:27 3154004 230
>>3153899

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

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

Ну это я так вижу
Аноним 13/05/24 Пнд 12:44:44 3154144 231
>>3153521
Какой другой яп, пиши подробнее. И на какую зп?
Бекендеры идут либо в яву, либо в GO.
Аноним 13/05/24 Пнд 12:47:45 3154150 232
>>3154004
>Да воду льет с заумным видом
Тебе не приходило в голову, что книга написана для другого языка, с другими языковыми конструкциями и вообще другими проблемами и реалиями?

>Наследование интерфейсов - для описания отличных от родителя интерфейсов
>Наследование класса - для описания отличных от родителя классов
Так-то да, а так-то нет. Ноу щит шерлок.

Но вот тебе загадка: есть типы Email и ValidEmail. ValidEmail умеет все что умеет обычный Email, и вообще ничего нового или оригинального в нём нет, все унаследовано. А разница между ними в том, что в базу можно сохранять только ValidEmail, а непровалидированный Email нельзя. https://3v4l.org/hkTDp#v8.3.7
Так вот вопрос: что в данном случае наследуется? Интерфейс, класс или тип?
Аноним 13/05/24 Пнд 12:54:50 3154159 233
image.png 502Кб, 756x892
756x892
image.png 584Кб, 900x732
900x732
>>3153899
>Читаю паттерны проектирования Банды Четырех
Читай это
1. Head first - объяснение
2. Примеры и тесты https://designpatternsphp.readthedocs.io/ru/latest/index.html
3. Wiki - тут годные примеры.
4. Паттерны на канале Немчинского, в самом начале канала, самые старые (у него там 3 курса по паттернам было, в разных курсах есть недостающие паттерны) + на торренте foxminded новый курс по паттернам.
5. Вторая книга - погружение в паттерны, тоже норм.
Есть еще книга зандстры - там годный DI-контейнер, но все паттерны со всратыми примерами и больше путают.
Аноним 13/05/24 Пнд 13:07:38 3154177 234
>>3154150
Для друого языка, конечно
Думаю что наследуюется интерфейс, раз они ничем не отличаются больше
Но буду благодарен если обьяснишь
(я вообще фронтендер)
Аноним 13/05/24 Пнд 13:19:18 3154190 235
>>3154159
Спасибо, анон, за наводки.
Обязательно все гляну.
Аноним 13/05/24 Пнд 13:30:39 3154201 236
>>3154190
Там тот же GoF, если что, только более понятный, а не текст из 90х.
По ссылке и в вики - примеры на PHP.
В книге Зандстры тоже GOF и немного примеров от Фаулера, текст всрато написан, похоже на гугл переводчик. Но один раз прочитать не помешает. Зандстру нужно читать когда уже опыт имеешь более менее, чтобы понимать нахуя то, нахуя это
Аноним 13/05/24 Пнд 13:43:49 3154213 237
Пачаны, хотите скину в тред 2 тестовых и 1 теоретическое, которое мне давали на отклики?
Аноним 13/05/24 Пнд 13:44:23 3154214 238
>>3154213
Вакансии бэк и фуллстек, джун, джун+.
Аноним 13/05/24 Пнд 13:51:18 3154225 239
>>3154213
Кидай конечно заебал
Аноним 13/05/24 Пнд 13:51:50 3154226 240
Аноним 13/05/24 Пнд 13:54:25 3154232 241
>>3152884
Я и пишу, что первый год 40-50к, второй год 80-100к, но т.к. выходим на полставки ради развития в ларавел, то зп делим на 2 и получаем те же 40-50к, но зато на полставки. А в третий год пиздуем в ларавел мидлом за 100-150к уже на фулл ставку, но придётся врать, что работал с ларавел.
Аноним 13/05/24 Пнд 13:54:35 3154233 242
>>3154226
>>3154225
Бэк, джун:

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


- В хлеву живут 10 коров и 20 кур;
- Корова может давать 8-12 литров молока за один надой;
- Курица может нести 0-1 яйцо за одну кладку;
- У каждой коровы и курицы на ферме есть уникальный регистрационный номер.

Реализовать, используя php, объектно-ориентированную систему: прототип сбора продукции. Реализовать структуру классов, задействовать механизм наследования.

Класс фермы (Farm) должен быть автономным, сам вести учёт номеров животных, сбор и подсчет продукции. Решение должно быть расширяемым, добавление новых типов животных и продукции не должно приводить к модификации непосредственно класса Farm.

Система должна уметь:

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

Реализация графического интерфейса не требуется. Реализация хранения данных в БД или файлах не требуется.

Задание рассчитано на проверку навыков работы с ООП.

Способ первичной инициализации списка животных - на ваше усмотрение.

При запуске скрипта main.php в консоли:

- Система должна добавить животных в хлев (10 коров и 20 кур).
- Вывести на экран информацию о количестве каждого типа животных на ферме.
- 7 раз (неделю) произвести сбор продукции (подоить коров и собрать яйца у кур).
- Вывести на экран общее кол-во собранных за неделю шт. яиц и литров молока.
- Добавить на ферму ещё 5 кур и 1 корову (съездили на рынок, купили животных).
- Снова вывести информацию о количестве каждого типа животных на ферме.
- Снова 7 раз (неделю) производим сбор продукции и выводим результат на экран.
Аноним 13/05/24 Пнд 13:54:49 3154235 243
>>3152895
При чём тут 1С и эксперт??? Речь про Битрикс.
Аноним 13/05/24 Пнд 13:58:47 3154243 244
изображение.png 91Кб, 705x552
705x552
изображение.png 45Кб, 685x450
685x450
>>3154225
>>3154226
Фуллстек, джун/джун+

Нужно написать микро-приложение, делающее выборку (копирование статей) из wikipedia во внутреннюю БД, с возможностью дальнейшей навигации и поиска по скопированным статьям:

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

- После ввода ключевого слова и нажатии кнопки «Скопировать» должен производиться запрос к сайту wikipedia.org c поиском статьи по соответствующему слову/словосочетанию (для простоты примем, что оно полностью совпадает с названием статьи в Wikipedia). Запрос и копирование контента может производится любыми спобосами в т.ч. используя MediaWiki API.

- Если целевая статья найдена, то нужно скопировать голый текст статьи (plain text) без тегов в собственную БД с последующим разбором на слова-атомы (любое сочетание символов без пробелов и знаков препинания). Эти данные потребуются для осуществления поиска по ключевому слову (см. ниже).

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

- Поиск должен работать по внутренней БД на основе слов-атомов содержащихся в статье (учитывается точное совпадение, морфология не нужна). Слова-атомы должны храниться в отдельной таблице, связь со статьями осуществляется через специальную связующую таблицу (ID слова, ID статьи, Кол-во вхождений). Результаты поиска выдаются в порядке убывания кол-ва вхождений ключевого слова в статье.

Под словом атомом подразумевается любая последовательность символов [a-Zа-Я0-9]. Для примера, во фразе: «Юрий Гагарин полетел в космос в 1961 году» будут следующие атомы: юрий, гагарин, полетел, в, космос, 1961, году.

- При клике на заголовок статьи, ее содержимое должно открывается в блоке справа (без перезагрузки страницы и без использования iframe).

Обязательно использование следующих библиотек и приемов:
- соблюдение принципа MVC (в случае реализации без фреймворка)
- MySQL: таблицы innodb c внешними ключами
- скрипты должны нормально работать на PHP 8.2 (без вывода каких-либо ошибок при error_reporting = E_ALL)

Данное требования не обязательное, но большим плюсом будет реализация системы на любом php-фреймворке (если есть опыт, то можно взять полноценный фреймворк типа Laravel, если опыта не достаточно, то совет - использовать микро-фреймворк или нативный подход без фреймворка). Также одними из оценочных параметров будет:
- Внешний вид интерфейса, никакой графики рисовать не нужно, но хорошая блочная верстка с соблюдением правил типографики и аккуратным внешним видом будет большим преимуществом. Возможно использование css-фреймворков (как вариант, bootstrap или tailwindcss).

- Аккуратный код (форматирование кода, поддержка стандарта кодирования PSR, комментарии к коду phpdoc). Это один из наиболее важных критериев, просьба обратить на него внимание.
Аноним 13/05/24 Пнд 13:59:37 3154244 245
>>3154150
>Но вот тебе загадка: есть типы Email и ValidEmail. ValidEmail умеет все что умеет обычный Email, и вообще ничего нового или оригинального в нём нет, все унаследовано. А разница между ними в том, что в базу можно сохранять только ValidEmail, а непровалидированный Email нельзя. https://3v4l.org/hkTDp#v8.3.7
>Так вот вопрос: что в данном случае наследуется? Интерфейс, класс или тип?

Интерфейс точно нет, т.к. интерфейсы определяют только сигнатуры методов. ValidEmail является подклассом класса Email. Твёрдо и чётко.
Аноним 13/05/24 Пнд 14:00:23 3154247 246
>>3154233
Вот это хорошая задача. Все бы такое давали. Даже просто посмотреть как кандидат напишет симуляцию времени и уже многое понятно будет.

Есть только один минус. Реальные задачи в сто раз скучнее и нихуя симулировать там не придется.
Аноним 13/05/24 Пнд 14:00:29 3154248 247
>>3154225
>>3154226
Тестовые вопросы.
! Не собес !

#1
В БД mysql есть одна единственная таблица «abc» с полями: id (int), name (varchar), cnt (int). В таблице содержится порядка 10 млн записей. Что нужно сделать, что быстро работали следующие запросы (3 разных случая)? Все остальные факторы кроме скорости чтения не критичны.
SELECT FROM abc WHERE name = 'xxx' AND cnt = yyy
SELECT
FROM abc WHERE cnt = xxx AND name LIKE 'yyy%'
SELECT FROM abc ORDER BY cnt ASC

#2
Как на php можно перенаправить стандартный лог ошибок в свой кастомный файл?

#3
Есть код и запрос к БД, чтобы вы в нем изменили? Почему?:
$DB->query("SELECT
FROM abc WHERE id=" . $_GET['id']);

#4
В БД есть таблица заказов (orders) с полями:
date - дата оформления заказа
customer_name - имя клиента
order_price - сумма заказа


Напиши sql запросы для выборки:
Запрос, который покажет сколько денег принес каждый отдельно взятый покупатель с группировкой по месяцам.
Запрос, который выведет имена клиентов, у которых суммарные покупки за весь период превысили 10 тыс. руб. и одновременно никогда не было заказов менее 500 руб.

#5
Есть две javascript-функции:
function f(a,b) { return a+b }
и
var f = function(a,b) { return a+b }

Есть ли между ними разница? Если есть то какая?

#6
Чем принципиально отличаются между собой условия LEFT JOIN и INNER JOIN в sql? Какой вариант JOIN может дать потенциально больше результатов (строк) и почему?

#7
Вам нужно реализовать консольный php-скрипт на сервере под Unix, который бы выводил каждые 15 секунд фразу «Hello». После вывода «Hello» скрипт всегда завершает работу. Напишите этот скрипт и пошагово расскажите, что нужно сделать, чтобы выполнялись исходные условия.

#8
Напишите на php функцию для распределения рублевой скидки по купону на все товары в корзине пропорционально стоимости товара. На входе в функцию передаются два параметра: размер скидки в рублях (!) и массив из цен товаров, на выходе тот же массив цен, но уже с учетом скидки: distribute_discount(int $discount, array $prices) → return array $prices;
Аноним 13/05/24 Пнд 14:02:13 3154251 248
>>3154243
А вот это уже рак ебаный. Писать приложение ага, делать больше нехуй. "Аккуратно" шлем этих шизиков нахуй.
Аноним 13/05/24 Пнд 14:03:59 3154255 249
>>3154159
У Зандстры там не только паттерны, но и углублённое объяснение пхп, что полезно.
Аноним 13/05/24 Пнд 14:06:13 3154261 250
>>3154251
У компании, от лица которой кидали мне тестовое такой план (они сами написали):
- сначала читают отлик - если норм, то шлет тестовые вопросы;
- если норм тестовые вопросы, то шлют тестовое - сделать мини-приложение;
- если и тестовое норм, то устраивают собес;
- если нужно, то лайвкодинг и потом, мб, тебя возьмут.

Вакансия джун, 40-80к
Аноним 13/05/24 Пнд 14:08:23 3154264 251
>>3154251
>Писать приложение ага, делать больше нехуй
А на работе что делать будешь? Решать задачи про фермеров и подсчет куриц в курятнике?
Аноним 13/05/24 Пнд 14:10:27 3154269 252
>>3154264
Ну на работе платят деньгу, буду делать приложение. А тут сидеть пердеть невесть сколько дней, как бэ я что - раб?
Аноним 13/05/24 Пнд 14:13:27 3154275 253
>>3154264
>>3154261
На работе тебе за РУТИНУ платят ЗАРПЛАТУ. А здесь куча рутины: поднять базу, вебсервер, все это протестить, прокликать. Если делать НОРМАЛЬНО, то это несколько рабочих дней возни.

А в первом варианте, буквально в затравке задачи написано что это РАЗВЛЕЧЕНИЕ. Способ отвлечься от рутины с пользой.
Аноним 13/05/24 Пнд 14:30:11 3154304 254
>>3154261
c зп 40к конечно это сильно
А вилка еще от чего зависит, лол?
Я думаю если прошел тестовое - то 80.
А там видимо как обычно, ты прошел все задания, а потом тебя будут пытаться попускать на 40к

При этом нужно знать:
sql,php oop,mvc,фреймворк,АККУРАТНЫЙ КОД,поднять веб сервер с этим говном, хотя бы немного линуксовые команды
Аноним 13/05/24 Пнд 14:31:27 3154307 255
>>3154248
7 и 8 это вопросы-подъебки. Они к пхп вообще никакого отношения не имеют.
Первый вопрос "как в юникс системе сделать Х?", знание пхп тут не поможет никак.

Второй вопрос вообще из области финансов и бухгалтерии. "Как разделить скидку 17₽ на 3 товара?". Это что-то из разряда: "а в какую сторону округляем дробные копейки?".
Аноним 13/05/24 Пнд 14:31:47 3154308 256
>>3154304
Просто напоминаю, что в 1с можно зайти с улицы на 25-50к не зная абсолютно нихуя. А там спокойно при желании до 150
Конечно ты в меньшей степени будешь технарем, но если вопрос только в бабках - 1с лучше галер
Аноним 13/05/24 Пнд 15:11:06 3154345 257
>>3154232
Не понимаю зачем уходить в Laravel, если оставаясь с битриксом можно получать столько же.
Аноним 13/05/24 Пнд 15:21:11 3154352 258
>>3154345
пацаны из пхп-треда засмеют если узнают что ты битриксойд
Аноним 13/05/24 Пнд 16:42:23 3154478 259
>>3154345
Главное ЗА ЧТО получать. Что непосредственно приходится делать. Насколько это престижно/приятно? Если завтра за уборку толчков заплатят больше, ты пойдешь толчки мыть? То-то же.
Аноним 13/05/24 Пнд 17:01:57 3154498 260
>>3154243
О, я это делал. Не взяли :(
(после этой хуйни перестал вообще тестовые делать)
Аноним 13/05/24 Пнд 17:11:40 3154512 261
>>3154498
А фидбек какой был? Что сказали про твое тестовое?
Аноним 13/05/24 Пнд 17:22:50 3154534 262
>>3154512
Ну исходя из того что я все таки побывал на собесе, тестовое было "более менее". Хотя спустя время(чуть меньше год) смотря на него испытываю стыд.
Аноним 13/05/24 Пнд 17:54:42 3154581 263
>>3154345
За тем, что битрикс вот-вот схлопнется, а с ларавел ты можешь на любой мvc-фреймворк перейти.
Аноним 13/05/24 Пнд 18:06:58 3154604 264
>>3154498
Я тоже делал.
Прочитали сообщение о том, что выполнил тестовое и ничего не ответили.
Аноним 13/05/24 Пнд 18:12:57 3154616 265
>>3154498
>>3154604
А все потому что вот это >>3154233 тестовое даже проверять интересно. Как проводящий собесы говорю.

А эту дрисню >>3154243 и писать пытка, и проверять пытка. Просто имаджинируйте ебло синьора, у которого месяц подряд утро начинается с проверки этой хуйни. Опять же, как проводящий собесы говорю: 99% случаев это никто даже не читает нахуй. Смотрят на пару ключевых вещей, типа кодстайла, array() со скобочками и все нахуй.
Аноним 13/05/24 Пнд 18:14:20 3154618 266
>>3154616
Нахуя смотреть array(), если рубокоп автоматически меняет их по PSR???
Аноним 13/05/24 Пнд 18:18:41 3154630 267
>>3154618
Так откуда они тогда нахуй в коде возьмутся? Значит что-то ту не так.

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

Бесплатный труд никто не уважает. Особенно когда вы лезете как тараканы в бесконечную очередь.
Аноним 13/05/24 Пнд 18:22:56 3154636 268
>>3153596
А как она может возвращать один, если она уже возвращает то что ей передали (строку, число, null)?
Аноним 13/05/24 Пнд 18:36:41 3154660 269
>>3154636
>она уже возвращает то что ей передали
Ну продемонстрируй как print возвращает то что ему передали.
https://3v4l.org/qSStf
Аноним 13/05/24 Пнд 19:02:12 3154711 270
>>3154636
То что ей передали, она выводит на экран. А потом возвращает один.
Можно проверить при помощи var_dump(print ('')).

Тебе нужно на php.net посмотреть описание (сигнатуру) данной функции и в будущем почаще туда заглядывать.
Аноним 13/05/24 Пнд 19:21:54 3154735 271
>>3154144
ну так ты сам расписал можешь еще в шарп попробовать но его контингент на доске самый вонючий... заставляет задуматься
Аноним 13/05/24 Пнд 21:10:31 3154897 272
>>3154581
>За тем, что битрикс вот-вот схлопнется, а с ларавел ты можешь на любой мvc-фреймворк перейти.
Битрикс это тоже MVC, схлопнется скорее Laravel, он существует 13 лет, когда как битрикс уже больше 20.

>>3154478
>Главное ЗА ЧТО получать.
Ты сравниваешь смену профессии со сменой фреймворка, это разные вещи, хотя может кто то реально боится говорить что он программирует на битриксе.
Аноним 13/05/24 Пнд 21:33:56 3154923 273
>>3154897
>Ты сравниваешь смену профессии со сменой фреймворка
Ок. Поправлю аналогию.

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

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

Так понятно?
Аноним 13/05/24 Пнд 21:48:36 3154931 274
>>3128808 (OP)
Где и как искать чиловую работу на пхп где можно проебываться и работать по часу в неделю?
Аноним 13/05/24 Пнд 21:53:46 3154938 275
>>3154923
Если бы мне предложили большую сумму, за работу дворника возле моего дома, то я бы согласился. Все работы хороши, мне бы не хотелось общаться с людьми, которые жертвуют своим временем, что бы по каким то выдуманным стандартам быть круче и лучше. Вот если бы за Laravel больше платили, это другое дело.
Аноним 13/05/24 Пнд 21:58:44 3154941 276
>>3154938
>Все работы хороши
Как по одной фразе понять что додстер ни дня в жизни не работал.
Аноним 13/05/24 Пнд 22:00:17 3154942 277
>>3154308
> не зная абсолютно нихуя
очко ставишь что нихуя?
Аноним 13/05/24 Пнд 22:12:23 3154951 278
>>3154941
Уважение к людям любых профессий это признак того что я не работал?...
Аноним 13/05/24 Пнд 22:18:24 3154960 279
>>3154942
Ставлю и рот и очко
Аноним 13/05/24 Пнд 22:23:03 3154966 280
>>3154951
Нет, скорее "я бы работал дворником и кем угодно, если бы.."
Аноним 13/05/24 Пнд 22:32:00 3154973 281
>>3154966
Я работал дворником до программирования, мне больше нравилось. Придем, в каморке нальем, поедим, разговоры сразу интересные начинались, участок не большой, работы было часто на пару часов. Уходил как отдохнувший, зарядка для тела, и люди приятные.
Аноним 13/05/24 Пнд 23:18:30 3155029 282
>>3154973
Но ты ни дворником не работал, ни программистом. Ты шиз-фантазер.
Аноним 14/05/24 Втр 00:29:58 3155126 283
>>3154973

Чего только не напридумывают тут сидя
Аноним 14/05/24 Втр 01:44:08 3155159 284
>>3155029
Как раскусил? Мне для совершенствования стратегии по наёбу вкатунцов.

27 лвл тнн рнн лист 70к фуллстек битрикс программер
Аноним 14/05/24 Втр 06:06:59 3155198 285
У вас так тоже, вкатуны?
Чуть больше года занимаюсь php и...
Меня постоянно преследует одно негативное ощущение.
Ощущение, что все хуево, все зашло в тупик, нет прогресса в коде.
Я это ощущение так часто ощущаю, что просто игнорирую по типу "Да-да, все хуево, ну и похуй, ебашим дальше".
Но все-таки осадочек есть.
Я не стою на месте, изучаю что-то каждый день.
Понимаю, что часть знаний и умений придет со временем и опытом.
К примеру, вот я тут писал про книгу Банду Четырех.
Я ее читал еще осенью того года.
И тогда я нихуя не понимал.
А сейчас нахожу смысл в этих словах.
Мб я не стал гением ООП, но до меня начинает доходить как правильнее думать.
Аноним 14/05/24 Втр 06:19:26 3155201 286
изображение.png 40Кб, 902x254
902x254
Мечта.
Аноним 14/05/24 Втр 06:20:54 3155202 287
>>3155198
Гений ООП, выше по треду было тестовое с симуляцией фермы. Животные на ферме производят "продукт" с определенной периодичностью. Как реализуешь течение времени на ферме? ООП буквально для этой задачи придумывался - создать объекты и запустить симуляцию. Что по этому "банда питухов" пишет?
Аноним 14/05/24 Втр 06:33:38 3155209 288
>>3155202
Я и не гений ООП, анонче.

Задачу с фермой решал. И тогда еще больше понял, что у меня все хуево с проектированием. Собственно, поэтому я и читаю Банду Четырех. У них в книге (в начале) довольно неплохо рассказывается логика объектно-ориентированного проектирования.
Аноним 14/05/24 Втр 06:37:39 3155210 289
>>3155209
Логика рассказывается с точки зрения банальной эрудиции. Ооп понимается и очень неплохо. Понимаются понятия, определяются определения. Только вот
>Как реализуешь течение времени на ферме?
Где?
Аноним 14/05/24 Втр 06:41:51 3155211 290
>>3155210
Что ты ко мне приебался с этой задачей?

>Как реализуешь течение времени на ферме?
Я ебу?

Вот тебе строка из моего кода:
$productsForFirstWeek = $farm->receiveProductsIn_N_Days(7);

Farm пробегается по массиву со всеми животными (массив объявлен как свойство Farm), считает их продукцию.

И похуй, что хуйня. Сделал как мог.
Мб щас почитаю книгу и сделаю лучше.
Аноним 14/05/24 Втр 06:49:21 3155213 291
>>3155211
>Что ты ко мне приебался с этой задачей?
Пытаюсь понять что там до тебя "начинает доходить". Судя по всему нихуя.

Массив есть, табличка с продукцией есть. Где ООП?
Доярка типа так и подкатывает к корове и грит: ну че давай сразу за неделю выливай молока, я в область на ногточки поеду, отдохну от тебя.
Аноним 14/05/24 Втр 06:54:44 3155215 292
>>3155213
Если я раньше нихуя не понимал, а сейчас нахожу смысл в том, что написано в книге означает то, что я сейчас с ебу возьму и спроектирую классы для любой задачки?
Аноним 14/05/24 Втр 06:57:35 3155216 293
>>3155213
Ты понимаешь разницу между "понять прочитанное" и "уметь применять на практике прочитанное"?
Аноним 14/05/24 Втр 07:01:35 3155218 294
>>3155215
>>3155216
Но объяснить что конкретно ты понял ты тоже не можешь?
Аноним 14/05/24 Втр 07:05:51 3155222 295
>>3155218
Я могу написать, серьезно.
Но я же знаю, что ты меня засрешь.
Аноним 14/05/24 Втр 07:11:13 3155223 296
>>3155222
Ну а сам ты как думаешь?
Задачу ты решить не можешь, применить на практике понятое ты не можешь. Если ты это понятое озвучишь, то тебя "засрут".

Есть подозрение что ты нихуя не понял.
Аноним 14/05/24 Втр 07:14:38 3155224 297
>>3155223
>Есть подозрение что ты нихуя не понял.
Ты моя мама, что так печешься обо мне?

>Ну а сам ты как думаешь?
Я же вижу по твоему гонору, что ты считаешь себя еба-программистом, который считает что вот он-то знает как ахуенно проектировать и писать код, а другие только сошки - делают вид, что знают.
Аноним 14/05/24 Втр 07:21:09 3155230 298
>>3155224
>Ты моя мама, что так печешься обо мне?
Это ведь ты начал рассказывать что ты наконец-то что-то понял.
Я попросил тебя решить тестовую задачу. Ты поплыл.
Я спросил тебя что ты понял. Ты порвался.

>считаешь себя еба-программистом
Еба, не еба, но я задачу создания симуляции фермы решить могу. В ооп стиле. А у тебя эксель получился вместо ооп.
Аноним 14/05/24 Втр 07:25:50 3155235 299
>>3155230
>Я попросил тебя решить тестовую задачу. Ты поплыл.
Смысл мне ее решать, если я еще не дочитал книгу?

>Я спросил тебя что ты понял. Ты порвался.
Ага. Ну, распинусь я перед тобой, скажу какие выводы сделал из текста, ты напишешь "Все хуйня. Ты понял хуево." И толк?
Могу написать свои выводы из текста, если ты простым языком и детально пояснишь где я не прав и почему.

>Еба, не еба, но я задачу создания симуляции фермы решить могу. В ооп стиле.
Так бери с полки пирожок, анонче.
Аноним 14/05/24 Втр 07:30:44 3155243 300
>>3155235
>Аноны я понял
>Что ты понял?
>Не скажу
Каждый раз забываю в каком треде нахожусь. Столько шизиков и ебанашек даже в /b нет.
Аноним 14/05/24 Втр 07:33:49 3155246 301
>>3155243
Эх.
Когда-нибудь я перестану вестись на тебя.
Мне кажется, что ты тот самый анон, который иногда тут поебывает мозги людям в треде.
У тебя одна и та же тактика - начать выяснять профессионализм собеседника, а когда идешь с тобой на конструктивный диалог, то ты сливаешь тему в другое русло.
Вот и тут слил. Реально - хотел бы узнать что я там понял, так согласился бы на мое условие.
Аноним 14/05/24 Втр 07:39:47 3155249 302
>>3155246
Не знаю как там в мире шизов, а в нормальном мире когда что-то хотят узнать - спрашивают. Я спросил. Меня интересовал ответ на вопрос, а не твоя шиза и какие-то выдуманные правила.
Аноним 14/05/24 Втр 10:54:45 3155365 303
>>3155029
Я тебя как то задел? Ты никак не аргументируешь свои слова, это выглядит очень странно.
Аноним 14/05/24 Втр 10:59:56 3155381 304
Если в вакансии есть Ларка, но есть и битрикс, то стоит суваться?
(Из-за ларки, конечно, в надежде, что они дадут выбор писать на ларке, а не битриксе).
Аноним 14/05/24 Втр 11:14:42 3155414 305
>>3155381
Нет, будешь писать на битриксе, а потом как "подрастешь" начнут доверять лару
Аноним 14/05/24 Втр 11:28:14 3155460 306
>>3155381
А может и нет лары вообще,лол
Аноним 14/05/24 Втр 13:00:21 3155623 307
У меня js запрашивает у сервера html-код.
Вместо того, чтобы создавать очередной контроллер для этого или callback в маршрутах, лучше сделать внутреннее API?
Аноним 14/05/24 Втр 13:04:31 3155629 308
Почему так много вакансий на битрикс?
Аноним 14/05/24 Втр 13:18:10 3155647 309
>>3155629
чтобы ты мог работать, дурак
Аноним 14/05/24 Втр 13:27:51 3155663 310
>>3155647
Но я не хочу писать на битрикс. :(
Аноним 14/05/24 Втр 13:40:46 3155680 311
А обязательно перед битриксом изучать тру-фреймворк? Или пох и можно просто сразу заняться битриксом? Мне бы не хотелось тратить драгоценное время на хуиту. Планирую заниматься битриксом до конца жизни либо моей либо битрикса.
Аноним 14/05/24 Втр 14:37:41 3155742 312
Аноним 14/05/24 Втр 18:30:04 3156077 313
Нужно ли знать как работать с папками, все эти mkdir?
Аноним 14/05/24 Втр 19:57:48 3156157 314
Аноним 14/05/24 Втр 20:09:48 3156172 315
Аноним 14/05/24 Втр 20:15:01 3156178 316
Аноним 14/05/24 Втр 21:02:04 3156247 317
>>3156172
А открыть доку и прочитать когда надо будет с папками работать битриксоид не может?
Аноним 14/05/24 Втр 21:46:40 3156284 318
>>3156247
Я курсы смотрю от гикбрейнс пока что. Там ничего про это нет.
Аноним 14/05/24 Втр 22:59:30 3156334 319
>>3156284
А курсы как проходить курсы ты прошел?
Пчел, надо уметь УЗНАТЬ. Понадобилось - узнал. Никто блядь не учит доку, её читаю по мере необходимости.
Аноним 14/05/24 Втр 23:27:25 3156354 320
Аноним 14/05/24 Втр 23:41:47 3156359 321
>>3156077
>Нужно ли знать как работать с папками, все эти mkdir?

Нууу, с одной стороны да. А с другой на собесе не спросят, дадут задачу на это - разберешься
Аноним 15/05/24 Срд 06:01:09 3156431 322
Даже если я работаю с Laravel, я должен выносить sql-запросы из контроллера в отдельный класс-сервис для работы с БД?
Аноним 15/05/24 Срд 06:41:31 3156438 323
Аноним 15/05/24 Срд 06:58:05 3156447 324
>>3156431
Далбаёб, laravel - это mvc фреймворк. Если следовать логике mvc, то всё что относится к работе с БД, все валидации и проч должно сидеть в модели. Как говорят, thin controllers, fat models. Класс-сервис это ты по-сути переизобретаешь модель. Либо ты просто не понимаешь философию mvc.
Аноним 15/05/24 Срд 07:04:00 3156450 325
>>3156447
Ну да, хуево понимаю MVC.
+ Меня смутило, что в Laravel для каждой таблицы создается Модель и класс Модели тут просто посредник между кодом и соот. таблицей. Классы Модели, которые создаются в app/Models, это и есть сущности? Если мое приложение генерирует сущность Post, то я должен использовать класс, который сгенерится в папке app/Models?
И потом его же использовать, чтобы сохранить в БД?
Аноним 15/05/24 Срд 07:08:10 3156452 326
Чем отличный хороший джуновский код от кода миддла/сеньора?
Аноним 15/05/24 Срд 07:24:41 3156456 327
>>3156452
Код мидла/сеньера не выдаст плавающий баг через пару тысяч запусков например
Аноним 15/05/24 Срд 07:58:22 3156463 328
>>3156456
К делу мой пост не отросится, но вот вчера весь день ебался с многопоточностью. Множество тредов обмениваются сообщениями и не должны блокироваться.

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

Синьор.
Аноним 15/05/24 Срд 08:50:51 3156498 329
Допустим такую ситуацию:
Есть класс Service1 и Service2.
Service2 использует методы Service1.
Затем, вместо Service1, мы хотели бы использовать другой класс, например Service3.
Я правильно понимаю, что проблема тут решается тем, что заводится интерфейс, в нем объявляются сигнатуры Service1, в а коде Service2 вместо Service1 прописывается интерфейс в тайпхинте?
Аноним 15/05/24 Срд 09:09:05 3156512 330
Аноним 15/05/24 Срд 09:10:37 3156514 331
>>3156512
Пиши как правильно.
Аноним !6Applef0d2 15/05/24 Срд 09:12:49 3156516 332
>>3156431
>>3156450
>И потом его же использовать, чтобы сохранить в БД?
Можешь создать класс-репозиторий, который будет класть данные в базу. Но все равно для каждой сущности придется делать свой репозиторий, потому что так удобнее этим пользоваться.
Это репозитории в популярном представлении
https://habr.com/ru/articles/248505/
Тут представление человека, который поел говна
https://habr.com/ru/articles/316836/

>Меня смутило, что в Laravel для каждой таблицы создается Модель
Это вроде как одна часть из сути MVC. В БД в таблицах хранятся сущности. В коде сущности хранятся в классах. Поэтому что твои модели, это представители сущностей из таблицы. Ты с какого фреймворка перекатываешься?
Аноним 15/05/24 Срд 09:26:10 3156529 333
>>3156498
Может передать два сервиса или создать сервис4, который работает с сервисом3?

>в тайпхинте
Если в тайпхинте конструктора указать интерфейс, то Di не сможет ведь подставить зависимость. Значит сервис2 ты передаешь в другие методы сервиса1? Если так, то я бы отказался от такого и передавал результат работы сервиса2, а не его самого.
Аноним 15/05/24 Срд 09:44:33 3156533 334
>>3156529
>Если в тайпхинте конструктора указать интерфейс, то Di не сможет ведь подставить зависимость.
Разве Laravel не позволяет связать между собой интерфейс и класс-реализацию? Там вроде есть какой-то метод привязки.
Не то? https://laravel.com/docs/10.x/container#binding-interfaces-to-implementations

>Может передать два сервиса или создать сервис4, который работает с сервисом3?

Это я совсем не понял.
Зачем передавать 2 сервиса, если нужен только один из них?

>создать сервис4, который работает с сервисом3?
Зачем создавать связь между сервисом3 и сервисом4?
Аноним 15/05/24 Срд 09:49:02 3156535 335
>>3156516
>Ты с какого фреймворка перекатываешься?
С сырого php на Laravel.

Спасибо за ответ.
Текст по ссылкам прочитаю позже.
Аноним 15/05/24 Срд 10:05:26 3156553 336
>>3156533
Не щарю в ларавель, но ты планируешь делать так?
$this->app->bind(Интерфейс::class, Сервис1::class);
$this->app->bind(Интерфейс::class, Сервис3::class);

public function __construct(protected Интерфейс $сервис) {...}
Аноним 15/05/24 Срд 10:15:25 3156562 337
>>3156553
Э-э-э...
Короче, чел, все это был теоретический вопрос.
У меня нет пока что практической надобности все это реализовывать.
И то, каким образом это реализуется в Laravel, это вообще отдельное дело. Я больше про логику ООП спрашивал.
Часто в статьях про полезность интерфейса, приводят пример с тем, что нужно новая реализация и для этого подсовывают интерфейс, а не конкретный класс. А потом уже аргументом дают объект определенного класса-реализации. Я только спрашивал правильно ли я понял шаги, которые нужно предпринять для того, чтобы разрулить ситуацию, описанную выше.
Аноним 15/05/24 Срд 10:51:48 3156601 338
>>3156562
>правильно ли я понял шаги
Неправильно. Если тебе нужно поменять используемый сервис, то ты МЕНЯЕШЬ СЕРВИС. Был один - стал другой. Причем тут интерфейс вообще?
Аноним 15/05/24 Срд 13:22:38 3156754 339
IMG202405151321[...].jpg 149Кб, 1080x967
1080x967
На это мы откликаемся?
Аноним 15/05/24 Срд 13:51:50 3156781 340
>>3156754
Я вот дописываю код за 4 программистами, у которых тоже была свобода действий при решений задач. Где-то graphql, где-то простой rest, где-то просто ссылки, которые в гете читают токен и json возвращают. С другой стороны, никто не триггерит отказом пул реквестов.
Аноним 15/05/24 Срд 14:20:05 3156826 341
200078.jpg 16Кб, 416x258
416x258
Какой же у пхп ебнутый синтаксис. Вот здесь например, интуитивно хочется ввести this->$name, но все надо писать наоборот - у тебя метод обращения к переменной пишется как переменная, а свойство которая переменная, надо писать просто по имени. Смотри не перепутай, почему так - да хуй знает, мы ещё не определились у нас свойства класса это переменная, или свойство класса с отдельным модификатором.
Аноним 15/05/24 Срд 14:40:20 3156852 342
>>3156826
Все логично.
Ты обращаешься к переменной класса, а не к значению переменной.

>Какой же у пхп ебнутый синтаксис.
Попиши еще неделю и привыкнешь.
Аноним 15/05/24 Срд 14:43:48 3156854 343
Сколько бы бугурта ни писали про php, а я его всегда буду любить.
Простой, логичный язык (если не лезть в какие-то дебри).
В сравнении с js просто рай.
Как лампово у меня прошло обучение php и как странно обучение js.
ООП в php красивое, логичное, ООП в js какой-то мрак - объекты существуют сами по себе, без классов. Объекты могут пиздить функционал другого объекта, просто объявив у себя свойство prototype, и так уж и быть, можно создать классы.
А в php просто - объявил класс, написал new ClassName() и все, все просто и готово. Или я чего-то не знаю?
Аноним 15/05/24 Срд 14:48:11 3156861 344
>>3156826
А хули ты думал - язык говна.
Как в нормальных языкаш пишется? Да просто "name". Ну на крайняк "this.name", и все вызовы по цепочке через "." - "farm.barn.cow.feed(food)"

Но теперь ты в языке говна. Доллары, закорючки блядь какие-то, побольше слов.
Аноним 15/05/24 Срд 15:15:46 3156898 345
>>3156861
В сишке и в сиплюсишке пишется a->b когда a - поинтер на структуру
Аноним 15/05/24 Срд 15:33:13 3156927 346
>>3156898
>пишется
Или не пишется. Смекаешь?
Аноним 15/05/24 Срд 16:59:26 3157081 347
>>3156927
Ну хочешь, можешь не писать в ООП-стиле. Пиши процедурным. Кто ж запрещает-то, а, другалёчек-вкатунёчек?
Аноним 15/05/24 Срд 17:01:07 3157084 348
>>3156431
По-хорошему у тебя должен быть отдельный слой приложения. В таком случае контроллеры становятся ответственными лишь за работу с http-обертками, сессиями и куки.

Так, например, PostController::create() получает данные от пользователя и делегирует вызов сервису PostService::create(). Сервис пытается создать запись в базе данных и передает управление обратно контроллеру. После чего контроллер возвращает пользователю http-ответ с сообщением об успехе или неудаче операции.

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

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

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

Отдельный доменный слой означает, что вычисления перестали зависеть от фреймворка и ядро приложения можно запустить хоть в Laravel, хоть в Symfony, хоть на самописных компонентах.

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

>>3156447
> fat models
Неактуально для Eloquent. Eloquent модели - это ActiveRecord'ы, по умолчанию ответственные за взаимодействие с базой данных и представление табличной записи в виде объекта. Если дополнительно нагрузить их логикой, получится каша.

Чтобы делать толстые модели, придется либо использовать ORM, реализующую шаблон DataMapper, либо воспринимать Eloquent'овские модели как DTO и транслировать их в непосредственно доменные сущности.
Аноним 15/05/24 Срд 17:47:44 3157131 349
>>3157081
Причем здесь ооп вообще, еблан?
В плюсах есть объект а есть ССЫЛКА НА ОБЪЕКТ. Это не одно и тоже и к ссылке ты как к объекту обращаться не можешь.
Поэтому ты пишешь (*cowREFERENCE).milk или ЕСЛИ ХОЧЕШЬ cowREFERENCE->milk
Это называется ДЕРЕФЕРЕНСИНГ. Очень специфичная штука. А напрямую к свойствам и методам объекта ты обращаешься как и везде cow.milk

Офк в пхп никакого дереференсинга нет. И если в плюсах стрелочка это способ сложную вещь сделать проще, то в пхп это ебучая графомания на ровном месте.
Аноним 15/05/24 Срд 17:52:35 3157134 350
>>3157131
У тебя в плюсах this это референс или ссылка?

мимо
Аноним 15/05/24 Срд 17:55:53 3157138 351
Ну и почему графомания. В перле вообще три символа $, @ %
Аноним 15/05/24 Срд 17:57:16 3157141 352
>>3157138
И тоже кстати $obj->prop
Аноним 15/05/24 Срд 17:58:13 3157143 353
>>3157084
>отдельный слой
>интерфейс взаимодействия
>слой для бизнес-логики
>слой приложения
>реализована в доменных службах
>доменный слой
>ядро приложения
>на самописных компонентах
>доменный слой
>менять стек технологий
>толстые модели
>шаблон DataMapper
>модели как DTO
>доменные сущности
Ну ты и насрал.
Аноним 15/05/24 Срд 17:59:24 3157146 354
нормально делай, нормально будет
Аноним 15/05/24 Срд 18:00:42 3157147 355
>>3157134
this это УКАЗАТЕЛЬ
Вот только в плюсах чтобы обратиться к свойству ВНУТРИ класса this использовать не обязательно, просто обращаешься по имени свойства.
В отличии от пхп говна.

>>3157138
>>3157141
Ну дык самый пиздатый пример для подражания. Надо еще их брайнфака что-нибудь перенять.
Аноним 15/05/24 Срд 18:07:02 3157151 356
>>3156854
Поддвачну. В пыхе можно писать как хуяк-хуяк и вбитрикс и будет все нормалды. Так и можно делать полноценную DDD CQRS залупу и приложения уровня "джавапиздец". Причем джавапиздец получается менее душный чем в самой джаве.
Аноним 15/05/24 Срд 18:12:54 3157155 357
>>3157147
Время было суровое - подражали кому могли. А сейчас же вротпрес не выкунуть ради красивого синтаксиса. Точнее можно выкинуть пхп из вордпреса и будет вордпрес со своим интерпритатором и никому не нужный красивый пыхыпы...
Аноним 16/05/24 Чтв 06:38:51 3157453 358
>>3157084
Спасибо за ответ, анон!
Аноним 16/05/24 Чтв 09:10:13 3157521 359
Что анон думает про анемичную модель?
Аноним 16/05/24 Чтв 09:18:10 3157525 360
>>3157521
Что ее 99% используют по дефолту. Потому что легче так думать : взял данные, побработал данные, положил результат. Рич модель выглядит как притягивание за уши ооп, потому что с точки зрения опыта кодеров главное это фреймворки и инфраструктура, а бизнеслогика лежит где-то на перефирии их сознания.
Аноним 16/05/24 Чтв 11:29:22 3157674 361
>>3156498

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

Они могут зависеть от одного и того же модуля(интерфейса), но прям друг другу дрюкать методы - это ты спагетти хуйню очень быстро наваяешь.
Аноним 16/05/24 Чтв 12:15:35 3157716 362
>>3128808 (OP)
>изучаем язык PHP
>(а также JS/CSS/HTML
Почему такое только в php встречается?
Какую вакансию не открой кабанчик хочет и знания фронта и бека, но платят как за что-то одно.
Нахуй его учить, спрашивается?
Аноним 16/05/24 Чтв 12:40:05 3157751 363
>>3157716
Открой asp.net или ruby или java или nodejs или петухончик свой любимый. Везде определённый процент вакансий с требованием знания вротенда есть. Особенно на асп.нет, где ангуляр нужон. А теперь иногда и реакт. В пхп по крайней мере юзается либо жиквери либо вьюжс, что гораздо легче нежели ангуляр. А в основном и вовсе просто HTML CSS JS, что как бы является неоспоримой БАЗОЙ для любого веб-разработчика.

Какой же ты веб-разработчик, если не знаешь ТРЁХ КИТОВ вебни???
Аноним 16/05/24 Чтв 12:46:46 3157773 364
>>3157751
Правильно, нужно быть человеком-оркестром.
Лучше знать всего по вершкам, чем знать что-то хорошо и углубленно.
Молодец, кабанчик, продолжай дальше!
Аноним 16/05/24 Чтв 13:18:53 3157847 365
Есть у кого-нибудь хороший материал по практике написания тестов на PHPUnit с нуля?
Документацию PHPUnit прочитал.
Хотелось бы материал, где автор от начала до конца проводит читателя и показывает весь процесс написания теста.
Аноним 16/05/24 Чтв 13:27:39 3157873 366
>>3157847
1) Хочешь фичу
2) Пишешь минимальный тест, который не проходит
3) Реализуешь фичу так, чтобы тест проходил
4) Снова переходишь к п.1
Одна фича - один небольшой тест.
Аноним 16/05/24 Чтв 13:50:00 3157903 367
>>3157773
Ну ты можешь плакаться сколько угодно, только правда от этого не изменится. Кабанам нужен специалист, а не звдрот какой-то.
Аноним 16/05/24 Чтв 14:24:39 3157941 368
>>3157873
>Пишешь минимальный кусок говна, который размером в три экрана и проверяет хуй пойми что
>Реализуешь фичу так, чтобы тест проходил
>выкидываешь нахуй
>реализуешь фичу КАК НАДО
>кусок говна из первого пункта надо переписать
>переписываешь
>отвалилось еще десять кусков говна
>забиваешь на тесты хуй
Вот так это все в реальности вышлядит. КОгда тестов становится хотябы сотня - ты большую часть времени тратишь на попытки понять че там написано и хули они все упали ОПЯТЬ
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов