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

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 695 65 176
Клуб изучающих PHP #130 php Аноним 12/01/23 Чтв 19:53:56 2571790 1
image.png 68Кб, 500x500
500x500
image.png 985Кб, 1024x683
1024x683
image.png 973Кб, 1024x768
1024x768
image.png 353Кб, 568x559
568x559
Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

ОП довольно занят, но постарается ответить на все вопросы. Также, ответы и решения задач можно поискать в архиве тредов phpclub.

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

Предыдущий тред был тут: >>2511483 (OP) . Все старые треды есть в архиве: https://phpclub.tech/ (впрочем, иногда он не работает).

С чего начать

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

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL, PDO, работа с таблицами в БД, работа с формами, MVC, git, composer, JS, фреймворки, автоматизированное тестирование. У нас есть задачи для изучения этого:

- для начала прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- установи Апач + PHP (советы выше и ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, PDO, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Laravel/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony или Laravel
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://github.com/codedokode/pasta/blob/master/soft/php-install.md
https://github.com/codedokode/pasta/blob/master/soft/apache-install.md

Может тебе понадобится пользоваться командной строкой, вот гайд https://github.com/codedokode/pasta/blob/master/soft/cli.md

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

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

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

- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://github.com/codedokode/pasta/blob/master/db/databases.md

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1
- Новости IT на англ. https://news.ycombinator.com/
- какой-то древний, устаревший, но большой и на русском справочник по веб-разработке, посоветованный аноном: https://starcat.dp.ua/doc/wdh/

Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492

У ОПа нет аккаунтов и групп вконтакте, в фейсбуке, в твиттере, все "пхп-треды" там поддельные.

Платиновые вопросы

- Почему PHP? Потому что вакансий море, и учить легко.
- Сайт опять упал!!!!! — Не паникуй, а зайди на https://github.com/codedokode/phpbook, нажми зеленую кнопку Clone or Download -> Download ZIP, распакуй на рабочий стол и получи личную копию сайта, не требующую интернетов.
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу (ищи в архиве по слову "устроился").
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.

Я другой ОП
Аноним 12/01/23 Чтв 20:08:18 2571805 2
>>2571790 (OP)
Как можно реализовать перенаправление с site.ru/profile/1, на файл site.ru/profile? Типа пользователь вбивает нужный ему профиль в браузер site.ru/profile/1, где 1 это id профиля, а далее этот профиль обрабатывается в файле profrile.php?
Аноним 12/01/23 Чтв 20:28:51 2571822 3
Какой бук посоветуете почитать по PHP?
От начинающего уровня до адвансет, по ларе можно. Желательно с заданиями.
Очень люблю именно книжный формат
Аноним 12/01/23 Чтв 21:23:27 2571846 4
>>2571805
При помощи htaccess. Хотя я думаю, что можно и c get запросами справится.
Унтерменш 12/01/23 Чтв 21:40:28 2571862 5
Вкатился в тред но не на работку...
Аноним 12/01/23 Чтв 21:42:13 2571866 6
image.png 76Кб, 189x267
189x267
image.png 1662Кб, 1600x1168
1600x1168
Аноним 12/01/23 Чтв 22:57:50 2571896 7
>>2571233 →
>Ещё как есть
Покажешь как оно реализованно? Т.е байтоёбство в чистой пыхе.

>Сходи в ВК
Сходи ка нахуй в интернет и почитай, что есть KPHP

>Про пакетный менеджер и асинхронность тебе уже отвечали
Пакетный менеджер - composer
Асинхронность - реализуемая самой (однопоточной) пыхой.

Вы тут все колитесь, что-ли?
Аноним 13/01/23 Птн 02:04:18 2571991 8
>>2571862
А чего так? После праздников кол-во вакансий подросло, для джунов даже есть, даже БЕЗ битрикса. Правда оффлайн в основном, но что поделать? Полгода-год в офисе, и ты свободен как птица-кодер, работай где хош.
Унтерменш 13/01/23 Птн 09:39:11 2572103 9
>>2571991
Страшно идти на собеседование. Все время кажется, что я еще не готов и нужно сначала пройти все темы, а потом уже откликаться.
Я наоборот хочу хотя бы год-два в офисе поработать. Если возле дома получится найти, то вообще заебись
Аноним 13/01/23 Птн 10:12:33 2572133 10
Снимок экрана о[...].png 123Кб, 810x651
810x651
Снимок экрана о[...].png 11Кб, 685x490
685x490
>>2571790 (OP)
(репост с прошлого треда)
Это вообще нормально что Phpstorm просит по умолчанию fast-cgi -интерпритатор? Почему не FPM?

Первый раз с php работаю, настраиваю phpstorm-локальный сервер. Поставил пак (по уроку)
- sudo apt install php-fpm php-cli php-common php-json php-mysql php-phpdbg php-mbstring php-imap php-dev php-curl php-xdebug
Пришлось еще устанавливать (потому-что шторм ругался)
- sudo apt install -y php8.2-cgi

И еще вопрос, новая версия шторма уровень языка 8.2 поддерживает, или нет пока-что?
Аноним 13/01/23 Птн 13:39:15 2572327 11
>>2571790 (OP)
>Клуб изучающих PHP
За пару дней эту шляпу изучил.
А пидоры тут клуб организовали, неиначе, как для интимных встреч
Аноним 13/01/23 Птн 14:14:02 2572386 12
>>2572327
Ето не клаб а форпост. Сюда иногда набигают питонисты с жсерами, чтобы по ебалу получить от четких пхп поцанчиков.
Аноним 13/01/23 Птн 14:25:00 2572404 13
Аноним 13/01/23 Птн 14:55:24 2572445 14
>>2572404
Битриксоид это лох, который закапывает свою жизнь в болоте этого говна. Курс для разработчиков, но он тебе мало поможет на практике там все пилят костыли разной степени всратости потому что чаще всего бизнес логика выходит за пределы взглядов на жизнь разработчиков этой хуйни. На работе предстоит натягивать верстку на говнокод, пилить свои говнокомпоненты, наебывать заказчика и постоянно колупаться в админке как веб-мастер из нулевых.
Учи сразу ларавель и английский
Работал с этой хуйней первые 8 месяцев когда вкатывался
Аноним 13/01/23 Птн 15:12:53 2572475 15
>>2572445
Сейчас мне нужно изучить именно битрикс, поэтому спрашиваю.
А есть варик без опыта вкатиться в LAravel на фриласн?
Аноним 13/01/23 Птн 16:43:56 2572587 16
best-guilty-ple[...].jpeg 99Кб, 1877x983
1877x983
>>2572133
Анончики, расскажите же ну, вы тоже PHP-CGI Server в шторме используете, или я один такой лох?
Аноним 13/01/23 Птн 16:49:06 2572598 17
Аноним 14/01/23 Суб 03:31:10 2573269 18
>>2572445
Ну видишь, ты же вкатился. Значит и я так же вкачусь. Да, битрикс кал, но зато сразу на удаленке, еще и 30к/мес, а в моем селе такие бабки получают только люди проработавшие 3-4 года+, выше 35-40к тут только начальники. Потом через полгода-год перекачусь на "тру"-фрейворк, наверное на лару.
Аноним 14/01/23 Суб 11:07:41 2573402 19
>>2573269
Он имеет ввиду что потратишь время. И понимание как правильно программировать, сейчас везде требуют понимание ооп, solid и тд. Проекты делают со ставкой на расширяемость. От себя скажу, битрикс это очень необоснованно тяжелый фреймворк, магазины на нем у меня даж с рабочего компа (и с некоторых телефонов) не открывались, с чего я кекал, оперативку или проц нахлухо сажает - просто сайты не открываются. А для бизнеса важны такие вещи как CRP, FCP, RAIL (если коротко это скорость и реакция интерфейса, скорость загрузки на стороне клиента). Лучше выдрочить html5/css конкретно, и потом в нормальный фреймворк лезть. Ты плохому только голову набьеш, изучая битрикс и не дай боже 1С(который с ним связан). 1С можно и к laravel например прикрутить, но это уже другая история.

Мало того, скоро на go полностью или частично перелазить будем, в РФ он приживается, судя по всему - и на эту работу часто требуют хороший опыт с PHP. Ну если ты хочешь стать кибер-таджиком, которого ни заказчик свинорылый не будет уважать, ни другие программисты - это конечно твое дело. Кто-то же должен толчки мыть как говориться.
Аноним 14/01/23 Суб 11:42:53 2573428 20
>>2573269
А можно сразу вкатываться в тру фреймворк и не тратить время на говно
Аноним 14/01/23 Суб 13:55:12 2573546 21
>>2573402
>магазины на нем у меня даж с рабочего компа (и с некоторых телефонов) не открывались, с чего я кекал, оперативку или проц нахлухо сажает - просто сайты не открываются

Чел, ну ты как-то совсем не шаришь. В том же и смысл, что это говно из коробки может поднять любая домохозяйка. Но оно будет еле шевелиться. Вот тут и нужны ПОГРОМИЗДЫ 1С. Это как демо-версия, поднимающая продажи лучше любой рекламы. Популярность есть, база уже готовых решений есть, работы уйма. Да любая макака с правильным фреймворком сто раз успеет от голода сдохнуть, пока битриксогосподин будет от лишних бабок отмахиваться.
Аноним 14/01/23 Суб 14:20:58 2573580 22
>>2573546
1C это десктопное приложение, с битриксом он не связан. 1с 'программист' пишет всякие модули на русском языке для бухгалтерш в основном.

Тебе от 1С нужно только мелкие данные типа остаток товаров и цены, это можно и так отправить по http, на любой твой фреймворк.
Сам битрикс написан на корявом php/js на сколько мне известно. И копаться во всем этом дерьме мне например гордость не позволит, я хрчу любить свой язык, и уважать своих клиентов.
Аноним 14/01/23 Суб 14:48:03 2573603 23
Снимок экрана о[...].png 40Кб, 799x272
799x272
>>2573546
Вот пример по запросу на битрикс на hh(пикрил)
> — Увеличение скорости загрузки сайта, обеспечение бесперебойной работы сайта при высоких нагрузках;

Это уже смешно, какой нахуй highload и быстрота интерфейса на битриксе? Это задание из разряда "чисти унитаз вилкой". И когда я слышу Jquery - сразу у меня реакция либо молча развернуться и уйти, либо узнать как дохуя платят или нет, потому что за легаси браться я буду только в хорошей компании и за хорошие деньги.
Они там фантазируют, и Vue им подавай, и spa наверное хотят и быструю загрузку и хайлоад. Это же просто детские фантазии, из разряда что у меня есть кнопочка "сделать пиздато" и она у всех программистов есть
Аноним 14/01/23 Суб 17:17:45 2573826 24
>>2572587
Какая блять разница, что ты используешь в шторме? Это же максимум для дебага или запуска скриптов используется и обычного CGI для этого более чем достаточно.
А проекты в наше время разворачиваются в докерах как правило.
Аноним 14/01/23 Суб 19:12:31 2573940 25
Как генерировать определенное кол-во чисел в заданном диапазоне,но чтобы они не повторялись за один проход.
язык php
Аноним 14/01/23 Суб 19:41:33 2573963 26
>>2573940
Два варианта:
1) они должны быть сгенерированы не случайно, а по какому-то алгоритму, гарантирующему неповторяемость. Самое тупое это инкрементом, повторяться точно не будут ;) Ну или к примеру есть такая штука, как uuid (хотя это не совсем число, но ты понял), шанс повторения крайне низок. Хотя, я сейчас подумал, у тебя же известное количество чисел из диапазона, так? Ну так и разбей диапазон на n интервалов и генерируй случайные числа уже внутри них. Повторяться не будут точно, но "случайность" тогда будет не совсем случайной всё же.
2) либо после генерации убеждаться, что таких чисел ещё не сгенерировано, для чего нужно хранить уже сгенерированные числа в некой структуре, подходящей для быстрого поиска. В php вариантов по сути и нет, юзай хэш мапу, то бишь, ассоциативный массив. Сгенерировал число, проверил нахождение его в массиве -и или записал в массив или перегенерировал.
Аноним 14/01/23 Суб 20:19:44 2573995 27
>>2573963
Первый вариант я нихрена не понял,тк новичок
Аноним 14/01/23 Суб 21:08:11 2574051 28
>>2573995
Гуглить видимо все не научишься тоже?
Мимопроходил
Аноним 14/01/23 Суб 21:59:17 2574092 29
>>2573603
>>2573580
>>2573402
>>2573428
>>2573546
Понятно, битрикс это кал. Но у меня на собеседовании на неоплачиваемую стажировку в Ylab спрашивали про дизайн паттерны, про mvc, ооп, про теорию бд типа что такое нормализация, денормализация, были вопросы по запросам sql, ну и конечно простые вопросы по синтаксису пхп.

Вот если они такие вещи спрашивают, значит они норм разрабы? Или нет? Я просто думал что дизайн паттерны и теория бд это вообще не про битрикс, я думал там хуяк и готово, не надо в такие подробности вдаваться. Ну выучил битрикс орм, инфоблоки да их mvc-битрикс и всё клепай на здоровье, разве не так?
Аноним 14/01/23 Суб 22:20:38 2574114 30
>>2574092
Говорят на собесах все профессионалы, а когда устроишься - обомлеешь какая тупая контора

Ну если начал, работай. Относись как к работе, просто я бы психологически такое не вывез, для меня кодить это труд, это много энергии забирает, а кодить говно не могу. Хз, долго ли вообще на этой параше (битриксе) можно работать. Это просто велосипед на велосипеде, при том быстро-устревающий. Все хотят магазы типа озона или wb, кому нахуй усрался этот битрикс. В рф ничего хорошего не делают сами, фреймворки и новые языки это выход из ямы, эволюция читай, а поддерживать это преступление против природы, называемое битрикс или 1С только шизы могут.
Аноним 16/01/23 Пнд 13:06:59 2575825 31
Аноним 16/01/23 Пнд 13:09:06 2575833 32
>>2572327

Наверно разочарую тебя, но это клуб именно для изучения PHP.
Аноним 16/01/23 Пнд 13:12:52 2575845 33
>>2573603

Я подозреваю, что под "увеличением скорости работы" там подразумевается прикручивание кеша страниц (не работает для авторищованных пользователей, а также вызывает проблем с устареванием кеша, что обычно решается кнопкой "сбросить кеш") + может быть какой-то склеивальщик статических файлов в многомегабайтный JS + CSS вместо отдельных файлов на каждый раздел.
Аноним 16/01/23 Пнд 13:14:52 2575854 34
>>2573603

> и spa наверное хотят и быструю загрузку

Сколько я не видел SPA, там почти всегда медленная загрузка: вместо того, чтобы показать сразу контент, пользователю показывают круг, потом грузят мегабайты яваскрипта, от которых почтенный проц скрипит и греется, а потом грузят данные из 10 API по очереди.

Хотя SPA может дать преимущества, такие, как поддержка работы оффлайн, на практике он почему-то только замедляет загрузку и иногда ломает навигацию.
Аноним 16/01/23 Пнд 13:17:04 2575865 35
>>2573940

Есть пара вариантов:

1) если чисел немного, то сделать из них массив, перемешать и взять первые N элементов

2) если много, то запоминать выпавшие числа, и, если они выпадут снова, то генерировать их заново
Аноним 16/01/23 Пнд 13:52:40 2575963 36
>>2575845
А кеш через php(или js) нельзя чистить?
Например при новой сессии?

Или доступ к браузерному кешу вообще заблокирован? (знаю что в html-api вроде полный доступ к local storage/session storage/cookie есть)
Аноним 16/01/23 Пнд 13:56:40 2575965 37
>>2575854
А не спа типо медленной загрузки не бывает. Полчаса висит белая пустая страница, а потом хлоп - говно из БД прилетело. Причем здесь спа? Ты наверно просто вообще нихуя не видел и не с чем сравнивать.
Аноним 16/01/23 Пнд 13:56:44 2575966 38
>>2575865
Нужна шафл функция
Аноним 16/01/23 Пнд 14:21:20 2575993 39
>>2575966
берешь постое число p большее чем тебе надо сгенерировать последовательность, берешь первообразный корень q по модулю p и вычисляешь
q1(mod p), ..., qp-1(mod p)
Аноним 16/01/23 Пнд 14:22:24 2575995 40
>>2575993
Я не шарю в такой математике
Аноним 16/01/23 Пнд 14:24:35 2576001 41
>>2575865
>2)
При объеме выборки -> генеральной совокупности время выполнения -> бесконечности.
Аноним 16/01/23 Пнд 14:45:35 2576031 42
>>2575995
Cтепени еще не проходили? Пиздец, уже третьеклассники во вкатуринг пришли, скоро в 15 на пенсию отправлять начнут.
Аноним 16/01/23 Пнд 15:14:14 2576092 43
>>2576031
Проходили,я но я плох в этом
Аноним 16/01/23 Пнд 15:17:58 2576099 44
>>2576092
Короче, умножаешь число на самого себя, а в качестве результата на итерации берешь остаток от деления произведения на другое число. Только нужно нагуглить пару чисел q и р, чтобы последовательность хоть немного походила на псевдорандомную.
Аноним 16/01/23 Пнд 17:18:41 2576256 45
Аноним 16/01/23 Пнд 17:37:11 2576279 46
Аноним 18/01/23 Срд 02:57:08 2577899 47
Проработал на первой работе год, теперь ищу новую работу, но планирую в резюме указать два года опыта, дабы проще в поиску было и зп побольше. Насколько это вообще действенно и как меня могут раскрыть, если к тех вопросам я хорошо подготовлюсь? Расскажите мб кто делал подобное
Аноним 18/01/23 Срд 09:22:31 2578000 48
>>2575965

Покажи быстрый SPA без мегабайтов JS. Сколько я не видел SPA, они все тормозные. Сбербанк - грузится медленно, например.

Быстрая загрузка без SPA бывает часто, например, https://news.ycombinator.com/ отдает главную за 183 мс, и это при том, что он в США. То есть из этих 183 мс больше половины это пинг до сервера.

Очевидно, что SPA при прочих равных медленнее, чем отдача с сервера готового HTML. Так как SPA нужно загружать тяжелое JS приложение, делать REST запросы на выборку данных итд. Это конечно можно оптимизировать и "впечь" в страницу, но тогда это будет уже не совсем и SPA.

SPA имеет смысл для "приложений" с высокой степенью интерактивности, например, электронные таблицы, графический редактор, мобильное приложение, где надо прокручивать ленту с картинками и лайкать их, и тд. Для обычного сайта со страницами или магазина он больше мешает, чем помогает. А глупцы этого не понимают, не понимают, что бывают разные типы сайтов и просто думают ,что SPA всегда лучше чем не SPA. Этим они лишь демонстрируют свою глупость.
Аноним 18/01/23 Срд 09:23:05 2578001 49
>>2575963

Кеш на сервере, чистить можно, но тогда теряется его смысл.
Аноним 18/01/23 Срд 09:25:21 2578003 50
>>2575993

В твоем варианте последовательность чисел всегда будет одинаковая и не очень-то случайная. Хотя в задаче ничего не написано про случайность. Но если случайность не нужна, то проще сгенерировать последовательность 1..n, чем заморачиваться с поиском простых чисел, что само по себе нетривиальная задача с огромной сложностью.
Аноним 18/01/23 Срд 09:30:43 2578006 51
>>2576001

Возможно, что и так. Тогда можно сделать альтернативный алгоритм: сделать массив чисел, брать из него случайное, и удалять его из массива. Тут сложность будет O(N × M) в худшем случае, если не оптимизировать поиск/удаление из массива.
Аноним 18/01/23 Срд 09:31:49 2578007 52
>>2576099

Есть линейный конгруэнтный генератор, он похож по принципу, но не использует возведение в степень, а лишь умножение.
Аноним 18/01/23 Срд 10:11:44 2578036 53
Есть php файл, воткнул в него html код с фронтом от бутстрапа, он работает и показывается в браузере, вот только сам php нет, пробовал и через include разсметку подключать - она есть а бэка нет. Из-за чего такое?
Аноним 18/01/23 Срд 11:39:56 2578121 54
>>2578036
Ну у тебя вебсервер-то есть?
Аноним 18/01/23 Срд 13:00:10 2578232 55
>>2578036
У меня весь мой проэкт в инклюдах и рекверах
Аноним 19/01/23 Чтв 13:20:27 2579440 56
Мертвый тред,скоро будет как руби
Аноним 19/01/23 Чтв 17:38:22 2579773 57
image.png 326Кб, 1165x777
1165x777
Два Ч, спешу поделиться радостью! 7 лет ждал вката в программрование. Всё это время учил PHP (psr-*), дрочил алгоритмы, разные фрэймворки... ну короче, я джуниор битрикс разраб!

Спасибо тому анону, что 7 лет назад уговорил меня уйти с работы и заняться самообразованием. Это время прошоо незаметно. Джун в 35 это нормально.
Аноним 19/01/23 Чтв 19:05:44 2579930 58
000034349056.Jpeg 128Кб, 600x598
600x598
Аноним 20/01/23 Птн 00:08:02 2580239 59
>>2579440
Вот кстати да, где-то во времена выхода php7 мне казалось, что пыха не умрет вообще никогда, но сейчас что-то уже такое назревает. Слишком много новых языков, слишком динамически всё развивается, слишком устарел дизайн самого php.
Джуны и прочий аутсорс уйдёт в голанг. Да и в целом я что-то смотрю, почти всё, что возможно, переписывается с php на go, даже странно, почему так
Ну и джуны может в питон, что-то он прям активно продвизается всякими говноскиллбоксами
Геи в nodejs
Копораты за $$$ так и останутся сидеть на джаве и шарпах
И тп.

Будет как с руби, легаси есть, какой-никакой движняк есть, а треды мертвые и тому подобное околоболото.
Полной и окончательной смерти конечно не будет, но только потому, что её в принципе не бывает, единичные решения можно найти на любом существовавшем языке, от фортрана до делфи. Кроме хаскелля, лол.
Аноним 20/01/23 Птн 00:27:19 2580249 60
>>2580239
>Слишком много новых языков
Кек, и че там слишком много такого появилось за последние несколько лет?
Аноним 20/01/23 Птн 00:46:19 2580257 61
>>2580239
>Джуны и прочий аутсорс уйдёт в голанг
Земля металлом этим джунам.
Аноним 20/01/23 Птн 10:03:58 2580395 62
>>2580249
Ну эликсир например. Также руби набирает популярнось.
Аноним 20/01/23 Птн 10:06:52 2580397 63
16741574125000.mp4 5510Кб, 1280x720, 00:00:24
1280x720
Аноним 20/01/23 Птн 13:40:07 2580664 64
>>2580395
Бля, то руби сдох, то опять набирает популярность. Вы определитесь уже
Аноним 20/01/23 Птн 17:46:49 2581045 65
Аноним 20/01/23 Птн 18:58:10 2581136 66
При асинхронных запросах скрипт должен быть отдельный под каждый запрос? Или в тот же самый можно вызвать, откуда идет запрос и там же его обрабатывать?
Аноним 20/01/23 Птн 19:24:43 2581173 67
>>2580239
За питоном ничего не стоит
Аноним 20/01/23 Птн 21:32:45 2581308 68
>>2581136
Рассылаешь пачку запросов и ждешь ответы, какие скрипты?
Аноним 20/01/23 Птн 21:40:11 2581317 69
>>2581308
Если запрос идет к этому же серверу. Асинхронно там в таблице данные поменять например.
Аноним 21/01/23 Суб 17:19:21 2581989 70
>>2580249
Kotlin перестал быть экспериментом и теперь уже де факто стандарт в мобилках и серьезно наступает на бекенды.
Rust медленно завоёвывает популярность, у него другая ниша относительно php, но хайлоад и хайлоад-корпораты будут уходить туда (ну или сначала в го, а потом туда).
Про го уже всё сказано сто раз, это отличный компромисс между отличным перфомансом и простотой/уровнем входа. Сам язык мне может и не очень нравится, но просто по моему опыту, целая куча компаний с кодом php находятся в переезде на него, хотя бы под соусом "микросервисов". То есть, вижу сильный тренд php->go, но вообще не вижу чтоугодно->php.
Java и C# тоже развиваются, особенно шарпы. Корпораты с них никогда не слезут, а с новыми свестелками (да даже с появлением и популярностью сраного spring boot) всё больше проектов просто сразу начинается на них.
Typescript и всякие эксперименты типа deno тоже становятся всё популярнее.

Понятно, что явного конкурента нет и пыха не умрет в ближайший год или даже пять лет, загнивание может длиться годами.
Я скорее говорю о том, что пыха была хороша как простой и нетребовательный к разработчикам язык, чтобы делать дело, отсюда и всякие CRM на нём, и бложеки, и тд и тп.
Сейчас же есть уже куча языков или сразу простых, или с упрощающими жизнь фичами, нет такого копроративного ада, что был лет 10 назад. И это убивает "уникальность" пызи из-за которой он и был так популярен.
Теперь пыха это просто язык, "один из". Причем даже не самый модный, далеко не самый. А это означает, что новые проекты будут писаться в основном на модных, а php будет жить в основном в виде поддержки легаси, ну и фанатиков. Ещё не смерть, но уже и не жизнь, так, анабиоз.
Аноним 21/01/23 Суб 17:21:02 2581990 71
>>2581989
TLDR раньше был простой php и сложная страшная джава.
Сейчас есть простой go, простой nodejs (точнее нубы так думают) модный kotlin, модный c#, супер модный rust и тд и тп. И простой немодный php.
Итог немного предсказуем.
Аноним 21/01/23 Суб 17:31:27 2582001 72
>>2581990
Сейчас понабегут люди, которые воспримут мои слова о том, что пыха слабеет на свой счет и начнут спорить просто из чувства несправедливости.
Так вот, ребят, вы -это не язык, не принуждайте себя. Исчезнет один - пересядете на другой, вы ж не тупые. Язык это просто инструмент, и когда вам говорят, что ваша дрель начала хуже работать, вы не спорите, а меняете её на любую, какая понравится.
Аноним 21/01/23 Суб 17:41:03 2582011 73
>>2582001
Самое время влетать в пхп. В течение 2 лет изучаете го. Через эти 2 года пересаживаетесь на смежный проект. Через год работы на смежном проекте полностью переходите на го. Вот и всё. Ну еще можно пойти учиться, да и сразу устроиться в "крутой" стек. Но мне кажется это потеря времени, да и пхп знать надо любому веб-разрабу.
Аноним 21/01/23 Суб 18:55:52 2582117 74
>>2581990
> nodejs
это платформа,а не язык
Аноним 21/01/23 Суб 20:34:49 2582218 75
>>2582011
> пхп знать надо любому веб-разрабу.
Пиздеж, не надо. Можно знать вообще любой язык и это будет нормально. Я знаю кучу очень сильных инженеров, которые про php только слышали.

> Ну еще можно пойти учиться, да и сразу устроиться в "крутой" стек. Но мне кажется это потеря времени
Лолчто. Потеря времени это как раз тратить лишние два года
Аноним 22/01/23 Вск 06:57:12 2582479 76
>>2582218
Что здесь забыл, если такой умный?
Аноним 22/01/23 Вск 10:27:35 2582584 77
>>2581989

Ошибки в твоих рассуждениях:

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

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

> хайлоад
Это (цифра с потолка) 1% проектов, ничтожная доля рынка. Никому не нужен твой хайлоад. Битрикс, например, намного востребованнее.

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

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

> Java и C# тоже развиваются
Их проблема (как и PHP) в том, что они поддерживают совместимость и ты не можешь изучить просто Java 17. Тебе заодно надо изучать легаси из всех предыдущих 16 версий, так как оно может встретиться. Мне не очень нравится это совместимость, нужно в определенный момент просто выбрасывать легаси и переделывать язык с нуля.

> Сейчас же есть уже куча языков или сразу простых, и
Приведенные тобой языки не простые и их вряд ли освоит вкатывальщик. Странно, что ты не привел Swift, он подходит под твои требования гораздо лучше чем этот энтерпрайзный хлам.
Аноним 22/01/23 Вск 10:30:14 2582590 78
>>2581990

Твое мнение подтверждается ли статистикой вакансий на hh без опыта?

Извини, но я статистике доверяю больше, чем анонимным экспертам с форумов с картинками.
Аноним 22/01/23 Вск 10:46:38 2582605 79
>>2582584
>пхп круто потому что он для бедных, для далеких от айти домохозяек и дегенератов, которые не способны изучить что-то сложнее
Это как тебя бы защищали словами "Отстаньте от юродивого! Как вам не стыдно!".
Ахуенная защита пхп! Если бы ты адвокатом работал по уголовным делам, прокурор бы на суде офигевал и начинал защищать подсудимых от тебя.
Аноним 22/01/23 Вск 12:06:31 2582660 80
Хватит холиварить. Лучше чекайте мою придуманную регулярку для проверки моб. ном. телефона:

^(([+]\s7)|(8))(\W[0-9]){10}$
Аноним 22/01/23 Вск 12:07:29 2582663 81
Звёздочка исчезла. Амбу чини хули ты вобще хоть чтото делаеш на своём тугом сайте кроме как добавлять тупые всратые капчи????>>2582660
Аноним 22/01/23 Вск 13:48:20 2582846 82
>>2582605
А вдруг этот анон был адвокатом? Но потом его сын загадал желание, чтобы папа не мог врать. Желание сбылось. И теперь анон адвокат не может врать?
Аноним 22/01/23 Вск 14:21:35 2582915 83
>пхп круто потому что он для бедных, для далеких от айти домохозяек и дегенератов, которые не способны изучить что-то сложнее
ну так анон же про это и говорил? Что для бедных есть модный го и мб другие языки, а для богатых пхп это не лучший выбор?
Аноним 22/01/23 Вск 15:07:44 2582996 84
>>2582915
Хз, чисто посмотрев украинский рыночек я сделал вывод, что ПХП достаточно хороший выбор для быстрого вката. Даже сказал бы, единственный если ты джун. На условном вротенде 500 человек на вакансию, на любом бекенд ентерпрайсе по 100+-, а тут Пыха с самым большим количеством вакансий и 10-20 откликами.
Аноним 22/01/23 Вск 16:13:01 2583085 85
>>2582996
Откликов поменьше, вакансий побольше, но на удаленке почти та же ситуация, что на любом стеке. Вместе 500 откликов увидишь 200-300. А вот в офисе да, действительно 10-20-30 в зависимости от милионника. Если дс, то может и до сотки дойти.
Аноним 22/01/23 Вск 16:36:55 2583142 86
>>2582996
Ну и ты сам подумай, что вообще означает много вакансий с 10-20 откликами. Что там придется делать и чему ты там научишься. И кто там работает.
Скорее всего это говноаутсорсы на говносрмках с бывшими строителями в сотрудниках, которые тебя не научат ничему хорошему.

Количество почти всегда противоположно качеству, особенно в плане работодателей.

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

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

Я к чему это всё написал, где черт возьми ваше честолюбие? В какой момент для вас "легко найти работу айти-бомжом" стало рассматриваться, как вариант?
Аноним 22/01/23 Вск 16:59:28 2583211 87
>>2583142
>Я к чему это всё написал, где черт возьми ваше честолюбие? В какой момент для вас "легко найти работу айти-бомжом" стало рассматриваться, как вариант?

Да, действительно, обычно об этих конторах ещё отзывы паршивые.

Лично за себя отвечу.
Очевидно на говноработы идут не из хорошей жизни. Для меня найти работу в той области, куда я хочу вкатиться просто невозможно ни по времени ни по средствам, ни по вводным. Конкурировать с другими вкатунами просто не вижу перспектив, всегда буду в пролёте среди таких же но всегда немного лучше меня. На 30 вакансий(из которых большинство с 1 годом работы(знаю) и аппер интермедиат инглишем, много из которых даже не на удалёнке, когда я в селе живу) по всей Украине(мобилизация). Даже резюме несчего состряпать.
Сидеть сложа руки? Считаю лучше попытаться отработать на говноработке год, потратить на себя немножко денег и с уже полученным опытом, с прокачанным инглишом перекатиться в куда получше место и на лучший стек.
Аноним 22/01/23 Вск 17:04:59 2583230 88
>>2583142
В любом случае, скорее всего если не найду работу, потрачу этот год ниначто буквально. Или 100 откликов, и ситуация в стране, когда вакансий стаём все меньше и меньше - не так страшно как мне кажется? Я просто не опытный, могу чушь нести.
Аноним 22/01/23 Вск 18:15:05 2583346 89
>>2583142
С каких пор laravel/symfony вакансии стали нереспектабельны? На них те же 20-50 откликов в провинциях. На удаленке частенько появляются вакансии, пусть и по 300 откликов, но в пхп тенденция такова, что найти шарящего человека здесь сложнее, чем в java/spring или .net'e.
Аноним 22/01/23 Вск 19:01:47 2583423 90
image.png 40Кб, 817x206
817x206
>>2583346
В Украине как я понимаю рынок всё таки другой немного. В провинциях нет вообще вакансий, либо я не знаю как их искать, лтбо не знаю что ты имеешь ввиду под провинцией. А на удалёнке не то чтобы много откликов.
Да и ЗП, про которые выше анон написал, таких низких для лидов/синьоров нет.
Аноним 22/01/23 Вск 19:16:09 2583450 91
image.png 150Кб, 854x763
854x763
Решения задач по порядку:
https://onlinephp.io/c/92722 - проверка и исправление моб. номера
https://onlinephp.io/c/984d2 - цензура
https://onlinephp.io/c/f60fa - вытащить email'ы из текста
https://onlinephp.io/c/b8b62 - grammar Nazi
https://onlinephp.io/c/03ff6 - grammar Nazi replace

Если честно устал даже. Вроде сейчас кажется всё простым, но когда решал было не очень просто. Решения конечно не совсем полные, но и описания заданий тоже не до конца точны, как мне показалось. Спасибо ОП'у за такой чудесный туториал. Пока нигде ничего лучше я не видел. Завтра продолжу изучать и решать задачи.

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

вкатун в PHP 26 лвл тнн рнн сыч шиз
Аноним 22/01/23 Вск 19:32:34 2583495 92
>>2583450
В мыле не стал искать "+", т.к. вроде в мылах не бывает плюсиков. С другой стороны, какая разница? Это же просто задание... Ну да ладно, там ничё сложного вроде, докинуть к точке и черточке еще "+".

По поводу задания граммар наци - как выводить ошибки? Вот например есть текст "Ты умный?Шызанутый но умный.". Как сделать так, чтоб регулярка вытащила и ошибку, где пробел пропущен, и ошибку, где ШЫ вместо ШИ, и ошибку, где нет запятой?

Просто в задании ведь написано "выводить кусок текста". Но для того, чтоб вывести кусок текста, мне приходится написать \\S+[,.;:!?]\\S, либо через {N, N} обозначить количество символов с двух сторон. Но в таком случае, регулярка найдет сначала самую первую слева ошибку, там, где нет пробела после знака вопроса. Затем она вытащит мне сразу, скажем, по 20 символов слева и справа от этой ошибки, а там ведь еще и другие ошибки есть! Но они не будут учтены, а просто пойдут в текст первой ошибки.

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

Сорри, если показался грубым. Я не наезжаю или еще что, просто... просто вот так пишу наверной!
Аноним 22/01/23 Вск 20:50:32 2583637 93
>>2571790 (OP)
>Знание REST API будет плюсом.
В REST API страница смотрит на запрос, который был ей отправлен, url, далее она из этой информации либо добавляет(POST), либо обновляет (PATCH), либо показывает (GET) информацию, и т.д. Что еще нужно знать о REST API? на juniour?
И можете, пожалуйста, поподробней сказать, что это такое?
header("Access-Control-Allow-Origin: ");
header("Access-Control-Allow-Headers:
, Authorization");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Credentials: true");
header("Content-type: application/json; charset=UTF-8");
Аноним 22/01/23 Вск 21:37:04 2583670 94
>>2583637
К сожалению тебе еще на стажера рано. Изучи хотя бы минимум. Не по двачу.
Аноним 22/01/23 Вск 21:40:47 2583672 95
Аноним 22/01/23 Вск 23:18:07 2583757 96
Аноним 22/01/23 Вск 23:43:08 2583795 97
>>2583211
> и с уже полученным опытом
> с прокачанным инглишом
Ошибка находится вот здесь. Нет в таких местах никакого опыта и никакого инглиша. Одно копание в, гхм, веб-навозе.
Это примерно как нанял бы ты врачом чувака, который помогал в индийском морге вскрывать трупы бомжей? И много бы у него было скиллухи после такой работы вообще?

>>2583346
Сами по себе фреймворки норм и на них встречаются нормальные вакансии. Но сам фреймворк мало что значит, значат конкретные работодатели. И если ты видишь перез собой вакансию laravel-разраба с копеечным рейтом и малым количеством откликов - значит в этом месте на ларавеле будешь делать какую-нибудь херню, без бест практисов, стайлгайдов и тп, как понравится владельцу, так и будешь делать.
Я видел и местечковые интернет-магазины на ларе, знаешь ли.

> найти шарящего человека здесь сложнее, чем в java/spring или .net'e.
Из чего кстати элементарно следует, что большая часть "коллег" и лидов не шарят. Ты точно хочешь работать вместе с таким контингентом? И чему они тебя научат? Даже если ты сам будешь самообразовываться, представь, что ты такой приходишь и говоришь "давайте юзать гит, я поизучал, это правильно и технологично", а они тебе "а нам и по фтп норм, всегда так делали". И будешь как дурак один со своим гитом сидеть :)
История кстати невыдуманная, я где-то в начале-середине десятых с такой конторой сталкивался.
Нужно сразу работать в системе, которая задизайнена под инженерию. В одиночку ты ничего не выстроишь, только в лучшем случае сопьешься.


>>2583230
Ищи, конечно и удачи тебе. Речь о том, чтобы по возможности сразу искать подходящее место с перспективой роста.
Иначе можно стать аналогом охранника из пятерочки. Да, тепло и денежки есть, только вот годы идут, а лучше жизнь не становится и не станет.
Аноним 23/01/23 Пнд 06:44:46 2583933 98
>>2583795
>фтп
А как гит и фтп связаны? Разве фтп не для доступа к файлам на сервере должен использоваться?
Аноним 23/01/23 Пнд 07:26:05 2583945 99
>>2583933
В олдскульном пхп он используется для "деплоя" и потом для редактирования скриптов на живом сайте.
Это потом хипсторы всякие новомодные гиты эти ваши принесли.
Аноним 23/01/23 Пнд 08:17:41 2583958 100
>>2583945
типа гитом деплоить это ок
Аноним 23/01/23 Пнд 08:31:51 2583959 101
>>2583958
Особенно охуительно когда при таком колхозе ветка на проде постоянно не в мастере находится.
Аноним 23/01/23 Пнд 10:09:47 2584025 102
>>2583945
Речь даже не про деплои, а про то, что в некоторых конторах гита нет вообще, просто каждый редактирует свои файлики локально, а потом заливает их на продовый сервер по фтп и всё. Если чьи-то правки уже перетерли - это его проблемы.

>>2583958
Без гита обычно сложно использовать какой-нибудь гитлаб или гитхаб, на которых уже и настраивается нормальный пайплайн деплоя в современном мире.
Аноним 23/01/23 Пнд 13:53:38 2584341 103
>>2583142

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

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

Я вообще, замечаю, что среди анонимов не популярны реальные языки, на которых можно делать реальные проекты для бизнеса, а какие-то экзотические языки, которые никто не использует. Потому, что аноним любит изучать экзотические языки, а не работать.
Аноним 23/01/23 Пнд 14:00:57 2584361 104
>>2582660

Надо постить регулярки на сайте вроде regex101, там ее и проверить легко.

Твоя регулярка, как я понял, выглядит так:

^(([+]\s*7)|(8))(\W*[0-9]){10}$

В общем, неплохо. Цифру 8 не надо было брать в скобки, они там не нужны. В остальном верно.
Аноним 23/01/23 Пнд 14:16:00 2584368 105
>>2583795
Спасибо анон, и тебе удачи.
Я прислушаюсь, и попробую понастороженее быть в поиске работы. Если что попробую побыстрее(когда смогу) перепрыгнуть на понравившийся стак На инглиш я хочу денег накопить и с нейтивами по вечерам за деньги разговаривать - для этого деньги нужны, собственно для денег нужна и хоть какая работа.
Аноним 23/01/23 Пнд 14:29:55 2584381 106
>>2583450

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

Спасибо за замечания по учебнику, они очень полезны.

> https://onlinephp.io/c/92722 - проверка и исправление моб. номера

В общем, верно.

> https://onlinephp.io/c/984d2 - цензура

Верно.

> https://onlinephp.io/c/f60fa - вытащить email'ы из текста

Увы, неправильно составлена регулярка. Например, email вида vsevolod-ryurikovich@mail.ru она не найдет. Вообще, есть спецификация, какие символы могут входить в email, но она очень сложная и там получится километровая регулярка (если любопытно, гугли RFC 2822, пункт 3.4.1 ).

Для этой задачи email считается следующее:

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

> В мыле не стал искать "+", т.к. вроде в мылах не бывает плюсиков

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

> https://onlinephp.io/c/b8b62 - grammar Nazi

Почти верно, но выдает ошибку на правильное слово "разделал": https://onlinephp.io/c/a9b5b

Думаю, нужно проверять, что "зделал" идет в начале слова, а не в середине.

> https://onlinephp.io/c/03ff6 - grammar Nazi replace
Тут та же проблема со словом "разделал".
Аноним 23/01/23 Пнд 14:34:30 2584388 107
>>2583495

> Как сделать так, чтоб регулярка вытащила и ошибку, где пробел пропущен, и ошибку, где ШЫ вместо ШИ, и ошибку, где нет запятой?

preg_match_all выбирает только не-перекрывающиеся части строк. Чтобы вывести каждую ошибку, есть несколько вариантов:

1) добавлять в вызов preg_match_all флаг PREG_OFFSET_CAPTURE, чтобы она вернула позицию (в байтах) где найдено совпадение, и далее по этой позиции вытаскивать часть строки

2) как-то разбить строку на массив слов или на части и проверять каждое слово по очереди.
Аноним 23/01/23 Пнд 14:53:41 2584408 108
>>2583637

Вообще, под REST подразумевается архитектура REST или принципы REST, которые нетрудно нагуглить, по крайней мере на английском: https://restfulapi.net/

REST API - это API, построенное с соблюдением принципов REST.

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

На практике "REST" API часто не следуют принципам REST, и их правильнее называть HTTP API - то есть API, основанные на протоколе HTTP.

Начать стоит с изучения HTTP. В HTTP есть "методы" и "ресурсы", которые напоминают действие и объект действия. Например, мы можем сказать "погладь кота Василия". Здесь "погладь" это действие, а "кот Василий" это объект. Так же и в HTTP, запрос DELETE /photo/123 значит "удали фото 123", здесь DELETE это метод, а /photo/123 это идентификатор ресурса, над которым делается действие (фото). Ресурс - это не строчка /photo/123, а само фото, а URL /photo/123 лишь указывает на него.

Как я написал выше, URL - это указатель на ресурс (идентификатор, позволяющий отличить ресурс от других).

Поверх этих ресурсов и строится архитектура REST. Изучи 6 принципов REST и ты поймешь, какие API на самом деле являются REST API.

> И можете, пожалуйста, поподробней сказать, что это такое?
> header("Access-Control-Allow-Origin: ");

Это HTTP-заголовки. Тебе нужно почитать про протокол HTTP сначала.

> В REST API страница смотрит на запрос

не страница смотрит на запрос, а код на сервере или "сервер".
Аноним 23/01/23 Пнд 19:53:21 2584764 109
Аноним 23/01/23 Пнд 22:08:43 2584862 110
>>2584341
Никто не говорил об 500к с нуля, такого не бывает, тут ты прав. Речь о том, что условно став битрикс-разработчиком, ты никогда вообще не получишь 500к (если забудем про инфляцию), в этом стеке просто нет таких рейтов. И при этом битрикс это crm, то есть такой маленький мирок, для работы в котором тебе не нужно знать ничего из программирования кроме базы для накликивания страничек ну и там по мелочи всякого. В том числе и по такой причине, что битрикс просто не используют для серьезных и сложных задач, поэтому ты там просто не встретишь заданий, где нужно будет что-то такое поизучать и потом применить. Речь даже не про алгоритмы какие-то, а про базовые инженерные навыки, миграции, базы данных, сети, протоколы, паттерны проектирования и всё такое.

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

Битрикс здесь использую как имя нарицательное,вместо него можно подставить разные технологии и даже языки
Аноним 23/01/23 Пнд 22:12:27 2584869 111
>>2584862
Придумал отличную аналогию, представь, что ты играешь в WoW и хочешь заработать денег. И можешь начать качать какую-нибудь алхимию или любое другое собирательство с которой со временем можно будет зашибать кучу денег на аукционе с продаже редких ресурсов, а можешь условную первую помощь, в раскачку которой ты можешь вложить 100500 часов, но денег с этого всё равно не получишь.
Так вот, с реальными профессиями всё точно так же и нужно сразу выбирать такую, у которой выше потолок. Потому что переключаться между профами трудно и это не всегда происходит с сохранением экспы.
Аноним 24/01/23 Втр 07:02:55 2585015 112
>>2584869
Ну тогда надо сразу в джаву или в дотнет и забугор, т.к. у нас на дотнете мало платят. Но мне кажется на любом современном стеке можно примерно одинаковые суммы зарабатывать. Хоть пхп хоть нода хоть джава. Главное не идти в CMS, твой посыл ясен.
Аноним 24/01/23 Втр 12:34:38 2585202 113
>>2585015
Не совсем. Как раз примерно одинаково мало платят на любом стеке джунам, а вот потолок сеньоров от стека к стеку отличается.
К примеру, взяв php ты вообще никогда не сможешь зарабатывать столько же, сколько перфоманс C++ник в гугле, майкрософте или каком-нибудь оракле. Не уверен, что в них вообще есть вакансии на php, но не проверял
Не потому, что php плохой, а потому что специфика языков определяет задачи, которые этим языком решаются. А ценность и сложность этих задач различна, отсюда и разница в рейтах.

Поэтому, выбирая стек, нужно смотреть на две вещи:
1) Возможность для вката лично для тебя потому что у скажем haskell есть топовые рейты, но кривая вката очень велика, ещё и вакансий нет;
2) Потолок стека, чтобы он был больше, чтобы не выбрать "1C программиста" и не уперется лбом в потолок в два раза ниже потолка у других языков. Твоя же цель зарабатывать как можно больше, правильно? :)
Аноним 24/01/23 Втр 12:38:48 2585209 114
>>2585202
Но кстати C++ лучше не выбирай и даже не смотри в эту сторону, я серьезно. Шизанешься.
Аноним 24/01/23 Втр 13:09:37 2585231 115
>>2585202
Что лучше, битрикс или 1с? Я понимаю что это задача уровня двух стульев, но все же.
Аноним 24/01/23 Втр 14:11:46 2585306 116
>>2585231
Это одно и тоже, чел...
Аноним 24/01/23 Втр 14:45:56 2585361 117
>>2585306
Не обманывай! Битрикс это фреймворк на пыхе с открытыми сорцами. 1С предприятие это десктопная платформа на плюсах с закрытым кодом, которая предоставляет специальный язык для описания предментой области документооборота на предприятии.
Аноним 24/01/23 Втр 14:50:24 2585368 118
>>2585361
Чел, эта хуйня идет стеком. Никому не всралась пхпмакака без знания 1с. Толку от твоего магаза на битрихе, если ты его к обороту не прикрутишь?
Аноним 24/01/23 Втр 14:53:26 2585377 119
>>2585368
Чел есть еще облачный битрикс, там тоже самое http апи от пыхобитрикса, но ты можешь там хоть на хаскеле приложения для маркета писать. Я писал, никто с меня знания одинаса не требовал.
Аноним 24/01/23 Втр 14:59:00 2585387 120
>>2585377
Кстате сейчас стало много компаний которые на питоне и ноде приложения пишут для битрикс24. Даже в моем мухосранске.
Аноним 24/01/23 Втр 16:05:40 2585501 121
>>2585387
Угу. Я даже удивиля. Но б24 хороший продукт. Удлятья безмылено .
Аноним 24/01/23 Втр 19:08:49 2585741 122
>>2585231
С моей колокольни кажется лучше битрикс, который phpшный фреймворк, так как это всё же что-то на php и поэтому всё же подразумевает какую-никакую близость хотя и очень маленькую к глобальному миру php-разработки. А 1С это чисто локальная СНГшная история, ещё и залоченная на одного вендора не на уровне фреймворка даже, а вообще на уровне языка. В этом языке хоть дженерики то есть? Лол.

Но конечно это выбор из двух сортов говна и лучше, как Геральт, не выбирать вовсе. Вот не поверю, что у тебя в доступности нет местячкового аутсорса на ларавеле или хотя бы yii, хоть второй мне и не нравится.
Аноним 24/01/23 Втр 22:08:12 2585971 123
Ну что, сделали "офер" на испытальный срок но его как я понял все проходят. Только прикол в том, что я встретился с эйджизмом, хотя мне слегка за 25.Собеседующий сказал, что хоть я и был лучше предыдущих собеседуемых, но все равно плавал и вообще есть люди, которые в 18 лет уже являются специалистами, а я вот такое недоразумение, поэтому мне нужно работать в режиме x5. Только я не понял, это он выделил молодых или сказал, что мне нужно догонять "себя", чтобы стать специалистом?
А может мне послышалось, и в телефонном звонке сказали, что офер сделали на какую то другую вакансию? Или как объяснить, почему вакансия еще висит?
>>2584408
Да, спасибо, анон ОП?,я даже удивился, что они спрашивали принципы REST вообще собеседование в основном было на темы, которые в вакансии были указаны как желательные, а не обязательные.


Только мне уже тимлид сказал, что я тут https://codeshare.io/OdVyqA нарушил один из принципов SOLID (класс должен решать одну задачу), а я думаю, а как мне нужно было это реализовать то, чтобы не нарушить этот принцип? Плюс он сказал, что у меня каждый файл подключается к базе данных, что затратно. А что можно сделать?
Аноним 24/01/23 Втр 22:30:58 2586012 124
Аноним 24/01/23 Втр 22:51:53 2586034 125
>>2586012
Стажер/Джун только я не хотел никого демотивировать, я в мухосарани живу, если что
Аноним 24/01/23 Втр 22:56:49 2586042 126
>>2586034
А тестовое сложное было?
Аноним 24/01/23 Втр 22:57:00 2586043 127
>>2586034
Ясен хуй в мухосрани. В дсах такого старпера только подрачником бы выпнули, насмехаясь вдогонку.
Аноним 24/01/23 Втр 23:00:02 2586047 128
>>2586042
Тестового не было, я сам написал проектики для портфолио
Аноним 24/01/23 Втр 23:01:22 2586051 129
>>2585971
1. У тебя класс авторизации сам себе создаёт подключение к бд, так делать нельзя. Погугли про паттерн dependency injection, принцип D в solid и интерфейсы: класс должен в конструкторе принимать интерфейс подключения к бд, а сам объект создаётся где-то снаружи, и AuthModel не должен знать, как это делается, чтобы не зависеть от конструктора другого класса или от функции, как в твоём коде.
2. Класс авторизации вообще не должен знать, откуда у тебя берется юзер. Твой класс AuthModel одновременно авторизует юзера и ищет его в бд, взаимодействие с бд не должно быть его задачей. Нужно сделать интерфейс UserRepositoryInterface и его имплементацию DatabaseUserRepository, соответственно, в нем должен быть метод findUserByЧеТоТам. AuthModel в конструкторе должен получать интерфейс репозитория и дальше использовать его для поиска юзера. Соответственно, передавать в AuthModel объект подключения бд вообще не нужно, он понадобится только в DatabaseUserRepository, так как запросы у нас происходят в нем, а AuthModel не должен взаимодействовать с бд. в фреймворках на паттерн репозитория часто ложат хуй, что иногда оправдано, а иногда - нет. Например, в laravel ёлка работает как active record и там класс сущности сам себе является репозиторием. Тем не менее подобный код поиска сущности все ещё можно и нужно выносить в сервисные классы, экшны или query, если код по CQRS организован, чтобы не захламлять и не дублировать логику
3. Класс авторизации не должен сам проверять хеш. Нужен отдельный класс PasswordVerifier с методом для проверки пароля, принимающим аргументы из хешированного пароля и открытого. Соответственно, точно так же он должен передаваться в AuthModel через конструктор вместе с репозиторием из пункта 2.
4. субьективщина Нейминг говно, AuthModel я бы назвал AuthService, Authenticator или ещё как-то.

Да, удивительно, конечно, как тебя вообще взяли, без обид. Я думал, что до такого кода даже в последней галере доебутся если галера не на битриксе или вордпрессе, конечно, там в ядре код хуже написан
Аноним 24/01/23 Втр 23:09:46 2586063 130
>>2585971
поздравляю!
Сколько, где учился?

мимо вкатун 27 лет 4 месяц полета
Аноним 24/01/23 Втр 23:14:20 2586070 131
>>2586063
Спасибо, учился 8 лет, пытался вкатиться во что-то 4 года, но само php я изучал недолго. Мне верстка сложнее довалась
Аноним 24/01/23 Втр 23:16:46 2586073 132
ir1Fs4wfCw8.jpeg 75Кб, 1560x859
1560x859
Очень интересует вопрос, насколько разумно получить первую работу в php, отработать 1 год и после этого пойти на вакансию java? О том, что не смогу учить параллельно работе, не переживаю.

Слышал от некоторых медиа личностей, что рекомендуют вкатываться через php, т.к. востребовано (без битриксов, вордпрессов и проч). Особенно когда сейчас так пугают, что попасть на вакансию тяжело. Важно, что для первой работы мне нужна удалёнка, дальше уже офис. Что думаете?
Аноним 24/01/23 Втр 23:25:03 2586089 133
>>2586073
А нах это надо? На пхп не проще ни разу.
Аноним 24/01/23 Втр 23:29:29 2586095 134
>>2586043
>В дсах такого старпера только подрачником бы выпнули, насмехаясь вдогонку.
На счёт старпёра, это ты не шутишь?
Аноним 24/01/23 Втр 23:32:35 2586103 135
>>2586073
Если хочешь в итоге вкатиться в джаву, лучше с неё и начинать, перекатываться всегда непросто.
Если вариантов для вката в джаву сейчас нет, а в пхп есть - то пробуй пыху сейчас, а там посмотришь.
Аноним 25/01/23 Срд 00:44:43 2586156 136
Аноним 25/01/23 Срд 09:53:13 2586314 137
>>2586073
Не легче. Просто больше возможностей для вката из-за битрикса.
Аноним 25/01/23 Срд 10:06:22 2586336 138
>>2585971

> Только мне уже тимлид сказал, что я тут https://codeshare.io/OdVyqA нарушил один из принципов SOLID (класс должен решать одну задачу),

Не очень понимаю, где тут нарушение SOLID в таком маленьком классе. Но тут есть 2 других косяка:

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

- ты из класса подсоединяешься прямо к БД. Это плохо, нужно было передавать объект mysqli в конструктор класса. То есть, класс не должен сам искать, где ему взять соединение с БД, ему это соединение должны передать снаружи.

Наверно дурацкая аналогия, но когда ты приходишь на завод, ты не покупаешь сам инструменты в магазине, а тебе дают уже готовые. Так же и твой класс, ему должны были дать соединение к БД, которое нужно для работы.
Аноним 25/01/23 Срд 10:34:30 2586379 139
>>2586051

> Нужно сделать интерфейс UserRepositoryInterface и его имплементацию DatabaseUserRepository, соответственно, в нем должен быть метод findUserByЧеТоТам.

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

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

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

Есть ли у тебя какие-то убедительные примеры, статьи, где использование паттерна Repository дает выгоду и это не проект уровня TodoList?

Пока что у меня ощущение, что Repository это неудачный паттерн.
Аноним 25/01/23 Срд 11:07:04 2586405 140
>>2586336
Да, про инъекции я особо не заморачивался, а про SOLID он сказал, что мой класс выполняет две функции. И авторизует и подключается к базе данных. Но это подключение же должно хоть где-то происходить? Если оно не должно было происходить в модуле, то оно должно было бы происходить в контроллере. Но в контроллере и так своих подключений достаточно контролёр вообще может придерживаться принципа Solid?, хотя отображение за подключение не считается, наверное.
Ладно, спасибо, глянуть надо, что и как
Аноним 25/01/23 Срд 13:05:07 2586498 141
>>2586314
битрикс - гной и помойная яма

начать с битрикса - поставить крест на своей карьере разработчика
Аноним 25/01/23 Срд 13:07:43 2586504 142
>>2586405
>Но это подключение же должно хоть где-то происходить?
в бутстрапе происходит, и потом в конструктор передаётся хэндлер (объект mysqli или pdo)
а у тебя фактически происходит коннект к базе при инстанцировании AuthModel
если ты будешь гонять тесты, в которых AuthModel создаётся десять раз - у тебя будет десять подключений, что абсолютно не нужно
Аноним 25/01/23 Срд 13:35:19 2586529 143
>>2586504
$conn = new mysqli("localhost", "root", "", "social");

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

return $conn;
Но я же возвращаю в конструктор объект mysqli, равзе нет?
Аноним 25/01/23 Срд 13:38:19 2586533 144
>>2586529
Ну то есть да, получается, что
>фактически происходит коннект к базе при инстанцировании AuthModel
Но если бы я это делал в контролере, то было бы то же самое, нет?
Аноним 25/01/23 Срд 13:57:56 2586547 145
>>2586533
Типа да, но вообще ты и в контроллере это делать не должен. Должен быть конфигуратор, который инстанцирует все синглтоны (класс подключения к БД - это синглтон, потому что он нужен в одном экземпляре в отличии от entity и DTO), и пихает pdo в конструктор модели, а контроллер к модели обращается, но сам её не инстанцирует. Выучи Symfony, там всё это есть.
Аноним 25/01/23 Срд 17:47:51 2586885 146
>>2586547
Файл конфигуратор - это тот же bootstrap.php или ты про php.ini.
Аноним 25/01/23 Срд 20:30:41 2587157 147
Тяжело решить задания "Yoda speak" и "Числа прописью". Йода спик решил, но не понимаю, как сохранить знаки препинания. Прям голова взрывается, я просто не понимаю, как найти решение в моей башке. То же и с заданием "Числа прописью", я просто хуею насколько это сложно.

Неужели у меня нет шансов вкатиться? Я такой тупой? Как так! За что? Или это у всех так в начале пути? Решал первый день эти задания, пока вот такие ощущения: что я ничтожество и никогда никуда не вкачусь, что "думать" это не про меня. Пока не хочу поддаваться нытью, поэтому продолжу думать. Если за неделю не решу эти два задания, то придётся смириться.

26 лвл тнн рнн сыч
Аноним 25/01/23 Срд 20:33:04 2587163 148
>>2587157
Пиздуй на Хекслет, там бесплатный вводный курс по пхп есть, прорешай его сначала
Аноним 25/01/23 Срд 21:12:12 2587197 149
>>2587163
Не, там всё просто. Даже проще заданий про кредит здесь. Там же чисто по синтаксису дрочат и всё. Я вот прям щяс прошел 15 уроков, потом чекнул что там дальше, ну как и сказал - дрочка синтаксиса. Синтаксис я и так уже знаю. Спасибо за совет.
Аноним 25/01/23 Срд 21:21:29 2587198 150
>>2587157
Ты еще не дошел до рекурсии, вот где засада. Не бросай так быстро в любом случае, часто бывает на следующий день лучше соображается.
Аноним 25/01/23 Срд 22:34:41 2587261 151
Можно вкратце, что вы изучали, чтобы из Джуна стать Мидлом? Путь был не простым?
Аноним 25/01/23 Срд 23:33:39 2587317 152
>>2587261
Я говорю вам о трех превращениях духа: о том, как трейни стал джуном, джун – мидлом и, наконец, мидл – сеньером.
Много трудного существует для духа, для духа сильного и выносливого, способного к почитанию: всего самого трудного и тяжелого жаждет сила его.
"Что такое тяжесть?" – вопрошает выносливый трейни, становится, как джун, на колени и хочет, чтобы его хорошенько навьючили.
Но там, в безлюдной пустыне, свершается второе превращение: там мидлом становится дух, добыть себе свободу желает он и сделаться господином пустыни своей.
Там ищет он своего последнего владыку: врагом хочет он стать ему, последнему господину и Господу своему, до победного конца хочет бороться с великим кабаном.
Кто же он, великий кабан, которого дух отныне не хочет признавать господином и владыкой? Имя того кабана – "Ты должен". Но дух мидла говорит "Я хочу в гэп".
Зверь "Ты должен" лежит на пути его, переливаясь золотой чешуей, и на каждой чешуйке блестит золотом "Ты должен!".
Аноним 26/01/23 Чтв 08:27:49 2587504 153
>>2586885
bootstrap.php или его аналог
Аноним 26/01/23 Чтв 12:13:47 2587708 154
>>2587504
Я правильно понимаю, что PHP таким образом создаст один экземпляр класса для всех клиентов, которые запросили информацию у сервера. То есть сервер не будет повторно инициализировать экземпляр для каждого клиента? А когда этот экземпляр удалится? И когда он первый раз инициализируется?
Аноним 26/01/23 Чтв 12:25:15 2587716 155
>>2587708
Нет не правильно. Пыхо процесс инициализируется для каждого запроса отдельно. У тебя в каждом запросе будет создаваться экземпляр синглтона. При шатдауне процесса память будет очищаться. С fpm немного сложнее но не принцириально. Вообще для персистент коннекшион синглтон инкапсулирующий подключение не нужен. Оно и так из коробки работает. Синглтоны или звездные объекты удобны архитектурно и для экономиии памяти. Например User текущий - ты знаешь что работаешь с одним объектом в конторолере и мидварах. Или Request и тд
Аноним 26/01/23 Чтв 12:26:28 2587717 156
Аноним 26/01/23 Чтв 13:28:01 2587823 157
Всё ещё рекомендуете вкат в PHP? Меня заебало, что вокруг меня одни айтишники, хвастающиеся своими доходами, да и сам я в техподдержке за копейки работаю пару месяцев. Постоянно желание вкатиться, технические темы интересуют, хуё-моё.
Аноним 26/01/23 Чтв 13:33:06 2587832 158
>>2587823
Я просто понял, что тут надо быть настоящим задротом, иначе хуй ты че сделаешь. Это тебе не учить детей или работать гейологом и описывать керн ёбанный. Там думать не надо, запомнил один раз как че описывать, как кого чему учить и усё, там больше пиздеть надо. А вот тут ты ебать пиздец задачи сука решай хуё-моё туда-сюда. Это тебе не это дружочек. Надо сидеть и красноглазить по 6-10 часов в день С ИНТЕРЕСОМ, иначе ты ничему не научишься.
Аноним 26/01/23 Чтв 13:34:17 2587834 159
>>2587832
Вкатываюсь в дальнобойщики тогда?
Аноним 26/01/23 Чтв 13:40:18 2587843 160
>>2587834
Мне кажется это физически изнурительно очень ну и опасно.
Аноним 26/01/23 Чтв 13:51:15 2587868 161
>>2587834
+геморрой, мне кажется еще хуже чем кодерство, даже не встанешь из руля. Когда кодишь можешь хотя бы вставать на минутку каждые полчаса-час, жопку размять, покрутить бедрами из стороны всторону и всё такое. А там все пизда будут вырезать тебе уже лет в 35-40. Нахуй надо. Придумай что-то получше или стань задротом и вкатывайся с нами в бекенд.
Аноним 26/01/23 Чтв 13:57:49 2587879 162
Аноним 26/01/23 Чтв 14:03:46 2587889 163
>>2587868
Дальнобоев штрафуют за то что они из-за руля не вылазять и жепой не крутят. Там цифровой анальный контроль на двигателе.
Аноним 26/01/23 Чтв 15:46:38 2588044 164
Как насчёт удаленки. С каким опытом можно пытаться устроиться? Что требуют?
Аноним 26/01/23 Чтв 17:09:57 2588206 165
>>2588044
Нужно быть мидлом судя по всему.
Аноним 26/01/23 Чтв 17:16:03 2588225 166
>>2588044
Шансов мало, в битриксе шансов много, это супер изи. На норм стек хуй там плавал. Надо прям везде светиться: хх, дискорды, группы в тг и т.д. Чем больше активности, тем больше шанс дойти до интервью. Правда не стоит это делать не подготовленным, иначе засрешь один шанс, некст раз не раньше чем через полгода будет - раньше этого срока на тебя не будут обращать внимание, если ты уже обосрался.

По поводу знаний в шапке всё есть. Можете еще задачи на литкоде поебашить и почитать поверхностно про алгосы в книге типа "Грокаем алгоритмы" или на метаните, правда там шарп, но знания шарпа нужны поверхностные, больше "основы программирования", чтоб понять о чем речь.
Аноним 26/01/23 Чтв 20:52:28 2588543 167
>>2571790 (OP)
Аноны, меня, почему то, очень гложет тот факт, что я не могу работать в топ компаниях, потому что я тупо не смогу решить их задачи, да и не шарю я в вышмате, в алгоритмах или в чем нужно шарить? Я даже задачу понять не могу, а как решать, тем более. Можно ли это исправить, или в том же Яндексе без знаний вышмата лучше не сказаться?
Аноним 26/01/23 Чтв 22:06:28 2588661 168
аноны выручайте

пытаюсь установит nginx по этой инструкции.
все хорошо до момента, когда пытаюсь на http://localhost:8080
должно быть "Вы должны увидеть такую страницу с текстом «Welcome to nginx!».", а у меня страница не найдена. В чем проблема?
Я гуглил нихуя найти не смог.
В логах вот эта ошибка 2023/01/26 21:56:28 [emerg] 18053#0: unexpected end of parameter, expecting ";" in command line

Погуглив ошибку, я понял, что могут быть забыты скобки в конфе nginx, проверил все в редакторе, все заебись. Я ХУЙ ЗНАЕТ ЧТО ДЕЛАТЬ.

Рассмотрим как установить веб-сервер самостоятельно.

Установим последнюю версию nginx:

brew install nginx
Поскольку порт 80 требует прав администратора, а homebrew по умолчанию устанавливает софт с пользовательскими правами, то работать nginx будет на порту 8080.

Запускаем nginx, чтобы он работал в фоне и обслуживал наши запросы:

brew services start nginx
Индикатор успеха:

==> Successfully started `nginx` (label: homebrew.mxcl.nginx)
Проверяем, что всё установилось корректно, и nginx успешно работает на нашем компьютере. Откройте любой браузер и введите в адресной строке следующий URL:

http://localhost:8080
Аноним 26/01/23 Чтв 22:13:16 2588665 169
>>2571790 (OP)
А зарубежом как обстоят дела с php? Тоже недолюбливают или нет?
Аноним 26/01/23 Чтв 22:15:55 2588667 170
>>2588661
Это про локальный сервер? Тогда ой зряяя ты все это вручную делаешь. Ты потратил на это кучу сил, а забудешь как ты это делал сразу, так как тебе это знания долго не понадобятся если вообще понадобятся. Качай спокойно openserver, mamp или другое и не делай себе мозги.
Аноним 26/01/23 Чтв 22:24:37 2588675 171
>>2588667
Да)

Но у меня так и не получилось сделать(
Хуй знаеь в инструкции все было описано, как супер простая вещь)
Аноним 26/01/23 Чтв 22:27:13 2588677 172
>>2588667
Не слушайте этого долбаеба. Элементарные админские навыки нужны вебразработчику. Не говоря о том что почти каждый сколько-нибудь опытный разработчик держит впску с докером. Попенсервер - 100% ый детектор лоускила.
Аноним 26/01/23 Чтв 22:30:49 2588680 173
>>2588677
И вообще руководствуйтесь принципом тяжело в учении легко в в работе.
Аноним 26/01/23 Чтв 22:33:56 2588686 174
>>2588677
я хочу доделать, я на это весь вечер убил
два варианта со стейкофферло нихуя не помогли
как эту хуйню запустить, чтобы он мне мой проект показывал в браузере?
Аноним 26/01/23 Чтв 22:34:28 2588687 175
>>2588680
я хочу доделать, я на это весь вечер убил
два варианта со стейкофферло нихуя не помогли
как эту хуйню запустить, чтобы он мне мой проект показывал в браузере?
Аноним 26/01/23 Чтв 22:37:20 2588693 176
>>2588687
Ну и почему ты не скинул на пастбин конфик нжинкса? На телепатов надеешься?
Аноним 26/01/23 Чтв 22:41:15 2588697 177
>>2588693
проверить ксате конфиг ты можешь командой
nginx -t
Аноним 26/01/23 Чтв 22:43:44 2588700 178
>>2588693
я в нем ничего не менял, я пытаюсь по инструкции зайти на Локал хост 8080 и увидеть welcome nginx

#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 8080;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}
include servers/*;
}
Аноним 26/01/23 Чтв 22:57:40 2588718 179
>>2588700
Что у тебя в servers/ лежит
И вывод команды
nginx - t
Аноним 26/01/23 Чтв 23:00:34 2588723 180
>>2588718
вывод команды
[emerg] open() "/usr/local/var/run/nginx.pid" failed (13: Permission denied)

"Что у тебя в servers/ лежит" не понимаю, что надо предоставить.
Аноним 26/01/23 Чтв 23:03:41 2588728 181
>>2588723
до этого момента он мне только ошибку про не закрывающий символ выводил.
Аноним 26/01/23 Чтв 23:06:28 2588731 182
>>2588718
>Что у тебя в servers/ лежит

через sudo
sudo nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Аноним 26/01/23 Чтв 23:07:38 2588732 183
>>2588728
Ты домохозяйка? Не видишь Permission denied? Запускай с правами

в servers своми конфиги не клал?
Аноним 26/01/23 Чтв 23:10:16 2588735 184
>>2588731
Ну вот с конфигом все впорядке. У тебя на порту 8080 ничего не висит другого? Может твой нжинкс и не зарущен. И ли там остатки твоих нужавшихся попыток в процессах весят. Перезагрузи свой мак
Аноним 26/01/23 Чтв 23:10:43 2588736 185
>>2588732
я выше разобрался с проблемой связанной с правами.


нет.
Аноним 26/01/23 Чтв 23:10:45 2588737 186
>>2588543

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

Математика не очень нужна, если только тебя не интересуют нейросети и машинное обучение (это очень крутые технологии). Тогда придется математику подтянуть.
Аноним 26/01/23 Чтв 23:10:54 2588738 187
>>2588735
> не зарущен
не запущен
Аноним 26/01/23 Чтв 23:11:48 2588739 188
>>2588735
делал.
я уже и на другой мак поставил такая же хуйня локалхост не видит(
Аноним 26/01/23 Чтв 23:12:33 2588740 189
>>2588738
>нужавшихся
неудавшихся )
пора спать уже...
Аноним 26/01/23 Чтв 23:13:53 2588742 190
>>2588661

Ты можешь проверить правильность конфига самим нгинксом:

nginx -t

он выведет, если есть какие-то ошибки.

> а у меня страница не найдена
Возможно, в веб-директори нгинкса надо создать index.html с каким-нибудь текстом и тогда страница появится.
Аноним 26/01/23 Чтв 23:14:26 2588743 191
>>2588739
Теперь подробнее что значит не видит?
Что в браузере http://localhost:8080
Аноним 26/01/23 Чтв 23:26:23 2588750 192
>>2588743
safari не может найти страницу тк не удается подключиться к серверу.
Аноним 26/01/23 Чтв 23:29:18 2588754 193
>>2588750
что конфиг ок не значит что нжинкс запущен
Аноним 26/01/23 Чтв 23:31:48 2588755 194
>>2588754
Стартани с правами
nginx
Аноним 26/01/23 Чтв 23:34:47 2588758 195
>>2588755
sudo brew services start nginx
Warning: Taking root:admin ownership of some nginx paths:
/usr/local/Cellar/nginx/1.23.3/bin
/usr/local/Cellar/nginx/1.23.3/bin/nginx
/usr/local/opt/nginx
/usr/local/opt/nginx/bin
/usr/local/var/homebrew/linked/nginx
This will require manual removal of these paths using `sudo rm` on
brew upgrade/reinstall/uninstall.

sudo brew services info nginx
nginx (homebrew.mxcl.nginx)
Running: ✘
Loaded: ✔
Schedulable: ✘

к странице так же не подключиться
Аноним 26/01/23 Чтв 23:39:19 2588766 196
>>2588758
Ты не можешь просто в консоли запустить?
sudo nginx

Если захочешь остановить
sudo nginx -s stop
Аноним 26/01/23 Чтв 23:43:43 2588770 197
>>2588766
да заработало!!!
а в чем проблема была?

почему так не стартует "brew services start nginx"?
Аноним 26/01/23 Чтв 23:48:07 2588776 198
>>2588770
https://htmlacademy.ru/blog/php/php-on-macos#server
пидорасы официально я сука весь вечер проебал на настройку Nginx по их инструкции.

если кто-то будет делать на маке, то вместо того что они пишут
Запускаем nginx, чтобы он работал в фоне и обслуживал наши запросы:
brew services start nginx

Пишем в консоле nginx и все работает.

Спасибо, что помог!
Аноним 27/01/23 Птн 09:59:31 2589030 199
>>2587708
>Я правильно понимаю, что PHP умер?
правильно
Аноним 27/01/23 Птн 13:17:42 2589308 200
Допустим, у меня в ларавеле есть модели постов и комментов к ним. Должны быть такие эндпоинты, возвращающие жсоны:
- все посты + к каждому последний коммент
- просто все посты без последнего коммента
- один конкретный пост + все комменты к нему

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

Типа сделать сервис для постов с методами getAll и getById

И сервис для комментов с методами getAllByPostId и getLatestByPostsIds(array). Но это как-то пиздец всрато, этому последнему методу приходится передавать массив айди постов, для которых надо достать последний коммент, чтобы избежать н+1. И я хз как даже нормально запрос в нём написать

Я бы мог просто сделать eager loading для комментов, но мне же не на всех эндпоинтах нужны комменты, иногда только один коммент нужно достать из бд

Я запутался, я нихуя не понимаю
Аноним 27/01/23 Птн 14:26:06 2589452 201
>>2589308
зависит от твоей схемы. если посты хранят id комментариев, то можно сделать
Post::getAll($criteria, $order, $offset, $limit)
сделать $commentIds = array_map(fn($post) => $post->commentIds->orderBy('date', 'desc')->take(1), $posts)
и сделать Comment::getByIds($commentIds)
Аноним 27/01/23 Птн 14:32:38 2589469 202
>>2589308
чтобы получить айдишники комментов

from comment
where comment.post_id in (1,2,3)
group by comment.post_id
select comment.post_id as post_id, max(comment.id) as comment_id
Аноним 27/01/23 Птн 17:29:41 2589789 203
>>2588677
Я это настраивал, а потом забыл. Для начала есть больше других полезных вещей, которые нужно пройти, потом уже можешь свой сервер настраивать
Аноним 27/01/23 Птн 19:19:29 2589916 204
>>2589308
Короче я вместо отдельных сервисов для постов и комментов просто сделал методы withLatestComment(builder) и withAllComments(builder), которые к квери билдеру на посты через with добавляет комменты
Аноним 27/01/23 Птн 20:23:36 2589978 205
>>2588737
Не, я говорю больше про работу на большие компании, если честно. Так то php особо в таких компаниях не используется, только Яндекс могу сказать и больше не знаю.
Алгоритмы я допустим на базовом уровне выучу, но этого будет не достаточно. Я посмотрел в тестовом контенксте от Яндекса задачи на backend, я даже понять не могу что они хотят.
Аноним 28/01/23 Суб 15:25:07 2590780 206
Аноним 28/01/23 Суб 16:29:13 2590874 207
>>2589308

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

Здесь можно сделать сервис постов, который умеет выбирать и комменты к ним. Для управления комментами можно сделать отдельный сервис.
Аноним 28/01/23 Суб 16:37:36 2590889 208
>>2590780
Там нечего учить, почитай документацию и попробуй запустить проект с докером - всё. Тебя никто не заставит писать docker image, поэтому можно посмотреть и для node или python, но больше запутаешься
Аноним 29/01/23 Вск 12:00:37 2591791 209
>>2571790 (OP)
Что почитать чтобы разбираться в сортах Api - rest, soap, rpc - итд? Или может какой-нибудь курс внятный есть?
Аноним 29/01/23 Вск 21:11:37 2592651 210
Насколько php популярен на западе? На нем начинают новые проекты?
Аноним 30/01/23 Пнд 22:00:19 2593869 211
>>2571790 (OP)
В принципах rest api что-то написан про КЭШ, но как вообще кэш в php реализуется?
Аноним 31/01/23 Втр 10:14:57 2594150 212
>>2588770

Обрати внимание, что brew services ... и sudo brew services ... работают немного по-разному. Первый управляет сервисами, запущенными с правами пользователя, а второй - с правами администратора. Я бы сначала пробовал без sudo, если можно без прав администратора, то так проще.

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

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

Я бы советовал ориентироваться не на сторонние статьи, а на информацию проекта homebrew: https://formulae.brew.sh/formula/nginx

Там написано, что права администратора не требуются, и перечислены папки, которые используются nginx. То есть, должно все работать без sudo. Но если ты уже запустил nginx с sudo, то может быть, поменялись права на файлы и сначала нужно его остановить и вернуть права обратно.
Аноним 31/01/23 Втр 10:21:06 2594153 213
>>2589978

> я даже понять не могу что они хотят.

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

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

И не надо бояться математики. Она довольно логичная, и в ней можно разобраться при желании. Хотя, должен заметить, что часто статьи про математику используют усложненный язык, например, в Википедии часто все объясняется самым сложным образом.
Аноним 31/01/23 Втр 10:29:49 2594154 214
>>2590780

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

Контейнер создается с помощью консольных команд Линукса. Изначально Докер дает тебе абсолютно пустой контейнер, в котором ничего нет. Например, чтобы создать контейнер с PHP, ты пишешь команды, которые:

- устанавливают в контейнер базовые бибилиотеки из дистрибутива вроде Alpine Linux
- скачивают в контейнер исходный код PHP
- скачивают нужные зависимости
- устанавливают в контейнер компилятор Си и его зависимости
- компилируют и собирают интерпретатор PHP
- устанавливают в контейнер нужные конфиги для PHP

Чтобы полноценно пользоваться Докером, уметь решать возникающие проблемы, тебе придется изучить:

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

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

То есть, если ты думал, что надо начать с изучения Докера, то нет, ты ошибся, надо начать с изучения Линукса.
Аноним 31/01/23 Втр 10:34:21 2594155 215
>>2591791

- изучить протокол HTTP
- изучить принципы REST (их, по моему, 6 штук)
- почитать про SOAP

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

Или ты имел в виду JSON RPC? Тогда надо просто погуглить этот протокол.

>>2593869

Кеш реализуется разными способами:

- с помощью БД (не очень эффективно)
- с помощью внешних хранилищ вроде memcache, redis
Аноним 31/01/23 Втр 12:08:43 2594220 216
>>2584408
Можешь, пожалуйста, ответить на вопросы?
Что такое единый интерфейс в rest api? Как можно идентифицировать ресурсы? .../post/123 - вот это и есть идентификатор?
Что вообще такое ресурсы? Index.php может выступать в роли ресурса?
Аноним 31/01/23 Втр 12:35:42 2594238 217
>>2594154
> Такое бывает, но не всегда.
Лол. Такое только всегда и бывает.
Аноним 31/01/23 Втр 15:33:58 2594421 218
Как организовать лучше ветки в учёбном репозитории гита?
У меня два источника задачек которые я решаю и хочу закидывать в две разные папки в один реп.. Все просто скидывать в мейн?
Аноним 31/01/23 Втр 15:43:57 2594431 219
>>2594421
Или для каждой папки создать свою ветку, а потом, когда все задачки решу, слить в мейн?
Аноним 31/01/23 Втр 22:05:52 2594890 220
Аноним 31/01/23 Втр 22:13:41 2594903 221
Есть какие-нибудь советы, как изучить OPENAPI? А то смотришь в спецификацию, и чет не очень
Аноним 31/01/23 Втр 22:16:47 2594907 222
>>2594153
Спасибо, я изучал математику по mathprothi, но это все равно долго, да и не получилось освоить. А какие разделы нужно изучить, чтобы решать такие задачи? Все?
Аноним 31/01/23 Втр 22:27:18 2594920 223
Начал учить php по слитому курсу от Skillbox, хотел узнать у вас подобные курсы это норм для базового изучения или они не охватывают чего то важного, а может нужно больше практики.
Мимо проходил, хотелось поинтересоваться, что не трачу время неэффективно.
Аноним 31/01/23 Втр 22:32:06 2594927 224
>>2594920
Псры дрочил, миддлвари дрочил, мвц дрочил, сборку проекта из отдельных элементов вместо цельного фрумворка дрочил?
На стандартные функции блевал?
Убунты, пхп-фпмы настраивал?
Если нет, то плохой курс.
Аноним 31/01/23 Втр 22:36:40 2594935 225
>>2594220

Ресурсы - это какие-то объекты на стороне сервера, с которыми мы хотим что-то сделать. Например: фото, комментарий, пост, пользователь, выданный бан, ит.д.

Многие команды состоят из действия и объекта, например: "погладь кота Василия". В HTTP действие это метод (GET, POST, DELETE), а ресурс это объект над которым делается действие.

URL это идентификатор ресурса, например, /post/123 или /user/ivan/bans/12345.

> Index.php может выступать в роли ресурса?

Только в том случае, если у тебя система управления файлами и index.php является одним из файлов, с которым ты хочешь что-то сделать (удалить, отредактировать и тд).
Аноним 31/01/23 Втр 22:37:25 2594936 226
image.png 30Кб, 1044x279
1044x279
image.png 29Кб, 1038x242
1038x242
image.png 35Кб, 859x301
859x301
>>2594927
Мне не знакомо все что ты перечислил, но вот здесь список того что затрагивают курсы. Я только на 4 уроке, в первой части.
Аноним 31/01/23 Втр 22:38:47 2594938 227
>>2594421

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

В твоем случае ветки не требуются.
Аноним 31/01/23 Втр 22:56:25 2594958 228
>>2594903

Попробуй начать с понимания, зачем это придумано. Зачем вообще нужно документировать API? Очевидно, для взаимодействия между людьми:

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

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

- генерировать из нее красивую человекочитаемую документацию наподобие такой: https://api.apiship.ru/doc/ (это реальная документация к реальному сервису)
- делать автоматические тесты, проверяющие, например, что возвращаемый формат данных соответствует описанному
- генерировать заготовки кода, а когда нейросети станут помощнее, то наверно и сам код будут генерировать

OpenAPI позволяет описывать (по моему, в формате YAML, его тоже надо изучить) способы авторизации, все эндпойнты, все типы параметров и возвращаемых значений.

Ее не всегда пишут руками, иногда с помощью каких-то GUI утилит, иногда генерируют из кода.

Если что-то конкретно непонятно, то уточняй.
Аноним 01/02/23 Срд 00:03:02 2595022 229
Аноним 01/02/23 Срд 10:03:36 2595225 230
>>2594920
>курсу от Skillbox
Говнище
Аноним 02/02/23 Чтв 21:10:18 2597371 231
Что делать с вложениями в API, если нельзя создавать, если нельзя создавать вложения третьего и более уровня?
Ещё вопрос. Есть сущность главная, а эта главная сущность имеет ещё сущности зависимые.
Получается нужно сделать
Главная сущность/зависимая сущность/главная сущность? Но три вложенности делать нельзя, да и странно это выглядит. А что делать тогда?
Вот пример: в научном портале есть научные статьи - это главная сущность. А есть ещё авторы этих статей.
Так как мы должны использовать логические вложения, а статья тут главная сущность, то получается, что
Научные статьи/авторы статей. Чтобы получить всех авторов определенной научной статьи, пишем
Статьи/id/авторы.
А что делать, чтобы получить все статьи определенного автора?
Статьи/автор/id/статьи же не напишешь, тут три уровня вложенности.
Аноним 02/02/23 Чтв 23:10:20 2597532 232
>>2597371
Поправлю вопрос.
Как правильно писать пути в API?
Вот пример: в научном портале есть научные статьи - это главная сущность. У статей есть авторы.
Так как мы должны использовать логические вложения, а статья тут главная сущность, то получается, что
articles/authors
Но статьи и авторы имеют свои поля (пример: название, количество страниц, авторы для статей и имя, в каком ВУЗе учится/преподает для авторов) И мы должны уметь вносить изменения, добавлять, получать новые сущности статей и авторов.
Дело в том, что есть ограничения, нельзя использовать вложения третьего уровня. И так же не понятно, что делать, чтобы получить все статьи определенного автора.
Как пример: articles/authors/{id}/articles может ли подойти? Ведь тут articles повторяется, да еще, возможно, тут вложения третьего уровня (хотя я, если честно, не совсем понимаю, точно ли это, ведь второй articles тут выступает в своем роде в роли команды, мол покажи мне все статьи определенного автора).
Либо делать
articles/{id}/articles. Но тут получается, что есть и такой вариант и такой articles/authors,я не уверен, что это правильно?
Аноним 03/02/23 Птн 13:40:22 2597941 233
Сап линукс стоит год на основной машине. Терминалом пользуюсь, но многое все равно делаю через гуи. Как научиться делать всякие изощренные цепочки команд? Может есть какие-то задачки по типу "сделайте такую-то сложную операцию в терминале"? Кодить понемногу учусь, задачек полно, а с этим проблема.
Аноним 03/02/23 Птн 21:27:48 2598374 234
>>2597941
Научишься тогда, когда тебе это понадобится. К примеру, если будешь писать баш скрипты развесистые или мейкфайлы скажем.
Аноним 03/02/23 Птн 21:33:18 2598382 235
>>2597532
Эта хуйня про вложенные функции это во многом пережиток нулевых, когда все топили за REST, HATEOAS и прочее. История показала несостоятельность всего этого, потому что апи - это штука не для людей, а для машин, которым не важны такие "самоописуемые красивости".
В GRPC к примеру просто есть сервисы и методы у них.
Рекомендую тебе не запариваться и делать плоскую схему, отдельно `/users`, отдельно `/articles`.
Тем более что вложенность тут может быть вообще не очевидной. Что, если у статьи несколько авторов? А что, если статья написана не автором, а скажем импортирована откуда-то? И тд и тп. Короч плоская схема гибче и удобнее для всех.
Аноним 05/02/23 Вск 11:01:35 2599666 236
В регулярках htaccess используется тот же синтксис, как и в preg функциях пхп? Ну и что вообще можно годного почитать про работу с этим файлом?
Аноним 05/02/23 Вск 13:35:33 2599789 237
>>2599666
Там pcre, так что да.
Читать документацию, очевидно.
Аноним 05/02/23 Вск 14:24:13 2599844 238
>>2599789
Ну документация это для шарящих, а для тупых может какой гайд?
Аноним 05/02/23 Вск 20:17:44 2600286 239
Сап, завтра иду устраиваться на работу. Может кто-то рассказать как все это происходит ?
Собес уже был, и офер скинули. Я просто приду, попизжу с начальством, подпишу договор и все?
Аноним 05/02/23 Вск 20:18:59 2600292 240
>>2600286
скинули не офер, а предложение о работе(ну дали офер что аналогично вроде бы), ошибся немного
Аноним 05/02/23 Вск 20:24:28 2600301 241
Аноним 05/02/23 Вск 21:33:55 2600382 242
>>2600301
А что мне сказать когда я туда приду? Всем привет я новенький ?
(я омега жесткая если че, первая моя работка в жизни)
Аноним 05/02/23 Вск 22:19:11 2600435 243
Аноним 05/02/23 Вск 22:24:06 2600439 244
>>2600301
Не все. Самое интересное она не покажет.
Аноним 07/02/23 Втр 00:47:49 2601700 245
Вопрос по html, наверное. Проблема уже решена, но мне любопытно узнать о ней больше.

Итак. Решил я подреактировать книгу в epub-формате, хотел сделать курсивом стихотврные вставки.
И столкнулся с проблемой - теги <i> и <em> хоть и выделяют текст курсивом, но ломают его (в Суматре не отображаются первые буквы, а в телефоне отображаются, но некоторые буквы в средине слова почему-то выделяются жирным шрифтом, хуйня всякая).
Методом научного тыка и заглянув в другие электронные книги, поменял класс Z на Z1 и все пофиксилось.

Где можно прочитать про эти классы - Z и Z1, в чем разница? Гугл ничего не говорит, он знает только про z-index, но это что-то другое.
Аноним 07/02/23 Втр 07:35:03 2601791 246
Стикер 63Кб, 233x170
233x170
>>2571790 (OP)
По ларавелю есть ларакасты, по симфони есть симфоникасты, а что есть Yii внятное?
Аноним 07/02/23 Втр 11:17:15 2601939 247
>>2597371

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

И статья не вложена внутрь автора, так как у нее может быть много авторов.

Потому правильное решение тут сделать авторов и статьи отдельно:

/author/123
/article/123

Если тебе нужен отдельный URL для получения статей автора, можно сделать так:

/author/123/articles/ - вернет список статей.

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

А можно просто эти данные отдавать при запросе /author/123. У каждого подхода есть плюсы и минусы.

Пример вложенной сущности - это пост и коменнтарии к нему: /post/123/comment/456. И то, мы можем захотеть сделать раздел "последние комментарии" и тогда логичнее будет сделать комментарий отдельной сущностью.
Аноним 07/02/23 Втр 11:20:23 2601945 248
>>2597941

Изучи базовые команды работы с файлами вроде ls, cp, mv, rm, find, затем команды обработки строк вроде grep, sort, head, tail, wc, cut, sed, затем команды получения системной информации вроде ps, ip, mount, lsof, df, du.

Этого хватит для 80% случаев, когда тебе надо решить задачу вроде "вывести 3 процесса с наибольшим потреблением памяти" или "найти 5 самых больших файлов на диске".
Аноним 07/02/23 Втр 11:22:24 2601950 249
>>2599844

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

Если после 5 статей/уроков тебе все еще что-то непонятно, напиши здесь что именно непонятно, и я попробую помочь.
Аноним 07/02/23 Втр 11:23:50 2601955 250
>>2600382

Просто можешь сказать "привет". Ну и если кто-то подойдет к тебе, скажет, например "Иван" и пожмет руку, скажи в ответ свое имя и запомни его.
Аноним 07/02/23 Втр 11:24:42 2601961 251
>>2601700

Наверно, надо читать документацию по формату epub, так как я его не знаю.
Аноним 07/02/23 Втр 11:50:28 2601990 252
Аноним 07/02/23 Втр 19:57:49 2602848 253
Аноним 11/02/23 Суб 13:52:49 2607301 254
image.png 64Кб, 1446x688
1446x688
Можете пояснить почему указание класса впереди не засчитывает правильный ответ, а если его убрать засчитает?
Как мне тогда искать локатор в нескольких классах?
Аноним 11/02/23 Суб 17:45:10 2607613 255
Сап анон. Переодически слышу от разных людей, что пыха, мягко говоря, не самый хороший язык. Может кто рассказать, откуда такой хейт в сторону этого языка и почему? Сам писал на петухоне, когда только начал знакомиться с программированием, сейчас с недавнего времени пишу на Go в одной конторе, но чувствую, что останусь там ненадолго, поэтому посматриваю в сторону пыхи, чтобы вкатиться куда-нибудь уже через нее.
Аноним 11/02/23 Суб 17:48:49 2607616 256
>>2607613
Если ты пишешь как говоришь, то почему у тебя нет своего мнения на счет технологии? Такие воросы только вкатуны задают обычно.
Аноним 11/02/23 Суб 18:06:52 2607641 257
>>2607616
Все просто. Потому что я не пишу на PHP. Мне интересно мнение от людей, которые непосредственно работают с этой технологией, потому что они уже споткнулись о множество подводных камней.
Аноним 11/02/23 Суб 18:26:33 2607671 258
>>2607641
Ну тут тенденция перехода наоборот на го с пыхи, а ты назад собрался.
Аноним 11/02/23 Суб 19:27:12 2607719 259
>>2607613
Хейт потому что надо что-то хейтить. Хейтить имеет смысл только популярное, желательно, максимально доступное массам и имеющее какие-то альтернативы. Вот поэтому и хейтят пыху. При этом настоящие кривое в рот ебаное говнище говна из жопы, вроде крестов и жс, никто особо не хейтит, ведь в их парашных нишах альтернатив нет.
Аноним 12/02/23 Вск 10:45:48 2608173 260
>>2607613
Гугли "Фрактал плохого дизайна"
Аноним 12/02/23 Вск 10:49:51 2608176 261
>>2608173
Ну раз фрактааааааааааааааал, то все - пиздец!
Аноним 12/02/23 Вск 11:56:40 2608266 262
Можно ли вкатываться в 2023? Когда то давно пытался вкатиться в пхп, но забил (у меня депрессия тогда была). Смотрю ща вакансии, чет не много совсем, а на джунов вовсе ноль.
Стоит?
Аноним 12/02/23 Вск 12:17:50 2608302 263
>>2608266
>Смотрю ща вакансии, чет не много совсем, а на джунов вовсе ноль.
Это ты где такое смотришь? И на хх, и на хаброкарьере и в тг-каналах есть вакансии для джунов. Я в пятницу сделал первый отклик, на следующей неделе пойдут первые собесы.
Думаю, вкатыватсья стоит.
Аноним 12/02/23 Вск 13:11:15 2608379 264
>>2608302
Не все живут в ДС внезапно. В моей мухосрани 0 вакансий джуна.
Аноним 12/02/23 Вск 13:23:32 2608398 265
>>2608266
есть одно простое правило как понять, стоит ли вкатываться или нет: не стоит вкатываться тем, кто спрашивает, стоит ли

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

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

я видел много успешных прогеров, которые стеснялись спросить что-то толковое по делу, но не могу вспомнить еще ни одного состоявшегося "стоитливкатываться"
Аноним 12/02/23 Вск 13:46:43 2608413 266
>>2608398
Чел ну как бы... можно и вкатиться в переводчика с исландского на русский.. тока вряд ли я работу найду такую. Смекаешь о чем я?
Аноним 12/02/23 Вск 14:01:47 2608435 267
>>2608413
Продолжай работать курьером, кто тебе не дает, даунище.
Аноним 12/02/23 Вск 14:03:56 2608439 268
>>2608413
Почему? Будешь бородатым переводчиком, похожим на моряка, разъезжать по нефтянным платформам в океяне вместе с очень богатыми кабанами.
Аноним 12/02/23 Вск 14:12:20 2608458 269
>>2608413
Бля, чел.
Я вот сам пока не вкатился, но даже для меня очевидно, что в таком случае надо самому чекнуть вакансии на рынке, количество откликов на одну вакансию, порог входа и динамику на рынке - из этого делаешь выводы и вкатываешься(в твоём случае). Может какие подводные есть, тогда спрашивай по сути.
Вот как ты сам бы ответил на вопрос "Можно ли вкатываться в 2023?"
Как по мне на PHP в целом потупее конкуренты, можно выделится. Да и ~10-20 человек на вакансию всего(в сравнеении с другими бекенд языками где по 100 человек), ЗП тоже не сильно отличается если не планируешь всю жизнь на цмске сидеть. Но это для рынка в моей стране, у тебя по другому может быть.
Аноним 12/02/23 Вск 15:44:15 2608607 270
>>2608379
Да я и не в ДС, ты на удаленке смотри
Аноним 12/02/23 Вск 23:21:58 2609191 271
>>2584862
>Битрикс здесь использую как имя нарицательное,вместо него можно подставить разные технологии и даже языки
Какие еще например?
Аноним 13/02/23 Пнд 11:20:42 2609492 272
Почему пхпшники перекатываются в го?
Аноним 13/02/23 Пнд 17:14:59 2609898 273
>>2609492
потому что похожие, потому что го многопоточный, современный язык и красивый. в рф он довольно востребован и оплачиваем
Аноним 14/02/23 Втр 21:01:53 2611428 274
>>2608266
> Можно ли вкатываться в 2023? Когда то давно пытался вкатиться в пхп, но забил (у меня депрессия тогда была). Смотрю ща вакансии, чет не много совсем, а на джунов вовсе ноль.

Джуны больше не нужны (уже лет пять как), единственный вариант наебать с опытом но это сложнее чем сам вкат хех
Аноним 15/02/23 Срд 01:59:06 2611668 275
>>2611501
>хорошего, качественного джуна
Где посмотреть критерии подразумевающие качественность?
Аноним 15/02/23 Срд 21:11:02 2612813 276
>>2611668
Вообще у разных контор они могут отличаться, но нанимай я джуна (обычно впрочем не нанимаю), то мыслил бы так:
Чего я хочу? Чтобы он приносил какую-то пользу.
Чего я не хочу? Чтобы он ебал мне мозг или тратил моё время сверх необходимого.

Соответстенно, у хорошего джуна я бы ожидал хорошее понимание основ и, главное, концепций. Что такое клиент-сервер, миграция, мок, транзакция в базе и тд.
Чтобы можно было ему написать "Нужно сделать ручку в апи, которая делает вот это, в рамках транзакции и ещё нужно будет адвизори лок на вот это сделать, а то вот тут рейс кондишен будет. Ну и тест потом напиши, вот этот сервис надо будет замокать" и джун не просил значение прям каждого из слов, а мог пойти и попробовать по аналогии с уже существующими ручками/тестами что-то написать, какой-то псевдокод и прийти ко мне с уже более осмысленными вопросами.
К примеру "ты сказал, что нужен адвизори лок, как это правильно сделать вот тут? Мне нужно прям в методе репозитория для такой то сущности его реализовать?". А я бы ответил "нет, у нас используется компонент Locker для этого, подключи его через DI и юзай, вот тут смотри примеры использования".

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

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

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

Может показаться, что тут много всего, но то, что джун же первое время работает в минус работодателю - это к сожалению не шутка, я от самих владельцев бизнеса слышал, что средний джун вообще в принципе начинает работать в плюс в среднем через год после найма. А всё это время ему платят запрлату и он ещё и отвлекает других сотрудников, причем зачастую они тратят от трети до половины своего времени на менторство. Отсюда и надо действовать.
Аноним 15/02/23 Срд 21:14:47 2612817 277
>>2612813
> средний джун вообще в принципе начинает работать в плюс в среднем через год после найма. А всё это время ему платят запрлату и он ещё и отвлекает других сотрудников, причем зачастую они тратят от трети до половины своего времени на менторство
И при этом кстати половина джунов через полгода-год любит уволиться или потому что поняли, что это не их или потому что внезапно решают поменять работу. И ещё часть джунов же не справляется и их приходится увольнять, то есть они в принципе не окупились.
Поэтому нет ничего удивительного в том, что джуну сложно найти работу, для работодателей джуны это боль и гемор зачастую.
Аноним 16/02/23 Чтв 00:14:55 2612909 278
>>2607613

Все языки мягко говоря, не самые хорошие. Почитай статью: https://habr.com/en/post/315152/

В Go я, например, не могу терпеть дебильную привычку писать часть свойств с маленькой буквы, а часть с большой. Идиотизм какой-то.
Аноним 16/02/23 Чтв 00:17:43 2612911 279
>>2607301

Может быть, там просто заложен определенный ответ?

Мне не нравится твое решение, так как ты написал "третий элемент с конца", в то время как тебя просили найти "первый элемент bento". То есть, ты делаешь не то, что требовалось. Если на стол добавить пару других элементов, и бенто перестанет быть третьим с конца, то твой селектор перестанет работать.

Тут бы больше подошел https://developer.mozilla.org/ru/docs/Web/CSS/:nth-of-type
Аноним 16/02/23 Чтв 01:17:40 2612946 280
>>2612909
У го есть много черт, за которые его можно справедливо критиковать, но чего я не понимал никогда, так это критики блять маленькой и большой буквы. Это как критиковать php за $ перед переменной.
Казалось бы, какая разница, писать Property или вместо public property?
Кстати, по опыту (на го пишу уже несколько лет), первое потом даже легче воспринимается на месте использования, а не объявления. Примерно как с php, кстати, глаз тренируется цепляться за $ и код очень легко читать.
Аноним 16/02/23 Чтв 01:36:17 2612952 281
>>2612946
На пхп и перл много пиздели про сигилы, а когда интреполяцию переменных влепили почти во все популярные языки, то как-то притихли.
Аноним 18/02/23 Суб 20:24:35 2615817 282
>>2574114
Вот вроде здесь чел говорит, что сейчас на битриксе можно писать нормально. Пиздит? Или конторы говно и не могут в нормальную разработку?
https://youtu.be/Jx-Us1Hs8-U?t=25
Аноним 18/02/23 Суб 20:51:19 2615875 283
>>2615817
Битрикс никогда не переписывался. Что значит это твоё "сейчас"? Как было - так и осталось.
Аноним 18/02/23 Суб 21:09:16 2615910 284
>>2615875
Новое ядро D7? Или оно тоже старое?
Аноним 18/02/23 Суб 21:11:05 2615915 285
Аноним 18/02/23 Суб 21:11:58 2615918 286
>>2615910
У них даже в документации написано, что не весь функционал перенесли, не все доки. Это все сыро.
Аноним 19/02/23 Вск 16:23:59 2616719 287
>>2571790 (OP)
Насколько быстро можно вкатиться в битрикс, если я неплохо знаю пхп для вкатуна, и на базовом уровне знаю ларавель (состряпал небольшой круд с аутенификацией, которая из коробки)? С джуновскими вакансиями сейчас не оч, а на те что есть на удаленке 100-200 откликов.
Аноним 19/02/23 Вск 20:05:34 2617082 288
>>2615910
>D7
Лол, тупо для маркетинга высрали тонну говнокода с ООП ради ООП, который под капотом использует весь предыдущий говнокод, забили хуй на полпути и в итоге получили переплетение D7, говна мамонта и окаменелого говна мамонта
Аноним 19/02/23 Вск 20:38:13 2617124 289
Если рендерить шаблоны на сервере и отдавать их фронтенду по ажаксу, а там уже в dom их руками встраивать. Часто такое практикуется?
Аноним 19/02/23 Вск 20:40:00 2617128 290
>>2617124

В этом есть плюсы, например, не надо писать огромное JS приложение, не надо утяжелять им страницу. Более того, уже есть готовая библиотека (pjax) для этого.

Практикуется редко.
Аноним 19/02/23 Вск 21:06:50 2617171 291
>>2617124
Вроде livewire примерно так работает
Аноним 19/02/23 Вск 21:35:52 2617197 292
Что почитать про использование ajax в пхп? Особенно когда приходит ответ и в зависимости от него разное поведение на конечной странице.
Аноним 20/02/23 Пнд 13:32:17 2617581 293
>>2571790 (OP)
Почаны, а вы перед тем как вкатиться на первую работу учили все эти там Kafka, микросервисы хуе мое?
Аноним 20/02/23 Пнд 13:45:33 2617590 294
>>2617581
Когда пыханы вкатывались, до микросервисов и прочей хуйни было ещё срать и срать.
Аноним 20/02/23 Пнд 20:09:23 2618088 295
>>2617581
На пыхе оно не особо часто используется, если не брать крупные компании.
Большинство вакансий на пыхе - это один монолит среднего размера на symfony / laravel и слава богу, всем бы так
Аноним 20/02/23 Пнд 21:26:28 2618150 296
>>2617590
>>2618088
Спасибо большое, теперь понятно почему в шапке про микросервисы и Kafka и прочее подобное ничего не написано.
Аноним 20/02/23 Пнд 21:39:46 2618157 297
iScreen Shoter [...].jpg 257Кб, 666x926
666x926
Битриксоид на техподдержке. Полагаю, до тех пор, пока магу не закончу.
Недавно столкнулся с таким приколом
Аноним 20/02/23 Пнд 22:25:50 2618177 298
>>2618157
Беги оттуда, это всё, что можно посоветовать. Ты приобретешь очень мало полезного опыта, по сравнению с тем, что мог бы приобрести.
Я с 3 курса уже работал в аутсорсе, в итоге к окончанию маги уже был миддл+ левела и имел в портфолио проекты всяких крупных европейских и американских контор типа johnson & johnson.
Хороший старт по сравнению с теми одногруппниками, которые только начали искать работу после окончания маги. Подозреваю, что обгоняю большинство из них по зп на ~200к, но мне ещё пару раз везло с работодателями уже после аутсорса
Аноним 20/02/23 Пнд 23:07:54 2618214 299
>>2618177
Я не он но джунов/интернов не берут на удаленку, а тут у меня в глубинке только битрикс.
Аноним 20/02/23 Пнд 23:48:07 2618260 300
>>2618214
С чего взял, что тебя возьмут в удаленку на битрикс?
Аноним 21/02/23 Втр 00:06:53 2618270 301
>>2618260
Не возьмут конечно, вот я пишу поэтому про локальные доступные вакансии.
Аноним 21/02/23 Втр 16:03:43 2618751 302
>>2618214
Нехуй жить в глубинке, что сказать. Как бы, по определению, в глубинке меньше хороших вариантов и больше всратых.
По увеличению качества работодателей и суммы зп: Штаты > Европа > Москва > прочая Российская глубинка
Кстати, универов это тоже касается.

> у меня в глубинке только битрикс.
А только ли он? Хз, скажи название глубинки
Аноним 24/02/23 Птн 00:35:36 2621104 303
>>2621093
Смотря что ты понимаешь под битриксом, но вообще нет. Битрикс - кусок говна и crm.
Ларавел - неплохой фреймворк.
Это в первую очередь разные инструменты, с, во вторую очередь, различным уровнем качества исполнения.
Аноним 24/02/23 Птн 02:51:35 2621152 304
>>2621114
Да ты тоже собственно кусок говна, если говорить прямо. Чего уж там...
Аноним 24/02/23 Птн 11:39:05 2621285 305
Аноним 24/02/23 Птн 13:41:41 2621378 306
>>2621152
Сначала научись правильно реплаить
Аноним 24/02/23 Птн 17:44:01 2621629 307
Есть ли у Laravel объективные плюсы перед Bitrix кроме бесплатности? У Bitrix тоже есть ORM, контроллеры, роутинг, middleware, кеши, итд, но в дополнение еще идет множество разных интеграций, готовы компоненты, админка.
Аноним 24/02/23 Птн 18:11:51 2621649 308
Поясните, пожалуйста, какая связь 1С, Битрикса и PHP? Есть смысл иметь стек из всех трех технологий? Сам зеленый-вкатыш в 1С, но часто в ваках мелькает и битрикс и пхп и всё остальное, что с пхп связано.
Аноним 24/02/23 Птн 18:17:36 2621653 309
>>2621649
1С это желтая программа, там всякая бухгалтерия, учеты итд

Под 1С Битрикс может подразумеваться два продукта "1C-Битрикс Управление Сайтом" (БУС/CMS) и Bitrix24 (CRM), при этом второй сделан на основе первого

БУС и CRM написаны на PHP, и дорабатываются на нем же. 1С написан на С++ и дорабатывается обычно на своем встроенном языке 1С.

1С и 1С-Битрикс и Bitrix24 могут работать отдельно, но часто их связывают Bitrix24 (CRM) + БУС (Интернет магазин) + 1C

Можно знать что то одно и спокойно работать, а можно знать всю связку, если сможешь применить свои знания, то смысл иметь будет.
Аноним 24/02/23 Птн 18:23:17 2621659 310
>>2621653
А если я знаю игру Ил-2 Штурмовик это поможет с Битриксом?
Аноним 24/02/23 Птн 18:29:30 2621661 311
>>2621649
>>2621653
Че ж ты самое главное не написал: приставка "1С" у битрикса это разводка для гоев, чтобы они думали что если у них есть бухучет 1С, то сайт будет легко интегрировать, типа совместимые продукты.

Что разумеется не так и битрикс имеет такое же отношение к 1С как к >>2621659 Ил-2 Штурмовик.
Аноним 24/02/23 Птн 19:15:07 2621682 312
>>2621629
Лара это не локальный инструмент.
Аноним 24/02/23 Птн 20:09:48 2621739 313
>>2621661
Хуйню несёшь, ты наверное видел только 1с бухгалтерию, а надо управление торговлей, вот именно она интегрируется с битриксом из коробки
Аноним 24/02/23 Птн 20:14:50 2621753 314
>>2621739
Я другой анон, хотел спросить вот что - ты учил всю эту 1С-ную подноготную? Ну там 1с бухгалтерия, 1с управление предприятием, 1с кадры, 1с управление тороговлей?
Аноним 24/02/23 Птн 20:51:01 2621816 315
>>2621753
Ну да, а вопрос в чем?
Аноним 24/02/23 Птн 20:56:57 2621823 316
>>2621816
Какой ужас! Ещё что ли и весь это звиздец один ассный надо знать на зубочек? Чтоб в этой стране работать на пхп
Аноним 24/02/23 Птн 21:03:49 2621833 317
>>2621823
С точки зрения программиста они ничем не отличаются, во-первых. Во-вторых, программисту нужно уметь все, а не какой-то один пхп
Аноним 24/02/23 Птн 21:19:41 2621853 318
>>2621833
Значит пока я вкатываюсь в пхп мне надо на работу устроиться оператором 1С чтобы изнутри узнать подноготную всех этих 1С программ! Как они работают - как в них работать
Аноним 24/02/23 Птн 23:53:15 2622053 319
>>2621739
>Хуйню несёшь, она интегрируется с битриксом из коробки
Сильное заявление. То есть этот модуль не кусок говна, который просто не будет работать по миллиону причин, а прямо из коробки все у него охуенно? А доказательства этому какие-то есть?

А то я как не напишу в гугле "битрикс интеграция с 1С" так там обязательно кто-нибудь рассказывает про газовую еблю длинной в месяц, подводные камни или вообще советует писать самому. А на официальном форуме самая популярная тема с гигантским отрывом это тот самый "Модуль обмена для БУС". 4к ответов 5 лямов просмотров https://dev.1c-bitrix.ru/community/forums/forum26/ . Наверное люди просто "спасибо" пишут. При этом в теме по обновлениям документации всего 500к просмотров, кек.

Коробочное решение, ага. Ищи его на Говнокод.ру бесплатно без писечек и смс.
Аноним 25/02/23 Суб 01:37:48 2622133 320
>>2621649
Разделяй эти вещи. PHP это язык программирования, одна история. На этом языке написана CMS (то есть некий конструктор для создания сайтов), это вторая история.
Битрикс принадлежит компании 1С, это третья история.

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

Про 1С ничего конкретного сказать не могу, это компания с кучей продуктов. К примеру, "1С предприятие" и аналоги это видимо стандарт на СНГшном пространстве и от них не уйти. Но программирование этих средств для автоматизации предприятий и бухгалтерии - это отдельная штука и с битриксом общего не имеет.

>>2621629
Главное, это очень разные вещи, примерно как раскладной столик (битрикс) и чемоданчик с инструментами (лара). То есть, первое - это конструктор для создания сайтов и заточен он на конкретно создание сайтов и управление сайтами, возврат веб страничек с содержимым, управление страницами, стилизацию этого дела и тд и тп. Со скидкой на то, что это очень грубый инструмент, потому что заточен под "накликивание". А второе это фреймворк, то есть набор компонентов/инструментов, с помощью которых ты можешь делать сайты, апи, телеграм ботов, бекенд для игр лол и тд и тп. Ты сейчас скажешь, что на битриксе тоже есть все эти компоненты, но проблема в том, что они там есть довольно условно, их никто и никогда не создавал с мыслями об универсальности, они написаны исключительно для того, чтобы быть в составе битрикса и хорошо исполняют только эту задачу. С CMS вообще это популярная проблема, ты 30% времени ставишь новый модуль, а потом 70% времени сражаешься с ним, пытаясь заставить его делать не то, что он хочет, а то, что тебе нужно. С фрейморком ты простом сам запрограммируешь себе нужную логику под задачу.

Другое различие это качество. Лара - это один из двух самых популярных и качественных фреймворков на php. И при этом из этих двоих он несколько дружелюбнее к новичкам. При этом он известен и популярен по всему миру.
А битрикс - это популярная только на постсоветском пространстве (то есть никаких западных заказчиков с $$$ нет и быть не может, что влияет на зарплаты) штука. По качеству она точно не входит в топы даже среди CMS. И по сравнению с точки зрения просто качества исполнения программного продукта, ларавел гораздно лучше запрограммирован, чем битрикс.
Аноним 26/02/23 Вск 07:46:40 2623081 321
PHP будем изучать
Аноним 26/02/23 Вск 18:09:56 2623715 322
Аноним 26/02/23 Вск 19:49:31 2623897 323
Как проще всего реализовать проверку регистрации? Чтобы при переходе по ссылке отображалась страничка что нужно регнутся для просмотра
Аноним 26/02/23 Вск 20:08:38 2623951 324
>>2623897
Смотря на чём ты разрабатываешь. В двух словах, маркируешь страницы или пути в роутере или allow-auth-only, или allow-everyone.
Потом в отдельной подсистеме (в условном middleware, хотя зависит от архитектуры твоего фреймворка) проверяешь, если текущий путь allow-auth-only, а текущий пользователь это аноним - то выкидываешь или ошибку, или вызываешь фоллбек на показ страницы с инфой о том, что путь закрыт для анонимов. Лучше выкидывать ошибку (скажем 403, но оно конечно зависит) и потом просто задать для такой ошибки рендеринг в виде страницы с инфой.
Аноним 26/02/23 Вск 21:28:05 2624059 325
>>2623897
if (empty($_SESSION['login']) {
header("Location: /register.php");
die;
}
Аноним 26/02/23 Вск 21:55:37 2624101 326
>>2622053

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

То есть, по моему ты просто не понимаешь сложности проблемы, а спешишь объявить, что 1С "кривой", потому что его авторы не смогли заложить возможность обмена чем угодно с чем угодно.
Аноним 26/02/23 Вск 22:14:40 2624111 327
>>2624101
Это не фреймворк даже если они пытаются его так называть, а CMS, прекрати блять путать людей. Это пиздец какая натяжка. С этой точки зрения и джумла фреймворк, и вики-движок фреймворк и вообще всё что угодно фреймворк.
Аноним 26/02/23 Вск 22:59:54 2624148 328
Аноним 26/02/23 Вск 23:21:57 2624153 329
>>2624148
Да я вроде серьезно...
магистр разработчик битрикс
Аноним 27/02/23 Пнд 00:46:42 2624196 330
>>2624101
>Возмжно, проблема в том, что "1С" это не одна программа, а фреймворк
Ну во первых я ничего не писал про 1С, хотя там тоже свой атмосфера. Я написал что "битрикс" никакого отношения к 1С не имеет, а приписка "1С" это наебка чтобы заманить клиентов, которым нужна функция обмена, на свое говно. Написанное десять лет назад школькниками за дошик.
Аноним 27/02/23 Пнд 09:34:40 2624309 331
screen.jpg 57Кб, 818x214
818x214
Как фиксить? Пробовал обычны фтп и сфтп
Аноним 27/02/23 Пнд 18:05:52 2624813 332
>>2624309
Запостить не инфу, что где-то была ошибка, а текст и код самой ошибки
Аноним 28/02/23 Втр 15:25:20 2625838 333
Как правильно с урлами обходится? Вроде как если идёт речь о директории то должен быть слеш в конце example.com/dir/, а если файл то не должен - example.com/page.html, но сейчас понятно что никто .html файлы не использует и на разных сайтах вижу разное и example.com/page?param=value и example.com/page/?param=value. И как с корнем правильно - example.com/ или example.com?
Аноним 28/02/23 Втр 18:15:38 2626029 334
>>2625838
Это всё херня из интернета девяностых и нулевых, когда это ещё были прям веб странички, которые тебе возвращал сервер.
Сейчас уже пути, которые ты видишь в браузере не имеют вообще и тотально никакого смысла, потому что нет ни отдельных страниц (только роутинг и рендеринг на сервере), ни даже реального контента по этим путям (всякие js приложения рисуют или управляют этими путями как угодно).
Поэтому правило одно - чем проще людям и чем меньше избыточности, тем лучше.
То есть, никаких лишних знаков, слешей, расширений.
https://www.google.com/a/b.html -> https://google.com/a/b
https://google.com/ -> https://google.com
Аноним 28/02/23 Втр 21:36:32 2626256 335
Аноним 01/03/23 Срд 00:00:33 2626371 336
>>2626279
Ничего лучше сделать html а потом вызвать wkhtmltopdf в докере ещё для этой задачи не придумано, сорян.
Аноним 01/03/23 Срд 13:44:11 2626631 337
>>2626371
html статикой тоже надо поднять веб сервисом в докере, иначе как лох.
Аноним 01/03/23 Срд 16:03:25 2626736 338
Когда я изучаю новую технологию, я по привычке, оставшейся от школы и универа, делаю краткие конспекты по ней (например, знакомясь с Redis, записываю в txt-файл самые полезные опции конфига, основные CLI-команды и функции).
Вроде бы в документации это всё уже есть, но там либо много избыточной и сложной инфы (которой я никогда в жизни не воспользуюсь), либо наоборот недосказанность (не поясняют человеческим языком, как это юзать). К тому же своё говно роднее если долго не работал с технологией и надо быстро освежить память а память у меня как у печеньки , то на руках этакий мини-справочник.
Но минус: технологии меняются, и мои шпаргалки становятся либо неполными, либо неактуальными. Приходится следить за апдейтами технологий и тратить время на правки, да и создавать их тоже долго.
Вопрос: я занимаюсь фигнёй и стоит отвыкать от такого подхода, или смысл в этом есть?
Аноним 01/03/23 Срд 19:43:17 2626947 339
>>2626736
Это только тебе решать.
Аноним 01/03/23 Срд 23:07:50 2627152 340
>>2626957
> В итоге нашел какую-то говнолибу для пдф
В этом и проблема, говнолибы позволяют добиться неких результатов, но в итоге ты просто упираешься в то, что в либе или чего-то нет, или что что-то хуёво работает и всё, приехали. То есть, ты сможешь делать пдфки, но не сможешь делать хорошие пдфки.

При этом варианты, запускающие хедлесс хром или анаглоги хороши тем, что html позволяет тебе сверстать и отдебажить через Ctrl+P прям в хроме что хочешь (можешь даже js запускать внутри страницы, чтобы что-то подправить), а хром гарантированно качественно рендерит pdf.
Если у тебя проект не маленького размера, то полюбому есть какая-нибудь очередь задач, самописаня на раббите, gearman, celery, что угодно. Просто создаешь там таск, который делает docker run -it wkhtmltopdf и получаешь пдфку.

Кстати, если тебе нужно показать пользователю pdf прям в реалтайме, то тебе вообще не нужны никакие либы, показываешь ему html и браузер пользователя сам соберет из этого pdf, примерно так:
https://stackoverflow.com/questions/42324435/using-js-to-print-page-as-pdf-in-chrome-and-open-it

>>2626736
Это помогает, когда ты совсем зеленый джун. Со временем понимаешь, что во первых инструментов настолько дохуя и они нсатолько часто меняются, что ты заебешься это все поддерживать и актуализировать, во вторых, научишься быстро читать спеки и в третьих уже будет достаточно опыта, чтобы представлять, что ты хочешь сделать, как оно называется и где оно лежит, поэтому любую инфу просто одним коротким запросом из гугла тебе будет быстрее достать, чем копаться в своих самописках.
Короче, болезнь новичка и пройдёт.
Аноним 02/03/23 Чтв 06:56:24 2627297 341
Аноны нужно ваше мнение
Я сильно хлебну говна при переходе на лару с симфони?
Аноним 02/03/23 Чтв 13:00:53 2627600 342
Аноним 02/03/23 Чтв 13:23:36 2627624 343
>>2627297
Нет, но лучше сразу на спринг переходить.
Аноним 02/03/23 Чтв 13:25:35 2627626 344
>>2627624
а БЛЯ прочитал ЖОПОЙ...
>при переходе с лары на симфони
Аноним 02/03/23 Чтв 19:37:56 2627889 345
Не знаю, тут ли спрашиваю, но в htaccess rewrite rule работает только одно после группы условий? Мне нужно объединить 2 разных rewrite в один, если у первого не ставить флагов, а второму задать r=301,L - это будет работать?
Аноним 02/03/23 Чтв 20:28:31 2627942 346
Подходит ли сей язык для быстрого вката с последующим унижением на собесах или работе за Доширак на фрилансах? Или же есть языки программирования приносящие профит быстрее?
Аноним 02/03/23 Чтв 21:30:16 2627986 347
>>2627942
Твоя ошибка в том, что ты хочешь выучить один язык, это так не работает
Аноним 02/03/23 Чтв 21:36:51 2627989 348
Симфони в офисе или битрикс на удаленке - куда сам сядешь, куда джуна посадишь?
Аноним 02/03/23 Чтв 22:48:03 2628049 349
>>2627989
Если от этой жизни чего-то хочешь, то бери симфони. В офис походить пару лет не очень западло, зато потом человеком будешь.
А битрикс это как подсесть на хмурого, закончишь в бомжатнике с разрушенной нервной системой.

>>2627942
В любом случае быстро не получится. Даже не так, задрочить что-то простенькое и потом сидеть на 40к в месяц можно изи, но тебе ведь не это надо?
А для хороших рейтов нужно что-то уметь и для этого нужно многому научиться, во многом разобраться и при этом перестроить мышление на алгоритмическое, что непросто, если тебе не повезло со школой и в школьные годы этому не научили.
Ещё программирование на любом стеке - это работа с целым набором технологий, всегда используешь какие-то протоколы, какие-то базы данных, какие-то разметки и файлы конфигурации и тд и тп. В-общем один "язык" ничего не решит, как тебе правильно сказали выше.
Решит знание базы, которая +- одинакова везде (алгоритмы и структуры данных, сети и прочее) и при этом знание технологий конкретного стека.

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

>>2627889
Ну ты спросил, кто-то вообще использует апач. Офигеть. Я думал, что все уже на nginx пересели, лет 10 назад. по-моему все rewrite rule применяются последовательно, но могу сильно наврать

>>2627297
В целом нормально, хотя и не огонь. Чуть менее академично и чуть более грязно (всё-таки их фасады и работа через static это ну такое), но не критично. Если на ларе больше предлагают или проект интереснее (или просто больше/сложнее), то переходи.
Аноним 02/03/23 Чтв 23:02:15 2628063 350
Как реализовать доступ к файлу по ссылке, типа как у гугл диска?
Просто добавить страницу в игнор robots.txt норм будет если в урле uuid и ссылка доступна в течении суток?
Вроде рандом чел не сможет найти такую ссылку, даже если будет брутфорсить?
Аноним 02/03/23 Чтв 23:09:35 2628072 351
>>2628049
>Ну ты спросил, кто-то вообще использует апач. Офигеть. Я думал, что все уже на nginx пересели, лет 10 назад.
А там как редиректы делаются?
Аноним 03/03/23 Птн 00:18:11 2628131 352
>>2628072
Да обычно тоже через rewrite, просто htaccess это чисто апачевская тема, я на неё и триггернулся

>>2628063
Да даже в robots.txt можешь не добавлять, гугловый краулер никогда не узнает о ней и потому никогда туда не перейдёт. Так что да, решается генерацией особо уникальной ссылки, если не вспоминать уже про авторизацию и нарезку доступов к ссылке по пользователям.
Аноним 03/03/23 Птн 06:49:39 2628217 353
>>2628131
>Да даже в robots.txt можешь не добавлять, гугловый краулер никогда не узнает о ней
Ошибка вот так думать. Лично видел как приватные страницы с uuid'ами в ссылке попадали в выдачу гугла. Лучше сразу подумать есть ли там что-то критичное и закрыть доступ на всякий.
Аноним 03/03/23 Птн 08:42:35 2628263 354
>>2627989
Мать на Yii - сам на колени!
Аноним 03/03/23 Птн 18:18:26 2628758 355
Доставьте годный мануал как максимально просто и быстро запилить регистрацию с авторизацией, в гугле и ютубе слишком много говна пихают
Аноним 03/03/23 Птн 19:36:30 2628801 356
>>2628217
Да, они могут все равно попадать через третьи страницы. Надо meta тег добавлять noindex nofollow
Аноним 03/03/23 Птн 19:41:46 2628807 357
Тимлиды, подскажите чё должен знать мидл? Я так понимаю технологии на первом месте, а потом уже задрачивается архитектура приложения/бд?
Я вот начал учить redis, memcached, rabbitmq. На первый взгляд достаточно простые в использовании штуки, разве что пока не понимаю как работает репликация, но это, наверное, только для высоконагруженных приложений актуально.
Достоин ли я буду звания мидла после изучения и практики вышеперечисленных вещей?
Аноним 03/03/23 Птн 22:54:38 2629004 358
>>2628807
И практики? Покажешь практику?
Аноним 04/03/23 Суб 00:12:12 2629071 359
>>2628758
Да, когда к тебе на хату заходит новое тело, кидай ему под ноги полотенце. Если перешагнет - значит можно авторизовать.

>>2628807
Нормально базу (алгоритмы и структуры, плюс конечно же паттерны, хотя бы gof), нормально язык (стандарты и практики), нормально экосистему (самые популярные либы + свой фреймворк, включая его архитектуру и бест практисы), нормально сети (http1, 1.1, 2, https как минимум), нормально базы и очереди (хотя бы одну postgres/mysql/oracle/sqlserver + сам по себе sql как стандарт, ну и какой-нибудь rabbitmq или kafka. Redis или memcahed уже бонусом), нормально сопредельные технологии (git + git workflow, nginx, docker).
> На первый взгляд достаточно простые в использовании штук
Если забыть про acid, нормальные формы, уровни изоляции, индексы, оптимизацию запросов и вообще представление того, как работает планировшик, всякие особенности конкретного движка типа вакуума в постгре и тп. Ну и репликация, шардирование и партиционирование туда же, бонусом.
Ну и наверное нужно понимать что-то про архитектуру, хотя бы те же паттерны, что-то слышать про ddd и вообще, структурирование домена, понимать, какая у вас используется архитектура (MVC к примеру или MVP, хотя это больше мобильная тема) и почему именно она. Слышать что-то про active record и почему это плохо. Про тот же DI знать и про разделение ответственностей между компонентами.
Аноним 04/03/23 Суб 00:17:38 2629076 360
>>2629071
А, и я забыл пункт "радуешься, что пишешь на кастрированном языке и тебе особо не нужно учить особенности гц, рантайма, планировщика и тому подобные штуки".
Пехапешникам на внутренности языка как правило похуй, хотя иногда всякие дрочилы на собесах любят спросить как массивы работают под капотом.
Аноним 04/03/23 Суб 06:12:17 2629116 361
>>2629071
А на сениора тогда что надо?
Аноним 04/03/23 Суб 06:22:49 2629119 362
>>2627942

Подходит. Я так вкатился, сначала делал сайты в вебстудии за 20 тыщ, потом перешел в парашу на laravel за 80 тыщ, потом перешел в крупную компанию с дохулиардом кода на 250 тыщ.

Щас вот думаю куда дальше развиваться. В крупнопараше боюсь застрять. Я уже начал петпроджекты писать потому что с работой в крупняке забываешь че такое базы данных, забываешь че такое верстка, и так далее. Потому что не пользуешься. Ты пишешь пакет composer который другие ставят через composer require
Аноним 04/03/23 Суб 13:18:44 2629414 363
>>2629116
Да в целом то же самое, но на более глубоком уровне. Условно, на миддла я бы ждал от тебя ответа на то "как и когда использовать индексы в бд", а на сеньора "как они работают, какие их типы бывают и какими ограничениями обладают, что такое селективность, когда имеет смысл их создавать, а когда это вредно, что, если их слишком много, что делать, если деградирует запись, что делать, если деградирует чтение" и тд и тп..
Аноним 04/03/23 Суб 14:55:41 2629474 364
image.png 2301Кб, 1200x1600
1200x1600
>>2629414

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

Вот вам нужно спроектировать приложение для института информационных технологий. Там должна быть интеграция с гитхабом, возможность проходить тесты, сдавать лабы и тд. Ну и вопросы.
Аноним 04/03/23 Суб 15:42:48 2629518 365
>>2629474
Не спрашивают.
Спрашивают все тот же солид и ебут загадками на индексы в базе.

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

Скорее всего спросят твое мнение по некоторым вопросам, типа нужны ли тесты, пидар ли мартин, в гробу какого цвета ты видел пср стандарты. И если твое мнение кого-то не устраивает, то скажут что перезвонят. Это гораздо эффективнее чем часами ломать голову над какими-то прожектами тех с кем ты срать в одном офисе не стал бы.
Аноним 04/03/23 Суб 16:24:07 2629549 366
>>2629474
> У синьки спрашивают системный дизайн
Одно из - да. Но всё остальное, что я сказал, тоже спрашивают. Норма это 2-3 собеса, алгоритмы, технологии и дизайн.
Аноним 04/03/23 Суб 22:47:31 2629999 367
На какую ЗП может расчитывать ПХП-джун?
PHP, MySQL(EAV, NS, AL, MP), Docker, RabbitMQ, Yii2, Регулярные выражения, JS (es5), CSS, HTML, GIT, Debian, SSH, Xdebug, Smarty, SOLID и другие паттерны по категориям, Codeception/php-unit
Аноним 04/03/23 Суб 22:48:38 2630000 368
>>2629999
А, еще nginx+php-fpm куда ж без них
Аноним 04/03/23 Суб 23:45:34 2630041 369
>>2629999
Все эти волшебные слова ничего не гвоорят, потому что непонятно, насколько глубоко ты это всё знаешь. Кстати, любопытно, что ты ничего не написал про алгоритмы или паттерны. я бы просто из любопытства глядя на такое резюме попросил тебя синглтон реализовать
Вообще мне казалось, что в регионах джун может расчитывать примерно на 50к +- 20к в зависимости от своих скиллов, стека и везения/степени захолусться, в котором он живет. Ну и в Москве и Питере умножай на 1.5-2 всё, и доходы, и траты.
Сейчас правда с рынком чёрт знает что происходит и никто тебе точно не скажет, кроме тех, кто прям сейчас нанимает или ходит по собесам.
Аноним 04/03/23 Суб 23:47:34 2630042 370
>>2629999
Тысяч 70 наверное, хз насколько хорошо ты умеешь со всем этим работать и как ты записывал технологии в список, сам понимаешь
Аноним 05/03/23 Вск 00:00:52 2630062 371
>>2629999
Ты случайно не херка? А то ты намешал(а) все в кучу как херка. Smarty это привет из 2000 Про mysql какая-то шиза. Ты в mysql EAV знаешь? EAV это модель данных. Непосредственно к знанию бд отношения не имеет.
Аноним 05/03/23 Вск 00:44:20 2630093 372
>>2630041
Попробуй читать глазами, тогда увидишь про паттерны
Аноним 05/03/23 Вск 01:14:59 2630100 373
>>2629999
>SOLID и другие паттерны
Тут все. Интервьюер встает и уходит проржаться.

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

Правильным ответом на вопрос "используешь ли ты солид" будет ответный вопрос "а вы сами-то как?", интервьюер отвечает "да по маленьку" и понимает что перед ним человек опытный, который шарит что пользоваться этой хуйней попросту невозможно.
Аноним 05/03/23 Вск 01:32:05 2630102 374
>>2630093
SOLID это не паттерн, если что
Аноним 05/03/23 Вск 01:44:41 2630105 375
>>2630100
Если устраиваться в бомжатник с веб макаками то да
Аноним 05/03/23 Вск 01:45:24 2630106 376
>>2630100
Если устраиваться в бомжатник с веб макаками то да
Аноним 05/03/23 Вск 01:54:49 2630108 377
>>2630100
Если устраиваться в обезьянник с веб бомжами то да
Аноним 05/03/23 Вск 02:02:21 2630110 378
>>2630105
И тут ты такой называешь контору где пишут по солиду. Даже похуй на каком языке.
Жаль что дальше пойдут маневры и виляния сракой, но ни одного конкретного названия не будет.
Аноним 05/03/23 Вск 02:19:20 2630116 379
>>2630100
Ты дурачек какой-то, ты даже не джун как я, тут только с тебя поржать можно. Паттерны разбиты на категории, пораждающие, поведенчиские и тд- https://designpatternsphp.readthedocs.io/ru/latest/README.html

А чтобы не писать по SOLID нужно быть уебаном.

1. Принцип единственной ответственности - тут и так понятно. Если в классе есть методы которые лезут в бд за инфой, обрабатывают ее и рендереят результат - то разбиваем все на тематику. и получится типа $o = new OrderRender(new Order(new OrderRepository())) и далее можно развить это в сервис, все это засунуть в OrderService который будет все это собирать внутри себя и для людей уже человеческие методы и уже его юзаем в контроллере фреймворка, а низкоуровневые классы в нем ебутся

2. Принцип открытости/закрытости - то что есть не меняем, а расширяем за счет классов на основе интерфейса. Допустим есть класс Storage() который сохраняет сессии, он принимает класс new Session - $s = Storage(new Session);, сам Storage закрыт для изменений, но открыт для расширений, мы ему передаем $s = Storage(new RedisSession); на основе интерфеса и он уже сохраняет сессию в редисе а не в сессии или в $s = Storage(new MySQLSession);
Либо класс Storage отнаследовать и дополнить новым функционалом, а не менять то что уже есть.

3. Принцип Барбары Лисков - Объекты классов могут быть заменены их наследниками. Дает возможность использовать дочерние классы как и родительские. Допустим есть Который получает json книг из файла, мы от него наследуемся и получаем книги из mysql сохраняя один и тот же метод $x->getBooks(); - но сам принцип так себе, лучше на основе интерфейсов все делать без такого наследования, а то есть не наследуемые классы типа квадрат и прямоугольник и методы прямоугольника к вадрату присовывать? Нет.

4. Принцип разделения интерфейсов - есть интерфейс Птица, у него методы кушац и летать. А есть класс Пингвин, он как бы тоже птиц, но летать не может, разделяем интерфейсы (Птица->кушать(), ЛетающаяПтица->летать(), БегающаяПтица->бежать()) и вот все эти интерфейсы дописываем классу Утка и так же пингвину, только ему не дописываем летающая птица. А вот если бы был большой интерфейс то пизда. Так же можно с хостинг провайдерами, у кого облако Cloud, у кого CDN

5. Инверсия зависимостей. Ну как обычно у нас есть класс мы в конструктор передаем объект и его используем, так? А сейчас мы указываем интерфейс в __construct(Zaloopa $o) и вообще поебать что там теперь придет, внутри класса работает только с методами из интерфейса Залупа, а вот теперь в наш класс хуй пойми что не вставишь, туда только залупа влезет, и вот теперь мы уже голову ломаем не что туда придем и что нам ловить, а что туда теперь нужно всунуть чтобы заработало. - вот это и есть инверсия зивисимостей. Залупа неизвестно сколько см - это абстракция и мы теперь зависим от абстрации а не от чего-то конкретного, а 14-15см это детали, мы не должны зависить от деталей. Детали должны от абстракций, сколько хочешь см в анус столько и будет.
Классы верхних уровней не должны зависеть от классов нижних уровней. Оба должны зависеть от абстракций. То что нам приходит - это классы нижнего уровня, шныри, ходят в базу, принеси-подай или может нарисовать че захочешь. А это, ебать, класс высокого уровня - содержит бизнесс логику, кручу-верчу наебать хочу, скидочки, денюжки, на черную пятницу цену якобы понизим лохам - но они опираются на классы низкого уровня. Так вот когда мы пишем под интерфейс мы вызываем метод save() сохраняя данные и вообще похуй как и где оно сохранится, мы только передадим класс репозиторий, а репозиторий чего это уже похуй, у них у всех один и тот же интерфейс, аналог PDO который и в мускл может и в постгресс и код один

Все эти принципы взаимосвязанный друг с другом
Аноним 05/03/23 Вск 02:20:09 2630117 380
>>2630110
Может тебе еще всех тимлидов назвать поименно, которые тебя на ревью попустят без солида? Мальчик, ты там не охуел?
Аноним 05/03/23 Вск 02:25:23 2630118 381
>>2630116
Больное животное, нахуя мне твоя шизофазия?
Ты давай мне лучше расскажи как мне отличить открыто там в коде или закрыто? Это ведь не сектантский бред, можно ведь код проверить на соответствие солиду? Напиши алгоритм, по пунктам, чтобы применив его к любому классу я мог сказать закрыт он или приоткрыт.

>>2630117
>пук
Ну это слишком ожидаемо. А мог ведь и не оправдывать моих ожиданий и просто промолчать.
Аноним 05/03/23 Вск 02:26:52 2630119 382
>>2630118
Больное животное тут только ты
Аноним 05/03/23 Вск 02:28:41 2630121 383
>>2630119
По солиду есть че пукнуть? Или дальше переписывания википедии ты в его "изучении" не добрался?
Аноним 05/03/23 Вск 02:30:35 2630122 384
>>2630121
Веб-мастер, ты себя уже похоронил
Аноним 05/03/23 Вск 02:32:57 2630123 385
Screenshot 2023[...].png 819Кб, 1852x992
1852x992
Аноним 05/03/23 Вск 11:04:24 2630233 386
>>2630146
Говорим правильно:
1. Специалист сервисного центра
2. Системный администратор
3. Фронтенд-разработчик
4. Трафик-менеджер
Аноним 05/03/23 Вск 14:43:10 2630387 387
>>2630146
>сеошник
они и сейчас же существуют
Аноним 05/03/23 Вск 14:51:02 2630405 388
>>2630387
Экстрасенсы и маги тоже сейчас "существуют" на деньги доверчивых буратин
Аноним 05/03/23 Вск 14:56:33 2630420 389
>>2630387
Они существовали, когда поисковики были малы и глупы, сейчас они обоссывают таких умников.
Аноним 06/03/23 Пнд 07:50:42 2631155 390
Сеньоры привет. У нас тут есть задачка со списком студентов. Нашел на гите вариант от анона https://github.com/Bocmah/student-list можно ли считать его вариант как хорошее решение? И если кто уже проходил местные испытания, то поделитесь эталонными решениями
Аноним 06/03/23 Пнд 23:23:28 2632136 391
>>2571790 (OP)
Можете, пожалуйста, привести простые ну или не очень примеры принципа Code on done (код по требованию) в REST API?
И можете объяснить про манипулирование ресурсами, самоописывающее сообщение принципа единого интерефеса?
Аноним 06/03/23 Пнд 23:41:38 2632152 392
>>2631155
Ну так... мне не совсем нравится его писанина. Вместо

class Student {
private $name;

public function __construct(string $name) {
$this->name = $name;
}
}

Можно просто было написать

class Student {
public function __construct(private string $name) {}
}

Ну и тому подобные мелкие косячки, но так в целом сойдёт. Если сильно не придираться.
Аноним 06/03/23 Пнд 23:46:00 2632155 393
>>2632152
Критик-хуитик, ты бы хоть год написания кода чекнул. Обоссал не снимая штанов.
Аноним 06/03/23 Пнд 23:46:17 2632156 394
FireShot Captur[...].png 12Кб, 405x177
405x177
>>2631155
А, ну и плюс - тут авторизация беспонтовая. Она ни от чего ни защищает. По идее, нужно было делать jwt токен, потом делать валидацию токена https://developer.okta.com/blog/2019/02/04/create-and-verify-jwts-in-php Если срок токена истёт, надо было выписывать новый токен. Короче тут лапотно сделано.
Аноним 06/03/23 Пнд 23:57:48 2632165 395
>>2632136
>Code on done
Че-то в гилос, правильно https://en.wikipedia.org/wiki/Code_on_demand
Это хуйня в рест была придумана дидами для джава апплетов https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_7 . Тогда они думали что таких космических технологий будет еще много, вот и добавили в стандарт костылик. А апплеты оказались нахуй никому не нужны. Кукаретики щас пердят че-то там про джаваскрипт, но по факту никто джаваскрипт из апи не качает.
Короче забей, отмерло за ненадобностью.
Аноним 07/03/23 Втр 00:18:58 2632177 396
>>2632156
Ты мало того что читать не умеешь, так еще и не отличаешь авторизацию от аутентифкации.

Аутентификация происходит здесь https://github.com/Bocmah/student-list/blob/ddf4c2b5e2fb0302faec6cfaa4800be7c2edb9b5/app/Controllers/ProfileController.php#L83
Если умеешь читать, то поймешь что отредактировать можно только того пользователя под которым ты зарегистрирован. Да можно придумать десяток улучшений и сделать пизже, но речь о том что ты, еблан, выдумал какую-то хуйню, да еще и токен за каким-то хуем приплел.

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

Кстати, светанешь свою реализацию парсинга jwt? У пацанчика там чистый самопис, без компромиссов и сторонних библиотек. Так что? Набросаешь нам примерчик или будет стандартная шарманка про то что ты ничего никому не должен и пошел я нахуй? Чел вот не забздел и сделал приложуху. А ты хотя бы мааааленькую частичку его работы в состоянии сделать?
Аноним 07/03/23 Втр 01:22:24 2632213 397
>>2632177
Эксперт по безопасности закукарекал. Если у тебя какая-то обида, пиши в жалобную книгу двача. Я просто проходил, мне некогда дотошно каждую строчку анализировать и разводить с тобой длинные дискуссии. Это самая топорная реализация которую можно было придумать. Проверять, существует ли куки или не существует. Это просто ебать смешно, утверждать типа "если по хешу студентов не найдёт", значит защита работает. Колхозная реализация.
Аноним 07/03/23 Втр 01:58:22 2632223 398
>>2632213
Еще раз: то что ты написал в первом посте не соответствует действительности. Топорная, хуерная, самая, не самая. По факту работает. Кстати если в куке будет токен, то процесс мало изменится, ты расшифруешь токен, вытащишь из токена хэш и точно так же полезешь с этим хешем в базу.

Прочитать код тебе некогда, а выебываться на двачах тебе есть когда.
Как итог - хотел выебнуться, а получилось только обосраться.
Аноним 07/03/23 Втр 02:06:53 2632224 399
b2b7c451cbddc63[...].jpg 107Кб, 1024x768
1024x768
Аноним 07/03/23 Втр 06:07:16 2632248 400
>>2632224
Обосрался - обтекай.
Аноним 07/03/23 Втр 07:11:19 2632259 401
>>2632248
Это детская защита. Через CSRF картинку можно увести куку элементарно. Тем более, у тебя нет привязки девайса, нет ротации кук. Ты как один хеш поставил, так им можно пользоваться до пенсии. Токены сессии должны ну как минимум меняться при каждом логине.
Аноним 07/03/23 Втр 09:49:03 2632308 402
Спасибо за ответ парни, не ругайтесь особо. Выж не ебанутые школьники из пистон-треда, а мужи веб-ремесла.
Аноним 07/03/23 Втр 13:29:24 2632530 403
>>2632253
Просто у тебя наблюдается расхождение желаемого с действительным. "Синьор должен". Ну охуеть теперь. Тебе хочется чтобы сеньор был кем-то особенным, какие-то новые обязанности, новые дела.

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

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

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

>Можно потерпеть, не каждый день синьора нанимаем.
Ну тут ясно, собесы ты не проводил.
Ты нанимаешь сеньора каждый день в течении двух месяцев. Тебе постоянно несут на посмотреть какую-то хуйню мутных и гиблых людей. У тебя постоянно как кол осиновый стоит это интервью на пять часов и твое расписание скачет вокруг него как на ярмарке - это откладываем, это сегодня не успею, это без меня. И на этом ебаном интервью надо ведь и самому не выглядеть дегенератом, быть бодрячком, шевелить мозгами. А если их несколько в один день, то вообще пизда.
Аноним 07/03/23 Втр 13:48:44 2632540 404
>>2632530
О чем речь. ПХП сеньки с 15 лет опыта с print_r отлаживают код...

мимо
Аноним 07/03/23 Втр 14:00:35 2632545 405
9562991066515ca[...].png 649Кб, 558x473
558x473
>>2632259
>Это детская защита. Через CSRF картинку можно увести куку элементарно.
У меня перманентно в фоксе выключены third party куки. Ссу на твое обосранное туловище. Можешь начинать фантазировать про XSS, хакать моего хостера и заливать шелл.
Аноним 07/03/23 Втр 14:11:32 2632548 406
>>2632253
> Просто у тебя наблюдается "инфляция терминов". У тебя синьорами называют мидлов. Синьор должен быть руководителем. Руководить участком кода. Модулем. Быть ответственным не только за код который он пишет, но и за код который другие пишут в его модуль.
Вы все увлекаетесь цветовой дифференциацией штанов и забываете, что нет точного определения сеньора.
В некоторых конторах сеньор = лид и все разработчики со временем растут в менеджеров и они искренне могут тебе сказать, что ты не сеньор, если не руководил хотя бы 6 сотрудниками.
В некоторых конторах сеньор = архитектор.
В некоторых конторах сеньор = технарь, который может погрузиться в лоу-левел и найти ошибку в сишном pecl экстеншене к примеру, ещё и пофиксить, форкнуть, скомпилить и на прод катануть.
А в некоторых вот таких остерегайтесь, самые говнистые сеньоров меряют просто по возрасту. Мне как-то на собесе заявили, что я слишком много денег хочу и что они такие зп платят только тем, кто старше 30 лет, лол. И не завод был, а какой-то дата-аналитический стартап

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

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


Есть ещё другая проблема, php сам по себе, как экосистема, очень сильно замкнут и часто не даёт условным миддлам вырасти в сеньора. К примеру, как ты научишься программировать что-то лоу-лейтенси на php? Да никак, в таких областях php даже не используют. Поэтому ты и развиться в этом направлении толком не сможешь, ил ипридется стек менять. То же самое и с байтомолотилками и с прочим. Но это отдельная история.
Аноним 07/03/23 Втр 14:36:44 2632582 407
photo-176424.jpg 17Кб, 600x479
600x479
>>2632548
>погрузиться в лоу-левел и найти ошибку в сишном pecl экстеншене
Ебать фантазер. Твое место у вордпресс параши. В лоу левел ты погружаешься только приняв пивандепалы после тяжелого дня формошлепства.
Сеньор-архитектор ебать ахахахахахах, да ты прямо сейчас угашенный сидишь походу ахахахахаха
Аноним 07/03/23 Втр 16:26:42 2632727 408
>>2632582
По делу есть что сказать? Если ты формошлепишь говно всякое, это не значит, что все так делают. pecl я впрочем не трогаю, да и в целом это уже устаревшая штука, я привел его для примера лоу-левела. Лично у меня половина проектов на golang и вот там периодически приходится нырять в рантайм, тыкать pprof и всё такое.
Аноним 07/03/23 Втр 17:05:16 2632775 409
>>2632727
По какому делу, залупа ты понурая? Ты навыдумывал у себя в башке какой-то хуйни, а когда тебя попустили, начал выдумывать новую хуйню, теперь про какой-то го. Ну так и пиздуй в го тред, тебя там быстро обслужат. Нахуй ты тут свой шизофренический бред высираешь?
Аноним 07/03/23 Втр 23:18:09 2633173 410
Сап, аноны, есть вопрос. Я отправляю в своём сервисе запрос на сторонний апи, мне приходит ответ в виде джейсона, который я сразу конвертирую в массив. Чтобы достать оттуда нужные данные, мне приходится обращаться к массиву по длинному паравозу ключей, например:
$title = $response["foo"]["bar"]["mocha"]["govno"]["title"]
Как чище всего это офорить? Не хочется на каждую скобку городить if isset. Просто проверить итоговый $title на null и кинуть эксепшон? Пыха даёт обращаться к несуществующим ключам, кидая warning, но выглядит это грязновато.
Вопрос номер два: у меня есть сервис, который отвечает за запросы и получает большой-большой джейсон и сразу же конвертирует в массив. Из массива ему надо наковырять данных и создать из них сущность. Разбирать массив на запчасти прям в сервисе, или вынести это в отдельный класс? В сущность заносить метод createFromApiResponse() или вроде того не хочу, т.к. будет жёсткая привязка к конкретному АПИ, а они могут меняться. Раздумываю над абстрактной фабрикой, которая будет спавнить как сервис для запросов к апи, так и фабрику сущностей из массива запроса, но хз.
Аноним 07/03/23 Втр 23:25:19 2633186 411
>>2633173
В дополнение ко второму вопросу спешу добавить, что к апи будет делаться много разных запросов, и соответственно как это всё вынести в отдельный класс я не понимаю, т.к. придётся делать ему на каждый эндпоинт по методу, и где-то логика будет повторяться. Например, в каком-то методе нужно найти чисто название сущности, а в другом найти все атрибуты сущности. Ничего лучше паровоза индексов в методе запроса не могу придумать.
Аноним 07/03/23 Втр 23:59:32 2633247 412
>>2633173
Конвертируй не в массив а в DTO, делай класс для работы с этим api, поверх него класс для того что бы не зависеть от конкретного api и сайта, и иметь возможность заменить его на схожий сервис с другим протоколом.
Аноним 08/03/23 Срд 00:10:28 2633259 413
Нормально будет -
foreach(str_split($s) as $ch) {...}
- или он каждую итерацию сплитит будет?
Аноним 08/03/23 Срд 00:18:33 2633262 414
Наверное, не будет... Ибо тогда счётчик бы сбивался.
Аноним 08/03/23 Срд 01:50:57 2633315 415
>>2633173
Ну какие нахуй массивы. Привыкай работать с объектами. К объекту ты можешь написать пхпдок и будет работать автокомплит и видна ожидаемая структура. По этой структуре ты можешь написать иерархию валидаторов.

Вот тебе простейший пример https://3v4l.org/LJB3k#v7.4.33 проверяет есть ли значение в жсоне и соответствует ли оно типу. Я для краткости все сделал на статике, но никто не мешает сделать на объектах, с прямыми вызовами функций. Добавить обработку массивов и будет универсальная штука, которая любой жсон завалидирует. А если заморочиться, то можно сделать фабрику, которая по скормленному ей конкретному жсону создаст уникальный валидатор.

Короче, завязывай с массивами. Это недокументируемое, непроверяемое нечто, пользы никакой, а гемора дохуя.
Аноним 08/03/23 Срд 16:00:48 2633826 416
>>2633247
Ну у меня так и есть по сути: интерфейс работы с апи и классы его реализации. Я не уверен насчёт ДТО, ведь он больше нигде в коде не будет использоваться. Т.е. методы сервиса выглядят примерно так:
public function getEntity(int $id): Entity
{
$response = $this->client->request(["id" => $id])->toArray();
return new Entity($response['foo'], $response['bar'], ...);
}
подобным образом выглядит большинство методов апи, но какие-то возвращают не сущности, а простые типы. Если добаить ДТО, то ничего не поменяется. Ну мб связность системы уменьшится, но хз, я всё равно этот класс потом никуда выносить не буду.
Да и потом, этот DTO всё равно придётся как-то создавать, и тут мы снова возвращаемся к паравозу индексов массива либо стрелочек объекта.

>>2633315
Интересно, спасибо, надо будет разобрать. Я стажёр-вкатун, учу симфони сейчас, и там почему-то нет встроенного компонента для валидации жсона. Респонс можно получить либо строкой, либо массивом, и я подумал, что удобнее работать с последним, а такой подход ещё не встречал.
Аноним 08/03/23 Срд 16:24:24 2633843 417
>>2633315
Получается, придётся делать абстрактную фабрику конкретного апи, которая будет создавать как сервис запросов, так и валидаторы на каждый жсон?
Выглядит стильно, но ещё такой вопрос: у меня в респонсе большая вложенность всяких мусорных слоёв. Мне для каждого слоя создавать свой класс и валидатор? Типа
{ "response": { "data": { "result": { "matches": { "entity": "title"} } } }
Тут из трёх слоёв мне нужно только одно поле: следующий слой. Твоим способом получится три класса, делающих плюс-минус одно и то же. Это норм?
Аноним 08/03/23 Срд 17:07:33 2633912 418
изображение.png 170Кб, 994x1544
994x1544
>>2633843
>абстрактную фабрику конкретного апи
Фу блядь, слова какие мерзкие. Как на рукав высморкался блядь. Нахуя ты так усложняешь?
Для начала переведи код на работу с объектами. Потом напиши типизацию этих объектов, чтобы с ними блядь в IDE можно было работать, чтобы ctrl+q нажать и увидеть что это поле улица в адресе, строка. Чтобы автокомплит работал.

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

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

>у меня в респонсе большая вложенность всяких мусорных слоёв
Ну так вычищай мусор перед валидацией, какие проблемы? Можешь хоть прямо по строкам хуярить еще до парсинга. Вообще в нормальном рест апи можно выбрать какие поля хочешь получать. Вот тебе пример пикрелетед как должно быть https://mailchimp.com/developer/marketing/api/account-exports/ .
Аноним 08/03/23 Срд 17:41:54 2633950 419
>>2633912
Я хз, как это сделать без абстрактной фабрики, т.к. объекты респонсов жёстко привязаны к конкретному апи, и у другого апи будут другие валидаторы. Ну и соответственно ДТО будет по-другому создаваться. Например, в одном апи приходит
{
"name": "slavik",
"second name": "sychev",
"age": 33
}
В другом приходит
{
"full name": {
"name": "slavik",
"second name": "sychev"
},
"age": 33
}
Можно написать базовый ДТО, на основе которого создаётся сущность, но тогда придётся писать адаптеры под каждый из респонсов.
Аноним 08/03/23 Срд 18:25:46 2633987 420
>>2633950
Ладно, я тупанул, можно просто зависимости валидаторов оставить в самом классе запросов. Нахуй абстрактную фабрику.
Аноним 08/03/23 Срд 19:47:51 2634077 421
>>2633173

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

class SomeClient {
function getPostById(int $id): Post { ... }
function sendComment(Comment $comment): ?Error { ... }
}

То есть, на каждый метод API мы делаем метод в классе. Этот метод формирует запрос к API, вручную разбирает JSON и возвращает объект нужного типа, который заполняется из ответа API.

Все данные мы представляем в виде объектов. Для Поста один объект, для Комментария другой, для Пользователя третий и тд.

isset писать не надо, используй оператор ??, например

$x = $result['a']['b']['c'] ?? null;

Этот способ прост и эффективен для небольших API. Но когда тебе нужно интегрировать десятки больших API, ты начнешь замечать что работа становится однообразной. Здесь на помощь придет сериалиайзер. Он позволяет автоматически преобразовывать объекты с данными в JSON и обратно. Как именно это делать, ты описываешь аннотациями в классе:

class Post
{
#[SerializedName('post_id')]
int $id;

// Это поле может отсутствовать
#[Optional]
#[SerializedPath("[post][information][name]")]
?string $name = null
}

После добавления аннотаций ты можешь автоматически разбирать JSON. Есть много готовых сериалайзеров, смотри Symfony Serializer, в Ларавеле есть поддержка сериализации моделей, есть JMS Serializer.

Наконец, можно облегчить себе жизнь еще дальше, если написать генератор классов из описания API в формате OpenAPI, но это уже сложновато.
Аноним 08/03/23 Срд 19:49:45 2634081 422
>>2633173

> Раздумываю над абстрактной фабрикой

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

> Разбирать массив на запчасти прям в сервисе, или вынести это в отдельный класс?

Сделай отдельный класс только для взаимодействия с API и в нем разбирай.
Аноним 08/03/23 Срд 19:50:52 2634083 423
>>2633186

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

Повторяющийся код можно вынести в приватные методы.

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

Если производительность не важна, можно сделать метод который получает все атрибуты, вызвать его и вернуть только название.
Аноним 08/03/23 Срд 19:57:27 2634096 424
>>2633259

Нет, только 1 раз.

>>2633315

Мне кажется, ты изобретаешь велосипед. Для валидации есть Symfony Validation, правила валидации описваются аннотациями к полям, например:

class User
{
#[NotEmpty]
#[Length(min: 4, max: 50)]
private string $username;
}

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

Далее, мне не нравится то, что ты используешь объекты-мешки (@property-read) вместо явного объявления свойств с типизацией. В чем тут выгода?

Далее, для разбора JSON в объект есть сериалайзеры вроде Symfony Serializer.
Аноним 08/03/23 Срд 19:59:08 2634102 425
>>2634081
Какое-то странное понимание абстрактной фабрики. В Симфони и в бандлах постоянно используются абстрактные фабрики и фабричные методы и к использованию библиотек никакого отношения. createForm и createFormBuilder. Не все нужно доставать из контейнера

мимо
Аноним 08/03/23 Срд 20:02:46 2634105 426
>>2633826

> интерфейс работы с апи и классы его реализации.

Зачем тебе интерфейс? У тебя есть несолько разных API с одинаковыми методами?

> Я не уверен насчёт ДТО, ведь он больше нигде в коде не будет использоваться.

Я думаю, анон имел в виду, что данные надо возвращать в виде объектов, а не в виде массивов. А не именно отдельный DTO и потом преобразовывать его в другой объект.

> Я стажёр-вкатун, учу симфони сейчас, и там почему-то нет встроенного компонента для валидации жсона

Плохо учишь. Есть Symfony Validation и он вешается на любой объект. Но сначала, конечно, JSON надо преобразовать в объект, а только потом валидировать. Хотя валидатор и массивы как-то умеет валидировать: https://symfony.com/doc/current/validation/raw_values.html

Если тебя интересует именно валидация JSON без его разбора в объекты, то используй формат JSON Schema и любую библиотеку валидации JSON по схеме.
Аноним 08/03/23 Срд 20:05:13 2634112 427
>>2633950

Зачем тут абстрактная фабрика, я не понимаю. Почему нельзя сделать так:

- сделать класс для объекта ответа
- в нем аннотации для валидации и десериализации
- сделать сервис для работы с API, в нем кучу методов, в каждом методе:
- отправить запрос
- сериалайзером распарсить JSON в объект
- валидатором проверить объект
Аноним 08/03/23 Срд 20:08:07 2634115 428
>>2633950

Ааа, как все запутанно. Тогда сериалайзер тебе мало поможет. Я тебе советую сделать массив, в котором сопоставляются поля из JSON и из сущности (для каждого API массив свой):

API1:

result.name -> name
"result['second name']" -> second_name

API2:

response.user['full name'] -> name
response.user.surname -> second_name

И по этому массиву делать сопоставление полей. А валидацию делать уже единообразно для всех.
Аноним 08/03/23 Срд 20:10:00 2634119 429
>>2634102

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

Если ты можешь обосновать, какие выгоды дает абстрактная фабрика, тогда пожалуйста. Если не можешь, то не трать деньги твоего работодателя на ерунду и не запутывай код, чтобы твои коллеги не тратили деньги, распутывая его.
Аноним 08/03/23 Срд 20:11:33 2634121 430
>>2632545

Так это защищает только тебя, а не всех пользователей сайта.
Аноним 08/03/23 Срд 20:14:55 2634122 431
>>2632530

> У меня за последние лет пять меньше трех одновременно открытых проектов в шторме не было.

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

Нет, лучше, когда человек не прыгает между кучей проектов, а работает с одним.
Аноним 08/03/23 Срд 20:18:53 2634124 432
>>2632152

Эта фича в PHP появилась не очень давно. Но ты прав, что в новом коде ее стоит использовать.

>>2631155

Если ты хочешь получить знания, то надо писать все с нуля целиком, а не взять и чуть подправить. Ты можешь подглядеть код, если непонятен какой-то момент, но стоит также прочесть комментарии к задаче, где подробнейше расписаны все подводные камни, на которые натыкались предыдущие аноны.
Аноним 08/03/23 Срд 20:26:08 2634127 433
>>2632156

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

>>2632259

Как через CSRF картинку увести куку, опиши сценарий, ибо я не понимаю.

Здесь, возможно, есть CSRF-уязвимость, которая позволяет обновить чужой профиль, но от нее можно защититься, добавив CSRf-токен или проверяя заголовок Origin или передавая хеш дополнительно в форме (используя его как CSRF-токен).
Аноним 08/03/23 Срд 20:42:13 2634138 434
>>2630118

Если есть слово final, то точно закрыт.

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

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

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

Формализовать можно как-то попробовать, как насчет такого критерия:

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

?
Аноним 08/03/23 Срд 20:43:08 2634139 435
>>2634119
А почему твой код не должен быть библиотекой для других? Почему другие разработчик должны знать как создавать объекты твоего домена/контекста в своем домене/контексте?
Ладно если это один клас, а ели это композиция 100500 классов 90% который написали до тебя?
Аноним 08/03/23 Срд 20:45:48 2634140 436
>>2630100

Почему не используют? А принцип единой ответственности?

А правило Лисков? Попробуй в PHP при наследовании поменять тип аргументов функции и ты получишь ошибку. А почему? Потому, что в PHP применено правило Лисков на уровне интепретатора (и правильно). И по этой же причине ты не можешь при наследовании удалять поля или методы.

Никто не использует - это ты точно погорячился. Принцип SOLID встроен в сам PHP, как видишь.
Аноним 08/03/23 Срд 20:53:18 2634142 437
>>2629414

Мне нравятся задачи от Яндекса и олимпиадные задачи, я бы хотел чтобы их задавали на собеседованиях для сениоров. Про структуры данных, алгоритмы, оценку сложности, немного математики и теории вероятности. Приятно поломать голову.
Аноним 08/03/23 Срд 20:54:16 2634144 438
>>2628807

Обычно миддлом считают при наличии опыта работы от 3 лет.
Аноним 08/03/23 Срд 20:55:20 2634147 439
>>2634140
Номинальная типизация все таки не принцип Лисков, больше на него похожа структурная типизация как в typescript или типизация интерфейсов в голанге
Аноним 08/03/23 Срд 20:56:23 2634150 440
>>2628758

Регистрация работает так:

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

Авторизация:

- пользователь вводит имя и пароль
- проверяем их в БД, если все ок, то берем токен и ставим в куки

Проверка авторизации:

- смотрим куки, ищем там токен, проверяем, есть ли такой в БД. Если нет, то это аноним, если есть то пользователь.
Аноним 08/03/23 Срд 20:57:12 2634152 441
>>2634147

Принцип Лисков проявляется в том, что при наследовании можно добавлять поля и методы, но нельзя их удалять или менять их тип несовместимо.
Аноним 08/03/23 Срд 20:58:53 2634154 442
>>2634139

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

Я видел случаи, когда вместо switch/case городили паттерн Стратегия, например. Тяжелое зрелище. Человек прочитал про паттерн и бежит рефакторить свитчи.
Аноним 08/03/23 Срд 21:00:53 2634158 443
>>2612946

Неудобно, тебе надо при написании кода помнить не только название свойства, но и с какой буквы оно пишется. И выглядит смесь названий в разном регистре страшно, как будто студент лабу писал.
Аноним 08/03/23 Срд 21:02:48 2634160 444
>>2625838

Правильно выбрать один какой-то стиль и придерживаться его. Я люблю ставить слеш, если в пути нет расширения:

/products/
/products/televizor.html
Аноним 08/03/23 Срд 21:07:49 2634164 445
>>2634152
Но метод square у квадрата и прямоугольника имееет ту же сигнатуру 🤡
Аноним 08/03/23 Срд 21:10:39 2634166 446
>>2626736

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

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

Ну например для редиса, ты мог бы выписать:

- сильные стороны
- слабые стороны
- подводные камни

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

Также названия основных команд.

Переписывать целиком документацию, наверно, не надо, пиши кратко только основные моменты.

Чтобы знания не становились неактуальными, надо изучать общие прицнипы, а не их особенности реализации в отдельном продукте. Например, структуры данных вроде словарей и множеств не устарели и не устареют в ближайшее время. Также, не устареют принципы, которые redis использует для персистентности.
Аноним 08/03/23 Срд 21:12:48 2634167 447
>>2628131

Ты ошибаешься. Есть факты, что Майкрософт через скайп собирает ссылки для индексации (то есть, пересылаешь ссылку и она появляется в Бинге).

Не полагайся на то, что URL не попадут в поисковики.
Аноним 08/03/23 Срд 21:12:55 2634168 448
>>2634122
Бля, ну наступит день когда сам пойдешь на работу и казаться перестанет.

>А проверить правильность задачи?
Это делается ДО начала выполнения. Это блядь первый шаг: условие задачи должно содержать критерии её выполнения и тестирования. Да что там говорить, хуево сформулированную задачу в беклог тупо не пропустят. И готовность задачи определяешь не ты, а QA или сам продакт в dev ветке.

>А проверить код системы?
Этим занимаются QA, и то если им выделили бюджет на такое широкое тестирование. У тебя есть команда и спринт, и если там нет задачи "проверить код системы", то и времени у тебя на это нет.

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

А если всего этого - QA, бизнес аналитиков и код ревью нет, то и появляются модули прямо из твоих маняфантазий, с самозарождающимися багами, не читанные и не документированные. Тут уже реально похуй сеньор ты или нет, надо валить в нормальную контору.
Аноним 08/03/23 Срд 21:15:04 2634170 449
>>2634168

>>А проверить код системы?
> Этим занимаются QA

QA просто тыкают мышкой в кнопки, они никогда не увидят, что в алгоритме допущена ошибка, которая проявляется в 3% случаев. Программист увидит и исправит. А ты нет.
Аноним 08/03/23 Срд 21:15:54 2634173 450
>>2634152

И что дальше? Проблема ромбического наследования давно известна.
Аноним 08/03/23 Срд 21:16:27 2634174 451
>>2634166
Такое легко запомнить
Редис
+ 1 000 000 запросов в сек
- нихуя не умеет, нет роутинга, нет гарантии доставки до консумера
+ Прост как палка
Ребит
- 40тысяч запросов в сек
+ роутинг, гарантия доставки
+ Прост как палка
Кафка
+ 1 000 000 запросов в сек
+ Умеет все, даже заваривать кофе
- Сложна как управление самолетом
Аноним 08/03/23 Срд 21:17:31 2634176 452
>>2634173
Тетя Лисков про другое говорила
Аноним 08/03/23 Срд 21:19:03 2634179 453
>>2634174
s/запросов/сообщений
Аноним 08/03/23 Срд 21:20:15 2634182 454
>>2634170
>QA просто тыкают мышкой в кнопки, они никогда не увидят, что в алгоритме допущена ошибка, которая проявляется в 3% случаев. Программист увидит и исправит. А ты нет.
Если программист такое сходу видит, то откуда там эта ошибка, ебанько? Исправление и поиск багов всегда идет от логов, то есть от фидбека системы, а не наоборот. Никто еще не додумался перечитывать колд в надежде найти внем баг. Завязывай нести хуйню, лучше подтяни пхп и на собес сходи, авось возьмут на твою первую работу.
Аноним 08/03/23 Срд 21:21:54 2634183 455
>>2634174
Редис охуенная вещь, всё лучше с редисом.
А кафки-хуяфки это какой-то оверинжениринг, чтобы смуззихлебы ездили на конфы и рассказывали, что они там нахуевертили, а то нормальный человек не разберется.
Аноним 08/03/23 Срд 21:30:00 2634192 456
>>2634182

> Исправление и поиск багов всегда идет от логов, то есть от фидбека системы, а не наоборот.

Ну и логика. Выложим кривой код и подождем, пока он сломается.

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

Ну условно ты разбираешься в финансовых API и видишь что кто-то передает рубли вместо целого числа копеек, и говоришь ему об этом. А не проверяешь каждую строчку.
Аноним 08/03/23 Срд 21:30:56 2634193 457
>>2634183

Кафка это распределенная обработка данных, то есть когда одна машина не справляется (данных слишком много или их слишком долго обрабатывать).
Аноним 08/03/23 Срд 21:31:55 2634194 458
>>2634193

Ой, перепутал кафку с хадупом, ну и ладно, все равно никто не заметит.
Аноним 08/03/23 Срд 21:36:13 2634201 459
>>2634174
>>2634183
Мдаа, дожили. Тормознутый редис у них на первом месте.
Redis ето кал для черепах. Это однопоточный еле ворочающийся кусок говна. Какой нахуй миллион запросов в секунду? Ты на серверах разоришься нахуй, тебе сотня инстансов этого редиса понадобится или даже больше.

Memcached сучки вот кто реально быстрый. Это самое быстрое NOSql хранилище в природе.

>>2634183
>А кафки-хуяфки это какой-то оверинжениринг
Просто ты пхп макака и с реально сложными задачами не сталкивался. Кафка решает, например, проблему exactly once delivery. Но в формошлепстве таки проблем офк нет.
Аноним 08/03/23 Срд 21:41:31 2634207 460
>>2634201

Но в мемкеше нет структур и персистентности.

Так что ты либо разоряешься на редис либо нанимаешь дорогих сишников, чтобы они тебе написали кастомное хранилище.
Аноним 08/03/23 Срд 21:44:12 2634210 461
>>2634201
> с реально сложными задачами не сталкивался
Как будто ты сталкивался.
Аноним 08/03/23 Срд 21:44:27 2634213 462
>>2634192
Завязывай фантазировать. Ты несешь хуйню и это мой последний ответ тебе. Результат выполнения задачи проверяешь не ты, а тот кто эту задачу ставил. Задачи перед релизом кучу времени висят в дев ветке, именно для того чтобы выловить возможные баги. Для проверки кода на соответствие стандартам существует code sniffer и стайлгайд, хуево оформленный код дженкинс пайплайн не пройдет. А в финансовых апи пишутся юнит тесты. Покеда.
Аноним 08/03/23 Срд 21:47:06 2634215 463
>>2634207
>Но в мемкеше нет структур и персистентности.
Лол, если ты хочешь выжать из редиса больше запросов, то у тебя тоже нет персистентности. Чтобы было хоть что-то на персистентность похожее нужно чтобы на диск писал отдельный инстанс.

Ну и дальше идет пример как структуры ускоряют, а не замедляют работу с кешем.
Аноним 08/03/23 Срд 21:59:09 2634226 464
>>2634201
Но речь о редисе не как о кивелью хранилише, а как о меседж брокере. Та есть простой пубсуб. Было бы странно тогда с рабитом и кафкой сравнивать
Аноним 08/03/23 Срд 21:59:13 2634227 465
>>2634112
Я хочу сделать что-то наподобие того, что предложил этот >>2633315
Но не знаю, как лучше всего организовать код.
У меня есть папка Service, в ней папка под взаимодействие с api, в которой интерфейс и папки под разные апи. В папке под конкретный апи хранится реализация интерфейса. Куда мне девать кучу мелких классов на разные виды респонсов? Создать папку Responses и разбить каждый класс на собстввенный файл? Но там у 90% классов две строки: аннотация одного типа и название класса с пустым телом. Работать с такой хуйнёй, когда она разбита на 10 файлов по 2 строки, гораздо менее удобно, чем если бы они все были в одном, как конфиг. Но вроде как хранить несколько классов в одном файле - это говнокод. Только папку с этими классами ещё походу придётся разбивать на подпапки для всех методов апи, что ещё сильнее усложняет задачу.
Аноним 08/03/23 Срд 22:01:35 2634230 466
>>2634138
Надо отдать тебе должное - ты хотя бы пытался.

>Если есть слово final, то точно закрыт.
Согласен, но только частично. Это работает со сторонними библиотеками, но не с кодом проекта. В своем проекте final просто временная заглушка, которую убирают, когда посчитают нужным.

>Но вообще, это субъективные критерии
Ну тогда сектанство получается?

>Но эти принципы есть. Я уверен
Принципы есть, а критерия их фальсифицируемости нет, смекаешь?

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

>- математическое ожидание количества измененных строк при добавлении к библиотеке
Жаль что ты это дело быстро бросишь и так ничего и не формализуешь. Я в свое время таки нашел способ определения single responsibility для любого класса.
Аноним 08/03/23 Срд 22:02:43 2634231 467
>>2634227
Ну так напиши правила валидации в виде конфига. Че там у тебя симфони? Ну и напиши Yml с конфигом валидации, а потом по этому конфигу создавай валидатор.
Аноним 08/03/23 Срд 22:07:18 2634233 468
>>2634230
Сингл респонсибили в SOLID это то что код отвечает не за одну задачу, а то что что у него одна причина для изменения. Вроде пожоже но есть нюанс... Так у дади Боба написанно, а у тебя?
Аноним 08/03/23 Срд 22:10:15 2634235 469
>>2634231
Так чтобы сделать валидацию, нужно сначала написать классы, которые нужно валидировать.
Аноним 08/03/23 Срд 22:10:29 2634236 470
>>2634231
Ямл вроде выкинули из симфони. не достаточно энтерпрайзно видать..
Аноним 08/03/23 Срд 22:10:59 2634238 471
>>2634236
Хз, в документации они везде предлагают ямл
Аноним 08/03/23 Срд 22:13:36 2634240 472
>>2634235
Пчел, просто парсишь json в объект и создаешь под него класс с пхп доком. Я же давал пример выше как это делается.

>>2634236
Да какая хуй разница. Хоть плейн текстом напиши.
Аноним 08/03/23 Срд 22:16:05 2634241 473
>>2634240
>Просто парсишь json в объект
Так соль в том, что json многослойный, и под каждый слой нужен свой класс, который надо индивидуально валидировать, походу. Мало того, они ещё и отличаются в зависимости от метода апи.
Аноним 08/03/23 Срд 22:18:07 2634243 474
>>2634238
Значит я напиздел. Я в доктрине пытался не в анотациях схему задавать, а внешне в файле, только в XML можно было.
Аноним 08/03/23 Срд 22:20:30 2634245 475
>>2634241
И на это я тебе написал что нужно выкинуть нахуй бойлерплейт из жсона. Валидировать нужно сущности апи, а не мусор. Ну а если там эти сущностей сто, садись блядь и пиши. Нахуй тебе только такое большое апи тогда я хуй пойму.
Аноним 08/03/23 Срд 22:22:19 2634246 476
>>2634245
Ну бойлерплейт же тоже надо сначала валидировать, наверное. Типа смысл валидировать только часть джейсона? Вдруг внешний слой переименуют.
Аноним 08/03/23 Срд 22:28:14 2634252 477
>>2634246
>Вдруг внешний слой переименуют.
То есть сломают обратную совместимость не поменяв версию апи? КТо и нахуя?
Даже если так сделают все пизданется с исключениями. А нам ведь именно это и надо.
Аноним 08/03/23 Срд 22:31:51 2634253 478
>>2634252
/api/v1 поменяли на /api/v2
@
/api/v1 удалили (удалим через неделю быстрей переписывайте назуй)
Аноним 08/03/23 Срд 22:35:16 2634258 479
>>2634253
Ну и? Все как и должно быть. Где проблема?
Аноним 08/03/23 Срд 22:54:22 2634266 480
>>2634245
А как его выкинуть? Прямо стрингу руками парсить? Это дрочь же какая-то.
Если конвертировать в массив, выбрать нужное, а потом обратно закодировать в строку, будет медленно работать.
Если сразу сделать объектом, то обращение будет без автокомплита.
Аноним 08/03/23 Срд 23:08:07 2634272 481
>>2634252
А ещё ж есть проблема, что в жсоне свойство может называться не одним словом, а через пробел или снейк кейсом. Это его ещё отдельно сериализовать надо, получается. Я надеялся чисто вызывать json_decode() ...
Аноним 08/03/23 Срд 23:16:28 2634278 482
>>2634266
>Это дрочь же какая-то.
Мальчик, это не дотка и не серик. Это реальная жизнь.

>Прямо стрингу руками парсить?
Что блядь значит "руками"? Один раз написал и все.
Найди закономерность. Как? Ну я хуй знаю, попробуй думать. Жсон это строка. Удаляй все до какого-то ключевого слова или группы слов, ищи вхождение сроки, итерируй построчно пока не найдешь что-то. Короче мозгами шевели, я за тебя это делать не буду. Я походу вообще поспешил какой-то код тебе давать, какой-то ты ленивый слишком. Ты мог уже пол сотни примеров кода сюда скинуть, а до сих пор только болтовня.

>А ещё ж есть проблема, что в жсоне свойство может называться не одним словом, а через пробел
Ну вот тебе загадка от жака фреско: если в жсоне свойство может содержать пробел, а пхп не поддерживает пробелы в свойствах объектов, то каким хуем пхп может преобразовать любой жсон в объект? На размышление по классике 30 секунд.
Аноним 08/03/23 Срд 23:25:21 2634280 483
>>2634227

У тебя похоже структура папок в стиле Ларавель/Симфони. То есть, у тебя есть папки Controllers, Models, Services, и может что-то еще, а в них все свалено вперемешку. Минус в том, что связанные вещи хранятся далеко друг от друга, а не связанные рядом.

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

> Но там у 90% классов две строки: аннотация одного типа и название класса с пустым телом.

Если у тебя все пути начинаются с result.response.data, то не надо создавать классы. Можно просто на уровне PHP выделить этот элемент из массива, а дальше уже разбирать сериалайзером. Плюс, сериалайзеры позволяют указывать путь с вложенностью, например:

#[SerializedPath('[result][response][data][name]')]
private string $name;
Аноним 08/03/23 Срд 23:28:40 2634283 484
>>2634241

Нет. Ты делаешь классы под сущности. Если в JSON описан Пост и Комменты к нему, то ты делаешь только эти 2 класса, даже если там еще много всего наверчено, что тебе не нужно.
Аноним 08/03/23 Срд 23:29:30 2634284 485
>>2634246

Я писал уже: валидировать JSON можно с помощью JSON Schema. Либо можно преобразовать JSON в сущности и валидировать их, что надежнее и правильнее.
Аноним 08/03/23 Срд 23:30:08 2634286 486
>>2634278

Работать с JSON как со строкой — бесконечная глупость.
Аноним 08/03/23 Срд 23:30:16 2634287 487
>>2634278
Нет, я-то не против, это не сложно. Просто это костыль. Как будто бы уже должно быть готовое решение под такие нужды. Собственно, ниже уже ты или не ты это решение и предложил. Надо короче доку сериалайзера читать, ещё не дошли руки до неё.
Аноним 08/03/23 Срд 23:47:22 2634294 488
>>2634287
>Нет, я-то не против, это не сложно. Просто это костыль. Как будто бы уже должно быть готовое решение под такие нужды.
Разумеется есть. Только нахуй это тебе если ты ничему не научился в итоге? Ты не вник в суть проблемы, ты не понимаешь решение, ты ничего не добавил в свое портфолио.

Даже я, с десятилетним опытом, написав тебе свой пример столкнулся в нем с парой неизвестных мне вещей и придумал пару решений новых для меня проблем. Какой смысл вместо получения опыта делать бессмысленную валидацию хуй пойми кем написанной библиотекой?
Аноним 09/03/23 Чтв 11:18:37 2634511 489
>>2634294
Не хочу с тобой спорить, конечно, я понимаю, к чему ты клонишь, но мне кажется, компании ищут человека, который умеет работать с инструментом, который у них в ходу, а не того кто будет писать свои костыли и трепать всем нервы.
Аноним 09/03/23 Чтв 11:30:53 2634520 490
Куда в коде пихать сообщения, которые отправляет контроллер? Я просто сую их в константы вроде SUCCESS_MESSAGE = "Molodec", но мне кажется, это не самое чистое решение, ведь это почти хардкод и когда этих сообщений много, это говно сильно мылит глаза. Создать отдельную папку Constants и сделать что-то типа контейнера сообщений? В одном месте их все хранить тоже вроде как громоздко, да и в разных местах константы с одинаковым названием могут иметь разное значение. Ну а создавать параллельную иерархию классов констант - это вообще пиздец, как по мне. Передавать их через контейнер - тоже не очень решение, т.к. конфиг контейнера засрётся текстом.
Мимо тот же анон, который спрашивал про валидацию жсона.
Аноним 09/03/23 Чтв 12:18:04 2634551 491
>>2634077
Не увидел этот пост, кстати. Если бы сначала его заметил, реализовал бы простой вариант, но уже взялся за сериализатор, добью его. Заодно научусь пользоваться.
Аноним 09/03/23 Чтв 15:26:11 2634723 492
Какие есть подводные при покупке домена?
Аноним 09/03/23 Чтв 15:37:21 2634735 493
>>2634511
>компании ищут человека, который умеет работать с инструментом, который у них в ходу
А человека, который умеет писоть и какоть они ищут? Пульс щупают?

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

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

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

Так что завязывай мять писю и пиши код, прямо сейчас. Если будет какой-то идейный тупик - поможем. Но код блядь тебе все равно придется написать.
Аноним 09/03/23 Чтв 17:01:00 2634801 494
>>2634520

А зачем их вообще класть в константы? Почему нельзя просто использовать строку в коде (если ты отдаешь JSON) Или в шаблоне (если ты выводишь страницу)?
Аноним 09/03/23 Чтв 17:33:49 2634831 495
>>2634801
На константу ты можешь нажать ctrl и легко найти все места где она используется, к константе есть комментарий и используя константу не будет опечатки.
Аноним 09/03/23 Чтв 18:22:36 2634894 496
>>2634735
Не, это у тебя уже какие-то проекции пошли. Я как раз и пишу сейчас проект на портфолио, который уже почти готов. Да, по сравнению с дедом с 10 годами опыта это хуйня, но для меня это уже прорыв и я за его написанием изучил больше, чем за три месяца стажировки. Параллельно с изучением инструмента, пытаюсь разобраться в лучших практиках. А можно плюнуть и просто свой фреймворк написать. А можно и свой компилятор. И даже свою операционку. Полезно? Полезно. Но до вакансии ты так и не дойдёшь, отвлекаясь на фундаментальные штуки. Знаем, плавали. Да и задачек а-ля литкод easy я уже нарешался. Какой смысл изобретать велосипеды, если они никогда даже код ревью не пройдут? Это как если бы ты пришёл на языковые курсы, и тебе бы там сказали: размахивай руками, корчи рожи и издавай звуки, кое-как тебя всё равно поймут, а язык потом выучишь, как научишься доносить мысль.
Аноним 09/03/23 Чтв 19:06:31 2634922 497
>>2634894
>Я как раз и пишу сейчас проект на портфолио, который уже почти готов. Да, по сравнению с дедом с 10 годами опыта это хуйня, но для меня это уже прорыв
До тебя самого не доходит что небольшая либа, которая решает конкретную проблему твоего работодателя, полезнее чем очередной туду блог по перекатыванию хуя по столу туда сюда? Писать меньше, а пользы больше.

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

>Какой смысл изобретать велосипеды, если они никогда даже код ревью не пройдут?
Если кто-то нашел объективную ошибку в твоем коде - исправь её. Бля, ты реально в каком-то мире фантазий пребываешь. Версии ПО по твоему от нехуй делать придумали? Нахуя создатели симфони позорились и высирали первую версию? Могли бы ведь сразу пятую выдать и срывать овации и награды.

>Это как если бы ты пришёл на языковые курсы, и тебе бы там сказали: размахивай руками, корчи рожи и издавай звуки, кое-как тебя всё равно поймут, а язык потом выучишь, как научишься доносить мысль.
Я хуею как же насрано в башке.
А что в твоем понимании "не велосипед"? Бойлерплейт к фрефмворку? Прокидывание сервисов в конструктор? То что можно сделать командами make:controller и make:entity?
Аноним 09/03/23 Чтв 19:31:06 2634955 498
>>2634922
Так я сейчас конкретно учу фреймворк и его возможности. Я-то могу написать свой костыль, но понимание фреймворка от этого у меня не возрастёт. У тебя подход прагматика, которому надо здесь и сейчас что-то сделать и отправить в прод, а я просто хочу освоиться, понять чё да как и как делать лучше. О некоторых концепциях вроде того же сериализатора я в принципе узнал только читая доку фреймворка. Ну и собственно если бы я писал как бог на душу положит, не интересуясь практиками, я бы просто оставил джейсоны на массивах и всё бы работало, а тут за пару дней двачевания вон сколько нового узнал.
Аноним 09/03/23 Чтв 20:21:05 2635001 499
>>2634955
> но понимание фреймворка
Да ебаный по голове, какое понимание нахуй? Дока симфони это книжечка 100 страниц, которая читается за вечер, а типичные задачи давно покрыты генерацией кода, какое нахуй понимание, чего блядь понимание?

Ты столкнулся с проблемой, ты попробовал её решить, ты посмотрел как проблема решается в фреймворке. Ах вооот оно что, а вот это я не учел, а тут я лучше придумал, а это вообще лишнее. Вот это блядь ПОНИМАНИЕ. Я уже заебался скидывать в тред это видео https://www.youtube.com/watch?v=pz6VdH4_BSg

Вот оно идеально для обучения. Человек объясняет проблему, потом решает её прямо на сцене, на следующем этапе оптимизирует и углубляет решение, и так до тех пор пока его код не превращается в код симфони. Вот это способ ПОНЯТЬ, а не копирование бойлерплейта себе в проект.

Вообще непонятно откуда взялась эта идея что все проблемы в вебе давно решены и нужно только нагуглить нужную библиотеку. Где ты эту хуйню вычитал вообще?
Аноним 09/03/23 Чтв 23:17:49 2635135 500
>>2635001
Дока читается за вечер, если у тебя уже есть опыт работы с другими фреймворками или просто опыт разработки. Читается за вечер, если ты понимаешь архитектуру веб приложения, знаешь какие в вебе задачи и какие у них есть способы решения, а не когда ты до этого три года писал хелоу ворлды в универе. У тебя просто за 10 лет исказилось представление о том, как люди учатся и сколько всё это учится с нуля. То, что тебе очевидно, большинством учится годами.
Аноним 10/03/23 Птн 00:11:04 2635199 501
>>2635135
>знаешь какие в вебе задачи и какие у них есть способы решения
Да ебаный рот этого казино. Я че блядь с луны прилетел со знанием веб задач? На твоих блядь глазах это произошло. Я засучил рукава и решил веб задачу. А когда предложил тебе решить ту же задачу с уже данными подсказками, но в формате ооп ты просто слился. Как будто речь идет не о двух сотнях сток кода, а каком-то невероятно сложном проекте.

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

Короче дело твое "учи фреймворки" чтобы не быть баттхертом, я что мог сделал.
Аноним 10/03/23 Птн 20:08:53 2636080 502
Аноним 10/03/23 Птн 20:19:08 2636086 503
>>2636080
Ну так чел пишет про дорвеи и развод лохов на бабос. При чем тут разработка вообще? Если ты пробивной кабанчик, да еще и без моральных ограничений, то тебе и такое говно как пхп прибыль принесет.
Аноним 10/03/23 Птн 20:20:52 2636089 504
>>2636080
>PHP создаёт у человека адекватное восприятие веб-разработки
Хуета собачья. PHP максимум позволяет писать сайты быстро. И это все его преимущества.

>PHP ты можешь добавить на свой сайт админку, просто вставив <? if isset($_COOKIE['ADMIN']) { ?> и <? } ?> вокруг блока HTML кода
Шаблонизаторы? Не, не слышал.

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

>Благодаря PHP ты можешь за 2 минуты реализовать микросервис
Если бы это уёбище осознавало семантику написанного, то никогда бы такую хуету не написало бы.
Микросервисы пишутся и на ГОше и на питоне и на решетках и на расте.

>И самостоятельно задеплоить этот микросервис можно на ВООБЩЕ любой хостинг
Как и проект на любом стеке, главное, чтобы был докер иначе секс, что там, что там.

А вообще слишком жирный пост.
покормил
Аноним 10/03/23 Птн 21:37:37 2636140 505
>>2636089
Так пхп это тоже шаболнизатор.
Аноним 14/03/23 Втр 18:03:09 2640061 506
изображение.png 145Кб, 727x766
727x766
Кто там на битрикс пиздел? Оправдываейтесь.
Аноним 14/03/23 Втр 21:14:59 2640324 507
Screenshot 2023[...].png 186Кб, 1681x190
1681x190
Screenshot 2023[...].png 201Кб, 1808x222
1808x222
Screenshot 2023[...].png 221Кб, 1800x202
1800x202
Аноним 16/03/23 Чтв 17:50:41 2642268 508
image2023-03-16[...].png 41Кб, 1316x196
1316x196
image2023-03-16[...].png 68Кб, 1362x573
1362x573
image2023-03-16[...].png 42Кб, 776x418
776x418
Сап, пхпач. При установке Slim через композер столкнулся с такой проблемой (пик 1). После добавления обработчика ошибок, браузер кидает 404 (пик 2). Полный листинг кода (пик 3). Как фиксить ? Гугол не помогает. И такой вопрос, если это не воконцове не пофикситься, можно ли прыгнуть сразу ну 3-ю задачу из шапки с тестами ?
Аноним 16/03/23 Чтв 18:32:36 2642314 509
>>2642268
Это стандартный 404, у тебя нету зарегистрированного обработчика для твоего url который ты вводишь в браузере, ты обращаешься к папке а у тебя он на /
Аноним 17/03/23 Птн 16:24:50 2643159 510
>>2571790 (OP)
Меня заебало писать постоянно
echo "<pre>"
print_r($huynaName);

Есть какой-нибудь аналоговнет, чтоб я ебанул unknownShit($huynaName); и все работало также как с pre?
Аноним 17/03/23 Птн 16:25:53 2643162 511
>>2643159
Т.е. данные были в столбик, а не в строку.
Аноним 17/03/23 Птн 18:06:33 2643326 512
>>2643162
function unknownShit($hui) {
echo '<pre>';
print_r($hui);
echo '</pre>';
}
Аноним 17/03/23 Птн 19:15:26 2643424 513
>>2642314
А как добавить обработчик? В путь записать что то типа /index.php?
Аноним 18/03/23 Суб 02:42:20 2643866 514
Как суметь понять как решать задачу "Числа прописью"? Какие темы надо понять, чтоб мозг додумался что и как? Я просто сижу и ощущение как будто тужусь в голове, но нихуя не происходит.

Начал вот читать "Грокаем алгоритмы", пока не понимаю, поможет книга мне или нет. Но по крайней мере я уже узнал что-то новое. Что такое бинарный поиск. Я честно охуел, насколько это круто и интересно.
Аноним 18/03/23 Суб 06:14:12 2643901 515
Аноним 18/03/23 Суб 17:22:12 2644428 516
Изредка залетаю в ваш тред. Объясните мне, почему тут часто обливают помоями пыху, аргументируя это тем, что в ней многое написано на костылях, и это калечный язык. Мимо пхп-бэк стажёр. Мне пыха с точки зрения крудошлёпа нравится куда больше, чем те же питон или ЖС, при этом в ней нет столько бойлерплейта, как в джаве. Чё там на сисярпе не знаю. Мне не хватает компетенции, чтобы сравнить кишки пыхи с другими языками. Она вроде не сказать что медленная, уж точно не медленнее ЖС, особенно с тех пор как JIT добавили.
Аноним 18/03/23 Суб 17:38:41 2644444 517
>>2644428
1) Жс это дно говна, ты бы еще с брейнфаком сравнил.
2) Питон просто не ооп язык, а ты уже надрочен на ооп.
3) Пхп это джава для бедных, все что будет в пхп было в джаве десять лет назад.
4) Бойлерплейта в пхп тонна, тащи сюда модуль из пяти классов, я тебе 90% кода оттуда выкину как бойлерплейт.
5) Медленный = однопоточный. Однопоточный = медленный. Пока в пхп нет неблокируемого io по скорости он в будет в жопе.
Аноним 18/03/23 Суб 17:40:06 2644449 518
>>2644444
>Однопоточный
Как и Python & Js

>Пхп это джава для бедных
Где вордпресс на джава 10 лет назад?

>Пока в пхп нет неблокируемого io
Есть.
Аноним 18/03/23 Суб 17:42:56 2644451 519
>>2644449
>Как и Python & Js
Пхп быстрее питона и жс, но медленнее джавы. Пхп это джава для тех у кого нет денег на джава программистов.

>Где вордпресс на джава 10 лет назад?
На джаве своего говна хватает.

>Есть.
Давай код https://3v4l.org/
Аноним 18/03/23 Суб 17:56:50 2644473 520
>>2644444
Ну это всё специфика языка. Это я и так +-понимаю. Мне хотелось бы про костыли услышать. Что-то такое я тут много раз видел. А питон с ЖС никто не срёт, либо срёт, но это воспринимается скорее как мем. Питон-разработчик или ЖС-разработчик - это уважаемый наносек, пусть он и такой же крудошлёп, а ПХП-разработчик в глазах большинства - это какая-то непонятная фриланс-макака с вордпресса, и если спросить почему, то тебе начнут объяснять, что пыха - это мёртвый недоязык, но более адекватных аргументов обычно не приводят. Да, я в курсе про обилие низкоквалифицированных фрилансеров, но всё же интересно узнать, за что хейтят именно пыху как язык, а не как сообщество.
Аноним 18/03/23 Суб 18:05:04 2644480 521
>>2644473
>Мне хотелось бы про костыли услышать
Ну вот тебе загадка: что произойдет если ты попытаешься обратиться к несуществующей переменной или свойству объекта? Чем это плохо? И, наконец, почему в пхп так?
Аноним 18/03/23 Суб 18:49:22 2644526 522
Аноним 18/03/23 Суб 19:16:14 2644554 523
>>2644480
Я знаю, что объекты на хэш-мапе реализованы в пыхе, но не знаю, почему это плохо. Типа хэш-функция вызывается каждый раз при доступе к свойству объекта? А вообще да, последняя версия ругается, теперь только мэджик методы юзать.
Аноним 18/03/23 Суб 19:38:55 2644582 524
>>2644526
Сначала думай, потом пиши. https://3v4l.org/Gp79b#v8.2.0

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

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

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

Любому адекватному человеку очевидно что ситуация когда пропала переменная или свойство это пиздец нахуй. Это блядь бага стопроцентная. Здесь должно бросаться исключение. Что делает пхп? Нотис, варнинг. Ты как эти варнинги ебаные обрабатывать будешь? Начнешь ебашить костыли set_error_handler() restore_error_handler(). Ой бля а кто-то тут про костыли спрашивал?

А почему пхп не бросает исключение? Да потому же почему тебе нужно в начале каждого файла как еблану писать declare(strict_types=1); - легаси говно. Со всеми теми тоннами говнокода написанного раньше нужно поддерживать обратную совместимость. К восьмой версии подняли до варнинга, лет через десять и исключение будут кидать. А к 2050 начнут ошибку как значение возвращать.
Аноним 18/03/23 Суб 20:01:09 2644605 525
>>2644582
>Причем здесь это вообще?
При том, что под капотом у объекта в пыхе хранится хэш-мапа со всеми свойствами и их именами. Я думал, ты про это.
Про strict_types согласен. Но у того же питона, например, нет настоящих приватных свойств, и там тоже можно создать новую переменную. У ЖС хз как с этим, но вроде так же.
Аноним 18/03/23 Суб 20:21:30 2644631 526
>>2644605
>Но у того же питона, например, нет настоящих приватных свойств
Я тебе сразу написал что питону нахуй не нужна твоя ооп парадигма. В питоне есть иммутабельность и туплы, для целей в которых используется питон этого более чем достаточно.

>У ЖС хз как с этим, но вроде так же
Я тебе сразу написал что жс кал говна. Сравнивай с TypeScript.
Аноним 18/03/23 Суб 21:37:29 2644701 527
>>2643866

Эта задача решается путем разбиения ее на более простые и маленькие задачи.

Если ты возьмешь большое число вроде 123 456 789 и попробуешь его записать текстом, то ты увидишь, что в записи числа есть определенная структура:

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

или, если выделить основные части:

(число) миллиона (число) тысячи (число) рублей

То есть, мы можем разбить большое число на группы по 3 цифры от 0 до 999 и добавить к ним слова "миллионы", "тысячи" и "рубли". Тут, правда есть подвохи:

- слова могут иметь разную форму, например: 1 миллион, 2 миллиона
- числительные зависят от рода: один миллион, но одна тысяча
- группа может отсутствовать, например для числа 1 000 001 мы не пишем "ноль тысяч", а просто пропускаем группу с тысячами

Тем не менее, это позволяет нам упростить задачу: теперь нам нужно преобразовывать в строку только числа от 0 до 999. Если мы теперь запишем какое-то число вроде 444, то мы тоже увидим закономерность:

четыреста сорок четыре

Несмотря на то, что цифры одинаковые, они пишутся разными словами для сотен, десятков и единиц. То есть, мы можем просто сделать 3 списка: список слов для сотен (сто, двести, триста итд), для десятков (десять, двадцать), и единиц (один/одна, два/две, три...). Затем мы разбиваем число на разряды и для каждого разряда берем слово из списка.

Правда и тут есть подвохи:

- если разряд равен нулю, то мы пропускаем слово в нем: в числе 404 нет десятков
- для чисел от 11 до 19 эта схема не работает и нужен отдельный список для таких чисел. 11 это "одиннадцать", а не "десять один".

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

Про алгоритмы тоже, думаю, полезно будет почитать.
Аноним 18/03/23 Суб 21:39:29 2644703 528
>>2640061

Наивняша, "доля в бизнесе" надо читать как "работа за бесплатно". Ты наверно еще работу никогда не искал и потому не знаешь.
Аноним 18/03/23 Суб 21:43:28 2644709 529
>>2643424

У тебя не очень удачно настроен проект. Ты поместил проект не в корень сервера, а в парпку /examples/uppuru. Соответственно, когда ты открываешь его в браузере, то браузер шлет запрос с URL /examples/uppuru/. Тебе нужно либо

- в коде перед всеми URL добавлять этот префикс,
- либо использовать решение отсюда https://discourse.slimframework.com/t/add-prefix-to-all-routes/515/3 чтобы добавить префикс
- либо, что лучше всего, делать так, чтобы твой index.php лежал в корне сайта

Переходить к следующей задаче совершенно неправильно, если ты с этой проблемой не можешь разобраться, то ты ни одну реальную задачу решить не сможешь и тебя уволят.
Аноним 18/03/23 Суб 21:44:31 2644711 530
>>2643159

Добавь в начале кода

header("Content-Type: text./plain; charset=utf-8");

и весь текст на странице будет как ты хочшь
Аноним 18/03/23 Суб 21:46:39 2644713 531
>>2644444

> Пока в пхп нет неблокируемого io

Во-первых, оно есть уже давно, во-вторых, оно никому не нужно, так как в бизнес-логике сайта по продаже каких-нибудь услуг оно только мешается. Синхронный код проще писать и проще читать, а распараллеливание часто не нужно.
Аноним 18/03/23 Суб 21:49:33 2644718 532
>>2644480

В Симфони выбросит исключение. А теперь встречный вопрос: что будет, если в JS ты опечатаешься в названии свойства объекта:

obj.invalid = 3

И почему так?

А если ты в JS поделишь на ноль, то отоже ошибки не будет. Почему так?

А вот в Питоне, кстати, с этим проблем нет, но есть другая проблема: Питон наглухо игнорирует тайп-хинты и можно передать в функцию любой мусор и она не падает с ошибкой. Почему так?
Аноним 18/03/23 Суб 21:56:45 2644729 533
>>2644582

> Здесь должно бросаться исключение

Ну в JS например можно обращаться к несуществующим свойствам, делить на ноль и никаких исключений не будет. Почему?

> костыли set_error_handler() restore_error_handler().

Это не костыль, а вполне станлартный способ, всего 3 или 4 строки и ошибки начинают превращаться в исключения. Почему не сделать так по умолчанию? Потому что тогда сломается легаси-код, а никому это не понравится. Надеюсь, со временем все же включат выброс исключений.

> Со всеми теми тоннами говнокода написанного раньше нужно поддерживать обратную совместимость.

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

И, кстати, не только PHP заботится о совместимости, и в JS легаси тащат, и в Си, и в Яве.
Аноним 18/03/23 Суб 21:57:33 2644731 534
>>2644631

Вообще-то в Питоне есть приватные свойства по соглашению.
Аноним 18/03/23 Суб 22:23:09 2644744 535
Аноним 18/03/23 Суб 22:35:10 2644761 536
Аноним 18/03/23 Суб 22:46:41 2644769 537
>>2644718
>если в JS
Жс кал говна. Сравнивай с TypeScript.

>Питон наглухо игнорирует тайп-хинты
Легко решается вне кода, ни строчки писать для этого не надо.

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

>>2644729
>Ну в JS например
Жс кал говна. Сравнивай с TypeScript.

>Это не костыль, а вполне станлартный способ
Стандартный способ это try catch. А это хуита. Я уверен что ты названия этих функций впервые в моем посте прочитал.

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

>Лучше пусть такие, как ты, поноют на форуме, чем реальный бизнес будет тратить деньги на обновление.
Где ты увидел что я ною? Чел спросил почему к пхп так плохо относятся, я привел пример. Ты эти доводы только подтверждаешь. Да пхп отсталый, да в нем много легаси говна. Какая разница почему? До тех пор пока все это легаси говно не отомрет будет говноязык с костылями.
Аноним 18/03/23 Суб 22:48:11 2644771 538
>>2644761
Пример кода с неблокиуемым io. До тех пор буду ссать тебе на ебло, фантазер.
Аноним 19/03/23 Вск 00:45:30 2644842 539
Надо ли разбираться в структурах данных? В гайде ОПа есть какие-то объяснения или ссылки? В каком вообще порядке это всё изучается? Я так понимаю, структуры данных и алгоритмы изучаются в отрыве от определенного языка?
Пока читаю "Грокаем алгоритмы". Впервые узнал про связанные списки. Так и не понял, есть они в PHP или нет.

>>2644701
Спасибо. Вроде выглядит уже не так сложно. Но я всё-таки дочитаю книгу для новичков по алгоритмам, потом вновь попробую прорешать все задачи с ОП-гайда. А то на этой задаче прям сильно застопорился, накалякал говнокод какой-то, который вызывает у меня отторжение.
Аноним 19/03/23 Вск 14:33:37 2645120 540
>>2644842

Память компьютера состоит из ячеек. У каждой ячейки есть номер от 0 до N (в зависимости от того, сколько у тебя установлено памяти), и в каждую ячейку можно записать целое число от 0 до 255 (один байт). Соответственно, все, что ты хочешь хранить: числа, строки, массивы, картинки, аудио - все должно быть в итоге представлено в виде байтов в ячейках памяти.

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

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

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

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

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

- во-первых, у PHP может быть расширение, которое предоставляет нужные структуры данных
- во-вторых, некоторые структуры данных (вроде связанных списков или деревьев) можно реализовать без прямого доступа к памяти
- в-третьих, если первые 2 способа не помогают, ты можешь сам написать библиотеку на Си, которая реализует нужную структуру, и подключить к PHP с помощью FFI

По поводу первого: у PHP есть класс SplDoublyLinkedList, который реализует связанный список: https://www.php.net/manual/en/class.spldoublylinkedlist.php

По поводу второго: ты сам можешь сделать связанный список, используя объекты. Вот класс, который представляет один узел в списке. Он содержит полезные данные (строка $s) и ссылку на следующий узел ($next):

class ListNode
{
private string $s;
private ?ListNode $next = null;
...
}

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

// Создаем список
$list = new ListNode('a')->add(
new ListNode('b')->add(
new ListNode('c')
));

// Получаем длину
echo count($list) . "\n";
// Обходим список
foreach ($list as $s) {
echo "Value: $s\n"; // выводит a b c
}

Чтобы реализовать это, тебе нужно изучить ООП, в учебнике из шапки есть глава про ООП и там есть вся нужная информация. Чтобы список можно было перебирать с помощью foreach, тебе нужно изучить интерфейс IteratorAggregate и Interator. Чтобы получить длину списка с помощью count(), тебе нужно изучить интерфейс Countable.

Если ты пока не знаешь ООП, то можешь читать про алгоритмы, а потом изучить ООП и вернуться к этой задаче.
Аноним 19/03/23 Вск 14:39:23 2645123 541
>>2644769

>> Питон наглухо игнорирует тайп-хинты
> Легко решается вне кода, ни строчки писать для этого не надо.

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

Пример:

def false_positive(a: int):
b = a
if a > 10:
b = None

return b

В строке b = None mypy выдаст ошибку:

> mypy: error
> assignment - Incompatible types in assignment (expression has type "None", variable has type "int")

Если же поменять b = None на a = None, то и pyright начнет выдавать ошибку.

Это видимо и есть в твоем понимании "легко решается".
Аноним 19/03/23 Вск 14:41:59 2645125 542
>>2644842

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

> В гайде ОПа есть какие-то объяснения или ссылки?
По структурам данных и алгоритмам - нету

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

> Так и не понял, есть они в PHP или нет.
Есть, SplDoublyLinkedList
Аноним 19/03/23 Вск 15:42:15 2645186 543
Sup, сделал проект на ларавел (а точнее телеграм бот на winter cms), там сделал систему сообщений ( в виде классов ), которые должны инстанцироваться через new $msgClass . Локально (OpenServer) всё хорошо работает, но на сервере почему-то PHP ругается что не может найти такие классы (путь в них полный, может разве что не начинается с /)

$msg = new $msgClass;

Естественно в файле где инстанцируются эти классы сообщений сами сообщения не импортированы, но как я сказал локально всё работало
Аноним 19/03/23 Вск 16:00:29 2645219 544
>>2645186
Всё, решил, сук пиздец, потому что папки с сообщениями были с большой буквы...
Аноним 19/03/23 Вск 20:06:25 2645669 545
>>2645123
Кому ты лечишь, дура. Ты не указал возвращаемый тип, ты не указал типы переменных.
Если бы ты сразу указал что b: int|None = a , то все бы было заебись
https://mypy-play.net/?mypy=latest&python=3.11&gist=64059fd2d1a8519d3d4ed541b95126b5
Очередное подтверждение что "ПХП-разработчик в глазах большинства - это какая-то непонятная фриланс-макака с вордпресса".
Аноним 20/03/23 Пнд 00:25:21 2646052 546
>>2645219
На линухе так, да. И слеши еще другие.
Аноним 20/03/23 Пнд 00:26:46 2646053 547
Константы класса можно вызывать через static:: ? Если да, то почему в мануале нет про это?
Аноним 20/03/23 Пнд 00:28:24 2646055 548
>>2645669

Зачем мне указывать тип каждой переменной? Я не хочу, я хочу, чтобы так все работало.
Аноним 20/03/23 Пнд 00:29:39 2646056 549
>>2646053

Через static можно обращаться не только к константам, но и к статическим полям и методам, то есть static используется вместо имени класса.
Аноним 20/03/23 Пнд 00:35:48 2646061 550
>>2646056
Ну это понятно, я думал через self:: внутри и имя класса:: снаружи только можно.
Аноним 20/03/23 Пнд 00:46:59 2646073 551
>>2646055
>Зачем мне указывать тип каждой переменной?
Чтобы работал статистический анализ. Чтобы баги отлавливать до попадания в продакшен. Чтобы говнокод не писать.

Бля, я в ахуе. Ты еще тут >>2644473 ? Смотри на этих ебаных животных в естественной среде. Вот это чучело залупоголовое причина почему все угарают над пхп и теми кто на нем пишет.
Аноним 20/03/23 Пнд 00:55:56 2646081 552
>>2646061
А можно вот так: https://3v4l.org/RdVfs
С седьмой версии много всяких ебанутостей можно делать.
Аноним 20/03/23 Пнд 01:41:32 2646100 553
>>2643901
НЕ ПОЛУЧИЛОСЬ
>>2644709
БЛЯ Я РЕАЛЬНО УЖЕ ВСЮ ГОЛОВУ СЕБЕ НАХУЙ СЛОМАЛ С ЭТИМ СЛИМОМ, У МЕНЯ КСАМП СТОИТ И В КОРНЕВОМ КАТОЛОГЕ УЖЕ ЕСТЬ СВОЙ INDEX.PHP, ЛАДНО ПОХУЙ, СОЗДАЛ ПРОЕКТ НЕ В /HTDOCS/EXAMPLES/UPPURU, А СРАЗУ В /HTDOCS/UPPURU, СДЕЛАЛ ВСЕ ТАКЖЕ И НИХУЯ. ВСЕ ТАКЖЕ 404 С 76 СТРОЧКОЙ КАК НА ПИКАХ ВЫШЕ.
Аноним 20/03/23 Пнд 01:56:05 2646107 554
image2023-03-20[...].png 59Кб, 906x452
906x452
>>2646100
ОШИБОЧКА ВЫШЛА, СПАСИБО АНОНАМ СВЕРХУ КОД НА ПИКЕ РАБОТАЕТ ПРЕКРАСНО ! И ВЫВОДИТ ХЕЛОУ ВОРЛД
Аноним 20/03/23 Пнд 16:18:41 2646640 555
>>2646073
На месте. Возвращаясь к твоему доёбу о том, что свойства появляются и пропадают, технически ты можешь сделать мэджик геттер и сеттер, которые будут выдавать ошибку. Да, это бойлерплейт, но всё же решает твою проблему.
Аноним 20/03/23 Пнд 17:33:20 2646740 556
>>2646640
>почему тут часто обливают помоями пыху, аргументируя это тем, что в ней многое написано на костылях
>Мне хотелось бы про костыли услышать
>технически ты можешь сделать мэджик геттер и сеттер, которые будут выдавать ошибку
Попробуй у себя на стажировке так сделать. Интересно, леща тебе въебут или пинка.

Ты сам-то понимаешь вообще почему даже ебанутая конструкция set_error_handler() restore_error_handler() лучше магических геттеров? Да и вообще ты типа собрался эту поебень в каждый класс проекта вставлять? Ладно, это вопросы риторические, спросишь их там где стажируешься.

Вот тебе следующий костыль: есть в природе такая хуйня как солид, и там под буквой O находится open-closed principle. Вот тут парень >>2634138 правильно написал что в пхп есть конструкция final , которая по солиду закрывает класс от изменений. Ты у нас хороший мальчик, солид уважаешь, и пометил классы своего домена как final.
А теперь внимание, вопрос: каким хуем теперь сохранять сущности домена доктриной и мокать эти объекты в юнит тестах?
Аноним 20/03/23 Пнд 17:42:41 2646754 557
>>2646740
>почему даже ебанутая конструкция set_error_handler() restore_error_handler() лучше магических геттеров?
Пиздеть не буду, не понимаю. Я вообще не понимаю, в каких кейсах есть проблема пропадающих/появляющихся полей, если везде тайпхинты и интерфейсы.
Ну да, я понимаю, что вставлять геттер и сеттер в каждый класс, это пиздец, но опять же, я не представляю, где это вообще может быть проблемой.
>каким хуем теперь сохранять сущности домена доктриной и мокать эти объекты в юнит тестах?
Нихуя не понял тут. Доктрина сейвит объекты, а не классы. Каким хуем тут вообще final? А мокать можно с помощью декораторов, например, нахуя тебе вообще наследоваться от сущностей?
Если чё, мне реально интересно, я не пытаюсь с тобой спорить.
Аноним 20/03/23 Пнд 22:24:03 2647101 558
>>2646754
>Нихуя не понял тут. Доктрина сейвит объекты, а не классы
По моему очевидно что раз я об этом спросил, то там есть проблемы.

>А мокать можно с помощью декораторов, например
Мокать ты будешь с помощью phpunit

Начни с того что загугли как доктрина работает с приватными свойствами и почему именно так.
Аноним 20/03/23 Пнд 22:41:22 2647126 559
>>2647101
Бля, по-моему ты просто каких-то рандомных терминов нагородил. Все, которые знаешь. Final плохо, потому что в моках мы должны наследоваться, а это плохо, потому что приватные свойства в доктрине.
Аноним 20/03/23 Пнд 22:55:36 2647133 560
>>2647126
>Final плохо
final не "плохо" final просто не работает с доктриной и phpunit.

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

С phpunit ты вроде понял почему не работает: все Test Doubles наследуются. Осталось написать твой вариант костыля. Там есть очень смешные и ебанутые варианты.

С доктриной вопрос по прежнему стоит: почему доктрина не работает с final? Вариантов костыля я знаю только один, и он уже не смешной, а грустный.
Аноним 21/03/23 Втр 16:29:14 2647722 561
>>2646740

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

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

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

Ответ очевидный, не использовать final. Я его вообще никогда не использую, так как он никаких плюсов не дает.

И кстати моки на сущности я тоже бы делать не стал. Бессмысленное усложнение кода. Видимо, тебе нужна еще помощь по тестированию?
Аноним 21/03/23 Втр 16:30:22 2647724 562
>>2646073

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

В PHP я не указываю типы переменных, и статический анализ работает. А в твоем Питоне - не работает. PHP лучше Питона?
Аноним 21/03/23 Втр 16:48:03 2647742 563
>>2646100

Тебе надо разобраться с настройкой xampp (а точнее Apache в нем). В Apache есть "виртуальные хосты", то есть ты можешь поднять у себя локально несколько разных сайтов.

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

Гугли по словам "как добавить виртуальный хост в xampp в Windows".

В качестве домена я советую выбирать названия, заканчивающиеся на .localhost, например http://uppuru.localhost. Такие имена автоматически преобразуются в 127.0.0.1 (адрес твоего компьютера) и тебе не надо лезть в файл hosts и что-то менять (даже если в инструкции будет написано, что надо).

То есть, тебе надо:

1) создать папку для нового хоста, например c:\xampp\htdocs\uppuru.localhost\

2) в ней создать папку public и подложить туда index.php

3) добавить новый виртуальный хост в конфиг Апача, указав домен (ServerName) uppuru.localhost и корень сайта (DocumentRoot) c:/xampp/htdocs/uppuru.localhost/public/ (в конфиге Апача слеши должны быть прямые)

4) перезапустить Апач

5) менять что-то в файле hosts не надо, все должно работать и так

Это делается за 2 минуты при наличии опыта.

В папку public ты кладешь файлы, к которым можно обращаться из браузера, а все остальное, например, PHP-код, конфиги, кладешь за ее пределами. Это повышает безопасность, а то сейчас у тебя все файлы доступны через браузер и это плохо. Любой сможет выполнить или скачать любой файл с твоего севрера.
Аноним 21/03/23 Втр 16:49:44 2647745 564
>>2646740

> Да и вообще ты типа собрался эту поебень в каждый класс проекта вставлять?

Можно просто подключить трейт:

use DisableDynamicProps;

ровно 1 строка. Теперь попробуй добиться того же в Яваскрипте.
Аноним 21/03/23 Втр 16:52:27 2647754 565
>>2647133

> С доктриной вопрос по прежнему стоит: почему доктрина не работает с final?

Ты сюда пришел разобраться в устройстве Доктрины? Доктрина использует прокси-классы для ленивой загрузки и они должны наследоваться от сущностей, потому сущности не могут быть final. Я тут проблемы не вижу вообще. Ты сам себе придумал зачем-то что надо ставить везде final и жалуешься, что это не работает с Доктриной. Либо убирай final, либо бери другую библиотеку.
Аноним 21/03/23 Втр 22:50:37 2648160 566
>>2647754
Козел ебаный, нахуй ты влез в разговор, который даже не прочитал? >>2647126 Вот смотри, это какое уже по счету подтверждение что пхп макаки тупорылые животные.
Аноним 21/03/23 Втр 22:55:56 2648171 567
TameRequiredJae[...].mp4 292Кб, 576x304, 00:00:08
576x304
>>2647724
>В PHP я не указываю типы переменных, и статический анализ работает
>В пхп если в типах ошибка, стат анализ молчит
>работает

>А в твоем Питоне - не работает
>В питоне если в типах ошибка, стат анализ говорит что в типах ошибка
>не работает

Ты еблан?
Аноним 21/03/23 Втр 22:56:15 2648172 568
>>2648160
На связи >>2647126
Могу сказать, что я нихуя не понял всё равно, т.к. с доктриной работал хуй да нихуя, пару атрибутов написал и всё, а из тестов писал только простые юниты, не ебу чё там с моками. Так что было бы интересно послушать твой ответ на ответ мимокрока. А вообще как бешеная собака, брызжащая слюной, пока что ведёшь себя в осноном ты.
Аноним 21/03/23 Втр 22:58:29 2648177 569
>>2648172
То есть ты сам не загуглил про прокси и как обходят проблему с final разработчики на пхп? Почему?
Аноним 22/03/23 Срд 01:29:52 2648268 570
>>2647742
Спасибо, анон! Ты няша.
Аноним 22/03/23 Срд 04:16:37 2648307 571
>>2647742
А как выйти из корневого каталога public в href ?
Допустим есть файл index.php, который лежит в корневом каталоге public, а там есть ссылка на скрипт вне этого каталога.
Прописывать что-то типо <a href="/../test.php">ссылка</a> ? Только что затестил и не получилось, апач просто не видит этот файл (я про test.php)
Аноним 22/03/23 Срд 06:39:19 2648344 572
>>2648307
Ты не понимаешь как работает интернет. И не понимаешь как работает веб сервер.

Веб сервер дает публичный доступ к файлам на жестком диске. Вот эта строчка в конфиге:
(DocumentRoot) c:/xampp/htdocs/uppuru.localhost/public/
означает что все ссылки в интернете с определенным доменным именем (например uppuru.com) будут обращаться к файлам в этой папке. А уже в настройках апача уточняется что не просто к папке, а именно к файлу index.php в этой папке.

Если сервер доступен в интернете, то его адрес и маршрут до него формируется с помощью DNS серверов. То есть когда кто-то вводит в браузере uppuru.com сначала идет запрос на получение адреса нашего сервера, а потом через длинный маршрут запрос таки доходит до нашей папки и файла index.php

Но локальный веб сервер работает не так. Он получает только локальные запросы, т.е. запросы к адресу localhost или 127.0.0.1. Чтобы вместо ничего не говорящего localhost можно было в браузере вводить uppuru.com и браузер не лез в интернет в поисках того чего там нет, можно винду заставить все запросы к uppuru.com перенаправлять на 127.0.0.1. Как? Правильно отредактировав файл hosts. Но вот этот анон >>2647742 подсказал тебе более простой способ, вместо uppuru.com использовать uppuru.localhost . Таким образом и название будет понятное и переадресация на 127.0.0.1 будет работать сама.

Допустим ты все сделал как тебе написали >>2647742

Наконец к твоему вопросу: как выполнить код из скрипта, который находится в другой папке, зарытой от доступа снаружи?
Ответ: только с помощью самого php. Вот так это делается вручную https://www.w3schools.com/php/php_includes.asp . Вот так это делается автоматически https://github.com/codedokode/pasta/blob/master/php/autoload.md
Предполагаю твой следующий вопрос: а как мне выполнять определенный код только для определенных ссылок?
Ответ: как раз с помощью slim и его роутинга https://slimframework.ru/v3/objects/router

Что в итоге? Твой веб сервер просто получает запрос из браузера и если в запросе доменное имя uppuru.localhost запускает index.php в папке, которую ты указал как (DocumentRoot) для этого домена. Это работает для любых ссылок: uppuru.localhost/../test.php uppuru.localhost/хуйс uppuru.localhost/пук.среньк
А вот интерпретацией этих ссылок и роутингом должен заниматься твой php код, который в index.php и находится, там включается автозагрузка, там ты запускаешь свое приложение и обрабатываешь запрос.
Аноним 22/03/23 Срд 07:52:16 2648361 573
test.png 68Кб, 994x543
994x543
>>2648344
Мне не нужно выполнять скрипт из директории снаружи корневой, мне нужно, чтобы пользователь нажал на кнопку и его ссылкой перенаправило на этот скрипт как на пике.
Аноним 22/03/23 Срд 08:10:44 2648370 574
test2.png 5Кб, 560x54
560x54
>>2648361
Попробовал даже так, ссылка становится просто напросто некликабельной, даже не перенаправляет на другую страницу.
Аноним 22/03/23 Срд 08:19:58 2648374 575
>>2648361
Ну и нахуя я все это писал? Все ссылки ведут на скрипт Index.php, я тебе даже написал почему и как.
Аноним 22/03/23 Срд 09:05:58 2648389 576
>>2648374
Я тебя понял, твоя информация супер полезная без иронии говорю, но вопрос остается открытым, как из индекса которая находится в корневой директории попасть через ссылку на скрипт находящийся вне . Пример на пиках не работает, так что надо сделать чтобы заработало, анончик ?
Аноним 22/03/23 Срд 09:39:02 2648397 577
>>2648389
В public создаешь controller.php где будет один require_once "../controllers/12312321.php"
Аноним 22/03/23 Срд 09:52:47 2648401 578
>>2648397
А как вы атрибуте href к нему обращаться то ? Я вообще не вдупляю.
Аноним 22/03/23 Срд 09:58:32 2648404 579
>>2648401
Мне просто нужно ПЕРЕЙТИ НА ДРУГУЮ СТРАНИЦУ КОТОРАЯ НАХОДИТСЯ НЕ В КОРНЕВОМ КАТАЛОГЕ ЧЕРЕЗ ТЕГ <a>, А НЕ ВЫПОЛНИТЬ СКРИПТ
Аноним 22/03/23 Срд 10:01:18 2648408 580
>>2648389
Я тебе все ссылки дал. Вот так в slim создается новый контроллер https://slimframework.ru/v3/objects/router#container-resolution

>>2648401
>А как вы атрибуте href к нему обращаться то ? Я вообще не вдупляю.
ВСЕ ССЫЛКИ ВЕДУТ НА INDEX.PHP Вообще все. А в index.php код который читает ссылку и решает что с ней делать

>>2648404
>ПЕРЕЙТИ НА ДРУГУЮ СТРАНИЦУ
Чтобы отобразить пользователю ЛЮБУЮ страницу нужно выполнить скрипт index.php
ПЕРЕЙТИ НА СТРАНИЦУ = выполнить Index.php
Аноним 22/03/23 Срд 10:06:00 2648411 581
>>2648404
Я не знаю как еще тебе объяснить.

Давай по русски тогда. У тебя ссылка uppuru.localhost/СДЕЛАЙ-БОЧКУ.
Веб сервер эту ссылку приносит в Index.php
У тебя в index.php условие:
если в ссылке есть "СДЕЛАЙ БОЧКУ" выполнить функцию "НОВАЯ БОЧКА"

Так понятно?
Аноним 22/03/23 Срд 10:15:36 2648414 582
>>2648411
>>2648408
Аноны, есть ссылка на репозиторий где вся эта лабуда с пабликами хуябликами нормально для понимания настроена и можно чисто по коду понять как это работает, потому что я вас абсолютно не выкупаю, тут 2 варианта, либо я пиздец какой тупой, чего за собой раньше не замечал и вы открыли мне глаза, либо пхп явно не моя стезя.
Аноним 22/03/23 Срд 10:17:27 2648416 583
>>2648414
Заебал, специально для тебя сделал дискорд сервак, заходи я тебе за две минуты все объясню.

https:// discor d. gg / 6qXSDNQa
Аноним 22/03/23 Срд 10:23:50 2648417 584
>>2648401
href="controller.php", если у тебя нету Rewrite на index.php, если есть и у тебя Slim то создай роут /controller на этот свой файл.
Аноним 22/03/23 Срд 20:08:00 2649124 585
>>2648177

"Проблема с final" существует только в твоем воображении. Я, например, только от тебя узнал, что есть люди, которым нужно зачем-то везде писать final.
Аноним 22/03/23 Срд 20:10:01 2649128 586
>>2648171

В коде ошибки нету. Код работает корректно. Анализатор выдает ложное срабатывание, так как в отсутствие тайп-хинтов он попытался определить тип переменной из выражения b = a и сделал это неправильно.
Аноним 22/03/23 Срд 20:11:42 2649131 587
>>2648307

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

А вот если ты хочешь просто подключить файл за пределами public через require, то это сделать можно.
Аноним 22/03/23 Срд 20:16:46 2649134 588
>>2648361

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

То есть если у тебя пользователь может перейти по ссылке viewFile.php (или отправить форму по такой ссылке), то этот файл нужно положить в public. Но только его, а не вообще все файлы. В public должен быть минимум файлов, только то, что нужно, а не все подряд.

Также, если ты используешь Slim, а не пишешь код с нуля, то у тебя из PHP-файлов в public будет только index.php. Остальные файлы ты будешь подключать за счет роутинга.

Если ты не используешь фреймворк, а пишешь все сам, то у тебя может быть в public несколько файлов-контроллеров вроде index.php, upload.php, viewFile.php и так далее. В этом случае роутером у тебя будет по сути Апач.
Аноним 22/03/23 Срд 20:29:51 2649148 589
>>2648361

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

uppuru.localhost/file/123
uppuru.localhost/upload
uppuru.localhost/about

перенаправляются на index.php (за счет конфига Апача), index.php подключает Слим, а Слим смотрит на URL и вызывает нужный контроллер. Вызов нужного контроллера в зависимости от URL это и есть роутинг.

То есть, при использовании Slim ты не используешь URL вроде /file.php?id=123, и не обращаешься к скриптам напрямую, а используешь нормальные URL вроде /file/123.

Когда ты у себя в index.php пишешь

$app->get('/upload', function (..) { .... });

то это читается как "если браузер запросит страницу /upload методом GET, то вызвать эту функцию. А эта функция может отдать какой-то текст или вызвать контроллер, или подключить шаблон или что-то еще.

То есть, если ты используешь Slim, то тебе надо:

- изучить и запомнить, из каких частей составляется URL: https://github.com/codedokode/pasta/blob/master/network/urls.md
- изучить хотя бы основы HTTP и знать что такое "метод" и чем GET отличается от POST: https://github.com/codedokode/pasta/blob/master/network/http.md
- настроить в Апаче mod_rewrite, чтобы при любых запросах вызывался index.php
- разобраться с роутингом и в index.php настроить роуты для всех страниц, которые будут на сайте
- и дальше уже спокойно писать код для этих страниц
Аноним 22/03/23 Срд 23:40:53 2649400 590
>>2649128
Хватит срать в штаны. Ты инициализировал b как int. В строгой системе типов переменной типа int нельзя присвоить None, о чем тебе и написал анализатор.

Так будет в C https://onlinegdb.com/ocs908ZGh
Так будет в C++ https://onlinegdb.com/BWS3BI5ts2
Так будет в C# https://onlinegdb.com/3avb7HDQo
Так будет в Java https://onlinegdb.com/LFYYA1pUU
Так будет в Go https://onlinegdb.com/vur0OGM3Ns

То что в твоем ебанутом мире пхп можно творить хуйню, означает не что все остальное сломано, а что пхп кал говна и ему до нормального языка как до луны раком.
Аноним 22/03/23 Срд 23:42:16 2649406 591
>>2649124
Ок, петух. Наводящий вопрос: ты когда пишешь свой говнокод используешь SOLID?
Аноним 23/03/23 Чтв 06:23:26 2649615 592
>>2649400
>В строгой системе типов переменной типа int нельзя присвоить None
А в пыхе как будто можно https://onecompiler.com/php/3z3fdu2ub

>Так будет в C#
Впервые слышишь про nullable? https://onlinegdb.com/lOWZtwFpQg
А не будешь переносить скобки на новые строки приедет дядя Билл и купит тебя в рабство.

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

> ему до нормального языка как до луны раком
Добавить асинхронность, автозагрузчик классов и пакетный манагер из коробки?
Действительно как до луны.
Аноним 23/03/23 Чтв 06:30:36 2649617 593
Аноним 23/03/23 Чтв 06:57:09 2649619 594
>>2649615
>>2649617
Нахуй вы мне это пишете? Пишите это >>2649128 дегенерату. Это его пример. Это он придумал инициализировать переменную через присваивание, это он придумал что потом её за каким-то хуем нужно менять на нулл, это он на серьезном ебале заявил что нормальное поведение стат анализатора хавать это говно, потому что в пхп можно на все хуй забить.
Аноним 23/03/23 Чтв 12:10:23 2649827 595
>>2649400

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

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

Тип переменной не определяется присвоенным ей в первый раз значением. Если бы я сначала написал b =None, а потом b =a, то это значит что тип переменной b это None?

Это именно ошибка статического анализатра, который почему-то решил, что тип переменной определяется первым присвоенным ей значением.
Аноним 23/03/23 Чтв 12:11:53 2649830 596
>>2649400

Твои примеры кода не эквивалентны моему. У тебя в Си явно указано, что b это int. У меня в коде это не указано, статический анализатор это сам откуда-то придумал.
Аноним 23/03/23 Чтв 13:25:36 2649918 597
>>2649827
>Ситуация, когда в переменной может лежать что-то или None, встречается очень часто
В такой ситуации и нужно указывать что в переменной будет лежать что-то и none, тупорылый ты хуесос. Это ты ебанько хочешь нихуя не указывать и чтобы ошибок никаких не было. В пхп никаких ошибок нет не потому что он охуенно умный, а потому что ему похуй. А во всех нормальных языках, в которые кстати входит питон, тебе пишут что ты, собака сутулая, попутал типы и либо укажи правильные типы, либо меняй присваиваемый тип.

>>2649830
В C и С++ всегда нужно указывать тип объявляемой переменной. Там твое ебланское "нихачу" не прокатит. За остальные примеры есть че пернуть?
Аноним 23/03/23 Чтв 21:12:19 2650533 598
image.png 695Кб, 827x1181
827x1181
Читали? Мнение?
Аноним 24/03/23 Птн 08:13:21 2650904 599
image.png 84Кб, 800x723
800x723
image.png 86Кб, 798x678
798x678
>>2650533
В целом должна быть норм, упущения имеются, но "базу" получишь.

вкатун
Аноним 24/03/23 Птн 08:19:30 2650905 600
Юзается ли на практике SplFixedArray? Или все просто используют "обычные" массивы php? Судя по тестам SPL побыстрее при бОльшем размере - тратит память меньше, операции вставки быстрее.

Сам я понял так, что до сотен тысяч элементов обычный массив - хеш-таблица - лучше подойдет, всё что выше - лучше использовать spl.
Аноним 24/03/23 Птн 09:07:07 2650918 601
image.png 11Кб, 727x149
727x149
Аноним 24/03/23 Птн 09:38:44 2650929 602
>>2650905
Вся Spl билиотека это наебка и карго культ. Никто её не использует. Потому что эти структуры написаны не на C, а на самом пхп. Ты, например можешь как хочешь изъебываться, но стандартная функция сортировки пхп будет быстрее твоей, потому что написана на C и выполняется на C, а твоя на пхп и у неё есть оверхед. Почему тогда не сделают структуры на C? А хуй его знает, походу для формошлепства они не очень нужны.

SplFixedArray работает немного лучше не потому что он fixed, а потому что SplFixedArray это на самом деле не массив, а объект. Добро пожаловать в мир пхп - здесь все наебка.
Аноним 24/03/23 Птн 11:20:18 2650994 603
>>2650904
Нахуй мне мнение человека, который ещё даже не вкатился? Иди литкод дрочи, вкатун.
Аноним 24/03/23 Птн 12:58:52 2651087 604
Аноним 24/03/23 Птн 13:50:10 2651116 605
Screenshot 2023[...].png 24Кб, 592x232
592x232
>>2651087
Правильно, все как я и описал.
Нормальный fixed size массив аллоцируется в стеке и ДО выполнения функции и за счет этого работает быстрее.
В пхп ебала пикрелейтед. Которая представляет собой обертку над специальным пхп объектом zend_object, который ясный хуй лежит в куче. А оперируем мы им через виртуальную машину пхп. Все возможные профиты от fixed array в этой ситуации теряются, остается только название.
Аноним 24/03/23 Птн 14:58:43 2651216 606
>>2650994
Так это не моё мнение, как видишь, а человека разбирающегося в этом. Ты можешь сам проверить, прочитав этот отрывок, и понять, что эта книга не идеальна. Но дело твоё, раз тебе хочется ворчать, ныть, плакаться, задавать глупые вопросы, ок.
Аноним 25/03/23 Суб 11:58:19 2652133 607
>>2651116
>Нормальный fixed size массив аллоцируется в стеке
>Все возможные профиты от fixed array в этой ситуации теряются
Мне просто интересно, где ты эту хуйню вычитал? FixedArray полезен тем что не требует доп.аллокаций, и это не хеш карта с доп.памятью, без ключей, FixedArray используются в С/C++ часто с выделением памяти, потому что стек ограничен в пару МБ, и много ты там не разместишь, а ведь там еще должны находится адреса возврата и локальные переменные интерпретатора. То что там поверх Zend это вообще никак не влияет на производительность.
Аноним 25/03/23 Суб 13:00:38 2652190 608
>>2652133
>Мне просто интересно, где ты эту хуйню вычитал?
Это общеизвестный факт. Массив на стеке будет быстрее обычного массива. Ты типа сомневаешься что это так? Или просто больше нечего пернуть?

>FixedArray используются в С/C++ часто с выделением памяти, потому что стек ограничен в пару МБ
Это какого размера должен быть массив чтобы не влезть на стек? 1кк? Нахуя тебе фиксированный массив на 1кк? Ты понимаешь что весь выигрыш в скорости будет схаван тем фактом что тебе сначала нужно эту ебалу в памяти создать, а потом его заполнить. И ты типа знаешь что данных ровно столько и переполнения не будет. Никто такой хуйней не занимается, а просто использует обычный массив. А в пхп так вообще в принципе нет задач для таких объемов данных, что бы ты не делал это будут порции по паре тысяч элементов. Нет никакого смысла держать в памяти даже массив на один миллион, тебе тупо нечего с ним делать.

>То что там поверх Zend это вообще никак не влияет на производительность
А если еще немного стекломоя наебнуть, то он и выигрыш в производительности даст. Даже самому нулевому вкатуну очевидно что работа через посредника будет медленнее.
Аноним 25/03/23 Суб 13:21:29 2652225 609
>>2649918

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

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

В PHP по-другому. PHP не додумывает типы за тебя, и корректно провеяет их во время выполнения, когда они указаны.

Попробуй успокоиться и спокойно разобраться в сути проблемы.
Аноним 25/03/23 Суб 13:24:55 2652228 610
>>2650905

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

В SplFixedArray индексы всегда идут строго по порядку от 0 до N. Это дает два преимущества:

- можно экономить память при хранении больших объемов данных
- можно таким образом показать, что функции нужен именно набор данных с ключами от 0 до N по возрастанию. Другой набор данных передать не получится.
Аноним 25/03/23 Суб 13:27:36 2652231 611
>>2650918

Я вижу, анон, ты умный, раз ты решил эту задачу. Может быть ты тогда можешь посчитать, какова вероятность выпадения двух даблов? То есть, два дабла выпадают в одном из скольки случаев?
Аноним 25/03/23 Суб 13:42:06 2652245 612
>>2651116

Ты пишешь ерунду. В современных ОС размер стека сильно ограничен (легко может быть в районе 384 Кб, например), и ты там много не разместишь.

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

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

> Которая представляет собой обертку над специальным пхп объектом zend_object, который ясный хуй лежит в куче

Ну ты и глупый. zend_object в структуре со ссылки это сам объект SplFixedArray, а не содержащиеся в нем элементы (они хранятся в spl_fixedarray array). Перечитай исходный код, чтобы не позориться больше.
Аноним 25/03/23 Суб 14:15:34 2652281 613
>>2652190
>Массив на стеке будет быстрее обычного массива
Бред который ты где то услышал, и скорее всего текст то был правильный, но ты из за того что только на PHP писал, ничего не понял и выдумал свою шизу.

>Это какого размера должен быть массив чтобы не влезть на стек?
У тебя только один массив в приложении?

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

>А в пхп так вообще в принципе нет задач для таких объемов данных
Конешн.

>Даже самому нулевому вкатуну очевидно что работа через посредника будет медленнее.
Скажи потерю производительности в процентах, с округлением в меньшую сторону. это будет 0% на современном железе где запускается php
Аноним 25/03/23 Суб 14:39:32 2652314 614
>>2652225
Ну я тебе привел примеры как это работает в нормальных языках. Везде работает как в питоне. Получается что в C#, Java и Go ложное срабатывание, а в C и С++ вообще нельзя сразу тип не указать, во ебанутые. Такие детские ошибки, не то что в пхп.
Аноним 25/03/23 Суб 15:42:10 2652376 615
>>2652245
>Ну ты и глупый. zend_object в структуре со ссылки это сам объект SplFixedArray, а не содержащиеся в нем элементы (они хранятся в spl_fixedarray array).
Бля, что же быстрее: просто array или пхп ебала + array. Никак не могу выяснить, загадка прям.

>>2652281
>Бред который ты где то услышал, и скорее всего текст то был правильный
Так будет или не будет? Почему ты не напишешь прямо, а вертишь сракой?

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

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

>Скажи потерю производительности в процентах, с округлением в меньшую сторону
C++ быстрее пхп в 5 раз, а C быстрее C++, так что думаю в шесть раз примерно. Я петухам из вк верю https://vkcom.github.io/kphp/various-topics/walk-through-php-kphp-cpp.html#compare-php-vs-kphp-vs-c--final-results
Можешь начинать кудахтать что ваши тесты не тесты.
Аноним 25/03/23 Суб 16:05:29 2652391 616
>>2652376
>Так будет или не будет? Почему ты не напишешь прямо, а вертишь сракой?
Поучу тупого, массив на стеке и в распределенный через malloc это просто кусок памяти, один кусок памяти может быть быстрее другого из за разного способа выделения на уровне ОС.

>что массив на стеке это часть программы
>он уже скомпилирован
Покажи мне скомпилированный лол массив тут https://godbolt.org/z/G5ezcWfr3

>C++ быстрее пхп в 5 раз
Клоун, я тебе задал конкретный вопрос, и он не связан с общей производительностью PHP vs C++. То что ты кидаешь какие то ссылочки, и пишешь про доверие, четко подтверждает мои догадки - ты начитался того что слишком велико для твоего уровня, и выдумал свои манятеории о том что Spl написан на PHP, что стеки дают 100500 буст производительности.
Аноним 25/03/23 Суб 16:06:48 2652393 617
>>2652391
Фикс
>один кусок памяти может быть быстрее
НЕ МОЖЕТ
Аноним 26/03/23 Вск 14:04:51 2653336 618
>>2652376

> что же быстрее: просто array или пхп ебала + array

Хватит демонстрировать глупость. Изначально ты заявлял, что SplFixedArray написан на PHP и не дает никакого выигрыша, тебе объяснили что он написан на Си и выигрыш есть (в объеме занимаемой памяти в сравнении с обычным массивом), но ты все никак успокоиться не можешь.

Что касается скорости, то во-первых, SplFixedArray дает выгирыш по использованию памяти, а не по скорости, голова дубовая, во-вторых, для подавляющего числа приложений скорость работы PHP достаточна. Можно было бы писать сайты на Си, но почему-то так никто не делает, а используют PHP, как думаешь, почему?
Аноним 26/03/23 Вск 18:27:21 2653570 619
>>2571790 (OP)
Какое самое простое и доступное решение для асинхронного выполнения?
Аноним 27/03/23 Пнд 14:07:51 2654220 620
Аноним 27/03/23 Пнд 21:54:40 2654759 621
>>2654220
Мне нужна асинхронность в php процессе.
Аноним 27/03/23 Пнд 23:17:08 2654810 622
>>2653570
Amphp мне больше всего понравился.
Аноним 28/03/23 Втр 15:12:18 2655242 623
>>2653336
Так это написали для ускорения, а не для сохранения памяти.
Аноним 28/03/23 Втр 15:13:16 2655244 624
https://onlinephp.io/c/21551 - Числа прописью

Где забрать 300кк? Сделал за 100 минут. Меня уже берут на работу?
Аноним 28/03/23 Втр 15:20:31 2655257 625
>>2655244
Ужас блядь, ни PSR, ни DRY. Больше никому это не показывай.

>Меня уже берут на работу?
Боже упаси.
Аноним 28/03/23 Втр 17:21:40 2655421 626
>>2655257
Показывай свой вариант. Бля, как я устал. Каждый раз оно и то же из треда в тред.

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

Это фишка пхп треда, нигде в /pr такого больше нет. Пиздежа - море разливное, но написать код просто невозможно. В любом другом треде анон с кайфом напишет что угодно лишь бы разъебать по фактам. А пхп треде только пук.
Аноним 28/03/23 Втр 17:30:26 2655430 627
>>2655421
>Показывай свой вариант
Сколько ты мне за это заплатишь?

>Один раз за пол года кто-то реально пишет код
Не пизди.

>про бест практики, хуйню малафью
>Нинужна
Что отличает погремиста от макаки?

>лишь бы разъебать по фактам
Наваливает базы как надо писать по бест практис и переиспользованию участков кода?

Ты пишешь array, не пользуешься типизацией и делаешь интерполяцию строк через {}, зачем мне тебе устраивать код ревью бесплатно, чтобы сделать из макаки которая пишет код из PHP 5.6 человека?
Аноним 28/03/23 Втр 17:47:21 2655451 628
>>2655430
а в чём проблема интерполяции строк через {}, как ещё это делать, sprintf?

мимо
Аноним 28/03/23 Втр 18:23:55 2655495 629
>>2655430
А сколько заплатили >>2655244 челу?

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

>Ты пишешь array, не пользуешься типизацией
То есть ты по моему посту не понял что этот код не я писал? Ну ты в натуре пенек осиновый. Все эти "ошибки" про array и прочую неважную хуйню типа разметки фиксятся одной комбинацией клавиш в phpstorm ctrl+alt+l.

Не удивительно что код никто не постит. Мало кому хочется дело иметь с такими бездарными хуесосами как ты, от которых помощи 0, зато вони дохуя.
Аноним 28/03/23 Втр 20:07:41 2655560 630
image.png 14Кб, 1237x369
1237x369
>>2655451
Сейчас уже можно просто переменную вставлять между двойными.

>>2655495
>А сколько заплатили >>2655244 челу?
Зачем платить долбаёбу который напишет бесплатно?

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

>что этот код не я писал?
>Меня уже берут на работу?
А дефаешь этот высер так как будто писал его ты, лул.

>Ну ты в натуре пенек осиновый
Ну ты внатуре подпивас колхозный который решил в погремирование, дабы не хуярить на заводе.
Если тебе тайпхинты показать ты снова вернёшься на ленту, мне вот интересно!?

>комбинацией клавиш в phpstorm ctrl+alt+l
Ну так нахуя ты несёшь сюда код за который я бы тебя уволил нахуй? Почему ты не нажал эту чудесную комбинацию клавиш?

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

>с такими бездарными хуесосами как ты
Обиделась моя маленькая шавка? Ну погавкай погавкай, а как перейдёшь на человеческую речь тогда и поговорим. Адио.
Аноним 28/03/23 Втр 20:36:07 2655576 631
image.png 33Кб, 469x796
469x796
>>2655560
да вроде всегда было можно, там же разница немного в другом
$array[key] и {$array['key']}
и методы вызывать можно только в скобках {$foo->bar()}
Аноним 28/03/23 Втр 21:34:50 2655630 632
5dpyq6yVvb9ejwY[...].jpg 55Кб, 571x571
571x571
photo-176424.jpg 17Кб, 600x479
600x479
>>2655560
>Клуб изучающих PHP
>Тут мы изучаем язык PHP
>Это тред для начинающих
>Зачем платить долбаёбу который напишет бесплатно?
>Нахуй ты мне нужен сидеть разбирать твой высер? Ты мне за это не заплатишь.
>Ну так нахуя ты несёшь сюда код за который я бы тебя уволил нахуй?
>никто не хочет палить свои гиты
>Ведь есть же макаки с кода которых можно покекать.
Ебать, какой же пидарас всплыл. Давно таких мразей не видел. И эта фиксация на "платить" "заплатишь" эта боль безработного вкатуна.
Аноним 28/03/23 Втр 22:17:39 2655650 633
9d4c52b66d33184[...].png 250Кб, 2382x1432
2382x1432
>>2655576
Да не слушай этого дебила. Он ни дня в жизни программистом не работал.
Как изначально договорено так и будете писать. Где-то используют sprintf, где-то implode, где-то конкатенацию, где-то интерполяцию. Это по большей части дело вкуса, как и любое форматирование в принципе. Я уже лет пять как просто загружаю очередной стайлгайд в шторм и ставлю автоформатирование при коммите.

Все действительно важные правила проверяются в phpcs и/или sonarqube. Так что твой мердж реквест просто не пройдет пайплайн и будет висеть как фуфел красный, а пока он красный никто его ревьюить и аппрувать не будет, пушо это физически невозможно. И тогда твой тимлид тебе скажет что хватит хуи пинать, пиздуй фиксить. Ты зайдешь в jenkins откроешь пайплайн, прочитаешь какие скобки не там и поставишь как надо. И то как предпочитаешь их расставлять ты или какой-то еблан на двачах никого не ебет, просто потому что чтобы поменять правила надо нехуйно поебаться, сначала согласуя, а потом переписывая их.
Аноним 28/03/23 Втр 22:42:17 2655664 634
>>2655630
>эта боль безработного вкатуна
>>2655650
>программистом не работал
Эти колхозные маняфантазии... Эти потужные колхозные рассказы про мерж реквесты =)

Судя по твоему коду не работал ни дня именно ты т.к тебя хотя бы научили хорошим практикам кода.
Аноним 28/03/23 Втр 23:30:06 2655680 635
>>2655664
>потужные
>колхозные
>=)
Ты хохол что-ли? То-то я смотрю происходит какая-то истерика на грани шизофрении. Вы держитесь там, переживаю за вас как за родных.
Аноним 29/03/23 Срд 08:00:39 2655825 636
>>2655430
>>2655495
В этом же треде мне писали, что "ВИДНО СРАЗУ - ВКАТУН, БЫЛ БЫ ТЫ РАЗРАБОТЧИК, ТО НЕ ИСПОЛЬЗОВАЛ БЫ ИНТЕРПОЛЯЦИЮ!". Сейчас наоборот.

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

>>2655430
array() было в примере кода, я не исправлял ничего, т.к. вроде можно и так. А что в этом плохого? Надо обязательно [] использовать?
Аноним 29/03/23 Срд 11:54:36 2656008 637
>>2655825
Дело не в том можно или нельзя. Просто будь готов к тому что тебя попросят сделать по другому, не цепляйся за эту хуйню. Тебе должно быть похуй как писать, хоть задом наперед. Главное что не руками.

Поставь phpstorm. В code style выбери схему psr, это стандарт, это база. Одно нажатие кнопки и весь код в файле будет отформатирован машиной по стандарту. Если в конторе другой стайлгайд, ты просто заменишь в code style схему на ту которую они используют. 99% что ты даже знать их ебанутые правила не будешь.

Потом поставь плагин https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended- и исправляй косяки пока инспектор не покажет зеленую галочку. Почему надо именно так он тебе напишет и даст ссылку на развернутое объяснение. Делов на пару минут, а вопрос с форматированием закрыт полностью и навсегда.
Аноним 29/03/23 Срд 13:09:40 2656087 638
Аноним 29/03/23 Срд 14:08:11 2656123 639
>>2655244

> in_array($number % 100, [11, 12, 13, 14, 15, 16, 17, 18, 19])

думаю, тут лучше было написать условие в стиле "x ≥ 11 и x ≤ 19", чем перечислять 9 чисел.

Когда тебе надо собрать строку из слов, то удобно сделать массив и класть в него отдельные слова, в стиле:

если (в числе есть сотни) {
положить в массив число сотен;
}

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

В общем, сделано неплохо и аккуратно, если не считать дублирования кода.
Аноним 29/03/23 Срд 14:13:40 2656125 640
>>2655430

> Ты пишешь array,

array там в одном месте - в списке названий чисел, потому что этот список был написан для заголовки задачи во времена PHP5. В других местах везде квадратные скобки.

> не пользуешься типизацией

Потому что в учебнике в этой задаче еще не упоминается типизация. Невозможно изучить все одновременно.

> и делаешь интерполяцию строк через {}

И в чем тут проблема? Это исключает неоднозначность, если например после переменной идет кавычка: "«$a»" - ты знал, что здесь кавычка станет частью имени переменной? Не знал наверно.

> зачем мне тебе устраивать код ревью бесплатно

Либо пиши что в коде не так, либо не пиши ничего.

> Ни PSR

Судя по тому, что ты не написал номер PSR, ты сам не знаешь о каком PSR идет речь.
Аноним 29/03/23 Срд 14:16:38 2656128 641
>>2655560

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

echo "$x[$a]" - не заглядывая в мануал, как это интерепретируется? Ты же судя по комментариям опытный специалист и легко ответишь, правда?
echo "$x->a()" - а это?
echo "«$x»" - не заглядывая в мануал, как это интерпретируется?

Не использовать {} можно, если переменная отделена пробелами или другими безопасными символами от остальной строки.
Аноним 29/03/23 Срд 14:18:42 2656130 642
>>2655825

array там в заголовке кода, потому что она написана много лет назад, когда еще не везде работали []. Сегодня array использовать нет смысла.
Аноним 29/03/23 Срд 19:52:13 2656602 643
>>2645120
>Структуры данных - это способы размещать информацию в памяти.
Не согласен. Структуры данных предназначены для разработчиков, а не для компьютеров, чтобы им удобно было хранить. Как они под капотом хранят данные, никого особо не интересует. Структуры данных - это не способ хранения, это скорее способ представления данных, абстракция. И способ манипуляции этими данными.
Любые структуры данных можно смоделировать с помощью функций. Способ хранения не важен. Важно как они будут представлены и важен интерфейс для манипуляции этими данными.
Аноним 29/03/23 Срд 22:04:39 2656699 644
>>2656602
>Структуры данных предназначены для разработчиков, а не для компьютеров, чтобы им удобно было хранить
Откуда инфа? Из "перезвоним" треда?

Пиздец, знали бы разрабы постгреса, что они btree индексы не для перфоманса придумывают, а для себя, ебать они бы охуели.
Аноним 29/03/23 Срд 23:37:42 2656773 645
>>2656699
>btree индексы
Ты путаешь причину и следствие. Почему деревья эффективны? Не потому, что они на железе лучше лежат. А потому, что они эффективны по асимптотической сложности. Эффективность структур данных определяет не способ их хранения на низком уровне, а их алгоритмическая эффективность. Эффективность с точки зрения математического уровня абстракции. Самого верхнего уровня, а не уровня компилятора или железа.

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

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

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

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

Асимптотическая сложность вообще не подразумевает оценки скорости выполнения операций для вычислителя. Она определяет как быстро можно проводить операции с точки зрения математики. Вычислителем может выступать просто человек с листком бумаги и ручкой.
Аноним 30/03/23 Чтв 08:45:52 2656941 646
>>2656773
Но то, как на железе данные лежат, тоже ведь влияет. Обойти таблицу по индексу дороже, чем прочитать саму таблицу последовательно, хотя алгоритмическая сложность одна и та же. Да и, например, одну и ту же структуру данных можно реализовать по-разному: например, стек через вектор и стек через связный список, и будет разница по крайней мере в потребляемой памяти. Можно думать о структурах данных, как об абстракциях при решении каких-то прикладных задач, но вообще внутренняя реализация тоже играет роль.

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

мимо
Аноним 30/03/23 Чтв 10:43:18 2657003 647
>>2656773
Ты бы хоть из приличия почитал как в постгресе btree реализованы, про пейджинг и прочие оптимизации.

Да и вообще твоя шизотеория ломается прямо на старте, на самых базовых примерах структур типа стека и кучи. Именно структура и расположение стека в памяти делает работу с ним быстрее. Стек работает LIFO не потому что программистам так удобно, а потому что процессор может добавлять в такую структуру данные за одну инструкцию.
Аноним 30/03/23 Чтв 15:09:09 2657248 648
>>2656941
Само собой реализация имеет значение. Никто в здравом уме не реализует структуры данных намерено не оптимально. Но разработчик не может повлиять на внутреннюю реализацию. Его задача выбрать правильную структуру с точки зрения алгоритмической сложности. В этом его задача. А задача разработчиков языка эффективно реализовывать структуры.

>>2657003
Ты бы матчасть подучил сначала. Стек является LIFO не потому, что процессор как то там устроен. Процессор может быть троичным и каким угодно еще, от этого стек не изменится. Стек это АТД, математическая абстракция. Он вообще не зависит от процессора. Его можно реализовать различными способами. Детали его реализации не волнуют тех кто его использует. Им дан только интерфейс. Не путай стек со стеком вызовов. Стек является LIFO потому что первый зашел - последний вышел, последний зашел - первый вышел. Очередь работает наоборот.
Аноним 30/03/23 Чтв 15:13:37 2657254 649
>>2657003
Стек вызовов реализован с помощью АТД стек только потому, что абстракция стека вызовов идеально ложится на абстракцию АТД стека.
Аноним 30/03/23 Чтв 15:29:40 2657265 650
>>2656941
>по-моему, асимптотическая сложность больше про то, как время выполнения растёт с увеличением количества входных данных
Входных данных по отношению к алгоритму. Для одного алгоритма рост меньше, для другого больше. Это же функция. А функция что делает, она отображает. Зависимость одного от другого. То есть говорит об отношении. Это абстрактные измерения эффективности самого алгоритма, его математические свойства, а не измерение скорости выполнения данного алгоритма каким либо процессором.

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

Когда работают на конвейере такие измерения тоже могут быть полезны. Человек будет тем более эффективно выполнять работу, чем меньше действий он будет производить. Чем меньше действий - тем проще получается работа. Меньше времени, меньше усилий, меньше отвлекающих факторов. Любой исполнитель будет +- одинакового выполнять эти действия. Даже если кто то может быстрее других, важно чтобы он выполнял как можно меньше действий. В идеале всего одно. Одно и то же действие на протяжении всей работы. Тогда будет наибольшая эффективность.
Аноним 30/03/23 Чтв 15:54:12 2657290 651
16726944928710.mp4 344Кб, 1280x720, 00:00:02
1280x720
>Но разработчик не может повлиять на внутреннюю реализацию
>А задача разработчиков эффективно реализовывать структуры
Похоже с шизотеорией я в точку попал. Шиз эталонный из палаты мер и весов.

>>2657248
>Не путай стек со стеком
>Стек является LIFO потому что он LIFO
Ты под солями?
Аноним 30/03/23 Чтв 16:08:56 2657300 652
>>2657290
Иди уроки учи, шкальник.

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

Стек - это АТД. Стек вызовов - абстракция в процессорах, виртуальных машинах и т.п., реализуемая в виде АТД стек.
Аноним 30/03/23 Чтв 17:01:02 2657339 653
16507308835530.webm 9167Кб, 320x240, 00:03:19
320x240
>>2657300
>Стек - это АТД
>Стек вызовов - абстракция
>реализуемая в виде АТД стек
Бля, я уже заебался проигрывать с того как ты по кругу ходишь противореча себе самому.

Ты походу просто угашенный в хлам. Но я все таки заскриню и кину плюсоебам в загон, чтобы знали каких вершин мы тут в пхп тренде достигли на почве структурирования данных.
Аноним 30/03/23 Чтв 18:35:15 2657454 654
>>2657339
Что тебе не ясно, неуч? Конкретные противоречия напиши. Или на хуй пошёл. Стек - абстрактный тип данных (АТД), лишь контакт. Стек вызовов - абстракция реализованная в процессорах, стековых виртуальных машинах и т.д. Используется только для хранения данных вызываемых функций. Реализуется на основе абстрактного типа данных - стека.

>заскриню и кину плюсоебам в загон
Можешь еще в спортлото написать.
Аноним 30/03/23 Чтв 19:11:59 2657508 655
лошара.mp4 280Кб, 426x240, 00:00:06
426x240
>>2657454
>Стек - лишь контакт
>Стек вызовов - абстракция реализованная в процессорах
>в процессорах
>Реализуется на основе - стека
Бля, биокарлик, пощади не добивай. Я от смеха лопну нахуй ща.
Аноним 30/03/23 Чтв 19:24:21 2657521 656
>>2657508
Дура тупая, одно и то же понятие может иметь разные значения. Одно и то же понятие может рассматриваться с разных сторон, на разных уровнях абстракции. Просто у тебя вместо мозгов говно.
Аноним 30/03/23 Чтв 21:53:58 2657697 657
644ce554f2159f2[...].jpg 34Кб, 680x457
680x457
15715500756040.webm 1205Кб, 450x360, 00:00:58
450x360
>>2657521
>Одно и то же понятие на разных уровнях абстракции
Оно понятие, разные значения. Одно понятие, разные стороны. Одно понятие, разные уровни абстракции.
Наконец-то сумрачный пхп гений вывел истинную структуру данных.
Фрактальный стек. Просто блядь ебнутый шизоид под солями.
Аноним 30/03/23 Чтв 22:07:58 2657714 658
Вкатывайтесь в фуллстек JS, толку от вашего PHP? Нуль. В JS всё реализовано по уму за редким исключением.
Аноним 30/03/23 Чтв 22:21:58 2657724 659
Аноним 30/03/23 Чтв 22:34:22 2657734 660
>>2657714
Ладно бы ты пердел про TypeScript, но хуже js говна в природе нет.
Аноним 31/03/23 Птн 15:21:52 2658293 661
image 51Кб, 1140x638
1140x638
image 75Кб, 720x340
720x340
Аноны-погроммисты, требуется хелпа по сайту на Symphony.

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

Проблема в том, что я нихуя не понимаю, как это делается. В данный момент у меня есть форма на HTML и небольшой обработчик на чистом ПХП, который в обычном случае отправляет данные, но на этом сайте при нажатии на кнопку выдается ошибка "Method not allowed. Must be one of: GET".

Как я понимаю, мне надо либо писать какой то другой код, либо где то включить разрешение на отправку данных пост методом, но где - не понятно. Структура папок вообще не дефолтная и нет yml конфига, которые есть во всех примерах в интернете.
Аноним 31/03/23 Птн 17:12:58 2658482 662
Аноним 31/03/23 Птн 17:29:00 2658494 663
image 17Кб, 512x736
512x736
Аноним 31/03/23 Птн 18:00:32 2658567 664
16802729414170.png 18Кб, 512x736
512x736
>>2658494
Ты уверен что он на симфони?
Аноним 31/03/23 Птн 19:10:01 2658653 665
>>2658567
Бля, да, похоже это слим, я проебался.
Аноним 31/03/23 Птн 19:47:30 2658686 666
>>2658293
Отбой, всё сам сделал.
Аноним 31/03/23 Птн 19:48:58 2658690 667
>>2658567
Тебе добра, анон, я зеленый пиздец, только на жопакрипте скрипты писал до этого. Без тебя за год бы не допер, что сайт на слиме, а не на симфони ебаном. Спасибо ещё раз!
Аноним 31/03/23 Птн 19:50:53 2658694 668
>>2658686
А если точнее Чат ПГТ подсказал.
Аноним 01/04/23 Суб 09:01:38 2659029 669
Аноним 01/04/23 Суб 13:36:57 2659217 670
ddsacsdf.png 108Кб, 1401x1283
1401x1283
>>2659029
Сколько вам уже раз говорено было: поставьте блядь шторм
Аноним 01/04/23 Суб 13:36:59 2659218 671
>>2659029

Запустил твой код тут https://replit.com/languages/php_cli

Идет куча сообщений вида

PHP Notice: Undefined variable: montlyPayment in /home/runner/tv90l05qsse/main.php on line 13

Ты неправильно написал название переменной и долг никогда не уменьшается и потому программа работает бесконечно.
Аноним 01/04/23 Суб 15:08:51 2659317 672
Аноним 02/04/23 Вск 14:36:29 2660519 673
>>2659217
Шторм с торрента норм? Там ток за 21 год есть

Или триал еще можно юзать? А то они же там че-то закрылись и туда-сюда
Аноним 02/04/23 Вск 15:09:55 2660543 674
>>2660519
Качай с офф сайта, потом ставь вот эту хуйню чтобы за лицухой он наружу не лез https://github.com/libin9iOak/ja-netfilter-all
Обновляться будет как официальный, это по сути даже не кряк.
Аноним 02/04/23 Вск 15:43:13 2660563 675
>>2660543
Как это юзать? Даже блять инструкцию не написали. Какое то нагромождение файлов.

>.vbs
>legacy windows environment
Теперь понятно почему такое говно. Небось на windows xp сидит.
Аноним 02/04/23 Вск 16:00:01 2660572 676
>>2660563
Я понимаю что сложно, инструкция то не для пхп треда писалась
>1. add -javaagent:/path/to/ja-netfilter.jar=jetbrains to your vmoptions
>/path/to/ja-netfilter.jar
>ja-netfilter.jar

Что такое vmoptions за тебя гуглить или нет?
Аноним 02/04/23 Вск 19:20:33 2660815 677
>>2660519
Зайди на степик, пройди какой нибудь погроммистский курс, там дадут лицуху на весь софт jetbrains на год.
Аноним 02/04/23 Вск 21:59:29 2660937 678
>>2660815
Уже нет. У самого такая лицензия в марте закончилась. Думал еще раз сделаю, а всё. И надо было не курс проходить, а решить 4 задачи в определенных курсах.
Аноним 02/04/23 Вск 22:17:54 2660947 679
>>2660937
>Думал еще раз сделаю, а всё.
Типо второй раз не даст активировать, а предложит купить?
>а решить 4 задачи в определенных курсах
Ну или так, я просто забыл уже, но помню, что сам получал такую 2 раза.
Аноним 02/04/23 Вск 22:37:54 2660959 680
>>2660947
Jetbrains больше не сотрудничают со Степиком.
Аноним 02/04/23 Вск 22:55:53 2660968 681
image 11Кб, 519x95
519x95
>>2660959
С чего ты взял? Я 4 месяца назад там ключ получал.
Аноним 02/04/23 Вск 23:00:40 2660969 682
>>2660968
>С чего ты взял?
Алё, бля >>2660937
>У самого такая лицензия в марте закончилась

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

мы прекращаем интеграцию Stepik с подключаемым модулем
https://blog.jetbrains.com/education/2023/03/30/jetbrains-academy-plugin-2023-3-is-available/

Разорвали сотрудничество со Степиком и всеми компаниями из РФ.
Аноним 03/04/23 Пнд 01:29:21 2661090 683
>>2660969
Не нашел там про то, что ключи не будут выдавать, только про то, что курсы перенесут на свою площадку.
Аноним 03/04/23 Пнд 10:39:25 2661299 684
Аноним 03/04/23 Пнд 11:16:29 2661364 685
image 17Кб, 716x179
716x179
>>2661299
Твоя ссылка не открылась, но я уже сам нашел. Видимо я в последний момент ключ получил.
Аноним 03/04/23 Пнд 12:35:19 2661473 686
>>2661364
>Твоя ссылка не открылась

>>2660969
>Вчера висело объявление на Степике, что типа всё. Сегодня уже не открывается даже.
Аноним 03/04/23 Пнд 15:14:32 2661737 687
>>2661473
Так ты другую изначально скинул, я думал ты про неё.
Аноним 03/04/23 Пнд 15:55:49 2661787 688
>>2661737
>Так ты другую изначально скинул
Потому что

>>2660969
>Сегодня уже не открывается
Аноним 04/04/23 Втр 01:43:41 2662201 689
Снимок экрана в[...].png 202Кб, 1440x818
1440x818
Как фиксить?
Аноним 04/04/23 Втр 01:53:01 2662203 690
Аноним 04/04/23 Втр 13:23:21 2662444 691
>>2662201

mysql по умолчанию пытается подсоединиться к БД через unix-сокет по адресу /run/mysqld/... Докер не предоставляет такой сокет, потому ты должен коннектиться через TCP-порт 3306:

mysql -h 127.0.0.1
Аноним 04/04/23 Втр 13:24:11 2662445 692
>>2662201

Либо же ты должен настроить свой докер, чтобы /run/mysql/ был доступен внутри докера и mysqld мог бы создать в этой папке unix-сокет.
Аноним 14/04/23 Птн 16:25:03 2672157 693
image.png 18Кб, 546x483
546x483
Как добавить сюда "открыть в phpstorm"?
Аноним 16/04/23 Вск 00:26:16 2673342 694
Аноним 01/05/23 Пнд 13:18:14 2685657 695
>>2660969
А есть ли ещё варианты получить ключик, не даунгрейдясь и не через паленые ключи, которые быстро истекают?
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов