Сохранен 899
https://2ch.hk/pr/res/1599201.html
19 мая мы обновили софт на сервере. Просим пользователей сообщать на e-mail, если что-то где-то сломалось.

Клуб изучающих PHP #115 /php/

 Аноним 12/02/20 Срд 15:14:48 #1 №1599201 
php-noob-1.png
cat-cafe-osaka.jpg
Acchi-Kocchi-acchi-kocchi-30421025-1007-570.jpg
cat-sad.jpg
Непонятный сезон стоит за окном, а мы по-прежнему изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

В нашем треде отвечают почти на все вопросы, только бампайте каждые 5 дней.

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

Предыдущий тред был тут: >>1552970 (OP) . Все старые треды есть в архиве: https://phpclub.tech/ (там есть поиск, так что можно легко найти обсуждение какой-то задачи или ответы на свой старый пост) или ищутся в гугле по словам "клуб изучающих php" и в архиваче.

Мейлач лежит? Есть запасной тред на доброчане: /s/res/23225.xhtml#i46467

Форматируй свой код, если хочешь, чтобы его читали (как, написано во втором посте).

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

С чего начать

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

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Visual Studio Code, Netbeans PHP или PhpStorm (с ним будет удобнее).

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка 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
- Еще более сложная и долгая задача на Yii/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony 3/Doctrine 2
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

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

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

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

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

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

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

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

Что почитать

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

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

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

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

- Почему PHP? Потому что вакансий море, и учить легко.
- Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.ru/6bfCY9lfl и получи личную немного устаревшую оффлайновую копию сайта (можно читать хоть на андроиде без интернета)
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу.
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
Loading...
Аноним 12/02/20 Срд 15:15:54 #2 №1599203 
grammar.png
Стоит писать код как попало, а аккуратно. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

Если тебе лень выравнивать код руками, закачай его на http://beta.phpformatter.com/ и нажми «format». Робот исправит выравнивание и отступы в мгновение ока (да, прогресс не стоит на месте). Если ты используешь мощную IDE вроде PhpStorm, там тоже есть функция форматирования кода.

Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть стандарты PSR-1 и 2. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)

Вот ссылка на рекомендации PSR, где все это описано подробнее и даны примеры оформления:

PSR-1 (рус.): https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2 (рус.): https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-2-coding-style-guide.md
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/

Аноним 12/02/20 Срд 15:17:04 #3 №1599205 
Напомню себе проверить позже: >>1598967 →

https://github.com/Vladrigos/StudentList/

Если вдруг я кому-то не ответил в прошлом треде, можете напомнить о себе тут.
Аноним 12/02/20 Срд 15:21:41 #4 №1599212 
https://github.com/izicoder/todosite
Накалякол говно
Но хотя бы работает...
мимо долбоеб
Аноним 12/02/20 Срд 15:23:36 #5 №1599216 
>>1599205

Могу, кстати, сразу несколько советов дать по поводу https://github.com/Vladrigos/StudentList/

- сделай папку public, как описано в задаче, чтобы из браузера не были доступны все файлы проекта
- почитай урок про SQL инъекции и используй плейсхолдеры при подстановке переменных в запрос: https://github.com/codedokode/pasta/blob/master/security/sql-injection.md
- почитай урок по DI и явно передавай объект PDO в StudentGateway вместо использования синглтонов: https://github.com/codedokode/pasta/blob/master/arch/di.md

Аноним 12/02/20 Срд 15:52:36 #6 №1599237 
>>1599212
Осталось это же через ООП запилить
Аноним 12/02/20 Срд 17:42:28 #7 №1599358 
ну наконец таки перекатили. и полугода не прошло. анчоусы, подскажите, делаю аякс пагинацию и там такой код https://ideone.com/fRquks
он отсылает меня в шаблон, который парсит в нужной мне разметке уже то, что пришло с контроллера. проблема только в том что сам js код проблем не вызывает и ajax не ловит .fail
вместо этого при переходи на любую из страниц пыха мне выдает что undefined variable т.к. видимо из за того, что с контроллера нихуя не прилетает. так вот с чем связано то что ничего не приходит?
Аноним 12/02/20 Срд 17:53:56 #8 №1599369 
Недавно сделал студентов. Жду негатив <3 https://github.com/Back1ng/students Использовал Singletone для базы данных, как пример антипаттерна, анон сказал попробовать, чтобы знал. Еще и роутинг хотел по другому сделать, но подумал про параметры, и решил сделать так как есть, ведь все равно большего кода тут не будет
Аноним 12/02/20 Срд 19:58:01 #9 №1599501 
>>1599369
У тебя контроллер наследуется от БД, че за пиздец, во всю используются глобальные переменные. Нет тестов.
Пиздец!
Аноним 12/02/20 Срд 20:23:53 #10 №1599535 
6B5CC2A9-3DC1-4827-92FD-45601A151C3B.jpeg
32782F70-A7DA-4247-B502-C0EDA056878C.jpeg
Пацаны, я паровозик, который смог.
Давайте вместе порадуемся этому.

Тащемта если отбросить обсер с видимостью переменных в функциях, я ломал голову над знаками, которые должны быть в запросе sql. Стаоался там кавычки поставить, запятые как отдельные символы ставить. Но это оказало проще.
Аноним 12/02/20 Срд 22:03:02 #11 №1599681 
>>1599501
>У тебя контроллер наследуется от БД
Теперь не наследуется

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

>Пиздец!
Понимаю! =)
Аноним 12/02/20 Срд 22:49:39 #12 №1599739 
>>1599501
>Нет тестов
Сейчас бы тесты на студентов писать.
Толсто.
Аноним 12/02/20 Срд 22:53:56 #13 №1599741 
image.png
>>1599681
Нафига вы так пишете? Строки что ли экономите?
Аноним 12/02/20 Срд 23:41:33 #14 №1599770 
>>1599739
Потом удивляемся, почему в проде никто тесты не пишет
Аноним 12/02/20 Срд 23:57:55 #15 №1599791 
>>1599770
Какой прод, шиз? Тут учебный проект.
Аноним 13/02/20 Чтв 00:01:31 #16 №1599795 
>>1599770
Тесты заебись писать когда ты сидишь на работе и тебе за это платят, а не с голодухи в поисках вката, или заказа, или обучения.
Т.е. только тогда когда это хоть кому-то нужно.
Аноним 13/02/20 Чтв 01:09:23 #17 №1599881 
>>1599681
Глобальные переменные вроде $_SESSION. Не используй их, потому что тесты потом не сможешь написать. Есть всякие библиотеки, которые позволяют работать с сессиями и куки как с объектами, гугли.
Аноним 13/02/20 Чтв 01:13:47 #18 №1599895 
Сап /pr. Занимаюсь пыхой уже второй год, ковыряю фреймворки потихоньку, немного зарабатываю на фрилансе, вроде получается. Сейчас я студент последнего курса, поэтому летом уже пора искать работу. Но в моей шараге сейчас есть курс по тестированию веб-приложений на питоне. Стоит ли вкатываться? Или забить и подрочить пых ещё пару месяцев?
Аноним 13/02/20 Чтв 02:06:41 #19 №1599954 
>>1599881
>Есть всякие библиотеки, которые позволяют работать с сессиями и куки как с объектами, гугли.
Да ему одного объекта хватит, куда это всё убрать можно. Зачем библиотеки?
Аноним 13/02/20 Чтв 02:28:22 #20 №1599962 
>>1599954
Чтобы по psr все было.
Аноним 13/02/20 Чтв 02:28:43 #21 №1599963 
Суп. Подскажите как фронтенд скотине быстренько влететь в пхп, чтоб без всякой воды и говна для полных новичков типа "что такое DOM, бигоу нотейшон и т.д"? Там на удеми может что-нибудь? Надо по работе, там yii2
Аноним 13/02/20 Чтв 04:33:48 #22 №1600007 
>>1599963
>что такое DOM
>бигоу нотейшон
Тут нет такого - придётся сидеть как новичок.
Аноним 13/02/20 Чтв 07:23:35 #23 №1600041 
Привет, помогите советом:

Пишу бота, как лучше организовать хранения справочника типов ответа?

Есть родительский класс Response,
есть подклассы ResponseImage, ResponseText
Есть таблица в бд response - история ответов.

Как оргранизовать справочник типов Response, чтобы в дальнейшем, знать как правильно обрабатывать историю ответов из бд.
1. Хранить в отдельной таблице response_type(id, class_name), и получать type_id в дочернем классе каждый раз запросом к этому справочнику (поиск по имени класса)? Это увеличит кол-во запросов к бд, на сколько это существенно?
2. Или прописать типы в родительском классе? Тогда каждый раз создавая новый класс-ResponseNew нужно будет изменять родительский класс.
3. Создать справочник в бд по всем типам, а в дочернем классе прописать только его type_id?
Два последних варианта - это вероятность возникновения коллизий в будущем при поддержке нескольких ботов.
Аноним 13/02/20 Чтв 07:29:54 #24 №1600042 
>>1599741
Это случайно получилось, вроде code cleanup в phpstorme
Аноним 13/02/20 Чтв 08:45:09 #25 №1600051 
>>1599895
забей, нахуй не надо. если есть потребность в тестах на питоне - изучай сам.
будет быстрее, эффективней, дешевле.
так что дрочи пых и пытайся щас уже галеру найти где будешь грести, ибо летом после выпуска будет огромная волна студентов, а осенью еще больше. в связи с этим будет как бы проблематично искать будет. алсо, летом все в отпусках и особо вакансий на рынок не выкидывают
Аноним 13/02/20 Чтв 09:13:43 #26 №1600062 
>>1600051
Курсы бесплатные если что, от мэйла. Спасибо за совет, анон.
Аноним 13/02/20 Чтв 10:17:50 #27 №1600087 
>>1599358
бампец
Аноним 13/02/20 Чтв 10:41:18 #28 №1600103 
>>1599791
Сразу прививаем хуевые практики
Аноним 13/02/20 Чтв 10:42:14 #29 №1600105 
>>1599795
Во многих ваках спрашивают за тесты с порога.
Если конечно не хочешь пойти в говноконтору, где нет тестов и всё тестируют вручную
Аноним 13/02/20 Чтв 14:24:42 #30 №1600316 
>>1599201 (OP)
ОП задача про палиндром, проверь пожалуйста!

https://ideone.com/2Z7dTu
Аноним 13/02/20 Чтв 14:24:58 #31 №1600318 
>>1600316
Если что это переделанная.
Аноним 13/02/20 Чтв 14:26:05 #32 №1600320 
>>1599201 (OP)
Дается массив с числами например
[01,0,1,02,2,5,04,4]
Как убрать из него восьмеричные числа типа 01,02,04.
Аноним 13/02/20 Чтв 14:28:37 #33 №1600322 
>>1599895
Ребят скажите плиз, как в php фриланс вкатится? Если я уже все основы веба знаю, только опыта нет. Можно где-то беслпатно поработать? Заказики повыполнять, постажироваться
Аноним 13/02/20 Чтв 16:01:10 #34 №1600426 
image.png
>>1600103
>учебный проект на 2 с половиной класса
>тесты
Аноним 13/02/20 Чтв 16:09:10 #35 №1600434 
Опчик проверь задачу про новый айпад.

https://ideone.com/9SjyMv
Аноним 13/02/20 Чтв 16:19:03 #36 №1600439 
>>1600426
>Очень трудно написать 2 с половиной теста
Аноним 13/02/20 Чтв 16:33:14 #37 №1600448 
>>1600322
Если ты правда знаешь как верстать, PHP и т.д То ты никогда не согласишься делать что-то забесплатно.
Аноним 13/02/20 Чтв 16:39:11 #38 №1600452 
>>1600448
Так у меня практики нету, я не знаю как монетизировать свои умения. Если я не получу денег но получу опыт, который потом смогу монетизировать, это уже хорошо.
Но да, конечно забесплатно делать это крайний вариант
Аноним 13/02/20 Чтв 16:44:50 #39 №1600455 
>>1600105
Сменил три работы - нигде тестов не писали. Что-то где-то про это говорилось на начале проекта, но потом всегда хуй забивали. Да, это плохо, но далеко не везде их пишут.
Аноним 13/02/20 Чтв 17:01:45 #40 №1600467 
>>1600455
Сейм на двух работах сидел и сижу без тестов и это хуево. Сам для себя пишу тесты в изолированных кусках кода
Аноним 13/02/20 Чтв 17:42:32 #41 №1600491 
>>1600439
А нах? Знаешь зачем тесты пишутся?
Аноним 13/02/20 Чтв 17:43:22 #42 №1600492 
Кто решил все бонусные задачки? Долго решали? Вот собираюсь ими заняться, хочу спросить есть ли ребята которым удалось?
Аноним 13/02/20 Чтв 17:44:31 #43 №1600493 
>>1600439
Иди нах, короч, со своими тестами на студентах, шиз.
Аноним 13/02/20 Чтв 18:43:05 #44 №1600546 
>>1600491
Проверить бизнес логику
Аноним 13/02/20 Чтв 18:43:32 #45 №1600548 
>>1600493
Чтоб тебе на продакшене ни одного теста не было, пидор
Аноним 13/02/20 Чтв 18:56:18 #46 №1600561 
https://career.habr.com/vacancies/1000049256

>Зарплата от 200 000 до 300 000 рублей в месяц. Зависит от количества допускаемых вами ошибок (объективно).
>ошибок

Че за нахер?
Аноним 13/02/20 Чтв 19:01:18 #47 №1600563 
Как на пхп сайт с http на htpps перевести?
Аноним 13/02/20 Чтв 19:04:18 #48 №1600567 
>>1600563
Это уже к веб серверу. Погугли https имя твоего веб сервера. https apache2 Там уже есть инструкции.
Аноним 13/02/20 Чтв 19:22:17 #49 №1600582 
>>1600561
Ну очевидно, что заносчивые люди будут при любом найденном проблемном или спорном моменте качать права и предлагать снизить зп
Аноним 13/02/20 Чтв 19:26:09 #50 №1600596 
>>1600561
Компания еще и полулегальная небось, так как продает акки
Аноним 14/02/20 Птн 00:49:47 #51 №1601092 
ОПчик, будь добр проверь задачку про регулярки, тема сложная:

https://ideone.com/kieK0K
Аноним 14/02/20 Птн 01:06:10 #52 №1601115 
>>1601092
>регулярки, тема сложная
да нет всего лишь паттерн матчинг, что искать и на что менять
Аноним 14/02/20 Птн 01:30:57 #53 №1601129 
Наверное это нубский вопрос, но все же. Вот допустим есть простой контроллер c тайпхинтом int на айди теста, который берет айди и показывает страничку с описанием и прочей инфой или 404, если тест не найден. Все работает, но вот, допустим, если юзер случайно наберет в адресной строке слишком большой айди, который больше допустимого int в php, то ларавель преобразовывает этот большой айди в строку и соответсвенно выскакивает исключение, что в контролер пришла строка, а не int. Как это пофиксить? Через middleware?
Аноним 14/02/20 Птн 02:00:27 #54 №1601135 
>>1601115
Первый раз с этим сталкиваюсь. В Си такого не было. Хотя с поддержкой сайтов про регулярки не так уж и сложно, но подумать всё равно надо.
Аноним 14/02/20 Птн 05:13:47 #55 №1601181 
Случайно удалил через DELETE записи в innodb. Как можно быстро сделать откат?
Аноним 14/02/20 Птн 06:35:57 #56 №1601193 
>>1601129
Я думаю через try catch и typeException, или какие там есть исключения, выдать 404 страницу
Аноним 14/02/20 Птн 10:42:37 #57 №1601267 
>>1601129
Заменить инт на строку?
Аноним 14/02/20 Птн 22:05:55 #58 №1602133 
>>1601267
Тогда уже ошибка при запросе в бд будет.
>>1601193
Я проще сделал. В документации нашел, что можно параметры запроса регулярками в роутере фильтровать и поставил от одной до десяти цифр.
Аноним 15/02/20 Суб 01:22:02 #59 №1602256 
Аноны, Оп, помогите. Хочу сделать опросник, но не могу придумать структуру бд. Т.е есть вопросы и ответы, но не простые. У вопросов и ответов должны быть последовательности, аля "выберите ваш пол: М, Ж". И к каждому ответу разные ветви опросов. И так можно сделать к каждому ответу. Это вообще реализуемо? Еще хочу попробовать сокеты, на пхп же можно их написать? (думаю сделать простенький чат чтобы потестить) Или же такие вещи реализуют на ноде?
Аноним 15/02/20 Суб 01:24:59 #60 №1602258 
>>1602256
напиши ветвления
Аноним 15/02/20 Суб 01:29:06 #61 №1602259 
>>1602256
дополню в бородатые времена была программа элиза она хоть и на лиспе но прочитав код поймешь принцип, работала как чатбот.
Аноним 15/02/20 Суб 06:10:08 #62 №1602336 
Подбуханный сеньер в пятницу разбирает требования к вакансиям по PHP и около того. Респонс не требуется, но может быть кому-то будет полезно. Смотреть на скорости 1.25, иначе скучно.

https://www.youtube.com/watch?v=ixfsmWVAD_0
Аноним 15/02/20 Суб 06:18:15 #63 №1602340 
>>1602336
Я просто своего друга учу и делаю ему видео. Если вас тут покажется полезным, могу улучшить звук и закидывать. А так, это не реклама, я просто напился и решил, чобы не поделиться.
Аноним 15/02/20 Суб 06:41:03 #64 №1602344 
>>1602340
извените за ашипки
я проста бухой слигка
Аноним 15/02/20 Суб 06:42:03 #65 №1602346 
>>1602344
инфа для нубов от этого не становится менее ценной
Аноним 15/02/20 Суб 06:44:56 #66 №1602348 
>>1599185 →
>Проще сделать папку, в ней хранить файлы с именами, соответствующим логинам или id пользователей, а не пытаться это засунуть в конфиг. Если пользователей всего несколько, можно и в конфиг, благо YAML позволяет многострочные тексты. От 150 строк ничего страшного не будет, и при желании можно это вынести в отдельный файл и инклудить его.
Да, пользователей всего несколько - 3-ое (Alice, Bob, Tester). Правило ли будет поместить в services.yaml в поле parameters следующие поля: alice_public_key, alice_private_key и т.д, и поместить в них многострочный текст? Как потом получить доступ к этим параметрам Symfony Console?
Аноним 15/02/20 Суб 10:02:55 #67 №1602372 
>>1602348
Ключи хранятся в отдельной папке. Папка исключена (так как ключи приватные) из систем контроля версий. Ключи берешь через file_get_contents или что-то подобное (к примеру криптобиблиотеки могут принимать файл ключа как параметер). Файлы или именуешь по айдишникам пользователей (как анон выше говорил) или добавляешь в таблицу юзеров поле с именем файла ключа.
Аноним 15/02/20 Суб 10:37:58 #68 №1602387 
Untitled1.png
>>1602256
Что-то типа такого. Три нижних таблицы это если тебе нужно сохранять ответы пользователей (причем каждый пользователь может пройти несколько тестов) для самого теста они не нужны.
Аноним 15/02/20 Суб 13:32:21 #69 №1602615 
>>1602336
Сорре, протрезвел, грохнул этот видос, стыдобра, лучше потом сделаю нормально и трезвым.
Аноним 15/02/20 Суб 14:11:18 #70 №1602686 
>>1602615
нормально
Аноним 15/02/20 Суб 16:04:33 #71 №1602882 
>>1599201 (OP)
Аноны, как лучше обрабатывать тяжёлые POST-запросы, многомегабайтные, с BigData в виде JSON'a?

Сходу вижу два варианта.
Первый - это читать JSON из TCP-потока, и сразу обрабатывать,
второй вариант - это писать его в файл,
пока соединение не оборвалось, а потом обрабатывать,
и если оборвётся то есть время и место - обработать запрос частично - пусть позже, но из кэша.

Что посоветуете?
Аноним 15/02/20 Суб 16:52:35 #72 №1602977 
Как в методах полиморфно определить имя класса?
Хочу родительский дженерик-метод, который использует имя класса, но self::class и __CLASS__ возвращают класс-родитель.
Аноним 15/02/20 Суб 17:41:08 #73 №1603039 
>>1602258
>>1602259
>>1602387
Спасибо, аноны. Попробую
Аноним 15/02/20 Суб 18:23:10 #74 №1603086 
>>1602977
ОК, я понял.
self => static
Аноним 15/02/20 Суб 18:25:30 #75 №1603088 
Когда нужно использовать прослойку для модели аля сервис, репозиторий? Если у меня не особо большой проект - есть ли в этом смысл?
Аноним 15/02/20 Суб 20:48:54 #76 №1603289 
>>1602882
php://input
Аноним 15/02/20 Суб 20:59:18 #77 №1603307 
>>1603088
Репозиторий это абстракция от хранилища. Это нужно чтобы код модели не зависел от конкретного способа сохранения данных.
Профиты будут, соответственно, если хранилище данных придется менять. Некоторые долбоебы думают что это типа переезда с mysql на postgres, но это относится и к переезду на новую версию базы или кешированию.
Так что я рекомендую репозитории использовать всегда. Если проект маленький, то и времени ты на них потратишь немного, а если большой, ну ты понел. Кашу маслом не испортишь.
Аноним 15/02/20 Суб 21:05:24 #78 №1603310 
>>1601129
Просто кастишь значение к числу (int)$veryBigInt и получаешь максимально возможный int https://3v4l.org/3F9GN
Аноним 15/02/20 Суб 22:46:21 #79 №1603376 
А можно делать запросы к сфинксу через постгрес клиент, а не mysql?
Аноним 16/02/20 Вск 07:08:06 #80 №1603536 
пыха конфа
https://t(точка)me/anonaprphp
Аноним 16/02/20 Вск 07:38:12 #81 №1603540 
32064275300x300.jpeg
В статье ОПа по исключениям есть такая заметка: "Исключения имеют и недостатки в сравнении с явным возвратом ошибок. Например, они могут быть выброшены при выполнении любой функции, и сложнее становится угадать, как будет выполняться код."
Не могу понять, что имеется в виду. Если исключение предусмотрено разработчиками в описании определенной функции, то оно сработает при любом вызове этой функции, если в ходе ее выполнения условия для выброса исключения будут удовлетворены. Другими словами, если выражение внутри скобок после if будет равно true (1) в if (expression) { throw new Exception("Yada yada yada"); }, то скрипт будет прерван.
Однако то же самое произойдет в случае с явным возвратом ошибок:
if (expression) { die("Yada yada yada"); }
Помогите понять мысль ОПа.
Аноним 16/02/20 Вск 11:47:25 #82 №1603634 
>>1603540

Явный возврат ошибок это возврат через return.

if (expression) {
return E_NOT_FOUND; // или return new Error('....');
}

Вариант с die() никаких достоинств не имеет и вообще не рассматривается.

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

function a() { b() ; }
function b() { c(); }
function c() { throw new Exception(".."); }

Глядя на код функции a(), неочевидно, что она может выкинуть исключение. В случае с явным возвратом ошибок в каждой функции стоял бы if + return и это было бы очевиднее.
Аноним 16/02/20 Вск 12:49:17 #83 №1603656 
>>1603086
Угу, позднее статическое связывание.
Аноним 16/02/20 Вск 17:00:32 #84 №1603967 
>>1603540
>>1603634
Тут все намного сложнее. Выбрасываемые исключения можно прописать в комменте, тот же phpstorm явно просит тебя это сделать.

А дело все в том что исключения используются как продвинутый goto. Сам goto в пхп ничего криминального из себя не представляет, и ничего действительно запутанного сделать не даст. Вот пример, где мы пытаемся из контекста функции перескочить в другое место https://3v4l.org/f2WLK. Как видишь это нихуя не работает.

А вот пример типичного использования исключений https://3v4l.org/X8QGJ. Как видишь, то чего не смог goto вполне себе могут исключения. Как я уже сказал - этот код ТИПИЧНЫЙ и ты будешь писать точно так же.

Причиной, как мне кажется, является отсутствие возможности нормально вернуть несколько значений, т.к. массивы не типизированы и туплов нет. А так же отсутствие промисов или монады maybe из коробки.
Аноним 16/02/20 Вск 17:29:55 #85 №1604012 
Продолжаю решение задачи про банкомат, про тот вариант, когда задача не решается жадным алгоритмом https://phpbooktest2.ga/l1/mou-ikkai.html , для решении этого , оп дал такой совет , за что большое спасибо !

>Готового решения, наверно, нету.
"Жадный" алгоритм достаточно прост. Мы сначала вычисляем число купюр большого достоинства, потом кол-во купюр чуть меньшего достоинства, и так до самых мелких. "Жадный" алгоритм работает хорошо, когда каждая купюра в N раз больше другой (где N - целое) и когда нет нехватки купюр.
Например: у нас есть 1x5000 и 3x2000, нам надо выдать 6000. "Жадный" алгоритм выдаст 1x5000 и застопорится. Он тут не применим, так как мы не можем заменить 5000-ю купюру несколькими 2000-ми.
Там, где неприменим "жадный" алгоритм, мы вынуждены перейти к полному перебору всех возможных комбинаций купюр. В общем виде алгоритм выглядит так. Обозначим S - сумма, которую надо выдать, k - количество номиналов купюр, N[1] ... N[k] - количество купюры каждого номинала, A[1] .. A[k] - запас купюр каждого номинала:
- берем все возможные комбинации N[1] .. N[k], где N может быть от 0 до A (то есть, учитываем имеющийся запас купюр и не пытаемся брать больше, чем есть)
- для каждой комбинации проверяем:
- если она в сумме дает S, то сумму можно выдать этой комбинацией
Например, если у нас есть 1x5000 и 3x2000, то мы должны перебрать такие комбинации:
- 0x5000 + 0x2000 (я буду писать эту комбинацию сокращенно как (0, 0))
- 0x5000 + 1x2000 (или (0, 1))
- (0, 2)
- (0, 3)
- (1, 0)
- (1, 1)
- (1, 2)
- (1, 3)
То есть, для каждого номинала мы перебираем значения от 0 до запаса этой купюры. Мы фиксируем значение 0x5000 и перебираем все возможные количества более младших купюр, затем фиксируем значение 1x5000 и перебираем более мелкие купюры снова.
Генерацию комбинаций можно реализовать с помощью рекурсии (функции, вызывающей саму себя). Сделаем функцию такого вида:
generateCombinations(array $A, array $N): array
Где $A - массив запасов купюр (A[1] .. A[k]), например, [1 => 1, 2 => 3] для 1x5000, 3x5000, $N - зафиксированные количества старших купюр. Функция вернет массив всех возможных комбинаций, которые начинаются с комбинации в $N.
Поскольку массив комбинаций может получиться огромным, можно вместо его возврата сделать функцию-генератор, которая выдает комбинации с помощью команды yield, не тратя память на хранение огромных массивов.
Количество таких возможных комбинаций легко посчитать: оно равно произведению запасов купюр, то есть (1 + A[1]) x (1 + A[2]) x ... x (1 + A[k]). Я добавил 1, чтобы учесть вариант, когда мы берем 0 купюр данного номинала.
Такие комбинации похожи на "размещения" из комбинаторики ( https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B5 ). Есть готовые "алгоритмы для генерации размещений". У нас не совсем размещение, но очень близкая к нему вещь, можно погуглить эти алгоритмы.
Дальше алгоритм можно оптимизировать. Например, не перебирать комбинации, которые заведомо превышают искомую сумму (вроде комбинации 2x5000, когда надо выдать 6000). Перебирать комбинации не от (0, 0) к (1, 3), а начиная с наиболее близких к искомой сумме.
В любом случае, тут нужна рекурсивная функция. Либо стек.
Для начала, можешь попробовать написать код, который просто выведет все возможные комбинации купюр на экран. А потом уже добавлять проверку, дает комбинация нужную сумму или нет

Я попробовал написать код, который просто выведет все возможные комбинации , рекурсивно не получилось , получилось со вложенными циклами , но если количество номиналов купюр будет от 3 и более , то вложенные циклы никуда не годятся, получается плохой код. Порывшись в гугле нашел , вот такой рекурсивный цикл https://ideone.com/TRasJW , его чуть чуть поменять , и он уже будет выдавать наши комбинации купюр, в самом этом коде я разобрался, но кажется мне , можно сделать рекурсивный цикл намного проще и понятнее, но самостоятельно написать у меня не получилось, поэтому ищу опять совета здесь


Аноним 16/02/20 Вск 18:04:49 #86 №1604059 
Basic Auth не зашквар использовать в 2020?
Разумеется всё на https будет крутиться.
Аноним 16/02/20 Вск 18:29:14 #87 №1604086 
>>1604012

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

Начнем с ситуации с одним кубиком. Тут все просто: функция должна вывести числа от 1 до 6.

Теперь, пусть кубиков два. Тогда функция должна вывести все комбинации, начинающиеся с 1 (1 1, 1 2 ... 1 6), потом, начиная с 2, и так до 6.

Если попробовать обобщить это, то можно придумать такую функцию: пусть она получает на вход массив с зафиксированными значениями на кубиках слева. В этом массиве может быть от 0 до N значений. И функция должна перебрать все оставшиеся значения кубиков справа и вывести комбинации.

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

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

Вот примерный вид функции:

function generateCombinations(int $n, array $values) { ... }

И вот, как она вызывается (для 3 кубиков):

generateCombinations(3, []);

Этот вызов должен сделать такие вызовы самой себя:

- generateCombinations(3, [1])
- этот вызов сделает такие вызовы:
- generateCombinations(3, [1, 1])
- generateCombinations(3, [1, 2])
- ...
- generateCombinations(3, [1, 6])

Далее будут вызываться:

- generateCombinations(3, [2])
- ...
- generateCombinations(3, [6])

Попробуй написать такую функцию, или напиши, если что-то непонятно.

Есть еще другой способ вывести все комбинации без рекурсии. Он проще, но будет менее удобен для решения задачи про банкомат. Делаем массив, состоящий из всех единиц ([1, 1, 1, 1]). Вывыодим его. Увеличиваем последнюю единицу на 1: [1, 1, 1, 2]. Выводим. Если где-то получается 7 - мы сбрасываем ее на 1 и увеличиваем цифру перед ней.

Этот способ тоже можно попробовать.
Аноним 16/02/20 Вск 18:30:58 #88 №1604093 
authors.jpg
Совсем пиздец или сойдёт?

Тестовое задание для стажировки.
Аноним 16/02/20 Вск 18:31:48 #89 №1604094 
>>1604086
Благодарю , буду разбираться !
Аноним 16/02/20 Вск 18:32:08 #90 №1604096 
>>1604093
>Совсем пиздец
Это даже мягко сказано.
Аноним 16/02/20 Вск 18:35:46 #91 №1604102 
>>1604096
А как сделоть?
Аноним 16/02/20 Вск 19:03:57 #92 №1604152 
>>1599201 (OP)
> - Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
Это вместе с
> SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery.
?
А если я знаю html, css, js, jquery и git - сколько пхп займёт? Просто в городе пхп требуют в каждой второй вакансии, думаю стоит выучить.
Аноним 16/02/20 Вск 19:27:22 #93 №1604180 
>>1604093
Если строк в массиве будет миллион че будешь делать?
Аноним 16/02/20 Вск 20:05:23 #94 №1604243 
>>1604180
Я уже переделал в foreach.
В первый раз не смог додуматься как оформить прост, поэтому сделал через echo.
Аноним 16/02/20 Вск 20:14:44 #95 №1604248 
>>1604152
Ну тебе осталось выучить SQL, PHP + его ООП, паттерны, хттп\s-протокол, ну и хотя бы один современный фреймворк.
Полгода минимум.
У тебя фактически только фронтенд и бэкенда вообще нет.
Аноним 16/02/20 Вск 20:24:01 #96 №1604256 
>>1604248
Звучит долго. Это время нужно для хорошего уровня или для начального устройства на работу? Просто я видел вакансии в стиле "вы немного знаете пхп и отличаете бэк от фронта? Го к нам на 20к стажёром". Старт меня и такой устроит.
Аноним 16/02/20 Вск 20:36:55 #97 №1604275 
>>1604256
>Звучит долго.
Это только до уровня вкатывальщика-джуна на нормальный современный стек. Потом ещё доучиваться надо на работе.
Времена когда в пыху вкатывались за 2 месяца давным-давно прошли. Сегодня так в js вкатываются.

>Просто я видел вакансии в стиле "вы немного знаете пхп и отличаете бэк от фронта? Го к нам на 20к стажёром".
Не видел таких. Это либо на вротпресс, либо кидалово.
В обоих случаях дно.
Аноним 16/02/20 Вск 21:17:02 #98 №1604315 
>>1604275
>Сегодня так в js вкатываются.
жс только кажется легко там такой ебаный зоопарк с колбеками шо пыха не самое худшее в жизни
Аноним 16/02/20 Вск 21:23:25 #99 №1604325 
>>1604315
Со всяким поработал, да и работаю. В целом в клиент вкатиться проще, может даже за 2 месяца, если не тупишь. Бекенд (не только на пхп, а любой, в жс тоже) гораздо более широкая тема. Работаю лет 10 уже и только интереснее и интереснее становится расти, а конца и края не видно. Сейчас даже сложно представить, какой объем инфы надо освоить в 2020, чтобы уверенно в бекенд залететь.
Аноним 16/02/20 Вск 21:28:11 #100 №1604332 
>>1604325
бекенд не устаревает как фронт за полгода и хайпуется так
Аноним 16/02/20 Вск 21:28:28 #101 №1604333 
>>1604332
>не хайпуется
Аноним 16/02/20 Вск 23:30:53 #102 №1604613 
>>1604315
>жс только кажется легко
Он и есть - легко. То же самое, что и Луа, который вообще для мимокроков в индустрии сделан. Собственно поэтому в js такой ажиотаж и много молодых макак.

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

>>1604325
>только интереснее и интереснее становится
Есть такое дело. Чем больше изучаю - тем дальше горизонт.
Аноним 17/02/20 Пнд 00:14:06 #103 №1604677 
>>1604613
>жс
>хоть и говно но общего назначения
>Луа
>встраиваемый
температуры нет? спал хорошо? прими таблеточку
Аноним 17/02/20 Пнд 00:31:01 #104 №1604691 
>>1604677
>общего назначения
>встраиваемый
Вообще не в ту степь полез.
Оба языка позволяют шлёпать код не заморачиваясь с нормальным ООП. Юным вайтишникам он не понятен и сложен.
Аноним 17/02/20 Пнд 01:26:24 #105 №1604740 
>>1604691
>нормальным ООП
ооп как явление костыль фабрики фабрик
>Оба языка позволяют шлёпать код не заморачиваясь
и давно у нас чистые луа вакансии появились?
стек жопаскрипта за последние годы растолстел что скоро больше жабы со спрингом станет, а учитывая вагоны джунов которые повелись на легкость вкота, требования там растут как на дрожжах, это не учитывая подводные айсберги самого языка со слабой типизацией.
Аноним 17/02/20 Пнд 02:09:54 #106 №1604767 
>>1604059
Бампирую вопрос.
Есть смысл базовую аутентификацию на админку ставить на https? Мне по-простому чтоб.
Аноним 17/02/20 Пнд 02:21:51 #107 №1604769 
Может знает кто, какие в ДС есть стажировки по php/битрикс кроме qsoft?
Аноним 17/02/20 Пнд 08:12:44 #108 №1604870 
>>1604243
Сообщи если тебя возьмут на работу, потому-что если это случится, то я перестану переживать на счёт себя.
Аноним 17/02/20 Пнд 08:45:09 #109 №1604882 
>>1604767
Без https пароли передаются простым текстом. Любой кто снифает твой трафик может его прочиать.
Аноним 17/02/20 Пнд 10:18:28 #110 №1604939 
>>1603307

Все равно не могу понять зачем нужно это храниоище. В той же Ларе есть орм и свои коллекции. Зачем мне еще 1 слой делать, если и так уде все сделано
Аноним 17/02/20 Пнд 11:25:59 #111 №1604978 
>>1604939
Ну ведь тебе свои запросы через орм нужно где-то записать.
А потом изменить,
а потом добавить кеширование,
а потом добавить сброс кеша,
а потом добавить добавление в кеш сразу с добавлением в базу
Если у тебя есть репозиторий, то в десяти местах, где ты получаешь свою сущность будет написано просто $item = $items->getById($id), а вся техническая часть будет скрыта под капотом. Я уже не говорю про то, что если его не делать, то у тебя будет жесткая зависимость от ларавелевской орм.
Аноним 17/02/20 Пнд 11:48:13 #112 №1605001 
Изучаю пхп что-то прям очень похоже на js по основам и видимо не только на него - возник один вопрос - а зачем перед переменными знак даллара? Ну то есть да, нужно так - но нельзя было проще сам язык сделать, чтобы не понижать скорость написания кода? Let/const/var - это ведь гораздо удобнее, если вслепую печатаешь. Доллар слишком далеко от дефолтного положения рук.
Аноним 17/02/20 Пнд 12:18:01 #113 №1605027 
аноны, есть тут кто работал с опенкартом?
у нюфага есть пару вопросов к вам сразу говорю-гугл не помог
Аноним 17/02/20 Пнд 12:22:08 #114 №1605028 
>>1600320
$result = array_filter($a, function($number) {
return decoct(octdec($number)) == $number;
});
Аноним 17/02/20 Пнд 12:30:05 #115 №1605033 
>>1605001
Потому что на пыхе можно заработать денех
Аноним 17/02/20 Пнд 12:33:29 #116 №1605035 
>>1603088
Да делай все на чистом сикуле, зачем все эти ормы и абтстракции?
Аноним 17/02/20 Пнд 13:03:55 #117 №1605055 
>>1605033
Двачую, надо вместо $ ввести b24 и тогда ваще огонь будет
Аноним 17/02/20 Пнд 13:22:20 #118 №1605067 
>>1604093
Я смотрю, вы из индии
Аноним 17/02/20 Пнд 13:23:02 #119 №1605069 
>>1604769
>битрикс
Надеюсь, ты понимаешь во что ввязываешься
Аноним 17/02/20 Пнд 13:24:48 #120 №1605070 
>>1605001
Переменные платные.
1 переменная - доллар
Массив - размер массива долларов
Объект - сумма полей и массивов в долларах
Аноним 17/02/20 Пнд 13:31:18 #121 №1605075 
>>1605069
Я тоже начал рассматривать битрикс, как что-то, что даст старт. Какие подводные? Я конечно пока что на другие вакансии откликаться буду, но что-то везде опыт нужен но я не теряя надежды буду откликаться на вакансии с опытом от года, если в самом описании осознанно не написано о том, что опыт обязателен, а с битриксом не обязательно.
Аноним 17/02/20 Пнд 13:32:23 #122 №1605077 
>>1605070
То есть я уже где-то 30 долларов торчу, за использование языка? У меня нет столько денег.
Аноним 17/02/20 Пнд 13:54:05 #123 №1605099 
>>1605055
дристанул на всю борду. спасибо анон, ты сделал мой день

>>1605075
ну вакансий море. поищи хоть что нибудь получше. тот же опенкарт или вордпресс если есть, идеальным вариантом будет october cms
Аноним 17/02/20 Пнд 13:59:03 #124 №1605103 
>>1604978
Почитал статьи. Репозиторий - слой для получения данных с бд, а сервис - слой для занесения данных в бд. Я правильно понял?
Аноним 17/02/20 Пнд 14:07:00 #125 №1605109 
>>1605075
Подводные в том, работа с битриксом - не разработка, максимум - веб мастер. Путь к работе на основе фреймворков или кастомных решений закрыт.
Это не говоря про низкую зп и скотские условия работы
Аноним 17/02/20 Пнд 14:40:17 #126 №1605150 
>>1605099
> вордпресс
А он лучше? Я думал, что это дно дна, почему-то. Вакансий нет, в любом случае - на удалёнку поди без опыта не возьмут. Мой удел - битрикс газонюх.
>>1605109
> битриксом - не разработка
Пишут "разработка сайтов на платформе 1с-битрикс и доработка crm битрикс24". Врут? Ну и если это не разработка - получается мне это не поможет в дальнейшем устроиться в разработку и лучше дальше искать?
Аноним 17/02/20 Пнд 14:55:00 #127 №1605163 
>>1605150
Лучше сразу искать Symfony/Laravel/Yii(крайний случай).
В битриксе уровень кода лаба1.php, только этого кода десятки тысяч строк
Аноним 17/02/20 Пнд 15:07:36 #128 №1605171 
>>1605163
Так я только начал изучать пхп и как бы он ни был похож на js, надо вникать во всякие тонкости, mysql изучить, до выбора php фреймворка я пока не дошёл. Есть вакансии с пхп, но для них мне ещё пару месяцев бы дома посидеть, а я не хочу.
А тут попадается вакансия, где вроде как я научусь по крайней мере мне так кажется всему, что нужно для поиска нормальной работы, так ещё и платят какие-никакие никакие деньги - 3к стипендия за обучение, если пройду если нет, то наверное можно сразу выпиливаться, потом за 10к 3 месяца, потом я уже старший газонюх за 18к и может быть, когда-нибудь я дорасту до 30к и к этому моменту свалю от них. Хотя вроде там кому-то до 80к платят.
Суть в том, что на эту вакансию я с чистой совестью подхожу.
Аноним 17/02/20 Пнд 16:15:22 #129 №1605289 
>>1605171
Ты спокойно найдешь местную конторку, где тебя возьмут стажером на yii, научат пилить круд (львиная доля работы пхп макаки), а там уже рост пойдет, через пару лет на удаленку выйдешь и будешь спокойно пописывать
Аноним 17/02/20 Пнд 16:47:34 #130 №1605346 
>>1605171
пиздец это че за рабские условия труда такие
ни за что к ним не иди, анон.
или проси чтобы платили как норм стажеру 20-35к на первые три месяца
Аноним 17/02/20 Пнд 17:02:17 #131 №1605372 
>>1605001
>что-то прям очень похоже на js
Да вообще не похоже. Это ты, скорее всего, пишешь на пхп как на js он позволяет так делать до первого серьёзного проекта.
Аноним 17/02/20 Пнд 17:02:58 #132 №1605374 
sup, программач. аноны, как делать ебучую интеграцию с api сдека ?нихуя непонятно
Аноним 17/02/20 Пнд 17:06:33 #133 №1605379 
>>1605346
Меня посадили в первый месяц фуллстек проект делать. lara/vue spa. Все делаю сам, общаюсь с заказчиком и серв настраиваю тоже. за 20. Благо проект не тяжелый и заказчик не ебет.
Аноним 17/02/20 Пнд 17:08:05 #134 №1605385 
>>1605379
Кмк, если кушать есть что - за копейки первое время работаь не должно быть проблемой. Хотя 3м за 10к как то мало. 15 хоть
Аноним 17/02/20 Пнд 18:10:35 #135 №1605465 
>>1605385
> Хотя 3м за 10к как то мало. 15 хоть
Ну там не факт, что 10 будет. Там от 10, потом от 18, потом от 35. Думаю 15 можно получать на старте.
>>1605289
> Ты спокойно найдешь местную конторку, где тебя возьмут стажером на yii
Так что-то не вижу таких вакансий на основных сайтах с раьотой. Вообще мало стажировок, но куча вакансий с требованием года опыта - на них конечно можно и без опыта попасть, но обычно много всего знать надо, больше чем я знаю в данный момент.
Аноним 17/02/20 Пнд 18:19:12 #136 №1605475 
>>1605465
Ясно, понятно.
Можешь забить хуй на 90% требований в вакансиях.
Кадровый голод такой, что многие фирмы, где пишут 1-3 года опыта могут взять стажера на вырост.
Помимо вак стучи в сами фирмы, пиши на почту, звони, расслылай резюме везде, куда сможешь.
Аноним 17/02/20 Пнд 18:26:31 #137 №1605483 
>>1605465
Опыт разный бывает. Можешь считать что у тебя он есть, просто это не "опыт коммерческой разработки"
Аноним 17/02/20 Пнд 18:44:53 #138 №1605507 
>>1605475
> Помимо вак стучи в сами фирмы, пиши на почту, звони, расслылай резюме везде, куда сможешь.
Надо бы. Просто я хекка-социофоб, таблетки уже давно не принимаю они уже не нужны, но с ними всё было легче и начать что-то социально активное сложно. Причём на собесе могу легко и непринуждённо общаться, а позвонить/написать - невольно откладываю это. Сегодня создал резюме на втором по популярности работном сайте в городе - там есть потенциально подходящие вакансии, буду им писать.
> Кадровый голод такой, что многие фирмы, где пишут 1-3 года опыта могут взять стажера на вырост.
Вот им бы стоило вакансии стажёров создавать. А то слабо ощущается этот голод - в конторе, где я недавно был на собеседовании, сказали что один из 15 человек дальше первого, ознакомительного собеса проходит, а чтобы туда попасть, надо уже некоторые задания решить, которые показывают, что кандидат не случайно откликнулся. То есть навыки то могут быть нужные, но стиль работы не тот и они не дойдут до технического собеса а их 2-3 минимум и тз не получат.
>>1605483
Да, я его указываю, со ссылками и кратким описанием. Но не думаю, что кто-то читает.
Аноним 17/02/20 Пнд 20:50:18 #139 №1605661 
>>1605507
>То есть навыки то могут быть нужные
С чего ты это решил? Качество решения любых задач, в том числе стажерских, можешь по этому треду заценить. Разброс очень большой. Очень даже может быть здравым решением пропускать только 1 из 15 решивших, если только он справился хотя бы на четверочку.
Аноним 17/02/20 Пнд 20:59:35 #140 №1605671 
>>1605661
Не, сначала дают задания после отклика, их 10-15 и они проверяют знание стека, используемого конторой, умение решать задачи несколькими способами и оптимально, понимание прочих важных для них штук. Вот из 15 тех, кто выполнил все эти задачи, 14 бракуют до технических собеседований и полноценного тз. У них специфический рабочий процесс и если они считают, что кандидат не подходит, он может хоть сколько лет опыта иметь.
Аноним 17/02/20 Пнд 21:48:53 #141 №1605787 
Анчоусы, можете меня поздравить. Устроился пхп-макакой в контору. Зарплата средняя по городу. Но есть проблема. Я толком нихуя не знаю. То есть на базовом уровне могу написать анонимный форум типа базовой версии вакабы. Но постоянное ощущение, что меня слишком рано взяли на работу. Что почитать для правильной организации самой структуры кода? На работе проект, которому 12 лет, ООП там и не пахнет, но вот все равно ощущение, что я тупой
Аноним 17/02/20 Пнд 22:04:32 #142 №1605812 
У меня есть два вопроса.
На один из них га сайте пхп.нет ответе не написано.
1.
printf ();
как использовать к многобайтовым русским символам?
если (никак) ? "Какие аналоги есть?" : "Анон, молю, подскажи";


2.
Как можно из пхп открыть другой файл?

К примеру, в хтмл можно параметр action="file.php" написать и это сработает.
А чот в пхп я пробовал fopen("page.html") и никак.
Аноним 17/02/20 Пнд 22:07:27 #143 №1605822 
>>1599358

Проверь отладчиком в браузере (F12 на вкладке Script или Debugger), что там формируется и передается в переменной obj

>>1599535

У тебя SQL-инъекция в коде. Используй плейсхолдеры.

>>1599739

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

>>1599963

Можешь попробовать для начала прочесть туториал в мануале: https://www.php.net/manual/ru/index.php

Но дальше тебе надо еще изучить ООП и фреймворки, язык SQL.

>>1600041

Если у тебя есть классы, которые наследуются и ты хочешь их хранить в БД, то есть три паттерна: Class Table Inheritance, Concrete Table Inheritance и Single Table Inheritance.

Они описаны, например, тут http://design-pattern.ru/index.html

Самый простой, наверно, это STI.
Аноним 17/02/20 Пнд 22:08:35 #144 №1605825 
>>1600316

1) Если ты понял, что перед тобой не палиндром, то можно выходить из цикла по break
2) Ставь фигурные скобки после if/else, чтобы не было разночтений, где там начинается и заканчивается блок

>>1600320

Восьмеричные числа никак не отличить от обычных, так как в процессе создания массива они все становятся просто числами, без системы счисления. Если у тебя строки ['06', '7'] - то отличить можно, а если просто числа, то никак. Массив содержит просто числа, без указания системы счисления.

>>1600434

> for ($sumOfCredit += ($sumOfCredit * $percentage); $sumOfCredit > 0

тут слишком много действий, и тяжело читать заголовок цикла. Стоит вынести эти действия из скобок в for() и сделать обычными действиями.

"} else {" пишется в одну строчку.

А так, решено хорошо.
Аноним 17/02/20 Пнд 22:09:10 #145 №1605828 
>>1605787
Рад за тебя, анон.
Ощущение, что ты тупой, обязательно пройдет.

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

Не боись ошибаться, учись на этом.
Аноним 17/02/20 Пнд 22:12:15 #146 №1605831 
>>1605812

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

2) include/require. Они выполняют код из другого файла, как будто ты вызвал функцию.

В HTML с помощью action=... ты не "подключаешь" файл, а указываешь, на какой URL браузер должен отправить запрос с данными формы (и откуда он должен брать новую страницу для показа), когда пользователь нажмет кнопку отправки.

fopen "открывает" (подготавливает) файл для чтения или записи в него с помощью fwrite/fread. Он не будет выполнять код из файла.
Аноним 17/02/20 Пнд 22:17:24 #147 №1605847 
Спасибо.
Значит, выравнивать текст придется не через printf, а через div'ы на странице.

> include/require
Сработает, если я вызываю не пхп, а чистый хтмл?

Алсо. На счет include/require.
Можно ли их использовать на каждой странице для подтверждения авторизации?

Типа, в одном файле авторизовался, перешел на вторую страницу, которая доступна только есть твой $pass == 'password'из БД.
Аноним 17/02/20 Пнд 22:26:34 #148 №1605860 
>>1605828
Но я работаю на работе и мне платят за это деньги. Постоянное ощущение, что мне скажут: ты слишком долго и хуево делаешь х, ты нам не подходишь
Аноним 17/02/20 Пнд 22:26:43 #149 №1605861 
>>1605847
Не изобретай велосипед, авторизация делается либо сессиями в случае твоего встроенного в шаблоны говнокода, либо всякими токенами в случае стейтлесс апи
Аноним 17/02/20 Пнд 22:28:27 #150 №1605863 
>>1605847
Инклюд подключает кампелированный код, require - в процессе исполнения.
Я вообще все шаблоны подключаю через инклюд
Аноним 17/02/20 Пнд 22:29:44 #151 №1605865 
>>1605847
Вообще да, Антон прав. Используй сессии. Можешь ещё в куке хранить хэш пароля
Аноним 17/02/20 Пнд 23:01:38 #152 №1605891 
Аноны помогите со студентами.

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

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

3. Грамотно ли в контроллере при успешной регистрация ставить сессии и куки через глобальную переменную? Читал, что лучше вообще не пользоваться глобальными переменными. Но как тогда сделать?

4. Создавать отдельно хейдер и футер, и затем его подключать в контроллере через инклюд нормальный подход?

В общем я чувствую пробелы в понимании работы MVC, но не знаю, где восполнить эти пробелы.
Аноним 17/02/20 Пнд 23:03:52 #153 №1605897 
>>1599535
Че названия столбцов такие шизоидные?
Аноним 17/02/20 Пнд 23:06:18 #154 №1605899 
IMG20200129125146208.jpg
>>1600426
>использовать print_r вместо написания теста
Аноним 17/02/20 Пнд 23:10:12 #155 №1605901 
>>1605831
Разве в пыхе уже не давно ютф8 нативный везде?
Аноним 17/02/20 Пнд 23:11:48 #156 №1605902 
>>1605001
Не пытайся искать логику в этой хуйне, ее нет, пых писал какой-то упоротый жирдяй для своей домашней странички, вангую с тех времен доллары и пошли, а были они там, потому что васянскому интерпритатору было так легче переменные находить
Аноним 17/02/20 Пнд 23:21:55 #157 №1605912 
>>1605902
а почему жид компиляцию еще не прикрутили
Аноним 18/02/20 Втр 01:56:28 #158 №1606027 
>>1605912
На хабре читал что от нее прирост в производительности только в теории есть. А на практике чуть ли не в минус идет. Но говорят в 8 версии запилят
Аноним 18/02/20 Втр 02:40:44 #159 №1606034 
>>1606027
>только в теории есть
ага у пыхи же уже производительность как у жабы нечего выжимать(сарказм).
многопоток это отдельное бдсм в текущем виде
Аноним 18/02/20 Втр 03:14:51 #160 №1606038 
>>1605787
«Чистый код» почитай, хотя бы половину, больше не надо.
Аноним 18/02/20 Втр 05:29:55 #161 №1606069 
https://ideone.com/MJT2d9

Еще не решил первую задачу в повторениях, объясните я даун или так можно решить? Меня пока что смущает цикл который я сделал, implode не работает почему-то, не могу этого понять. Плюс нет функций для того чтоб сделать первую букву в предложений заглавной, нашел вариант на сайте пыхи.
Сейчас осталось добавить пробелы и вроде решил.
Аноним 18/02/20 Втр 05:33:11 #162 №1606072 
>>1605899
Вот жеж долбоёбы на ларавеле даже dd ввели для принта.
Таблетки прими, шиз. Тесты не везде нужны.
Аноним 18/02/20 Втр 05:38:49 #163 №1606074 
>>1605897
Таблетки забыл принять.
Аноним 18/02/20 Втр 08:16:37 #164 №1606097 
154118960709293.jpg
Че ребят как у кого успехи? Олды есть которые заглядывают сюда? Интересно истории какие-нибудь послушать.

Сам ~5 лет назад начинал проходить эти ваши задачи про вектор и прочее, потом работа начала появляться на которой не особо нужен был компьютер саенс, паттерны и алгоритмы (небольшие проекты на codeigniter). В общем не особо что-то прям развивающее, а чисто ебашилово молотком и долотоом так сказать.
Последние полтора года ебашу аутсорсером на легаси проекте, чувствую что опять болото. Да и платят наверное ниже рынка по большому счету. Периодически заглядываю в тред, но отвечать по большому счету некому, либо слишком простые вопросы, либо не моя компетенция или стену текста адовую нужно писать - просто тупо лень.
Аноним 18/02/20 Втр 09:24:14 #165 №1606150 
>>1605374
ну же,анон,помоги. третий день мозг ебу
Аноним 18/02/20 Втр 09:25:49 #166 №1606151 
>>1605860
сейм щит. гребу уже второй месяц в таком темпе
Аноним 18/02/20 Втр 09:30:53 #167 №1606155 
>>1606097
>Олды есть которые заглядывают сюда?
видимо нет. здесь 90% вопросов моих почему то в игнор улетают ))). судя по всему все олды разбежались по другим тредам и языкам
>Периодически заглядываю в тред, но отвечать по большому счету некому, либо слишком простые вопросы, либо не моя компетенция или стену текста адовую нужно писать - просто тупо лень.
Такая же проблема
Аноним 18/02/20 Втр 10:41:05 #168 №1606187 
>>1606097
Пару месяцев гребу, ничего тяжелого пока. Хочется паттерны там учить и т.д. Хз че делать
Аноним 18/02/20 Втр 11:02:15 #169 №1606206 
>>1606097
> Че ребят как у кого успехи?
Ищу работу, пока не очень успешно. Сегодня написала контора, мол приходи, оценишь свой уровень - я не откликался на их вакансии, но поглядывал. Но говорят, что это не очень хорошая контора и там надо будет ебашить как черт. Вакансии у них вечно висят текучка?, так что сначала другие проверю, потом к ним схожу. У них там верстальщик требуется - думаю на него то точно подойду.
> потом работа начала появляться
Через какое время?
Аноним 18/02/20 Втр 11:10:09 #170 №1606213 
>>1606097
Типичная PHP-разработка. Хорошие конторы, наверное, где-то есть (должны же быть), но я не встречал ни разу.
Аноним 18/02/20 Втр 11:39:28 #171 №1606234 
Сап, двач. Делаю докер-кампот файл для nginx+php.

php:
image: php:7.2-fpm
ports:
- 9000:9000
volumes:
- ./app:/app

Так вот, хлопцы, а если я хочу имидж не php:7.2-fpm, а со своего докерфайла Docker-php, который базируется на
php:7.2-fpm

Мне надо скачать mcrypt.

Как мне это сделать?
Аноним 18/02/20 Втр 12:12:01 #172 №1606252 
Парни, запилил таблицу для друга-вкатывальщика, где примерно расписал, что надо знать условному джуну, мидлу и сеньеру, чтобы он понимал масштаб проблемы. Технологии взяты не из головы, до этого я потратил время и прошерстил вакансии более или менее, выписав то, что требуют в основной массе.

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

Сразу говорю: понятно, что есть вакансии, где на джуна спрашивают как написать модуль для PHP на Си, как настроить кеширование в nginx по памяти или как бы ты оптимизировал sql-запросы, это понятно. Всё, что я сделал - это достаточно приблизительно, исходя из того, что я бы сам ждал от того или иного уровня.

https://docs.google.com/spreadsheets/d/1FvHiZp9xZRXMvPM4XKUuyrdR9v5vBEVccFx-mEWhnds/edit#gid=0
Аноним 18/02/20 Втр 12:12:23 #173 №1606253 
>>1606206
>Через какое время?
Я уже не помню, я мб учил дома и месяцами весь этот начальный учебник опа, но по факту играл в игры, а занимался чем-то полезным по 4 часа в неделю.

Хз, сначала пришел в контору в которой была адовая текучка, куча макак делает какие-то там мобильные игры, все это сдабривалось скрытой рекламой для заработка (потом еще вроде как адовый скандал был в отрасли), а пхп отдел из 5 челов должен был лепить под все это дело мелкосайты и дендосы вроде как, ну и внутреконторные админки и всякие отчеты со статистикой. Когда спросили че умеешь - я ответил честно что вообще нихуя и меня взяли. Самым топовым программистом на пхп, помимо тимлида, там без шуток был школьник с 1.5 годом опыта. С одной стороны рили криндж, с другой я мог сидеть и без особых проблем разбираться в любой хуйне. Все понимали что с меня ничего не взять. Правда выдержал я там 2-3 недели всего, потому что ездить было далековато и на общественном транспорте. Кароче ебанули морозы, и я послал стояние на остановке в лесу -35 нахуй.

Потом была работа куда уже пришел через несколько месяцев, и там чел в соло делал какие-то проекты и ему нужна была помощь. В целом собеседовал он меня по php, html и css, нарешал я что-то только на php, сам потом перезвонил ему узнать о его решении (именно по этому он меня и взял в итоге, лол). Там уже началось рубилово на codeigniter.

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

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

>Сегодня написала контора, мол приходи, оценишь свой уровень
Просто иди и попробуй без сомнений особых. Опять же пока ты не можешь самостоятельно решать бизнес-задачи, то ты сам должен проситься работать за еду. Если тебе скажут что можешь посидеть тут недельку поделать тестовое за бесплатно и позаебывать всех вопросами - соглашайся.
Аноним 18/02/20 Втр 12:18:13 #174 №1606257 
>>1606252
Я как раз думал о чём-то похожем. Но я бы сделал не таблицу, а блок-схему.
Аноним 18/02/20 Втр 12:18:58 #175 №1606258 
>>1606257
Да похуй как это выглядит, главное - суть. Таблица или схема - это дело 15 минут. А изучение - это дело лет.
Аноним 18/02/20 Втр 12:20:30 #176 №1606259 
>>1606252
Глянул одним глазом на таблицу - хуета какая-то.

У тебя в голове каша. Условный Вордпресс и Ларавел, а так же разные субд - это не звенья одной цепи по которой ты идешь. Это как разные профы в линейке, лол. Можно быть суперспециалистом, который никогда не окунался в modx-парашу, и работать за 300кк в секунду в серьезных проектах, а можно быть "мастер на все руки в каждой cms" и работать за дошик в веб-студии "лидере отрасли", где тебя по факту просто перепродают решать проблемы челиков которые не понимают нихуя в разработке.

Лучше бы ты дал ему учебник опа и помогал решать задачу за задачей, повышая уровень сложности, если ты сам конечно чет понимаешь (судя по таблице такой же нубас с кашей в голове, который только через вакансии может примерно представить что там в реальности как устроено)
Аноним 18/02/20 Втр 12:24:30 #177 №1606262 
>>1606259
Спасибо за мнение, но у меня все окей с головой. Если ты изучаешь с нуля, то: ты пишешь сначала PHP-код, потом подрубаешь веб-сервер и делаешь сайт на чистом PHP, потом ты берешь CMS, т.к. она ничего кроме этого не требует, а потом ты берешь фреймворк и оказывается, что там нужны паттерны, ORM, GIT и прочее блядство. Это по возрастающей.

Ты можешь, конечно, сразу взять фреймворк. И в душе не ебать, как веб-сервер переваривает твой URL, и сразу начать хуярить роутинг. Это полезно, как ты думаешь? Ну, чтобы специалист, насколько про PHP это можно сказать вообще, был всесторонне развит?

Кроме того, я не уверен, что есть вакансии а-ля WordPress Senior.

В общем, я не спорить сюда пришел. И не принес свою таблицу а-ля "смотрите, это лучшее, что есть в мире!". Я попросил помощи дополнить ее, не более того.
Аноним 18/02/20 Втр 12:28:55 #178 №1606268 
>>1606252
микросервисная архитектура и многопоток в пыхе? чего блядь?
Аноним 18/02/20 Втр 12:29:56 #179 №1606271 
>>1606258
Блок-схема удобней, позволяя как создавать связи, так и выделяя области: например выделяя из "разработки сайта" области "фронтэнд", "бэкэнд", которые в свою очередь можно разбить на ещё меньшие части, например "Server Page" и "база данных, в которых будут как параллельные,так и альтернативные пути.
Аноним 18/02/20 Втр 12:30:42 #180 №1606272 
>>1606268
Я сам охуел, но я это видел в вакансиях на сеньера. С микросервисами еще понятно, но многопоток - это пушка. У самого большой стаж работы, но я собираюсь на днях пойти и почитать, что это за зверь. Видимо, имеется ввиду, когда тебе надо написать демона на PHP. Что на мой взгляд, уже пиздец.
Аноним 18/02/20 Втр 12:31:16 #181 №1606274 
>>1606271
Да, согласен с тобой. Если сделаешь, будет годно. Мне лично лень. Мне надо просто примерно обозначить дорогу для нового джуна и всё.
Аноним 18/02/20 Втр 12:36:10 #182 №1606278 
>>1606097
Не то что бы олд, но опыт есть.
Сижу на поддержке продукта болото с пыхой и жиквери, разработка идет со скоростью улитки.
Между тасками почитываю Чистый код и Чистую архитектуру, пилю пет на современном стеке, прохожу собесы.
Аноним 18/02/20 Втр 12:37:17 #183 №1606280 
>>1606150
Чем тебе помочь?
Открываешь доку сдека и ебашишь.
По всем вопросам пишешь им в техподдержку, подробно описывая проблему.
Аноним 18/02/20 Втр 12:37:36 #184 №1606281 
>>1606272
особенность пыхи, хуевая, что каждый скрипт выполняется в отдельном потоке, в той же жабе и тд в памяти поднимаются объекты, висят в ней, треды там чето делают, в пыхе не так, что то распараллелить это костылизм
если языки которые специально сделанные для многопотока или изоморфных приложений которые можно писать не садясь на раскаленный лом, но пыха это хуяк хуяк и в продакшен.
Аноним 18/02/20 Втр 12:40:40 #185 №1606283 
>>1606281
Я даже спорить не берусь, я про многопоток в пыхе слышу первый раз в вакансии. Я про это что-то когда-то читал, но это было давно и там прямо писали - НЕ используете пыху для этого и НЕ используйте пыху для написания демонов, ибо она течет и вылетает без повода.

С джавой знаком, есть пара проектов на спринге, там вопросов нет, все эти атомики, валотайлы и синки, окей. Но, если хотя бы в одной вакансии встретилось требование многопотока в пыхе, надо это посмотреть, как минимум. В конце-концов, в пыхе, похоже, через пару лет будет строгая типизация (с кривой обратной совместимостью), так что почему бы и нет. Мы же тут не ленивые, да?.. :) Почитать никто не мешает, а на собесе можно и блеснуть знаниями, особенно на джуна.
Аноним 18/02/20 Втр 12:42:39 #186 №1606284 
>>1606262
Пс, не хотел показаться уебком. Просто по факту за каждым вторым пунктом этой таблицы стоит огромное количество человеко часов, которые нужно потратить на изучение, и которые выльются ни во что. С таким планом я бы бросил изучение уже на третий день. Нужно принципы учить и подходы, а инструменты конкретные уже следом под конкретные задачи. Я понимаю хочется как-то систематизировать, что бы облегчить себе понимание опять же происходящего. Но пытаться охватить все - огромная ошибка.

Опять же призноки каши в голове: каким образом Codeigniter - это синьер скилл, если это во первых достаточно простой фреймворк, а во вторых устаревший на 5-10 лет инструмент? На нем сейчас вакансии будут либо только на поддержку, либо клепать по отработанной схеме инет-магазины какие-нибудь конвеерно.
Как у тебя установка пхп на линукс - это мидл-скилл, если это делается еще до начала работы? Ты либо ставишь себе линукс сразу и начинаешь на нем ковыряться и ставишь в первый же день LAMP стек по гайду и уже дальше начинаешь в этом разбираться и пердолиться до бесконечности, либо совсем не паришься и накатываешь себе на винду OpenServer и можешь хоть чередовать обучение/разработку со своей любимой докой-2.

Ты либо ныряешь в вордплесс/modx/joomla если это от тебя требуют по работе и остаешься там до того момента пока не одумаешься (навсегда, лол), либо сразу скипаешь это и учишь более интересные и продуманные вещи.

Битрикс - вообще либо ныряешь навсегда, либо не трогай - она_тебя_сожрет.webm
Ты либо работаешь полноценно на каком-нибудь фреймворке каждый день, и даже при этом и за год не запомнишь все его возможности, и будешь энивей постоянно гуглить документацию, либо не работаешь. Или в чем смысл этого всего вообще? Посмотреть часовой видосик по каждому пункту на ютубе?
Аноним 18/02/20 Втр 12:45:55 #187 №1606289 
>>1606262
>потом ты берешь CMS
Этот этап спокойно пропускаешь, т.к. там нечему учиться в плане разработки.

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

Есть гораздо более адекватный роадмап по бекенду на английском, легко гуглится
Аноним 18/02/20 Втр 12:48:02 #188 №1606291 
>>1606284

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

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

Понимаешь, я как бы с тобой согласен, а как бы и нет. Представь ситуацию: человек работает грузчиком в пятерочке, его заебало и он готов куда угодно, но только не так. И тут я такой на белом коне. Что ему посоветовать учить? Если я ему сразу дам фреймворки, он нихуя не поймет, обделается и забьет.

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

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

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

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

> Или в чем смысл этого всего вообще? Посмотреть часовой видосик по каждому пункту на ютубе?
Отчасти хотя бы так. Смысл - не знать все на 146%, а пройти собес, показаться уверенным или хотя бы смышленым.
Аноним 18/02/20 Втр 12:49:04 #189 №1606294 
>>1606289
> Этот этап спокойно пропускаешь, т.к. там нечему учиться в плане разработки.
Да, только вакансий - дохуя.

> Натянул верстку, накидал плагинов, настроил и готово.
Базару нет, только это не делает тебя хоть где-то сеньером.

> Есть гораздо более адекватный роадмап по бекенду на английском, легко гуглится
Слушай, не в службу, а в дружбу, принеси пожалуйста, я уже уехал и с телефона пишу.
Аноним 18/02/20 Втр 12:53:57 #190 №1606303 
>>1606291
если
>цель: устроиться куда-то
То пилишь круд на yii/laravel/symfony и устраиваешься

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

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

>Если берут только туда, где битрикс, неплохо бы его хоть немного знать
А может не надо туда идти?

>Смысл - не знать все на 146%, а пройти собес, показаться уверенным или хотя бы смышленым
Для этого достаточно написать круд
Аноним 18/02/20 Втр 12:56:42 #191 №1606309 
>>1606303
Бро, извини, я не буду больше с тобой спорить, мы смотрим с разных точек зрения.

> То пилишь круд на yii/laravel/symfony и устраиваешься
Это смотря куда. У меня были собесы, где я проходил сразу, а были, где меня внезапно ебали о том, как внутри устроен ассоциативный массив.

> От таких товарищей держаться максимально далеко.
Не согласен. Для первой работы - это опыт. И еще деньги.

В общем, если смена работы с грузчика на пхпшника это для тебя "не надо туда идти", то ты не забыл, насколько приятнее работать хотя бы за 30-40к в офисе, чем грузить говно в пятерке :)
Аноним 18/02/20 Втр 12:58:07 #192 №1606313 
>>1606309
*то ты не забыл = то ты забыл
Аноним 18/02/20 Втр 12:58:49 #193 №1606315 
image.png
>>1606294
>Да, только вакансий - дохуя
А вакансий кассиром еще больше. Но мы же хотим идти код писать и большой рубль получать?

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

роадмап прикрепил
Аноним 18/02/20 Втр 13:00:51 #194 №1606317 
>>1606315
Так это не роадмап, это просто вилки, откуда и чего начинается. Приоритетов-то нет.

> А вакансий кассиром еще больше. Но мы же хотим идти код писать и большой рубль получать?
Опять же, если речь про первую работу, мое личное мнение - похуй чего и как они там делают. Нужна: а) зарплата, б) хоть какой-то продакшн опыт. Никто не мешает получить его и через полгода перейти куда-то еще.
Аноним 18/02/20 Втр 13:01:43 #195 №1606319 
>>1606315
Заорал. Мне про Java понравилось. Там технологий больше, чем на всей этой картинке. Хуевая роадмапа, короче.
Аноним 18/02/20 Втр 13:01:43 #196 №1606320 
>>1606309
>Это смотря куда. У меня были собесы, где я проходил сразу, а были, где меня внезапно ебали о том, как внутри устроен ассоциативный массив.

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

>Для первой работы - это опыт. И еще деньги
Опыт - возможно. Деньги - не такие большие для айти.
Аноним 18/02/20 Втр 13:02:52 #197 №1606324 
>>1606315
>в адекватные сроки запилить проект с нуля
сеньором тебя делает возможность из туманных хотелок заказчика высрать решение его проблем, а на крупный продукт с нуля попасть это еще ой как повезти должно
Аноним 18/02/20 Втр 13:03:17 #198 №1606326 
>>1606320
Повторюсь и пойду по своим делам уже наконец. Вопрос в получении первой работы. Любой. Для человека, который не знает вообще нихуя. Я всё еще считаю, что выучить WP проще, чем фреймворк, т.к. последний тянет за собой другие знания, на WP занимаются добавлением плагинов в wp-plugins. И это точно проще.
Аноним 18/02/20 Втр 13:04:21 #199 №1606327 
>>1606326
А работа кассира еще проще
Аноним 18/02/20 Втр 13:04:39 #200 №1606328 
>>1606327
Демагогия. Хорошего дня.
Аноним 18/02/20 Втр 13:05:11 #201 №1606329 
>>1606315
Я вот после этой картинки и задумался, почему бы здесь не запилить что-то аналогичное для обучения.. Но она довольно кривая, как мне кажется.
Аноним 18/02/20 Втр 13:05:14 #202 №1606330 
>>1606291
>Представь ситуацию: человек работает грузчиком в пятерочке, его заебало и он готов куда угодно, но только не так. И тут я такой на белом коне. Что ему посоветовать учить?
О, такие стори есть у меня. раз в полгода-год условный знакомый из 5-очки выходит на связь, спрашивает как растет моя карьера, спрашивает что нужно что бы вкатиться и сколько это займет. Говорю ему что усердных занятий в пару месяцев хватит что бы начать ходить по собеседованиям. Скидываю ему учебник ОП-а этоого треда. И говорю что бы решил для начала самую первую страницу (это 10-20минут) и потом подходил с вопросами дальше. И это не какая-то абстрактная таблица с неведомой хуетой, вот тебе френдли учебник для нуба, сриусли. Просто не ленись и прочитай 1 страницу и открой ideone мать твою!
...
Через пол года знакомый снова выходит на связь, снова рассказывает как его все заебало в его пятерочке и что готов на что угодно, спрашивает как растет моя карьера, спрашивает что нужно что бы вкатиться и сколько это займет...

>Что ему посоветовать учить? Если я ему сразу дам фреймворки, он нихуя не поймет, обделается и забьет.
Учебник ОП-а для начала, сириусли, это все равно лишь примитивы и без этого никуда. Это норм старт в любой ситуакции, хоть он у тебя попадет на разработку в яндекс, хоть станет modx-sinior. Это не требует наката линукса и все задачи включая Вектор можно сделать на ideone и подобных ресурсах между делом хоть с телефона - было бы желание. (я сам так делал 5 лет назад, что уж).

Зачем ты ебешь себе и другим мозг таблицей, которая не имеет никакого отношения к реальности?
Аноним 18/02/20 Втр 13:10:20 #203 №1606339 
>>1606330
> Через пол года знакомый снова выходит на связь, снова рассказывает как его все заебало в его пятерочке и что готов на что угодно, спрашивает как растет моя карьера, спрашивает что нужно что бы вкатиться и сколько это займет...

Как. Блядь. Знакомо. И этот, возможно, из этих. Я его учу уже не первый раз, к слову. Прошло уже полгода с начала "занятий", но он еще не написал свой первый тестовый класс. Я составил эту таблицу, отчасти, уже в отчаянии. Мол, вот, держи, учи вот это, сам, без меня, я сделал, что мог.

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

> Зачем ты ебешь себе и другим мозг таблицей, которая не имеет никакого отношения к реальности?
Ну опять же, на мой взгляд имеет, еще и какой. Я не хотел бы столкнуться с мидлом, которые пишет на фреймворке и не знает, что такое mod_rewrite.
Аноним 18/02/20 Втр 13:13:49 #204 №1606348 
>>1606330
Учебник ОПа это вот эта хуйня? https://phpbooktest2.ga/
С кошко-девочками и изображениям?
Аноним 18/02/20 Втр 13:17:20 #205 №1606353 
>>1606324
>сеньором тебя делает возможность из туманных хотелок заказчика высрать решение его проблем
По нормальному этим лид или пм занимаются. Именно разработчику такой скилл только как бонусный идет.
>>1606315
>Сеньером тебя делает способность в адекватные сроки запилить проект с нуля
Тоже нет. Хотя бы потому что адекватных сроков никто в сущности никогда не может заранее назвать. Кроме того условный эникей на вп может в еще более адекватные сроки вложиться. Будет ли он за счет этого хотя бы на уровне условного сеньора на симфе? Нет.
Помидор в первую очередь пишет качественный код в проект, который будет жить, процветать, легко улучшаться (другими сеньорами в идеале, но если мидлы и джунами изи справятся - ваще молодец) и этот код не будет обузой и кандидатом на выпиливание. Конечно так можно и целый проект с нуля запилить, но это будет частный случай. Все, кроме этого - бонусы, которые повышают ценность сеньора, но не являются основополагающими.
Аноним 18/02/20 Втр 13:18:55 #206 №1606356 
>>1606348
да
Аноним 18/02/20 Втр 13:19:26 #207 №1606357 
>>1606356
Ок, спасибо, прикольно. Никогда этой хуйни не видел. Скину ему, спасибо.
Аноним 18/02/20 Втр 13:21:32 #208 №1606360 
>>1606353
>легко улучшаться (другими сеньорами в идеале
если твой код может быть понятен только сеньорам, то это хуевый код, идеальный код такой что даже тетя зина прочитав учебник до половины могла его прочитать
Аноним 18/02/20 Втр 13:27:05 #209 №1606366 
image.png
>>1606339
>Я не хотел бы столкнуться с мидлом, которые пишет на фреймворке и не знает, что такое mod_rewrite.

Ну столкнулся и че? У него мб не стояла за пару лет задача которая бы его в это окунула. Повезло пацану что он не пердолился с настройками htaccess и прочей хуетой которая как бы все равно лежит на уровень ниже пхп-программирования.

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

Зато вот возник прецедент и в этот момент он столкнулся - все, вопрос исчерпан и зошквар снят?
Аноним 18/02/20 Втр 13:28:37 #210 №1606368 
>>1606366
> И что - все, зошквар сразу в твоих глазах? Хз вот по мне это все такие маня-стереотипы и подходы, что бы пытаться других людей хоть как-то классифицировать для себя.

Ну, кстати, может ты и прав, я утка и не понимаю этого.
Аноним 18/02/20 Втр 13:33:33 #211 №1606376 
>>1606366
>>1606368
Хотя, в свое оправдание, хотя сейчас на той же Java можно ебашить через спринг бут, но при этом понимание как работают сервлеты и томкат на собесах все равно просят. Зависит от собеса.
Аноним 18/02/20 Втр 13:39:33 #212 №1606382 
154118960709593.jpg
>>1606360
Пилю ща некий конструктор апи, стараюсь сделать так, что когда меня уволят, то новое апи будет легко собрать даже джуну на которого это скинут. Все больше прохавываюсь в ООП, абстракциях и прочих тайпхинтах, загоняя потенциального дописывателя в такие рамки, что ему просто не в чем будет ошибиться.
Хуйнул не то не в том месте? Лови исключение с описанием того что ты сделал не так и где надо сделать. Доставляет этот процесс прям. Некая крупица творчества есть что ли в отличие от повседневных тасков даже.

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

>>1606253
>Если тебе скажут что можешь посидеть тут недельку поделать тестовое за бесплатно и позаебывать всех вопросами - соглашайся.
А если не скажут, то сам попросись обязательно. Откажут - ну ладно. Но если разрешат, то считай повезло. Главное не слейся, даже если нихуя не понимаешь, спрашивай и гугли. Затупил и нихуя не понятно - попроси совета. Даже если оче стыдно - главное не сливайся так что походил пару дней и исчез (с мыслью о том что недостоин и нужно еще подучить). Глядишь сойдешь за того самого мифического "с огнем в глазах" сотрудника, которого все мечтают к себе нанять на работу.
Аноним 18/02/20 Втр 13:42:11 #213 №1606384 
>>1606376
>но при этом понимание как работают сервлеты и томкат на собесах все равно просят. Зависит от собеса.
Ребята, которые не понимают что нужно конкретно спросить для понимания, справится ли человек с конкретной текущей работой, спрашивают все что знают сами, что бы не нанять ни в коем случае спеца который будет сильно ниже навыком, ну или стандартную типовую хрень что бы вообще не париться? Ну что поделать. Мы люди - хули с нас взять.
Аноним 18/02/20 Втр 13:44:02 #214 №1606390 
>>1606384
Ну, не совсем, это собес в одну крупную галеру, название которой я не скажу по понятным соображениям. Спрашивают это всех. Спрашивают еще и за софт-скиллы тоже.
Аноним 18/02/20 Втр 13:46:34 #215 №1606393 
>>1606360
Ты похоже давно не видел ждунов и мидлов. Немыслимо тупят на всем, что сложнее решения в лоб. Из 10 только 1 сможет вообще вникнуть в любую абстракцию сложнее метода в классе, остальные 9 будут заниматься копипастом и даже пытаться вникать не станут. Это на словах и в резюме все красивые с кейвордами в плащах стоят, а на работе оказывается, что код то писать сучары не умеют. Даже когда от а до я решение расписываешь псевдокодом - типа опытные мидлы не могут это в код перенести. Пару раз так и на выход. Вот сегодня какой-то дед травил историю, что почти все пришедшие на собес мидла ларки не знают, как использовать форич. И это уровень макак с популярно фрейма, в целом по больнице получается даже хуже. Вся эта досеньорская толпа вайтишников - обсуживающий мусор, которым скидывается неинтересная и несложная работа. Щас бы ориентироваться на эти хилые умишки, чтоб они не обиделись. Когда кто-то из них начинает качественно расти - его вытягивают и получается еще один помидор, однако это очень редко.
А еще я написал про способность улучшить, а не просто прочитать. Могут даже не читать поидее, для пользователей моего кода всегда есть апихи. Те же, кто захочет развивать должны иметь для этого знания, а не только рабочее место.
>даже тетя зина прочитав учебник до половины могла его прочитать
Так ты и есть тетя зина, которая хочется чтобы сеньоры писали понятный ей код, потому что вторую половину какой-то брошюрки, названной учебником, осилить не можешь. О каких вообще может быть речь? Никакой книжонки, которая сделает из тебя даже джуна по прочтению не существует.
Аноним 18/02/20 Втр 13:47:42 #216 №1606394 
Вижу тут все-таки идет обсуждение работы, хотя когда-то ОП ругал за такое и гнал в перезвоните-тред, где сидят какие-то депрессивные аноны. Поэтому срошу здесь, я уже как год работаю в проекте на yii2, в основном поддержка, недавно я остался единственным разрабом, и я уже не могу видеть этот код, переписывать постоянно падающие модули, тут еще в компании обработка эксель-файлов очень интенсивная, и вместо веб-итеграций, идет какая-то эксель-интеграция. У меня переживание, а вдруг я совсем закопался, работая один, иногда я не могу даже строчку кода выдавить. Анон, как быть?
Аноним 18/02/20 Втр 13:48:37 #217 №1606395 
>>1606393
обоссаной галерой запахло
Аноним 18/02/20 Втр 13:49:39 #218 №1606397 
>>1606394
перегорел, иди ной шоб нанимали или сам уебывай
Аноним 18/02/20 Втр 13:52:39 #219 №1606400 
>>1606397
Спасибо, анон. Думаю вместо или сделать и.
Аноним 18/02/20 Втр 13:53:31 #220 №1606402 
>>1606262
>потом ты берешь CMS, т.к. она ничего кроме этого не требует,
Это пиздец какое сильное заблуждение. Любая CMS обладает собственной логикой (часто очень порочной), собственной структурой (часто неудачной) и собственными подходами к разработке (часто плохими). Для того, что бы успешно работать в рамках CMS нужно хорошо её знать.

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


Сам я считаю себя достаточно продвинутым специалистом в не к ночи будет помянут Битриксе. Только в последние 2 года удалось с него немножко слезть. Так вот, для того, что бы совладать с этим говном мне потребовалась херова туча знаний и размышлений. И половина постов о хейте Битры в этом треде - моя. В отличие от хабрапидоров, которые не уважают его в стиле стереотипов, я ненавижу его потому что я с ним работал. Я не могу сказать, что 3 года битры были временем, спущенным в унитаз, но я определенно мог бы их потратить более продуктивно.
Аноним 18/02/20 Втр 14:00:14 #221 №1606407 
>>1606315
устаревший пик.
джанга сейчас асинхронной стала
дальше не смотрел
Аноним 18/02/20 Втр 14:01:01 #222 №1606408 
>>1606402
> Дихотомия CMS для нубов, а фреймворк для гуру ложная насквозь. Любой подход требует знаний и опыта. Проблема с CMS в том, что они дают слишком узкоспециализированный опыт, не применимый нигде кроме работы в них же. И именно поэтому тут советуют их избегать.

На первыйз вгляд все верно. Но оказывается, что CMS все же проще и устроиться на работу с ней проще тоже, в отличие от.
Аноним 18/02/20 Втр 14:02:21 #223 №1606410 
>>1606395
Читал что это норма. Когда на галере под видом мидлов работают джуны, а под видом синьоров - едва ли мидлы. Тут уже продажники пытаются наебать клиента, пытаясь впарить спеца классом ниже за больше бабок. Не нужно людей за это ненавидеть. Они то и рады что их взяли куда-то "синьорами-помидорами", лол.
Аноним 18/02/20 Втр 14:07:03 #224 №1606411 
>>1606410
>Читал что это норма. Когда на галере под видом мидлов работают джуны, а под видом синьоров - едва ли мидлы
да так и есть, на сеньорах маржа выше, отсюда и берутся 21 летние тимлиды-сеньоры.
хотя по факту то они откровенно не тянут.
Аноним 18/02/20 Втр 14:25:23 #225 №1606421 
>>1606410
Это не имеет отношения к набору, дружище. Не важно, что говорят заказчику, набирать могут по совсем другим принципам и из сеньеров делать pm'ов, например. Короче, мимо.
Аноним 18/02/20 Втр 14:34:20 #226 №1606430 
>>1606394
Меняй галеру.
А то так выгоришь и выпадешь из индустрии.
Сидеть на поддержке легаси - болото
Аноним 18/02/20 Втр 14:35:13 #227 №1606432 
>>1606407
Да, взял устаревший, т.к. в новых какая-то обобщенная несуразица
Аноним 18/02/20 Втр 14:56:54 #228 №1606450 
>>1606421
>из сеньеров делать pm'ов
разработка и менеджмент вещи разные, многие с возрастом просто туда уходят, ибо заебало писать код, нельзя делать пма из человека с херовыми софт скилами.
Аноним 18/02/20 Втр 14:58:17 #229 №1606451 
>>1606450
Само собой. Кто ж спорит. Ты как будто что-то новое сейчас говоришь.
Аноним 18/02/20 Втр 15:01:00 #230 №1606454 
>>1606451
ты так сказал как будто пм следующая ступень сеньора, как мидл джуна, это вообще другая ветка.
Аноним 18/02/20 Втр 15:14:41 #231 №1606472 
Все так любят названия джун, мидл, синьер. Но ни одна хуила так и не может привести пример задач, которые решает тот же мидл или синьер. Такая градация если и есть, то только внутри компании
Аноним 18/02/20 Втр 15:21:23 #232 №1606483 
>>1606472
Все просто!
Помидор ходит по офису с кружкой кофе/стаканом смузи, флиртует с хрюшами, скидывает задачи на паровозов в ИТ компаниях(мидлов).

Мидл хуярит сутками по клавишам, метается между желанием сдохнуть и посрать.

Ждун просто как маленький щенок бегает по офису и гавкает "ООП хуйня, давайте писать в функциональщине" за что получает леща и идет на свое место до нового прихода гениальных идей в его голову, опционально пишет Хелло ворлд, забирает остатки пиццы с обеда домой.
Аноним 18/02/20 Втр 15:41:32 #233 №1606512 
>>1606430
Да, снова выхожу на тропу поиска себя.
Аноним 18/02/20 Втр 15:45:03 #234 №1606515 
>>1606512
Мимо тем же занимаюсь.
Уже заебало поддерживать продукт месиво из говна
Аноним 18/02/20 Втр 16:02:54 #235 №1606540 
В свое время начинал задрачивать питон, потом бросил, но получил предсталение. Еще пощупал джанго, посмотрел пару уроков на ютабе. Вроде ничего сложного. Но еще тогда все советовали пыху изучать и яву. И еще в би кидали пасту про питон и кучу бабла. Так вот, снова хочу вкатиться, но для себя, хотя хз, мб и найду РАБоту, а мб буду кворки делать. Кароч. питон или пыха все таки. А в чем суть реквеста еще. На пыхе делают генераторы сайтов, те можно создавать кучу сайтов по шаблонам. Можно что-то делать подобное на питоне. Или лучше делать на пыхе все таки? Ну и попутно, да, что задрачивать лучше.
Аноним 18/02/20 Втр 16:03:19 #236 №1606543 
>>1606483
>ООП хуйня
ну да
Аноним 18/02/20 Втр 16:04:07 #237 №1606545 
>>1606540
это разные языки
Аноним 18/02/20 Втр 16:07:11 #238 №1606546 
>>1606545
Да, там синтаксис разный. Но суть то одна. Как по мне, пыха ближе к си, визуально. Питон позиционируют проще, хз. Ну нарпимер, на питоне можно написать генератор сайта, или что-то подобное. Ну типо доргена в народе.
Аноним 18/02/20 Втр 16:24:15 #239 №1606574 
Написали с одной конторы, условия устроили. Сегодня звонила эйчарка, побеседовали. Спросила про семейное положение, сказала, что они собирают команду и надо пройти психологические тесты, которые она вышлет на почту. Только после них пригласят или не пригласят на собес. Это норма?
Аноним 18/02/20 Втр 16:27:06 #240 №1606579 
>>1606574
ну пройди
Аноним 18/02/20 Втр 16:27:07 #241 №1606580 
>>1606546
для того чтобы сайтики на питоне писать тебе надо сначала его освоить, а затем уже фреймворке
пыха же была спроектирована таким образом чтобы сразу сайтики писать
тебе решать
Аноним 18/02/20 Втр 16:28:52 #242 №1606581 
>>1606402
>Любая CMS обладает собственной логикой (часто очень порочной), собственной структурой (часто неудачной) и собственными подходами к разработке (часто плохими)
двачую адеквата. сам щас работаю со всякими cms и понимаю что если ты джун и многих вещей не знаешь - то эта хуйня привьет тебе неправильные практики. например логику в модели прописывать, как это в опенкарте сделано)))
Аноним 18/02/20 Втр 16:29:20 #243 №1606582 
>>1606579
Там три теста на 120 вопросов. Первый прошел, он показал, что я забитый омеган. Мне как-то стыдно это эйчарке слать, она же результаты попросила.
Аноним 18/02/20 Втр 16:29:40 #244 №1606583 
>>1606574
> Спросила про семейное положение,
Потому что если семья и дети есть - ты не дропнешь работу, как свободный человек.
Если тебя спросят, кем ты видишь себя через 5 лет - помни, крайне важно видеть себя в той же самой конторе, просто на должности повыше.
Аноним 18/02/20 Втр 16:30:44 #245 №1606584 
>>1606583
>Если тебя спросят, кем ты видишь себя через 5 лет
А она спросила) Я ответил, что съебу в машоб из этого вашего веба, как только наберу достаточно знаний))
Аноним 18/02/20 Втр 16:32:24 #246 №1606586 
>>1606582
> Первый прошел, он показал, что я забитый омеган
Интересно насколько это распространено среди айтишников.
> Мне как-то стыдно это эйчарке слать, она же результаты попросила.
Ты ведь в итоге можешь получить работу - отправляй. Может она команду омеганов наберёт и будет комфортно работать с ними, в отличие от нормисов.
Аноним 18/02/20 Втр 16:33:14 #247 №1606589 
>>1606584
Ууу, всё. Не перезвонят. Я так с собеса вылетел.
Аноним 18/02/20 Втр 16:35:03 #248 №1606591 
image.png
>>1606574
пиздец эти хрюши совсем поехали. а случайно аккаунты на все свои соц сеточки не попросили скинуть? ну чтобы проверить насколько ты адекват. заходят - а там в подписках раковники, на стене пасты про говно, и вот это на аватарке. многие ебнутые галеры так делают, только без твоего ведома
а если закроешь профиль - то сразу все пок пок закрытый человек нам такой нинужон
Аноним 18/02/20 Втр 16:35:45 #249 №1606593 
>>1606584
дата сатанист ты думаешь там ии, хуй там ночевал будешь улучшать таргетированную рекламу.
Аноним 18/02/20 Втр 16:36:10 #250 №1606595 
>>1606591
Она сама вроде адекватной женщиной показалась, а тесты - приказ начальства, якобы.
Аноним 18/02/20 Втр 16:36:38 #251 №1606596 
>>1606593
за 300кк/нс чо бы и не поулучшать.
Аноним 18/02/20 Втр 16:36:51 #252 №1606597 
>>1606591
А уж если профиль открытый, но пустой...
Аноним 18/02/20 Втр 16:38:27 #253 №1606601 
>>1606586
Первый тест
https://onlinetestpad.com/ru/testview/801-mnogofaktornyj-lichnostnyj-oprosnik-fpi

Вторые два в виде экзешников для винды, а у меня линух стоит. Придется виртуалку накатывать ептыть.
Аноним 18/02/20 Втр 16:38:53 #254 №1606603 
>>1606596
за 300 хуев я б сказал, еще найди давай.
Аноним 18/02/20 Втр 16:40:59 #255 №1606606 
>>1606603
У меня знакомый работает в стартапе. Они там привлекали сатаниста за 200к в месяц на три месяца работы, и то этот хуй еще и совмещал (на основной работе у него примерно такой же ценник был).
Аноним 18/02/20 Втр 16:43:29 #256 №1606610 
>>1606606
я к тому шо каждый пиздонист, а их дохера, хочет в дата сатанисты.
Аноним 18/02/20 Втр 16:45:23 #257 №1606614 
>>1606601
тест за 2012 год
мда
Аноним 18/02/20 Втр 16:45:50 #258 №1606618 
>>1606610
похапешников гораздо больше и чо
Аноним 18/02/20 Втр 16:46:06 #259 №1606621 
>>1606614
опросники это не фронтенд они не меняется так быстро
Аноним 18/02/20 Втр 16:47:02 #260 №1606624 
>>1606618
в очо епт, натягивать вротпресс и машобить это дохера разные вещи
Аноним 18/02/20 Втр 16:47:27 #261 №1606625 
>>1606621
меня сам факт их наличия смущает, и что это приказ начальства. То есть есть некоторые сомнения в адекватности этих людей.
Аноним 18/02/20 Втр 16:49:08 #262 №1606630 
>>1606601
Проходил подобный, только на 300+ вопросов, у психотерапевта. Получился депрессивным шизоидом, склонным к депрессии дополнительно.
>>1606614
> за 2012 год
Mmpi с прошлого века используется и остаётся актуальным. Люди же те же.
Аноним 18/02/20 Втр 17:20:24 #263 №1606665 
>>1606630
>Люди же те же.
нееееет погромисты сверхлюди у них на одну хромосому больше
Аноним 18/02/20 Втр 17:52:04 #264 №1606691 
>>1606625
я тебе говорил с самого начала
>>1606621
дристанул чет

аноны, сейчас в шаблоне на проекте внезапно наткнулся на такой синтаксис:
<% _.each (model.addresses, function(address) { %>
<%= address.city %>
что это за хуйня и как с ней вообще работать то ? на твиг обработчик это непохоже

>>1606591 - кун
Аноним 18/02/20 Втр 17:53:27 #265 №1606692 
>>1606540
>Кароч. питон или пыха все таки. А в чем суть реквеста еще. На пыхе делают генераторы сайтов, те можно создавать кучу сайтов по шаблонам. Можно что-то делать подобное на питоне. Или лучше делать на пыхе все таки? Ну и попутно, да, что задрачивать лучше.
Чем тебе Django не подходит?
Аноним 18/02/20 Втр 21:57:17 #266 №1607030 
>>1606252
Хуета какая то бро
Аноним 18/02/20 Втр 22:07:11 #267 №1607043 
>>1606252
Получается пхп программист должен включать в себя фронтендера? Вроде есть вакансии, где чисто фронтенд требуют и пхп не нужно.
Аноним 18/02/20 Втр 22:27:51 #268 №1607058 
>>1607043
может, а может нет
Аноним 18/02/20 Втр 22:53:20 #269 №1607093 
Аноны, с пхп на питон/руби/джаву/go не тяжело же перекатиться? Ибо судя по "вступлениям в язык", которые я на хабре читаю - все одно и то же, только синтаксис языка разный. Или я хуйню какую то читаю, или что?
Аноним 19/02/20 Срд 00:23:55 #270 №1607221 
>>1604256
>вы немного знаете пхп и отличаете бэк от фронта? Го к нам на 20к стажёром

Очевидно же что наебочка и тебе вообще не заплатят, а под "немного знаете" подразумеваются вполне себе знания вкатывальщика
Аноним 19/02/20 Срд 00:24:15 #271 №1607222 
>>1607043
Фулстеку больше платят. И на пхп мало вакансий, где нужен только пхп.
Аноним 19/02/20 Срд 00:30:59 #272 №1607229 
Шалом, такой вопрос, часто в вакансих вижу язык Go(да и на собесе последнем про него спросили), кто знает зачем пыхеру нужен GO?
Аноним 19/02/20 Срд 00:35:46 #273 №1607231 
>>1607093
писал на жабе больше года, за три дня вкатился в пыху(тип мог накидать сайт и тд), нормально-читабельный код писать начал через 3-4 недели

Все языки похожи(тип паттерны, алгоритмы, ООП, многопоточку ты не изменишь), просто на чем то проще писать под какую то задачу
Аноним 19/02/20 Срд 00:44:58 #274 №1607238 
>>1607222
Чем тот же пхп отличается от питона или руби? Или в этой нише как таковой больше востребованы фуллстеки?
Аноним 19/02/20 Срд 00:51:55 #275 №1607244 
>>1607238
Да фулстек - это всегда плюс. Но пхп-то изначально был заменой перла, чтобы делать сайтики быстрее. Ключевое слово - сайтики. Там html/css по дефолту знать нужно было. А в наше время это react/vue. Ну и один хер, дешевле нанять макаку, которая и то и то может за +40% к зарплате, чем двух чуваков на x2 денег.
Аноним 19/02/20 Срд 00:52:11 #276 №1607246 
>>1607231
>Все языки похожи
если похожа парадигма и синтаксис, дай тебе лисп или эрланг и ты утонешь в нем
Аноним 19/02/20 Срд 00:57:11 #277 №1607251 
>>1607231
Нахуй ты из жабы вкатился в пыху, ебанутый? Я пытаюсь наоборот выкатиться нахуй из пыхи, она просто днище.
Аноним 19/02/20 Срд 00:57:30 #278 №1607252 
>>1607093
>>1607246
Да, скорее всего так. Не могу рассуждать в этом направление(с одной парадигмы на другую), возможно проблема синтаксиса встанет не так остро(тип за недельку разгребешь), прост все языки на которых я писал были функциональный, процедурные или ооп
Аноним 19/02/20 Срд 01:00:29 #279 №1607256 
>>1607251
Лоооол, сидишь-пердишь в универе на парах, ждешь чтобы заказчик кость бросил(я помнб тогда вообще за любые деньги работал, тип кому нужна жаба на фрилансе), все друзья писали на пыхе, тип заказов жопой жуй, ща вот второй год сижу на пыхе, с работой вообще проблем нет
Аноним 19/02/20 Срд 01:03:03 #280 №1607257 
>>1607251
кст, мой путь был скорее похож на деградацию
C + asm вставки для AVR8
Потом с++(qt)
Java => android
Пыхы + js
Аноним 19/02/20 Срд 01:05:00 #281 №1607258 
>>1607256
> сидишь-пердишь в универе на парах
А, ну тогда понятно, больше вопросов нет.
Аноним 19/02/20 Срд 01:05:47 #282 №1607259 
>>1607257
Ставлю свой носок, что ты ничего из этого глубоко не выучил, ни на одной серьезной должности с этим не работал, поэтому и жалеть не о чем.
Аноним 19/02/20 Срд 01:09:44 #283 №1607262 
>>1607257
Примерно так же было. Только андроид после пхп на годик поработал, а до пыхи на шарпе. Плюс питон и го недавно добавились.
Аноним 19/02/20 Срд 01:09:58 #284 №1607263 
>>1607259
с асм и микроконтроллерами просто поигрался
с++ чисто чтобы комп и контроллер связать
жаба для работы(пару заказов), но язык я старался понять как можно глубже, а не просто кодить
пыха - здесь дольше всего

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

Аноним 19/02/20 Срд 01:10:27 #285 №1607264 
>>1607262
Я там пару постов назад про го спрашивал, так зачем он нужен пыхеру?
Аноним 19/02/20 Срд 01:14:20 #286 №1607265 
>>1607263
Ну нормич, в принципе. У меня, на самом деле такой же путь примерно, от C++ в школе до PHP сейчас плачет

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

Особенный разрыв у меня вызывают паттерны в php. Вот нахуя они там, если пхп выполнился и умер? Я на нем давным давно пишу и до сих пор не понимаю, нахуя их знать? СИНГЛТОН в пыхе, блядь, ну серьезно? Какая разница? Если бы это было c/java/c# приложение, которое висит в памяти, то там и правда нужен синглтон. А тут синглтон получается из любого класса просто потому, что пхп завершается после выполнения задачи.

Короче, ладно, чото меня понесло на ночь глядя, пойду спать.
Аноним 19/02/20 Срд 01:18:35 #287 №1607266 
>>1607265
НУ смари, чисто что сейчас смог вспомнить

Всегда использую фабрику в API, всегда юзаю команду для js(если в целом о веб), и вот не знаю можно ли назвать реализацию одного статик метода синголтоном
Аноним 19/02/20 Срд 01:19:36 #288 №1607268 
>>1607264
Не видел, искать не стану.
Не обязательно пыхеру, вообще бекендеру пригодится. Микросервисами на нем можно с легкостью закрывать узкие места, требовательные к производительности. Если микросервис простой планируется, то можно даже не выбирать особо, а сразу писать на го сейчас, не прогадаешь.
Заметная вещь для пхп - roadrunner. Возможная замена php-fpm, хотя на данном этапе многим пхпшникам работать с ним тяжело и непривычно(но многие пытаются), как дело с ним дальше пойдет посмотрим.
Я и роадраннер юзаю и микросервисы на го попиливаю.
Далее лирика.
Некоторые компании сейчас решаются полностью переходить с пхп на го. Правда как по мне это преждевременный шаг, но мир мое мнение не изменит. Перекат опытного пхпшника на го происходит прямо с места, язык очень прост, поэтому это вероятный вариант, куда тебя жизнь и мода заведет в дальнейшем по беку. Даже сейчас в го каждый третий наверное перекатился с пхп.
Аноним 19/02/20 Срд 01:21:10 #289 №1607269 
>>1607268
Оке, спасибо, опять двач выручает
Аноним 19/02/20 Срд 01:21:31 #290 №1607270 
>>1607266
> Всегда использую фабрику в API
> всегда юзаю команду для js(если в целом о веб)
Чего?

> и вот не знаю можно ли назвать реализацию одного статик метода синголтоном
При чем тут вообще один статик метод и синглтон? Что за шизу ты написал?)))000
Аноним 19/02/20 Срд 01:26:02 #291 №1607273 
>>1607266
> команду
А, блядь, я наркоман, я сначала подумал, что ты про какую-то консольную команду (npm start, блядь, какой-нибудь). Но при чем тут АПИ и фабрика - так и осталось загадкой.
Аноним 19/02/20 Срд 01:26:14 #292 №1607274 
>>1607270
Последнее это попытка пошутить, сори(
-------------
Про команду, это тип когда ты навешиваешь он-действие и потом разбираешь с чего оно прошло(самый банальный пример)

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

-------------

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

Фабричный метод — это порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Аноним 19/02/20 Срд 01:27:11 #293 №1607276 
>>1607273
ахахха, в такой голос с npm start
Аноним 19/02/20 Срд 01:27:21 #294 №1607277 
>>1607266
он тебе рассказывает что любая операция в пыхе идет как отдельный тред и падает а ты ему про апи
Аноним 19/02/20 Срд 01:28:27 #295 №1607278 
>>1607274
А, я понял о чем ты, окей, сорри. Уже пол второго, в глаза ебусь. А нахуй тебе создавать тот или иной класс в зависимости от того, что пришло из апи?
Аноним 19/02/20 Срд 01:29:38 #296 №1607279 
>>1607277
мб я что то не оч понимаю, то просьба пояснить, но когда у тебя идешь лапша из вызовов классов, то патерны нужны для больше читаемости, я так предпологал
Аноним 19/02/20 Срд 01:31:16 #297 №1607280 
>>1607277
Этот прав. Хотя хуй с ним уже, под утро я уже сам теряю нить своего же разговора.
Аноним 19/02/20 Срд 01:32:03 #298 №1607282 
>>1607279
Ну что-то вроде того, мои стенания были скорее о том, нахуя некоторые паттерны именно в пхп. Они там (для меня) выглядят как кобыле пятая нога.
Аноним 19/02/20 Срд 01:33:01 #299 №1607283 
>>1607278
ну тип я помню делал такие конструкции,пришел запрос в гет параметре у тебя название метода(тип спарсить что то или еще что), ты вызвал класс который нужно(исходя из гет запроса, например через switch вызвал нужный класс), а потом с ним идут операции типовые
Аноним 19/02/20 Срд 01:33:42 #300 №1607285 
>>1607279
>>1607277
Я вот еще одну штуку не понимаю, например, прямо наболело. На кой хуй нужен принцип Барбары Лисков, если в наше время уже есть юнит-тестирование (и вообще тестирование)? Ну нахуя он, ну нахуя, блядь?.. Короче, ладно.
Аноним 19/02/20 Срд 01:34:17 #301 №1607286 
>>1607279
это особенность рантайма пыхи, там нет тредов выполнения как в жабе, скрипт выполнился и умер, потом встал новый и умер и дальше, потому нет и многопотока толком.
Аноним 19/02/20 Срд 01:34:53 #302 №1607287 
>>1607283
Это какая-то конкретная задача, видимо, может там так и удобнее, не знаю, короче. У меня ощущение, что мы не про фабрику, а про банальный полиморфизм.
Аноним 19/02/20 Срд 01:36:38 #303 №1607289 
>>1607278

свитч (getParm )

case getParam:
$a = new Что-то
case getParam:
$a = new Что-то
case getParam:
$a = new Что-то

$a->getName();
$a->getAge();

echo все говно


Если очень приземлено или мб я даун и назвал это фабрикой
Аноним 19/02/20 Срд 01:37:14 #304 №1607290 
>>1607289
НУ понятно классы разные
Аноним 19/02/20 Срд 01:43:48 #305 №1607294 
>>1607285
Хах, надо чаще на двач заходить, сразу пропадает ощущение что ты что-то знаешь в проге
Аноним 19/02/20 Срд 01:44:30 #306 №1607295 
>>1607289
Эээ, нет, это не фабрика, ты просто свичем создаешь. Мог бы и ифами, мог бы и иначе, это не делает такой код фабрикой.
Аноним 19/02/20 Срд 01:45:39 #307 №1607296 
>>1607294
Я скоро свалю из треда и опять будете разбираться какой фреймворк лучше и как запустить PHP, не переживай, хахаха
Аноним 19/02/20 Срд 01:47:50 #308 №1607298 
>>1607289
Дополню >>1607295
Вот тебе пример фабрики на пыхе, найди пять отличий, как говорится )

<?php
interface Product{
public function GetName();
}

class ConcreteProductA implements Product{
public function GetName() { return "ProductA"; }
}

class ConcreteProductB implements Product{
public function GetName() { return "ProductB"; }
}

interface Creator{
public function FactoryMethod();
}

class ConcreteCreatorA implements Creator{
public function FactoryMethod() { return new ConcreteProductA(); }
}

class ConcreteCreatorB implements Creator{
public function FactoryMethod() { return new ConcreteProductB(); }
}

// An array of creators
$creators = array( new ConcreteCreatorA(), new ConcreteCreatorB() );
// Iterate over creators and create products
foreach ($creators as $creator) {
$products[] = $creator->FactoryMethod()->getName();
}

header("content-type:text/plain");
echo var_export($products);
Аноним 19/02/20 Срд 01:48:02 #309 №1607299 
>>1607295
да, ты прав, ща погугли фабрику, че то я пургу нес
Аноним 19/02/20 Срд 01:48:32 #310 №1607300 
>>1607296
разве не Symfony?
Аноним 19/02/20 Срд 01:48:41 #311 №1607301 
>>1607298
Ну и за методы с заглавной буквы и не отвечающие требованию "это должен быть глагол", надо убивать нахуй, конечно. Как этот код пролез в Вики, блядь, вообще...
Аноним 19/02/20 Срд 01:49:45 #312 №1607302 
>>1607300
Ваще похуй, как по мне, всё говно.
Аноним 19/02/20 Срд 01:50:31 #313 №1607303 
>>1607299
Ты еще почитай, например, когда лучше применять билдер, а не конструктор. Ну, в общем, тебя ждет большой удивительный мир, и это хорошо )
Аноним 19/02/20 Срд 01:51:45 #314 №1607304 
>>1607294
есть такое easy to learn hard to master сам столкнулся с ним когда начинал жабу, базовый язык простой как три копейки, но из-за огромного стека фреймворков багаж необходимого пухнет как баул на рынке в 90х, так и с обратным принципом когда начал жевать кложуру, ебать как это так код в виде аст дерева, как писать код и не писать мегатонну хуеты к нему, почему обход одной функцией, это дробило мне мозг а потом пришло просветление.
Аноним 19/02/20 Срд 01:51:59 #315 №1607305 
>>1607303
хах, с другой стороны, мы на пыхе, кому здесь нужны наши патеры, ахах?
Аноним 19/02/20 Срд 01:54:33 #316 №1607307 
>>1607305
Здесь - никому, а на собесах нужны :) Да и вообще, чем больше знаешь, тем лучше ты можешь писать код, независимо от языка. Я когда про паттерны лихо заявил а-ля "нинужна!", я только синглтон имел ввиду. Я бы еще несколько разных туда же в "нинужна!" приписал (обсервер, например, в пыхе он смотрится СТРАННОВАТО), но в целом паттерны - это хорошо.
Аноним 19/02/20 Срд 01:55:37 #317 №1607308 
>>1607304
а вот честно, я так что задумываюсь о последних проектах, чистоте кода, патернах, чаще всего я вижу это тяп ляп и в продакшн(тип во многих компаниях), один чувак сказал, что пока ты тут будешь правильную архитектуру мутить, конкурент уже приложение состряпает и поэтому все пишут говнокод, так что у меня двоякое чувство про изчение этого всего, может только если для души...
Аноним 19/02/20 Срд 01:56:17 #318 №1607309 
>>1607304
Да там и саму джавку можно учить годами, похоже. Я хотел пройти тесты OCA/OCP (оракловские сертификаты на знание джавы). От функциональщины у меня мозг просто сломался и вытек. Я ее дрочил-дрочил, все эти би-консьюмеры, сапплаеры, стримы и прочее дерьмо. А когда решил пройти демо-тест (не настоящий даже!), то я чуть не заплакал - я просто _не могу_ понять, что будет в результате выполнения запутанного функционального кода, просто, сука, НЕ МОГУ.
Аноним 19/02/20 Срд 01:57:39 #319 №1607310 
>>1607308
Угу. А когда твой конкурент через год сделает продукт лучше и работающий правильнее, то ты будешь локти кусать, т.к. ты свой говно-код уже поправить не сможешь никак, не начав писать с нуля. Почитай про проекты, которые от этого загнулись. ВНЕЗАПНО, например, официальный клиент ICQ. И у меня есть серьезные подозрения, что многие проекты мелко-мягких испытывают эти проблемы прямо сейчас, например.
Аноним 19/02/20 Срд 01:59:44 #320 №1607311 
>>1607309
в жабе куча теор. говна, я когда к собесу готовился, я думал захлебнусь от всего этого,
>>1607310
мнение не мое, а чувака на которого работал, я так понял он про то, что главное пораньше запуститься, а тип дальше хоть потоп
Аноним 19/02/20 Срд 02:01:18 #321 №1607312 
>>1607308
дело даже не чистоте, дело в костылях, многословности, я накладываю эти слои абстракции, а потом я увидел что есть что то где нет этих фабрик которые делают фабрики, писать приятно.
>>1607309
это даже не функциональщина, это огрызки
многопоток в мутабельном языке это боль, изоморфное приложение это как сесть на раскаленный лом.
Аноним 19/02/20 Срд 02:03:43 #322 №1607313 
>>1607311
>в жабе куча теор. говна
устаревшего теор говна, обратная совместимость же
Аноним 19/02/20 Срд 02:04:28 #323 №1607314 
>>1607308
У меня есть просто охуенная история по этому поводу, кстати. Прямо вот из первых рук. Напишу и пойду спать все-таки.

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

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

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

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

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

Мы еще 2 месяца ебались и пытались все исправить (тесты нам писать так и не дали), после чего я просто дропнул эту контору.

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

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

Наверняка, я как тимлид тоже накосячил много, но я хотя бы понимал, к чему все идет. Но позиция руководства а-ля "это же всего лишь ПХП, вы ПРОСТО пишите код и ПРОСТО добавляйте еще тонну функционала со сроками позавчера" меня убила, никогда такого не видел.
Аноним 19/02/20 Срд 02:07:52 #324 №1607316 
>>1607312
> это даже не функциональщина, это огрызки
Ну я кроме джавы и пыхи ничего толком не знаю, на си - только баловался. Функциональщину в джаву подвезли по принципу "чтоб было как у всех", насколько я помню.

> изоморфное приложение
Я сейчас загуглил, пишут, что это приложение, когда сервер может рендерить фронт. Чо? Пояснишь?
Аноним 19/02/20 Срд 02:10:02 #325 №1607317 
>>1607316
>Запомнился один момент, когда мы под какого-то клиента срочно-срочно перепиливали кусок до глубокой ночи. На утро состояние проекта было такое: старое сломалось, новое работает через жопу, что делать, непонятно, сроки - вчера.

ХАХХАХА, такая жиза
Аноним 19/02/20 Срд 02:10:34 #326 №1607318 
>>1607312
> мутабельном языке
И вот это поясни, пожалуйста. Я понимаю, что такое мутабельный-иммутабельный объект, например, в концепциях того же String/StringBuilder в джавке, но что такое ЯЗЫК?
Аноним 19/02/20 Срд 02:11:18 #327 №1607319 
>>1607316
>Чо? Пояснишь?
просто пример есть некий тяжелый сервис, скриптов много и ты видишь какую нибудь крутилку при загрузке, изоморфное при первом запуске делает это на сервере и отсылает браузеру, который в это время фоново поднимает скрипты и нет лага при запуске, когда страница открылась а скрипты нет.
Аноним 19/02/20 Срд 02:14:08 #328 №1607321 
>>1607319
То есть мы говорим про обычный Server Side Rendering? А почему это называется таким умным словом "изоморфное"?
Аноним 19/02/20 Срд 02:17:52 #329 №1607322 
bvb.JPG
>>1607321
потому что дальше оно работает на клиенте как обычное приложение и на сервере и на клиенте.
>>1607318
я создал список 1 2 3 добавил к нему 4, список не изменился, а функция конж вернула новый список, не меняя старый.
Аноним 19/02/20 Срд 02:19:20 #330 №1607324 
>>1607321
>>1607321
Выдержка с хабра

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

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

Далее он может сформировать полный HTML, отдать какой-то критичный CSS, который необходим только для рендеринга этой страницы, а не, как в случае с SPA, для рендеринга всего приложения, которое может вполне вам понадобиться.

И в конце отдать JS bundle. В этот момент у нас будет собран на клиентской части и поднят фронтенд-клиент, который в свою очередь дальнейшую коммуникацию может осуществлять с бэкенд-сервером предыдущим, допустим, через RESTful API.
Аноним 19/02/20 Срд 02:19:34 #331 №1607325 
>>1606303
Что такое круд? НЕ в первый раз слышу
Аноним 19/02/20 Срд 02:21:30 #332 №1607326 
>>1607325
create read update delete
Аноним 19/02/20 Срд 02:27:26 #333 №1607331 
>>1607324
Я может совсем отупел, но

> котором каждая взятая строка может исполнятся как на сервере, так и на клиенте.

Что это за хуйня. Если буквально, то весь код должен быть написан на JS и бекенд на ноде, блядь? Или я отупел все таки.
Аноним 19/02/20 Срд 02:29:01 #334 №1607332 
>>1607322
> я создал список 1 2 3 добавил к нему 4, список не изменился, а функция конж вернула новый список, не меняя старый.

Ты хочешь сказать, что есть языки, где все объекты иммутабельные или что?.. Я ничего кроме пыхи и джавки не знаю, там ты можешь кодить как хочешь в этом отношении.
Аноним 19/02/20 Срд 02:29:51 #335 №1607333 
>>1607331
тут с картинками https://habr.com/ru/company/oleg-bunin/blog/319038/

Слухайте, мб кто шарит, а какие есть еще подходы для HighLoad?

Ща просто проект взяли, обещают до 10к запросов в день, тип как сделать так чтобы сервак не лег и при этом сбалансировать все(время/производительность), мб статью на хабре или еще что, а то не знаю куда сунуться

Есть пара мыслей про очереди или Round robin DNS(тима зеленая так что накидывайте даже что то очевидное, мб мы этого не знаем)
Аноним 19/02/20 Срд 02:30:20 #336 №1607334 
>>1607331
>JS и бекенд на ноде
нуб трапа
Аноним 19/02/20 Срд 02:31:01 #337 №1607335 
>>1607333
> 10к запросов в день
С каких пор это хайлоад?
Аноним 19/02/20 Срд 02:31:47 #338 №1607337 
>>1607334
Ну я, может быть, по дефолту беру в качестве клиента - браузер. Мы же в пхп треде. В чем подвох, объясняй давай, я спать хочу )))000
Аноним 19/02/20 Срд 02:31:50 #339 №1607338 
>>1607333
>10к запросов в день.
Это очень мало. Даже в минуту это не много. Разве что у вас на каждый запрос выполняется какой-то тяжелейший пиздец.
Аноним 19/02/20 Срд 02:32:03 #340 №1607339 
>>1607335
простите за название, для серваков за 160р это хайлоад
Аноним 19/02/20 Срд 02:32:40 #341 №1607340 
>>1607332
да все объекты иммутабельны, они не меняются, если х = 5 то оно и будет 5, а если ты ниже напишешь что х = 6 то оно просто затрёт предыдущее а не поменяет.
Аноним 19/02/20 Срд 02:34:16 #342 №1607341 
>>1607340
Забавно. Надо посмотреть это будет. А нахуй они так сделали, им память не жалко или что?
Аноним 19/02/20 Срд 02:34:48 #343 №1607342 
>>1607338
по запросу идет поиск по карте, довольно тяжелый, около секунды ответа

то есть, забить, и написать обычный код особо не парясь(сказать купите сервера по мощнее)?
Аноним 19/02/20 Срд 02:35:06 #344 №1607343 
>>1607339
> для серваков за 160р это хайлоад
В смысле, блядь? Хайлоад - это хайлоад. Говно-сервер - это говно-сервер.
Аноним 19/02/20 Срд 02:37:23 #345 №1607344 
>>1607343
не особо шарю, думал что highLoad это просто высокая нагрузка на сервер

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

Аноним 19/02/20 Срд 02:38:53 #346 №1607345 
>>1607344
Нууу... Слушай, ну да, хайлоад - это высокая нагрузка. Только обычно это что-то в духе "100 миллионов обращений в сутки", а не 10к. И речь там идет о том обычно, когда просто добавляя железо (нормальные сервера, а не говно-виртуалки) ты не можешь решить проблему какого-нибудь "узкого места" в своем говнокоде.
Аноним 19/02/20 Срд 02:39:22 #347 №1607346 
>>1607341
у тебе данные еще ни разу не перемалывало просто
Аноним 19/02/20 Срд 02:39:58 #348 №1607348 
>>1607346
Я не понимаю что ты пишешь, постоянно приходится переспрашивать.
Аноним 19/02/20 Срд 02:40:30 #349 №1607349 
yPSkXrhjstk.jpg
>>1607345
оке, спс за инфу
Аноним 19/02/20 Срд 02:41:40 #350 №1607350 
zrwxqL7.jpg
>>1607349
Да, блядь, даже сказать нечего. Что такое нахуй "перемалывало" данные? В мясорубке или что? Ты наркоман, дружище, или пьян или чего?
Аноним 19/02/20 Срд 02:42:53 #351 №1607351 
>>1607349
Ой, не туда, сорре.
Это сюда:
>>1607346
>>1607350

Аноним 19/02/20 Срд 02:43:11 #352 №1607352 
>>1607345
слухай, а можешь просто терминов накидать из области распределения нагрузок(или статью или просто наводочку какую-то), ну тип у меня есть 5 дедиков, как между ними распределить нагрузку например?
Аноним 19/02/20 Срд 02:44:53 #353 №1607353 
>>1607352
Извини, я в этом не разбираюсь. Самый сильный проект, над которым довелось работать, это новостной сайт с 2 миллионами посещений в сутки. И там он спокойно работал на одном (но производительном) физическом сервере вместе с базой данных даже, просто всякие кеширования в nginx были настроены правильно и всё. Мне даже рассказать нечего особо про этот проект, сложных запросов даже не было (select where, update where, пара джоинов, нечего оптимизировать, короче).
Аноним 19/02/20 Срд 02:46:12 #354 №1607354 
>>1607352
Алсо, сейчас работаю над проектом, где как раз около 10к посещений в сутки, он вообще на виртуалке крутится и не пердит, всё окей, хотя накручено там будь здоров (и должно бы уже тужиться, но нет). Так что я хуй знает. Если что найдешь - кидай в тредю.
Аноним 19/02/20 Срд 02:50:52 #355 №1607356 
>>1607350
пишешь ты дурачек распаралливание и тебе нужно колдовать с приоритетом, потоки нужно синхронизировать, данные надо копировать, какие волатилы какие нет, в мутабельности если наебешься они начнут давать кашу и ты будет копать как джамшут ища где ты объебался.
в иммутабельности у тебя вообще нет эти проблем, ни одной блядь, ты просто настраиваешь ссылочные типы, для больших систем или атомы если много не надо и все блядь, и не парится что какой то поток изменит переменную не так или не вовремя и все остальные потоки получат хуйню.
Аноним 19/02/20 Срд 02:51:48 #356 №1607357 
>>1607353
Я стараюсь что то читать, смотерть по этой теме, но реально не работал пока, вот что слышал

Round robin DNS - тип разные выдавать ip адреса
Совать в очередь и оттуда забирать как только обработал и так контролить потоки

Еще про БД - про ноды и репликации

Просто тема интересная и я уверен пригодится, я так то зеленый, тупо третий год на фрилансе сижу какие то конченные проекты выполняю
Аноним 19/02/20 Срд 02:53:29 #357 №1607360 
>>1607356
А, ну примерно понял, ок.
Аноним 19/02/20 Срд 02:54:25 #358 №1607361 
>>1607357
Мы может о разном...
> Round robin DNS - тип разные выдавать ip адреса
А при чем тут хайлоад? Это ж обычный cdn, если я правильно понял.
> Совать в очередь и оттуда забирать как только обработал и так контролить потоки
И какая разница, если у тебя эта очередь под нагрузкой забьется и последний вставший будет ждать 10 лет?
А так да, тема хорошая, изучай.
Аноним 19/02/20 Срд 02:58:21 #359 №1607362 
>>1607361
хых, материала и направления бы кто подкинул
>А так да, тема хорошая, изучай.

Round robin DNS - я так понял, у тебя 3 дедика, а с dns сервера ты просто выдаешь их последовательно, тем самым распределяю нагрузку

CDN просто статику выплевывает по примеру какой нить jquery библиотеки
Аноним 19/02/20 Срд 03:00:08 #360 №1607364 
>>1607362
> Round robin DNS - я так понял, у тебя 3 дедика, а с dns сервера ты просто выдаешь их последовательно, тем самым распределяю нагрузку

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

В общем, чтобы ты совсем обиженный не ушел, загуглил за тебя. Попробуй поискать лекции с этих конф: https://www.highload.ru/
Аноним 19/02/20 Срд 03:02:53 #361 №1607365 
>>1607364
>>1607362
> а с dns сервера
Разница между нами, кстати, в том, что я читал о другой схеме: днс всегда указывает на один сервер, твой. Но уже он следит за нагрузкой и вызывает самый менее нагруженный дедик, где уже реально находится бекенд. Что-то вроде прокси-который-следит-за-нагрузкой. Как организовать - в душе не ебу, только читал.
Аноним 19/02/20 Срд 03:03:29 #362 №1607367 
>>1607364
хах, так это я оттуда это и услышал, там чуваки могут 2 часа тереть что сфинкс лучше эластика, или лекция по снижению нагрузки где чувак очевидные вещи час затирает(по типу не пиши 2 вложенных цикла без необходимости), так что это тоже не панацея от незнания в области хайлоад
Аноним 19/02/20 Срд 03:05:25 #363 №1607368 
>>1607365
а ты не больше времени потеряешь на доставку пакетов, вики вот что говорит:
В простейшем случае Round robin DNS работает, отвечая на запросы не только одним IP-адресом, а списком из нескольких адресов серверов, предоставляющих идентичный сервис. Порядок, в котором возвращаются IP-адреса из списка, основан на алгоритме round-robin. С каждым ответом последовательность ip-адресов меняется. Как правило, простые клиенты пытаются устанавливать соединения с первым адресом из списка, таким образом разным клиентам будут выданы адреса разных серверов, что распределит общую нагрузку между серверами.
Аноним 19/02/20 Срд 03:06:09 #364 №1607369 
>>1607367
Луль. Я вообще лекции не люблю, одна вода обычно и нихуя непонятно и конкретики нет. Я попробовал книги на амазоне глянуть, нихуя нет тоже. В общем, я тоже по этой же причине в свое время забил на хайлоад - слово громкое, а конкретики как-то и не найти.
Аноним 19/02/20 Срд 03:12:32 #365 №1607372 
external-content.duckduckgo.com.jpeg
>>1605860
Прекрати так думоть, сейчас же!
Аноним 19/02/20 Срд 03:18:12 #366 №1607374 
>>1605860
>>1606151
>>1607372
Синдром самозванца. Я уже лет 10 работаю и до сих пор все время жду пинка под зад, но, что характерно, в итоге ухожу обычно сам.
Аноним 19/02/20 Срд 03:18:29 #367 №1607375 
Задачка про клавишу SHIFT.

https://ideone.com/wkR4dA
Аноним 19/02/20 Срд 03:19:39 #368 №1607376 
>>1607375
чо сделать-то надо?
Аноним 19/02/20 Срд 03:21:52 #369 №1607378 
>>1607376
Исправить текст и предложения (Сделать первые буквы в предложений заглавными) и расставить пробелы после знаков препинания.
Аноним 19/02/20 Срд 03:22:32 #370 №1607379 
>>1607378
лол, а мы рандомным кодом делимся ?
Аноним 19/02/20 Срд 03:23:24 #371 №1607380 
>>1607379
Не, просто скидываю ОПу чтобы проверил.
Аноним 19/02/20 Срд 03:25:36 #372 №1607382 
>>1607378
Какой-то дроч ради дроча. Скорее всего ты все это может сделать одной-двумя регулярками.
Аноним 19/02/20 Срд 03:27:08 #373 №1607383 
>>1607382
Я не опытный в регулярках. Потом переделаю когда наберусь ума.
Аноним 19/02/20 Срд 03:28:17 #374 №1607384 
>>1607383
Назови принципы ООП, не глядя в гугл.
Аноним 19/02/20 Срд 03:32:52 #375 №1607385 
А где вообще есть нормальная инфа по регуляркам, а то я читаю документацию на сайтах с онлайн редактором, а на сайтах какая то слишком она базовая, тип чтобы комплексно, я пытался пройти курс теории рег. выражений из теории алгоритмов, но как то не пошло, че то дедок сложно все объяснял?
Аноним 19/02/20 Срд 03:37:37 #376 №1607386 
>>1607384
Что за допрос внезапный? Ну насколько я знаю ООП это исплользование объектов, в которых заключена информация для использования на протяжений всей программы. То есть мы берем объект, в нем вся нужная нам информация которой можно манипулировать.
ООП не знаю. Вот собираюсь изучить.
Аноним 19/02/20 Срд 03:39:21 #377 №1607387 
>>1607386
как можно сделать что то сложнее CLI приложки без ооп?
Аноним 19/02/20 Срд 03:40:54 #378 №1607389 
>>1607386
А, окей. Я уж хотел тебя подловить, но ты вообще дно. Вопрос был наводящий, который должен тебя заставить задуматься, что лучше - дрочить рандомные задачи, которые никому нахуй не нужны или изучать то, что спросят на собеседовании. Удачи.
Аноним 19/02/20 Срд 03:42:01 #379 №1607390 
>>1607387
Действительно, как?
https://github.com/torvalds/linux
Аноним 19/02/20 Срд 03:46:56 #380 №1607391 
>>1607389
Тут спорить нет смысла. Решать задачи обязательно, плевать какие. Они помогают закрепить материал и развивают мышление в этом направлений. Без разницы какие задачи. А если спросят на собеседований о какой то теме я её уже буду знать на автомате.
Мне не нужно получить крутую работу, мне нравится то что я делаю.
Аноним 19/02/20 Срд 03:47:02 #381 №1607392 
>>1607390
ухххх, подловил, ну если придраться, то это тоже CLI.

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


мемас на эту тему, с которого я долго орал https://github.com/torvalds/linux/pull/335

Аноним 19/02/20 Срд 03:51:54 #382 №1607394 
>>1607391
Да хуйня это все. Просто берешь и пишешь проект. Можешь получать тот же кайф, только все навыки будут "боевые", а не абстрактные, непонятно кому нужные.

>>1607392
Ну, ладно, я просто доебался, ты прав, без ООП уже даже не плюнуть никуда, в объект попадешь.
Да, я тоже долго орал с long long :D
Аноним 19/02/20 Срд 04:12:21 #383 №1607400 
>>1607394
Ты меня никак не переубедишь. Понимаешь, я настолько конченный, что решаю это всё в Виме, на который я устанавливал плагины и вручную устанавливал зависимости.
Аноним 19/02/20 Срд 04:12:48 #384 №1607401 
Да что говорить, я даже Вим скомпилировал.
Аноним 19/02/20 Срд 04:13:33 #385 №1607402 
>>1607400
Я занимался этой хуйней, когда мне было 20. Сейчас я использую то, что действительно удобно и не занимаюсь хуйней. Короче, ты не про работу, ты так, дроч для себя, пока родители кормят, я понимаю. Тогда уж лучше учи нормальный язык, а не пхп.
Аноним 19/02/20 Срд 04:16:34 #386 №1607403 
>>1607402
Ну я тебя понял, нужно как то стремиться монетизировать изучая то что используется на рынке, так?
Аноним 19/02/20 Срд 04:20:32 #387 №1607404 
>>1607402
Ты какой то ебаный ноунейм который несет хуйню. Не ебу чего ты добился, но явно не результатов с таким мышлением. Ты наверно один из вкатывальщиков? Что хуево да?
Аноним 19/02/20 Срд 04:21:58 #388 №1607405 
>>1607404
Нет. А вот ты несешь хуйню, это уж точно, вим, хуим. Ебанутый, не?

>>1607403
Если хочешь вкатиться - ясен хуй, надо использовать то, что на рынке. Если не хочешь, то похуй, хоть дрочи вприсядку.
Аноним 19/02/20 Срд 04:24:57 #389 №1607406 
>>1607405
Ну понятно всё с тобой, обыкновенный додик. Заебись вкатился? Как в конторе? Ебут нормально? Как полёт? Сколько таким говнокодерам как ты башляют? Ммм.
Аноним 19/02/20 Срд 04:25:59 #390 №1607407 
>>1607405
Хотя сомневаюсь что ты вообще можешь хоть что-то кодить. Залетыш.
Аноним 19/02/20 Срд 04:27:08 #391 №1607408 
>>1607406
Да все хорошо, спасибо, что спросил. А по поводу вима, был у нас один фронтендер в команде, который работал через вим и считал себя очень крутым, когда на ретро обсуждали вопрос, что неплохо бы иметь единый кодстайл и решили попробовать сделать это через плагины к IDE, всем было смешно и забавно, ему особенно.

>>1607407
Да конечно не могу, расслабься уже, шизик ебаный.
Аноним 19/02/20 Срд 04:30:53 #392 №1607409 
>>1607408
Фу блять, фууу
Аноним 19/02/20 Срд 04:31:52 #393 №1607410 
>>1607409
Орнул. Найс аргументы :) Удачи тебе, шизик, в жизни будет не легко, когда вырастешь.
Аноним 19/02/20 Срд 04:55:59 #394 №1607413 
>>1607410
Господи какой ты дегенерат, пиздец просто.
Аноним 19/02/20 Срд 04:56:18 #395 №1607414 
Есть же такие ебанутые.
Аноним 19/02/20 Срд 04:58:26 #396 №1607415 
>>1607413
> Господи какой ты дегенерат, пиздец просто.
Господи какой ты дегенерат, пиздец просто.
Аноним 19/02/20 Срд 05:11:28 #397 №1607419 
>>1607415
Ты даже не понял где ты обосрался.
Аноним 19/02/20 Срд 05:18:08 #398 №1607422 
>>1607419
> Ты даже не понял где ты обосрался.
Ты даже не понял где ты обосрался.
Аноним 19/02/20 Срд 05:47:09 #399 №1607428 
Почему выдает ошибки неизвестная переменная:

https://ideone.com/OzaZ77
Аноним 19/02/20 Срд 05:51:46 #400 №1607430 
>>1607428
Почитай про области видимости
Аноним 19/02/20 Срд 06:00:59 #401 №1607433 
>>1607428
Переменная $paymentTotal объявлена в цикле for и видно её только там. При выходе из цикла переменная пропадает. Тебе нужно объявить её в теле цикла.
В функций у тебя так же идёт возврат двух значений, после того как выполняется выражение $paymentTotal, следующее за ним выражение return $month пропадает, потому-что за ним успевает первое, которое завершает функцию.
Тебе нужно объявить $paymentTotal в теле функций, либо $paymentTotal = null, либо $paymentTotal = 0.
Почитай как тебе уже сказал анон про области видимости и очередность исполнения. А так же немного про функций.

https://www.php.net/manual/ru/language.variables.scope.php
https://www.php.net/manual/ru/functions.returning-values.php
Аноним 19/02/20 Срд 07:12:52 #402 №1607443 
>>1605671
лол, 15 задач в месяц можно абсолютно бесплатно скидывать на джунов )
Аноним 19/02/20 Срд 07:55:01 #403 №1607448 
unidentifiedobject.png
Аргументом в функцию-обработчик передается только один обьект - $exception. Однако затем происходит обращение к методу на обьекте $e: error_log($e->__toString()). Анон, подскажи, как подобное возможно. Откуда в функции взялся обьект $e?
Аноним 19/02/20 Срд 08:11:34 #404 №1607452 
Блин, как вы заливаете базу данных на сервак?

А то у меня база данных из 5 таблиц, сохранил в файл экспорта SQL - всего 50к строк.
База примитивна - там даже связей нет.

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

Вот сейчас на хостинге при открытии любой базы или таблицы (не только залитой а вообще в том числе старых) пишет ошибки про
Undefined index: HMAC_secret
вот примерно так:
https://pastebin.com/CKbgp94v

Я не понимаю что не так и как теперь исправлять (это на рабочем хостинге - неужели тоже похерило)
Аноним 19/02/20 Срд 09:18:58 #405 №1607489 
>>1607229
часть функционала с пыхи переводят зачастую сейчас на го. связано это с тем что дает возможности которых нет в пхп, а все заново собирать с нуля это не варик
Аноним 19/02/20 Срд 10:15:28 #406 №1607522 
>>1607433
>объявить её в теле цикла.
В теле функций*
>>1607428
Аноним 19/02/20 Срд 10:17:51 #407 №1607524 
Как можно сайтики тестить?
Вот у меня есть ламповая тудушечкавнутри она с mysql работает, и я хочу проверить как оно вообще будет работать при 1000/10000 запросах, сервак xampp на шиндоус.
Пока я только додумался на жс тестик написать чтоб оно само формочки заполняло и кнопочки нажимало.
Аноним 19/02/20 Срд 10:53:31 #408 №1607546 
>>1607448

Это ошибка в коде. Неправильно написано название переменной.
Аноним 19/02/20 Срд 11:22:16 #409 №1607564 
>>1607452
Скорее всего проблемы с конфигурацией БД у тебя на локальной версии и в проде, надо внимательно проверить версии, настройки, доступы. И еще лучше работать через консольные команды: mysql -u username -p database_name < file.sql
Аноним 19/02/20 Срд 11:40:09 #410 №1607593 
>>1607452

Похоже на баг в PhpMyAdmin, попробуй другую версию или другую программу вроде adminer. Или заливать дамп из консоли (если умеешь):

cat /tmp/dump.sql | mysql -hhost -uuser -p database_name

Если дамп сжат gzip:

cat /tmp/dump.sql.gz | gunzip | mysql -hhost -uuser -p database_name
Аноним 19/02/20 Срд 12:06:55 #411 №1607611 
>>1607452
mysqldump -uuser -ppassword db_name > file.sql
mysql -uuser -ppassword db_name < file.sql
Чего ты мучаешься, блядь.
Аноним 19/02/20 Срд 12:07:04 #412 №1607613 
Привет пхп, делал задачку про заглавные буквы и сейчас я не понимаю, как троеточие в регулярку засунуть
https://ideone.com/SY7llL вот мое решение, у которого возникли проблемы
Аноним 19/02/20 Срд 12:18:14 #413 №1607629 
>>1607524
Игнорите...
Аноним 19/02/20 Срд 12:25:19 #414 №1607640 
>>1607524
jmeter
Аноним 19/02/20 Срд 12:56:54 #415 №1607679 
Пиздец, что за шиз ночью тред засрал?
Аноним 19/02/20 Срд 13:11:59 #416 №1607699 
>>1607524

apache benchmark (просто долбит запросы в одну страницу, совсем простая штука)
siege (делает запросы по списку)
Yandex Tank (навороченная штука с админкой): https://yandex.ru/dev/tank/

Должен предупредить, что логично тестировать нагрузку не на windows, а на линукс (обычно сервера на нем работают). Логично тестировать не примитивное приложение, а что-то посложнее и ближе к реальности.

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

Но в общем-то, стоит попробовать, хотя бы чтобы научиться.
Аноним 19/02/20 Срд 13:28:49 #417 №1607723 
поругайте за код и объясните как лучше написать :c

<?php

error_reporting(-1);
header('content-type: text/plain; charset=utf-8');

$text = 'А роза упала на лапу Азора';
$result = '';

$text = mb_strtolower($text);
$text = str_replace(' ', '', $text);
$lenght = round((mb_strlen($text)/2), 0, PHP_ROUND_HALF_EVEN);

for($i = 1; $i <= $lenght; $i++) {
if(mb_substr($text, $i-1, 1) != mb_substr($text, -$i, 1)) {
echo 'это не палиндром... :c';
break;
} else if($i == 10) {
echo 'это палиндром!!1';
}
}

?>

ну или вот https://ideone.com/xrUXeG
Аноним 19/02/20 Срд 14:17:38 #418 №1607816 
8DB3ADB8-7AE9-4D07-BC29-16D83376EE9F.jpeg
Реквестирую помощи.

Короче.
Есть несколько файлов:
1. логин/регистрация
2. список сообщений
3. Страница с формой добавления сообщения.

Все работает, как и должно на стороне php. Но есть один нюанс (как в анекдоте).

Хтмл-формы стакаются, блять, при переходе от файла к файлу.

Залогинился -> форма с логином пропала, показались посты через инклюд ("посты пхп"). Ок.

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

Как сделать?
Аноним 19/02/20 Срд 14:23:32 #419 №1607827 
>>1607816
Самое просто не инклудить форму добавления поста, а с нее редиректить
Аноним 19/02/20 Срд 14:23:57 #420 №1607829 
Screenshot120.png
Нихуя себе блять.
Ковариантность и контрвариантность 600 лет ждал блядь. Сколько я граблей об это говно сломал.

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

Расширения на сиське тоже охуенно.

Предзагрузка тоже пушка.

Блядь, да пых становится прям охуенным языком
Аноним 19/02/20 Срд 14:41:11 #421 №1607853 
>>1607829
Нет бы знак доллара убрать при объявлении переменной.
> стрелочные функции
Как в жс? Делали бы сразу синтаксис в точности как у жс, было б удобнее.
Аноним 19/02/20 Срд 14:47:52 #422 №1607867 

>>1607829
Дай ссылку
Аноним 19/02/20 Срд 15:00:08 #423 №1607895 
Phalcon норм?
Аноним 19/02/20 Срд 15:35:29 #424 №1607931 
>>1607221
> Очевидно же что наебочка и тебе вообще не заплатят
Почему не заплатят? Особенно если
> под "немного знаете" подразумеваются вполне себе знания вкатывальщика
Если что, под стажёром я не имел ввиду работу без оформления, а минимум зп 15к - нельзя разве себе выбрать вкатыша и обучить его за эти деньги? Особенно учитывая, что откликнутся многие, а выберут того, кто уже более менее разбирается.
Аноним 19/02/20 Срд 15:53:53 #425 №1607947 
А ооп для пхп будет таким же, как и для жс? Это же подход к программированию в отрыве от конкретных языков?
Аноним 19/02/20 Срд 16:01:09 #426 №1607955 
>>1607947
В js вроде бы другое ооп чем в пхп.
Аноним 19/02/20 Срд 18:02:44 #427 №1608079 
>>1607955
Там оно хранит ссылку на родителя, прототипное называется
Аноним 19/02/20 Срд 18:04:51 #428 №1608080 
>>1607947
Есть объект, в нем ссылка на радотилея, цепочка может быть длиной .

И когда ты какой-нибудь туСтринг вызваешь он проходится как по списку, до того как не найдёт
Аноним 19/02/20 Срд 19:26:10 #429 №1608123 


>>1607829
>Ковариантность и контрвариантность 600 лет ждал блядь.
Двачую блять
Аноним 19/02/20 Срд 20:22:35 #430 №1608175 
>>1599201 (OP)
Yii2-аноны есть итт? Аноны, есть ли либы/софт для того чтобы все таблицы+связи из дампа постгрис базы превратить в миграции?
Аноним 19/02/20 Срд 20:43:28 #431 №1608217 
>>1608175
Есть какая-то ХзХуйня но я ее не пользовался, так что хуй знает
https://github.com/Hzhihua/yii2-dump
Аноним 19/02/20 Срд 20:51:11 #432 №1608245 
>>1608217
Это находил, но пока что не юзал, последний комит пару лет назад и их количество вызывает опасение, может есть какой-то общепринятый инструмент для таких задач? В любом случае - спасибо за ответ, анон.
Аноним 19/02/20 Срд 20:54:43 #433 №1608265 
>>1607827
Спасибо. Помогло отчасти, но завтра узнаю, в чем были причины.

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

Аноним 20/02/20 Чтв 03:11:19 #434 №1608695 
>>1607723
Всё ок.
Аноним 20/02/20 Чтв 09:40:54 #435 №1608796 
Аноны, помогите. Юзаю Eloquent , без ларавел
Не понимаю как сделать транзакцию.
Без ларавел фасад DB чет не работает. Как сделать транзакцию мож кто знает?
Аноним 20/02/20 Чтв 11:22:23 #436 №1608875 
>>1608796
П.С.
Мне нужна банальная вещь - одним запросом добавить строки сразу в несоколько таблиц. Что бы или все таблы обновились, или откат.
Используя PDO я использовал транзакции.
В Eloquent транзакции по документации доступны из фасада DB ларавел. Я же использую Eloquent отдельно в slim.
И я забуксовал.
Аноним 20/02/20 Чтв 15:08:19 #437 №1609093 
анчоусы, прошу помощи. накидайте советы по тому как мне лучше всего дебажить модель и видеть что в нее прилетает то ? контроллер или представление могу, а вот модели чому то не выводятся если юзаю там print_r();exit();
Аноним 20/02/20 Чтв 15:12:41 #438 №1609096 
>>1609093
Если ты пишешь print_r();exit(); и у тебя не белый экран - значит ты не в том месте пишешь это.

Сначала напиши в начале файла, сразу после <?php что бы узнать инклудится он вообще или нет
Далее погружаешься вниз, пишешь в конструкторе, что бы узнать создается ли вообще данный класс, потом в предполагаемом методе и так далее. Вплоть до нужного тебе if() или строчки.
Аноним 20/02/20 Чтв 15:19:48 #439 №1609099 
Как написать скрипт. Надо чтобы - есть файл, в нем содержимое. Надо сделать например 1к таких же файлов, только нужно нужное название файла и желательно чтобы контент был как-то рандомизирован. И все это надо на серваке.
Аноним 20/02/20 Чтв 15:58:17 #440 №1609153 
>>1609099
Сделай через system
Например for на нужное кол во
system(cat /dev/urand >$ i.txt)
Аноним 20/02/20 Чтв 16:07:36 #441 №1609176 
>>1608875
Сам разобрался.
Аноним 20/02/20 Чтв 16:08:31 #442 №1609177 
>>1609093
Exeption помогают.
Аноним 20/02/20 Чтв 16:41:37 #443 №1609207 
>>1609096
ну вот я обычно и занимаюсь таким реверс инженирингом. но чет нихуя не выходит пока что сейчас лел. надо просто переписать api, и он плотно зашит в стандартные системные файлы. и вот хуй знает как его искать и где че вызывать.

>>1609177
расскажи поподробней. не очень понял тебя
Аноним 20/02/20 Чтв 17:09:21 #444 №1609225 
>>1609207
var_dump(get_included_files());
Аноним 20/02/20 Чтв 18:41:45 #445 №1609277 
>>1609176
Запости решение, мб кому будет интересно.
Аноним 20/02/20 Чтв 18:53:20 #446 №1609287 
>>1607895
Предлагали ваку в ТОРе с фалконом?
Аноним 20/02/20 Чтв 18:58:01 #447 №1609290 
>>1609093
xdebug + phpstorm
Аноним 20/02/20 Чтв 19:33:31 #448 №1609320 
Пацаны, а есть ли в ПХП аналог innerHTML из JS, чтоб обновлять инфу, не перезагружая страницу? Пусть и с задаваемой периодичностью (было ы весьма удобно).
Аноним 20/02/20 Чтв 19:41:40 #449 №1609330 
>>1607374
Почему уходишь?
Аноним 20/02/20 Чтв 19:50:00 #450 №1609352 
для-вайпа.jpg
>>1599201 (OP)
Анон, не будь терпилой!
Аноним 20/02/20 Чтв 21:09:47 #451 №1609474 
>>1609320
>обновлять инфу, не перезагружая страницу
Нет. Только если по Ajax подтягивать обновлённую инфу.
Аноним 20/02/20 Чтв 22:36:50 #452 №1609614 
>>1609290
Пхп это серверный блять язык. Что за хуйню ты несёшь? А к базе данных из браузера через джаваскрипт подключаться не хочешь?
Аноним 20/02/20 Чтв 22:55:36 #453 №1609644 
>>1609614
> А к базе данных из браузера через джаваскрипт подключаться не хочешь?
Хипстеры уже додумались до такого в своём Firebase.

мимо
Аноним 21/02/20 Птн 01:37:02 #454 №1609784 
Нужно ли знание линукса пхп разработчику? Стоит ли вкатиться, или нет?
Аноним 21/02/20 Птн 01:57:05 #455 №1609804 
Jj
Аноним 21/02/20 Птн 02:46:51 #456 №1609820 
>>1609644
это просто сервер в облаке, к базе данных подключается сервер по запросу
Аноним 21/02/20 Птн 02:46:52 #457 №1609821 
>>1609352
Иди нахуй отсюда, даун.
Аноним 21/02/20 Птн 06:34:25 #458 №1609860 
>>1609784
Работать с командной строкой надо уметь, так как порой возникает необходимость в конфигурировании веб-серверов, большая часть которых работает на ОС Linux. Если у тебя стоит винда, можешь 2 ОС поставить себе Kubuntu, и учиться писать код пхп в ней.
Аноним 21/02/20 Птн 06:59:17 #459 №1609864 
>>1609860
>Kubuntu
Иди нахуй с такими советами.
Аноним 21/02/20 Птн 07:43:33 #460 №1609875 
>>1599201 (OP)
Есть API, которое выдает товарные фиды в виде XML и JSON. Необходимо брать эти данные, нормализовывать, и потом ложить в базу. Как лучше такое выполнять, что использовать? Ни разу с таким не сталкивался. Еще проблема в том, что данных очень много. Нужно как то фильтровать. Или пилить админку, чтобы можно было выбирать какую часть фида загружать. Как вообще в PHP работать с XML и JSON?
Аноним 21/02/20 Птн 10:23:36 #461 №1609949 
>>1609614
Дебажишь прямо на продакшене?
Аноним 21/02/20 Птн 12:12:50 #462 №1610044 
Налетайте

https://career.habr.com/vacancies/1000055798
>150.000 руб (Middle) и 200000 руб (Senior)
Аноним 21/02/20 Птн 12:29:11 #463 №1610069 
>>1609875
Json делается так:
1. Через курл или файл гет контент грузишь контент.
2. Затем jsondecode и работаешь как с объектом
Аноним 21/02/20 Птн 14:50:39 #464 №1610243 
>>1609875
такая же проблема, анон. только вот мне наоборот со сторого api который работает через xml как раз надо перевести на новый, который как раз на json. легче было бы с нуля написать, но нет же, заказчику нада чтобы старый перелопачивали
в итоге сижу целую неделю ниче не написал и толком не выяснил как эта залупа работает. хуй знает че делать и как ловить. все раскидано по файлам и что то идет с пхп файлов, что то с js, что то блять вообще с <script type=text/html>
я отчаился, анонсы
Аноним 21/02/20 Птн 15:32:51 #465 №1610306 
Пацаны, добрый вечер в хату. Подскажите, пожалуйста, можно ли не через композер, а архивом (как, например, вордпресс) установить Laravel на хостинг?
Аноним 21/02/20 Птн 16:59:53 #466 №1610389 
>>1610069
Пасиб

>>1610243
Собери в кучу все и выполняй нормализацию. Мне как бы тоже самое предстоит делать. Только я пока с xml и json вообще не работал.
Аноним 21/02/20 Птн 17:01:27 #467 №1610390 
>>1609875
Чем плох https://www.php.net/manual/ru/simplexml.examples-basic.php
Аноним 21/02/20 Птн 17:02:42 #468 №1610392 
>>1610306
Почему нет? Только это неудобно.
Аноним 21/02/20 Птн 17:03:52 #469 №1610393 
>>1610390
Не знаю. Пока только вникаю что к чему. Спасибо, гляну.
Аноним 21/02/20 Птн 17:34:01 #470 №1610427 
>>1610392
А как это сделать? Скачать архив с фреймворком и просто залить на хостинг через файловый менеджер я правильно понимаю?
Аноним 21/02/20 Птн 17:39:27 #471 №1610434 
>>1610427
Обычный виртуальный хостинг с доступом через панель?
Аноним 21/02/20 Птн 19:06:10 #472 №1610524 
Знает кто аналоги acmp.ru для PHP? Ну чтобы задачки решать.
Аноним 21/02/20 Птн 19:18:30 #473 №1610532 
>>1610524
Не язык определяет программиста. Попробуй написать обычные задачи
Аноним 21/02/20 Птн 19:35:47 #474 №1610550 
>>1610532
??? Acmp удобен тем, что там есть проверяющая система, есть рейтинг. Просто в стол писать не интересно.
Аноним 21/02/20 Птн 19:42:33 #475 №1610558 
>>1610524
codewars?
Аноним 21/02/20 Птн 20:26:37 #476 №1610609 
>>1610434
Да free-хостинг от бегет
Аноним 21/02/20 Птн 21:16:47 #477 №1610675 
>>1610558
>codewars?
Не нравится. Интерфейс неудобный, русского языка нет, задачи не совсем олимпиадные.
Аноним 21/02/20 Птн 21:19:16 #478 №1610677 
>>1610609
http://cccp-blog.com/laravel/laravel-ustanovka
Аноним 21/02/20 Птн 22:25:30 #479 №1610760 
>>1610550
Скидывай нам свой код и ссылку на задачу. Я буду писать почему ты говноед
Аноним 22/02/20 Суб 00:02:42 #480 №1610902 
>>1609330
Всегда что-то идет не так. То фирма теряет бабки и предлагает урезать ЗП, то меняется начальство на неадекватов, то ищется работа получше, а то меня заебывает работать в офисе.
Аноним 22/02/20 Суб 00:13:30 #481 №1610912 
>>1610675
>русского языка нет
Сударь, вы зажрались

>задачи не совсем олимпиадные
Причем тут php? Олимпиадники на питоне пишут
Аноним 22/02/20 Суб 00:32:08 #482 №1610930 
Давайте пилить свои прохладные по собесам - кто, на чем запоролся, кого, в какой позе имели.
Меня вот эйчарка обоссала за то, что я до 30 лет ни разу официально не работал, а потом тимлид засмеял, когда я не смог быстро на бумажке написать обход дерева в ширину с выводом вершин по уровням. Уже потом, идя домой обоссаный и осмеянный, понял, что задача для 3-го класса.
Аноним 22/02/20 Суб 02:48:24 #483 №1611041 
>>1610930
да нахуй ты себя так приложил
Аноним 22/02/20 Суб 02:52:05 #484 №1611042 
Посоны, вот в JavaScript есть такая охуенная вещь облегчающая написание скриптов как JQuery, а какая на этом же уровне альтернатива идёт для написая кода в PHP? Чтобы так же удобно и покайфу обращаться к формам, DB и вообще к всяким готовым ништякам тупа так же в 1 строчку решая большинство задач, посмотрел для начала Laravel и чёто меня блевать потянуло от того как там всё уёбищно и измучено по сравнению с ванильным кодом, ещё и помимо виртуального сервера нужно кучу дерьма и консоль ставить

В общем какая лучшая паралель jquery есть на php? Для написая простых задач и скриптов, а не ебли с сложными сайтами с нуля, чисто чтобы баловаться приятными ништяками для себя и надрачивать как ты удобно сделал считая себя сверхразумом являясь дауном учитывая что такие задачи у остальных не занимают даже 1% напряга мозга
Аноним 22/02/20 Суб 07:09:41 #485 №1611109 
>>1610760
Смотри сам не обосрись, умник.
Аноним 22/02/20 Суб 07:11:17 #486 №1611110 
>>1611042
>консоль ставить
Какую консоль?
Аноним 22/02/20 Суб 07:13:31 #487 №1611111 
>>1611042
>Посоны, вот в JavaScript есть такая охуенная вещь облегчающая написание скриптов как JQuery, а какая на этом же уровне альтернатива идёт для написая кода в PHP?
JQuery создавался для того, что один код работал в разных браузерах. В то время код для разных браузеров отличался.
Аноним 22/02/20 Суб 10:24:55 #488 №1611216 
>>1611042
>Чтобы так же удобно и покайфу обращаться к формам, DB и вообще к всяким готовым ништякам тупа так же в 1 строчку решая большинство задач
Но ведь это и есть Laravel, чем не понравился тебе?
Аноним 22/02/20 Суб 12:36:51 #489 №1611313 
Идиотский вопрос, но вот "установка" ларавеля это по сути скачивание архива с исходным кодом блог аппа и подтягивание зависимостей, верно? А когда я собственно говоря уже сто тыщ изменений внес в сорцы, то тогда "установка" моего проекта это получается скачивание моего измененного разросшегося кода блог аппа без папки вендор, и последующая установка зависимостей композером?
Аноним 22/02/20 Суб 12:39:05 #490 №1611315 
>>1611042
Если хочешь писать как на ванильной пыхе, то попробуй CodeIgniter, очень тупой и прямолинейный фреймворк
Аноним 22/02/20 Суб 12:43:51 #491 №1611317 
>>1611313
В общем да. Плюс база, сервисы (если используешь, типа редис, еластик) и подобное.
Аноним 22/02/20 Суб 13:47:10 #492 №1611348 
>>1611110
Ну терминал

>>1611111
Но ведь как он охуенно сокращал код, и синтаксис понятный и приятный

>>1611216
>>1611315
Я мягко сказать был в шоке, почему просто нельзя скачать директорию с модулями и подключать нужные, почему нужно качать тонну говна которая скачает ларавел с ещё большей тонной говна и потом в этой тонне говна бегать по тонне файлов и что-то там создавать, то что они называют конструкторами, блять, сука, даже чтобы просто страницу создать, нужно для неё прописать url и шаблон в разных и отдельных файлах, что это бля вообще за хуйня, в общем нужно что-то простое для написания типа парсеров, ништяков для сайта, а не ебучего комбайна из тонн костылей с ужаснейший вырвиглазным синтаксисом, без всех этих еблей с кучей дерикторий и непонятных тонн файлов

Я правильно понимаю, сейчас всё пришло к тому что вся работа возложена на браузер пользователя? Сервер отдаёт только каркас страницы и джейсон с данными, а уже браузер тонной библиотек парсит его и вставляет в по сути пустую страницу, типа сняли нагрузку с серверов, отдав им только работу с бд, и то этйо бд управляет ещё тонны говна с костылями которые они называют вмс и хвалят за скорость написания, по сути просто накладывая на чистые js и php тонны уродского синтаксиса их фреймворков чтобы быстрее высрать говно, спихнуть это под видом технологий лошку клиенту и съебаться в туман насрав что это куча костылей и говна которые неоптимизированы от слова совсем, пример сейчас это ютуб и твич, где у тебя грузится просто фон и уже куча скриптов на скрипте начинают верстать страничку и всё это дерьмо логает если у тебя не компьютер хотя бы старее 2017 года
Аноним 22/02/20 Суб 13:49:34 #493 №1611353 
>>1611348
>конструкторами
контроллерами
fix.
Аноним 22/02/20 Суб 13:55:55 #494 №1611363 
>>1611348
>сняли нагрузку с серверов
Нет, дело в том, что браузерный клиент давно перестал быть единственным. Чистые апишки пилятся для взаимодействия с любым клиентом. При этом сср нужен самим фронтам, хоть и костыльно выглядит на первый взгляд (и на второй тоже). Причины, правда, не то чтобы критичные были, но уж пусть так. Кроме того это дело все кешируется насколько может. Нагрузка на бек важна конечно, но сср там малую роль играет.

Из всего тобой сказанного - тебе нужен вротпресс.
Аноним 22/02/20 Суб 14:03:31 #495 №1611374 
>>1611363
>вротпресс
Это понятно, но хочется для себя для удовольствия пописать всякие ништяки не находясь на вордпрессе, да даже просто на локальном сервере например парсер написать, на чистом php не то, слишком выгвиглазно, а увидев все эти структуры и взаимодействия этих костылей на том же ларавеле просто блевать хочется а не писать, по этому и захотелось найти что-то типа jquery на js, но только для php, чтобы так же логично, красиво, просто и удобно
Аноним 22/02/20 Суб 14:12:22 #496 №1611387 
>>1611374
Тебе зря так кажется.
Если хочешь либу для парсинга/работы с DOM на пхп, то SimpleDOM может подойти. Древний он правда.
https://github.com/ziadoz/awesome-php#scraping
В этой секции еще можешь глянуть.
>так же логично, красиво, просто и удобно
Жиквери не является образцом логики, простоты и удобства. Недаром сейчас предпочитают при прочих равных писать просто на ваниле. Сейчас жиквери - рудимент.
>логично
Логики там не нужно. Это же библиотека, она ни на что такое не претендует. В давнее время упрощалась работа, но сейчас это уже лишнее. ты даже не представляешь насколько.
>красиво
Красоты тоже нет никакой. В самом лучшем случае становится чуть меньше кода, чем на ваниле, но он красивым от этого не становится.
>простоты
Вот это мб. Совсем не умея в ванилу вкатывались ведь предки нынешних фронтов в живквери. Значит простая.
Аноним 22/02/20 Суб 14:38:01 #497 №1611416 
>>1611348
Тогда slim посмотри. Из коробки тупо роутер, все нужное тебе подключаешь сам.
Аноним 22/02/20 Суб 14:39:02 #498 №1611419 
>>1611416
Слим наоборот для тех, кто понимает что делает и как это готовить.
Аноним 22/02/20 Суб 15:16:39 #499 №1611452 
>>1611387
>>1611416
Спасибо за ссылки, уже что-то, поизучаю.

>>1611387
>Жиквери не является образцом логики, простоты и удобства
Ну почему же, $("#2ch").click(function()) логичнее, красивее и удобнее же чем document.querySelector("#2ch").onclick = function()
Или $.getJSON("2ch.json", function()) чем ебаться с громадным XMLHttpRequest, не буду даже его рассписывать

Вот и хочется нечто подобное охуенное для сокращения и PHP
Аноним 22/02/20 Суб 15:20:24 #500 №1611455 
>>1611452
>чем ебаться с громадным XMLHttpRequest
fetch погляди.
>$("#2ch").click(function()) логичнее, красивее и удобнее же чем document.querySelector("#2ch").onclick = function()
Чуть короче и что еще?
Аноним 22/02/20 Суб 15:26:27 #501 №1611458 
>>1611455
На fetch пока не смотрел бы, так как многие до сих пор деревянными браузерами пользуются

Это ленивые премеры были, попробуй например сделать на ваниле скрипт вкладок и на jq, он будет в разы приятнее и короче на jq, не суть, я просто ищу что-то подобное для php, или ты намекаешь что проще писать на чистом php, так как текущие фреймворки все вырвиглазное дерьмо с помойнейшим синтаксисом для макак пушечного мяса
Аноним 22/02/20 Суб 15:36:47 #502 №1611464 
>>1611458
>проще писать на чистом php, так как текущие фреймворки все вырвиглазное дерьмо с помойнейшим синтаксисом для макак пушечного мяса
В некотором смысле да, но тебе я не это пытаюсь сказать точно. Странно, что ты реально простым фреймам так противишься, где очень многое уже сделано за тебя.
>На fetch пока не смотрел бы, так как многие до сих пор деревянными браузерами пользуются
Полифилы решают. Ну и если уж прямо говорить - ты зачем к жиквери в 2020 прилип? В наше время цветут вью, реакт и ангуляры всякие. Они гораздо мощнее, проще и выразительнее будут, чем либа с декораторами над ванилой.
Аналогия жиквери и чистого пхп даже ближе, чем ты думаешь.
Аноним 22/02/20 Суб 15:45:23 #503 №1611473 
>>1611042
ASP.NET MVC Framework с Entity Framework
Аноним 22/02/20 Суб 15:50:57 #504 №1611477 
>>1611464
>простым фреймам так противишься
Я просто ужаснулся увидев то как делают сайт на ларавеле, это просто бездушно, никакой ламповости, в общем после всего увиденного сложить ощущение что все просто хотят всё свалить друг на друга, фрот на бек, без на фронт, и в итоге этого перекладывания ответственности получается просто дерьмище, доходит просто до какаго-то маразма и уродования языкаи без того уродливого

Все эти вью, реакт и ангуляр как минимум просто противоречат и не дружат с SEO как минимум, вся твоя страница превращается просто в фейк, а весь сайт в одностраничник, где всю работу переложили на фронт и железо пользователя, грузя данные и верстая всё находу, в что-то мерзкое и лагучее
Аноним 22/02/20 Суб 15:56:32 #505 №1611486 
>>1611477
>не дружат с SEO как минимум
Как раз для этого есть специально придуманный сср спа приложений.
В остальном минусов нет, кроме большей сложности разработки, но это мало кого уже волнует.
>делают сайт на ларавеле
На фреймах писать можно вообще по разному. Хотя это не слишком очевидно из концепции, но так оно и есть. Я вот видел сайты на ларке, где в каждом эндпоинте die юзался и прочая мимофреймовая херня. Ну красота, чо. Зато на ларочке няшечке. И такого полно везде.
Аноним 22/02/20 Суб 17:23:15 #506 №1611557 
>>1611042
Пиши на ваниле и не выебывайся.
Только далеко ты не уедешь без либ и фреймов
Аноним 22/02/20 Суб 19:20:37 #507 №1611704 
>>1604086
>Если попробовать обобщить это, то можно придумать такую функцию: пусть она получает на вход массив с >зафиксированными значениями на кубиках слева.
Но в примере твоей функции, она получала на вход пустой массив

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

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

Почему функцию , которые ты описал работает с 2 значениями в массиве, мы же рассматриваем 3 кубика

>Попробуй написать такую функцию, или напиши, если что-то непонятно.
Ну вообщем , при моих оставшихся вопросах получилось как-то так https://ideone.com/JPEs7m , нормально ли ? Тут есть проблема , в том , что по завершении вызовов функции с массивом одного и двух значений при 3 кубиках, допустим:
generateCombinations(3, [1]) и generateCombinations(3, [1,1]), эти массивы тоже у меня бы выводились , если бы я не написал условие if (count($values) == $n) . Коментарии, которые с 21 по 33 строчку это я оставил для себя

>Есть еще другой способ вывести все комбинации без рекурсии.
Решил вот так https://ideone.com/AyUsGV , нормально ? Программа сама заканчивается по завершению циклу , но у меня возник вопрос, а если бы я захотел остановить цикл при значениях [5, 5, 5,] , при этом перебор остается осуществляться до [6,6,6], но я его как-бы останавливаю на других значениях , как лучше это было бы сделать, я в комментариях оставил свой вариант через array_filter и функцию stop , и просто с помощью цикла
Аноним 22/02/20 Суб 20:00:03 #508 №1611731 
Аноны, подскажите, не понимаю как правильно работать с базой данных. А точнее логику работы с соединением к БД.
Я подключаюсь к БД с помощью eloquent и capsule.
В пхп после выполнения скрипта соединение обрывается? Или каждый раз при обращению к базе создается подключение, которое если явно не закрыть - повисает?
Поясните пожалуйста за соединения с БД
Аноним 22/02/20 Суб 20:16:02 #509 №1611750 
Я php джун без знаний и опыта, уже почти месяц откликаюсь на вакансии, делаю тестовые, хожу по собеседованиям, порой меня даже хвалят, но до сих пор ни одного оффера. Меня скоро выпрут из общаги, бабки заканчиваются, а я даже к родителям не смогу уехать, они не могут меня больше содержать. Я уже было совсем приуныл, вакансии почти закончились, новых нет, молюсь Богу каждый день.
И тут короче мне дают тестовое найдите ошибки в 27 строчках, а там ошибки типа ';' вместо ',' написано и прочее, для даунов на 15 минут. Сделал я его, пригласили на собес, иду весь трясусь нервничаю, захожу зажусь, а hr мне после пары вопросов про мою общительность и дальность от дома говорит: "ЭЭЭ, ну вообщем, приходи во вторник, зарплата 40к, официально. " И я просто охерел тогда, сидел не знал что сказать. Просто без собеса без ничего. Одно тестовое на 15 минут. А в других конторах ебали только так и не взяли.
Теперь получается моя жизнь спасена, я успешно вкатился, бабки не проблема, думаю теперь о будущем.
Аноним 22/02/20 Суб 20:18:22 #510 №1611752 
Если я создам код внутри рамки по типу:
<фрейм>
<? некоторый кот ?>
</фрейм>

К примеру, там будут данные из БД и их надо время от времени проверять.

И сделаю кнопку для перезапроса инфы к коду внутри фрейма, то она будет обновлять данные в рамке, или все равно придется обновлять всю страницу?

Мне уже тут говорили за ajax, но у меня свой путь шиноби возник интерес именно к такому способу. Сработает ли?
Аноним 22/02/20 Суб 21:27:37 #511 №1611888 
>>1611750
Рандомное волконогокормление.
Аноним 22/02/20 Суб 21:30:59 #512 №1611895 
>>1611888
Не понял? Что это
Аноним 22/02/20 Суб 21:34:46 #513 №1611901 
>>1611888
п.с. рад за тебя. Сам некоторое время назад интереса ради откликнулся в одну конторуна реакт + нода. Сходил пообщался , дали тестовое,сделал как смог. В ответ на почту скинули что тестовое принято. И запланируют встречу с гендиром. Через пару недель пригласили, пообщался с их гендиром. Он приятное впечатление оставил. По итогу предложили месяц оплачиваемой стажировки, и если продолжим - то 70к зп. А я в основном на пхп пишу, и не пипец опытный. Да и на вакансию откликнулся потому что нода интересна, и я с ней немного пердолюсь. А так у меня и сейчас есть работа, которая оч уютная и хорошая.
Тестовое - что то типа фуллстак тудухи - морда реакт, бек на ноде.
Аноним 22/02/20 Суб 21:35:44 #514 №1611905 
>>1611895
А то что нужно ходить на собесы, делать тестовые , и подскакивать кабанчиком.
Что тот аноны если он не ты совершенно правильно и делал.
Аноним 22/02/20 Суб 21:42:58 #515 №1611919 
>>1611901
Я может тоже потом перекачусь во фронт/фуллстек. А то что-то php-шникам намного меньше платят.
Аноним 22/02/20 Суб 22:37:19 #516 №1612009 
>>1611901
>70к
ДСье?
Аноним 22/02/20 Суб 22:58:23 #517 №1612033 
>>1612009
Нет, регион, ближе к югам.
Аноним 22/02/20 Суб 23:21:28 #518 №1612055 
>>1611919
Скорее просто ниша для начинающих не самая денежная. Небольшие сайтописательские конторы.
Аноним 23/02/20 Вск 00:48:15 #519 №1612163 
>>1612055
php сеньеры получают в среднем на 20к меньше java и javascript синьоров
Аноним 23/02/20 Вск 01:04:13 #520 №1612170 
>>1611750
Поздравляю. Как-то так оно и случается.
Аноним 23/02/20 Вск 01:05:17 #521 №1612171 
>>1611752
>Сработает ли
Возьми, да проверь. Руки отсохнут пару строк написать, да код запустить?
Аноним 23/02/20 Вск 10:43:23 #522 №1612300 
>>1611752
Во фрейме у тебя находится отдельная страница.
someApprentice !EaaiHmIJms 23/02/20 Вск 13:32:59 #523 №1612400 
2020-02-19-09:27:361920x1080-screenshot.png
https://github.com/someApprentice/Crypter

Написал часть кода с шифрованием и использованием библиотеки openpgp.js. Приложение получилось нагруженным, и на дешифровку нескольких сообщений сразу (например при подхвате связки из 20 сообщений с бэкенда) уходит от 4 до 8 секунд. Это не очень userfriendly, и я принимаю решение создать секретные чаты, как в телеграме — только в них сообщения будут шифроваться, и они будут создаваться по запросу пользователя.

Изначально я хотел шифровать приватный ключ хэшом (SHA-512) от пароля и сохранять его в локальном хранилище под ключом shadow, и затем дешифровать им приватный ключ каждый раз при инициализации приложения, а ключ сохранять в памяти. Но выяснилось, что дешифрованый ключ переведённый в ASCII-armor имеет другую структуру/контент в отличие от зашифрованного. Поэтому, я принял решение шифровать ключ простым паролем и просто сохранить дешифрованный ключ в IndexedDB при залогинивании.

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

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

User:
uuid,
email,
name,
hash,
private_key,
public_key,
revocation_certificate,
last_seen

// Нужно добавить ещё urlname, которое будет уникальным идентификатором пользователя по URL запросу (прим. @alice).

// Может быть ещё нужно добавить поле online: BOOLEAN


Conference:
uuid,
updated, // время когда конференция последний раз обновилась (появилось новое сообщение)

// Нужно добавить поле type: ENUM('private', 'public', 'secret')

// Нужно добавить поле last_message, чтобы в интерфейсе можно было вывести его, а так же чтобы можно было отсортировать их по последнему сообщению, а не по колонке update. Колонку update можно будет удалить.


// Содержит в себе ссылки на конференции для каждого пользователя.
// Она нужна чтобы у каждого пользователя была своя "копия" конференции. Или можно сказать своё представление конференции, т.к. она содержит специфичную для каждого пользователя информацию (такую как количество непрочитанных сообщений или количество сообщений в общем конкретно для этого пользователя)
// Изначально идея создания этой таблицы была, то что пользователь может удалить отдельно для себя эту конференцию, а у его собеседника она останется. (В популярных мессенджерах это так и работает — можно удалить конференцию либо только для себя, либо и для собеседника тоже, т.е. конференция и все сообщения в ней удаляться вообще.)
Conference_Reference:
uuid,
user,
conference,
participant, // Ссылка на собеседника, в случае приватной конференции, для публичных это поле остаётся пустым. Нужна чтобы получить конференцию по собеседнику за 1 запрос и является денормализацией (см. ниже таблицу Participants)
unread // Количество непрочитанных сообщений у данного пользователя
count // Количество сообщений в общем для данного пользователя. (Ведь сообщения, так же как и конференции, можно удалять как и только для себя, так и вообще)

// Таблица всех получателей для определённой конференции. Изначально создавалась для публичных конференций где количество получателей больше 2-ух, а для приватных, она осталась как представление конференции из всего лишь 2-ух собеседников. Для приватных конференций можно опустить.
Participant:
uuid,
conference,
user


Message:
uuid,
author,
readed
date,
type: ENUM('text/plain', 'audio/ogg', 'video/mp4') // Либо текстовое, либо голосовое, либо видео сообщение
content: TEXT // Содержит либо простой текст для текстового сообщения, либо URL на медиа-файл для голосового/видео сообщения
consumed: BOOLEAN // Определяет было ли прослушано/просмотрено аудио/видео сообщение
edited: BOOLEAN // Было ли отредактировано сообщение
readed_at: TIMESTAMP WITH TIMEZONE // Определяет когда сообщение было прочитано и нужно чтобы получить все прочитанные сообщения в момент когда клиент был в офлайне, чтобы обновить их локальном хранилище

// Нужно добавить поле edited_at


// Тоже самое что Conference_Reference (т.е. имеет ту же идею под собой)
Message_Reference:
uuid,
conference, // Нужно перенести в таблицу Message
user,
message


Message_Attachment:
uuid,
type: ENUM('image', 'audio', 'video', 'file', 'forwarding', 'reply'), // Либо изображение, аудио, видео, файл, пересылка сообщения, либо ответ на сообщение
message,
src // Содержит либо URL на файл для изображений/аудио/видео/файлов, либо uuid сообщения для пересылки/ответа


Какие запросы нужно выполнить:

1. Получить последние 20 Конференций для конкретного пользователя, вместе с последним Сообщением и вместе с Получателем если есть (в случае приватной конференции), и вместе с Получателями в случае с публичной конференции:

SELECT
conference.uuid,
conference.updated
conference_reference.unread,
conference_reference.count,
participant.uuid AS participant_uuid,
participant.name AS participant_name,
participant.urlname AS participant_urlname,
participant.public_key AS participant_public_key,
participant.last_seen AS participant_last_seen,
m.uuid AS last_message_uuid,
m.author AS last_message_author,
m.readed AS last_message_readed,
m.date AS last_message_date,
m.type AS last_message_type,
m.content AS last_message_content,
m.consumed AS last_message_consumed,
m.edited AS last_message_edited,
m.readed_at AS last_message_readed_at,
m.updated_at AS last_message_updated_at,
ps.uuid AS participants_uuid,
ps.name AS participants_name,
ps.urlname AS participants_urlname,
ps_public_key AS participants_public_key
ps.last_seen AS participants_last_seen
FROM conference
INNER JOIN conference_reference ON conference.uuid = conference_reference.conference
INNER JOIN user AS participant ON conference_reference.participant = participant.uuid
INNER JOIN message AS m ON conference.last_message = m.uuid
INNER JOIN participant AS pu ON pu.conference = conference.uuid
INNER JOIN user AS ps ON pu.user = ps.uuid
WHERE conference_reference.user = :uuid
ORDER BY conference.updated DESC;

Такой запрос вернёт количество строк равный количеству Конференций помноженных на количество Получателей. pic-1. Как сделать лимит на первые 20 конференций, а не на первые 20 строк (при условии что используется Doctrine)?


2. Получить Конференцию по Получателю, вместе с получателем.

Примерно такой же запрос, только выборка будет WHERE conference_reference.participant = :uuid.

3. Получить последнее 20 Сообщений для определённой конференции для конкретного пользователя, вместе с конференцией и автором.

Doctrine и DQL конечно же упрощают написание таких больших запросов как я написал выше, поэтому я напишу его:

SELECT m
FROM Crypter\Entity\Message m
INNER JOIN Crypter\Entity\MessageReference mr WITH m.uuid = mr.message
WHERE m.conference = :conference AND mr.user = :user
ORDER BY m.date DESC

4. Получить первые 20 непрочитанных Сообщений для определённой конференции для конкретного пользователя, вместе с конференцией и автором.

Примерно такой же запрос, только выборка будет помимо прочего ещё и по полю readed и author:

...AND m.readed = FALSE AND m.author != :user.

5. Получить первые 20 Сообщений начиная с данного таймстампа (получить новые сообщения), для определённой конференции для конкретного пользователя вместе с конференцией и автором

Примерно такой же запрос как и в 3-ем запросе только добавляется ещё и выборка по дате: ...AND m.date > :date

6. Получить последние 20 Сообщений начиная с данного таймстампа (получить старые сообщения)... -//-

Такой же запрос только наоборот: AND m.date < :date

7. Получить все прочитанные Сообщения с определённого момента.

Такой запрос нужно чтобы обновить локально сохранённые сообщения (в IndexedDB), которые были прочитаны пока клиент был в офлайне.

SELECT m
FROM Crypter\Entity\Message m
JOIN Crypter\Entity\MessageReference mr WITH m.uuid = mr.message
WHERE mr.user = :user AND readedAt > :date
ORDER BY m.date DESC


Думаю, что нормализованная структура определена и осталось её оптимизировать. Пожалуйста, научите меня этому.
Аноним 23/02/20 Вск 13:58:32 #524 №1612440 
15812237674180.png
>>1612400
Аноним 23/02/20 Вск 14:00:23 #525 №1612445 
>>1599205

Я вижу, появилась папка public. Это хорошо. Если это еще не сделано, то стоит сделать ее корневой папкой веб-сервера (чтобы DocumentRoot указывал на нее), чтобы из браузера в принципе нельзя было обращаться к файлам за ее пределами. Стоит также это упомянуть в README, можно даже вставить туда нужный кусочек конфига сервера. И перенести в папку файл htaccess.

> `studentLocal` enum('l','n') NOT NULL COMMENT 'l - local, n - not local

Можно было использовать строки local/nonlocal вместо букв ради читабельности. Они будут занимать в базе ровно столько же, так как ENUM хранит в таблице номер выбранного варианта, а не сам текст.

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

> studentName

Обычно не стоит добавлять в поле название таблицы. Вот, если что, SQL guide, где даются рекомендации по названиям: https://www.sqlstyle.guide/ru/

> ini_set('display_errors', 1);

Это лучше убрать, так как на продакшене требуется отключать вывод на экран. Лучше перенести настройку в php.ini или в конфиг веб-сервера.

> require_once(ROOT.'/app/components/Router.php');
> require_once(ROOT.'/app/components/autoload.php');

Логичнее сначала подключать autoload - вдруг он понадобится при подключении роутера.

> https://github.com/Vladrigos/StudentList/blob/master/app/components/autoload.php
здесь можно сделать одну функцию, которая будет в цикле перебирать варианты префиксов. Также, можно добавить эти пути в include_path и использовать встроенный в PHP автозагрузчик (spl_autoload).

> $uri = explode("?", $_SERVER["REQUEST_URI"])[0];

Можно просто с помощью parse_url взять компонент PHP_URL_PATH.

> //удаляем первый элемент массива и добавляем Controller
> $controllerName = array_shift($segments).'Controller';
Лучше сразу писать имя контроллера в routes.php, тогда можно будет переходить к нему по клику в IDE и искать роут поиском по имени класса. Не стоит писать в коде кусочки от имен классов/функций вместо полного имени. Так как в этом случае поиском по полному имени нельзя найти все места, где используется класс.

> 'main$'
Тут не должно быть ^main$ ?

> $isRegister = isset($_COOKIE['student']);
Стоит сделать отдельную функцию/метод для определения залогиненности, и собрать все, что связано с авторизацией, в один класс, а не размазывать эту логику кусочками по коду.

> StudentGateway::getStudents
> StudentGateway::getSearchStudents

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

Также, стоит отказаться от статических вызовов и почитать урок про DI: https://github.com/codedokode/pasta/blob/master/arch/di.md

> return 1;

Если это признак, что страница существует, то может, стоит сделать тут константу вроде PAGE_EXISTS или хотя бы использовать true (истина). Так как цифра 1 обозначает количество, и непонятно, чего тут одна штука.

> return $_GET['page'] * $this->limit

Стоит использовать intval() для принудительного преобразования в число. Неизвестно что может придти от пользователя.

> if(isset($_POST['submitInput']))
Можно проверять $_SERVER['REQUEST_METHOD'] https://www.php.net/manual/ru/reserved.variables.server.php

> $student = new Student($_POST['name'], $_POST['surName'],
Значения в $_POST могут отсутствовать или быть не строкой. Стоит писать хотя бы strval($_POST['x'] ?? '') или сделать функцию для их безопасного получения.

> Validator::formatStudent($student); //trim, firstToUpper имя/фамилию
Это, строго говоря, не задача валидатора. trim() удобнее делать в функции получения данных из _POST. Или можно сделать функцию-помощник, которая сделает нужные преобразования.

> //генерируем куки
> $cookie = md5(rand(0, 10000)) . md5(rand(0, 10000));
Это надо выносить в отдельную функцию с понятными названием, и комментарий не понадобится. Также, md5 тут бессмысленнен. У тебя возможны всего 10000 x 10000 вариантов значений, и md5 не увеличивает их количество, а лишь удлиняет код, но там все равно будет лишь 10000 вариантов. То есть ты только удлиняешь код, не повышая число вариантов. Для безопасности надо, чтобы каждый символ в коде выбирался случайно и независимо от других.

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

Для пола и local/nonlocal стоит сделать константы в Student, а не Validator. Это же свойства студента, а не особенности валидации. То есть, эти константы имеют смысл только для валидации, или они могут пригодиться и в других случаях? Да, могут. Значит, им место не в валидаторе.

> (int $limit, int $offset, $order = NULL, $as = NULL)

Тип стоит поставить для всех аргументов и для возвращаемого значения.

> $query = $query . "ORDER BY $order ";
Здесь SQL-инъекция. Почитай урок по ним и сделай проверку по белому списку разрешенных значений.

> //как то переделать что бы каунт получать
Как вариант, можно сделать аргумент, в который передается, что вернуть: либо RETURN_COUNT, либо RETURN_ROWS. Либо же использовать 2 отдельных функции.

> INSERT INTO student VALUES(DEFAULT,:name, :surname,
Надо явно указать названия полей после student, а то у тебя нет гарантии, что ты их вставляешь в правильном порядке.

> return new Student($stmt['studentName'], $stmt['studentSurname'],
...
> else
> {
> return 0;
> }

Есть значение null для обозначения отсутствующего объекта. А 0 - это число, оно обозначает количество.

> $stmt->fetch(PDO::FETCH_ASSOC)['COUNT()'];
Есть fetchColumn(), и другие функции, изучи.

> $db->query("UPDATE student SET studentName = '{$student->getName()}',
SQL инъекция тут.

> (':studentName' => $student->getName(),
> так почему то не работает
Надо разобраться, какая ошибка выводится и почему.

> catch (PDOException $e)
> print "ERROR: Нет соединения с базой данных";
Неправильная работа с исключениями. Ты не пишешь в лог ошибок информацию о сути проблемы, которая хранится в $e, и теряешь эту информацию. Разработчик и не узнает, что на сайте была проблема.

Также, для PDO надо включить режим ERRMODE_EXCEPTION, иначе он не сообщает об ошибках.

https://github.com/Vladrigos/StudentList/blob/master/app/components/Uri.php
Тут плохо то, что класс использует $_GET, он должен быть независим от этой переменной и получать параметры явно. А так, ты смешиваешь в кучу логику получения данных от пользователя и логику обработки этих данных. Это две независимых логики.

У тебя нет объекта и состояния. По идее, ты должен создавать объект, в нем хранятся данные и ты с этим объектом работаешь, так:

$uri = new Uri(.....данные....);
echo $uri->getPage();

Что-то у тебя пока слабовато с ООП, может тебе задачки про ООП-гостиницу или ООО Вектор надо порешать?

> public static function checkGetHave($key, $value)
Можно назвать hasElement/findElement.

> //очень похоже на костыль, не придумал как лучше
> //Если в массиве есть хоть 1 ошибка
> foreach($errors as $error)
Удали из массива пустые значения с помощью array_filter или цикла и проверь, пуст ли результирующий массив.

> return $errors;
> return 0;
Логичнее возвращать значения одного типа, например, пустой массив, так как проще работать, когда ты знаешь, что вернется только массив и ничего больше.

> if(strlen($name) > 25
Надо использовать mb_strlen, strlen считает байты, а не символы. Протестируй.

> return "Ошибка, поле содержит недопустимые символы!";
Нужно больше информации, например, какие символы допустимы или недопустимы. А то непонятно.

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

> https://github.com/Vladrigos/StudentList/blob/master/app/views/404.html
А ты выдаешь код статуса (состояния) HTTP 404 для этой страницы? Ведь число 404 важно не показать на экране (людям-то оно не нужно), а отдать роботам в нужном поле ответа.

> href="<?php Uri::setPageUri($i);?>
Здесь по идее тоже надо использовать htmlspecialchars, символ & например надо экранировать как & amp ; .

> ?php if($currentStudent && $currentStudent->getGender() == VALIDATOR::GENDER_FEMALE) { echo 'checked'; } ?>
Лучше использовать <?= и тернарный оператор. Не нужно использовать echo в шаблонах вообще.

> maxlength="25"
Здесь есть небольшой недостаток: длина поля (25) дублируется в нескольких местах кода, в валидаторе и тут. Хорошо бы это исправить.

Так, пока для начинающего неплохо, но надо исправить замечания, чтобы второй раз на те же грабли не наступать.
Аноним 23/02/20 Вск 14:44:41 #526 №1612508 
>>1611752

Фрейм это как отдельная вкладка и он может загружаться независимо от основной страницы.

>>1611731

Да. Все соединения закрываются, открытые файлы закрываются при завершении скрипта автоматически.

Обрати внимание, что во многих БД вроде MySQL/MariaDB, долгий запрос не завершается при отсоединении. Если ты запустишь запрос, который выполняется 24 часа, он продолжит выполняться, хотя ответ на него отдавать уже некуда. Используй настройку таймаута в БД для борьбы с этим.

>>1611704

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

Это значит, что пока ни одно значение не зафиксировано и все кубики надо перебирать.

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

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

Функция перебирает значения за раз только на одном кубике. И вызвыает себя для перебора остальных значений. Допустим, у нас 3 кубика и пришел массив [1] (зафиксированное значение для первого кубика). Тогда функция перебирает значения второго кубика, фиксирует их, вызывая саму себя с такими массивами:

- [1, 1]
- [1, 2]
- [1, 3]
...
- [1, 6]

> Ну вообщем , при моих оставшихся вопросах получилось как-то так https://ideone.com/JPEs7m , нормально ли ?

Ты правильно сделал функцию. Как раз, как я описал. Только один цикл тут лишний:

> for ($z = 0; $z < $n; $z++) {
> if (count($values) == $z) {
Если присмотреться, то понятно, что этот if срабатывает только один раз, а переменная $z нигде не используется и цикл по $z ничего не делает, и его можно убрать. Цикл - это повторение несколько раз, у тебя же код внутри if выполняется всегда ровно один раз и цикл не нужен.

> Тут есть проблема , в том , что по завершении вызовов функции с массивом одного и двух значений при 3 кубиках, допустим: generateCombinations(3, [1]) и generateCombinations(3, [1,1]), эти массивы тоже у меня бы выводились

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

Мне, наверно, стоит найти время и сделать урок про рекурсию. Я и сам-то плохо читаю рекурсивные функции, а начинающему это вообще ад.

> Решил вот так https://ideone.com/AyUsGV , нормально ?

Да.

> у меня возник вопрос, а если бы я захотел остановить цикл при значениях [5, 5, 5,] , при этом перебор остается осуществляться до [6,6,6], но я его как-бы останавливаю на других значениях , как лучше это было бы сделать,

Проще всего сравнением массива, то есть if ($combination === [5, 5, 5]) (мануал https://www.php.net/manual/ru/language.operators.array.php ). Или if ($combination[0] >= 5 && $combination[1] >= 5 ....).

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

После этого стоит добавить оптимизацию: перебирать число купюр не подряд от 0 до максимума, а с умом:

- не перебирать число, которое заведомо превышает требуемую сумму. Например, если надо выдать 2300, то нет смысла пробовать комбинации вида 5x500, 6x500 итд (и перебирать комбинации более мелких купюр при 5x500 тоже нет смысла). Или, если мы уже зафиксировали комбинацию 4x500 и перебираем 100-е купюры, то не брать более 3-х купюр.

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

- начинать перебор с ближайшего к сумме значения. Например, если нам надо выдать 2400, то мы начинаем с 4x500, потом пробуем 3x500, 2x500 .. 0x500. В таком случае, первая полученная комбинация будет соответствовать тому, что дает "жадный" алгоритм. А если она не подошла, то мы начинаем менять количества купюр и пробовать другие варианты.
Аноним 23/02/20 Вск 14:45:45 #527 №1612509 
>>1611458

Не нравятся большие фреймворки - используй микрофреймворки вроде Slim или собери свой фреймворк из компонентов Симфони.

>>1610930

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

>>1610524

Есть codeforces от Дурова: https://codeforces.com/blog/entry/79

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

Аноним 23/02/20 Вск 15:34:30 #528 №1612570 
>>1612400

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

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

Это можно пофиксить на уровне UI:

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

Наконец, можно рассмотреть вариант переписать/подключить декодер на WebAssembly (заодно освоишь эту технологию), или asm.js (фаерфоксовая старая версия для выполнения машинного кода). NaCl не буду рекомендовать, так как он x86-only. Должно ускориться.

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

> Нужно добавить ещё urlname

Это можно назвать login или slug.

> Может быть ещё нужно добавить поле online: BOOLEAN

А можно сделать отдельную таблицу online_users (uuid, last_seen). Плюс: при обновлении статуса пользователя (пришел/ушел) мы не трогаем тяжелую таблицу users, а только эту. Она будет меньше users, так как обычно онлайн только часть пользователей и так как тут мало колонок. Кто знает, может она целиком в RAM поместится. Просто даю как идею, не гарантирую, что это будет лучше.

> updated, // время когда конференция последний раз обновилась (появилось новое сообщение)

Может, last_event_time? Хотя, updated тоже норм.

> participant, // Ссылка на собеседника, в случае приватной конференции, для публичных это поле остаётся пустым.

Не лучше ли назвать partner/other_party?

> date,

Может, лучше писать send_time?

И еще по схеме БД - а не слишком ли много метаданных в открытом виде? Может, есть смысл хранить метаданные сообщения как JSON и шифровать, и хранить шифротекст в единственной колонке metadata ?

> 1. Получить последние 20 Конференций для конкретного пользователя, вместе с последним Сообщением и вместе с Получателем если есть

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

> Получить последние 20 Конференций для конкретного пользователя, вместе с последним Сообщением и вместе с Получателем если есть (в случае приватной конференции), и вместе с Получателями в случае с публичной конференции:

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

> Такой запрос вернёт количество строк равный количеству Конференций помноженных на количество Получателей. pic-1. Как сделать лимит на первые 20 конференций, а не на первые 20 строк (при условии что используется Doctrine)?

По моему, в Доктрине это есть. Там LIMIT применяется к основной сущности запроса, но это делается за счет оборачивания запроса в какую-то сложную конструкцию. Попробуй проверить, вроде:

$qb->select('a', 'b')->from('a')->leftJoin('a.b', 'b')->setMaxResults(10);

И посмотреть, какой запрос он сформирует. Это по идее должно вернуть 10 сущностей a независимо от числа приджойненных b.

Так, по идее - группировка нужна, наверно. Либо выборка в 2 запроса: сначала список конференций, потом список последних сообщений в них.

Увы, Доктрина - не самый быстрый способ делать запросы.

> Думаю, что нормализованная структура определена и осталось её оптимизировать. Пожалуйста, научите меня этому.

- нужно освоить команду EXPLAIN и прочитать мануал по тому, как понимать ее результаты (слова для поиска: postgres analyze query plan)
- прогнать запросы через эту команду и понять, эффективно они работают или нет (я смогу подсказать что-то). В идеале мы хотим: выборка из одной таблицы с LIMIT по индексу, который оптимизирует WHERE и ORDER.
- для тестирования было бы здорово сделать генератор, который нагенерирует произвольное число пользователей, конференций, сообщений. По ним прогонять запросы по одному и параллельно для измерения реальной производительности. Для Доктрины такой генератор делается, например, на основе Faker и https://github.com/thephpleague/factory-muffin. Хорошо оптимизированный запрос выполняется тысячами в секунду.

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

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

Индексы для начинающих: https://ruhighload.com/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D1%8B+%D0%B2+mysql

Если есть конкретные вопросы, уточняй.
Аноним 24/02/20 Пнд 07:18:32 #529 №1613310 
Анончик, чем синхронизировать локальную папку с sftp на debian?

Раньше пользовался правкой файлов по ftp через notepad++, на линуксах же в правки по sftp имеют 2.5 приложения, да и те осваивать месяц
Аноним 24/02/20 Пнд 08:49:02 #530 №1613324 
>>1611477
Да, двачую анон, складывается такое впечатление, что это какой-то рынок для гиков, нердов, но им вместо чего-то обычного впаривают реакты, вью, свелт или еще что-то, это все обрастает конференциями, курсами. Целая кампания какая-то. А ведь нужно то отобразить страницу с текстом или сделать удобную форму.
someApprentice !EaaiHmIJms 24/02/20 Пнд 09:35:23 #531 №1613334 
>>1612570
>Для мессенджера советую в README добавить скриншоты/гифки, описание основных фич (что тут есть сложного и крутого), будет хорошее демо для собеседований. Перечислить использованные технологии и библиотеки. И подключенных ботов. README сухой и краткий и не очевидно, что за ним сложный интересный проект. А может получиться хорошая реклама твоих навыков, которая выделяет тебя среди других разработчиков.

Я хочу свой стартап закончить. Если не получиться, то оформлю README, в качестве запасного плана.

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

>Имхо, компромисс, выбранный Телеграм - неудачный. Шифровать надо 100% сообщений. Но, конечно, это тебе решать.
Мне нужно подумать об этом.

Приведите пожалуйста аргументы почему нужно шифровать 100% сообщений?

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

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

И поделюсь сырыми мыслями которые крутятся у меня сейчас на этот счет:

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

Я вижу как предложенный вами способ может сработать. Действительно, на расшифровку одного единственного сообщения, в независимости от его размера, уходят доли секунды. Проблемы начинаются когда сообщений несколько, и их дешифровать одновременно - начинаются перегрузы в памяти и приложение начинает работать медленней (и даже фризить если не использовать Web Worker). И расшифровка сообщений по одному может решить проблему. К тому же, вы предложили как можно вывести сообщения плавно и это может выглядеть симпатично. Я проведу тесты. Но если дешифровка будет проходить всё равно медленно или это будет выглядеть некрасиво, или будут технические проблемы в реализации, придётся отказаться от этого решения.

Пока вопрос:

>- показываем сначала блоки-плейсхолдеры вместо сообщений
Как рассчитать размер плейсхолдера? Сообщения могут быть разного размера, и после дешифровки, если размер плейсхолдера статичный, то будет выглядеть немного "дёргано".


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


>> Нужно добавить ещё urlname
>
>Это можно назвать login или slug.
Или username. Я только что посмотрел в api телеграма, и это называется так https://core.telegram.org/bots/api#user


>> participant, // Ссылка на собеседника, в случае приватной конференции, для публичных это поле остаётся пустым.
>
>Не лучше ли назвать partner/other_party?
А можно назвать ещё проще и лаконичней - party? Это может подразумевать под собой как раз другую сторону:

https://translate.google.com/?source=osdd#auto/ru/party

>Noun
>③ a person or people forming one side in an agreement or dispute.

>соучастник partner, accomplice, accessory, accessary, party, associate
>участник party, participant, member, partner, participator, partaker
>сторона side, party, hand, part, way, aspect


>> date,
>
>Может, лучше писать send_time?
>
>И еще по схеме БД - а не слишком ли много метаданных в открытом виде? Может, есть смысл хранить метаданные сообщения как JSON и шифровать, и хранить шифротекст в единственной колонке metadata ?

>Может, лучше писать send_time?
А почему нельзя назвать просто и лаконично date? Разве на очевидно что это дата сообщения?

>И еще по схеме БД - а не слишком ли много метаданных в открытом виде? Может, есть смысл хранить метаданные сообщения как JSON и шифровать, и хранить шифротекст в единственной колонке metadata ?
Какие метаданные, помимо даты, вы хотели бы чтобы шифровались?

Что касается даты, как я писал выше, если её зашифровать, то нельзя будет сделать выборку по первым или последним сообщениям.


>> Получить последние 20 Конференций для конкретного пользователя, вместе с последним Сообщением и вместе с Получателем если есть (в случае приватной конференции), и вместе с Получателями в случае с публичной конференции:
>
>Не очень понятно, зачем тут выбирать Получателей? Мы же выбираем только сообщения, адресованные данному пользователю? Я предполагаю, что если пользователь - участник конференции, то все сообщения в ней (не написанные им) адресованы ему. Или это на случай, если пользователь состоит в чате, но как-то забанен в нем? На случай игнора отправителя?
Да, я как раз думал об этом, что получателей не обязательно получать, потому что единственный случай, когда нужно получить их, это когда пользователь сам захочешь посмотреть кто состоит в беседе (публичной конференции).

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


По поводу оптимизации:

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

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

Сейчас у меня есть такие вопросы:

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

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

И ещё я сейчас поймал себя на мысли, что ничего не знаю о том когда данные хранятся в RAM, я всегда думал что записи хранятся на диске. Я погуглил этот вопрос, и создаётся впечатление что PostgreSQL решает автоматически когда хранить данные в RAM а когда на диске, и предпочтительнее в RAM. Это верно?


>- для тестирования было бы здорово сделать генератор, который нагенерирует произвольное число пользователей, конференций, сообщений. По ним прогонять запросы по одному и параллельно для измерения реальной производительности.
А у меня есть подобный генератор, который заполняет базу тремя пользователями (Alice, Bob и Tester) и заполняет по сотне сообщений между ними: (☣ Warning! Code with a smell! ☣) https://github.com/someApprentice/Crypter/blob/master/api/src/Command/PopulateCommand.php

Следовало бы увеличить количество пользователей до сотен и количество сообщений до тысяч?

Будет ли лучше если я вместо выполнения HTTP-запросов создам объекты с помощью Faker и factory-muffin, и выполню все запросы к БД напрямую?
Аноним 24/02/20 Пнд 10:56:17 #532 №1613373 
Как-то забил на программирование, кроме задачек на codewars, но начал читать литературы (учебники, сайты и т.д.) в промышленных масштабах. Такое чувство, что скоро на меня снизойдёт просветление.
Аноним 24/02/20 Пнд 12:37:12 #533 №1613444 
>>1613324
Нет никакой кампании, лол. Это просто обычные попытки стандартизировать используемые подходы. На фронте у PHP щас только ДВА фреймворка осталось - Symfony для корпората и Laravel для стартапов - выбирай, где хочешь больше работать, и учи. Оба они показывают, как надо писать на этом языке - это PHP в его лучшем виде. Если тебе по-прежнему кажется, что они сделаны плохо и лучше писать самому, то либо ты очень крутой спец, который может одной левой на Slim построить крутую систему под конкретные задачи, либо школьник.
Аноним 24/02/20 Пнд 15:13:23 #534 №1613581 
>>1612509
>Есть codeforces от Дурова
От Дурова? Интерфейс конечно ужасный. Непонятно где задачи и как вообще пользоваться сайтом.
Аноним 24/02/20 Пнд 16:38:39 #535 №1613639 
>>1607723
>} else if($i == 10) {
А если я строку изначальную поменяю на другую?
Аноним 24/02/20 Пнд 19:58:52 #536 №1613853 
>>1599201 (OP)
аноны, прошу совета.

мне почти 30.

образование 9 классов. да и то формально.

работаю на дно-работе. зарабатываю копейки. и всё меня устраивало.

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

и я рассматриваю как вариант вкат в php-программинг.

но у меня реально крайне хуёво с образованием ( в т.ч. с физ-мат науками ).

тем не менее вот эту задачу ( с которой тут, я сморю, многие ебутся ) я решил за 20 минут на онлайн-интерпретаторе.

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

<Школьник решил купить айфон и для этой цели взял кредит. Сумма кредита — 40000 р., банк в начале каждого месяца (включая первый) начисляет 3% от остатка долга за пользование кредитом и 1000 р. комиссии (да, а ты думал, обойдешься процентами?). После этого, в конце каждого месяца, наш герой идет в банк и пытается выплатить долг, но он не может заплатить более 5000 р за раз (сэкономленных на школьных завтраках). Вопрос, когда он избавится от долга? Во сколько школьнику обошелся айфон?

что посоветуете?
Аноним 24/02/20 Пнд 20:06:06 #537 №1613862 
>>1613853
Учи выкатывайся хуле
Аноним 24/02/20 Пнд 20:07:49 #538 №1613864 
Самообразование.jpg
>>1613853
>что посоветуете?
Ебашь, что сказать, сперва погромирование, затем догоняй математику, по типу пикрелейтед книги почитай, если есть где-то жесткие пробелы в знаниях, то заделывай их.
Аноним 24/02/20 Пнд 20:18:45 #539 №1613871 
>>1613864
>>1613862

уточню.

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

Аноним 24/02/20 Пнд 20:37:57 #540 №1613889 
>>1613871
Конечно
Ты же не ракеты собрался пилить
Аноним 24/02/20 Пнд 21:00:24 #541 №1613932 
Платиновый вопрос. Какую IDE из бесплатных посоветуете?
Аноним 24/02/20 Пнд 21:04:02 #542 №1613941 
>>1613932
VS code
Аноним 24/02/20 Пнд 21:18:31 #543 №1613958 
>>1613941
Ее допиливать ебанно
Аноним 24/02/20 Пнд 22:47:06 #544 №1614057 
Аноны, это снова я, спасибо за ответы, многое понял для себя и разобрал кашу

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

Посмотрев ютуб, понравилась концепция создания интернет магазина, где вся суть в том чтобы получив данные из GET/POST запроса сконвертировать нужные данные в JSON и получив их вывести на экран, весь магазин в итоге сводится к 3-х страничнику, главная/корзина/страница товара, но всё это конечно заебись если ты не собираешься индексироваться в коисковиках, иначе над беком придётся сильно ебаться чтобы он ещё и страницы генерировал, хотя бы при 1 запросе

>>1611042-хуй
С выбором фреймворка пока не определился, смотрел ютуб, но все предложения сохранил в закладки, пока для себя определился что первым делом нужно будет попробовать Slim, то есть я так понял нужно просто найти фреймворк который превратил основной функционал в функции, файл которых нужно будет просто подключить и уже пользуясь ими писать короткий код
Аноним 24/02/20 Пнд 23:01:55 #545 №1614080 
>>1613444
Может ли Symfony конкурировать где-нибудь в энтерпрайзе с Джавой?
Аноним 24/02/20 Пнд 23:19:39 #546 №1614105 
>>1614080
Со Spring вполне может. Но Java - это не только Spring, экосистема Java вполне может покрывать все нужды энтерпрайза и даже больше, в то время как PHP нет.
Аноним 24/02/20 Пнд 23:23:33 #547 №1614112 
>>1614105
Имеется в виду, что Java - это BigData, ML, concurrency, highload и куча всего еще, что может быть в составе крупного энтерпрайза. А PHP - это только веб.
Аноним 24/02/20 Пнд 23:32:49 #548 №1614128 
>>1614057
>первым делом нужно будет попробовать Slim
Плохой выбор. Для новичка нужно брать что-то готовое, созданное по лучшим практикам, и разбираться, как все устроено внутри - Laravel, Symfony, все остальное сейчас - легаси.

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

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

>понравилась концепция создания интернет магазина
Это одна из дефолтных сфер, где доминирует PHP - e-commerce (мелкий/средний бизнес).
Аноним 24/02/20 Пнд 23:42:06 #549 №1614143 
>>1614105
Значит ли это, что при необходимости можно относительно безболезненно перекатиться с PHP на Джаву? (в контексте веба)
Аноним 25/02/20 Втр 00:01:55 #550 №1614164 
>>1614143
Да, можно. Причем, может быть так, что Java после PHP не понравится, но примеры таких перекатов среди моих знакомых есть - один из них щас в СберТехе 200к получает, перекатился 2 года назад где-то.
Аноним 25/02/20 Втр 03:19:21 #551 №1614244 
>>1613958
Это же охуенно, анон. Когда с пыхи будешь слезать, то даже ide не придётся менять.
Аноним 25/02/20 Втр 11:19:22 #552 №1614407 
>>1613932
Emacs
Аноним 25/02/20 Втр 12:06:22 #553 №1614464 
>>1614244
С Идеей будет то же самое, если до этого писал на PHPStorm.
Аноним 25/02/20 Втр 13:00:48 #554 №1614552 
>>1614128
Ну а в остальном я правильно понял? Бекенду нужно высрать джейсон из базы, а фронту пропарсить его и отрисовать?
Аноним 25/02/20 Втр 13:54:14 #555 №1614615 
>>1614552
Да
Аноним 25/02/20 Втр 14:38:30 #556 №1614635 
>>1613853
Аааа, помню тебя, а это я с ней неделю ебался пока не погуглил решение.
Аноним 25/02/20 Втр 18:14:17 #557 №1614833 
анчоусы, подскажите такой момент с ассоц массивами. https://ideone.com/eYintb вот пример где мне надо сложить два массива. но не просто сложить, а чтобы по ключу значения из второго массива как бы встроились в первый. так вот как это реализовать? нагуглить как вы понимаете нихуя не смог везде только одна ебучая конкатенация
Аноним 25/02/20 Втр 18:19:14 #558 №1614837 
>>1614057
скинь как этот видос где пишут этот магазин. интересно пиздец как стало
[fgh] Аноним 25/02/20 Втр 18:23:29 #559 №1614838 
>>1599201 (OP)
Подскажите, я на laravel могу красиво крудошлепить используя его инструменты(всякие курсы-хуюрсы качаю и смотрю, как строят приложения) и композерем тащить нужные зависимости , но когда нужно создать какой-нибудь модуль - я обсираюсь и пизжю решение из инета. Так вот, собственно, вопрос: как научится (мыслить логически, хз) создавать модули? Как прокачать этот скил? Логические задачки решать или что? Или это нормально в начале и все дальше все поедет? Чувствую себя идиотом.
[fgh] Аноним 25/02/20 Втр 18:38:31 #560 №1614852 
>>1614838
или во фронтэнд переучиваться? лол
Аноним 25/02/20 Втр 19:06:08 #561 №1614879 
>>1614838
Декомпозируешь функционал и пилишь потихонечку. В конце концов любая таска сводится к множеству атомарных тасок типа "сделать запрос в бд" или "обрезать строку".
Аноним 25/02/20 Втр 19:06:43 #562 №1614880 
>>1614852
Во фронтенде та же херня. Дают тебе таску на человеко-день и ебись с ней как хочешь
Аноним 25/02/20 Втр 20:09:46 #563 №1614912 
>>1599201 (OP)
Ребята, а есть кто работает дома? На каких сайтах ищите работу? Что обычно делаете по работе (сайты или что?).
Аноним 25/02/20 Втр 20:22:08 #564 №1614920 
>>1599201 (OP)
Изучив Php, реально ли работать дома? Или будешь мало получать, и придется работать на дядю-контору каждый день в офисе?
Аноним 25/02/20 Втр 21:47:25 #565 №1614964 
>>1613871
Да. В веб-разработке каждый второй такой лол
Аноним 25/02/20 Втр 21:48:19 #566 №1614966 
>>1614920
Первые пару лет в офисе лучше. Потом можешь перекатываться на удалёнку.
Аноним 25/02/20 Втр 21:52:41 #567 №1614972 
>>1614966
Почему лучше в офисе? Лучше, но необязательно - правильно понимаю?
Аноним 25/02/20 Втр 22:23:35 #568 №1615000 
>>1614972
>Почему лучше в офисе?
А сам как думаешь, есть мысли? Научишься взаимодействовать с разработчиками и вообще с людьми, если сычуешь.
Аноним 25/02/20 Втр 22:30:15 #569 №1615005 
>>1615000
Зачем взаимодействовать с разработчиками какими-то с офиса, если во фрилансе ты сам на себя работаешь?
Не сычую
Аноним 25/02/20 Втр 22:32:21 #570 №1615008 
>>1615005
В будущем захочешь стать сеньором 300к/наносек - навыки и знания из "внутренней кухни" пригодятся.
Аноним 25/02/20 Втр 22:40:30 #571 №1615014 
>>1615008
то есть ситуация такая: сидишь-пердишь в офисе пару лет, потом домашний фрилансер и опять работа в офисе, но уже покрупнее и посолиднее?
Аноним 26/02/20 Срд 00:11:01 #572 №1615113 
>>1614912
>есть кто работает дома?
Есть

>На каких сайтах ищите работу?
хх, мойкруг, линкедин, телеграм чаты с работой php_jobs

>Что обычно делаете по работе (сайты или что?)
Поддерживаю продукт, что-то допиливаю, фикшу.
Аноним 26/02/20 Срд 00:13:02 #573 №1615115 
>>1615014
В начале пару лет пердишь в офисе. Потом думаешь, что больше хочется - офис/релокейт/удаленка/фриланс
Аноним 26/02/20 Срд 00:39:24 #574 №1615139 
>>1614552
REST API это называется, и это целый архитектурный паттерн поверх HTTP со своими правилами и особенностями, а не просто "высрать джейсон из базы". Если ты собрался срать джейсонами, то пожалуйста, не иди в веб или как минимум в PHP. Иди лучше в JS - там щас наибольшая концентрация всяких сирунов разной мастистости - они тебя встретят как родного и научат филигранно высирать каждый месяц очередной ShitJS, с которым ты будешь носиться по местным общественным туалетам (по ошибке называемым митапами и конфами), где будешь доказывать, что твое говно самое красивое и наименее вонючее, и что все должны кушать именно его. Короче, съеби.
Аноним 26/02/20 Срд 00:42:48 #575 №1615142 
>>1615005
Не на себя работаешь, а на заказчика. И с ним порой труднее взаимодействовать, чем с коллегой-программистом.
Аноним 26/02/20 Срд 00:55:24 #576 №1615151 
>>1615142
то есть с оплатой могут наебать?)
Аноним 26/02/20 Срд 07:33:41 #577 №1615193 
34plydoi435t.png
Аноним 26/02/20 Срд 10:19:12 #578 №1615224 
>>1615151
Не, это вряд ли. Просто заказчики обычно не шарят в программировании, поэтому трудно договориться.
Аноним 26/02/20 Срд 15:07:50 #579 №1615561 
сейчас встретил такого вида запись $dispatch_number = $array['response']['Order'][0]['butes']['orderNumber'];
анонсы, подскажите что это значит?
Аноним 26/02/20 Срд 15:39:33 #580 №1615621 
>>1615561
многомерный массив значит
Аноним 26/02/20 Срд 15:46:10 #581 №1615644 
>>1615621
ну это понятно. а что значит то что идет в правой части? отдебажить ипонять что за че отвечает нихуя не смогу тк этого прилетает с устаревшего api
Аноним 26/02/20 Срд 15:59:40 #582 №1615684 
>>1615644
Уберай по одному индексу и пиши var_dump(); die;
Не знаешь что-ли, как деды отладку делали?
Аноним 26/02/20 Срд 16:13:17 #583 №1615717 
>>1615684
>var_dump(); die;
бля, недавно в довольно крупном гос проекте такое встретил в продакт-коде, аж сердце прихватило.
Аноним 26/02/20 Срд 16:19:40 #584 №1615724 
>>1599201 (OP)
Верстка страницы про регулярные выражения пиздецовая конечно - очень много инфы и картинок, нет какого-то порядка, скроллить просто мучение и сразу 8 задачек
Аноним 26/02/20 Срд 17:02:03 #585 №1615796 
>>1615684
да так и делал, только он мне фаталы выбрасывает и говорит шобi я шел нахуй с неправильными оффсетами. в гугле для многомерных массивов я инфы не нашел
Аноним 26/02/20 Срд 20:15:09 #586 №1616038 
>>1615717
Откопал историю про маскот пыхи - elePHPant, https://7php.com/elephpant. Мб кому интересно будет.
Аноним 26/02/20 Срд 20:24:44 #587 №1616066 
мимо сеньер со стажем в 10 лет
если хотите, могу за чонить пояснить в ближайшие пару часов, пока вискарь меня совсем не забрал
а может я забуду про тред и пойду дальше пьянствовать, сорри
Аноним 26/02/20 Срд 21:40:29 #588 №1616210 
>>1615796

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

// обычный массив
$a = [1 => 'test'];

// 2-мерный массив
$b = [777 => $a];
// то же самое, что
$b = [777 => [1 => 'test']];

>>1615724

Справедливое замечание. Если будет время, постараюсь поправить.

>>1614057

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

С точки зрения простоты как раз сгенерировать на сервере страничку из имеющихся данных будет проще. Однако, если команда большая, то разделение работы между двумя командами может упростить жизнь.
Аноним 26/02/20 Срд 21:42:07 #589 №1616214 
как сделать чатик на сайте?
Аноним 26/02/20 Срд 23:54:30 #590 №1616354 
Анончики (или ОП, если увидишь),поясните за Sphinx. Делаю задачу про файлообменник, на стадии реализации поиска через Сфинкс. Я правильно понимаю, что из сфинкса я получаю id записи в базе и потом беру данные из БД, используя полученный ранее id?
Аноним 27/02/20 Чтв 01:24:43 #591 №1616383 
>>1616354
Вопрос снят, разобрался
Аноним 27/02/20 Чтв 06:25:50 #592 №1616418 
>>1616210
>Однако, если команда большая, то разделение работы между двумя командами может упростить жизнь.
Да и снять часть работы с сервера, думаю. Всё таки просто отдать данные клиенту, а тот пускай сам их рисует - вполне здравая идея.
Только эффект от этого будет на действительно хайлоад приложениях с тысячами пользователей.

Поправьте если ошибаюсь.
Аноним 27/02/20 Чтв 09:35:54 #593 №1616524 
>>1616210
Вот ещё вопрос насчет задачи - "На вход скрипта дан введенный пользователем номер телефона..." Это надо делать отдельный хтмл с полем ввода?
Аноним 27/02/20 Чтв 13:11:03 #594 №1616870 
>>1615139
Но ведь я не веб макака раб, я просто вебмастер и учу php и js для своих целей, для обслуживания и накручивания ништяков для своего сайта, но с тобой согласен, ебучие хохлядские макаки навысирали фрейворков как их навысирали их матери шлюхи за сало
Аноним 27/02/20 Чтв 13:12:52 #595 №1616876 
>>1614837
Александр Лущенко
Аноним 27/02/20 Чтв 13:23:47 #596 №1616893 
Аноны, снова выхожу на связь

Дошёл до такого момента как - как сделать ЧПУ, я правильно понимаю что это называется роутинг?

Бля, неужели ЧПУ приходит к тому, что создаётся файл в котором каждую страницу прописывают вручную и указывают содержимое какого php файла выводить в контент по нужному url?

Или вручную это делается только на мелких проектах, а на крупных в автоматическом ражиме это происходит с помощью хранения названий всех ЧПУ в БД? И уже какой-то файл асоциируя контент всё в тот же файл подставляет нужный нам ЧПУ и вызывает нужный для него контент?

Бля, надеюсь понятно объяснил, в общем вопрос в том в чём заключается суть и концепция создания нужного мне урл для каждой страницы, это создание файла в котором всё это прописывается, или файла который хранит все эти урл в бд и с помощью хитровыебанного кода решает какой контент выводить?
Аноним 27/02/20 Чтв 13:26:14 #597 №1616895 
И ещё такой вопрос, вчера дошёл до Монго ДБ, его же можно использовать совместно с PHP вместо MySQL?

А так по сути получается с монго дб можно работать и прямо из JS скрипта? Проблема в том что там будет палиться инвормация для связи с БД и для этого и используют Node JS?
Аноним 27/02/20 Чтв 16:59:26 #598 №1617265 
>>1616895
спроси в js треде. там за такое поясняли недавно если это не ты был
Аноним 27/02/20 Чтв 21:59:35 #599 №1617498 
ОП, глянь, пожалуйста, задачу абитуриентов. Несколько месяцев назад ещё отправлял, но ты, видимо, пропустил. Сейчас файлообменник пишу, и не хотелось бы косяки переносить в него.

https://github.com/deadj/student-list
http://f914421i.beget.tech/



Аноним 27/02/20 Чтв 22:43:30 #600 №1617537 
>>1616893
>неужели ЧПУ приходит к тому, что создаётся файл в котором каждую страницу прописывают вручную и указывают содержимое какого php файла выводить в контент по нужному url?
Гугли MVC.
sageАноним 27/02/20 Чтв 23:06:36 #601 №1617559 
Блять анонсы блять ну в что за хуйню вы превратили ламповый пиэйчпи? Что блять за композеры, тонны блять мегатонны говна и папок фреймворков, вы совсем ебанулись от лени? Что это за хуйня, нахуй блять так жить! М? Просто сука ебануться, чтобы просто написать код, раньше надо было просто создать файл индекс пиэйчпи, а щас блять я ещё должен тонный говна установить на пк и ебаться блять пердолиться как красноглазик в консоль, ну нахуй так жить м? Что за пидорас это придумал? Нахуй вы все его послушали? Ооп блять мвс блять конченные блять ну вас нахуй блять
Аноним 27/02/20 Чтв 23:31:16 #602 №1617572 
Анонсы, я почитал про mysql на w3scool и запутался, какой способ подключения лучше использовать и в чём их отличия, нахуй их столько наштамповали? Из 3-х предложенных мне больше всего понравился по виду объектно ориентированный, по синтаксису процедурный, а PDO это пиздец что за хуйня вообще, вырвиглаз
Аноним 27/02/20 Чтв 23:33:26 #603 №1617573 
>>1617572
> почитал про mysql на w3scool и запутался, какой способ подключения лучше использовать и в чём их отличия, нахуй их столько наштамповали?
Хуёво же ты прочитал, если у тебя вопросы остались. Иди читай по новой.
>понравился по виду объектно ориентированный
>PDO это пиздец что за хуйня вообще, вырвиглаз
мда...
Аноним 27/02/20 Чтв 23:33:43 #604 №1617574 
И как можно скачать фреймворк без всяких компостеров и терминалов, чтобы просто поковырять его внутренности, почему просто нельзя скачать ЗИП архив, что за аутизм с установками
Аноним 27/02/20 Чтв 23:35:39 #605 №1617575 
>>1617573
Ну вот что тут можно понять https://schoolsw3.com/php/php_mysql_connect.php на инглиш версии я не осилил
Аноним 27/02/20 Чтв 23:38:33 #606 №1617577 
>>1617575
И сразу в первых предложениях.
>Если вам нужен короткий ответ, выбирайте "Что вам нравится".
ты пиздец.
Аноним 27/02/20 Чтв 23:55:23 #607 №1617585 
>>1617559
Говнокодер порвался.
Аноним 27/02/20 Чтв 23:56:12 #608 №1617586 
>>1617574
Что тебе мешает с гитхаба zip скачать?
Аноним 28/02/20 Птн 00:12:30 #609 №1617603 
>>1617577
Мне просто сдаётся что если выбирать то что нравится, вы изведётесь говном, хая какое небезопасное говно я выбрал, что так подключаются к БД только мудаки, значит отличие не в безопасности? Сейчас дошло что PDO ещё и через страйкер работает, вообще пиздец какой-то, нахуй его выслали, и прочитать нормальными русскими словами негде, теоретики с Ютуба сами не могут объяснить
Аноним 28/02/20 Птн 00:15:22 #610 №1617607 
>>1617586
Спасибо я не знал
Аноним 28/02/20 Птн 00:17:01 #611 №1617609 
>>1617603
>страйкер
Трай кетч
fix.
Аноним 28/02/20 Птн 00:17:39 #612 №1617612 
>>1617559
>Что блять за композеры
Руками собрался либы менеджерить? Или свои велосипедить?

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

>я ещё должен тонный говна установить на пк и ебаться блять пердолиться как красноглазик в консоль
Ставишь пхп, композер, установщик фреймворка, пишешь 1 команду в консоль - проект готов. Сложно?
Аноним 28/02/20 Птн 00:19:10 #613 №1617614 
>>1617574
Давно пора освоить гит.

git clone ссылка на репу
Аноним 28/02/20 Птн 00:25:44 #614 №1617621 
>>1617612
>Руками собрался либы менеджерить?
Вот тут вот не понял, я имею ввиду почему просто нельзя скачать архив

Это блять что получается, после написания на этих хуеворках, всё это говно из статысяч папок ещё и на сервер надо грузить? Пиздец, ещё и хостинг говном забивать, пиздец даунизм
Аноним 28/02/20 Птн 00:31:50 #615 №1617625 
>>1617603
Щас бы слушать довенов которые критикуют СТАНДАРТНЫЕ приёмы работы с БД...
Суть в том, что ты выбираешь не технологию, а стиль кода. Любишь ООП - бери одно, любишь процедурный стиль - другое. Я вот процедурный люблю, потому-что PDO - яебал ручками прописывать. Но например в YII PDO наоборот быстрее получается. Потому-что 90% работы фрэймворк на себя берёт.
И да, если ты умеешь в ООП PHP, ты уже на кровне где нужно формировать своё мнение исходя из опыта использования.
Аноним 28/02/20 Птн 00:39:35 #616 №1617630 
>>1617625
Спасибо, просто хотел понять в чём различия, говноютуберы посеяли сомнения своими домыслами как лучше, мне тоже больше нравится процедурный даже, никаких ебучих стрелочек, так то я пришёл с яваскрипта в пхп, по этому мне это роднее
Аноним 28/02/20 Птн 00:40:57 #617 №1617632 
>>1617498
1.У тебя там XSS как минимум
2. При выборе страницы в списке передается параметр search если туда ввести например admin, он выдаст таблицу без значений(скуля скорее всего)
3. первый и второй текстбокс при реге называются имя и валидатор выдает одно и то же сообщение
Аноним 28/02/20 Птн 00:43:07 #618 №1617633 
Посоны, а в процедурном методе обязательно нужно в конце mysqli_close() делать или это опять теории ютуберов?
Аноним 28/02/20 Птн 00:44:30 #619 №1617634 
>>1617632
Нашел причину вставки XSS, в валидаторе исправь, у тебя не строгая регулярка идет
Аноним 28/02/20 Птн 01:05:03 #620 №1617640 
>>1617633
Соединение само закроется, когда скрипт завершит работу.
Аноним 28/02/20 Птн 01:26:15 #621 №1617651 
Блин посоны, а Check connection обязательно нужен? Нафига нам пользователям то показывать ошибку, он есть во всех примерах, там же и так выведет ошибку

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}


>>1617640
А как же миф типа если его не закрыть, то оно останется открытым в ожидании пользователя? Или это уже давно пофикшено? То есть можно забить на закрытие?
Аноним 28/02/20 Птн 05:08:13 #622 №1617707 
распишитесь

https://www.youtube.com/watch?v=qqCLV6qlY_E
Аноним 28/02/20 Птн 06:33:35 #623 №1617726 
>>1617632
Спасибо, анончик
Аноним 28/02/20 Птн 06:41:52 #624 №1617727 
>>1617632
Объясни, пожалуйста, на счёт XSS. Прочитал урок ОП, как я понял XSS можно решить, используя htmlspecialchars(). Разве нет?
Аноним 28/02/20 Птн 07:25:23 #625 №1617734 
>>1603536
https://t(точка)me/anonaprphp
Аноним 28/02/20 Птн 07:28:24 #626 №1617735 
>>1617707
Бля, беать он душный, вроде бы рофельный видос но больше пяти минут не осилил
Аноним 28/02/20 Птн 07:33:56 #627 №1617737 
>>1617727
Возможность добавления появляется, потому что ты криво регулярку сделал и она у тебя англ символы пропускает и <>, а возможность вывода из-за htmlspecialchars() эта функция должна работать при выводе значений в таблице(в данном случаи), короче открой свой сайт, открой список через Ctrl+U и посмотри, что необычного есть у студента "Василий Вася", а потом глянь как он у тебя записан в бд.
Аноним 28/02/20 Птн 07:35:52 #628 №1617739 
>>1617727
Тебе про XSS ещё в тот раз писали, помню как ты скидывал список, хз чё ты не исправил
Аноним 28/02/20 Птн 09:28:47 #629 №1617766 
>>1617621
>почему просто нельзя скачать архив
Сейчас бы со скачкой ебаться, с архивом. Когда можно одной строкой поставить.
Аноним 28/02/20 Птн 09:35:32 #630 №1617769 
>>1617630
>так то я пришёл с яваскрипта
Постоянно от яваскриптеров слышу - какой бэк простой.
Поздравляю - у тебя глазки раскрылись на всю эту парашу.
Аноним 28/02/20 Птн 13:04:06 #631 №1617913 
>>1617737
Понял. Спасибо, что объяснил
Аноним 28/02/20 Птн 13:32:47 #632 №1617931 
>>1616066
У меня очень зловонный пердеж, и я не знаю как сидеть с этим на работе - постоянно бегать в туалет только чтобы пердануть? А если не успею, или мне расхочется по пути, а это вредно сдерживать газы, что посоветуешь по этому поводу кроме очевидной удаленки?
Аноним 28/02/20 Птн 13:45:33 #633 №1617937 
https://laravel-news.com/laravel-livewire-1-0-0
что скажете?
Аноним 28/02/20 Птн 14:00:56 #634 №1617940 
>>1617937
Выглядит как жаваскрипт.
Аноним 28/02/20 Птн 14:15:14 #635 №1617945 
>>1617621
>Вот тут вот не понял, я имею ввиду почему просто нельзя скачать архив
Какой архив?
Под новый проект будешь каждый раз качать пару десятков архивов?
Потом будешь разгребать совместимость версий либ, чтобы всё со всем работало.

Нет бы взять композер, который берет эту задачу на себя
Аноним 28/02/20 Птн 14:16:06 #636 №1617948 
>>1617621
> всё это говно из статысяч папок ещё и на сервер надо грузить
Ты грузишь только код своего проекта. Либы ставятся на сервере одной командой: composer install
Аноним 28/02/20 Птн 15:24:35 #637 №1618019 
>>1617937
Выглядит охуенно.
Аноним 28/02/20 Птн 16:48:54 #638 №1618108 
ОП, и/или другой грамотный господин. Ты когда то говорил о том как в приложени совместить ноду + пхп. Вот я хочу такое что то запилить.
Но как концептуально это должно выглядеть?
Нода-сервер принимает запрос, и отправляет этот запрос на api пхп сервера? ПХП делает какое то оче-долгое математическое вычисление фибоначи до миллиарда считает ( которое в ноде бы заблокировало бы цикл libuv ), пхп завершает вычисления, нода резолвит этот запрос и возвращает клиенту данные.
Как то так это выглядит? Я понимаю что пхп для математических вычислений это наркомания.

А воообще ирл какой кейс пхп + нода может быть?
Аноним 28/02/20 Птн 17:02:34 #639 №1618118 
>>1618019
Чего там охуенного, что работа с фронтом в бэк уезжает? Очередной васянский лисопед.

Давай ещё вставки js генерить на пхп? Вообще охуеешь при отладке.
Аноним 28/02/20 Птн 17:11:59 #640 №1618125 
>>1618118
>Давай ещё вставки js генерить на пхп?
Yii же
Аноним 28/02/20 Птн 17:19:06 #641 №1618130 
>>1618125
Не работал с ним. Говорят - параша.
Чисто на вскидку - там нехороший мужчина впиливает обработку событий в шаблонизатор. И к этому говну, как я понял, ещё и жс прилагается. Получается, что под соусом наглядности нам фуфло двигают: работы - больше, код - запутаннее, зато очередной васян звёздочек отхватит от наивных дурачков вроде этого >>1618019
Аноним 28/02/20 Птн 17:23:19 #642 №1618135 
Аноны, я не могу никак понять как работают ларавел, симфони, юи2 и т.п. фреймворки, для меня эти подключения классов, все эти модели, вьюверы, контроллеры - это какой-то пиздец, я не понимаю их логику и почему они считают что так лучше, по мне это какой-то пиздец с тонной ненужных файлов и назовём их редиректами, когда итоговый файл лежит со всем не там где должен по логики запроса в урл, а совсем в других папках и эти ебучие подключения тонн файлов в другие файлы которые в свою очередь тоже поключают ещё тонны файлов, блять, это пиздец какой-то

Я это всё учу просто для себя, идти с этим на работу я как минимум ссу, потому что засмеют да и спецов пиздюков там уже наверняка тонны которые щёлкают это как семечки и будут смотреь на меня как на дебила

Я к чему пришёл, я уже знаю js и php, мне показлось если сейчас изучить vue, а потом angular я смогу понять принцип всего этого взаимодействия и того в чём задумка разработчиков фреймворком для php?
Аноним 28/02/20 Птн 17:25:56 #643 №1618137 
>>1618130
>Говорят - параша
Всё так. В 3 версии yii хотят уйти от этого, но уже поздно, yii никому нахер не нужен
Аноним 28/02/20 Птн 17:26:03 #644 №1618138 
>>1617945
Теперь я запутался ещё больше, что за совместимости ещё там нужны? Почему нет просто архива с исходниками, те же папки с файлами но в архиве
Аноним 28/02/20 Птн 17:27:53 #645 №1618140 
>>1618138
Тебе нужно поставить 2 либы. У одной версия X, у второй Y. Версия X требует версии YY у второго.
А теперь помножь это на сотню либ
Аноним 28/02/20 Птн 17:31:07 #646 №1618142 
>>1618135
>Я это всё учу просто для себя, идти с этим на работу я как минимум ссу, потому что засмеют
Тебя даже на собес не позовут без указания знания пары MVC фреймворков

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

Совет как изучить MVC - берешь курсец laracasts или елисеева и пилишь паралеллельно видео проект из курса. Потом поймешь, зачем нужно разделять к примеру логику представления от моделей
Аноним 28/02/20 Птн 17:39:59 #647 №1618149 
>>1618140
Это всё из-з этого ебучие подхода с git? Где каждый файл блять каждую минуту меняется, что сука нельзя просто скачать ебучий архим, блять ну нахуй так жить, мудаки сука напридумывали говна и рады
Аноним 28/02/20 Птн 17:42:11 #648 №1618151 
>>1618149
Добро пожаловать в интернет.
Еще скажи, что гитом не умеешь пользоваться - любая контора тут же нахер пошлет
Аноним 28/02/20 Птн 17:42:16 #649 №1618152 
>>1618142
>т.к. ангуляр следует примерно той же архитектуре
По этому и придумал дял себя такой лайт вариант, сперва вью, чтобы вообще понять зачем ебанаты ушли от ванилы, потому ангулар, чтобы понять зачем ебанаты всё эторазделили на миллион папок и библиотек и потом уже ларавел, просто js я пока понимаю больше
Аноним 28/02/20 Птн 17:44:30 #650 №1618154 
>>1618151
Не умею, из работы работал пару месяцев в местном провайдере, всё остальное время занимался пиратскими сайтами, а сейчас хочется для себя понять принципы и куда всё движется, не всю же жизнь ставочки и казино рекламировать
Аноним 28/02/20 Птн 17:45:00 #651 №1618155 
>>1618152
>зачем ебанаты ушли от ванилы
Затем же, зачем придумали ООП.
Чтобы пилить более сложные проекты. В реальной работе не будет laba1.cpp на 10 строк. Это будут ебы на несколько десятков или даже сотен тысяч строк
Аноним 28/02/20 Птн 17:45:24 #652 №1618156 
>>1607853
>Как в жс?
Как в жаве, быдло
Аноним 28/02/20 Птн 17:48:48 #653 №1618158 
>>1618156
Да я смотрю пыха вообще в жаву превращается. В какой-нить 10 версии уже можно будет пыхарями жавистов заменять. Все охуеют от такого поворота.
Аноним 28/02/20 Птн 17:51:20 #654 №1618162 
>>1618158
Если асинхронный io подвезут, то еще и go сдохнет
Аноним 28/02/20 Птн 17:51:31 #655 №1618164 
>>1618155
Вот все на ютуб еговорят сложные проекты, а что блять такое сложные проекты? Вывести список товаров на алике - это блять сложно? И по этому надо так голову ломать ради их видения того как всё должно работать?
Аноним 28/02/20 Птн 17:53:06 #656 №1618166 
>>1618164
>Вывести список товаров на алике - это блять сложно
Да, сложно. Там может быть с десяток таблиц для хранения данных по товарам + склады + акции + еще хуета какая. И нужно умудриться сделать так, чтобы это отрабатывало за адекватное время.
sageАноним 28/02/20 Птн 17:53:50 #657 №1618167 
>>1617931
Не обедать на работе и не жрать всякое говно. Не пердеть, короче. У меня одно время была проблема вонючих ног, лол, решил всякими средствами, но некоторое время было неловко.
Аноним 28/02/20 Птн 17:56:08 #658 №1618169 
>>1618164
>Вывести список товаров на алике - это блять сложно
Да, блять, это сложно, надо учесть твои индивидуальные предпочтения и сезонные изменения с помощью нейронки и только потом вывести. Все это на 100500 серверах с автодеплоем.
Сложные проекты - это про дружбу говна с мочой, спермой и слизью, чтобы все это вместе работало.

На самом деле действительно сложные проекты сложные уже настолько, что какой-то единой инфраструктуры у них вообще нет, кругом микросервисы, которые общаются между собой по заданным протоколам, каждый сервис разрабатывают отдельные разрабы на своем стеке и как работает какой-то другой в душе не ебут даже, чисто по той причине, что невозможно синхронизировать такую разработку.
Аноним 28/02/20 Птн 18:04:04 #659 №1618173 
Блять мне просто стыдно что программисты так деградровали и убили веб разработку, превратив всё в кучу говна из костылей на костылях, всё из-за своей лени и подходе лишь бы быстрее высрать, получть бабки и сбежать на балии ебись оно конём как оно после него будет работать, блядская хипсерская сущность пидораса
Аноним 28/02/20 Птн 18:06:19 #660 №1618177 
>>1618173
Ты сразу в двух тредах рвёшься что ли? Эка у тебя пердак разметало от собственной необучаемости.
Аноним 28/02/20 Птн 18:07:42 #661 №1618178 
>>1618173
>деградровали и убили веб разработку
А десктоп-разработку кто убил?
Кто в андроид-апи насрал, почему оно состоит из костылей абсолютно полностью?
Кто в C++ насрал, почему эта говнина такая кривая и немощная, что на ней невозможно разрабатывать сложный надежный софт?
Аноним 28/02/20 Птн 18:11:11 #662 №1618181 
Смерть хипстерам
Аноним 28/02/20 Птн 18:13:33 #663 №1618183 
>>1618178
>C++
И не надо тут пиздеть, мол, давно делали, в ту пору можно было говно лепить.
Тот же пых уже несколько мажорных версий поменял и PHP7 - это совсем не то самое, что PHP4.
А кресты как были кривой парашей, так и остались
Аноним 28/02/20 Птн 18:26:13 #664 №1618191 
Посмотрел этот высер https://www.youtube.com/watch?v=2qdpP-jWH5E

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

Где вообще все эти блять невьебенные бекендеры и фронтендеры работают? Я вот чёто нихуя ни 1 не вижу и не слышу, почитав интернет и посмотрев ютуб куда не плюнь везде невьебенный программист, НО ГДЕ БЛЯТЬ ОНИ ВСЕ, мне вот нарример просто интересно посмотреть на такую контору, что эти распиздяи за 200к там такого невьебатого делают что имеют такое невьебенное чсв и считают что жизнь удалась, по мне так это ленивые создающие вид работы черви, ну не видел я ни одного за работой, не верю я что там пиздец так всё сложно что прям пизда
Аноним 28/02/20 Птн 18:28:32 #665 №1618194 
>>1618181
тебе в руби тред
Аноним 28/02/20 Птн 18:45:39 #666 №1618205 
>>1618191
Завидно?
Аноним 28/02/20 Птн 19:00:28 #667 №1618215 
>>1618205
Нет же, я хочу понять чем я буду заниматься, если решу окунуться в это говно из костылей и мочи с головой
Аноним 28/02/20 Птн 19:15:33 #668 №1618221 
>>1618191
Фичи всякие добавляют, ящитаю. Вот год назад мой банк не умел в статистику, обмен валют на сайте и много других операций, сейчас все это прикрутили, стало заебись.
Аноним 28/02/20 Птн 19:19:03 #669 №1618222 
>>1618221
>Фичи всякие добавляют
Всё верно. Фичи, дебаг, документация, прочая поддержка. Запил сервиса это только начало и никто на этом не останавливается. Зачастую сервис начинает работать и приносить прибыль будучи даже не дописанным до полного функционала. Ну а потом программист сидит как минимум для того, чтобы было кому разбираться в этом говне если что-то упадёт.
Аноним 28/02/20 Птн 19:21:03 #670 №1618223 
почему пыху чморят?
Аноним 28/02/20 Птн 19:22:20 #671 №1618224 
>>1618223
Кто чморит?
Аноним 28/02/20 Птн 19:23:03 #672 №1618225 
>>1618224
все,даже сами пхпешники
Аноним 28/02/20 Птн 19:24:14 #673 №1618227 
>>1618225
Таблетки попей что ли - у тебя галлюцинации.
Аноним 28/02/20 Птн 19:30:23 #674 №1618234 
>>1618225
потому что вебдев - это "не тру программинг"
Аноним 28/02/20 Птн 19:34:54 #675 №1618241 
>>1618234
>тру программинг
чоэта?
Аноним 28/02/20 Птн 20:10:32 #676 №1618272 
>>1618215
Допиливать какой-нить проект на mvc фреймворке на ~100к строк
Аноним 28/02/20 Птн 20:21:06 #677 №1618285 
>>1618267
>создав сайт с говном можно иметь в 2 раза больше с рекламы
Если б я хотел бы говно рекламировать - не лез бы в программирование. Ты совсем даун?
Аноним 28/02/20 Птн 20:21:46 #678 №1618288 
Опа.
Аноним 28/02/20 Птн 20:46:15 #679 №1618316 
Сап, двач. Короче, сижу на петушиной работе на похапе уже 4 месяца. Мне скучно, хочу найти другое место. Посоветуйте чё написать в гитхабе.
Я фулстек, знаю laravel, vue, angular и немножко ноды. Но проект хочу делать на похыче
Чё сделать заебатого? Идей вообще нет. Желательно что-то такое, что можно рили хостануть и чтоб польза была.

Единственное что в голову лезет - это приложение по генерации тестов и опросов, но это же такая лажа...
Аноним 28/02/20 Птн 21:30:25 #680 №1618368 
>>1618316
shadowcloud
Аноним 28/02/20 Птн 22:26:52 #681 №1618406 
3123123123131231.png
>>1599201 (OP)
Приветствую) Вопрос от новичка:
в пятой строке все верно написал?
Аноним 28/02/20 Птн 22:31:52 #682 №1618411 
>>1618406
Название переменной неудачное. Оно должно говорить о содержимом, а не быть каким-то невнятным глаголом.
Аноним 29/02/20 Суб 05:41:38 #683 №1618577 
>>1618167
>Не обедать на работе

Ну охуеть теперь, мне что голодным сидеть?
Аноним 29/02/20 Суб 05:52:51 #684 №1618579 
>>1618224
Он наверное имеет ввиду ХуйДихо и прочих программистов с ютуба
Аноним 29/02/20 Суб 10:00:55 #685 №1618632 
>>1618222
>документация
А как это делается, где можно почитать или посмотреть образец составления документации?
Аноним 29/02/20 Суб 11:40:11 #686 №1618677 
>>1618579
Они ж ролики по пхп делают - старательно пересказывают мануалы, разбавляя рекламой каждые 10 минут.
Аноним 29/02/20 Суб 12:49:16 #687 №1618724 
А почему люди на cms гонят? - это же админка, которую без готовой cms надо будет самому делать? То есть без cms, самописной или покупной - не обойтись для какого-нибудь интернет магазины?
Аноним 29/02/20 Суб 13:58:59 #688 №1618769 
image.png
Анонсы, скачал с гитхаба похапе фреймворков для вскрытия, я правильно понимаю, что пердолиться в сосноль и ставить компостер нужно для того чтобы он к этим мёртворождённым докачивал всякие доп. жс библиотеки и прочую хуйню чтобы этот гондон штопаный ожил и начал работать?

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

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

Тред вроде бы утонул, почему не пересоздают?
Аноним 29/02/20 Суб 14:00:25 #689 №1618770 
>>1618724
Наверно потому что весь код цмс в открытом доступе и все кулцхацкеры их уже изъебали и прошурстрили от и до и знают с какой стороны к ним подойти чтобы присунуть админу в жопу и в рот
Аноним 29/02/20 Суб 14:04:53 #690 №1618775 
>>1618724
>А почему люди на cms гонят?
Потому что там практически нет написания кода. По сути конфигурируешь готовую систему. Т.е. к разработке относится опосредованно.
Аноним 29/02/20 Суб 14:22:45 #691 №1618787 
>>1618769
Композер ставит только php библиотеки, с жс он не работает.

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

>На пике я так понимаю это типа как в нормальных языках подключение библиотек происходит?
Вроде того. Далее либо создаешь нужный объект, либо через DI тащишь что нужно.
Аноним 29/02/20 Суб 14:24:44 #692 №1618790 
>>1618787
Зачем ты отвечаешь зелени?
Аноним 29/02/20 Суб 14:25:16 #693 №1618792 
>>1618769

Да, композер скачивает (в папку vendor), устанавливает и обеспечивает автозагрузку библиотек, прописанных в composer.json.

Ты можешь найти любую библиотеку, зайдя на https://packagist.org/ и вбив ее имя из composer.json. Там будет выдана ссылка на гитхаб, на котором ты можешь скачать библиотеку архивом и вручную установить в папку vendor, если у тебя много свободного времени, чтобы делать вручную то, что может сделать программа.

Композер также настраивает автозагрузку для кода и всех сторонних библиотек. Почитать про автозагрузку можно тут https://github.com/codedokode/pasta/blob/master/php/autoload.md Про композер можно почитать в документации к нему на англ.

Если ты хочешь разбираться в фреймворках, тебе надо понимать ООП и некоторые паттерны. Про ООП ты можешь почитать, открыв главу "ООП" из учебника в шапке, или в любом другом учебнике. Куча полезной информации, например, про паттерны работы с БД в фрйемворках или шаблонизацию, есть тут https://github.com/codedokode/pasta/

>>1618775

Ну так она и называется - система управления контентом, а не система написания кода.

Аноним 29/02/20 Суб 14:35:19 #694 №1618800 
>>1618769

На картинке не подключение библиотек, а указывается, какому полному имени класса соответствует короткий синоним в коде. Например, там указано полное имя классов Exists, In, NotIn, которые в коде пишутся просто одним словом без длинного неймспейса.

Тред пересоздадим на 800-900 посте, или позже, если у меня будет мало времени.

>>1618632

Документации бывают разные. Есть документация по коду - phpDoc - погугли сам - это специальные комментарии в коде. Из них можно сгененировать что-то такое: https://devdocs.io/symfony~3.4/symfony/component/httpfoundation/cookie

А бывает документация к API, например:

- https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/reference/Clusterer-docpage/
- https://api.apiship.ru/doc/



Аноним 29/02/20 Суб 14:36:38 #695 №1618801 
>>1618790
Делать нехуй
Аноним 29/02/20 Суб 14:42:25 #696 №1618803 
>>1618191

Если ты хороший специалист, то даже если тебя уволят, у тебя будет несколько новых предложений о работе.

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

То, что ты не видел, не значит, что этого нет.

>>1618164

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

По твоей логике, дом построить - тоже просто кирпичи друг на друга положить. Зачем проектировать, делать расчеты, производственные графики, оптимизацию снабжения итд.
Аноним 29/02/20 Суб 14:54:13 #697 №1618815 
>>1618152

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

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

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

Я тебе советую: попробуй сделать какую-то экранную форму с зависимостями сначала на чистом JS, а потом на фреймворке. Например: форма заказа в магазине, форма выдачи кредита (с кучей условий, проверок, зависимых друг от друга полей). Или еще лучше: сделай ленту новостей. Просто есть новости, в виде бесконечной ленты, которая подтягивается с сервера. Новости можно читать, можно лайкать и комментировать. Есть также категории можно смотреть новости только в категории. Еще круче, если твое приложение сможет кешировать данные и работать даже при временном пропадании интернета (например: ты ставишь лайк, и при появлении интернета он отправляется на сервер и фиксируется окончательно). В ходе разработки такого приложения тебе придется и промисы изучать, и реактивное программирование, и может rx.js
Аноним 29/02/20 Суб 14:56:38 #698 №1618817 
>>1618790
Всмысле бля, а зачем этот тред нужен? Прочитай название "Клуб изучающих PHP". Или ты чсв анимешник который считает себя тру прогером и всех кто только начинает ненавидит потому что знает больше них и выше них и считает их нелью?Анимешники нелюдь и есть кста

>>1618787
>>1618792
>>1618800
Спасибо за развёрнутые ответы аноны, не понял только что за библиотеки качает например ларавел, в нём же вроде как уже всё должно быть, или у них такая задумка изначально, не писать ещё одини велосипеды, а написать код связующий кучи всеми использующихся библиотек и он получается в момент скачивает качает последнюю их версию которую разрабы ларавела посчитали совместимой с их кодом и прописали в композер файлах

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

Ну и по жс либам, неужели он не качает какой-нибудь бутстрап или ангуляры с вьювами
Аноним 29/02/20 Суб 14:58:18 #699 №1618819 
Кстати аноны что думаете об этом барадаче? Вроде хорошо объясняет основы https://www.youtube.com/channel/UCeObZv89Stb2xLtjLJ0De3Q только после него нормально смог понять некоторые вещи
Аноним 29/02/20 Суб 15:04:47 #700 №1618829 
>>1618817
>Или ты чсв
Как охуевшее чсв тут ведешь себя ты, поэтому и впизду тебе отвечать.
Аноним 29/02/20 Суб 15:08:44 #701 №1618837 
>>1618149

С гитхаба можно скачать zip-архив любой версии кода. Разве плохо? Также, у библиотек часто есть страница "релизы", где есть архивы с кодом определенных, протестированных версий.

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

>>1618138

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

>>1618135

Для начала, почему бы тебе не почитать про MVC: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

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

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

Я видел код без фреймворков, почти всегда это нечитаемая, неудобная лапша. Ну например: люди берут, на каждый раздел делают свой файл вроде index,php, news.php, forum.php. В итоге код получается не повторно используемый - код взятия последних новостей жестко зашит в news.php и его нельзя вызвать из forum.php, чтобы отобразить блок с новостями в сайдбаре. И это, по твоему, лучше, чем фреймворк?

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

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

Также, фреймворк содержит средства для перевода сайта на другие языки. Организации "красивых" URL. Шаблонизатор. Защита от SQL inj, XSS, XSRF. В твоем самописном коде это есть? Или ты предлагаешь тратить рабочее время и пытаться сделать то, что уже сделано другими?
Аноним 29/02/20 Суб 15:14:41 #702 №1618847 
>>1618792
>codedokode/pasta
Это охуенно, просто какой-то олдскулл, спасибо
Аноним 29/02/20 Суб 15:15:30 #703 №1618849 
>>1618829
Я чсв? Да ты чего, я обычный мамкин херой
Аноним 29/02/20 Суб 15:16:18 #704 №1618851 
>>1618135

Также, не берись за Симфони сразу, начни со Slim. И прочти документацию или перевод или уроки по нему, а параллельно изучай код. Слим маленький, там по сути только роутер + request/response + DI (про DI тебе тоже надо почитать отдельно).

>>1618108

Это извращение, по моему. Ну например: у тебя нет ограничений и при большом числе запросов запустится куча процессов PHP и все зависнет намертво. То есть твое решение работает "на авось". Это плохое решение.

Тебе нужна очередь задач. Код веб-скрипта создает задачу, и кладет в очередь. Рабочие-воркеры, запущенные из CLI, следят за очередью и берут из нее задачи, выполняют, кладут результат в другую очередь или в БД. Ты определяешь число воркеров и твой сервер никогда не перегружается, разве что задачи начинают обрабатываться с большей задержкой. Для этого не нужен PHP.

>>1617931

Сходи к врачу для начала и подбери диету. Только вот зачем этот оффтопик писать в наш тред про программирование?

Аноним 29/02/20 Суб 15:21:55 #705 №1618861 
>>1618770
А битрикс например в открытом доступе разве? Может ли быть дело только в безопасности? - разработчики cms могут ведь просто закрыть все дыры, а хейт останется.
>>1618775
> По сути конфигурируешь готовую систему.
> Т.е. к разработке относится опосредованно.
Не вижу связи. И там ведь готова только админка - надо её как-то связать с фронтом, фронт надо написать или нет?, вроде бы компоненты cms можно редактировать, писать свои.
Аноним 29/02/20 Суб 15:26:50 #706 №1618872 
>>1618861
>хейт останется.
Ты ведь наверняка знаешь ответ на свой вопрос. Это ужасный код, но он подходит бизнесу и потому живет. Разработчикам не нравится работать с говнокодом, поэтому мы хейтим. И по сути мало кто с этим работает из тех, у кого голова на плечах. Обычно на долю цмсок приходятся эникеи всякие.
Ты скорее всего подумаешь, что определение говнокода субъективно. В мелочах да, но в общем случае код всяких битриксов никакой здравомыслящий разраб не назовет нормальным.
Алсо, именно эта вот срань сделала плохую репутацию пхп.
Аноним 29/02/20 Суб 15:27:10 #707 №1618873 
>>1617651

Молодец. Ты рассуждаешь правильно, а в уроке тебя учат фигне. Подумай: что на самом деле надо делать при возникновении ошибки в веб-скрипте? Зачем пользователю текст ошибки? Надо логгировать ошибку в стандартный лог (журнал) ошибок PHP, отдавать HTTP-код состояния 5xx, а пользователю показывать красивую заглушку, чтобы он понял, что на сайте временная проблема и админы в курсе. Некоторые еще в реальном/почти реальном времени эту ошибку постят в какой-нибудь чат. Теперь можешь попробовать это реализовать и запостить код на проверку

Урок про исключения, может он тебе пригодится: https://github.com/codedokode/pasta/blob/master/php/exceptions.md

> А как же миф типа если его не закрыть, то оно останется открытым в ожидании пользователя?

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

>>1617633

mysqli_close имеет тот плюс, что позволяет тебе увидеть какую-то ошибку (например: не все данные получены). Или понять, что соединение успешно закрыто. При автоматическом закрытии ошибки скорее всего не логгируются.

>>1617621

Можно скачать руками. Можно не использовать библиотеки и все писать с нуля самому.

>>1617603

PDO поддерживает исключения по желанию. try/catch писать не требуется, изучи исключения для начала: https://github.com/codedokode/pasta/blob/master/php/exceptions.md


Аноним 29/02/20 Суб 15:38:51 #708 №1618883 
>>1618817

Почему бы тебе самому не ответить на свой вопрос. Возьми главный репозиторий Laravel, https://github.com/laravel/laravel нажми на composer.json в нем, найди там список зависимостей (библиотек) в разделах require и require-dev и каждую вбей в поиске на packagist.org. Прочти описание каждой и нам тут отпишись кратким списком: используется N библиотек для того-то, M библиотек для того-то.

У каждой библиотеки есть свой composer.json, проверь и его также, чтобы увидеть зависимости этой библиотеки.

Можешь даже схему зависимостей со стрелочками нарисовать. А, хотя, есть готовый инструмент для этого: https://github.com/clue/graph-composer

> Интересно а может разраб одной из либ зная что его либу качает композер - изменить её

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

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

Проверь. Там есть package.json - это фронтенд-зависимости, скорее всего это конфиг менеджера пакетов npm или yarn. У них есть свой сайт-репозиторий, где можно искать пакеты по названию.
Аноним 29/02/20 Суб 15:39:37 #709 №1618885 
>>1618803
Неужели эту задачу можно делать годами целым блять отделом дормоедов, я не верю, стройку и то за пол года делают
Аноним 29/02/20 Суб 15:46:50 #710 №1618894 
>>1618815
Ванилу давно заменил jquery, потому что сам понял что это куча лишних повторений, хочешь сказать что тут и jquery неосиляет такие задачи что ты описал, по этому и хочу сперва внянуться в вью, на вервый взгляд его синктакси понравился больше, ну а потом постепенно и в бекенд втянуться

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

Если например в 30 начать окунаться в веб дев, мне кажется так можно и 40 летним девственником остаться в полнмо одиночестве
Аноним 29/02/20 Суб 15:52:50 #711 №1618900 
>>1618837
В общем после твоего описания могу сказать что не стоит смотреть пидоров самоучек с ютуба, это они так засрали голову что сложно понять то что ты описал без практики, а какая может быть практика у начинающего, спасибо за инфу попробую её усвоить
Аноним 29/02/20 Суб 15:56:12 #712 №1618903 
>>1618894
>jquery
Это кучка оберток и другой интерфейс. Где-то в треде проскакивало, что влезетело это все на фоне недостаточной реализации ванилы, а сейчас уже и ни к чему получается. Не знаю, насколько это правда. Но вообще уже давно за собой заметил, что по jquery даже не задумываюсь гуглить, т.к. проще на ванилке сделать.
>хочешь сказать что тут и jquery неосиляет такие задачи что ты описал
Осиляет не лучше, чем ванила. Jquery, как ты мог бы уже заметить, вообще о другом. Она не дает каких-то новых фич для разработки, просто немного код меняет. Раньше считалось, что в сторону упрощения и лаконичности, сейчас уже практически никем не считается.
Аноним 29/02/20 Суб 16:01:40 #713 №1618913 
>>1618873
>codedokode/pasta
Ору анон, у тебя есть ответы на всё, спасибо что мучаешься с нами
Аноним 29/02/20 Суб 16:04:41 #714 №1618918 
>>1618883
Ещё раз спасибо, как будто говно из головы выгрузил и начал понимать что к чему
Аноним 29/02/20 Суб 16:10:26 #715 №1618927 
>>1618903
Ну почему же, если добавить к нему ещё плагины https://plugins.jquery.com/ очень даже чего много нового он можеи предложить, вью пока ещё сильно не изучал, но думаю там не особо много нового будет с чем бы джейквери не справился, посмотрим
Аноним 29/02/20 Суб 16:12:32 #716 №1618932 
>>1618927
Плюс UI https://jqueryui.com/
Аноним 29/02/20 Суб 16:12:34 #717 №1618933 
>>1618927
>не особо много нового будет
>посмотрим
Ты для себя откроешь совершенно другой мир.
Аноним 29/02/20 Суб 16:41:26 #718 №1618984 
>>1618819
С виду уровень хаудихо. 95% воды, 5% пересказ документации.
Аноним 29/02/20 Суб 16:45:04 #719 №1618989 
>>1618900
>не стоит смотреть пидоров самоучек с ютуба
С этого и стоило начать. В ру сегменте можно максимум 1-2 чела назвать, материалы которых будут полезны. Остальное - инфомусор.
Аноним 29/02/20 Суб 16:51:39 #720 №1618995 
>>1618861
>разработчики cms могут ведь просто закрыть все дыры
Возьмем битрикс. В нем огромная кодовая база отвратительно написанная. Чтобы это привести в человеческий вид, понадобиться минимум х3 времени от разработки битрикса, соответственно бюджеты разработки улетят в небеса.

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

Как-то так и приходим к тому, что есть. Отвратительная кодовая база платформы, популярность которой обеспечена маркетингом.
Аноним 29/02/20 Суб 16:55:27 #721 №1618998 
>>1618885
>Неужели эту задачу можно делать годами целым блять отделом дормоедов
Да, вполне можно годами делать гигантов уровня алика.
Какой-нибудь средней величины продукт вполне может потребовать на разработку пару человеколет.
Раньше софт писали десятилетиями в прошлом веке.
Аноним 29/02/20 Суб 17:38:53 #722 №1619027 
>>1618998
Судя по алику, делают его по 1 строчке кода в сутки, как вспомню его вырвиглазные описания когда он только стал на русском языке и охуеваю, что-то уровня веб сайтов 90-х годов с таблицами и розовыми рамками и прочим, неужели этим обмуткам так сложно сделать нормальный редактор для продавцов, чтобы они делали вменяемое описание, а с этих их опечаток и строк с маленькой буквы и кучей пробелов и знаков препинания, как блять иглами по глазам
Аноним 29/02/20 Суб 20:53:50 #723 №1619249 
спрашивал в вин10 треде так что думаю будет не лишним и тут спросить, мможет кто сталкивался
анчоусы, есть ноутбук на вин10. устанавливал опенсервер, попросил перезагрузиться после становки чтобы заработал серак mysql. в итоге после перезагрузки отвалился вай фай. в устройствах вот че показывает. перезагрузился в xubuntu - там все пашет как часы. в чем может быть трабла?
Аноним 29/02/20 Суб 21:11:10 #724 №1619266 
2313212.png
<?php
echo "Снова вопрос от нуба:\n";

№1) http://codepad.org/MdeA8uM6
№2) http://codepad.org/TB3jendg

Операция "$teaBags + 1;" в переменной $teaBagsAfter работает, но если написать форму операции попроще "$teaBags ++" (№2) то получается пи*дец.

Собственно, что я не так написал?
?>
Аноним 29/02/20 Суб 22:24:29 #725 №1619325 
>>1619266
Поясняю. Оператор "++", ещё называется постинкрементом. То есть вначале происходит присвоение значения, после чего идёт увеличение на +1.
Аноним 29/02/20 Суб 23:52:37 #726 №1619448 
neponyatno1.png
neponyatno2.png
>>1619325
https://ideone.com/34kOLI
Так что я в ПЯТОЙ строчке неправильно написал то?

Блин, ощущение что я зря просто ради эксперимента накалякал текст, вдруг там вообще операций ещё не хватает, которые ещё не начал изучать...
Аноним 01/03/20 Вск 01:39:31 #727 №1619545 
>>1619448
Объясняю:

$teaBags = 25;
Тут всё логично, $teaBags ровен 25
$teaBagsAfter = $teaBags ++;
А вот тут идут хитрости: $teaBagsAfter равен $teaBags,то есть 25, после чего происходит инкремент $teaBags на единичку и он становится 26.
Аноним 01/03/20 Вск 02:22:46 #728 №1619564 
neponyatno2.png
neponyatno1.png
>>1619545
АНОН, не хочу утомлять конечно Я БЛ#ЯТЬ НЕ ТУ ССЫЛКУ КИНУЛ! ТАМ ВСЁ ВЕРНО!
У меня вопрос по скриншотам был.
$teaBangsAfter = $teaBangs ++; -вот в этом варианте получается нелогичная ситуация см 2 скрин. - ПОЧЕМУ?
Пожалуйста, вчитайся во-второй скрин
пробую еще раз запилить нормальную ссылку https://ideone.com/Mt0r0V
Аноним 01/03/20 Вск 05:42:05 #729 №1619600 
>>1619564
Постфиксный инкремент сначала возвращает старое значение, а потом меняет существующее. По этому у тебя так и выходит.
Кроме того раз уж ты делаешь с двумя переменными, то тебе не нужно старое значение менять, а инкременты и декременты это делают. На твоем коде лучше подойдет просто $teaBags + 1.
А еще можешь вообще без второй переменной обойтись.
Аноним 01/03/20 Вск 11:30:22 #730 №1619674 
>>1618577
Ну или перди. А чего ты хотел? Обожраться своим смуззи и не пердеть вонюче?
Аноним 01/03/20 Вск 11:32:39 #731 №1619677 
>>1618769
> сосноль
> компостер
> и прочую хуйню
> этот гондон штопаный
> какое говно ему надо
> чтобы это говно наполнилось говном
> типа как в нормальных языках
> с прочим говном

С таким отношением ты даже в PHP не разберешься.
Аноним 01/03/20 Вск 12:45:38 #732 №1619718 
кто пользовался свулом в проде?
Аноним 01/03/20 Вск 12:56:28 #733 №1619736 
Как убедить руководтсво не использовать Битрикс? Две маркетолухички крепко сели на лицо директору, и мои доводы перестали работать. В целом-то мне пох, я просто найду другую работу, но жалко компанию, в которой больше года проработал и столько всего хорошего сделал.
Аноним 01/03/20 Вск 13:10:58 #734 №1619752 
>>1619736
>я просто найду другую работу
this.
Других вариантов нет.
Аноним 01/03/20 Вск 13:20:07 #735 №1619759 
>>1619736
Скажи честно, что Bitrix24 - это CRM система, за которую надо платить каждый год тысячи рублей.
Аноним 01/03/20 Вск 14:28:23 #736 №1619834 
>>1619736
Похер на компанию, для себя живешь, а не для дяди.
Ливай сразу как только завезут битрикс. А лучше превентивными мерами: начать искать другую галеру + обозначить, что с этим говном работать не будешь.
Аноним 01/03/20 Вск 15:46:27 #737 №1619887 
>>1619600
Спасибо, адекватный анон! впредь не буду выдумывать задания себе если надо будет, то поищу в нете, также смотреть о целесообразности как в данном случае.
Аноним 01/03/20 Вск 15:48:41 #738 №1619891 
>>1617931
Моя тян также на работе держит газок. Терпит до прихода домой 12ч, а как придёт - пердит на два этажа вверх-вниз.
Аноним 01/03/20 Вск 15:53:16 #739 №1619893 
В треде есть программисты с больной шеей? Как жизнь живёте? Какие меры принимаете по улучшению остеоили как там его, забыл что-тохандроза? Все-таки работа седячая, горбиться за монитором призодится не один час.
Аноним 01/03/20 Вск 15:59:00 #740 №1619896 
>>1619893
У меня походу все виды остеохандроза. Да и думаю у многих тут, просто не все проверяются.
Как-то терплю, но иногда очень бесит, особенно шейный. Иногда вспоминаю и делаю зарядку, но толку от нее ноль.
Аноним 01/03/20 Вск 16:34:15 #741 №1619924 
>>1619896
100% ты делаешь неправильную зарядку, я так один раз в больницу слёг на 2-3 недели (неправильно и не то делал, аж перекосило подбородком к груди).
Советую записаться к ...не массажисту, а покруче, я не помню как у них профессия называется, но некоторые из них обучают всяких ссаненьких массажистов (которые не шарят за работу мышц, костей и т.д.). Короче этот специалист сделает массаж за 1-2к и покажет упражнения которые именно тебе подойдут, то есть индивидуально - А там уже от тебя зависит, я например делаю когда только заболит, хотя надо каждый день делать.
Аноним 01/03/20 Вск 16:35:48 #742 №1619926 
>>1619924
Мануальщики?
>я например делаю когда только заболит
У меня чаще ощущение давления, чем боль.
Аноним 01/03/20 Вск 16:38:38 #743 №1619929 
>>1619736
>Две маркетолухички
Можно попытаться намекнуть этому директору, что тебе как программисту виднее.
Аноним 01/03/20 Вск 16:40:23 #744 №1619931 
>>1619929
Он пришел к мнению, что я просто ленюсь.
Аноним 01/03/20 Вск 16:42:57 #745 №1619939 
>>1619931
Тогда без вариантов - меняй контору.
Аноним 01/03/20 Вск 16:56:53 #746 №1619949 
>>1619249

Скорее всего опенсервер не при чем.

>>1613334

> Приведите пожалуйста аргументы почему нужно шифровать 100% сообщений?

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

Если делать шифрование отключаемым, может делать по дефолту его включенным, а далее отключать по желанию?

Насчет поиска и сортировки - интересный аргумент. Ну вот тебе и задачка на проектирование, подумай, реально ли реализовать 1) сортировку 2) поиск при полном шифровании сообщений? Что касается сортировки, то тут точно можно присваивать сообщениям какие-то номера вместо времени. Поиск обычно (без шифрования) делается построением индекса, такого вида:

{ слово -> [список id всех сообщений, где оно есть и позиция в сообщениях ] }

Как минимум реально сделать поиск, если у нас приложение поддерживает локальную БД со всеми сообщениями.

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

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

> Осталось только повторить интерфейс.

Хорошая идея, взять за основу продуманный интерфейс.

> Как рассчитать размер плейсхолдера?

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

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

> А можно назвать ещё проще и лаконичней - party?

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

> А почему нельзя назвать просто и лаконично date? Разве на очевидно что это дата сообщения?

Можно и так, мне показалось, что может быть, со словом send будет еще более очевидно.

> Какие метаданные, помимо даты, вы хотели бы чтобы шифровались?

В идеале - все, что можно.

> Как тестируются параллельное выполнение запросов?

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

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

Надо, чтобы хотя бы индексы влезали, а лучше вся таблица. Иначе будет возникать нагрузка на дисковую подсистему, хотя тут SSD и выручает, но он не сравнится по скорости с памятью. Либо писать какие-то свои решения на Си/Раст/Го, которые будут более тесно хранить данные в памяти, но это очень сложно. Если речь о бизнесе, то купить память будет дешевле.

> Я погуглил этот вопрос, и создаётся впечатление что PostgreSQL решает автоматически когда хранить данные в RAM а когда на диске, и предпочтительнее в RAM. Это верно?

В MySQL это просто задается опциями в конфиге. Там есть "пул" (InnoDB Pool) в памяти, в котором кешируются "страницы" - куски таблиц и индексов. Администратор задает размер пула. В Postgres - не знаю, возможно, что она полагается на системный кеш страниц (все современные ОС используют невыделенную память как кеш страниц с диска, то есть при чтении кладут туда страницы и при повторном обращении оттуда же берут: https://habr.com/ru/company/smart_soft/blog/228937/ ). В этом случае объем кеша определяется количеством свободной памяти.

> Следовало бы увеличить количество пользователей до сотен и количество сообщений до тысяч?

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

> Будет ли лучше если я вместо выполнения HTTP-запросов создам объекты с помощью Faker и factory-muffin, и выполню все запросы к БД напрямую?

Не знаю, надо попробовать. Быстрее всего будет делать большие INSERT напрямую, но может, и через Доктрину будет приемлемая скорость.
Аноним 01/03/20 Вск 17:01:44 #747 №1619956 
>>1619924
https://www.youtube.com/watch?v=BJQfT9C5Adc
Аноним 01/03/20 Вск 18:04:13 #748 №1620015 
>>1619926
+
Аноним 01/03/20 Вск 18:05:18 #749 №1620017 
>>1619956
Лучше все-таки с мануальным терапевтом, который тебя помассажирует и ну ты понял составит упражнения
Аноним 01/03/20 Вск 21:04:26 #750 №1620252 
>>1619893
>>1619896
По поводу остеохондроза могу одну неочевидную вещь посоветовать - если боли хронические и длятся более трех месяцев, начинайте пить антидепрессанты. Остеохондроз это просто дегенеративные изменения - это не должно болеть, если у вас 1-2 степень. У меня вот 2 степень грудного остеохондроза - были лютейшие боли до антидепрессантов, теперь иногда есть дискомфорт, но в целом болей нет. У друга ему врач в итоге тоже антидепрессанты назначил сначала фенибут правда есть шейный остеохондроз - как я понял, шейный это пиздос, но тоже можно загнать в ремиссию, а болей быть по-хорошему не должно.
Аноним 01/03/20 Вск 23:20:39 #751 №1620447 
Двач, как решить задачу с регулярками где надо найти правильные номера телефона?
Я понял что мне надо найти +7|8 после чего должны быть 10 чисел и между ними могут быть скобки, пробелы или -
И если 10 чисел найти можно просто вписав [0-9]{10} то как сделать так чтобы между ними еще и эти символы находило?
Все что пока что смог сделать это ^(\+ ?7| ?8)([0-9]{10}[- ()]?+)$ , но оно не работает
Аноним 02/03/20 Пнд 01:23:59 #752 №1620526 
Аноны, посоветуйте хорошую php сборочку с гитхаба которая собирает данные о пользователи, то есть я например с помощью ajax отправляю запрос на нужный файл, а они записывает айпи, страницу с которой был запрос и возможно дополнительный get запрос который я передам ajax вместе с url файла сборочки
Аноним 02/03/20 Пнд 01:29:43 #753 №1620531 
>>1619893
А лучше скажите как выбрать нормальное кресло для долгого сидения, НУ ЖЕ АНОНЫ
Аноним 02/03/20 Пнд 07:04:33 #754 №1620609 
>>1620252
Вообще актуальная тема. Надо в медаче тред поискать для ИТшников. Набор болячек-то у всех одинаковый почти.
Аноним 02/03/20 Пнд 10:32:03 #755 №1620721 
>>1620447

Если писать [0-9]{10} то между цифрами не может быть других символов. Но ты можешь использовать здесь круглые скобки, чтобы написать:

(ровно 1 цифра + любые символы){10}

И тогда повторяться 10 раз будет все выражение в круглых скобках.
Аноним 02/03/20 Пнд 10:52:58 #756 №1620746 
>>1620609
Спинотред есть, только толку от него мало. Не те подходы к лечению там исповедуют. Глазотред - основной посыл в том, что ко врачу надо идти. Остальные проблемы опциональные.
Аноним 02/03/20 Пнд 11:06:39 #757 №1620783 
>>1620526
Возьми парсер, да напиши. Дел на один вечер.
Аноним 02/03/20 Пнд 11:44:51 #758 №1620834 
>>1620783
Почитав и посмотрел эти ваши ютубчики, я понял что писать велосипед заново - это признак дурачка, и что на этих ваших гитхабах уже всё написано и отшлифовано тоннами програмистов, вот и прошу поделиться хорошим движком/модулем на php по сбору статистики + возможность передавать в него свои get данные и всё это через ajax, в моём случае айди пользователя, ну или как подобное искать в гитхабе
Аноним 02/03/20 Пнд 12:09:24 #759 №1620869 
>>1620526

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

Если не хочется отдавать данные, то установи Piwik к себе.
Аноним 02/03/20 Пнд 13:05:11 #760 №1620931 
>>1620834
У тебя задача без конкретики. Не понятно, откуда ты собрался собирать данные, в каком формате хранить.
Аноним 02/03/20 Пнд 13:12:44 #761 №1620941 
>>1620834
>передавать в него свои get данные и всё это через ajax
Чё сказал? Какие данные передавать?
Не лезь.
Аноним 02/03/20 Пнд 13:23:41 #762 №1620955 
>>1620721
^(\+ ?7| ?8)([0-9]-? ?\(?\)?){10}$
Если попробовать написать в () то оно искать будет ровно 10 символов. То есть если будет номер 8(1)234567890 то регулярка его пропустит из за того что там 12 знаков а не 10. Как сделать чтобы регулярка находила ровно 10 цифр между которыми может быть любое кол-во знаков?
Аноним 02/03/20 Пнд 13:52:53 #763 №1620987 
image.png
https://developers.google.com/recaptcha/docs/v3

Поясните кто мб сталкивался с интеграцией капчи, не совсем понимаю что должно быть внутри метода вместо '...'
Аноним 02/03/20 Пнд 15:35:13 #764 №1621058 
>>1620955
Решил
(\+ ?7| ?8)(([-0() ]*[0-9])){10}$
Помогите с ошибкой говнокодер 02/03/20 Пнд 20:24:04 #765 №1621273 
WEB.jpg
Parse error: syntax error, unexpected ')' in C:\...\index.php on line 15

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Калькулятор</title>
</head>
<body>
<?php
if($_POST['submit'] )
{
$a = (int)$_POST['first_textbox'];
$b = (int)$_POST['second_textbox'];
$p = $_POST['operation'];
$c = '';
if($p == +) //15
$c = $a + $b;
else if($p == -)
$c = $a - $b;

else if($p == )
$c = $a
$b;

else if($p == /)
{
if($b == 0)
echo "You can not divide by zero";
else
$c = $a / $b;
}
else
$c = pow($a , $b);



}

?>
<form action="" method="post">
<input type="textarea" name="first_textbox" required />

<select name="operation" required>

<option value="+">+</option>
<option value="-">-</option>
<option value=""></option>
<option value="/">/</option>
<option value="^">^</option>

</select>

<input type="textarea" name="second_textbox" required />
<br>
<input type="submit" name="submit" />
</form>
<?php
if($c){
echo $c;
}
?>



</body>
<footer>
</footer>
</html>
говнокодер 02/03/20 Пнд 20:27:14 #766 №1621278 
>>1621273
Так лучше
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Калькулятор</title>
</head>
<body>
<?php
if($_POST['submit'] )
{
$a = (int)$_POST['first_textbox'];
$b = (int)$_POST['second_textbox'];
$p = $_POST['operation'];
$c = '';
if($p == +)
$c = $a + $b;
else if($p == -)
$c = $a - $b;

else if($p == )
$c = $a
$b;

else if($p == /)
{
if($b == 0)
echo "You can not divide by zero";
else
$c = $a / $b;
}
else
$c = pow($a , $b);



}

?>
<form action="" method="post">
<input type="textarea" name="first_textbox" required />

<select name="operation" required>

<option value="+">+</option>
<option value="-">-</option>
<option value=""></option>
<option value="/">/</option>
<option value="^">^</option>

</select>

<input type="textarea" name="second_textbox" required />
<br>
<input type="submit" name="submit" />
</form>
<?php
if($c){
echo $c;
}
?>



</body>
<footer>
</footer>
</html>
Аноним 02/03/20 Пнд 20:32:33 #767 №1621281 
>>1621273
>if($p == +)
if($p == '+')
Если я правильно понял твой код.
В следующий раз используй Switch
Аноним 02/03/20 Пнд 21:22:33 #768 №1621330 
>>1621281
>В следующий раз используй Switch
switch ($p)
case '+':
$c=$a+$b;
case '-':
$c=$a==0 or $b==0 ? $a-$b: error;
case '/':
$c=$a/$b
case '':
$c=$a
$b
Аноним 02/03/20 Пнд 21:44:16 #769 №1621347 
>>1621281
Два чая этому сеньору! Реально, спасибо большое, весь вечер ебался думал что не так, а свитч пока не знаю конструкции думаю буду сейчас разбираться.
Аноним 02/03/20 Пнд 22:20:14 #770 №1621420 
>>1621347
Поставил бы phpstorm, он бы подсветил эту ошибку
Аноним 02/03/20 Пнд 22:40:57 #771 №1621452 
>>1621420
Поставлю, спасибо за советы, они мне сейчас бесценные просто,чувствую себя слепым щенком просто
Аноним 02/03/20 Пнд 23:52:10 #772 №1621526 
>>1620931
>>1620941
Ну смотрите, пользователь заходит на страницу, нажимает кнопочки, а в это время повешанные на них события запускают ajax на url нашего php скрипта и подцепляют к нему уникальные айди, например mysite.ru/stat.php?iduser=2281488, а этот скрипт сохраняет в бд его айкпи, страницу с которой был запрос, его айди и ещё чего небудь, а потом я пишу админку или она может быть со скриптом, где я удобно смогу с какого url было больше всего запросов, какой пользователь какие урл посмотрел и сколько раз нажал заскриптованную кнопку, ну и с каких айпи на какие url были запросы, плюс можно сохранить их юзерагент чтобы отловить ботов и забанить их нахуй и в пизду по айпи, можно самому написать, но мне кажется это уже 100500 написали и отшлифовали на гитхабе, а всякие метрики и гугланалитики это для пидорасов и хипстеров с магбуком
Аноним 03/03/20 Втр 09:04:22 #773 №1621653 
>>1621420
Маркетолог джетбрейнс, залогинься.
Аноним 03/03/20 Втр 12:26:08 #774 №1621815 
>>1621653
Так не обязательно платить)
Аноним 03/03/20 Втр 12:28:32 #775 №1621818 
>>1621526
Ну да, похоже на гугл/яндекс аналитику. Ими и пользуются для подобных задач.
>всякие метрики и гугланалитики это для пидорасов и хипстеров с магбуком
Тыскозал?
Аноним 03/03/20 Втр 13:24:38 #776 №1621847 
>>1621815
Возня с мокрописьками - недойстойное занятие. Да и нех привыкать вообще.
Проще тот же NetBeans поставить, благо он бесплатный и есть поддержка пхп, да и вообще веба.
Аноним 03/03/20 Втр 14:15:16 #777 №1621893 
>>1621847
>NetBeans
Который даже 10% функционала жидбрейнса не умеет
Кушоем говно, зато бесплатно
Аноним 03/03/20 Втр 14:50:31 #778 №1621926 
>>1621893
>10% функционала жидбрейнса не умеет
Нинужно в 90% случаев.
Аноним 03/03/20 Втр 17:25:21 #779 №1622045 
новость треда
https://laravel-news.com/laravel7
Аноним 03/03/20 Втр 17:37:32 #780 №1622057 
>>1622045
А я 6 версию только учу. Что делоть теперь? Доучивать шестую или сразу на седьмую?
Аноним 03/03/20 Втр 17:39:10 #781 №1622059 
>>1622057
нет,прост потом посмотришь новые фичи 7,там их немного
Аноним 03/03/20 Втр 17:40:38 #782 №1622062 
>>1622057
Учи 8ую. Как раз к релизу успеешь
Аноним 03/03/20 Втр 17:42:38 #783 №1622066 
>>1622062
зачем ты его тралишь?
Аноним 03/03/20 Втр 17:43:42 #784 №1622067 
>>1622059
Пасиб за совет.
Аноним 03/03/20 Втр 18:21:27 #785 №1622103 
>>1622066
Глупость спросил.
Там же версии идут по нарастающей
5+немного говна = 6
6+немного говна = 7
Аноним 03/03/20 Втр 18:27:38 #786 №1622111 
>>1622103
>+немного говна
а где нет говна?
Аноним 03/03/20 Втр 18:37:53 #787 №1622117 
>>1622111
говно - фичи, которые ты скорее всего не будешь использовать
Аноним 03/03/20 Втр 19:01:20 #788 №1622133 
>>1622045
Добавили туда это >>1617937 велосипедное говно или нет?
Аноним 03/03/20 Втр 19:19:41 #789 №1622159 
>>1621818
Да бля анон нуне тупи, мне нужно просто чтобы при нажатии на нужную кнопку на скрипт отсылало уникальное айди и сам скрипт вдобавок записывал айпи с которого был запрос, то есть нажата кнопка и вносило в базу данных айпи, айдишник отосланный скрипту и ещё что-нибудь полезное заодно, например браузер и операционку, причём блять тут анальная метрика и аналитика? Мне это нужно для отлова багов и чтобы знать с какого устройства был юзер и с какйо страны, чтобы повторить баг, ну ёптвоюмать, или подскажи подобный скрипт или если знаешь скажи что таких готовых на гите нет и всё равно придётся писать свой
Аноним 03/03/20 Втр 19:28:17 #790 №1622169 
>>1622159
Сам пиши.
Сам пиши всё - и скрипты для этого, и админку не забудь, и базу задеплой под это дело. Ты ж знатный велосипедист, как я посмотрю.
Аноним 03/03/20 Втр 19:38:22 #791 №1622184 
>>1622169
Да ты гонишь, зачем мне для этих целей метрика и аналитика, я хочу статистику для выяления багов собрать, а не сливать своих юзеров в анальное рабство яндексу и гуглу, на вот вкуси немного своих корпораций добра https://www.youtube.com/watch?v=S8GlJk-wHSU
Аноним 03/03/20 Втр 19:48:51 #792 №1622202 
>>1622184
>пачаны, дайте мне плагин для сбора статистики
>вот тебе от гугла и яндекса - удобная админка, пользуются даж домохозяйки
>не хочу, дайте другое
Ищи сам.
Аноним 03/03/20 Втр 20:02:59 #793 №1622226 
>>1622202
Товарищ майор, идите нахуй, я не вас спрашивал, а анонов.
Аноним 03/03/20 Втр 20:31:59 #794 №1622260 
>>1622184

Я писал выше, есть piwik - это как гугл аналитика, но без гугла, на своем собственном сервере, open source.
Аноним 03/03/20 Втр 20:42:02 #795 №1622281 
>>1622260
Спасибо анон, но как-то слишком элитно, я думал о чём-то более крестьянском и простом, в админке тупо табличка где от самых кликабельных страниц с моим уникальным айди для каждой страницы к менее кликабельным и как доп информация это айпи/страна, браузер и система, мне хватит и этого, ладно я так понимаю аноны не подскажут, придётся писать самому, изобретать очереднйо велосипед, но я всё равно уверен что кто-то уже писал подобное
Аноним 03/03/20 Втр 21:27:11 #796 №1622323 
как дела с асинхронностью у php?
Аноним 04/03/20 Срд 00:23:47 #797 №1622500 
>>1622281
Запили своё крестьянское и простое, если не смог найти
Аноним 04/03/20 Срд 00:25:05 #798 №1622504 
>>1622323
Поддвачну вопрос. Какая-то контора whatshelp искала к себе асинхронщика на пхп, что поставило меня в ступор. Ессесна мне перезвонили.
Аноним 04/03/20 Срд 01:12:39 #799 №1622557 
>>1622500
Я не знаю как подобное искать на гитхабе, по этому и спрашивал
Аноним 04/03/20 Срд 06:06:28 #800 №1622623 
>>1622557
Пришёл сюда ебать нам мозг.
Классека.
Аноним 04/03/20 Срд 08:18:20 #801 №1622652 
>>1617769
Ну так говорят те кто настраивают бэк уровня амазона, где тебе на халяву дали БД с 10 таблицами и коннекты прописали. Считай аникеи среди JS. Те у кого опыт год и более уже так не говорят. Хотя конечно ебанаты находятся и среди них, но это уже клиника.
Аноним 04/03/20 Срд 08:57:59 #802 №1622660 
Аноны, разместил свою резюмеху на хх и в первый же день мне оффер прилетел от местного держателя онлайн-магазина.
У него там Ларавель везде, а я сейчас его только изучаю сделал углублённый квикстарт с одного сайта, повозившись с совместимостью версий немного, немного копался с CodeIgniter оче простой оказался. Делал студентов и хостинг на Слиме.
Есть смысл ломиться на вакансию, как думаете? Не уверен, что там старший программист будет.
Аноним 04/03/20 Срд 09:44:34 #803 №1622673 
>>1618984
>хаудихо
прогорел. спасибо
Аноним 04/03/20 Срд 09:47:49 #804 №1622675 
>>1618995
мне теперь кажется что ты работал сам в 1с и в частности над движком битрикса раз знаешь как там вся кухня устроена
Аноним 04/03/20 Срд 10:02:45 #805 №1622685 
>>1622673
Прогорание за 1 час. #От Профессианала
Аноним 04/03/20 Срд 10:22:52 #806 №1622698 
>>1622685
Ребят а сегодня я вам покажу как рейджнуть всего за четрые строки. А сделаем мы это на моем любимом языке пайтон
Аноним 04/03/20 Срд 10:33:56 #807 №1622706 
>>1622660
Если будешь там один без нормального наставника, то нет.
Аноним 04/03/20 Срд 10:36:47 #808 №1622708 
Йии по ходу никогда не умрет:

>Senior PHP Developer (Yii2)
>Зарплата
От 2>40 000 до 290 000 ₽

https://career.habr.com/vacancies/1000051562
Аноним 04/03/20 Срд 10:46:24 #809 №1622717 
99-800x800.jpg
gosudapstvennaya-sluzhba-v-uzbekistane.jpg
29560b81232002.jpg
Программист-фрилансер, сколько часов в день работаешь? Сколько выходных выпадает?
Не устаешь часами сидеть-пердеть над кодом?
Есть такие кто устает? - Как борешься с усталостью? Может энергетический напиток пьешь или кофе?
Аноним 04/03/20 Срд 10:53:35 #810 №1622727 
>>1622708
Он уже умер. Это на легаси разраба хотят.
Аноним 04/03/20 Срд 11:11:04 #811 №1622735 
>>1622706
Вот и я не хочу один сидеть без советов мудрых, но местные галеры не выкидывают вакансии для джунов.

Посижу с неделю - мож появится чего нормальное. К тому же приболел горлом кажись, может и к добру.
Аноним 04/03/20 Срд 13:36:22 #812 №1622849 
>>1622698
Бля, прочитал это его ебаным голосом
Аноним 04/03/20 Срд 13:50:09 #813 №1622860 
какой же у пыха синтаксис Г
Аноним 04/03/20 Срд 16:11:41 #814 №1622966 
Как считаете, в задаче про вычисление угла между стрелками часов имеет смысл учитывать, что может быть ввод по типу 56 часов и 10000 минут? Или итак понятно, что на циферблате нет этих чисел и учитывать их необязательно?
Аноним 04/03/20 Срд 17:05:22 #815 №1622993 
>>1622717
>сколько часов в день работаешь?
14
>Сколько выходных выпадает?
Сколько захочу.
>Не устаешь часами сидеть-пердеть над кодом?
Нет.
>Может энергетический напиток пьешь или кофе?
Если не укладываюсь в 12 часов завершить задачу - пью бёрн, даёт ещё 8 часов.
Аноним 04/03/20 Срд 18:08:02 #816 №1623043 
>>1622623
Пришёл спросить как искать готовые скрипты статистики на гитхабе или совета хорошего простого скрипта, что не так? Для этого же тред и создан
Аноним 04/03/20 Срд 19:28:40 #817 №1623138 
>>1622966
Ну кинь эксепшен, если вводные зайдут за допустимые границы
Аноним 04/03/20 Срд 21:45:10 #818 №1623287 
Вот есть два богомерзких языка: пыха, и джаваскрипт. Все пинают эти языки, плюются на них, хоть и используют буквально везде. На среднекод на этих языках тошно смотреть особенно на пыхе, по крайней мере мне. Это же просто месиво, блядь. Но я сам в один из них вкатился, а именно в жабаскрипт. И с вот, что я узнал: за последние лет 5 для него появились сотни допила от васяна и блестящих обёрток, да с модульной системой, да с статическими типами, да без глобальных объектов, да с функциональщиной, да с сотнями постоянно поступающего нового синтаксического сахара, и всего вот этого вот. Под этим всем на него и смотреть не тошно, а со временем и официальный стандарт подтянется до уровня того, что сейчас допиливается вебпаком, бабелем и тайпскриптом. А напилили ли подобного, тонущего под хейтом и макаками для пыхи?
Аноним 04/03/20 Срд 21:51:42 #819 №1623291 
>>1623287
руби
Аноним 05/03/20 Чтв 00:00:21 #820 №1623436 
Кто в движке https://www.cs-cart.ru/ ?
Есть работа. Пишите в tg: snekl
Аноним 05/03/20 Чтв 01:35:11 #821 №1623461 
>>1623287
Напилили. Там уже и строгая типизация и DI/CI, статический анализ, трейты, нормальное ООП (js нервно курит, кстати), нормальные вменяемые фреймворки, а не cms-поделия, git workflow можно организовать по-человечески и т.п. Он вообще очень стал похож на Java. Так что ты считаешь его богомерзким просто потому, что нихуя о нем толком не знаешь, видимо.
Аноним 05/03/20 Чтв 01:38:32 #822 №1623464 
Так, котаны. Вот вам задачка, принес. Через пару дней проверю, кто решил - молодец.

Дан массив целых чисел. Вернуть индексы двух чисел, таких, что их сумма равна target.
Можете считать, что существует только одно решение. Нельзя использовать один и тот же элемент несколько раз (то есть решить без вложенных for'ов).
Пример:
Дано nums = [2, 7, 11, 15], target = 9,
Так как nums[0] + nums[1] = 2 + 7 = 9,
То return [0, 1].

Заготовочка для кода:

class Solution {
/
@param Integer[] $nums
@param Integer $target
@return Integer[]
/
function twoSum($nums, $target) {

}
}

Оригинал текста, если нужен, это мой вольный перевод:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Аноним 05/03/20 Чтв 07:08:09 #823 №1623513 
>>1623464
Зачем бы нам тестовые для тебя делать? Решай сам.
Аноним 05/03/20 Чтв 08:18:50 #824 №1623531 
>>1623513
Так ты никогда нихуя не научишься кодить. Это литкод, баран.
Аноним 05/03/20 Чтв 08:42:43 #825 №1623537 
>>1623531
А нахрена ты сюда это несёшь, небаран? Тебя просили об этом или ты думаешь, что народ задачки по пхп найти в интернете не может?
Аноним 05/03/20 Чтв 11:02:14 #826 №1623627 
>>1623531
Сейчас бы порешать задачки с литкода вместо пета и тестовых. Это же полезнее в разы.
Аноним 05/03/20 Чтв 11:29:09 #827 №1623652 
Сап, пыхач.
В тред вкатывается NodeJS-макака с 2 годами опыта, хочу стать мультиязычным, да и скоро переведут на проект с PHP + Laravel.

Подкиньте каких-то видео-курсов по ларке, по которым можно будет быстренько начать круды хреначить с рестами, готов даже на платные курсы, лишь бы прок был.
Аноним 05/03/20 Чтв 11:37:36 #828 №1623665 
>>1623652
Настолько не нужна нода, что кидают на пыху?
Аноним 05/03/20 Чтв 11:39:41 #829 №1623668 
>>1623665
Да хуй знает нужна или нет, просто клиент тот же, но у него помимо приложух на ноде оказалась где-то пыха, которую саппортит один чувак, и вот меня ему в довесок накинули.

Я просто упомянул, что в 2017 писал на пыхе модуль для вордпресса и завертелось
Аноним 05/03/20 Чтв 11:43:31 #830 №1623673 
>>1623668
>Я просто упомянул, что в 2017 писал на пыхе модуль для вордпресса и завертелось
Сам себе могилу вырыл. Сидел бы на ноде.
Я б уже подыскивал другую работу, если б мне дали неинтересующий меня стек.
Аноним 05/03/20 Чтв 11:45:54 #831 №1623675 
>>1623673
Да я не говорил, что не интересующий, потому и мануалы ищу, говорю ж, хочу мультиязычным быть. Полгода так писал на джаве
Аноним 05/03/20 Чтв 11:50:03 #832 №1623680 
>>1623675
Так на джаве или джаваскрипте?
Аноним 05/03/20 Чтв 11:51:54 #833 №1623682 
>>1623680
Я вообще NodeJS бэкенд-макака, чистого опыта на нем - 2+ года. Но в остальном иногда прыгаю по другим проектам с другими стеками, ибо мне это интересно, так полгода писал на джаве, где-то три месяца на питоне, вот скоро на пыху прыгнуть хочу
Аноним 05/03/20 Чтв 12:01:59 #834 №1623689 
>>1623537
>>1623627
Что хочу, то и несу.
Аноним 05/03/20 Чтв 12:02:59 #835 №1623691 
>>1623682
Если интересно, то збс.
Просто странно из одной динамики прыгать в другую, тем более в пыху (с её то зп)
Аноним 05/03/20 Чтв 12:05:22 #836 №1623697 
>>1623682
Где быстрее вставка элемента - в аррейлисте или линкедлисте? Если сходу не ответил, рекомендую вкатиться хоть в один стек глубоко. Если ответил, окей, прыгай, если нравится.
Аноним 05/03/20 Чтв 12:11:46 #837 №1623707 
>>1623691
А зп нодовская остается, я галерный гребец.

>>1623697
ЛинкедЛисте но не всегда, зависит от кучи факторов, это ж не от стека зависит, базовые структуры

А курсы кто-то посоветует? (:
Аноним 05/03/20 Чтв 12:15:09 #838 №1623711 
>>1623707
Если лара, то ларакасты топ
Аноним 05/03/20 Чтв 12:18:53 #839 №1623717 
>>1623711
Пушка, спасибо, анончик
Аноним 05/03/20 Чтв 12:19:37 #840 №1623719 
>>1623707
Советую выкатываться из пхп нахуй и катиться обратно в джаву. Нехуй тут делать, уж поверь.
Аноним 05/03/20 Чтв 12:26:20 #841 №1623731 
>>1623719
Поддвачну
В php кроме symfony жизни нет
Аноним 05/03/20 Чтв 12:49:27 #842 №1623749 
>>1623731
И там жизнь довольно примитивная, учитывая, как (не) много можно сделать по сравнению с Java, или, не дай бог, C++.
Аноним 05/03/20 Чтв 13:03:37 #843 №1623771 
>>1623749
Для задач веба и небольшого тырпрайза хватит
Аноним 05/03/20 Чтв 13:10:08 #844 №1623780 
>>1623749
Так мне не надо много или нет, мне надо задачи на конкретном проекте решать
Аноним 05/03/20 Чтв 13:25:48 #845 №1623790 
>>1623689
Тогда сам и решай.
Нехватало чтобы какие-то васяны нам тут с умным видом чужие задачки несли.
Аноним 06/03/20 Птн 11:42:22 #846 №1624920 
Вoпpoc пo СSS.
Moжнo ли aвтoмaтичecки измeнять вид блoкa, ecли oн cмecтилcя вниз? Дoпуcтим, ecть 4 дивa, нa бoльшoм экpaнe oни pacпoлoжeны пo гopизoнтaли. Пpи умeньшeнии экpaнa пocлeдний див cпoлзaeт вниз. Boт мoжнo ли кaк-тo oтcлeдить этoт мoмeнт и измeнить вид cпoлзшeгo элeмeнтa? Дoбaвить бopдep-тoп, нaпpимep.
Аноним 06/03/20 Птн 11:52:08 #847 №1624929 
>>1624920
В CSS можно, узнав размер экрана. Через JS можно, узнав координаты (это хуевый способ, не делай так).
Аноним 06/03/20 Птн 13:23:17 #848 №1624991 
>>1617498

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

Если есть возможность, то корнем (DocumentRoot) веб-сервера стоило бы сделать папку public - тогда будут не нужны всякие RewriteBase, из-за которых твой проект надо располагать в папке с определенным названием. А также, в этом случае файл конфига будет за пределами корневой папки. Сейчас он защищен в htaccess, но надежнее, когда он в принципе не доступен снаружи.

> DEFAULT CHARSET=utf8;

Стоит переходить на utf8mb4, погугли про отличия от utf8.

> https://github.com/deadj/student-list/blob/master/src/autoloader.php
тут можно сделать один автозагрузчик, перебирающий папки в цикле.

В роутере стоит извлечь из URL только путь (PATH), например, функцией parse_url() - и тогда не надо будет беспокоиться о параметрах после знака вопроса и добавлять их в регулярку.

> $segments = explode('/', preg_replace("~$urlPattern~", $path, $uri));

Не лучше ли тут просто разбивать на части $path без вызова preg_replace?

> $firstStudent = $this->getFirstStudent();
Тут было бы логично передать внутрь $page, чтобы не получать эту переменную дважды в разных местах контроллера.

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

> private function highlightWord(string $search, string $cellValue): string
> $pattern = '/' . $value . '/ui';

Есть ли тут гарантия, что в value нет спецсимволов (звездочек, бекслешей, скобок)? Если гарантии нет, то при подстановке переменной в регулярку надо экранировать специмволы с помощью preg_quote(). Она экранирует символы так:

Было: hello[world]+\b
Стало: hello\[world\]\+\\b

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

Функции вроде highlightWord() имеет смысл выносить в класс-помощник, сделанный по паттерну Utility Class, чтобы этот код можно было вызывать из других мест программы.

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

Попробуй протестировать свою функцию, давая ей на вход куски строк со спецсимволами вроде < и > и проверяя, экранируются ли они на выходе или нет. А также, давая слова вроде mark или lt и проверяя, не происходит ли некорректных замен кусков тегов.

То есть, экранирование делается непредсказуемо. Вот, что можно сделать:

1) попробовать разбить строку на куски, состоящие из искомых слов и кусков между ними (например, функцией preg_split с выражением вида /слово1|слово2|слово3/). Затем каждый кусок экранировать и склеить, вставив между ними теги mark.

То есть, дана фраза "Иванов Иван" и поисковое слово "ива" -> получаются куски "Ива", "нов ", "Ива", "н".

2) сначала заэкранировать всю строку, а потом делать вставку тегов mark уже в экранированную строку.

3) заэкранировать строку. Подготовить массив замен (тоже с экранированными словами) вида [экр. слово => <mark>экр. слово</mark>] и одним действием сделать замену функцией вроде strtr(). Этим мы защищаемся от ситуации, когда мы пытаемся сделать замену в самом теге mark.

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

> if (isset($_COOKIE['id']) && $studentTable->checkId($_COOKIE['id']) == 1) {

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

Вместо кучи функций вида getLastName(string $id), getGender(string $id), ... лучше сделать одну функцию, которая загружает одну строчку со всеми полями из БД и заполняет из нее объект студента. И одну для сохранения студента обратно в БД.

> $id = md5(rand(0, 1000000) rand(0, 100000));

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

> header("Location: /student-list/register?notify=$done");

В ссылках не может быть пробелов, спецсимволы надо экранировать через urlencode() перед подстановкой. Плюс, тут есть уязвимость, что злоумышленник может сформировать ссылку, которая покажет любой текст, и тем самым ввести пользователя в заблуждение. Лучше передавать код сообщения вроде 'registered', и брать сообщение из массива по этому коду.

Ты в RegisterController представляешь студента то в виде объекта, то в виде массива (getEmptyStudentInformation()). Удобнее использовать везде одно представление - в виде объекта.

> checkStudentData($student, "add")

В таких случаях надо использовать константы вместо строк (Validator::ACTION_ADD).

> return $result->fetch_assoc()['COUNT()'];

Проще использовать fetch_row с индексом 0.

> public function checkId(string $id): int

Тут логичнее возвращать тип bool (true/false), а функцию назвать более явно: doesIdExist() или isValidId().

> addStudentsToObjectsArray(object $students)

Здесь в качестве типа можно указать класс mysqli_result, а не просто object.

> if ($accommodation != "local"

Здесь стоило бы сделать константу вроде Student::ACCOMODATION_LOCAL. Константы лучше "магических" строк тем, что защищают от опечаток (PHP выдаст ошибку в этом случае), а также по коду видно, какие константы доступны.

> [а-яё]|[ ]|[-]

Это можно объединить: [а-яё \-]

> mb_strlen($groupNumber < 2

Скобку забыл поставить.

> !preg_match('/\\d+/ui'

Без ^$ это выражение просто проверяет наличие цифр, но не отсутствие других символов.

> <?php if (isset($errors['firstName'])): ?>
> <?php else: ?>

Здесь плохо, что input с кучей атрибутов копипастится два раза. Это неудобно, так как при правках тебе придется делать в два раза больше работы. Нужно избегать копипасты тут.
Аноним 06/03/20 Птн 13:26:32 #849 №1624994 
>>1617498

И еще, у тебя при переходе с 1 на 2 страницу меняется направление сортировки с desc на asc почему-то.
Аноним 06/03/20 Птн 15:30:53 #850 №1625063 
ПЕРЕСОЗДОВАЙТЕ ТРЕАД
Аноним 07/03/20 Суб 10:02:14 #851 №1625965 
>>1624920
Flex или Grid
Аноним 07/03/20 Суб 10:23:29 #852 №1625987 
Почитал задачку на тестхаб и спешу донести до вас, что там перебор по всем направлениям.
Аноним 07/03/20 Суб 10:29:52 #853 №1625993 
Screenshot from 2020-03-07 10-26-11.png
Я никогда не строил полноценных приложений, поэтому мне сложно разобраться в данном сценарии.
Мой ход суждений выглядит следующим образом. Функцию может вызывать либо тот, кто имеет к ней доступ, т. е. программист, либо пользователь приложения. Программист может изменить сообщение об ошибке в исходном коде, а пользователю менять сообщение, как правило, вообще незачем.
Также я вижу только один возможный вариант, когда файл может быть не найден - когда путь к файлу прописывается вручную. Пользователь кидает все через <input>, а если речь идет о программисте, то ему опять же проще поправить путь в исходнике.
Подскажите, пожалуйста, что я упустил из виду.

Также какое преимущество имеет разделение ответственности, если при ошибке (отсутствие файла) результат все равно тот же - мы завершаем скрипт через тот же die() и пользователь функции все так же не имеет никакого выбора?
Аноним 07/03/20 Суб 10:54:42 #854 №1626005 
>>1625993
>Функцию может вызывать либо тот, кто имеет к ней доступ, т. е. программист, либо пользователь приложения.
Когда говорят о пользователях куска кода - имеют ввиду других разработчиков, а не пользователей приложения на том конце.
>результат все равно тот же - мы завершаем скрипт через тот же die() и пользователь функции все так же не имеет никакого выбора?
Это как раз сейчас так.
Если же возвращать результат (да даже выбрасывать исключение) - то уже пользователь решает как поступить дальше. Может вообще наплевать на это и какие-нибудь моки подсунуть например. Или же это вообще валидная ситуация, так сказать "а юзеров то пока что и нет". Вариантов сколько хочешь, даже вон на картинке пара штук приведена, а не только собственно die.
Алсо, die это вообще хуйский способ завершения выполнения скрипта, т.к. во многих прилогах есть такая штука, как жизненный цикл, который даже в случае ошибки по хорошему должен отрабатывать. die же просто рубит с плеча, грязное завершение, аналогичное падению. А допустим это вообще совсем чужая библиотека, которая по каким-то причинам валит весь твой код, потому что кто-то когда-то не захотел разделить овтетственность. Ты бы сам захотел, чтобы нечто левое решало, когда умирать всему твоему приложению? А ведь ты всего-лишь пытался массив юзеров или чего-то еще подтянуть.
В конце концов функция попросту делает не то, что обещает из названия, тем самым порождая неожиданный сайд эффект. Можешь сделать loadUsersFromFileOrDie например функцию, в противовес этой, но врядли ей реально кто-то станет тогда пользоваться.
Аноним 07/03/20 Суб 18:09:11 #855 №1626459 
Привет Анон. Решаю вкатиться к вам из фронтенд треда, сам я работаю верстальщиком, верстаем под cms написанной на yii первой версии, лул. Очень часто так же у нас проскакивают задачи по битриксу и очень редко по другим цмс типо опенкарта. Понял, что программирование мне не особо то доставляет, чтобы дрочить его дома так как хочу заняться другим делом в будущем. Js у нас мало и обычно это простые скрипты которые я придрочился писать на чистом js, но зато куча php кода и разных cms из них более интересен битрикс так как много вакансий связанных с ним. И решил на работе просить мне кидать небольшие штуки на прогу связанных с админками, чтобы колупать php и перейти с верстальщика на php/битрикс "программиста". С чего лучше начать, используем вроде как php 5ой версии.
Аноним 07/03/20 Суб 20:08:14 #856 №1626527 
>>1626459
Хочешь начать писать под платформу - начни писать под неё. По ходу разберёшься.
Аноним 08/03/20 Вск 15:43:47 #857 №1627478 
whybackslash.png
>>1626005
Спасибо за внимание, анон! Я делаю вывод, что любая (custom) function должна по-хорошему что-то возвращать.

Другой вопрос. Тут при наследовании от встроенного класса Exception указывается backslash - \Exception. Тут есть какая-то особая мотивация? Спрашиваю, потому что без слеша все также работает.
Аноним 08/03/20 Вск 16:03:54 #858 №1627517 
>>1627478
>любая (custom) function должна по-хорошему что-то возвращать
Не обязательно. Только если там есть, что обработать. В прошлом примере это либо список юзеров, либо наличие ошибки или типа того. Полно функций, которые не возвращают вообще ничего. Например какая-ниюудь функция логирования, которая допустим тебе в файл пишет что-то. Ты ее просто вызываешь и дальше идешь, как ни в чем не бывало.
>Тут при наследовании от встроенного класса Exception указывается backslash - \Exception. Тут есть какая-то особая мотивация?
Да, есть. \Exception - это явное указание на класс Exception из корневого неймспейса. А просто Exception это либо из корневого, либо из текущего неймспейса. Если в текущем неймспейсе будет объявлен Exception собственный (именно с таким именем), то без слеша подцепит именно его, а не корневой. Корневой в данном случае это базовый из пхп.
Аноним 08/03/20 Вск 16:12:18 #859 №1627531 
>>1627517
>либо из корневого, либо из текущего неймспейса
Забыл добавить, что так же может быть не из текущего, а из юзингов.
К примеру:
use app\Exception;
или
use app\CustomException as Exception;

В этом случае так же явное указание корневого неймспейса через \Exception так же помогает. Имя одно может быть, а получить ты хочешь что-то конкретное, и поэтому так конкретизируешь. В корневом неймспейсе еще куча всего лежит, не только исключения.
Аноним 08/03/20 Вск 18:30:37 #860 №1627699 
>>1603536
https://t(точка)me/anonaprphp
Тестхаб Аноним 09/03/20 Пнд 11:52:21 #861 №1628355 
ОП, я правильно понимаю, что изначальная идея тестхаба как сервиса в том, чтобы дать возможность учителям создавать тесты и смотреть результаты прохождения других людей? Такое не очень интересно делать, так как я не учитель и пользоваться таким сервисом не буду. Другое дело если взять те же тесты и сделать аналог anki - чтобы пользователь мог создавать тесты для себя и тренироваться, тут можно даже интервальное повторение прикрутить. Думаю в таком случае часть функционала можно вырезать, например оповещения о том, что кто-то прошёл тест. Разделить тесты на приватные и публично доступные, добавить группировку (например я делаю конспект книги по англ языку и хочу создать из набора тестов группу). Есть какие-то идеи на этот счёт?
Аноним 09/03/20 Пнд 14:27:25 #862 №1628506 
Читаю сейчас про ооп в пхп и не понимаю, почему жс и пхп существуют отдельно. Когда пойдут принципиальные отличия, а не синтаксические? inb4 там стиль написания кода другой - пример стиля можно?
Если б пхп умел получать элементы дом-дерева и накидывать стили, он же не умеет? то жс не нужен был бы. Хотя у него синтаксис приятнее.
Аноним 09/03/20 Пнд 14:49:35 #863 №1628524 
>>1628506

Пхп это классический джава-ооп, а жс это микс скорее непонятный.
Аноним 09/03/20 Пнд 16:03:38 #864 №1628584 
maxresdefault.jpg
>>1628524

Как в foreach реализовать показ неправильных элементов? В смысле, чтобы эхал false
Аноним 09/03/20 Пнд 16:17:58 #865 №1628606 
>>1628355

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

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

>>1628506

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

>>1628584

Не понял вопрос. Значение false нельзя вывести с помощью echo (к тому же, preg_match возвращает числа 0 или 1 - количество найденных совпадений, а не true/false). Можно разве что вывести строчку echo "false"; если тебе это зачем-то нужно.

Если ты хочешь выводить, что именно в номере не так - то надо как-то отдельно это определять. Например, считать число цифр и предупреждать, если их не 11. Или отдельными регулярками проверять другие части номера. То есть надо вместо одного сопоставления с регуляркой делать N проверок (что нет лишних символов, что цифр 11, что в начале +7 или 8 итд) и при неудаче проверки -
выводить сообщение.
Аноним 09/03/20 Пнд 22:04:53 #866 №1629016 
H33031.jpg
>>1599201 (OP)
Подскажите нубу.Cтавлю отрицание в условии выводит "hui", убираю отрицание тоже выводит "hui". Если поменяешь $a с 2 на 3 то все работает как надо.Почему так? Сам допереть не могу)
<?php
$a=2;
if(!$a % 2 == 0){
echo "hui";
}
Аноним 10/03/20 Втр 00:08:57 #867 №1629096 
>>1629016
> if(!$a % 2 == 0){
Если остаток от деления числа на 2 равен нулю, то... Тебе это надо от %?
Аноним 10/03/20 Втр 00:11:20 #868 №1629099 
>>1629096
> 2 равен
Не равен вернее.
>>1629016
> $a % 2 == 0
Это в скобки возьми и должно получиться.
Аноним 10/03/20 Втр 00:17:11 #869 №1629106 
>>1629016
Ты точно правильно написал условие?
У тебя сейчас оно читается так: НЕ-$a (а == 2, значит не-а равно false с приведением к 0 делить с остатком на 2 == 2)
Тоесть у тебя вообще всегда там будет true в условии, вне зависимости от переменной а. Перенеси отрицание к !==
Аноним 10/03/20 Втр 00:18:30 #870 №1629107 
>>1629016
https://implode.io/bnLiP0

Держи, анон. Тебе видимо это надо было
Аноним 10/03/20 Втр 00:24:07 #871 №1629109 
>>1629106
Проебался с пояснением че там в ифе, короче, надеюсь, ты поймешь
Аноним 10/03/20 Втр 11:36:13 #872 №1629269 
>>1626459
Боль в каждом предложении.
Аноним 10/03/20 Втр 13:35:37 #873 №1629378 
>>1629106
Нихуя не понял, разве что нужно отрицание к знаку неравенства поставить.
Хочу сделать проверку числа на четное нечетное, мне надо найди нечетное. Хотел одним условием обойтись(чтобы не писать else), поэтому поставил отрицание.
Вот так собственно работает.
$a=2;
if ($a%2 !== 0)
echo 'чётное';
>>1629099
>Не равен вернее.
Да
Аноним 10/03/20 Втр 13:36:59 #874 №1629379 
>>1629378
Проебался заместо echo будет return, и он мне вернет нечетное число.
Аноним 10/03/20 Втр 13:50:37 #875 №1629394 
>>1629016

Надо писать if (!($a % 2 == 0)) так как иначе из-за приоритетов операторов это воспринимается как

if ((!$a) % 2 == 0)

Почитать про приоритеты: https://www.php.net/manual/ru/language.operators.precedence.php
Аноним 10/03/20 Втр 14:06:19 #876 №1629405 
>>1629394
>if (!($a % 2 == 0))
А еще проще if ($a % 2 !== 0)
Аноним 10/03/20 Втр 14:36:04 #877 №1629421 
Отравил в четверг вечером тзшку - никакого ответа. 2 рабочих дня конечно было, но всё же есть подозрения, что ответа не будет. Когда стоит звонить и узнавать вердикт, при отсутствии ответа?
Аноним 10/03/20 Втр 16:03:11 #878 №1629470 
>>1629421
>Отравил в четверг вечером тзшку - никакого ответа
Клятый душегуб
Аноним 10/03/20 Втр 16:04:01 #879 №1629472 
>>1629421
Если не договаривались о дедлайне проверки, то хоть каждый день пиши им/звони
Аноним 10/03/20 Втр 16:37:57 #880 №1629494 
1.png
2.png
3.png
>>1599201 (OP)
Привет, подскажите начинающему:
Сильно страшно, если я двойные скобки пишу и && вместо просто and?
В гайде рекомендуют писать так, например: ((условие) == (условие)), ((условие) && (условие)) и т.д.
Аноним 10/03/20 Втр 16:41:20 #881 №1629497 
>>1629494
Ещё кстати не знал о ">=" и "<=" ( в гайде пока не наблюдается)
Так что за это тапками не кидать!
Аноним 10/03/20 Втр 17:03:11 #882 №1629514 
Насколько актуален гайд по установке апача? Всё было нормально до шага с кастомным доменом - всё как надо по-моему прописал и в хостс и в конфиге - не работает. Ещё и localhost перестал работать.
Аноним 10/03/20 Втр 17:26:50 #883 №1629536 
Безымянный.png
И ещё вопрос: я правильно понимаю, что если в коде несколько условий, то после каждого условия кроме последнего нужно писать exit(); чтобы всё не смешалось "в кашу"?
Аноним 10/03/20 Втр 17:30:35 #884 №1629538 
>>1629536
На этом уровне может быть и да. Но в целом - нет. exit(die) это вообще моветон. Буквально в следующих уроках ты узнаешь о функциях и вопрос отпадет. А потом и о классах. После этого у тебя возникнут другие вопросы наверняка. Просто сначала дочитай до конца.
Аноним 10/03/20 Втр 17:52:47 #885 №1629549 
>>1629394
Понял, спасибо отписавшимся.
Аноним 10/03/20 Втр 22:36:53 #886 №1629708 
Ананисты, дайте какой-то то костыль для написания красивого ПХП, типа пишем consol($hui); а он нам выводит оформленное содержимое переменной типа если бы мы написали echo '<pre>'; print_r($hui); echo '</pre>' и т.п. Штуку облегчающую и сокращающую написание кода на ПХП как это делает ЖКВЕРИ на ЖАВАСКРИПТ, то есть штуку работающую на готовых функциях я так понимаю
Аноним 10/03/20 Втр 23:17:43 #887 №1629727 
Сап двощь. Где хранить тот же каштомный конфиг nginx'a? В отдельной репе или кинуть в корень проекта? И вот еще вопрос, если есть какие-то наносервисы на ноде, например для ресайза и оптимизации картинок, как это дело лучше версионировать в связке с остальным приложением? Я вот думал на пхп иметь какой-то конфиг размеров и через шаблонизатор высирать полноценный srcset и в ноде на лету конвертить и кешировать через нгинкс, при том желательно что этот же конфиг размеров дублировался и на ноду(чтобы не дудосили разными размерами и не забивали кеш). Имеет ли смысл ради такого начать учить докер и вот это всё? Опыта особо нет в таких вещах и толком не знаю как это правильно делается, но в моей голове это должно быть что-то типа git clone ... туда сюда ... и проект поднялся со всеми сервисами на деве
Аноним 10/03/20 Втр 23:50:29 #888 №1629746 
Блджад анонсы, по сути классы в пхп получается это все те же функции просто в наборе? Как объекты в яваскрипт? Где объект это по сути ассоциативный массив из пхп, но только он ещё вместе с переменными может хранить и функции, которые тоже становятся его методами вызываемыми через точку
Кстати в пхп методы класса можно вызывать только через стрелочку? ->
Почему вообще ушли от процедурного метода? Это же приятнее, чем тонна папок с контроллерами и виверами
Аноним 11/03/20 Срд 02:01:13 #889 №1629802 
Ёбнутые блять пересоздание тред, он нахуй и впизду утонул и отвечают здесь полторы калеки
someApprentice !EaaiHmIJms 11/03/20 Срд 02:52:06 #890 №1629813 
>>1619949
>> Приведите пожалуйста аргументы почему нужно шифровать 100% сообщений?
>
>- в Телеграме те, кто использует секретные чаты, выделяются из толпы и привлекают внимание