«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #110 Аноним 2019/06/13 04:31:15  №1415604 1
Лето на дворе, наверно, в треде немного опустеет, но мы все равно изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Предыдущий тред был тут: >>1380485 (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? — Да, однозначно. Посмотри любую вакансию.
Как оформлять код Аноним 2019/06/13 04:33:45  №1415605 2
grammar.png (56, 500x644)
644x500
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

Если тебе лень выравнивать код руками, закачай его на 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-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

Ответы: >>1415616 >>1415622 >>1416161
Аноним 2019/06/13 04:37:22  №1415606 3
Вроде я проверил практически все посты в прошлом треде, и ответил на все вопросы, так что если вы что-то спрашивали, зайдите в старый тред >>1380485 (OP) и проверьте. А если я пропустил, напомните о себе тут.

Заодно я бы хотел разобрать одну интересную задачу из прошлого треда. Есть такая известная задача на ООП про скидки, кто мои задачи про ООП решал, думаю, без проблем справится. Вот тут вот задача: >>1395825 а тут решение анона: https://github.com/nokitakaze/test-programming-task-am-items/

Думаю, прошло много времени, так что прокомментирую решение:

> Правило №4 "стоимость выбранного продукта уменьшается на 5%". Что такое "выбранный продукт"? Покупатель произвольно пальцем тыкнул в любой продукт, и у него цена уменьшилась?

Это товар A из правила.

> Если одновременно выбраны А
Вот он и "выбранный".

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

https://github.com/nokitakaze/test-programming-task-am-items/blob/master/src/Item.php

Тут странный отступ в 4 пробела. Он не нужен.

> protected $_type;
Не надо использовать подчеркивание в именах свойств. Это было в PHP4.

> @var ItemType[]|ItemType[][]|null
> protected $_only_includes = null;

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

И вообще, тут ты имхо переусложнил код. Ты пытался сделать так, чтобы у правил было как можно больше общего кода, чтобы достаточно было передать для разных правил разные массивы, но это лишь привело к переусложнению логики. То есть, думаю, что из базового класса Rule можно вообще убрать эти поля exclude/inlcude.

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

Также, не стоило объединять правила 1 и 4 в один класс. Так как там другая логика. Или если и объединять, то без потери читабельности кода.

Также, посмотри на объем кода в https://github.com/nokitakaze/test-programming-task-am-items/blob/master/src/Rules/TotalCostSelectedItemsRule.php и сравни с тем, как это правило описано в одном предложении в задаче. Этот код стоит хотя бы разбить на методы с понятными названиями, сейчас он вообще не читаем.

Ну например, один из вариантов - это сделать так:

// Сортируем товары по типу
foreach ($types as $type) {
$itemsByType[$typeName] = $this->pickItemsByType($items, $type);
}

// Определяем число групп
$itemsCount = array_map('count', $itemsByType);
$pairsCount = min($itemsCount);

// Проходимся по группам товаров и даем скидку за каждую
for ($i = 0; $i < $pairsCount; $i++) {
$group = $this->selectGroup($itemsByType, $i);
$this->addDiscountForPair($result, $pair);
}

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

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

И еще, ты сделал метод Rule#calculate(), который принимает массив товаров и за один проход ищет все скидки. Но можно было еще сделать по-другому: он принимает массив товаров и возвращает первую найденную скидку. Соответственно, мы вызываем его в цикле, пока все скидки этого типа не найдутся. Плюс в том, что это упрощает код правила. Нам не нужно искать все скидки, достаточно найти одну. Для правила 1, например, код будет совсем простой:

function applyDiscount(array $items)
{
$group = [];
foreach ($this->types as $type) {
$item = $this->findItemByType($items, $type);
if (!$item) {
return;
}
$group[] = $item;
}

// Применить скидку к $group
return new Discount(....);
}

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

https://github.com/nokitakaze/test-programming-task-am-items/blob/master/src/Rules/RuleGroup.php

В этом классе, наверно, логично было сделать метод вроде applyGroup() или как-то так. А то класс не сильно отличается от просто массива.

https://github.com/nokitakaze/test-programming-task-am-items/blob/master/src/Rules/RuleSet.php

Не очень понятно, зачем этот класс.


https://github.com/nokitakaze/test-programming-task-am-items/blob/master/test/CalculatorTest.php

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

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

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

И не надо в одном тесте тестировать разные объекты (testprimitives). Надо было сделать 2 отдельных теста.


Ответы: >>1415839
Аноним 2019/06/13 05:43:59  №1415616 4
>>1415605
> переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase
Это же упоминается только применительно к методам.
Ответы: >>1415618
Аноним 2019/06/13 05:59:57  №1415617 5
>>1415604 (OP)
>Почему PHP? Потому что вакансий море, и учить легко.
Ситуация на рынке не изменилась? Javascript или python в этом вопросе по-прежнему не конкуренты php?
Аноним 2019/06/13 06:01:32  №1415618 6
>>1415616

Верно. Но в Симфони так пишут, и ничего плохого, если те, кто не выбрал стиль, возьмут это за основу.
Аноним 2019/06/13 06:17:54  №1415622 7
>>1415605
>PSR-2
>4.3. Методы
>Открывающую фигурную скобку НЕОБХОДИМО располагать на отдельной строке
Насколько часто это соблюдается на практике? Я бы не хотел так писать, например.
Ответы: >>1415625 >>1415632
Аноним 2019/06/13 06:29:53  №1415625 8
>>1415622
скажем так, если я вижу, что кто-то в методе написал открывающую скобку на одной строке с сигнатурой, то он либо тупой поскольку не знает стандартов либо долбоеб который не хочет принимать общепринятые условия и в упрек всем пишет "так как ему нравится".

Ты надеюсь понимаешь, что если бы каждый писал так как ему нравится, то у каждого код был бы написан в разном стиле и сложнее было бы понять другого человека, для этого стандарты и придумали
Ответы: >>1415627
Аноним 2019/06/13 06:32:41  №1415627 9
>>1415625
Хорошо, но ты проигнорировал главный вопрос:
>Насколько часто это соблюдается на практике?
Ответы: >>1415649 >>1416594
Аноним 2019/06/13 06:55:18  №1415632 10
>>1415622

Я пишу на новой строке. Просто пиши как в Симфони, и проблем не будет.
Аноним 2019/06/13 07:42:34  №1415649 11
>>1415627
Вместо задавания глупых вопросов сходи на гитхаб и посмотри топовые либы - как они написаны.
Ответы: >>1415660
Аноним 2019/06/13 07:53:14  №1415660 12
>>1415649
>как они написаны
Очень хуёво написаны. Я не хочу делать также, отсюда вопрос: если допустить, что я не буду делать топовые либы для всеобщего пользования, насколько критичным будет игнорирование данного пункта стандартов? Иными словами, в отдельно взятых командах могут быть "свои" стандарты, как мне докладывали. Вопрос в том, насколько часто они идут вразрез с PSR* и насколько вообще будут доёбываться до его несоблюдения.
Ответы: >>1415664 >>1415666 >>1415685
Аноним 2019/06/13 07:56:04  №1415664 13
>>1415660
>Очень хуёво написаны.
Свой код покажи.
Ответы: >>1415665
Аноним 2019/06/13 07:57:11  №1415665 14
>>1415664
Ты понял, что я имел в виду.
Ответы: >>1415667
Аноним 2019/06/13 07:57:59  №1415666 15
>>1415660
Алсо, я бы тебя в команду не брал - ты какой-то слишком тупорогий не понимаешь элементарных вещей.
Ответы: >>1415686
Аноним 2019/06/13 07:59:08  №1415667 16
>>1415665
Я не уверен, что у тебя есть вообще какой-то опыт в программировании. Своё мнение можешь в одно место засунуть.
Ответы: >>1415669
Аноним 2019/06/13 08:00:58  №1415669 17
>>1415667
Что ты хочешь-то от меня?
Я задал вопрос, если ты не намерен на него отвечать - просто иди нахуй.
Ответы: >>1415670
Аноним 2019/06/13 08:01:23  №1415670 18
>>1415669
Ясно. Зелень ебаная.
Аноним 2019/06/13 08:32:23  №1415685 19
>>1415660

Давай посмотрим объективно: какая ценность в том, что ты пишешь код в другом стиле? Никакой, просто тебе так больше нравится. Это не аргумент, в любой команде предпочтут использовать PSR вместо потакания чьим-то личным вкусам. В open source проекте это приведет к тому, что люди будут задавать вопросы по поводу нестандартного стиля и слать pull request в стиле PSR.

Самым простым и адекватным решением будет не выпендриваться и перейти на PSR. Это не так сложно, как кажется.
Ответы: >>1415690 >>1415692 >>1415703
Аноним 2019/06/13 08:33:45  №1415686 20
>>1415666

Не надо переходить на оскорбления. Он к тебе в команду и не напрашивался.
Ответы: >>1415700
Аноним 2019/06/13 08:37:38  №1415689 21
ОП, меня пропустил. Помоги, пожалуйста:
>>1415145
>>1415175
Ответы: >>1415733
Аноним 2019/06/13 08:38:18  №1415690 22
>>1415685
в опенсорс проекте просто пошел нахуй если твой код не в том кодстайле что и проект
Аноним 2019/06/13 08:40:39  №1415692 23
>>1415685
А на практике никто не особенно не докапывается до кодстайла потому что есть строки и они как правило горят, если ты будешь коллеге закрывать PR потому что у него скобки не так стоят, когда у него прод лежит и ему надо срочно запушить ты навлечешь на себя много нелюбви. Потому PRS крайне желателен, но не всегда обязателен.
Ответы: >>1415703
Аноним 2019/06/13 08:47:27  №1415700 24
>>1415686
А я твоих советов не спрашивал. Иди нахуй.
Аноним 2019/06/13 08:50:32  №1415703 25
>>1415685
>просто тебе так больше нравится
Достаточное условие, чтобы начать так делать, если это не создаст никому серьёзных проблем. В чём и был вопрос. Судя по всему, он был задан очень непонятно, хуй его знает.
Не так сложно, безусловно. Но если можно этого не делать - я бы предпочёл не делать.
> В open source проекте
есть гайд для контрибьюторов, где такие вещи, как кодинг стайл, обычно описываются, если они неочевидны. Ну и, конечно же, некоммерческие проекты, которые я сам выбираю, на чём делать, я бы в жизни не выбрал делать на вашей пыхе.

>>1415692
Спасибо, буду иметь в виду и класть хуй на стандарты.
Ответы: >>1415705
Аноним 2019/06/13 08:53:45  №1415705 26
>>1415703
>Спасибо, буду иметь в виду и класть хуй на стандарты.

Просто нажимаешь ctrl+alt+l и не имеешь проблем и никому не ебешь мозги
Аноним 2019/06/13 09:03:07  №1415711 27
Что надо делать по PSR если у меня не помещаются параметры в одну строку? Сейчас я их разбиваю построчно.
Это норма?
Ответы: >>1415714 >>1415742
Аноним 2019/06/13 09:04:40  №1415714 28
>>1415711
Это холиварный вопрос, потому что у подовляющего большинства уже широкоформатные мониторы, а не квадратные.

Во вторых, если у тебя в методе слишком много параметров то повод задуматься о том что ты что-то не так спроектировал.
Ответы: >>1415717 >>1415720
Аноним 2019/06/13 09:06:28  №1415717 29
>>1415714
> Во вторых, если у тебя в методе слишком много параметров то повод задуматься о том что ты что-то не так спроектировал.
Что поделать, если пехапе не позволяет делать именованные аргументы?
Ответы: >>1415722
Аноним 2019/06/13 09:09:04  №1415720 30
>>1415714
>у подовляющего большинства уже широкоформатные мониторы, а не квадратные
К чему эта реплика вообще?
>если у тебя в методе слишком много параметров
Штуки 3, просто названия длинные.
Ответы: >>1415725
Аноним 2019/06/13 09:11:41  №1415722 31
>>1415717
>Что поделать, если пехапе не позволяет делать именованные аргументы?

1. Идти программировать на питоне.
2. Засунуть все аргументы в какой-то объект и передавать его.
3. Передавать ассоциативный массив как аргумент
Ответы: >>1415729
Аноним 2019/06/13 09:12:28  №1415725 32
>>1415720
>К чему эта реплика вообще?
К тому что это ограничение по длине строки возникло от того что раньше не у всех на монитор эти строки влазили, было неудобно
Ответы: >>1415728
Аноним 2019/06/13 09:16:20  №1415728 33
>>1415725
Лол, нет.
Длинные строки читаются хуже чем короткие.
Аноним 2019/06/13 09:17:07  №1415729 34
>>1415722
>Передавать ассоциативный массив как аргумент
Слишком много скобочек(["и" => "кавычек"]);
Ответы: >>1415732
Аноним 2019/06/13 09:23:36  №1415732 35
>>1415729
да еще и потом внутри метода устанешь проверять есть ли такой элемент в массиве
Аноним 2019/06/13 09:24:56  №1415733 36
>>1415689

Ты, возможно, неправильно формируешь ссылки и подставляешь в них параметры. Прочти урок про URL и проверь, соответствует ли твой код тому, что там написано и не может ли быть проблема в этом: https://github.com/codedokode/pasta/blob/master/network/urls.md

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

Далее, если это не поможет, то сдампь (echo) получающийся URL, и запости, токен при этом, конечно, надо скрыть. Посмотрим на URL.

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

- утилитой curl (не php расширением) в командной строке
- программами с GUI вроде postman для отправки запросов

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

Ответы: >>1415769
Аноним 2019/06/13 09:43:31  №1415742 37
Ответы: >>1415751
Аноним 2019/06/13 09:52:00  №1415751 38
Аноним 2019/06/13 10:14:50  №1415769 39
>>1415733
Уже написал пост и понял, какой я идиот. Всего-то требовалось 3 дня всматриваться к код и забыть про очевидные вещи. У меня один!! пробел не был url-закодирован. Но почему этот пробел не вызывал ошибок в десятке случаев, а тут вызвал? Это единственное, что мне не ясно. Будь это ошибка везде сразу, я бы быстро нашел, в чём дело.

Тогда другие вопросы задам. Можно отсылать файл multipart/form-data, используя file_get_contents? Или что-то еще, загружающее файл из ссылки в оперативную память и отсылающую её в телеграм оттуда.
Ответы: >>1415806
Аноним 2019/06/13 11:52:06  №1415806 40
>>1415769

Заметь, что в мануале написано: https://www.php.net/manual/ru/function.file-get-contents.php

> Замечание:
> Если вы открываете URI, содержащий спецсимволы, такие как пробел, вам нужно закодировать URI при помощи urlencode().

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

Что касается отправки файла. У file_get_contents есть контекст, и в нем можно указывать опции HTTP-запроса. Смотри пример №4 в мануале: https://www.php.net/manual/ru/function.file-get-contents.php

Тут есть документация по опциям HTTP-контекста: https://www.php.net/manual/ru/context.http.php

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

Я бы советовал освоить нормальную библиотеку вроде Guzzle, где отправка файла делается проще. Ну или расширение curl, хотя Guzzle по моему удобнее.
Ответы: >>1415831
Аноним 2019/06/13 12:14:03  №1415823 41
Сап аноны!

Сейчас читаю основы регулярок и там попалась задача с выбором корректных номеров. Вроде бы справился, но немного на говнокодил в регулярке и опустился до копирования и спама.
https://ideone.com/b58D3Q
Как можно написать эту регулярку красивее?

(Сори за кровь из глаз)
Аноним 2019/06/13 12:27:04  №1415831 42
>>1415806
>Надеюсь, что ты освоил теперь кодирование спецсимволов.
Я и раньше освоил, просто я такой жути наговнокодил, что один пробел без urlencode оставил.
>У file_get_contents есть контекст
Да, я уже указал там ssl и прокси.
>Увы, судя по ней, тебе надо будет вручную кодировать тело запроса (содержимое файла и нужные заголовки). Справишься?
Не думаю. Добавил в контекст Content-Type: audio/mpeg, но файл всё еще не отправляется. Кусок:
'http' => array(
'header' => array("Proxy-Authorization: Basic $auth", 'Content-Type: audio/mpeg'),
Прокси работают, я проверил, открыв с file_get_contents yandex.ru/internet.
>Ну или расширение curl, хотя Guzzle по моему удобнее.
А как это провернуть curl'ом? Мне нужно отправить не ссылку, а файл, при этом не загружая его на сервер, потому что работа с файлами запрещена. Вот и думаю, как загрузить из оперативки.
Ответы: >>1415845
Аноним 2019/06/13 12:36:37  №1415839 43
Аноним 2019/06/13 12:41:31  №1415845 44
Ответы: >>1415878
Аноним 2019/06/13 13:10:04  №1415878 45
>>1415845
Я просто не понимаю, что вообще требуется. Мне не от чего отталкиваться. Нужно увидеть правильный код, чтобы знать, где ошибки нет и где могут они быть. Я обычно так и учусь, от этого отталкиваюсь. Приходится учиться на своих ошибках, но зато запоминается лучше. А теория без этого непонятна, я прочитал 2 твои статьи и они мне ничего не дали.

Вот нужно мне получить файл в переменную $song, чтобы сделать:
$url = "https://api.telegram.org/bot$botapi/sendAudio";
$header = array('Content-Type:multipart/form-data');
$post = array(
'chat_id' => $chat_id,
'audio' => $song
);

curl_get_contents($url, $proxy, 0, $header, $post); //простая функция с curl

И как мне поможет Guzzle, curl или file_get_contents?

>Ты опять неправильно кодируешь тело запроса.
Разве? Это в контексте для file_get_contents, и... А, массивом оно не передается? Сделал так:
'header' => "Proxy-Authorization: Basic $auth\r\n" . "Content-Type: audio/mpeg",
Только я всё еще не могу отправить файл. Я могу отправить его, если просто скачаю в папку, или отправить его по ссылке. Но решить задачу в том виде, в котором она есть, уже не могу.
Аноним 2019/06/13 13:27:07  №1415887 46
>Ты опять неправильно кодируешь тело запроса.
А, всё. Я отправляю запрос с заголовком ответа сервера. Прости, я тупой.
Аноним 2019/06/13 14:00:22  №1415910 47
Ещё я только понял, что получаю содержимое файла и плевать, что использовать - Guzzle, curl или file_get_contents. Нужно бы отдохнуть, чтобы так не тупить, но я хочу закончить.
Аноним 2019/06/13 14:26:51  №1415920 48
Я правильно понял, что мне нужно содержимое самостоятельно закодировать в multipart/form-data? Понять бы теперь, как это сделать.
Ответы: >>1415930
Аноним 2019/06/13 14:41:51  №1415930 49
>>1415920
Бля, мужик, чё у тебя за проблема запрос организовать с нужными параметрами? Второй день написать не можешь.
Подтягивай матчасть значит.
Аноним 2019/06/13 16:24:54  №1415987 50
Хочу писать - начинаю писать - сразу не хочу. В чем моя проблема? =)
Ответы: >>1415989 >>1415991 >>1415998
Аноним 2019/06/13 16:28:57  №1415989 51
>>1415987
>начинаю писать - сразу не хочу
Если писать неприятно - проверься на простатит.
Ответы: >>1415995
Аноним 2019/06/13 16:34:38  №1415991 52
>>1415987
У меня наоборот обычно - начинать не хочу, а в себя прихожу через пару часов как минимум.
Аноним 2019/06/13 16:59:02  №1415995 53
>>1415989
ударение на второй слог
Аноним 2019/06/13 17:10:12  №1415998 54
>>1415987
Добро пожаловать в клуб!
Аноним 2019/06/13 22:30:18  №1416125 55
>>1415604 (OP)
>поздравляю тебя с отсутствием мозгов!
Иди нах, умник
Аноним 2019/06/14 04:27:04  №1416161 56
>>1415605
Зачем нужны четыре пробела, если есть таубляция? Ладно бы отбивалось одним-двумя пробелами, но визуально-то одно и то же!
Ответы: >>1416169 >>1416408
Аноним 2019/06/14 05:18:22  №1416169 57
1.png (3, 338x190)
190x338
2.png (5, 832x168)
168x832
Ответы: >>1416173 >>1416225
Аноним 2019/06/14 05:34:40  №1416173 58
>>1416169
А нахуя ты таб по 4 раза жмакал, долбоеб
1 таб = 4 пробелам визуально.
Аноним 2019/06/14 08:06:23  №1416225 59
>>1416169
Ширину табуляции в любой IDE настроить можно. Ставь хоть с пробел.
Мне вот таб легче нажать, чем как обезьянка пробел дрочить по 4 раза на строку, а то и больше.
Ответы: >>1416344
Аноним 2019/06/14 10:55:58  №1416344 60
>>1416225
Ну так по секрету, все так и делают, никто не дрочит пробел.
Ответы: >>1416375
Аноним 2019/06/14 11:35:11  №1416375 61
>>1416344
А что я постоянно эти вопросы встречаю везде?
Ответы: >>1416436
Аноним 2019/06/14 12:36:41  №1416408 62
>>1416161
В какой-то момент выбора между табами и пробелами вылезли художники-педерасты и начали пронзительно верещать, что они хотят что бы один и тот же код повсюду выглядел одинаково, в то время как табы по разному отображаются в различных IDE/редакторах. К сожалению, им не успели насрать на лицо и поэтому блядские пробелы теперь стандарт.
Ответы: >>1416422 >>1416733
Аноним 2019/06/14 13:05:04  №1416422 63
>>1416408
>табы по разному отображаются в различных IDE/редакторах
Какой-то хуёвый аргумент - они отображаются как настроено.
Что за инвалиды не могут сделать себе как нравится: хоть 1 отступ, хоть 8, если такой любитель? С пробелом такие штуки не получится вытворить.
Ответы: >>1416424 >>1416443 >>1416733
Аноним 2019/06/14 13:07:14  №1416424 64
>>1416422
А ещё IDE обычно с табуляцией немного код подравнивает, в силу своего ума. Пробелы тут тоже сосут.
Аноним 2019/06/14 13:25:19  №1416436 65
>>1416375
Потому что ты сидишь на борде для детей.
Аноним 2019/06/14 13:40:54  №1416443 66
>>1416422
>Какой-то хуёвый аргумент - они отображаются как настроено.
Вот именно. А пачке педиков было неприятно, что код, который они выравнивали в соответствии со своими художественными вкусами, у кого-то будет выглядеть по другому.
Ответы: >>1416458 >>1416558
Аноним 2019/06/14 14:16:55  №1416458 67
>>1416443
Ещё с табами можно динамически отображать вложенность операторов просто меняя ширину отступа, но не меняя при этом исходников.
Ответы: >>1416735
Аноним 2019/06/14 17:27:09  №1416558 68
>>1416443
Хуйня может получтся если табы с пробелами смешивать. Если ты отбиваешь отступы табами - ты не хочешь чтобы IDE меняло их на пробелы. Соответственно не подравнивай код пробелами иначе у другой макаки может хуита получится у которой ширина таба другая
Аноним 2019/06/14 17:34:56  №1416562 69
Кроме того табодолбоебы не учитывают что в коде не только идентация для блоков нужна но и иногда приходитсяи строки переносить и аргументы нетодов и пары клч => занение у массивов и другие конструкции для читабельности. Бляди начинают лупить табы с пробелами. А если у меня таб == 2 пробела
Аноним 2019/06/14 17:42:35  №1416567 70
Ребят, извиняюсь за тупой вопрос, но что требуется знать на подобных вакансиях
https://spb.hh.ru/vacancy/31725993
https://spb.hh.ru/vacancy/31636756
кроме собственно языков? Ведь полюбому там необходимы фреймворки, тестирование, package manager, дебаггер, разные БД, потом еще по фронту React, jquery, адаптивная верстка.
Ответы: >>1416570 >>1417931
Аноним 2019/06/14 17:45:08  №1416569 71
Скажите пожалуйста, сколько времени займет изучение основ PHP так чтобы на стажера хватило? Ну чисто по времени
Ответы: >>1416575
Аноним 2019/06/14 17:46:59  №1416570 72
>>1416567
Позвони им. Если они связываются со стажерами - значит у них дохуя свободного времени.
Аноним 2019/06/14 17:53:15  №1416575 73
>>1416569
На стажера одного пхп не хватит. Лучше иметь общую эрудированность в ИТ, чтобы самостоятельно искать информацию и решать задачи. Задачи тебе посильные найдут а вот нянчится и объяснять тебе никто не будет. Хоть ты и стажер
Ответы: >>1416583
Аноним 2019/06/14 18:14:08  №1416583 74
>>1416575
Ну я понимаю, просто на изучение всех тонкостей PHP уйдет больше всего времени, как мне кажется. А настроить сервер и подключить к нему базу данных можно за пару дней
Ответы: >>1416590
Аноним 2019/06/14 18:25:50  №1416590 75
>>1416583
На ПЧП у тебя уйдет ровно столько времени сколько потребуется у данного работодателя, какой попадется. Так что если знаешь что апач это программа которая запускает интерпритатор пхп и что пхп выполняется на сервере. Что запросы передаются байтами по сети по протоколу хттп. То иди уже стажерь
Ответы: >>1416599 >>1416624
Аноним 2019/06/14 18:29:20  №1416594 76
>>1415627
>Насколько часто это соблюдается на практике?
кем? В любой нормальной фирме с нормальными программистами придерживаются стандартов.

Если ты кодишь для себя и никто с твоим кодом работать не будет кроме тебя, то пиши как хочешь, а в противном случае придерживайся стандартов.
Ответы: >>1416628
Аноним 2019/06/14 18:36:57  №1416599 77
>>1416590
Круто. Порог вхождения низкий, стажировки в наличии. Не то что в этом гнусном фронтенде, откуда я пришел (не получилось вкатиться). Ну ничего, зато пригодятся знания html, css, js.
Ответы: >>1416604
Аноним 2019/06/14 18:47:12  №1416604 78
>>1416599
Порог низкий - потолок тоже низкий. Смотри не ушибись.
Ответы: >>1416615
Аноним 2019/06/14 19:03:18  №1416615 79
>>1416604
Хорошо сказано.

мимопроходил
Аноним 2019/06/14 19:27:41  №1416624 80
>>1416590
И что, этого хватит?
Ответы: >>1416626
Аноним 2019/06/14 19:33:18  №1416626 81
>>1416624
Зависит от того насколько низко ты готов опуститься.
Ответы: >>1416634
Аноним 2019/06/14 19:35:12  №1416628 82
>>1416594
>Если ты кодишь для себя
Я сначала так и хотел, когда начинал. Теперь только по рекомендациям и пишу - там многие мелочи за меня продумали. Совсем ленивый стал.
Аноним 2019/06/14 19:50:16  №1416634 83
>>1416626
Да я любой работе буду рад
Ответы: >>1416638
Аноним 2019/06/14 20:01:42  №1416638 84
>>1416634
Тебя какой-то хуй троллит.
Тебе тестовое вышлют, которое ты провалишь скорее всего. Вряд ли они мимокроков набирают - уж язык знать хорошо должен.
Ответы: >>1416662
Аноним 2019/06/14 20:45:22  №1416662 85
>>1416638
А если пройду? Это же только допуск к собесу
Ответы: >>1416682
Аноним 2019/06/14 21:41:14  №1416682 86
>>1416662
Думаешь ты один такой умный? Придётся конкурировать с теми, кто уже хоть что-то знает.
Аноним 2019/06/15 06:03:21  №1416733 87
>>1416408
>>1416422

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

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

Ты пишешь "что за инвалиды...", а я не понимаю, что ты за инвалид, который не может написать элементарный плагин для изменения отступов при выводе.
Ответы: >>1416768 >>1416769
Аноним 2019/06/15 06:05:45  №1416735 88
>>1416458

То же самое можно элементарно делать в пробелами. напиши плагин к своему убогому редактору, который будет вместо N пробелов подряд выводить M.
Ответы: >>1416768
Аноним 2019/06/15 06:34:16  №1416742 89
Вы из какого года вылезли, все споры на тему табы-пробелы уже давно решены с помощью стандарта PSR2 и инструмента PHP-CS-Fixer, который автоматически форматирует код согласно общепринятому стандарту: https://www.php-fig.org/psr/psr-2/#1-overview
Этому стандарту следуют все ведущие фреймворки вроде Symfony и Laravel, поэтому для единобразия вы тоже обязаны ему следовать, а не лезть со своим уставом в чужой монастырь, иначе будет бардак.
IDE поддерживают PHP-CS-Fixer, так что вы можете одним хоткеем форматировать код по стандарту. Обсуждать тут нечего.
Аноним 2019/06/15 08:24:59  №1416768 90
>>1416733
>>1416735
>напиши плагин
Ты надеюсь понимаешь как это ебануто звучит? Вместо целевой разработки я должен заниматься переделкой IDE.
Толсто в общем.
Ответы: >>1416951 >>1416953
Аноним 2019/06/15 08:28:25  №1416769 91
>>1416733
>Напиши плагин к редактору, который будет при выводе заменять каждые N пробелов на M.
Уже есть такой плагин - табуляция.
Аноним 2019/06/15 15:03:29  №1416902 92
С Хероку кто-нибудь работал?
>Dyno memory:
>Different dyno sizes offer different amounts of maximum RAM:
>free, hobby and standard-1x have 512 MB

>Dyno memory and restarts:
>If the memory size of your dyno keeps growing until it reaches two times its quota (for a standard-1x dyno, 512 MB x 2 = 1 GB), the dyno manager will restart your dyno with an R15 error.

И у меня при этом вылетает ошибка:
>PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 41959424 bytes)
Как увеличить лимит с 128 МБ до максимума?
Ответы: >>1416920
Аноним 2019/06/15 15:37:18  №1416920 93
Ответы: >>1416928
Аноним 2019/06/15 15:57:20  №1416928 94
>>1416920
Всё, разобрался.
.user.ini, вроде, не работает, но ini_set("memory_limit", "1024M") - вполне.
Аноним 2019/06/15 17:15:32  №1416951 95
>>1416768

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

Меня пробелы полностью устраивают. Вот мне делать нечего, вместо того, чтобы думать над программой, думать, где я должен табы, а где пробелы ставить.
Аноним 2019/06/15 17:17:54  №1416953 96
>>1416768

Ну и насколько я знаю, элита /pr/ использует очень гибко конфигурируемые редакторы, под которые можно писать макросы на элитном языке со скобочками, для них такой плагин сделать, наверно, дело десяти минут.
Аноним 2019/06/16 00:21:02  №1417055 97
Парни, есть странный вопрос. Как из php скрипта запросами можно на лету кардинально изменять структуру(!) таблицы в бд, если не считать ALTER TABLE.?
Ответы: >>1417057
Аноним 2019/06/16 00:31:04  №1417057 98
>>1417055
Создать новую таблицу и импортировать туда инфу со старой, потом удалить старую и переименовать новую.
Ответы: >>1417479
Аноним 2019/06/16 08:41:26  №1417123 99
>>1415604 (OP)
Замечательная шапка, ОП, ты молодец!

мимопроходил
Аноним 2019/06/16 16:05:55  №1417348 100
Объясните, зачем php разработчику углубленное знание джаваскрипта, если он не фулстек? Почему так в шапке написано?
Ответы: >>1417413
Аноним 2019/06/16 18:33:37  №1417413 101
>>1417348
Всмысле углубленное. Там простые задачи, чтобы ты мог хоть что-то сделать
Ответы: >>1417434
Аноним 2019/06/16 19:12:59  №1417434 102
>>1417413
ну, этим же фронтендер должен заниматься?
Ответы: >>1417476
Аноним 2019/06/16 21:48:19  №1417476 103
>>1417434
Ну не хочешь не учи
Аноним 2019/06/16 22:00:44  №1417479 104
>>1417057
Ну вообщем да, без копии бд никак не получается, целый день пытался чот измудрить. Если кому нибудь придет что в голову отпишите плз, я мониторю тред.
Аноним 2019/06/17 08:23:24  №1417583 105
Наверное вопрос не по теме треда, но всё равно спрошу. У меня был сервер на котором лампово вертелся блог WP и форум phpBB (каждый на своём домене) всё это было на php5 разделенное по своим "блокам" chroot+fpm
Сейчас обновил всё до php7.2 и получается очень странная херота, что в некотором проценте случаев php процесс ВП пытается прочитать файлы из системы форума, а форум иногда выдаёт 404 ошибку из-за отсутствия wp-config.php, то есть как-будто их chroot смешиваются, или процессы уходят не туда. При этом все конфиги уже трижды переписаны и в nginx и в php всё по эталонным инструкциям, да и поиск не выдаёт - что у кого-то были подобные проблемы. Что делать?
Аноним 2019/06/17 12:34:19  №1417736 106
Привет котаны. Я нуб, ток осваиваю PHP.
Что имею\умею - имеется содранный и чуть переделанный MVC фреймворк. Представление реализовано стандартно - html возвращаю шаблонами с разметкой. В принципе я это все понимаю в "принципе", ага.
Сейчас в учебных целях я на свой недофреймворк натягиваю бутстрап-шаблон, в шаблоне соответственно всякие поля для отправки почты и менюшки и прочее. Все это реализовано с помощью джейквери.
Так уж получилось что поверхностно знаю reactjs что то уровня todo могу сделать.
Вот что прошу подсказать:
Я читал о том, что в стандартную страницу можно вставлять отдельные компоненты react, и мне хочется не джейквери использовать в отдельных случаях, а попробовать воткнуть реакт-компонент. Тупо отдельную форму отправки почты.
Как это сделать? С помощью вэб-пака я собираю бандл реакта, в котором допустим код одного компонента, и вставляю его куда нужно в моем шаблоне? Но это я понимаю на столько в общем, что нихуя не понимаю.
У кого нибудь есть подобный опыт? Опыт простенького скрещивания реакта с пхп?
Ответы: >>1417753 >>1417761 >>1417789
Аноним 2019/06/17 12:54:11  №1417753 107
>>1417736
О, Реакт. Моя любимая тема.
Была дом, и в доме срали в подвале. Управдома это заебало и что вы думаете он сделал? Может быть, он натыкал камер в подвале? Или он поставил биотуалет близко к подъезду? Нет, конечно. Он приклеил на подвал табличку Туалет! Вот это React-way.
Когда я увидел ёбаный JSX и охуительные функции render(), мои волосы встали нахуй дыбом. Я сам несколько раз лепил html в js, но я никогда не считал это чем-то хорошим. Я до последнего не мог поверить, что этот кусок кала - признанный на весь мир фреймворк.
Ответы: >>1417761 >>1417816
Аноним 2019/06/17 13:08:20  №1417761 108
>>1417736
в простейшем случае ты его просто затребываешь инлайн прямо на штмл странице как жиквери https://reactjs.org/docs/add-react-to-a-website.html#add-react-in-one-minute

но если хочешь spa то надо https://facebook.github.io/create-react-app/

>>1417753
пиши без классов, с хуками так сейчас все и пишут т.к. сет стейт не нужна

алсо
>Я сам несколько раз лепил html в js, но я никогда не считал это чем-то хорошим.
у тебя есть выбор или джс в штмл или штмл в джс, не вижу существенной разницы
Ответы: >>1417773 >>1417816
Аноним 2019/06/17 13:23:13  №1417773 109
>>1417761
>не вижу существенной разницы
А она есть. В случае, когда у тебя нет Реакта, тебе приходится в html время от времени скармливать готовым объектам <?=json_encode($array); ?> и всё. Реакт же сплетает в братских объятиях логику и представление.
Я сталкивался с Реактом на 5 проектах, и каждый раз меня не покидало ощущение, что я сделаю аналогичное говно на нативке страниц на 20, достаточное для конкретного проекта, и при этом избавлюсь от тонны проблем.
Vue вернул мне веру в человечество, это именно то, чем должен быть фронт фреймворк.
Аноним 2019/06/17 13:46:10  №1417789 110
>>1417736

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

Ну например, типичный пример приложения - это бесконечная лента новостей с категориями, комментариями, лайками, работающая (насколько хватает возможностей) в оффлайн-режиме при временном пропадании интернета.
Ответы: >>1417816
Аноним 2019/06/17 14:32:43  №1417816 111
>>1417761
>>в простейшем случае ты его просто затребываешь инлайн прямо на штмл
Да, именно это хочу. Спасибо!
SPA пока чето не хочу.
>>1417753
Ну, тут теорема эскобара.
>>1417789
Не, именно хочу компонент воткнуть. Естествоиспытательский интерес.

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

Ответы: >>1417821 >>1417823 >>1418057
Аноним 2019/06/17 14:38:40  №1417821 112
>>1417816
>А вообще в принципе есть разница на каком языке бекенд для SPA написан?
нет, нету
на ноде пишут т.к. можно все прямо в одной папке проекта писать - и сервер и клиентскую часть, кроме того она довольно быстрая, быстрее питона, пхп и руби
Ответы: >>1418057
Аноним 2019/06/17 14:39:23  №1417823 113
>>1417816

А зачем тебе асинхронность? Это только усложняет написание кода. Плюс, у PHP, в отличие от Node.JS, гораздо лучше реализована буква S (stateless) из REST, и в нем ниже вероятность утечек памяти.
Ответы: >>1418057
Аноним 2019/06/17 14:43:57  №1417826 114
вообще да, из-за асинхронности нода сложнее
но она из-за нее же и быстрее
Ответы: >>1417831
Аноним 2019/06/17 14:55:38  №1417831 115
>>1417826

Это очень сильно зависит от ситуации. Да, есть ситуации вроде проблемы 10K, где асинхронность может помочь, но если у тебя приложение просто делает селект из БД и обрабатывает данные, то работать оно будет одинаково, просто в асинхронном коде все будет сложнее и будет куча ненужных в синхронном коде промисов.
Аноним 2019/06/17 16:38:12  №1417931 116
>>1416567
> Аноним 14/06/19 Птн 20:42:35 №141656770
>
Не ходи в qsoft, там заставят код на листочке писать, а потом посадят на битрикс. Будешь потом плакать и суицидом все закончится.
Аноним 2019/06/17 19:23:44  №1418037 117
Скажите, какой примерно минимальный проект нужно сделать, чтобы вкатиться? Чтобы и на гитхабе не стыдно показать и опыта полезного дало
Ответы: >>1418043 >>1418053
Аноним 2019/06/17 19:39:31  №1418043 118
>>1418037
Рандом. Нужно тупо ходить по собеседованиям пока не прокнет.
Аноним 2019/06/17 19:59:33  №1418053 119
>>1418037

У нас в шапке есть проект TestHub - это наверно немного с запасом, как мне кажется, неплохой проект для начинающего, который может показать его/её навыки.
Аноним 2019/06/17 20:26:32  №1418057 120
>>1417816
>>1417821
>>1417823

Котаны, на волне интереса я решил снова поковырять ноду, сорр что тут спрашиваю, но в js тредах спрашивать про бекенд чет не лежит душа. Когда я изучал ноду, я инвалидно юзал express, абсолютно не понимая зачем нужны мидллвейры. Но я не понимаю и сейчас.
Вот допустим, у меня php MVC фреймворк. Роутинг там классический - регуляркой парсится url, и вызываются соответствующие контроллеры и экшены. Где в данном случае могут быть применены мидлвэйры в нодовском понимании?
Ответы: >>1418058
Аноним 2019/06/17 20:29:03  №1418058 121
>>1418057

Middleware обычно работает с запросом/ответом на уровне протокола HTTP, типичные применения:

- логгирование, статистика
- сжатие передаваемых данных
- шифрование/расшифровка кук
- кеширование на уровне HTTP протокола
- ограничение числа запросов, отсев ботов

Поищи список middleware к нужному фреймворку и посмотри, что там есть.
Аноним 2019/06/17 21:10:40  №1418072 122
Пи Эйч Пи-и-и-и.
Ответы: >>1418082
Аноним 2019/06/17 22:16:44  №1418082 123
>>1418072
Почему очень много уважаемых и шарящих в этой теме людей на полном серьезе произносят PHP как ПЭ ХА ПЭ?
Это какой-то мем или им просто похуй?
Ответы: >>1418149
Аноним 2019/06/17 22:51:17  №1418085 124
>>1415604 (OP)
На самом деле, сейчас, во время, когда существует бешеное количество информации, от которой Сократ сошел бы с ума, лол, главная проблема - 95% инфы - просто лажа, и нужно искать среди терабайтов данных действительно стоящий материал. А это все из-за того, что каждый мудак, который умеет находить последовательность чисел фибоначчи, считает себя супер-пупер гением, и решает запилить обучающий, мать его, контент. Вот и выходит, что интернет - огромная помойка, сайты - лажа, инфа - блевотина бездарей. И чтобы среди этого обезьянника встать на путь становления человеком, нужно понять, что невозможно выучить все, только лишь улучшая понимание каждого топика ежедневно, запоминая и анализируя теорию, практикуя навый код, решая появляющиеся проблемы, мы можем развиваться. Поэтому, ребята, просто удалите все, что не открывали в течении последнего месяца, оно вам не нужно, задайте вопрос себе: "Чего я хочу? Кто я сейчас и что могу?, возьмите одну тему и изучайте ее. Это же структурный подход, пользуйтесь им. Удачи. Кто еще говорил, что это наука, и она не может быть простой и понятной? Кто говорит, что программировать легко - бездари, лжецы, продажники, и прочая челядь, которая срет в уши. Самое молодое направление в науке, как оно может быть простым?
Аноним 2019/06/18 07:10:53  №1418149 125
>>1418082
Можно говорить ЭР НЭ ЭР
Ответы: >>1418150
Аноним 2019/06/18 07:21:19  №1418150 126
Аноним 2019/06/18 08:29:15  №1418177 127
Еще раз хочу сказать спасибо ОПу и всем пищущим, вы заняты богоугодным делом
Ответы: >>1418390
Аноним 2019/06/18 12:29:40  №1418278 128
Мда, я думал джаваскрипт это дерьмовый язык. Теперь я изучаю пхп и понимаю, что такое настоящий дерьмовый язык. А джаваскрипт просто запутанный.
Надеюсь эти недостатки как-то решаются, с помощью фрейворков или еще чего, или просто с ними не сталкиваешься по работе. А то я не знаю как я буду с этим работать
Ответы: >>1418304 >>1418390 >>1418468
Аноним 2019/06/18 13:33:24  №1418304 129
>>1418278
Я тебе как программист html заявляю
<?php echo"<div>да ты охуил чтоли!</div>" ?>
Ответы: >>1418313
Аноним 2019/06/18 14:01:39  №1418313 130
>>1418304
<div><?= 'Да ты охуел, чтоли?!' ?></div>
Ответы: >>1418314
Аноним 2019/06/18 14:03:40  №1418314 131
Аноним 2019/06/18 15:26:00  №1418390 132
>>1418278
Все так.
И да, ца у этого пыхыпыговна соответствующая - тупое, совершенно безмозглое быдло.
Семенящий дебил по кличке ОП >>1418177 - например.
Аноним 2019/06/18 17:06:14  №1418468 133
>>1418278
Нормальный язык PHP. И что крайне важно - заебенно подходит под свою задачу. Комьюнити годное. И доки отличные. В принципе для вэба среднего масштаба руки лучше ничего нет.
Я сейчас с нодой решил поебаться, но так как подзабыл JS ебусь с прототипами, а после буду ебаться с evemtEmmiter что бы понять что откуда в этом блядстве наследуется.
Ответы: >>1418469
Аноним 2019/06/18 17:08:06  №1418469 134
>>1418468
Классы в пхп гораздо симпатичнее, и это нормальные классы, с нормальной инкапсуляцией.
Аноним 2019/06/18 19:19:35  №1418541 135
Анончик помоги, не выполняется запрос. В php вторую неделю.
Работаю php+apache+mysql +phpmyadmin
Сейчас еще кину скрин формы в index.php..
Два дня ебусь, гугл не помог. Молю, с меня нефть
Аноним 2019/06/18 19:24:04  №1418543 136
>>1418541
форму переменной в запросе '{$login}' по-другому тоже писал '$login' дело не в нем.
form.
Аноним 2019/06/18 19:32:01  №1418545 137
>>1418541

Для начала, исправь уязвимости в своем коде: SQL инъекцию и хранение паролей в открытом виде:

- https://github.com/codedokode/pasta/blob/master/security/sql-injection.md
- https://github.com/codedokode/pasta/blob/master/security/password-hashing.md

Далее, у тебя есть код if ($connection == 0). Открой мануал по mysql_connect и прочитай, что она возвращает. Там должно быть сравнение не с нулем. Используя var_dump(), выведи, что возвращает функция mysqli_connect,

Далее, при использовании mysqli ты должен проверять результат вызова каждой функции, что она не вернула например null или false (что именно, написано в мануале по этой функции). Ты должен ставить if с проверкой после каждого вызова mysqli-функции. В твоем случае, нет if после
mysqli_query.
Ответы: >>1418587 >>1418589
Аноним 2019/06/18 19:33:43  №1418547 138
>>1418541

Ой, вижу, что от инъекции у тебя защита есть. Но хранение паролей все равно стоит переделать.
Ответы: >>1418587 >>1418641
Аноним 2019/06/18 19:35:32  №1418551 139
>>1418541

Также, у тебя скорее всего игнорируются часть предупреждений. Исправь в php.ini или добавь туда директиву

error_reporting = E_ALL

вместо того, что там написано, чтобы не скрывать никакие ошибки.
Ответы: >>1418587
Аноним 2019/06/18 20:43:52  №1418587 140
>>1418545
>>1418547
>>1418551
Короче прикинь, я понял ошибку.
Оказывается в запросе , к примеру (INSERT INTO `users` (`id`, `login`, `password`) VALUES ('55', 'fdf', 'fdf'));
у users, id, login, password ДОЛЖНЫ СТОЯТЬ другие ковычки ```
А в остальном обычные ''
Воот, как пофиксить эту ебалу? Что бы везде одинаковые ставить стандартные одинарные ковычки?
Может это потому что я на маке?
Ответы: >>1418641 >>1418693
Аноним 2019/06/18 20:45:40  №1418589 141
Аноним 2019/06/18 22:20:58  №1418616 142
>>1418541
У тебя опечатка в слове $conection енжой йор динамическая типизация
Аноним 2019/06/19 03:54:07  №1418641 143
>>1418547
>Ой, вижу
>>1418587
>Короче прикинь
Пиздец два педика.
Ответы: >>1418715
Аноним 2019/06/19 07:08:17  №1418683 144
Ответы: >>1418899
Аноним 2019/06/19 07:51:37  №1418693 145
>>1418587

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

http://www.mysql.ru/docs/man/Legal_names.html
Аноним 2019/06/19 09:25:41  №1418715 146
>>1418641
Ща бы доебываться до слов..
Аноним 2019/06/19 14:54:49  №1418899 147
>>1418683
А чем оно лучше API mysqli?
Ответы: >>1418904
Аноним 2019/06/19 15:09:29  №1418904 148
>>1418899
PDO более универсален - с разными базами можно работать.
Ответы: >>1418938
Аноним 2019/06/19 15:13:50  №1418907 149
Начинаю изучать PHP. Прочитал, что сейчас MySQL - неактуально и стоит переходить на PDO. Тру?
Ответы: >>1418944
Аноним 2019/06/19 16:26:37  №1418938 150
>>1418904
А какие могут пригодиться кроме mysql
Ответы: >>1418944 >>1418995
Аноним 2019/06/19 16:33:23  №1418944 151
Аноним 2019/06/19 17:05:41  №1418967 152
Вкатываюсь в пхп. Прочитал шапку фул. Нашел 2 книги, но не сказал бы, что они прям для новичков (их описание говорит тоже об этом). Посоветуйте что-то объемное, охватывающее большинство ключевых моментов, но при этом понятное
Аноним 2019/06/19 17:45:55  №1418995 153
Аноним 2019/06/19 17:47:41  №1418997 154
>>1418967
>Прочитал шапку
>Нашел 2 книги
Ты в библиотеку вкатываешься или в разработку? Толку от чтения без практики?
Ответы: >>1419145
Аноним 2019/06/19 23:12:38  №1419144 155
>>1418967
Я бы вообще посоветовал на ютубе посмотреть туторы, для базиса.
В книге все слишком подробно описана каждая вещь поэтому чтоб в целом узнать структуру придется прочесть 500+ страниц
Аноним 2019/06/19 23:13:43  №1419145 156
>>1418997
Нужно больше книжек богу книжек
Аноним 2019/06/20 01:01:59  №1419153 157
>>1418967
>Посоветуйте что-то объемное, охватывающее большинство ключевых моментов, но при этом понятное
Мне понравилась местная задачка со студентами - практически все аспекты веб-разработки там усвоить придётся. Лучше всяких книжек.
Ответы: >>1419442
Аноним 2019/06/20 01:02:36  №1419154 158
>>1418967
Как вообще можно учить язык без выполнения какой-то задачи я хз.
Аноним 2019/06/20 06:08:23  №1419207 159
Route::view в ларе отвечает за указание на файл со страничкой?
Аноним 2019/06/20 11:42:20  №1419407 160
Аноны, есть тут кто то кто на Node.js пишет? Я увлекся немного.
Хочу что то аналогичное моему php-фреймворку запилить - то есть роутер парсит url, и вызывает соответствующие контроллеры и экшены.
В сети все туторы на express, там это все несколько иначе. Впрочем обработчик запроса в express поддерживает регулярки. Но в JS нет аналога preg_match. В JS нет автозагрузки классов хотя может она не нужна? Ведь класс загружается однажды, и висит в памяти, так?
Сейчас хочу что то типа MVC фреймворка на ноде сделать. Что бы подгружались классы и вызывались экшены.
Не в JS тред пишу по очевидным причинам - они там учатся css динамически менять.

А так, глубже копнув ноду - всеже как же удобен пхп для своих задач. В ноде что бы данные из post вытащить - нужно поебаться.

Ответы: >>1419443 >>1419588
Аноним 2019/06/20 13:18:42  №1419442 161
>>1419153
Да, хорошая задачка. А можете порекомендовать какой-нибудь видеоурок, короткий, но дающий все базовые навыки веб разработки? Можно без фронта
Ответы: >>1419455
Аноним 2019/06/20 13:18:51  №1419443 162
>>1419407
>В JS нет автозагрузки классов
Так язык был придуман специально для динамической смены css. Зачем ему это?
Хочешь современных фич - используй тайп скрипт.
Аноним 2019/06/20 13:35:46  №1419455 163
>>1419442
Нет такого урока, да и быть не может. Поначалу полезно всё подряд смотреть, пока сам не подберёшь себе нужный формат и курс.
Аноним 2019/06/20 16:55:23  №1419523 164
Почему ошибки в php такие некорректные?
Пишет ,что скобка лишняя:
Parse error: syntax error, unexpected ';' in /Users/akismac/Sites/bar/includes/registration.inc.php on line 19

А по факту все ок
Аноним 2019/06/20 17:09:43  №1419540 165
>>1419523
Не лишняя а неожиданная, значит что то не дописано раньше.
Ты одну ) потерял в 17 строке.
Ответы: >>1419598
Аноним 2019/06/20 17:13:21  №1419546 166
>>1419523
Какой милый код, анон
Смотрю и глаза радуются
Ответы: >>1419562
Аноним 2019/06/20 17:19:27  №1419552 167
>>1419523
что за тема подсветки синтаксиса?
Ответы: >>1419562
Аноним 2019/06/20 17:35:49  №1419562 168
>>1419552
Стандартная тема Саблайма.

>>1419546
Чего в нём милого? Обычный джунский код.
Ответы: >>1419564 >>1419576
Аноним 2019/06/20 17:36:58  №1419564 169
Аноним 2019/06/20 18:00:51  №1419576 170
>>1419562
>Обычный джунский код.
Это ты так думаешь
>Чего в нём милого?
У тебя просто нет чувства прекрасного
Ответы: >>1419581
Аноним 2019/06/20 18:12:43  №1419581 171
>>1419576
>Это ты так думаешь
Ну да - я, не ты же. С чего бы мне твои мысли высказывать?

>У тебя просто нет чувства прекрасного
Ты красивее просто ничего не видел.
Ответы: >>1419582
Аноним 2019/06/20 18:14:31  №1419582 172
>>1419581
>Ты красивее просто ничего не видел.
Нет, просто я умею находить прекрасное и красивое в мелочах, вроде твоего "обычного джунского кода".
Ответы: >>1419587
Аноним 2019/06/20 18:19:16  №1419587 173
>>1419582
В каких ещё мелочах? Там даже программирования нет, как явления. Ты просто дёргаешь стандартный функционал - ни обстракций не завезли, ни знаний технологии. Это даже не джун, а скрипт-кидди.
Ещё и семёнишь.
Ответы: >>1419601
Аноним 2019/06/20 18:24:45  №1419588 174
>>1419407
> Но в JS нет аналога preg_match
Есть. Либо /regex/.test(string) либо string.match(/regex/)

> В JS нет автозагрузки классов
В JS нет, в ноде есть модули, которые можно экспортировать и импортировать, а в новой ноде с флагом experimental-modules можно использовать ES6 модули: https://nodejs.org/api/esm.html#esm_code_import_code_statements

Не понимаю, что ты там велосипедить собрался. Поддерживаю чужой проект на ноде третий месяц после нескольких лет Symfony/Doctrine, ощущения как будто пересадили с болида Формулы 1 на одноколёсный велосипед:
- Sequelize вместо нормальной ORM: нет автоматической генерации миграций, на foreign key предыдущие разрабы положили болт, потому что самим лень проставлять, а Sequelize не умеет их добавлять автоматически (Doctrine умеет)
- Нет способа быстро получить CRUD API, для Symfony есть API Platform, который ставится одной командой и позволяет несколькими аннотациями описать CRUD API для сущностей со всеми типами связей, фильтры, пагинацию, поиск по частичному совпадению
- Всё на JS (не TypeScript), автокомплит и go to definition в половине случаев не работают, куча нигде не описанных структур разного уровня вложенности (даже в PHP сейчас принято заворачивать такое в объекты с геттерами, чтобы хоть где-то в коде были описаны такие структуры)
- Про DI контейнер никто не слышал, поэтому норма когда в каждом консольном скрипте копипаста на 100 строк из ручной конфигурации. По этой же причине везде static методы, люди просто не знали как по-другому

Итого: Если нужно, чтобы проект не утонул под тяжестью багов и велосипедов спустя пару лет - нужно брать фреймворки, которые диктуют архитектуру и в которых многие проблемы уже решены, чтобы программисты проявляли меньше творчества. Если бы проект изначально писали мы, то взяли бы PHP и Symfony.
Ответы: >>1419622 >>1419816
Аноним 2019/06/20 18:55:27  №1419598 175
Аноним 2019/06/20 18:59:57  №1419601 176
>>1419587
> ни обстракций не завезли
Почему все "кодеры" 21 века ,любят напыщенные абстракции и считают это понтом? Причем в больших колличествам.
Вас что всех в универе по одинаковым системам образования прогоняли? Представь себе, раньше вообще небыло ООП, люди писали функциональщину. Ооп просто мода, часто ее пихают туда где от нее нет никакого смысла.
Ответы: >>1419602 >>1419608
Аноним 2019/06/20 19:06:17  №1419602 177
>>1419601
>функциональщину.
процедурщину,историк
Аноним 2019/06/20 19:11:07  №1419608 178
>>1419601
>любят напыщенные абстракции и считают это понтом?
Не понт, а необходимость. Ты бы понял это, если бы не простейшие скрипты писал, а софтверно инженерил.
Не дай бох тебе большой проект - утонешь в своём же говне из копипасты и тысяч if - else.

>раньше вообще небыло ООП
Раньше программы меньше были, и компьютеры больше.

>Ооп просто мода
Это ты сказал?

>пихают туда где от нее нет никакого смысла
Надо тебя спрашивать куда чего пихать?
Ответы: >>1419634
Аноним 2019/06/20 19:37:52  №1419622 179
GitHub Аноним 2019/06/20 20:13:24  №1419631 180
Как оформить свой блядский гитхаб, чтоб он был не всратым портфолио?

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

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

Надо удалять все говно и оставить только годноту? Но я ж там с 2014 и вся история потрется((( Завести новый для портфолио? Или забить хуй и расположить новые годные проджекты?
Ответы: >>1419637 >>1419700
Аноним 2019/06/20 20:21:50  №1419634 181
>>1419608
>Не дай бох тебе большой проект - утонешь в своём же говне из копипасты и тысяч if - else.
А чем ооп спасет? Там же тоже надо знать какие у тебя функции в классе, какие нужны параметры для инициализации
Ответы: >>1419711
Аноним 2019/06/20 20:23:36  №1419637 182
>>1419631
А разве там нельзя скрывать репозитории?
Вообще хз - будь я на месте работодателя, то смотрел бы последний код, а не то, что ты 5 лет назад писал?
Аноним 2019/06/20 20:28:56  №1419638 183
Нихуя Себе У Меня Случился Бесконечный Цикл
Браузер В Полном Зависоне
Я Тоже В Нем И К Тому Же Я В Ахуе
Ушел Греть Голову На Улице

Пиздос
Ответы: >>1419661
Аноним 2019/06/20 21:08:20  №1419661 184
>>1419638
ЗАЕБИСЬ!!!!!!!!!!!!!!!!! У МЕНЯ ВСЕ ПОЛУЧИЛОСЬ УРААААААААААААААААААА
ОН БОЛЬШЕ НЕ БЕСКОНЕЧНЫЙ
Аноним 2019/06/20 22:39:49  №1419697 185
>>1419523

У тебя неправильно формируются ссылки для редиректа, а именно, не происходит корректной обработки спецсимволов при подстановке в них параметров. Советую почитать урок и исправить: https://github.com/codedokode/pasta/blob/master/network/urls.md

Также, есть более удобный алгоритм обработки форм, позволяющий исключить лишние редиректы: https://github.com/codedokode/pasta/blob/master/forms.md
Ответы: >>1419702
Аноним 2019/06/20 22:44:08  №1419700 186
>>1419631

Во-первых, заполни информацию о себе. Во-вторых, там вроде есть pinned repositories, которые можно закрепить вверху списка. В-третьих, весь твой гитхаб изучать все равно никто не будет, так как на это нет времени.
Аноним 2019/06/20 22:53:27  №1419702 187
Аноним 2019/06/20 22:54:50  №1419703 188
Ответы: >>1419704 >>1419712
Аноним 2019/06/20 22:57:06  №1419704 189
Аноним 2019/06/20 22:59:01  №1419705 190
>>1415604 (OP)
> с формами, MVC, git, composer, JS,
А зачем php вообще нужен если учить JS? разве Дс не может полностью заменить php?
Ответы: >>1419706 >>1419713
Аноним 2019/06/20 23:00:03  №1419706 191
Ответы: >>1419709
Аноним 2019/06/20 23:18:58  №1419709 192
>>1419706
Ну расскажи, в чем я неправ
Аноним 2019/06/20 23:32:32  №1419711 193
>>1419634
Объекты более гибкие чем функции. Их понимать проще, описывать и сочетать. Тупо нагляднее получается.
Аноним 2019/06/20 23:39:37  №1419712 194
>>1419703
На Боброчане наверняка запилили. В их стиле.
Аноним 2019/06/20 23:41:09  №1419713 195
>>1419705
>разве Дс не может полностью заменить php
Ассемблер может заменить и то и другое.
Вкатывайся в ассемблер.
А лучше вообще сразу байт-код ебаш паяльником.
Ответы: >>1419817 >>1419854
Аноним 2019/06/21 05:55:15  №1419759 196
Аноним 2019/06/21 08:10:20  №1419816 197
>>1419588
>>Не понимаю, что ты там велосипедить собрался.
Да я в принципе согласен с тобой. ПХП удобнее. Ноду заюзал что бы просто с иного ракурса взглянуть на разработку в вэб.
Сейчас вот задумался - как реализовать свою цепочку мидлвэйров в пхп, в моем фреймворке. Понятно что не ради продакшена, а ради тупо интереса.

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

Скажи, у тебя есть примеры простого приложения на ноде с MVC паттерном? Потому что пока что в express все похоже на сильно модифицированное if..else, пусть и с вызовом контроллера.

Ответы: >>1420204
Аноним 2019/06/21 08:13:46  №1419817 198
>>1419713
>байт-код
>не машинный
Виртуальным паяльником?
Аноним 2019/06/21 08:59:40  №1419854 199
>>1419713
Очень смешно, я ведь серьезно спросил
Ответы: >>1419861
Аноним 2019/06/21 09:12:53  №1419861 200
>>1419854
Ты хуйню спросил. Ответили тебе ровно тем же - пиши на ассемблере, ведь он и пхп и жс заменить может. Что тебе не понятно?
Аноним 2019/06/21 09:25:05  №1419866 201
пхп не нужен
Ответы: >>1419867 >>1419888
Аноним 2019/06/21 09:29:13  №1419867 202
Аноним 2019/06/21 10:00:47  №1419888 203
>>1419866
Всё, аноны, сворачиваемся - анон сказал, что пхп не нужен. Закрываем лавочку.
Ответы: >>1419894
Аноним 2019/06/21 10:23:56  №1419894 204
>>1419888
для новых проектов
Ответы: >>1419895 >>1419896 >>1419898
Аноним 2019/06/21 10:24:53  №1419895 205
Аноним 2019/06/21 10:25:34  №1419896 206
Аноним 2019/06/21 10:26:31  №1419898 207
Аноним 2019/06/21 10:32:21  №1419902 208
как в ларавеле заполнить таблицу данными?
Ответы: >>1419910
Аноним 2019/06/21 10:46:12  №1419909 209
Хочу погрузиться в жавускрипт с головой, но у меня всё желание отбивает местная фронтентд-гопота. Создаётся ощущение, что ЦА этого языка - токсичные школьники и прочий залётный ИТ-скам на хайпе.
Это неправильно всё конечно, но интерес здорово убивает.
Аноним 2019/06/21 10:48:59  №1419910 210
>>1419902
блять чел реально помощи просит, он еще молод и глуп и не видал таких залуп, ептя..ну ответить че переломишься?Себя сначала вспомни как ты начинал, или ты прям с пеленок супер пупер кодером был? ага вставил дискетку в лоб с надписью ООЛ и все охереный сец
Ответы: >>1419911 >>1419918
Аноним 2019/06/21 10:50:05  №1419911 211
>>1419910
ты не ошибся постом?
Ответы: >>1419912
Аноним 2019/06/21 10:51:53  №1419912 212
Аноним 2019/06/21 11:02:55  №1419918 213
Ответы: >>1419919
Аноним 2019/06/21 11:04:21  №1419919 214
>>1419918
ты хауди хо пересмотрел что ли? лечись
Ответы: >>1419923
Аноним 2019/06/21 11:09:39  №1419923 215
>>1419919
Тебе тут никто ничего расжёвывать не будет, пионер. Тем более такому наглому говну как ты.
Если ты этого ждал, то можешь выкатиться из треда вместе со своим говноблоггером.
Ответы: >>1419924
Аноним 2019/06/21 11:12:50  №1419924 216
>>1419923
наглое говно это ты и твой дружок хауди хо, которые на малейшую просьбу о помощи обкладывают хуями и посылают в гугл
но вообще пардон, меня настолько взбесили эти слова нашет "нафиг не спрашивай у меня, матерого программера, вон, гуглить учись" что я автоматом выдал на гора, сам не понял как это у меня получилось..мдя, а в школе вроде 4 по дойчу стояла, а тут прям как чистый берлинец выдал, сам в шоке.
Ответы: >>1419926 >>1419928
Аноним 2019/06/21 11:15:39  №1419926 217
>>1419924
>посылают в гугл
Первое, что учиться любой айтишник, будь то хоть хелпдеском, хоть админом, хоть кодером - ходить в гугл.
Иди в гугл и не задавай тупых вопросов в ИТТ треде.
Аноним 2019/06/21 11:17:52  №1419928 218
>>1419924
У Ларавеля отличная документация. Ты от треда чего вообще хочешь? Сходи и сам почитай.
Ответы: >>1419929
Аноним 2019/06/21 11:20:09  №1419929 219
>>1419928
я бы не сказал,что его док охуенно подходит новичку
Ответы: >>1419933
Аноним 2019/06/21 11:27:17  №1419933 220
>>1419929
Значит тебе ещё рано такие вещи трогать.
О том тебе и говорять - расжёвывать никто не будет. Самому к этому идти надо.
Ответы: >>1419934
Аноним 2019/06/21 11:29:07  №1419934 221
15328630530290.png (234, 512x512)
512x512
>>1419933
>Это тред и для начинающих
Ответы: >>1419936
Аноним 2019/06/21 11:32:43  №1419936 222
>>1419934
Ларавель не для начинающих.
Учи шапку треда - по ней тебе ответят.
Ответы: >>1419937
Аноним 2019/06/21 11:33:59  №1419937 223
>>1419936
ты мне предлагаешь начать с говно слима,там доки вообще пиздец
Ответы: >>1419939
Аноним 2019/06/21 11:35:23  №1419939 224
>>1419937
Откуда тебе знать какая там документация, если ты в ней не разбираешься?
Учи матчасть и не выёбывайся.
Ответы: >>1419940
Аноним 2019/06/21 11:37:55  №1419940 225
Ответы: >>1419942 >>1419948 >>1419949
Аноним 2019/06/21 11:40:37  №1419942 226
>>1419940
Сообщество кодеров вообще очень токсичное.
Аноним 2019/06/21 11:49:43  №1419948 227
Аноним 2019/06/21 11:52:38  №1419949 228
>>1419940
Пришёл васян - расскажите ему быстро как работать с базами на Ларе. Сам не знает нихуя и учить не хочет. Бросается говном в очевидные советы.
Ну ты и дно, дружок.
Ответы: >>1419951
Аноним 2019/06/21 11:54:07  №1419951 229
Аноним 2019/06/21 11:57:17  №1419953 230
14813168187240.jpg (50, 500x500)
500x500
няши,с чего такой бугурт?нужно быть добрее и поставить неофита на путь истинный...человеку нужно помоч...
Ответы: >>1419954
Аноним 2019/06/21 12:03:25  №1419954 231
>>1419953
>нужно быть добрее
>человеку нужно помоч
Кому?
Мне не нужно.
Тебе нужно - ты и помогай.
Ответы: >>1419963
Аноним 2019/06/21 12:19:39  №1419963 232
>>1419954
пхп плохо знаю,не мое направление
Ответы: >>1419964
Аноним 2019/06/21 12:21:44  №1419964 233
>>1419963
>пхп плохо знаю
Малаца, все правильно делаешь.
Аноним 2019/06/21 12:45:16  №1419985 234
Поэтому я предлагаю банить школьников - пускай в ридонли посидят. Иначе бессмысленный срач разводят.
Ответы: >>1419987 >>1419993
Аноним 2019/06/21 12:48:58  №1419987 235
>>1419985
Это не развод срача, это повышение скорости постинга.
Чекай, наш тред в топе.
Аноним 2019/06/21 12:54:42  №1419993 236
>>1419985
>я предлагаю банить школьников
Лучше ебать - а они и не против :3
Аноним 2019/06/21 13:06:09  №1420003 237
так все таки,читать раздел сидинг?
Аноним 2019/06/21 18:33:53  №1420189 238
Что с тредом случилось? Зачем вы этому жирному говну отвечаете?
Аноним 2019/06/21 18:35:12  №1420190 239
Ответы: >>1420282 >>1420456
Аноним 2019/06/21 18:59:43  №1420204 240
>>1419816
> Еще мне импонирует что нода - это отдельное приложение, которое существует в памяти, а пхп это просто последовательность скриптов.

Одной ноды для реального приложения недостаточно. Обычно запросы принимает какой-нибудь веб-сервер вроде nginx и проксирует на ноду. Через nginx настраивается HTTPs, отдача статики, сжатие, кеширование. Я ещё настраивал ограничения для разных стран по IP на основе GeoIP. Сама нода запускается через какой-нибудь process manager вроде PM2, чтобы контролировать количество запущенных процессов, перезапускать приложение если какие-то процессы отъедают много памяти. При локальной разработке PM2 удобно использовать для автоматического перезапуска приложения после изменений в файлах. Не будешь же ты после каждого изменения в коде перезапускать сервер? В PHP всё это не нужно, из-за его stateless модели.
В итоге связка Node + Nginx + PM2 не особо удобнее PHP + Nginx + PHP-FPM. В PHP тоже есть встроенный веб-сервер для разработки: https://www.php.net/manual/en/features.commandline.webserver.php

> примеры простого приложения на ноде с MVC паттерном
Будет тоже самое, что и на PHP: https://github.com/codedokode/pasta/blob/master/arch/mvc.md#пример-mvc-приложения
Аноним 2019/06/21 22:05:23  №1420252 241
node.png (1, 176x52)
52x176
php.png (1, 181x50)
50x181
90.png (3, 295x86)
86x295
Сап, пэхапешники. Делаю курсач. Вопрос такой: есть база данных, в ней таблица с изображениями это требование курсача, как и использование ms sql. Грузятся они туда норм, через пхп, а выгружаются - нет, только частично. https://pastebin.com/NfyXVwxs - скрипт выдачи изображения. Пикрил структура базы и размер изображений при выгрузке через php и node.js (под нодой все хорошо). Это какое-то ограничение mssql_fetch_row? Почему это не гуглится?
Ответы: >>1420261 >>1420300 >>1420359
Аноним 2019/06/21 23:21:42  №1420261 242
>>1420252
Разве хранят файлы в базе? Не проще их на диск складывать, а в базу только имена посылать?
Ответы: >>1420262
Аноним 2019/06/21 23:26:34  №1420262 243
>>1420261
Я понимаю, что это не лучшая практика.
> База данных должна состоять как минимум из пяти таблиц, причём в таблицах должны быть предусмотрены поля для хранения данных в текстовом формате, формате даты и бинарном формате
А на словах препод сказал, что хранить надо изображения
Ответы: >>1420265 >>1420266
Аноним 2019/06/21 23:31:14  №1420265 244
>>1420262
Где курсы-то проходишь? Бесплатно надеюсь?
Ответы: >>1420267
Аноним 2019/06/21 23:32:34  №1420266 245
>>1420262
>препод сказал, что хранить надо изображения
База Данных оптимизирована на работу с данными, а файловая система сервера, внезапно, на работу с файлами.
Ты неправильно инструменты используешь, отсюда и твои проблемы.
Ответы: >>1420268
Аноним 2019/06/21 23:33:12  №1420267 246
>>1420265
Вышка в регионе, бюджет, 2 курс
Ответы: >>1420271
Аноним 2019/06/21 23:34:54  №1420268 247
>>1420266
Так это вообще реально обойти или проще ограничить максимальный размер файла миллионом байт и забить?
Ответы: >>1420270
Аноним 2019/06/21 23:40:18  №1420270 248
>>1420268
Хз я с таким извращением не встречался. Ищи в доках.
Аноним 2019/06/21 23:42:19  №1420271 249
>>1420267
Преподов, наверное, набирали как положено - что с вышкой был, и на зарплату 15 тысяч.
Аноним 2019/06/22 01:19:36  №1420282 250
>>1420190
Очень красивый, стройный код

мимопроходил
Аноним 2019/06/22 04:23:23  №1420298 251
1.png (34, 899x433)
433x899
2.png (14, 658x231)
231x658
>>1415604 (OP)
Изящнейшее решение задачи про таблицу умножения.
Покажу своим друганам - они обзавидуются.
Ответы: >>1420459
Аноним 2019/06/22 04:36:15  №1420300 252
>>1420252
Крч, мало ли кому интересно. Почему есть ограничение в миллион байт я так и не нашел и решил проблему разбиением картинки на части и отправкой по частям через хранимую процедуру.
Ответы: >>1420372
Аноним 2019/06/22 08:42:12  №1420359 253
>>1420252
У меня была похожая проблема с системой скуд, не мог целиком вытянуть из её базы картинки.
Что именно я тогда сделал не помню, но скорее всего тебе подойдет то что я нашел по первой ссылке на SO в гугле по запросу "mssql partial image":
mssql_query('SET TEXTSIZE 10000000'); // число в байтах нужно подбирать под твой ожидаемый размер картинок, который так или иначе должен быть ограничен твоими скриптами

И да тебе верно подсказывают что так делать _не_правильно_
Аноним 2019/06/22 09:30:59  №1420372 254
>>1420300
>мало ли кому интересно
Мне любопытно было.
Аноним 2019/06/22 09:40:02  №1420374 255
Саблайм — неплохой редактор, чтобы открыть любой код на любом языке и просмотреть его, мб немного подправить и даже неплохой инструмент для верстки, но вот когда необходимо сделать реальный проект...необходимы инструменты несколько другого уровня. В теории, можно использовать блокнот/саблайм для написания кода на java, но это станет в конечном итоге адом)
Среда разработки — это...среда) Название говорит само за себя. В ней есть все, что нужно + большие возможности кастомизации. Среда сама проверяет твой код, говорит замечания по кодстайлу (можно создать самому или скачать какой-то стандарт), говорит замечания по избыточности, деплоит на сервер, имеет отладчик и дебагер, удобную визуализацию систем контроля версий...и очень много другого в одной программе с единой четкой логикой) Приходить к среде нужно тогда, когда начинаешь понимать, что хочется чего-то большего. Если саблайм кажется идеальным, то пока что не стоит его менять, как мне кажется. Это должно прийти со временем.
Все сказанное выше — чисто ИМХО и может быть ошибочным)
Ответы: >>1420375
Аноним 2019/06/22 09:47:34  №1420375 256
>>1420374
Надо ещё учесть, что профессиональные инструменты не бесплатны. Разве что студентам дают, но толку от этого, да и студенты у нас, вон, файлы целиком из базы тянут. С таким обучением никакая среда не спасёт.
Остальные - не студенты и нужно ебаться с кряками-мокрописьками.
Лучше уже фришные ИДЕ тогда.
Ответы: >>1420377 >>1420379 >>1420383
Аноним 2019/06/22 10:00:34  №1420377 257
>>1420375
Молоток тоже денег стоит. Давайте будем гвозди забивать фришным булыжником!
Аноним 2019/06/22 10:02:36  №1420379 258
orig.jpg (45, 736x736)
736x736
>>1420375
>Надо ещё учесть, что профессиональные инструменты не бесплатны.
Аноним 2019/06/22 10:14:05  №1420383 259
>>1420375
>Надо ещё учесть, что профессиональные инструменты не бесплатны.
В чем твоя проблема?
Аноним 2019/06/22 14:04:26  №1420456 260
>>1420190
Очень слабое ООП. Объекты ради объектов, процедурщина на статических классах. Больше по теме читай.

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

Форматирование кода - где есть, где слетело.

Схалтурил по архитектуре неслабо - многое проигнорировал. На выходе приложение скорее напоминающее Вордпресс, чем хоть какой-то фреймворк.
Ответы: >>1420692
Аноним 2019/06/22 14:11:03  №1420459 261
Ответы: >>1420461 >>1420510
Аноним 2019/06/22 14:15:26  №1420461 262
15073279724903.png (405, 604x453)
453x604
>>1420459
Спасибо, пошел читать.
Аноним 2019/06/22 16:56:13  №1420510 263
>>1420459
Да ты что советуешь-то? Инлайн пхп депрекейтед. Почитай стандарты. Шаблонизаторы и только. Инлайн код залупа полная.
Ответы: >>1420513 >>1420682
Аноним 2019/06/22 17:05:48  №1420513 264
>>1420510
>Инлайн пхп депрекейтед
Пруфца бы.
Ответы: >>1420524
Аноним 2019/06/22 17:28:08  №1420524 265
Ответы: >>1420528 >>1420603
Аноним 2019/06/22 17:33:08  №1420528 266
>>1420524
Найс тролишь, братиш
Ответы: >>1420532
Аноним 2019/06/22 17:40:50  №1420532 267
>>1420528
В чём троллинг? Конструкция <?= применима если только в шаблонизаторе. Стандарт явно использовать только <?php и <? теги.
Ответы: >>1420569
Аноним 2019/06/22 17:48:28  №1420535 268
Написал функции count и array_values.
Вроде все выполняется, но меня смущает, что я воткнул в первый цикл какую-то левую переменную $k, чтобы foreach работал. Наверняка есть какой-то хитрый способ обойтись без нее.
ЧЯДНТ?
https://ideone.com/NHXec4
Ответы: >>1420633 >>1420769 >>1421018
Аноним 2019/06/22 18:22:22  №1420569 269
>>1420532
Если бы там еще что-то подобное было написано.
Аноним 2019/06/22 19:10:20  №1420603 270
>>1420524
Выдержку приведи со сслыкой.
А пока - безпруфный вскукарек.
Аноним 2019/06/22 20:02:12  №1420633 271
Ответы: >>1420751 >>1420769
Аноним 2019/06/22 22:13:03  №1420682 272
>>1420510

Это и есть встроенный в PHP шаблонизатор. Ты бы на исходный код посмотрел. Для вывода таблицы умножения не требуется устанавливать фреймворк.
Ответы: >>1420799
Аноним 2019/06/22 22:40:39  №1420692 273
>>1420456
>процедурщина на статических классах
Понял

>Объекты ради объектов
Вообще не понял. Я вроде пытался обьекты лишние не плодить

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

>Схалтурил по архитектуре неслабо - многое проигнорировал.
В чем схалтурил? Я почитал на гите, хабре статьи, посмотрел урок на ютюбе. Сделал как написано, разделил на Модель, Вид, Контроллер. У каждой страницы своя модель, свой контроллер и html шаблон. Так же есть роутер и фронт контроллер. Что еще реализовать то нужно было?
Ответы: >>1422477
Аноним 2019/06/23 03:48:06  №1420751 274
>>1420633
Хуй знает.
Пойду думать, как это исправить.
Ответы: >>1420769
Аноним 2019/06/23 06:27:15  №1420769 275
Ответы: >>1421010
Аноним 2019/06/23 07:45:25  №1420799 276
>>1420682
Но ведь для вывода таблицы умножения и инлайн рнр код не нужно использовать.

Инлайн рнр бэд практис. Запомните это. Где-то в своих проектах для себя вы безусловно вольны использовать, что вашей душе угодно.
Ответы: >>1420803
Аноним 2019/06/23 07:55:33  №1420803 277
>>1420799
> Инлайн рнр бэд практис. Запомните это.
Звучит аргументировано.
Ответы: >>1420804
Аноним 2019/06/23 07:57:33  №1420804 278
>>1420803
Я выше писал уже. Читайте psr-2. Там всё сказано.
Ответы: >>1420805 >>1420886
Аноним 2019/06/23 08:00:27  №1420805 279
>>1420804
Это вчера было найс троллингом. Сегодня это просто тупость.
Ответы: >>1420806
Аноним 2019/06/23 08:00:48  №1420806 280
Аноним 2019/06/23 11:25:08  №1420886 281
>>1420804
>Читайте psr-2
Ты сам его не читал.
Аноним 2019/06/23 11:56:45  №1420892 282
за что это отвечает?Route::resource()
Аноним 2019/06/23 15:45:08  №1421010 283
>>1420769
foreach ($arr as $k => $v)

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

foreach ($arr as $v)

Поправьте если ошибаюсь
Ответы: >>1421022
Аноним 2019/06/23 16:00:57  №1421018 284
>>1420535
>Написал функции count и array_values
Зачем?
Ответы: >>1421022
Аноним 2019/06/23 16:05:03  №1421022 285
>>1421010
Ну да, ты прав, ответ тот же самый получился. Спасибо.
https://ideone.com/t5YRa7

>>1421018
Чтобы научиться писать собственные функции. Прохожу слитый курс от WebForMySelf.
Аноним 2019/06/23 18:23:03  №1421178 286
imagine.jpg (40, 368x604)
604x368
$kek = 'Привет, мир!';
echo strlen($kek) / 2;
Ответы: >>1421190
Аноним 2019/06/23 18:30:19  №1421190 287
>>1421178
Для кирилицы надо использовать mb_strlen
Ответы: >>1421257
Аноним 2019/06/23 19:51:50  №1421257 288
yoba.png (191, 512x512)
512x512
Аноним 2019/06/24 12:07:38  №1421536 289
Так, ну-ка быстро взяли меня работать за еду! Реще блеать!
Аноним 2019/06/24 15:10:29  №1421620 290
mcrYwpbliZM.jpg (127, 768x576)
576x768
Анончик спасай. Завтра иду на собес, где можно коротко и ясно почитать про ООП, чтоб сумечь отбиться по вопросам ООП.
Знаю, только что это классы ,с помошю которых можно строить структурированные данные , внутри которых всякие плюшки, функции. А потом это все передавать как объект. Знаю ,что это удобно, знаю синтаксис (не оч хорошо).
Ну или своими словами скажите, плиз. С меня тонны нефти (красивые картиночки)
Ответы: >>1421621
Аноним 2019/06/24 15:16:50  №1421621 291
>>1421620
И вот такие еще вопросы

-общее понимание шаблонов проектирования
-общее понимание типов архитектур программных решений (десктоп, клиент-сервер, многозвенные)
Я конечно понимаю суть этих вопросов, но мне кажется что будут задавать формальные вопросы с названиями таких шаблонов. А я не читал книжек по типу "паттерны проэктирования"
Ответы: >>1421976
Аноним 2019/06/24 18:33:07  №1421720 292
Скажите, почему считается, что у php низкий потолок? Зарплаты у сеньоров примерно такие же, как и у других языков.
Ответы: >>1421728
Аноним 2019/06/24 18:54:10  №1421728 293
>>1421720
Наверное из-за индусов. Стало дофига кодеров маленького и среднего уровня. Они естественно стали меньше получать.
А сеньеров никогда небыло много, они в любом языке стоят дорого
Аноним 2019/06/24 19:05:10  №1421741 294
в 2019г пхп применяется для стартапов?
Ответы: >>1421746
Аноним 2019/06/24 19:12:08  №1421746 295
>>1421741
Что за сратапы? Он применяется только криворукими заднеприводными ("backend") обезьянами для своих говносайтиков.
Ответы: >>1421751 >>1421825 >>1421979
Аноним 2019/06/24 19:36:51  №1421751 296
Аноним 2019/06/25 03:27:10  №1421825 297
>>1421746
сайты сложнее бложика
Аноним 2019/06/25 09:40:31  №1421957 298
Для фриланса (в стиле "я, я, можно я, можно я сделаю Вам это за 100 рублей или вообще бесплатно?!" или удалёнки (несбыточная мечта) в 2k19 году пэхэпэ с его традиционными причиндалами оптимальный вариант или стоит рассмотреть другие варианты?
Ответы: >>1421979
Аноним 2019/06/25 09:59:46  №1421976 299
>>1421621
>-общее понимание шаблонов проектирования
Их только при хорошем понимании самого ООП можно разбирать. И вообще - смотри в википедии.

--общее понимание типов архитектур программных решений (десктоп, клиент-сервер, многозвенные)
Губу закатай.

>будут задавать формальные вопросы
Нет, не формальные - тебя на знание стека будут проверять.
Ответы: >>1422038
Аноним 2019/06/25 10:02:40  №1421979 300
>>1421746
>>1421957
Здорово наверное быть унылым говном и вбрасывать толстоту там, где каждый знает больше тебя?
Ответы: >>1421982
Аноним 2019/06/25 10:12:21  №1421982 301
>>1421979
>пыхыпыговноеды
>каждый знает
Лучшая шутка месяца, однозначно.
Аноним 2019/06/25 12:11:57  №1422037 302
кроме легаси и говно визиток,его где нибудь еще используют?
Аноним 2019/06/25 12:14:19  №1422038 303
>>1421976
>Нет, не формальные - тебя на знание стека будут проверять.
т.е?
Ответы: >>1422042
Аноним 2019/06/25 12:23:55  №1422042 304
Ответы: >>1422052
Аноним 2019/06/25 12:49:00  №1422052 305
Аноним 2019/06/25 14:33:59  №1422096 306
<?php
echo intval(11, 8); //11
echo intval('11', 8); //9

Ананасий, объясни мне, пожалуйста, почему так происходит?

В обоих случаях ведь база 8, почему со строкой оно корректно себя ведёт, а в случае c числом принимает базу за 10?

При чём, это ведь не ошибка даже, в мануале так и есть!
Ответы: >>1422102 >>1422280
Аноним 2019/06/25 15:05:01  №1422102 307
>>1422096
>в мануале так и есть!
Мануал надо целиком читать
>The base parameter has no effect unless the var parameter is a string.
Ответы: >>1422103 >>1422155
Аноним 2019/06/25 15:06:27  №1422103 308
>>1422102
Да, Антон, спасибо, я просто привык, что после примеров уже нет смысла скроллить.
Аноним 2019/06/25 16:34:14  №1422155 309
>>1422102
>The base parameter has no effect unless the var parameter is a string.
АХАХАХАХАХАХА
Вот это, блядь, дизайн интерфейса!
Вот это, блядь, архитектура!
Ух, бля!
Ответы: >>1422179
Аноним 2019/06/25 17:01:20  №1422179 310
Ответы: >>1422266
Аноним 2019/06/25 20:19:53  №1422266 311
>>1422179
У меня вполне серьезный вопрос:
а как обосновывается использование пхп в новом проекте?
Я могу понять, что если есть легаси, то никуда ты не денешься.
Но, вот, пожалте, надо сделать новую ебу. И принимается решение - будем делать на пхп.
Как это решение обосновывается?
Или теперь начальник-смузихлеб не ебет себе мозги такими вопросами, а просто отстегивает бабло?
Ответы: >>1422280
Аноним 2019/06/25 21:11:50  №1422280 312
>>1422266
Стоимость. В вебе обычно подразумевается какая никакая поддержка проекта. Нужно вносить какие-то изменения, правки. Пхпешники стоят мало и их как говна. В любой момент можно задешево кого-то найти на проект. А если сделать на чем-то другом то можно натолкнуться на ситуацию когда придется отстегивать кучу бабла на дорогого специалиста. Любой разбирающийся в ситуации заказчик будет заказывать разроботку на пхп чтобы потом не ебаться с поиском специалистов для доработки/поддержки.

>>1422096
Тут не совсем очевидный нюанс, который я не знаю как нормально объяснить. Смотри, когда у тебя есть число - 11 например - это число всегда будет одинацатью в любой системе исчисления. Но оно может по разному записываться. Одинадцать это всегда одинадцать, но оно по разному записано. Когда ты передаешь в функцию число - функция возвращает тебе это число - потому что одинадцать это всегда одинадцать. Но когда ты передаешь запись числа - тут уже зависит от переданой системы счисления. '11' это запись числа 3 в двоичной, запись девятки в восмеричной и т.п.
Ответы: >>1422293
Аноним 2019/06/25 23:06:37  №1422293 313
>>1422280
>В вебе обычно подразумевается какая никакая поддержка проекта
Именно поэтому я никогда не выберу пхп - там изначально будет спроектировано через хуй, реализовано через хуй, работать будет через хуй.
А когда придет человек со стороны, и ему надо будет разбираться, он поест говна в поисках "откуда вот эта хуета растет". И, в результате, свои доработки сделает через три хуя.

Но спасибо за ответ.
Ответы: >>1422315 >>1422458
Аноним 2019/06/26 03:30:41  №1422315 314
>>1422293
а чем это отличается от разраб на питоне?
Ответы: >>1422335
Аноним 2019/06/26 05:36:11  №1422335 315
Ответы: >>1422471
Аноним 2019/06/26 10:33:40  №1422458 316
>>1422293
ну пажалуйста, ну выбери пхп!
Аноним 2019/06/26 10:50:00  №1422471 317
>>1422335
То есть все разработчики на Питоне разрабатывают одинаково хорошо? И там нельзя принципиально сделать через жопу?
Ответы: >>1422497 >>1422588
Аноним 2019/06/26 10:56:10  №1422477 318
>>1420692
Бамп
Оп, пожалуйста
Ответы: >>1422592
Аноним 2019/06/26 11:21:31  №1422497 319
>>1422471
>разработчики на Питоне разрабатывают одинаково хорошо?
На фоне пыхыпыдебилов (тебя) - именно так.
Впрочем, на таком фоне это несложно, хаха.
Аноним 2019/06/26 12:23:56  №1422563 320
>Питонодебил кукарекает
>обезьяна на кривом говне без нормальной инкапсуляции кукарекает
>живтоне с разметкой пробелами кудахтает
Дальнейшее развитие нашего диалога будет заключаться в твоих кукареках НЕНУЖНА.

>>>1422266
Ну дай подумать.....
У тебя есть мощный инструмент для веб - разработки, проверенный временем, с кучей готовых и отлаженных библиотек на любой вкус, с развитым сообществом. Может быть, использовать его?
Эхо от сосания хуев долбоебами, которые повелись на Ruby, до сих пор слышно в интернете.
Ответы: >>1422564 >>1422629
Аноним 2019/06/26 12:24:40  №1422564 321
>>1422563
>Эхо от сосания хуев долбоебами, которые повелись на Ruby, до сих пор слышно в интернете.
Поподробней
Аноним 2019/06/26 12:25:50  №1422567 322
аноны, подскажите пожалуйста по регулярке, где надо телефоны угадывать (https://regex101.com/r/qF7vT8/3)

я понимаю, что сначала может идти плюс или пробел (а может и не идти), потом цифра восемь или семь:

^[+\s][87]

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

^[+\s]
[87][0-9]{10}

как мне в последнюю часть к цифрам добавить "сколько угодно скобок, пробелов и минусов"?
Ответы: >>1422568 >>1422569 >>1422578
Аноним 2019/06/26 12:27:03  №1422568 323
Аноним 2019/06/26 12:31:14  №1422569 324
1.jpg (28, 620x244)
244x620
Аноним 2019/06/26 12:44:09  №1422578 325
>>1422567
>[+\s]звезда
это съест любую комбинацию из пробельных и плюсов, типа " ++ +++++ +++ ", оно тебе надо?
Аноним 2019/06/26 12:58:17  №1422588 326
>>1422471
Зачем ты вообще на него внимание обращаешь? Пора бы привыкнуть, что регулярно тут дауны всякие залетают. Просто игнорируй их.
Аноним 2019/06/26 13:11:15  №1422592 327
>>1422477
Тебе же указали куда воевать, чего ещё хочешь? Репетиторов нам сюда не завезли. А жаль.
Аноним 2019/06/26 13:26:51  №1422601 328
>Именно поэтому я никогда не выберу пхп - там изначально будет спроектировано через хуй, реализовано через хуй, работать будет через хуй
всегда есть выбор
Аноним 2019/06/26 13:29:39  №1422604 329
Знающий анон, а подскажи вопрос по регуляркам:
почему я не могу, например, банально сперва вырезать строковыми функциями все пробелы, скобки, минусы и тире, и после этого уже работать чисто с цифрами? Понятно, что урок с регулярками создан чтобы научиться в нем разбираться, но как дело на практике обстоит? В крупных организациях имеется ввиду. Есть хоть какой то прирост производительности/скорости загрузки, если поставить перед регуляркой строковую функцию с авто-заменой str_replace? Конкретные цифры. Без снобизма и демагогии аля "ну отцы так делали и нам завещали".
Ответы: >>1422615
Аноним 2019/06/26 13:50:06  №1422615 330
>>1422604
>но как дело на практике обстоит?
Обычно регулярками не пользуются. Но какой из тебя программист, если ты шаблон строки накидать не можешь? Сегодня ты регулярки пропустил, а завтра половину ООП не осилил и забил, и не можешь найти работу, потому, что все отлично видят твой уровень.
Ответы: >>1422621 >>1422623
Аноним 2019/06/26 13:56:03  №1422621 331
Аноним 2019/06/26 13:56:55  №1422623 332
>>1422615
>Обычно регулярками не пользуются.
У меня часто возникают ситуации, когда проще накидать регулярку, чем ебаться с множественными заменами и поисками.
мимо-битриксоблядь
Ответы: >>1422638
Аноним 2019/06/26 14:12:09  №1422629 333
>>1422563
>этот тред с этими безмозглыми быдлодебилами (тобой)
>с развитым сообществом
Шутку понял.
Смешно.
Ответы: >>1422669
Аноним 2019/06/26 14:16:11  №1422638 334
>>1422623
Ну как бы да - на разных проектах по разному может быть.
Правда, говорят, что они медленные и плохо читаются, поэтому лучше не увлекаться.
Ответы: >>1422668
Аноним 2019/06/26 15:02:44  №1422668 335
>>1422638
>говорят, что они медленные
Насколько помню наоборот.
Ответы: >>1422711
Аноним 2019/06/26 15:02:45  №1422669 336
>>1422629
>этот тред с этими безмозглыми быдлодебилами
>Спизданул даун с дипломом программиста перфокарт, сосат всем.
Ответы: >>1422678
Аноним 2019/06/26 15:21:03  №1422678 337
>>1422669
>дипломом
>перфокарт
Унижаемый за тупость и в итоге вылетевший студентик ну совсем не палится.
Аноним 2019/06/26 16:38:27  №1422711 338
time.jpg (7, 245x64)
64x245
Аноним 2019/06/26 18:00:01  №1422768 339
Пыханы, расскажите, в сторону какого алгоритма копать или как бы вы решили такую задачу:
Есть список компаний, нужно из всех названий сформировать группы компаний по похожести. Группы, где совпадают 3/4/5 и тд. слов из названия. Сначала я получу массив, где каждое значение это будет массив слов из названия компаний. Как потом эти массивы слов компоновать по пересечению значений?
Ответы: >>1422773 >>1423025 >>1423069
Аноним 2019/06/26 18:13:33  №1422773 340
>>1422768
Гуглишь расстояние левенштейна и кластерный анализ. Строишь матрицу растояний между названиями и потом обрабатываешь каким-то методом кластеризации. Если тебе нужно именно по совпадающим словам то вместо растояний используешь количество не совпадающих слов в названиях, или что-то типа того.
Аноним 2019/06/27 07:02:14  №1423012 341
Как пройти assert?

class JobSeeker {
\tpublic static function questClassSearch(): bool {
\t\treturn someFunc(function (string $c): void {
\t\t\tsomeFunc(self::class, $c);
\t\t});
\t}
}

$s = new JobSeeker();
assert(
\t!class_exists('Foo')
\t&& !class_exists('Bar\Foo')
\t&& true === JobSeeker::questClassSearch()
\t&& class_exists('Foo')
\t&& class_exists('Bar\Foo')
);

Что должно быть на месте someFunc?
Аноним 2019/06/27 07:18:14  №1423025 342
>>1422768
Если тебе пофигу на оптимизацию, то алгоритм может быть следующим

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

Google => company1, company2
Google2 => company1, company2, company3
Google3 => company1, company2, company3
Google4 => company1, company2, company3
Google5 => company1, company2, company3, company4, company5

Дальше идешь по новому массиву пар, и так же смотришь пересечения, у тебя получится

google_google2 => company1, company2
google4_google5 => company1, company2, company4, company5

И так далее, while пока длина ключа не будет совпадать c количеством слов в самом большом названии
Аноним 2019/06/27 08:10:43  №1423069 343
>>1422768
Получаешь массив из названий компаний.
Из него получаешь словарь из отдельных слов каждой компании, подсчитывая сколько встречается каждое слово.
У тебя получится словарь вида "слово:количество совпадений".
Сортируешь его по количеству совпадений в убывающем порядке.
Используя этот словарь распределяешь компании из первого массива по группам.
Аноним 2019/06/27 21:18:21  №1423625 344
А почему в php принято переносить скобку в объявлении функции на новую строку, а во всех нормальных языках нет?
Аноним 2019/06/27 21:49:47  №1423651 345
>>1423625
Это стиль старых пердунов - "the one true brace style". Пошел из С. А так как пхп на С написан то наверное перетек и в сам пхп. Его еще в ядре линкса используют, например, так как тоже на С пишется.
Аноним 2019/06/28 06:01:02  №1423736 346
>>1423625
>а во всех нормальных языках нет?
Для меня читаемость кода выше с скобкой в новой строке
Ответы: >>1423913 >>1423952 >>1424068
Аноним 2019/06/28 10:20:36  №1423913 347
>>1423736
Удвою. Хорошо видно объявление и последующий блок кода.
Аноним 2019/06/28 11:58:36  №1423952 348
Аноним 2019/06/28 13:22:00  №1423999 349
>>1423625
>а во всех нормальных языках нет
Зато в нормальных языках и функции и замыкания одинаково выглядят, а в ПХП объявление - с новой скобкой, замыкание - без.
Ответы: >>1424091
Аноним 2019/06/28 15:25:06  №1424068 350
>>1423736
Очень дело вкуса. Для меня это говно просто проеб вертикальной строчки на хуйню.
Аноним 2019/06/28 16:07:57  №1424091 351
>>1423999
В нормальных языках и в php замыкания обозначают разные сущности.
Аноним 2019/06/28 19:02:25  №1424191 352
возьмите работать, за любые деньги, с ооп знаком чет на симфони делал ну пж постараюсь быть полезным
Аноним 2019/06/28 19:16:08  №1424206 353
когда речь идет про вкат в треде пхп советуют идти в джс, приходишь к ним кидают обратно сюда
Ответы: >>1424217 >>1424295 >>1424539
Аноним 2019/06/28 19:37:02  №1424217 354
>>1424206
никто себе конкурентов не хочет. такие вкатывальщики сначала вопросы на дваче задают, а потом приходят к тебе на работу и начинают доёбывать вопросами уже в рабочее время.
Аноним 2019/06/28 23:06:46  №1424295 355
>>1424206
Окай. Иди нахуй.
Ты нигде не нужен.
Аноним 2019/06/29 01:57:10  №1424319 356
>>1423625
Кстати я уже начал встречать js таким же образом оформленный, именно в недавних компонентах/сниппетах
Аноним 2019/06/29 11:53:07  №1424539 357
image.png (176, 500x500)
500x500
Ответы: >>1424560
Аноним 2019/06/29 12:22:06  №1424560 358
Ответы: >>1424584
Аноним 2019/06/29 12:49:12  №1424567 359
15086599129350.jpg (389, 1000x1499)
1499x1000
github.com/ta-tikoma/phpins
решил написать свой валидатор кода. раскритикуйте, на толкните на что нибудь умное?
- почему не phpmd - потому что слишком долгое время обработки.
Ответы: >>1424610 >>1424718
Аноним 2019/06/29 13:12:20  №1424584 360
>>1424560
Ну тупенький значит.
Не от большого ума ты задаёшь незнакомым людям вопросы - на что въебать тебе последующие 5-10 лет.
Аноним 2019/06/29 14:18:54  №1424610 361
Ответы: >>1425006
Аноним 2019/06/29 17:46:11  №1424670 362
учил php, через месяц уже получил работу лол
Ответы: >>1424674 >>1425006
Аноним 2019/06/29 18:02:55  №1424674 363
>>1424670
Что выучил за месяц, что спрашивали? Какая зарплата?
Аноним 2019/06/29 19:45:04  №1424718 364
>>1424567

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

Ты разбираешь исходный код регулярками тут: https://github.com/ta-tikoma/phpins/blob/master/app/Validators/IDefinedThisVariable.php

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

// function x() {}
$s = 'function x() {}';

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

function[^\(]+\(([^)]+)\)

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

function x($a = array())

Также, у тебя нет поддержки синтаксиса декомпозиции массивов:

[$a, $b] = [1, 2];

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

preg_match("/x/", "x", $m);

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

if ($a == f($b)) {
echo $x; // yes
}

превратится в: 'if', '(', '$a', '==', 'f', '(', '$b', ')', ')', '{', 'echo', '$x', ';', '}'

На этом этапе удаляются лишние пробелы и комментарии.

Для проведения лексического анализа в PHP есть готовые функции: https://php.net/manual/ru/book.tokenizer.php

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

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

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

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

или, если записать это правило в Расширенной форме Бэкуса — Наура (EBNF):

if_construct = 'if', '(', expression, ')', '{', 'sentences', '}'

Здесь expression и sentences - это отсылки к правилам, описывающим из чего состоит выражение и набор команд. Выражение можно описать как-то так:

# От порядка записей зависит приоритет операторов
expression = function_call | multiplication | sum | comparison | variable-like | literal
function_call = indentifier, '(', [ parameter, { ",", parameter } ], ')'
multipication = expression, ( '*' | '/' ), expression
sum = expression, ( '+' | '-' ), expression
comparison = expression, ( '<', '>', '==', '===', '!=', '!==', '<=', '>=' ), expression
variable-like = array_element | variable
literal = string | number | boolean_constant

Вообще, конечно, правила PHP чуть сложнее, и они позволяют пропускать фигурные скобки, а также допускают операторы elseif/else, так что запись можно усложнить:

if_construct = 'if', '(', expression, ')', body, { 'elseif', '(', expression, ')', body }, [ 'else', body ]
body = '{', many_sentences, '}' | one_sentence

Если тебе не очень понятен синтаксис EBNF, то погугли. Кроме EBNF, есть еще другие формы записи грамматик: ABNF, BNF. Они есть в википедии. Но общая суть в том, что они описывают сборку сложных конструкций языка из более простых. Программа состоит из определений и команд, определения состоят из более мелких частей, и так до неделимых частей - терминалов.

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

Программа:
- Определение функции
-- Имя: f1
-- Аргументы:
--- Аргумент
---- Имя: $a
---- Тайп-хинт: int
---- Значение по умолчанию:
----- Константа класса: SomeClass::SOME_CONSTANT
-- Тело:
--- Приваивание:
---- Переменная: $a
---- Значение: 1

Парсер, который занимается синтаксическим разбором, писать не надо - есть готовые генераторы парсеров, которым достаточно дать грамматику языка на вход: PHP-Yacc, PHP-peg, Lemon-PHP.

То есть, тебе достаточно описать грамматику PHP и ты сможешь парсить исходный код в дерево AST. После чего ты уже можешь легко обходить его, искать там узлы определенного типа (например: функции) и внутри них анализировать использование переменных. Правда, описать грамматику PHP довольно сложно. Где взять полный набор правил? Они есть в исходном коде PHP:

https://github.com/php/php-src/blob/master/Zend/zend_language_parser.y

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

Также, разработчики Facebook пытались составить спецификацию PHP, но похоже, забросили ее: https://github.com/php/php-langspec/blob/a610388d637b67294925d3b1dbbc0a54b7d94428/spec/php-spec-draft.md

Но хорошая новость состоит в том, что и это делать не надо. Есть готовый парсер кода PHP: https://github.com/nikic/PHP-Parser

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

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

if (...) {
$a = 1;
}

$a = f($a);
echo $a;

Тут переменная $a может быть не определена, и это ошибка. А если мы напишем так:

if (...) {
$a = 1;

} else {
return;
}

$a = f($a);
echo $a;

То ошибки уже нет. Для анализа потока выполнения можно использовать преобразование кода в SSA-форму ( https://ru.wikipedia.org/wiki/SSA ). SSA = static single assignment - это когда значение переменной присваивается только в одной команде, а если в коде это делается несколько раз, то мы делаем несколько копий переменной, добавляя суффиксы ($a_1, $a_2 и тд).

Например, код:

$a = 1;
$a ++;
echo $a;

превращается в:

$a_1 = 1;
$a_2 = $a_1 + 1;
echo $a_2;

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

if (...) {
$a = 1;
} else {
$a = 2;
}

echo $a;

превращается в:

$a_1 = 1;
$a_2 = 2;
$a_3 = Ф($a_1, $a_2);
echo $a_3;

Ну и наконец, вот еще пример цикла:

$a = 1;
while ($a < 10) {
$a ++;
}

echo $a;

Он превратится в:

$a_1 = 1;
$a_2 = Ф($a_1, $a_2) + 1;
echo $a_2;

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

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

В общем. советую почитать и погуглить про:

- лексический анализ
- синтаксический анализ
- AST (abstract syntax tree)
- форма представления кода SSA
- формы записи грамматик BNF/ABNF/EBNF
- https://github.com/nikic/PHP-Parser

На первый взгляд это может выглядеть сложно, но работать с кодом в такой форме будет удобнее. Я когда-то пробовал написать простой анализатор кода для поиска ошибок, как раз на основе синтаксического анализа: https://github.com/codedokode/source-analyzer Там правда тоже есть регулярки, но есть и использование AST: https://github.com/codedokode/source-analyzer/blob/master/src/Common/TypeHintMissingChecker.php

Вообще, если бы ты мог написать преобразователь AST в SSA, это могло бы стать полезной отдельной библиотекой для анализа кода.

Если есть вопросы - задавай.
Ответы: >>1424791
Аноним 2019/06/30 03:15:17  №1424791 365
>>1424718
спасибо за столь подробный ответ.

>Это неправильно. Например, твой разборщик кода "увидит" функцию, даже если она закомментирована или находится внутри строкового литерала:
>
>// function x() {}
>$s = 'function x() {}';

я предварительно очищаю файл от строк и комментариев. Так что при необходимости валидатор может забрать "стерильное" содержимое.

> сишный генератор парсеров Bison
помню раньше тоже им баловался

> Есть готовый парсер кода PHP: https://github.com/nikic/PHP-Parser

в процессе подбора инструментов так же встречал эту библиотеку, но отмел её наверное из-за лени разбираться а оправдал себя тем что на регулярках быстрее отработает(введу их небольшого количества), но вероятно ты прав и стоит вернуться к ней. Основной целью ставил для себя именно быстроту выполнения - да бы при сохранении файла(а возможно и в процессе его написания) мгновенно видеть результат.
Хотел ввести и di чтоб ввести возможность автоподгрузки валидаторов как сторонних пакетов. но все суммарно упиралось в мысли на сколько мне это урежет скорость.
Аноним 2019/06/30 09:47:01  №1424833 366
какой портрет пхп программиста?
Ответы: >>1424837 >>1425006
Аноним 2019/06/30 09:55:24  №1424837 367
>>1424833
Рандомный как в дешевом хостеле
Аноним 2019/06/30 14:33:51  №1424975 368
тест
Ответы: >>1425006
Аноним 2019/06/30 15:41:51  №1425006 369
Ответы: >>1425018
Аноним 2019/06/30 15:51:07  №1425010 370
15411864672170.jpg (83, 917x636)
636x917
Как правильно интегрировать гитхаб с композером? Я загрузил туда либу, а композер говорит - не знаю таких. Делал compozer init на проекте.
Ответы: >>1425028
Аноним 2019/06/30 16:01:13  №1425018 371
>>1425006
не знаю кто такой школодебил, но ответил на мои 2 сообщения
Ответы: >>1425019
Аноним 2019/06/30 16:02:32  №1425019 372
>>1425018
Это ты, дебил мелкобуквенный.
Впрочем что от пхпдауна взять.
Ответы: >>1425021
Аноним 2019/06/30 16:08:34  №1425021 373
>>1425019
нас тут двое кажется, я на c/c++ работаю ваще
Ответы: >>1425024
Аноним 2019/06/30 16:17:12  №1425024 374
>>1425021
>я на c/c++ работаю
Вовсе нет, фантазер, ты слишком тупой.
Аноним 2019/06/30 16:19:51  №1425028 375
>>1425010
Проще всего создать ssh ключ и в composer.json

"repositories": [
{
"type": "git",
"url": "git@github.com:<nikname>/<projectname>.git"
}
],

"require": {
"<nikname>/<projectname>": "dev-master"
}
Ответы: >>1425033 >>1425036
Аноним 2019/06/30 16:29:12  №1425033 376
Аноним 2019/06/30 16:31:47  №1425036 377
15372248589621.jpg (68, 789x960)
960x789
Аноним 2019/06/30 17:09:31  №1425054 378
>>1415604 (OP)
Кто-нибудь пояснит что конкретно делают эти точки, про них ничего нету в гайде, а без них код не выполняется??
> ТОЧКА $x $x ТОЧКА "\n\
<?php
for ($x=1; $x<=10; $x++ ){
\techo "$x
$x=".$x*$x."\n";
}
Ответы: >>1425055
Аноним 2019/06/30 17:12:40  №1425055 379
Ответы: >>1425059
Аноним 2019/06/30 17:18:53  №1425059 380
Аноним 2019/06/30 21:05:48  №1425229 381
>>1425220
Там регуляркой ещё валидировать можно.
Аноним 2019/06/30 21:51:21  №1425239 382
IMG3755.JPG (35, 228x277)
277x228
В году так 2011-2013 был хороший (на мой взгляд) сайт с уроками по азам PHP, там ещё девочки из Унылого учителя на бекграунде были и проект позиционировался как "от двачера для двачеров".
Там ещё была задача - написать генерацию броска игральной кости.
Он мёртв?
Ответы: >>1425293
Аноним 2019/06/30 22:10:35  №1425242 383
/test/
Аноним 2019/07/01 06:08:12  №1425293 384
>>1425239
Давай читать шапку вместе:

>С чего начать

У нас есть свои уроки по основам PHP, они собраны и выложены по адресу http://codedokode.github.io/phpbook (вас отредиректит на другой домен, не читайте, не сохраняйте, не запоминайте его, он временный). Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь...
Аноним 2019/07/01 07:17:54  №1425331 385
Пацаны мы лохи
Ответы: >>1425405
Аноним 2019/07/01 10:13:08  №1425387 386
Знающий аноня поясни пожалуйста:
делаю уроки про регулярки, конкретно - про исправление ошибок в предложении: поставить пробелы после запятых, точек, восклицательных знаков. Это все сделал через обычный preg_replace и ассоциативный массив правил. Но уперся в следующее "поменять маленькие буквы, с которых начинается предложение, на большие". Скажи, анон, я могу это сделать через чистый preg_replace? Получается только через preg_replace_callback, потому что надо возвращать mb_strtoupper.
Как мне сказать обычному preg_replacу "Подними пожалуйста $1 в верхний регистр"?
Ответы: >>1425403
Аноним 2019/07/01 10:42:55  №1425403 387
>>1425387

Через preg_replace нельзя.

Ответы: >>1425416
Аноним 2019/07/01 10:43:20  №1425405 388
Аноним 2019/07/01 11:07:03  №1425416 389
Аноним 2019/07/01 14:45:11  №1425530 390
Апач внезапно перестал понимать свой .htaccess.
Вчера ещё всё нормально работало, на хостинге тоже всё отлично, а на локальной машине - хттп еррор 500. Ни копию с хостинга не берёт, ни старую свою.

Ну что за параша?
Ответы: >>1425609
Аноним 2019/07/01 16:55:26  №1425609 391
>>1425530
Убедись что ошибка именно там, а не в коком-то скрипте (заменяй их на пустые файлы где возможно).
Ответы: >>1425631
Аноним 2019/07/01 17:26:54  №1425631 392
>>1425609
Я на чистую софт переустановил и всё заработало как надо. Хз что это было.
Ответы: >>1425828
Аноним 2019/07/01 20:24:48  №1425828 393
>>1425631
Короче, я затёр свои неймспейсы в конфиге композера пока пушил и разбирался.
Я идиот.
Аноним 2019/07/02 09:40:35  №1426111 394
Аноним 2019/07/02 09:41:17  №1426113 395
40к ЗП в рашке, для человека с 2годами опыта работы и овер 5 годами запиливания сайтиков для себя. Это зашквар? Стоит ли увольняться?
Ответы: >>1426116 >>1426149
Аноним 2019/07/02 09:43:54  №1426116 396
>>1426113
ну ищи другое место работы
Ответы: >>1426137
Аноним 2019/07/02 10:12:06  №1426137 397
Ответы: >>1426142
Аноним 2019/07/02 10:18:01  №1426142 398
>>1426137
На сколько возьмут.
Аноним 2019/07/02 10:25:58  №1426149 399
>>1426113
Анону без опыта работы, с парой самопильных проектов "для себя" и хорошим знанием laravel/doctrine паттернов, предлагали от 55 до 65 в Питере.
Ответы: >>1426388 >>1426471 >>1426711
Аноним 2019/07/02 14:30:31  №1426388 400
Аноним 2019/07/02 16:32:41  №1426444 401
function fn ($param = "default", $two = "2") {
\techo $param;
echo $two;
}

fn("???");

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

В JS вроде как есть undefined, если его передать в качестве аргумента, то используется дефолтный. А как быть в PHP, если функция с двумя аргументами и я хочу указать второй, а у первого использовать дефолтное значение?

Ставить дефолтом null и самостоятельно городить if (is_null())?
Ответы: >>1426449 >>1426617
Аноним 2019/07/02 16:39:39  №1426449 402
>>1426444
Если неясно выразился, уточню. Что мне нужно написать, чтобы вывелось default3? Конечно же, вариант fn("default", "3"); не предлагать. Неужели единственный вариант

if (is_null($param)) {$param = "default"}

и передавать null?
Аноним 2019/07/02 17:04:06  №1426465 403
Аноним 2019/07/02 17:05:51  №1426467 404
>>1426449
А, блядь, ну так ты всё правильно сделал.

public function __construct($display_errors = 1, $error_reporting = E_ALL) {
$this->display_errors = $display_errors;
$this->error_reporting = $error_reporting;
}

Если я в конструктор нихуя не передам - создастся с этими значениями по умолчанию. Просто нихуя не делай и всё
Аноним 2019/07/02 17:12:30  №1426471 405
>>1426149
Я из мухосрани. Но работаю удаленно. Хз в питере я бы ниже 80 даже не рассматривал наверное. Даже 80 - дно, это так перебиться
Аноним 2019/07/02 17:25:00  №1426485 406
>>1426449
Проверять на null не самая лучшая мысль т.к. нуль это по своему тоже значение.
Может быть ситуация где дефолтное значение нуль, а пользователь твоего апи хочет давать не нуль а именно положиться на дефолтный вариант.

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

Другой вариант использовать dto + builder (опционально fluid interface) в качестве аргумента твоей функции, обязательные параметры требуешь в конструкторе, необязательные чекать через isSet (внутри dto придется хранить флаги).

В качестве финальной альтернативы пересмотри свой подход и подумай действительно ли тебе необходим подобный опциональный аргумент не в хвосте их списка (как ты понимаешь в хвосте можно иметь настоящие опциональные аргументы). Возможно, твой подход к построению апи не самый прозрачный и пользоваться им будет неудобно.
Ответы: >>1426591
Аноним 2019/07/02 17:32:22  №1426498 407
>>1426449
fn(); //default3
fn(, '23'); //23

не еби мозги ни себе ни людям
Ответы: >>1426568
Аноним 2019/07/02 18:19:53  №1426568 408
>>1426498
>fn(, '23'); //23

А не пиздите ли вы часом, молодой человек? Моя IDE говорит, что в этой строке ошибка и , не может идти после нихуя.
Аноним 2019/07/02 18:32:22  №1426591 409
>>1426485
Не обязательно использовать null. Можно условиться, что "FUCKIN_DEFAULT_VALUE" - магическое слово для подстановки дефолтного значения. Хоть класс под это дело сделать можно. Просто мне кажется это странным: в js я могу сделать fn(undefined, undefined, true, false). В PHP - нет.

Суть там в следующем. Есть класс c1, в нём метод c1m с 4 параметрами: tA, tB, f1, f2. Этот метод не имеет абсолютно никакого смысла без указания tA и tB, поэтому им заданы стандартные значения прямо в методе c1m.

При этом, есть класс c0. Сейчас положение дел таково, что c0 будто "родительский" (РЕЧЬ НЕ О НАСЛЕДОВАНИИ) класс для c1. Если говорить прямо: c0 - список сообщений, c1 - непосредственно сообщение.

То есть, внутри c0 находится массив с кучей объектов класса c1.

При этом, c0 имеет метод, который дёргает у каждого объекта c1 метод c1m. И весьма ожидаема ситуация, в которой пользователь захочет изменить значение tB, но оставить дефолтное tA. Спрашивается, как быть?

Я могу перенести объявление стандартных значений из метода c1m в класс c0. Тогда я смогу сделать так: c1m (a1, a2, a3, a4). Изначально в a1 лежит дефолтное значение tA, в a2 tB и т. д. Соответственно, если кто-то хочет заменить tB, достаточно просто изменить a2, а a1 оставить как было.

Но мне не кажется это хорошей идеей. Ведь, повторюсь, метод c1m не имеет смысла без указания tA и tB. Значит если так случится, что c1->c1m попробуют вызвать откуда либо кроме c0 - дефолтных параметров не будет.

Сейчас я остановился на дублировании. То есть:

1. Дефолтные tA, tB, f1, f2 указаны в объявлении c1m
2. В c0 заданы a1, a2, a3, a4 с теми же самыми дефолтными значениями, c1m вызывается как c1m(a1, a2, a3, a4). Соответственно, если мы хотим изменить tB, а остальное оставить дефолтом - меняем свойство a2 в классе c0.

Но это явно кривое решение. Ведь мы не в самом деле используем дефолтные значения, а просто дублируем их.
Ответы: >>1426621
Аноним 2019/07/02 18:42:56  №1426617 410
>>1426444

Обычно необязательные аргументы просто указывают в конце. Какого-то специального способа нету.
Аноним 2019/07/02 18:45:42  №1426621 411
>>1426591

Опции в PHP обычно делают через массив:

function x($a, $b, array $options = [])

В твоем случае это именно опции.



Аноним 2019/07/02 19:52:26  №1426706 412
Котаны, суть поясните за smtp сервер. Есть у меня сайт, хочу почту отправлять. Я компосером загрузил phpMailer - это и есть smtp - сервер? С него могу миллионы в день писем отправлять Элону Маску Ольге Бузовой?
Ответы: >>1426855
Аноним 2019/07/02 19:56:51  №1426711 413
>>1426149
Складывается ощущение что ЗП больше зависит от того на сколько программист подскакивает кабанчиком, а не от скилла в известных пределах.
Ответы: >>1426716
Аноним 2019/07/02 20:03:45  №1426716 414
>>1426711

Звучит как оправдание. А не в том ли проблема, что некоторые программисты слишком увлекаются изобретением архитектур и лишним прилизыванием кода вместо быстрого выполнения задач бизнеса?
Аноним 2019/07/02 20:41:22  №1426751 415
>>1426640
Поэтому бэк интереснее.
Аноним 2019/07/03 05:41:35  №1426855 416
>>1426706
PHPMailer - библиотека для PHP, которая умеет отправлять письма как через SMTP, так и через mail(). Например, у меня в одном проекте было так: создаётся объект PHPMailer, в него выставляются все настройки, кроме метода отправки. А дальше ставится email, если не отправилось - SMTP (чтобы лишний раз не грузить SMTP сервер, но и слишком полагаться на mail() тоже не стоит).

SMTP - протокол для передачи почты. Соответственно, SMTP-сервер - почтовый сервер, который поддерживает SMTP (ни разу не встречал публичный сервер, который не поддерживал бы).

Дефолтные почтовики (yandex, gmail, mail) имеют свои SMTP-сервера. То есть, для отправки почты через свой скрипт ты можешь завести почту на яндексе и слать письма через их SMTP-сервер. Единственное что: иногда они выёбываются и закрывают доступ свежерегам, но это легко решается. Просто пишешь в поддержку письмо, дескать так и так, я использую эту почту для отправки заказов с сайта на свой ящик (или что там у тебя), розбаньте.

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

Повторюсь, SMTP - протокол. Этот же самый протокол используется в почтовых клиентах. То есть, яндекс не видит особой разницы между PHPMailer и thunderbird (ну, конечно, может вычислить по ip/заголовкам и т. д, но сейчас речь не об этом).

Еще для отправки писем есть такие писечки https://www.mailgun.com/pricing
Ответы: >>1426856 >>1426895
Аноним 2019/07/03 05:43:14  №1426856 417
>>1426855
Чёт не дописалось немного. Писечка эта бесплатна, если меньше 10k писем и меньше 100 получателей в месяц вроде как.
Аноним 2019/07/03 07:38:23  №1426895 418
>>1426855
Для себя подведу итог : smtp - протокол.
PHPMailer - реализация этого стандарта - то есть самодостаточный smtp-сервер, с него могу отправлять тыщи писем Бузовой.
Но так же я могу воспользоваться публичными серверами или же smtp - серверами, которые ставятся как отдельное ПО на мой сервер, но мне это не нужно, потому что есть у меня PHPMailer.
Я все правильно понял?
Это я сам для себя разжевываю что бы понимать .
Ответы: >>1426973 >>1426974
Аноним 2019/07/03 10:14:59  №1426973 419
>>1426895
Начнём с того, что я сам не весь из себя знаток данного вопроса, поэтому в деталях могу что-то напутать. Но всё же

>smtp - протокол
Верно. Даже в википедии об этом написано.

>PHPMailer - реализация этого стандарта
Можно сказать и так, но
>то есть самодостаточный smtp-сервер
НЕТ.

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

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

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

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

Вообще, почта - тема относительно сложная. Настроить веб-сервер - элементарно, а вот правильно настроить почтовый сервер - так еще задача. Поэтому либо используй mail(), если есть возможность, либо чужой SMTP. Ну, либо гугл в зубы и учись настраивать-админстрировать почтовые сервера.
Аноним 2019/07/03 10:16:55  №1426974 420
>>1426895
Даже в описании либы написано:

>Integrated SMTP support - send without a local mail server
Ответы: >>1427125
Аноним 2019/07/03 10:51:07  №1426985 421
Анон, вкатываюсь в ваш клуб, по вашим гайдам, и сразу же встрял на кредитном калькуляторе.

С 4к и 40к вроде работает нормально, но если ставить 1к, как в примере, то всё идёт по пизде.
Так же последний месяц не считает, а дублирует.

ссылка https://ideone.com/04Pa5z
Хо решения правильный или я совсем хуйню сделал?
Ответы: >>1427114 >>1430081
Аноним 2019/07/03 13:34:34  №1427086 422
Тут такое дело, получал по студенческой лицухе phpstorm и не только, регал почтовый адрес в сакраменто колледж, на данный момент эту хрень прикрыли со стороны jetbrains, как теперь получить через студенческую лицензию подписку, кто знает?
Ответы: >>1427176
Аноним 2019/07/03 14:08:23  №1427114 423
>>1426985
Анон, я сам новичок, но ты все правильно и красиво сделал. Единственно что - у тебя нижняя проверка, где
>если баланс отрицательный - хватит считать
всегда будет в конце выполняться, поэтому и дублирование идет
Попробуй чуть-чуть изменить код, вообще не сильно привязывайся к коду, вон там даже в учебнике написано что есть намеренные ошибки
>Подсказка: код, который дан как образец, содержит намеренно внесенные ошибки.

вот например
https://pastebin.com/gRj4H8MX
Аноним 2019/07/03 14:22:00  №1427125 424
>>1426974
>>Integrated SMTP support - send without a local mail server

То есть PHPmailer самостоятельно может формировать согласно протоколу smtp и отправлять письма, но если винда ( в ней с помощью mail() нельзя отправить по дефолту) и нет локального smtp -сервера то отправить не сможет. Либо цепляться к smtp -серверу (локальному или в сети), и уже сервер отправляет/принимает письма.
Так?
Ответы: >>1430080
Аноним 2019/07/03 14:32:52  №1427142 425
14212597293923.jpg (19, 388x399)
399x388
Нахуя вы изучаете похапэ? Работы нихуя нет. Никому эта копрофилия в 2к19 не нужна. Пишут на чем угодно, только не на пхп. И причем уже года 4 как.
На дот нете, на жабе, на жоэс, даже на питоне че-то там пишут, но пых мертв.
Работы нет
Ответы: >>1427145 >>1427166 >>1427372
Аноним 2019/07/03 14:34:18  №1427145 426
>>1427142
но ведь 70% веба на пых-пыхе
Ответы: >>1427148
Аноним 2019/07/03 14:34:53  №1427148 427
>>1427145
Ты бы вакансиями пруфнул
Аноним 2019/07/03 14:45:01  №1427161 428
>>1427160
>выпук безработной маньки
Аноним 2019/07/03 14:50:39  №1427166 429
Ответы: >>1427170
Аноним 2019/07/03 14:52:00  №1427170 430
>>1427166
>руби
Последний раз слышал про эти засохшие сопли в 2014
Ответы: >>1427172
Аноним 2019/07/03 14:52:43  №1427172 431
Ответы: >>1427173
Аноним 2019/07/03 14:53:11  №1427173 432
>>1427172
Ага, прям как цой или кобол
Ответы: >>1427177
Аноним 2019/07/03 14:53:38  №1427176 433
>>1427086
Крякни да и все, что как маленький-то. Заработаешь копейку с помощью шторма - купишь лицензию, все по-честному. Вообще это оффтоп, соре
Ответы: >>1427238
Аноним 2019/07/03 14:54:14  №1427177 434
>>1427173
в Швятой живее всех
Аноним 2019/07/03 14:55:46  №1427179 435
Аноним 2019/07/03 15:05:00  №1427182 436
>>1427174
>заебали, сил нет
Одевайся, деньги на тумбочке.
Аноним 2019/07/03 16:32:08  №1427238 437
>>1427176
Нет, крякать не буду, это гавно.
Аноним 2019/07/03 16:51:23  №1427250 438
Аноним 2019/07/03 16:56:11  №1427258 439
Аноним 2019/07/03 16:58:07  №1427263 440
>>1427261
<20?
Ну тогда странно, мб просто не твоё
Аноним 2019/07/03 16:59:04  №1427264 441
>>1427237
Я тоже не могу решить задачи, очень сложно идет.
Ответы: >>1427266
Аноним 2019/07/03 17:01:32  №1427266 442
>>1427261
>>1427264
Два дебила - это сила.
А потом местные дурачки удивляются почему это сложилось мнение что пыхыпы для олигофренов.
Вот именно поэтому.
Аноним 2019/07/03 17:10:40  №1427283 443
>>1427267
>Ты сходу все задачи решал?
Точно так.
Еще дебильные вопросы будут?
Аноним 2019/07/03 17:14:54  №1427289 444
tupoyvopros.png (62, 767x301)
301x767
Объясните тупому, как должно выглядеть решение этой задачки, только начал а уже обосрался.
Аноним 2019/07/03 17:17:20  №1427291 445
Ответы: >>1427294 >>1427310
Аноним 2019/07/03 17:21:26  №1427294 446
Аноним 2019/07/03 17:32:26  №1427310 447
>>1427291
Нет, не тролю, рили не понел, что нужно сделать. Полагаю задать диапазон от 1 к 6 (задача на выпадения кубика). Но как это сделать не ебу.

>>1427292
Вашу шутку я оценил.
Ответы: >>1430080
Аноним 2019/07/03 17:50:20  №1427350 448
Поглядите, долбоёб мало того что в рандом не умеет - так ещё и не понимает как сага работает, кек
Аноним 2019/07/03 17:54:32  №1427362 449
БУМП
Аноним 2019/07/03 17:58:25  №1427372 450
>>1427142
Иди на node.js напиши.А мы посмотрим как тебя асинхронность и промисы в жопу выебут. А в рот тебя выебет модуль http.
Аноним 2019/07/03 18:25:51  №1427394 451
за что отвечает папка модель во фреймворках?
Ответы: >>1427418 >>1430079
Аноним 2019/07/03 18:50:18  №1427409 452
Ответы: >>1427736 >>1427740
Аноним 2019/07/03 19:16:12  №1427418 453
>>1427394
я сам на ноде с рубой пишу, но скорее всего - за работу с базами данных. Но это у нас - у королей
Аноним 2019/07/04 08:30:31  №1427736 454
Ответы: >>1428336
Аноним 2019/07/04 08:33:37  №1427740 455
>>1427409
switch ($order) {
case 'id':
$result .= 'id';
break;
case 'name':
$result .= 'name';
break;
case 'surname':
$result .= 'surname';
break;
case 'group':
$result .= '`group`';
break;
case 'mail':
$result .= 'mail';
break;
case 'rate':
$result .= 'rate DESC';
break;
case 'year':
$result .= 'year';
break;
case 'city':
$result .= 'city';
break;

Или пиздец какой толстяк, или пиздец какой дебил.
или оба пункта одновременно
Ответы: >>1427825 >>1428336
Аноним 2019/07/04 08:35:56  №1427745 456
https://itproger.com/news/44

Лол, обосрался, пока читал. Смахивает на какой-то жирный троллинг
Ответы: >>1427754 >>1427783 >>1428171
Аноним 2019/07/04 08:43:06  №1427754 457
>>1427745
Все правильно написано хотя и несколько инфантильно
Что не так?
Аноним 2019/07/04 09:18:14  №1427783 458
>>1427745
Это не троллинг. Это статьи для дегенератов-вкатывальщиков. Которые ничерта кроме курсов и не делали толкового. И не сделают.
Я нуб, и "знаю" как php так и node, и на мой взгляд понимание общей структуры и деталей вэб-разработки как таковой,стандартов, паттернов и т.д важнее чем технология. Потому что написать нормальный, правильный интернет-магазин это гораздо больше чем знать пхп/питон/нода.
nodejs асинхронен, ой блядь ужас, невероятная сложность. Я промифицировать модуль fs за вечер научился, и теперь не ебусь с колбеками. И при этом зачем тебе морочиться с этим все, если на пхп ты реализуешь тот же самое приложение, но проще? Зачем заказчику продукт на более сложной и реже используемой технологии, если более простая справляется и так отлично?

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

Так что все эти сопли - это для людей которые думают что "вкатываются", а на самом деле хуи пинают. Это от инфантильности индустрии. Впрочем это все помирает, программирование как профессия - стареет естественным образом. Через десять лет в профессии будет толпа людей за 40, с опытом работы в 20-25 лет, и они и будут делать индустрию.
Ответы: >>1427796 >>1427807
Аноним 2019/07/04 09:39:01  №1427796 459
>>1427783
мне не нравиться пых,он уродлив костылен
Ответы: >>1427807
Аноним 2019/07/04 10:02:06  №1427807 460
>>1427796
Это вкусовщина. К вопросу популярности в прикладных задачах это отношения не имеет вообще.

>>1427783
П.С.
Все что я написал - это конечно мое мнение. Но дополню вот чем:
я начинал вкатываться именно с ноды, и нода сука не милосердна, ее документация не проста, сама нода не проста. Я тогда не знал sql, читал только мантры про MongoBD. И что более важно я вообще не понимал принципов построения- приложения: МVC , сессии, авторизация, регистрация, роли доступа, взаимодействие с БД - все это в кашу, непонятно где и как в ноде использовать. MVC? Где в экспресс реализовывать модели, контроллеры и представления? Я тогда не понимал вообще. И вот самое важное - обучающих материалов нормального уровня на русском по ноде крайне мало.
Ну и еще по ноде - для новичка по ноде (как и в питоне) работы - в принципе нихуя от слова вообще. На пхп можно найти ИП "Красивые-сайты" и за 15 в месяц ковыряться получая реальный опыт работы, а не маня мечтания о том как тебя с умением отдавать на ноде три странички ждут в Калифорнийских стартапах. Ведь нода - это прогресс.О да.
Короче я взялся за пхп, с ее отличной документацией, большим комьюнити и очень большим количеством всяких туторов. Даже на дваче тред по пхп адекватный. По ютубу я пошагово по строчке запили три MVC фреймворка, от простых к посложнее, по ходу пьесы разобравшись с использованием классов и ООП. Изучил sql. И по итогу имею вполне представление о разработке. Самостоятельно с ноля могу запилить что то типа блога/не сложного магазина. Ток в пхп я получил полное представление о том как должно выглядеть вэб-приложение. И сейчас вернулся параллельно к ноде, уже с более серьезным пониманием что и как делать. Реально полсе пхп мне с нодой гораздо проще стало.
В этом контексте у пхп очень серьезное преимущество.
Ответы: >>1427826 >>1428430 >>1430079
Аноним 2019/07/04 10:47:28  №1427825 461
>>1427740
Обычная фильтрация строки по белому списку чтобы в базу ничего лишнего не попало.
Ответы: >>1427965 >>1430079
Аноним 2019/07/04 10:47:40  №1427826 462
>>1427807
работа есть потому что нужно поддержтвать все то дерьмо,которое накодили в эпоху становления и развития веба
Аноним 2019/07/04 13:24:32  №1427965 463
>>1427825
> обычная
ринку ноль три, ты?
Аноним 2019/07/04 14:00:37  №1427979 464
когда создадут замену пхп?
Аноним 2019/07/04 16:41:09  №1428042 465
Ребят, как развернуть iis в ide phpstorm?
Аноним 2019/07/04 17:37:11  №1428084 466
Здорово бродяги! Подскажите кто знает, как распарсить такой xml как на пике. Надо получить только currency и rate
Ответы: >>1428825 >>1430079
Аноним 2019/07/04 20:08:27  №1428171 467
>>1427745
Это и есть жирный троллинг для вкатывальщиков.
Аноним 2019/07/05 08:04:40  №1428336 468
>>1427736
>>1427740
Я художник и так вижу. А вы - зашореные посредственности, если не увидели моего идейного посыла
case-кюн
Аноним 2019/07/05 12:16:58  №1428425 469
Я походу ваще тупой. Не могу решить второй урок с этими кубиками, хз че ему надо
<?php

error_reporting(-1);

$anonDice1 = mt_rand(1,6);
$anonDice2 = mt_rand(1,6);

$compDice1 = mt_rand(1,6);
$compDice2 = mt_rand(1,6);

echo "U Anonche vypalo ($anonDice1) and ($anonDice2) \nU compa vypalo ($compDice1) and ($compDice2)\n";

$anonSum = ($anonDice1 + $anonDice2);
$compSum = ($compDice1 + $compDice2);

if (($anonDice1 == $anonDice2) && ($compDice1 == $compDice2)) {
\techo "Dva Dabla - Zaebis tema!\n";
\texit();
}

if ($anonSum > $compSum) {
\techo "Anon pobedil ebana!\n";
\t
} else($anonSum < $compSum) {
\techo "Plastmasoviy mir pobedil!\n";
\texit();
}

Подскажите, а то не хочется перескакивать не поняв...
Ответы: >>1428429
Аноним 2019/07/05 12:24:33  №1428429 470
Ответы: >>1428435
Аноним 2019/07/05 12:24:49  №1428430 471
Аноним 2019/07/05 12:36:25  №1428435 472
>>1428429
всё равно чет не понял... но тебе спасибо
Ответы: >>1428448
Аноним 2019/07/05 12:51:01  №1428448 473
>>1428435
if ($anonSum > $compSum) {
\techo "Anon pobedil ebana!\n";
} elseif ($anonSum < $compSum) {
\techo "Plastmasoviy mir pobedil!\n";
} else ($anonSum == $compSum) {
echo "Pobedila druzhba!\n"
exit();
}

ну чет опять не то, пздц
Ответы: >>1428459 >>1428465
Аноним 2019/07/05 13:18:13  №1428459 474
>>1428448
Может быть if (condition) и elseif (condition)
else (condition) в языке нет.
ты пишешь else ($anonSum == $compSum) и происходит ошибка. пиши просто else {echo "blabla"; exit();}
Ответы: >>1428801
Аноним 2019/07/05 13:32:40  №1428465 475
>>1428448
В последнем echo нет точки с запятой. Ну это так, просто заметил =)
Аноним 2019/07/06 00:42:40  №1428801 476
>>1428459
да, дописал elseif в последнем условии и заработало. Но я пздц долго сидел думал и ток перед сном допёр. За ответ всё равно спасибо, надеюсь больше так не буду тупить..
Аноним 2019/07/06 04:00:33  №1428825 477
>>1428084
Я чо-то нихуя не понял,, мне еще долго ждать ответ???????????!!!
Ответы: >>1430079
Аноним 2019/07/06 04:24:18  №1428827 478
ничего лучше пхп нет и не придумают
Аноним 2019/07/06 06:46:44  №1428855 479
for ($i=1; $i<10; $i++) {
\techo "{$i} * {$i} = \n";
}
Ответы: >>1428856
Аноним 2019/07/06 06:48:33  №1428856 480
>>1428855
После получаса мучений снова выхожу на связь. Как после равно вставить результат произведения (квадрат). Отдельной переменной не смог, хз как, куда... Кто обладает помогите
Ответы: >>1428873
Аноним 2019/07/06 07:18:16  №1428873 481
>>1428856
Всё норм, ребят. Понадобилось просто ещё пол часика. Извините за засирание треда, просто у кого ещё спросить кроме вас
Ответы: >>1428903
Аноним 2019/07/06 08:12:40  №1428903 482
>>1428873
Всегда пожалуйста XD
Ответы: >>1429079
Аноним 2019/07/06 09:45:41  №1428948 483
Есть всякие вакансии для вката типа "php стажер". Список требований там стандартный: php, mysql, js, html, css, иногда jQuery. Понятно, что идеальные знания не требуются, но всё-таки какой примерно уровень ожидается? Нужно ли зазубрить весь мануал php? Потребуется ли навык адаптивной верстки? Насколько нужно уметь в js?
Каких задачек из шапки может хватить для знаний?
Не хотелось бы проебать единственную стажировку в городе, поэтому не могу пока самому проверить.
Ответы: >>1428954
Аноним 2019/07/06 09:58:21  №1428954 484
>>1428948
>php, mysql, js, html, css, иногда jQuery
А если вдруг это все нужно, то ты тогда это все выучишь за один день - неделю и успеешь не проебать единственную стажировку в городе?
Ответы: >>1428988
Аноним 2019/07/06 10:45:01  №1428988 485
>>1428954
Я в любом случае это все учу потихоньку, просто мне нужно знать, в какой момент мне вкатываться кабанчиком.
Аноним 2019/07/06 12:39:10  №1429079 486
>>1428903
вот задача про кредит. окей, как в примере делаю долг в минус уходит и как бы збсь. А как сделать чтобы не платил больше чем надо за последний месяц? Я написал такую херню:
http://ideone.com/c2OUMk#stdin
В какую сторону думать?
Ответы: >>1430079
Аноним 2019/07/06 12:47:29  №1429084 487
06-07-1915-46-45.png (12, 392x226)
226x392
Поясните за колбэки и контекст

class c1 {
\tpublic function __construct () {
\t\t$obj = new c2();
\t\t$obj->fn = function () use ($obj) {
\t\t\tvar_dump ($obj);
\t\t}
\t\t($obj->fn)()
\t}
}

class c2 {
\tpublic $fn;
}

Можно ли как-нибудь добиться того, чтобы вместо var_dump($obj) я мог написать var_dump($this)? То есть, я хочу в коде анонимной функции использовать $this таким образом, чтобы это $this указывало на $this экземпляра класса с2, а не c1.

Или так не бывает? Конечно, чисто функционально меня и сейчас всё устраивает ($this, $obj - какая разница), но мне просто кажется несколько всратым и странным то, что я таким образом могу из кода, который вроде как пишется для класса c2, обращаться к приватным свойствам c1.

Дублирую код скрином для читабельности.

Или, может, я вообще не в ту сторону думаю?

Задача в следующем, есть два класса: c1 и c2. В рамках c1 мне необходимо задать код метода c2. c2 - класс, на основе которого будет сделано штук 10 объектов, каждый из которых имеет одинаковые свойства, но у каждого из этих объектов совершенно разный код в методе должен быть написан. Чтобы не наследовать 10 классов, решил воспользоваться колбэками. Но эта непонятка с $this напрягает немного.
Аноним 2019/07/06 14:23:38  №1429141 488
>>1429084
Объявляй его статическим $obj->fn = static function () use ($obj) {};
Аноним 2019/07/06 14:24:00  №1429142 489
>>1429084
Бредово выглядит и звучит.

>($obj->fn)()
Ты из жаваскрипта к нам? Тут так не пишут.
Ответы: >>1429176
Аноним 2019/07/06 15:20:47  №1429176 490
>>1429142
Может тогда расскажешь, как пишут, а не выёбываться будешь?
Ответы: >>1429181
Аноним 2019/07/06 15:29:54  №1429181 491
>>1429176
Тебя самого не смущает тот факт, что ты даже внятно объяснить не можешь - за каким хуем у тебя один объект реализует функционал другого? А как ты писать это примешься, так вообще хоть вешайся.

Колбэки у него блядь. Иди азы читай, макака.
Ответы: >>1429487
Аноним 2019/07/06 15:52:09  №1429189 492
>>1429084
Первый раз вижу ЖС-код написанный на ПХП. Оно вообще работает? Живое?
Охуеть.

Аноним 2019/07/06 22:47:23  №1429487 493
>>1429181

Не можешь нормально, аргументированно ответить - лучше ничего не пиши.

>>1429084

> Можно ли как-нибудь добиться того, чтобы вместо var_dump($obj) я мог написать var_dump($this)? То есть, я хочу в коде анонимной функции использовать $this таким образом, чтобы это $this указывало на $this экземпляра класса с2, а не c1

Замыкание в PHP - это объект класса Closure, а у него есть метод bind(). Но твой подход в общем неправильный. Если тебе надо обратиться к $obj, то ты можешь просто передать его в замыкание, и обращаться напрямую, а не придумывать костыли.

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

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

> Задача в следующем, есть два класса: c1 и c2. В рамках c1 мне необходимо задать код метода c2. c2 - класс, на основе которого будет сделано штук 10 объектов, каждый из которых имеет одинаковые свойства, но у каждого из этих объектов совершенно разный код в методе должен быть написан. Чтобы не наследовать 10 классов, решил воспользоваться колбэками.

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

Вот более адекватные примеры использования коллбеков. Допустим, у нас есть класс, представляющий коллекцию объектов, и мы хотим искать их по произвольному условию. Тут подойдет коллбек, который получает на вход сущность и возвращает true/false, подходит ли она под условие:

$londoners = $userList->select(function ($u) { return $u->getCity() == 'London'; });

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

$pinCodeValidator = new CallbackValidator(function ($value) {
return preg_match("/^\d{4}$/", $value);
});

$isValid = $pinCodeValidator->validate($code);

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

Так как такая ситуация встречается довольно часто, для неё придумано другое решение: анонимные классы: https://www.php.net/manual/ru/language.oop5.anonymous.php . Оно позволяет сделать более строгий контроль типов. Перепишем валидатор выше на анонимный класс. Сначала сделаем базовый класс валидатора и пометим его как абстрактный (недоделанный), так как он неработоспособен без нашей функции:

abstract class Validator {
abstract public function validate(string $value): bool;
// .. другие поля и методы
}

Теперь создадим анонимный класс, в котором переопределен метод validate и сразу же его объект:

$pinCodeValidator = new class extends Validator {
public function validate(string $value): bool
{
return preg_match("/^\d{4}$/", $value);
}
}

Это решение имеет плюс: мы контролируем тип функции. Не получится указать функцию с другим набором аргументов или возвращаемым типом. Также, переданная нами функция становится полноценным методом класса и имеет доступ к его полям и методам. Также, вместо абстрактного класса можно использовать интерфейс.
Ответы: >>1429516 >>1429552
Аноним 2019/07/06 23:53:39  №1429516 494
>>1429487
Не надо выёбываться.
Аноним 2019/07/07 04:58:28  №1429552 495
>>1429487
Спасибо за развёрнутый ответ.

Если говорить более конкретно, то суть такая.

Этот PHP-скрипт пишется для консоли и рассчитан на то, что он будет работать в виде "демона", то есть, 24/7 крутится в фоне (пока не упадёт). Сделано это через рекурсию и sleep(). Может быть, я пидор и php для таких целей - худшее решение, но сейчас не об этом.

Обработкой всего этого дела занимается класс srv. Этот класс имеет поле $workers, которое представляет из себя массив объектов класса worker.

У всех worker'ов есть общие методы и поля: метод, который отвечает true/false на вопрос того, пришло ли время данному worker'у выполнить свой код. Поле, которое хранит время следующего планового исполнения. И т. д.

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

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

Лепить ради этого дела 10 отдельных классов мне показалось избыточным. Но как я понял из твоего поста - нужно не выёбываться и всё-таки налепить их, верно?
Аноним 2019/07/07 04:58:48  №1429553 496
Аноним 2019/07/07 06:11:34  №1429561 497
>>1429552
Зачем тебе рекурсия, бесконечный цикл сделай. И отнаследовать десять классов нормальная идея - ты можешь выдать каждому классу понятное имя в зависимости от того что он делает.
Ответы: >>1429562
Аноним 2019/07/07 06:16:10  №1429562 498
>>1429561
А есть принципиальная разница между бесконечным циклом и рекурсией?
Ответы: >>1429566 >>1429604
Аноним 2019/07/07 06:26:19  №1429566 499
>>1429562
Вообще нет, но рекурсия жрет больше ресурсов - так как в пхп не оптимизируется хвостовая рекурсия то с этим нихуя не поделать.
Ответы: >>1429663
Аноним 2019/07/07 07:57:20  №1429604 500
>>1429562
Глубина рекурсии в php ограничена в раене 256. Вроде можно менять эту настройку, но я дропнул эту затею из-за подводных камней. Т.е. скрипт упадет с ошибкой через 8 часов если плодить новый вызов каждые 2 минуты.
Ответы: >>1429663
Аноним 2019/07/07 09:24:58  №1429663 501
>>1429566
>>1429604

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

Еще такой вопрос. Как я уже сказал - у меня cli-скрипт, который рассчитан на псевдобесконечную работу. Я могу как-нибудь выполнить некий код перед его завершением? Деструктор не срабатывает, если прибить скрипт через ctrl + c (SIGINT) в консоли.

Нагуглил это https://www.php.net/manual/ru/function.pcntl-signal.php , но как я понимаю, у меня нет возможности обработать все сигналы разом.

Есть какой-нибудь более надёжный и универсальный вариант?
Ответы: >>1429675 >>1430078
Аноним 2019/07/07 09:43:50  №1429675 502
>>1429663
> ный и универсаль
Задумано что ты на каждый сигнал отдельно подписываться будешь.
Аноним 2019/07/07 10:52:19  №1429708 503
Анонче ,поясни за (?, ? , ?) откуда эти символы берут значение и заменяются ими
Ответы: >>1429731 >>1430078
Аноним 2019/07/07 11:19:56  №1429731 504
>>1429708
Это prepared statement вместо того чтобы прямым текстом подставлять значение логина и т.п. они подставляются (биндятся) отдельной операций. У тебя это наверное дальше по тексту идет. Это способ борьбы с разного рода робертами-брось-таблицу (SQL Injection).
Ответы: >>1429738
Аноним 2019/07/07 11:30:25  №1429737 505
Есть такая структура:
<div A>
<div C></div C>
</div A>
<div B>
<div D></div D>
</div B>

Как задать в CSS свойство div D через div C? Нужно что-то типа (div A > div C) + (div B > div C)
Ответы: >>1429881
Аноним 2019/07/07 11:31:00  №1429738 506
>>1429731
Понял, спасибо.
Тогда я хз в чем ошибка, у меня sqlerror
может sql запрос не верный
Вот мой код
Ответы: >>1430045 >>1430077
Аноним 2019/07/07 11:49:00  №1429747 507
Блять, для кого нахуй этот учебник из шапки написан? Для новичков?? Да ну нахуй. Я заебался, я просто нихуя не понимаю как решать эти задачи. Я решил сам всего парочку, вот добрался до массивов, подсказка "заведи переменную и положи в неё ноль" Ну и дальше чё? Как блять объяснить что мне надо от программы блять? Я прочитал все функции, мануал по массивам, видео на ютубе одно, просто пиздец потратил времени на ебучую задачу в которую надо просто написать одну строчку и всё . Как эту ебучую проверку сделать? If писать или этот foreach? Куда писать, в каком месте, скобки блять где какие? Ёбаный рот этого учебника блять...
Ответы: >>1429839 >>1430078
Аноним 2019/07/07 14:19:13  №1429839 508
>>1429747
Дай ссылку на задание, я подскажу
Ответы: >>1430069
Аноним 2019/07/07 14:52:29  №1429857 509
Ответы: >>1429888 >>1429894
Аноним 2019/07/07 15:30:01  №1429881 510
>>1429737
Если не изменяет память - никак, CSS-селекторы не могут указывать "на уровень выше".
Аноним 2019/07/07 15:43:14  №1429888 511
>>1429857
>$container['uploadDirectory'] = __DIR__ . '\uploads';
>$container['copyDirectory'] = __DIR__ . '\copyes';
Кажись удобнее будет это расположить в $container['settings'], в каком-нить массиве ['directories']. Просто по логике искать такое именно в настройках надо, а не в контейнере с зависимостями.
Ответы: >>1430078
Аноним 2019/07/07 15:51:54  №1429894 512
>>1429857
Я бы ещё вынес создание конфигурации в другой файл - не хотелось бы спалить данные подключения БД кому-нить если у хостера модуль пхп глюканёт или ещё что.
Аноним 2019/07/07 16:50:45  №1429928 513
какие перспективы у пыха в будущем?
Ответы: >>1429931
Аноним 2019/07/07 16:51:45  №1429930 514
>>1429552

В такой ситуации правильнее будет сделать базовый класс или интерфейс воркера, а конкретных воркеров реализовать либо как анонимные классы либо как обычные классы-наследники.
Аноним 2019/07/07 16:52:11  №1429931 515
>>1429928
Плохие. Выкатывайся срочно.
Ответы: >>1429958
Аноним 2019/07/07 16:58:30  №1429934 516
>>1429552

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

Ну и перечитай мой пост еще раз. Я там прямо описал возможные решения твоей задачи, и любое из них лучше твоего странного решения с засовыванием коллбеков в публичное поле объекта.
Аноним 2019/07/07 17:42:39  №1429958 517
>>1429931
насколько все плохо?
Ответы: >>1429960
Аноним 2019/07/07 17:47:32  №1429960 518
>>1429958
Зачем спрашиваешь?
Аноним 2019/07/07 18:25:13  №1429973 519
И так продолжим рубрику "Помогите тупому".

Есть задача:
>W5.2 Некто кладет в банк 10000 р. Банк начисляет 10% годовых (то есть, каждый год на счету становится на 10% больше, чем в прошлом году). Напиши программу, считающую, через сколько лет в банке будет миллион? Сколько лет будет этому некто? Доживет ли некто до этого дня, если сегодня ему 16 лет?


Есть кусок кода, который должен посчитать количество лет:
и эта падла не работает.
<?php
error_reporting(-1);

\tfor ($x=10000; $x==1000000; $x+=1000) {
\t\t
\t\techo "{$x} - покажи мне че нить";
\t}
\t?>
\tТам по хорошему, цикл должен повторится 49 раз, и как то отобразится в консоле, но нихуя, вопрос что я не так делаю?
Аноним 2019/07/07 18:25:53  №1429974 520
>>1429973
> <?php
error_reporting(-1);

\tfor ($x=10000; $x==1000000; $x+=1000) {
\t\t
\t\techo "{$x} - покажи мне че нить";
\t}
\t?>
\t
Ответы: >>1429976
Аноним 2019/07/07 18:29:00  №1429975 521
>>1429973

Это частая ошибка. Там надо указать условие продолжения цикла (цикл выполняется, пока условие верно), а ты написал условие прекращения цикла.
Аноним 2019/07/07 18:29:18  №1429976 522
код.png (15, 781x359)
359x781
Аноны, за год смогу вкатиться и начать зарабатывать? Аноним 2019/07/07 21:05:25  №1430042 523
Хочу! Хочу вакансию и прогать. Хочу зумерский офис, ненавижу шараги с 30+-ками
Аноним 2019/07/07 21:14:09  №1430045 524
Ответы: >>1430077
Аноним 2019/07/07 23:42:18  №1430069 525
414-525 Аноним 2019/07/08 02:23:19  №1430077 526
>>1430045
>>1429738

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

Потому надо сделать так:

- в режиме разработки ошибку можно выводить на экран
- в режиме продакшена ошибка должна идти строго в лог, который ты раз в сутки будешь просматривать на наличие ошибок
- выбор между режимами задается стандартной опцией display_errors в php.ini (мануал: https://www.php.net/manual/ru/errorfunc.configuration.php#ini.display-errors )

Казалось бы, нам придется сейчас писать сложный код, определяющий значение display_errors, с разными вариантами выполнения, но есть способ проще. В PHP есть готовая функция, чтобы сообщить об ошибке, и она сама выведет ее на экран или в лог - это trigger_error: https://www.php.net/manual/ru/function.trigger-error.php

Используется она так, чтобы сообщить об ошибке:

trigger_error("Cannot prepare SQL query", E_USER_ERROR);

То есть при возникновении ошибки ты должен вызывать эту функцию, передав ей подробности. Где их взять? Откроем мануал по mysqli и посмотрим, как сделано там: https://www.php.net/manual/ru/mysqli.examples-basic.php

Там есть такой код:

// О нет!! переменная connect_errno существует, а это значит, что соединение не было успешным!
if ($mysqli->connect_errno) {
// Соединение не удалось. Что нужно делать в этом случае?
// Можно отправить письмо администратору, отразить ошибку в журнале,
// информировать пользователя об ошибке на экране и т.п.
// Вам не нужно при этом раскрывать конфиденциальную информацию, поэтому
// просто попробуем так:
echo "Извините, возникла проблема на сайте";

// На реальном сайте этого делать не следует, но в качестве примера мы покажем
// как распечатывать информацию о подробностях возникшей ошибки MySQL
echo "Ошибка: Не удалась создать соединение с базой MySQL и вот почему: \n";
echo "Номер ошибки: " . $mysqli->connect_errno . "\n";
echo "Ошибка: " . $mysqli->connect_error . "\n";
}

Этот код получает информацию об ошибке при соединении. И такой код, который получает информацию об ошибке при вызове функций:

if (!$result = $mysqli->query($sql)) {
// О нет! запрос не удался.
echo "Извините, возникла проблема в работе сайта.";

// И снова: не делайте этого на реальном сайте, но в этом примере мы покажем,
// как получить информацию об ошибке:
echo "Ошибка: Наш запрос не удался и вот почему: \n";
echo "Запрос: " . $sql . "\n";
echo "Номер ошибки: " . $mysqli->errno . "\n";
echo "Ошибка: " . $mysqli->error . "\n";
exit;
}

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

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

Позже, я советую изучить исключения и параметр report_mode, если его правильно настроить, то mysqli сама будет при ошибке выбрасывать исключения, которые будут выводиться на экран или идти в лог, и if'ы будут не нужны: https://www.php.net/manual/ru/mysqli-driver.report-mode.php . Но это можно сделать потом.

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

- не надо делать огромную вложенность if друг в друга. Если ты сделал exit, то программа дальше не выполняется, и блок else не нужен.
- надо проверять результат всех mysqli-функций вроде mysqli_stmt_execute() на ошибки, а ты это не делаешь
- нельзя подставлять email в ссылку напрямую, надо его экранировать как описано в моем уроке: https://github.com/codedokode/pasta/blob/master/network/urls.md (процентное кодирование)
- лучше использовать такой алгоритм работы с формами, который не требует редиректа при ошибке. Он описан тут: https://github.com/codedokode/pasta/blob/master/forms.md

Задавай вопросы, если непонятно. Если понятно - делай все, что я перечислил и читай все статьи по ссылкам.

Ответы: >>1430212
Аноним 2019/07/08 02:23:55  №1430078 527
>>1429747

Ок, вот алгоритм решения:

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

> Как эту ебучую проверку сделать? If писать или этот foreach?

И то, и другое. foreach будет перебирать массив, а if - делать проверку.

> Куда писать, в каком месте, скобки

Это вроде объясняется в предыдущих уроках. Если ты пропустил какие-то задачи в них, надо вернуться, перечитать и попробовать решить сначала их. Или тебе непонятен foreach?

Справшивай, если что-то непонятно.

>>1429888

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

>>1429708

Прочитай мануал (на русском) https://www.php.net/manual/ru/mysqli.quickstart.prepared-statements.php

Затем мой урок по SQL-инъекциям: https://github.com/codedokode/pasta/blob/master/security/sql-injection.md

>>1429663

Более надежным способом может быть иметь родительский скрипт, который будет убирать за ребенком при его завершении. Так как при серьезной проблеме ребенок может быть в неработающем состоянии. Ну или ловить SIGINT, если тебя интерсует только прерывание по Ctrl + C.
Ответы: >>1430204 >>1430212 >>1430244
Аноним 2019/07/08 02:24:47  №1430079 528
>>1429079

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

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

«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.

>>1428825
>>1428084

А в мануале по SimpleXML ответа нет? https://www.php.net/manual/ru/simplexml.examples-basic.php

>>1427825

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

>>1427807

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

Что касается асинхронности, то до async/await писать на промисах работу с БД - это по-моему боль, и синхронный код тут гораздо проще подходит.

> С появлением Node и производных фреймворков, работающих асинхронно, необходимость в PHP полностью отпала.

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

>>1427394

Модель - это "модель" предметной сущности, как правило оформленная в виде класса. Например, ты делаешь приложение-магазин и в нем есть класс "Товар", объекты которого являются моделью реального товара в коде и имеют свойства вроде "цена", "название" и тд. Иногда на модель навешивают еще работу с БД, при использовании паттернов вроде Active Record, но это не обязательно.

>>1427289

В PHP есть функция mt_rand(), которая "возвращает" случайное число. Вот пример:

echo mt_rand(1, 100); // выводит случайное число от 1 до 100

Здесь мы с помощью команды echo выводим число, которое вернула mt_rand(). Тебе же надо не сразу вывести это число, а записать в переменную. Для этого мы пишем код вроде

$x = mt_rand(....);

Оператор "равно" обозначает "взять значение справа и записать в переменную слева".
Аноним 2019/07/08 02:25:54  №1430080 529
>>1427289

В PHP есть функция mt_rand(), которая "возвращает" случайное число. Вот пример:

echo mt_rand(1, 100); // выводит случайное число от 1 до 100

Здесь мы с помощью команды echo выводим число, которое вернула mt_rand(). Тебе же надо не сразу вывести это число, а записать в переменную. Для этого мы пишем код вроде

$x = mt_rand(....);

Оператор "равно" обозначает "взять значение справа и записать в переменную слева".

>>1427310

Диапазон указывается при вызове функции mt_rand в скобках, тут есть примеры: https://php.net/manual/ru/function.mt-rand.php

>>1427125

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

Функция mail() под Windows умеет в SMTP, но видимо без шифрования: https://www.php.net/manual/ru/mail.configuration.php#ini.smtp В линуксе mail() просто вызывает программу sendmail и передает ей письмо (она добавляет письмо в очередь для локально поднятного почтового сервера).

В теории есть еще вариант, чтобы твоя программа содержала в себе "сервер", то есть при отправке письма на x@example.com определяла почтовый сервер домена exmple.com, соединялась с ним и отправляла письмо для пользователя x. Но я про такие библиотеки не знаю.

Аноним 2019/07/08 02:26:48  №1430081 530
>>1426985

Вообще, алгоритм примерно такой:

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

«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.

>>426895

Не так. Отправка письма на x@example.com делается так: ты должен определить по DNS, кто является почтовым сервером для example.com (запись MX), подсоединиться по SMTP и передать письмо. Тот его примет и положит в почтовый ящик с названием x. Однако, там может быть куча проблем - банальнейшая, тебе могут отдать ошибку в стиле "незнакомый отправитель, повтори-ка попытку через 10 минут", а твой скрипт очевидно, ждать 10 минут не будет. Или из-за того, что у тебя IP-адрес от домашнего провайдера, письмо будет помечено как вероятный спам или вообще не принято.

Потому обычно ты поднимаешь свой почтовый сервер или арендуешь чужой, передаешь ему письмо по протоколу SMTP и дальше он уже решает все проблемы (связывается с почтовым сервером получателя, делает повторные попытки итд). Если ты хочешь поднять свой сервер, то придется настроить технологии вроде настройки DNS для твоего IP адреса. Это называется MTA, или mail relay - сервер, который пересылает письма к получателю.

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

Приведу пример. Допустим, ты хочешь отправить письмо на dog@yandex.ru. Смотрим в DNS запись типа MX для yandex.ru: http://whois7.ru/?s=dig&q=yandex.ru&ns=ns1.yandex.ru&t=MX&nostats=1&noquestion=1

Там указано, что это сервер mx.yandex.ru. Значит, письмо надо передать ему.

PHPMailer делает две вещи:

- поддерживает протокол вроде SMTP
- поддерживает создание сложных писем с HTML, вложениями итд

Функционал полноценного почтового-сервера-доставщика (Mail Transfer Agent) он не выполняет. Он не ищет, кто отвечает за данный домен, а всегда шлет письма на один и тот же SMTP-сервер, на твой сервер, сервер отправителя. Также, он является SMTP-клиентом (тот, кто подсоединяется к серверу), а не сервером.

Аноним 2019/07/08 08:05:30  №1430166 531
А чего не катите, катите
Аноним 2019/07/08 09:21:42  №1430190 532
>>1429973
неправильно пошёл. Я недавно решал, выше задавал такие же тупые вопросы. Ниже пролистай задачу и там будет пример кода следующей. Вот оттуда я подглядел и кой чего подправил. Щас ебусь с массивами...
Аноним 2019/07/08 09:38:40  №1430204 533
>>1430078
хули заводить? там уже по условию переменная $number с нулем идет, ну и вот единственное до чего я додумался: http://ideone.com/LtprDn
и то он мне ошибку выдаёт. Я заебался блять, я не понимаю как это писать
Ответы: >>1430205
Аноним 2019/07/08 09:42:49  №1430205 534
>>1430204

Ты предыдущие задачи, вроде задач про кубики решал? Если нет, то надо вернуться и решить. В if пишется одно условие, а не три разных выражения. Не переставляй символы наугад, а разберись, что ты хочешь сделать.
Ответы: >>1430210
Аноним 2019/07/08 09:58:26  №1430210 535
>>1430205
ну ебать, попробовал через for с разными условиями - тоже нихуя. Всм разберись? Переменная равна нулю, если рост больше 169, то переменная увеличивается на 1. Как я это блять с помощью if должен написать?
Ответы: >>1430215
Аноним 2019/07/08 10:00:11  №1430211 536
второй день ебусь с одной строчкой кода, заебись
Аноним 2019/07/08 10:02:45  №1430212 537
Ответы: >>1430213
Аноним 2019/07/08 10:04:58  №1430213 538
>>1430212
да, и от меня тебе тоже спасибо, хоть я нихуя и не понимаю и горю
Аноним 2019/07/08 10:10:58  №1430215 539
>>1430210
Обратно возврщайся по программе - ты не понимаешь что делаешь, судя по всему. Это пиздос.
Рабочий код невозможно писать наугад.
Ответы: >>1430236 >>1430246
Аноним 2019/07/08 10:38:14  №1430236 540
Аноним 2019/07/08 10:44:15  №1430244 541
image.png (450, 604x404)
404x604
>>1430078
>лишние настройки раздувают конфиг и усложняют код
Тесты писать заебись будет потом на таком коде - всё железно прописано и хуй чего подсунешь. Можно прямо в классах писать, круто будет потом в них копаться при минимальных изменениях конфигурации.
Ответы: >>1430253
Аноним 2019/07/08 10:47:32  №1430246 542
Ответы: >>1430249
Аноним 2019/07/08 10:50:59  №1430249 543
>>1430246
а ну всё, скобочку просто не там поставил. Заебись, решил...
Аноним 2019/07/08 10:57:14  №1430253 544
>>1430244
>круто будет потом в них копаться при минимальных изменениях конфигурации
А уж постороннему сисадмину\девопсу вообще по-кайфу этим заниматься будет, особенно если он языка не знает.
Аноним 2019/07/09 04:40:16  №1430655 545
Ребята, подскажите. Третья задачка по массивам: https://phpbooktest2.ga/l1/arrays.html
в 16 строчке пишу $random= array_rand($answers);
дальше я не знаю. если сделать $answer = $random то он конечно же выведет только число. А как сделать чтобы выводил значение?
Ответы: >>1430801 >>1430815
Аноним 2019/07/09 08:04:43  №1430801 546
>>1430655
array_rand возвращает случайный ключ. Вот и возьми значение по этому ключу $answers[$random]
Ответы: >>1430978
Аноним 2019/07/09 08:11:13  №1430815 547
>>1430655
функция array_random возвращает КЛЮЧ. То-есть число перед стрелочкой. А тебе надо вывести число ПОСЛЕ стрелочки. Они связаны друг с другом. То-есть тебе надо сказать массиву, массив, напиши, пожалуйста, мне значение, которое хранится под вот этим вот ключом, записанным в переменную рандом, то-есть
echo $answers[$random];
или в твоем случае
$answer = $answers[$random];
Ответы: >>1430978
Аноним 2019/07/09 11:30:01  №1430978 548
Аноним 2019/07/10 12:48:10  №1431621 549
2019-07-1015-47-22.png (13, 1067x174)
174x1067
Пацаны, помогите. Ко мне в руки попал немного легаси код нашего одной штуки, которую нужно немного допилить. В пыху не могу, тем более в фреймворке, а хуйня это на cakephp насколько я понял. Короче есть форма с пика, нужно чтобы по нажатию кнопки это дело так же передавалось в телеграм. По поводу токена и апи в курсе, но с я чет совсем не понимаю как нахуй формы работают тут. За помощь скину на пивас.
Ответы: >>1431841 >>1433532
Аноним 2019/07/10 17:02:50  №1431841 550
>>1431621
Проще всего будет найти какой контроллер/екшен дергается при сабмите формы и туда дописать отправку в телеграм чего нужно.
Ответы: >>1431884
Аноним 2019/07/10 18:00:00  №1431884 551
>>1431841
Спасибо, буду искать. Я думал там челиком через вьюхи отрабатывается. Еще нормального коммьюнити по кейку нет похоже нихуя, одни бразильцы да индусы
Аноним 2019/07/11 16:58:20  №1432619 552
Двачуны, ума не могу приложить почему команда echo в цикле не выводит ничего на екран. За пределами цикла работает норм, а в середине ноль на масу. Чо такое???
Ответы: >>1432623
Аноним 2019/07/11 17:00:44  №1432622 553
Двачуны, вопрос следующий. Почему команда echo помещена в середину цикла for не хочет выводить вообще ничего? имеется ввиду помещена в { } За пределами цикла, все ок. А только здесь ебала.
Ответы: >>1432623 >>1432657
Аноним 2019/07/11 17:01:17  №1432623 554
>>1432619
>>1432622
Кул. Я думол первое сообщение проебалось.
Аноним 2019/07/11 17:54:18  №1432657 555
>>1432622
Возможно цикл не разу не выполняется.
Код неси. Хуле гадать.
Аноним 2019/07/11 18:23:29  №1432667 556
Ребят, кто знает, что в себя включают строчки в вакансиях типа "навыки работы с php"? Это получается все ядро языка, всякие дополнительные функции, например для баз данных, математики и прочего, практический опыт написания бекенда с использованием ооп, mvc архитектуры, и различных паттернов? Что там ещё?
Ответы: >>1433013
Аноним 2019/07/12 07:55:26  №1433013 557
>>1432667
анош, у меня мало опыта, но я подразумеваю, что если в вакансии требуется непосредственное взаимодействие с конкретной технологией, то тебе так и напишут типа ляравель, уи. А если это вакансия джуна, денег платят мало, то, скорее всего, базовые навыки сгодятся аля знаешь слово "массив" - ты уже король. А вообще все индивидуально. Те, кому нужен работник на конкретную работу, они сразу пишут будешь работать на такой языке с таким фреймворком. А если это вакансия "контент-менеджера", плюс сисадмина, плюс дезайнера, и приветствуется знание php, то тут пшп не ключевое
Ответы: >>1433175
Аноним 2019/07/12 08:27:55  №1433054 558
в шарпотреде сказали,что вы говно и вообще чернь
Ответы: >>1433310 >>1433488
Аноним 2019/07/12 10:20:01  №1433175 559
>>1433013
А если это вакансия стажёра в рогах и копытах? По идее требования должны быть на уровне "иметь базовые знания и уметь написать круд"?
Аноним 2019/07/12 11:02:15  №1433200 560
закончил 2й курс ойти из 3х. ходил/писал на всё связанное с софтверной разработкой, везде либо по конкурсу не прошёл, либо вообще не ответили. решил веб попробовать (мне он никогда не был интересен, но 1)нужны деньги 2)я толком и не пробовал). есть 2 места, что выглядят нелохо, у обоих, примерно, одинаковые требования:
>Knowledge of PHP (OOP, MVC), HTML, CSS and JavaScript

Я нихуя из этого никогда не изучал (учил шарп, питон, джаву и т.д.), но принципы ООП знаю. Реально ли,по-вашему, за ~ неделю получить какую-то базу знаний по сабжу, чтобы пройти интерном(там прям сказано, что работа для студентов, но необходимая глубина знаний не указана) ? Так я знаю основы программирования и ООП, но в вебе - мало чего.
Ответы: >>1433267
Аноним 2019/07/12 12:54:39  №1433267 561
>>1433200
За неделю ты только в вёрстке можешь разобраться базово. Сразу предупреждаю, халявы тут нет, конкурс большой и даже на интерна просят достаточно много знаний. Минимум несколько месяцев на все уйдет.
Аноним 2019/07/12 13:46:50  №1433310 562
>>1433054
>в шарпотреде сказали,что вы говно и вообще чернь
если даже сишники обращаются к нам на ВЫ, то думай сам, кто тут уважаемый авторитет доски
Аноним 2019/07/12 15:40:13  №1433418 563
двач,мне горит с симфони.
держу вас в курсе
Аноним 2019/07/12 17:36:36  №1433488 564
image.png (256, 500x500)
500x500
Аноним 2019/07/12 18:44:38  №1433532 565
>>1431621
тоже пытался поставить synthwave тему?
Аноним 2019/07/12 19:10:18  №1433549 566
Короче есть два стула. Либо учить php, какое-то время проработать джуном, параллельно учить Java/C#/Scala (что-то одно), и перекатится уже туда. Тут пхп чисто для быстрого вкатывания, т.к. нужны деньги, и опыт работы вообще. Либо сразу в выше перечисленные языки, но это вероятно год минимум дроча языка + базовых знаний. А то я выпустился с шараги и нихуя не знаю точнее знаю где искать, но сходу мало что вспомню(диплом на пхп с yii писал, но там некрасиво получилось)

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

Куда двигаться короче?
Ответы: >>1433553 >>1433605 >>1433897
Аноним 2019/07/12 19:14:35  №1433553 567
>>1433549
есть еще третий стул - остаться в пхп, смотрю по мидлам вилка зп хорошая. Но здесь главный косяк, что пхп может исчезнуть рано или поздно
Аноним 2019/07/12 20:23:09  №1433605 568
>>1433549
анон, ты же понимаешь, что это как с иностранными языками - потратив на один время, второй ты выучишь в разы быстрее.
Ответы: >>1433622
Аноним 2019/07/12 20:42:33  №1433622 569
>>1433605
Да, но допустим я на php дойду до мидла. А потом перейду на Java, мне тогда на junior переходить?
Ответы: >>1433768 >>1433803 >>1433924
Аноним 2019/07/13 06:55:56  №1433768 570
Аноним 2019/07/13 07:58:45  №1433803 571
>>1433622
У тебя ноль коммерческого опыта, какой мидл?
Более того - слишком высокого мнения о своих скиллах, при нулевом опыте.
Петов, вангую, нет ни одного - даже показать ничего не сможешь нормального.
На таких "мастеров" нынче везде насмотрелись.
Тебе перезвонят.
Ответы: >>1433948
Аноним 2019/07/13 10:43:02  №1433897 572
>>1433549
Ты петух, тебя даже стажёром не возьмут
Аноним 2019/07/13 11:49:48  №1433924 573
>>1433622
>Да, но допустим я на php дойду до мидла. А потом перейду на Java, мне тогда на junior переходить?
Анон, с тем багажом знаний, который у тебя будет после изучений пшп, с полученным опытом разработки и вращения в программистской среде велика вероятность, что ты джуниора джавовского тупо проскочишь и пойдешь выше. Тебе главное опыт получить
Ответы: >>1433950
Аноним 2019/07/13 12:22:00  №1433948 574
>>1433803
какое еще высокое мнение, я просто планирую на будущее. Через сколько-то лет стану мидлом же? Вот, и как дальше пойдут события думаю
Аноним 2019/07/13 12:25:44  №1433950 575
>>1433924
т.е. на будущее, если несколько лет прокодил на php, то при переходе на Java уже можно не на джуна пойти? Хотя наверное зависит от вакансии типа на пхп только для сайтиков бек писал, а на яве какие-нибудь микросервисы надо делать
Ответы: >>1433995
Аноним 2019/07/13 13:03:47  №1433995 576
>>1433950
Ну кто тебя возьмёт java миддлом без опыта этого самого java? Хорошо, если на джуна возьмут. Сейчас даже на джаву стажера требования ниибические
Ответы: >>1434082
Аноним 2019/07/13 15:05:23  №1434082 577
>>1433995
ну и нахуй так жить? Предположим всю жизнь ебашил десктоп на delphi ебаном, потом делфи рынок сдулся. Переучился на c# для десктопа, а там только стажером возьмут? Лол
Ответы: >>1434094 >>1434102
Аноним 2019/07/13 15:13:20  №1434094 578
>>1434082
а если с .net на java или наоборот тоже такая хуйня будет?)
Ответы: >>1434109
Аноним 2019/07/13 15:21:21  №1434102 579
>>1434082
Да, как-то так) Сурово в айти нынче
Аноним 2019/07/13 15:24:15  №1434109 580
>>1434094
Ну технологии же разные, совсем не родственные, пусть и конкурирующие. Опыт в соседней отрасли, конечно, будет небольшим плюсом к резюме, но энивей все решает опыт в специальности и техническое интервью.
Аноним 2019/07/13 20:13:36  №1434448 581
Почему пыха ассоциируется у меня с пердежом старых дедов?
Ответы: >>1434508 >>1434619
Аноним 2019/07/13 20:18:28  №1434456 582
Короче я потихой выучил верстку ребят, что учить дальше php или js?
Ответы: >>1434507 >>1437181
Аноним 2019/07/13 21:31:31  №1434507 583
>>1434456
Смотря кем хочешь быть, фронтендером или бекендером
Ответы: >>1434732
Аноним 2019/07/13 21:32:18  №1434508 584
>>1434448
Потому что это и есть запах пыха. Я к нему уже привык
someApprentice 2019/07/14 01:22:03  №1434558 585
image.png (120, 1920x1080)
1080x1920
https://github.com/someApprentice/Crypter

Переделал схему наследования БД на Single Table Inheritance.
Перешел с Node.js на PHP.
Реализовал простой текстовый чат (без шифрования) и конфернеции между двумя пользователями.

Сообщения/конференции сохраняются в IndexeDB и извлекаются реактивно (https://rxdb.info/).

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

У меня есть вопросы:

1. Когда отправляется первое сообщение пользователю, то открывается сначала форма для отправки сообщения, а потом делается редирект в только что созданную конференцию, после отправки сообщения.pic-1 Это сделалось потому что нельзя изначально открыть конференцию, которая ещё не существует.

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

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

Вот схема:

Conference:
uuid
type
name //может быть как имя пользователя так и имя конференции
...

Conference_Reference:
user
conference
updated
unread

Message:
...
conference


Message_Reference:
user
message

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

Вопрос прост и короток: Ничего страшного если uuid приватных конференций будут такие же как у пользователя?


2. Вопрос связанный с плохим знанием Питона или более специфичный для используемой мною платформы WAMP.

Платформа которую я использую может использовать компоненты, которые запускаются вместе с ней и могут быть использованы для обработки того или иного действия. Эти компоненты определяются в конфиге ( https://github.com/someApprentice/Crypter/blob/master/wamp/.crossbar/config.json#L101-L120 ).

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

https://github.com/someApprentice/Crypter/blob/master/wamp/AuthenticatorSession.py#L4
https://github.com/someApprentice/Crypter/blob/master/wamp/AuthorizerSession.py#L5
https://github.com/someApprentice/Crypter/blob/master/wamp/MessengerSession.py#L4

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

И заострю внимание на том, что эти компоненты запускаются самой платформой при её запуске в консоле или точнее сказать как процесс.

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

3. Должно быть правильно шифровать любой контент который передается в сообщении будь то голосовое сообщение, изображение или любой другой файл. Библиотека шифрования может шифровать Uint8Array ( https://github.com/openpgpjs/openpgpjs#encrypt-and-decrypt-uint8array-data-with-a-password ).

Можно ли перекодировать исходный файл в Uint8Array а затем обратно в файл, для его сохранения на диск/хранилище?

Я поискал ответы в интернете и нашел такие ответы

https://stackoverflow.com/questions/37134433/convert-input-file-to-byte-array
https://stackoverflow.com/questions/25354313/saving-a-uint8array-to-a-binary-file

которые предлагают такой подход

var reader = FileReader(file);

reader.onloadend = (e) => {
let a = new Uint8Array(evt.target.result);

//encrypt

let blob = new Blob([a], { type: mimeType });

...
}

Но я не могу понять, Blob и File принимают в конструктор array of ArrayBuffer... Uint8Array является ArrayBuffer'ом?

В документации сказано, что нельзя создать ArrayBuffer сам по себе, вместо этого, нужно создать TypedArray, которым является Uint8Array.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer

И Uint8Array тоже принимает в конструктор ArrayBuffer

Значит, можно обойтись без FileReader'а и написать напрямую

var buffer = async file.arrayBuffer()

var a = Uint8Array(buffer);

//encrypt

file = new File([encrypted], { type: ... });

Это верно?
Аноним 2019/07/14 06:04:05  №1434619 586
Аноним 2019/07/14 10:01:59  №1434732 587
>>1434507
А кем легче и куда быстрее вкатиться?
Ответы: >>1434901 >>1434912 >>1434923
Аноним 2019/07/14 12:11:50  №1434901 588
>>1434732
удабливаю
пыха вымрет? питон? куда делать вкат?
Ответы: >>1434946 >>1435023
Аноним 2019/07/14 12:24:58  №1434912 589
>>1434732
>куда легче
Бутылки собирать легче всего.
Если ты нулевой, то тебе везде медленно и трудно будет.
Аноним 2019/07/14 12:34:47  №1434923 590
>>1434732
По идее, во фронтенд вкатиться чуть быстрее и проще, чем в бек. Но это только если у тебя все отлично с вёрсткой.
Но на самом деле вкатиться проще и легче туда, где больше стажировок в твоём городе.
Это именно та ситуация, где нужно выбрать, что тебе по душе, и не работает фишка "похуй куда, главное быстрее уже начать деньги зарабатывать". Что тебе больше нравится, то и легче пойдёт.
Ответы: >>1435003
Аноним 2019/07/14 12:43:25  №1434946 591
>>1434901
Пыха в данный момент очень неплохо развивается, и, учитывая, что она всегда лидировала, ещё минимум 10 лет можно за неё не беспокоиться.
Для вката она вообще идеальна, простая и лёгкая со всех точек зрения, при этом куча вакух и стажировок с низкими требованиями. В то же время, она не такая престижная, как фронтенд(спасибо дурачкам, кричащим что пыха говно и нинужна), соответственно и конкуренция не такая дикая.
Ответы: >>1437182
Аноним 2019/07/14 13:31:00  №1435003 592
>>1434923
А если всё нраица, то как?
Ответы: >>1435031
Аноним 2019/07/14 13:51:49  №1435023 593
Аноним 2019/07/14 14:06:22  №1435031 594
>>1435003
Тогда считаешь количество стажировок и джуновских вакансий в твоем городе. Где больше, туда и вкатываешься.
Аноним 2019/07/14 15:26:20  №1435080 595
У меня 2 вопроса по задачке про студентов:
если авторизацию делаем по куке, тогда после закрытия браузера возможность редактирования навсегда теряется? Зачем так делать?
Можно ссылку на идеальное решение этой задачки? Потом хочу сверить.
Ответы: >>1435093 >>1435278 >>1435287
Аноним 2019/07/14 15:41:05  №1435093 596
>>1435080
>если авторизацию делаем по куке, тогда после закрытия браузера возможность редактирования навсегда теряется
анон, я до нее еще не дошел, сам новичок, но разве кукисы хранятся не столько времени, сколько ты сам им задашь? Там в задании вроде написано "укажите срок жизни - год". Разве куки после закрытия браузера не сохраняются?
Ответы: >>1435287
Аноним 2019/07/14 18:21:46  №1435278 597
>>1435080
Ты наверное перепутал куки и сессии =)
Ответы: >>1435346
Аноним 2019/07/14 18:26:36  №1435287 598
>>1435080
Куки сохраняются. Потеряется если ты будешь передавать данные пользователя в адресной строке (методом GET если не ошибаюсь). Либо если укажишь время жизни сессии/куки (не уверен, можно ли устанавливать время жизни куки, но сессии точно, но все равно одно без другого жизнеспособно лишь частным случаем передачи самого идентификатора браузера или передачей через get в url), как написал этот анон >>1435093.
Что данные сессии, что данные куки, всего лишь информация, которую ты записал в 1ом случае на стороне сервера или во 2ом на стороне клиента. Если ты не используешь сессии и куки, то аутентификация (узнай про разницу между авторизацией и аутентификацией, а она есть) проходит по информации из куки, метода get или идентификатора браузера (думаю своеобразный отпечаток, хотя не особо понимаю).
Ответы: >>1435290 >>1435346
Аноним 2019/07/14 18:28:33  №1435290 599
>>1435287
>Если ты не используешь куки, то аутентификация (узнай про разницу между авторизацией и аутентификацией, а она есть) проходит по информации из метода get или идентификатора браузера (думаю своеобразный отпечаток, хотя не особо понимаю).
Фикс
Аноним 2019/07/14 19:19:25  №1435346 600
>>1435278
>>1435287
Все, понял, не сохраняется только если expires 0 поставить.
>Потеряется если ты будешь передавать данные пользователя в адресной строке
А вот здесь не понял, сейчас вот попробовал передать данные в адресной строке, кука не потерялась!
Ответы: >>1435376
Аноним 2019/07/14 20:01:49  №1435376 601
>>1435346
Куки в передаче через url не задействовано. Без них можно передавать данные посредством url. После прохождения авторизации создается сессия и ее идентификатор передается посредством get запроса. Вроде такую функцию можно настроить в php.ini
Ты, к примеру, можешь выключить в своем браузере куки и никак не получишь доступ к сайту без них. Слышал только про идентификатор браузера, но сам плохо понимаю что это, да и боюсь небезопасно.
Ответы: >>1435381
Аноним 2019/07/14 20:07:24  №1435381 602
>>1435376
Вообщем не мучайся, если интересно, то погугли. А так это один из способов, который почти нигде не используется уже. Но именно в этом способе пропадает связь если ты закрываешь вкладку или браузер.
ВРОТЕНД Аноним 2019/07/15 07:24:23  №1435520 603
В общем, работаю пыха-кодером уже года 3. До этого подрабатывал на фрилансе и пилил сайтики для себя.

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

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

Синтаксис и логику этих залуп знаю: HTML, CSS, JS, Jquery, но учил я все это мягко говоря лет 5 назад и ниибу что там щас.

Например сейчас клиент попросил сделать инпут куда надо вбивать цифры, после чего появляется возможность добавить еще один инпут, еще и еще и так до бесконечности. Весьма вероятно, что есть какие-то готовые решения, но я сижу пердолюсь изобретая колесо.
Ответы: >>1435537 >>1435577
Аноним 2019/07/15 07:45:55  №1435537 604
Аноним 2019/07/15 08:26:01  №1435577 605
>>1435520
>Например сейчас клиент попросил сделать инпут куда надо вбивать цифры, после чего появляется возможность добавить еще один инпут, еще и еще и так до бесконечности.

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

$('#контейнер инпутов').append('<p><input type="мой инпут" name="инпут['+айдишник айдишник инпута+']" /></p>');

можно, конечно, тупо десять штук полей понаделать невидимых, а потом показывать их при заполнении предыдущего, но так наверное не делают
Ответы: >>1435675
Аноним 2019/07/15 10:46:05  №1435675 606
>>1435577
Ну я так и делаю, и также рассуждаю "но так наверное не делают". Вопрос не в том как сделать, в данном случае похуй на это - главное шоб работало, но в теории хотелось бы вкатиться в правильное делание
Ответы: >>1435867
Аноним 2019/07/15 12:32:52  №1435784 607
Если я не могу сделать даже ебаный цикл из уроков по основам PHP, мне наверное не стоить вкатываться ?
Ответы: >>1435811 >>1436334
Аноним 2019/07/15 12:46:12  №1435811 608
>>1435784
Да, иди котлеты жарь в маке.
Аноним 2019/07/15 12:58:27  №1435842 609
Еще вопрос по задачке про студентов, что такое
>Для поиска по всем колонкам можно применить оператор LIKE к соединенным через пробел значениям столбцов.
? Разве можно в sql искать по соединению столбцов?
Аноним 2019/07/15 13:01:44  №1435850 610
Помогите советом добрым, я изучал питон, знаю его неплохо, думал с ним найти работу, но открыл вакансии своей мухосрани их 2 и висят они по несколько месяцев, потом посмотрел пхп и было около 20, аноны за сколько можно перекатиться, учитывая что питон я знаю до ооп включительно и немного трогал джангу?
Ответы: >>1435869
Аноним 2019/07/15 13:17:01  №1435867 611
>>1435675
Попробуй vue, там доки можно за час-два прочитать и уже делать адовые вещи
вот например твоя задача https://pastebin.com/ijXJXpHt
Ответы: >>1435870
Аноним 2019/07/15 13:20:10  №1435869 612
>>1435850
Несколько месяцев, зависит от твоего текущего уровня и знания верстки.
Аноним 2019/07/15 13:20:38  №1435870 613
>>1435867
>vue
Как меного времени на его изучение надо потратить?
Ответы: >>1435933
Аноним 2019/07/15 13:44:42  №1435933 614
>>1435870
Час доки почитать и сделать todo приложуху, готово, синтаксис у жс си-подобный поэтому после пыхи я думаю никаких траблов не будет на интуиции писать
Самая большая проблема наверное это понять как инициализировать приложение, есть вариант использовать рантайм-онли как и с жквери, но удобнее конечно использовать компоненты (каждый компонент это отдельный файл), а там и новый синтаксис и вот это всё. У симфони(webpack-encore) и ларавел(laravel-mix) есть свои тулзы для этого, можешь посмотреть что удобнее.
Ответы: