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


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
651 37 174

Клуб изучающих PHP #110 /php/ Аноним 13/06/19 Чтв 07:31:15 14156041
php-noob-1.png (33Кб, 500x500)
500x500
cat-cafe-osaka.jpg (157Кб, 1024x683)
1024x683
epic-raws-maria[...].jpg (504Кб, 1280x720)
1280x720
just-google-it.jpg (156Кб, 787x830)
787x830
Лето на дворе, наверно, в треде немного опустеет, но мы все равно изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
Как оформлять код Аноним 13/06/19 Чтв 07:33:45 14156052
grammar.png (56Кб, 500x644)
500x644
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

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

Аноним 13/06/19 Чтв 07:37:22 14156063
Вроде я проверил практически все посты в прошлом треде, и ответил на все вопросы, так что если вы что-то спрашивали, зайдите в старый тред >>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 отдельных теста.


Аноним 13/06/19 Чтв 08:43:59 14156164
>>1415605
> переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase
Это же упоминается только применительно к методам.
Аноним 13/06/19 Чтв 08:59:57 14156175
>>1415604 (OP)
>Почему PHP? Потому что вакансий море, и учить легко.
Ситуация на рынке не изменилась? Javascript или python в этом вопросе по-прежнему не конкуренты php?
Аноним 13/06/19 Чтв 09:01:32 14156186
>>1415616

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

Ты надеюсь понимаешь, что если бы каждый писал так как ему нравится, то у каждого код был бы написан в разном стиле и сложнее было бы понять другого человека, для этого стандарты и придумали
Аноним 13/06/19 Чтв 09:32:41 14156279
>>1415625
Хорошо, но ты проигнорировал главный вопрос:
>Насколько часто это соблюдается на практике?
Аноним 13/06/19 Чтв 09:55:18 141563210
>>1415622

Я пишу на новой строке. Просто пиши как в Симфони, и проблем не будет.
Аноним 13/06/19 Чтв 10:42:34 141564911
>>1415627
Вместо задавания глупых вопросов сходи на гитхаб и посмотри топовые либы - как они написаны.
Аноним 13/06/19 Чтв 10:53:14 141566012
>>1415649
>как они написаны
Очень хуёво написаны. Я не хочу делать также, отсюда вопрос: если допустить, что я не буду делать топовые либы для всеобщего пользования, насколько критичным будет игнорирование данного пункта стандартов? Иными словами, в отдельно взятых командах могут быть "свои" стандарты, как мне докладывали. Вопрос в том, насколько часто они идут вразрез с PSR* и насколько вообще будут доёбываться до его несоблюдения.
Аноним 13/06/19 Чтв 10:56:04 141566413
>>1415660
>Очень хуёво написаны.
Свой код покажи.
Аноним 13/06/19 Чтв 10:57:11 141566514
>>1415664
Ты понял, что я имел в виду.
Аноним 13/06/19 Чтв 10:57:59 141566615
>>1415660
Алсо, я бы тебя в команду не брал - ты какой-то слишком тупорогий не понимаешь элементарных вещей.
Аноним 13/06/19 Чтв 10:59:08 141566716
>>1415665
Я не уверен, что у тебя есть вообще какой-то опыт в программировании. Своё мнение можешь в одно место засунуть.
Аноним 13/06/19 Чтв 11:00:58 141566917
>>1415667
Что ты хочешь-то от меня?
Я задал вопрос, если ты не намерен на него отвечать - просто иди нахуй.
Аноним 13/06/19 Чтв 11:01:23 141567018
>>1415669
Ясно. Зелень ебаная.
Аноним 13/06/19 Чтв 11:32:23 141568519
>>1415660

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

Самым простым и адекватным решением будет не выпендриваться и перейти на PSR. Это не так сложно, как кажется.
Аноним 13/06/19 Чтв 11:33:45 141568620
>>1415666

Не надо переходить на оскорбления. Он к тебе в команду и не напрашивался.
Аноним 13/06/19 Чтв 11:37:38 141568921
ОП, меня пропустил. Помоги, пожалуйста:
>>1415145
>>1415175
Аноним 13/06/19 Чтв 11:38:18 141569022
>>1415685
в опенсорс проекте просто пошел нахуй если твой код не в том кодстайле что и проект
Аноним 13/06/19 Чтв 11:40:39 141569223
>>1415685
А на практике никто не особенно не докапывается до кодстайла потому что есть строки и они как правило горят, если ты будешь коллеге закрывать PR потому что у него скобки не так стоят, когда у него прод лежит и ему надо срочно запушить ты навлечешь на себя много нелюбви. Потому PRS крайне желателен, но не всегда обязателен.
Аноним 13/06/19 Чтв 11:47:27 141570024
>>1415686
А я твоих советов не спрашивал. Иди нахуй.
Аноним 13/06/19 Чтв 11:50:32 141570325
>>1415685
>просто тебе так больше нравится
Достаточное условие, чтобы начать так делать, если это не создаст никому серьёзных проблем. В чём и был вопрос. Судя по всему, он был задан очень непонятно, хуй его знает.
Не так сложно, безусловно. Но если можно этого не делать - я бы предпочёл не делать.
> В open source проекте
есть гайд для контрибьюторов, где такие вещи, как кодинг стайл, обычно описываются, если они неочевидны. Ну и, конечно же, некоммерческие проекты, которые я сам выбираю, на чём делать, я бы в жизни не выбрал делать на вашей пыхе.

>>1415692
Спасибо, буду иметь в виду и класть хуй на стандарты.
Аноним 13/06/19 Чтв 11:53:45 141570526
>>1415703
>Спасибо, буду иметь в виду и класть хуй на стандарты.

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

Во вторых, если у тебя в методе слишком много параметров то повод задуматься о том что ты что-то не так спроектировал.
Аноним 13/06/19 Чтв 12:06:28 141571729
>>1415714
> Во вторых, если у тебя в методе слишком много параметров то повод задуматься о том что ты что-то не так спроектировал.
Что поделать, если пехапе не позволяет делать именованные аргументы?
Аноним 13/06/19 Чтв 12:09:04 141572030
>>1415714
>у подовляющего большинства уже широкоформатные мониторы, а не квадратные
К чему эта реплика вообще?
>если у тебя в методе слишком много параметров
Штуки 3, просто названия длинные.
Аноним 13/06/19 Чтв 12:11:41 141572231
>>1415717
>Что поделать, если пехапе не позволяет делать именованные аргументы?

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

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

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

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

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

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

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

Аноним 13/06/19 Чтв 12:43:31 141574237
Аноним 13/06/19 Чтв 12:52:00 141575138
Аноним 13/06/19 Чтв 13:14:50 141576939
>>1415733
Уже написал пост и понял, какой я идиот. Всего-то требовалось 3 дня всматриваться к код и забыть про очевидные вещи. У меня один!! пробел не был url-закодирован. Но почему этот пробел не вызывал ошибок в десятке случаев, а тут вызвал? Это единственное, что мне не ясно. Будь это ошибка везде сразу, я бы быстро нашел, в чём дело.

Тогда другие вопросы задам. Можно отсылать файл multipart/form-data, используя file_get_contents? Или что-то еще, загружающее файл из ссылки в оперативную память и отсылающую её в телеграм оттуда.
Аноним 13/06/19 Чтв 14:52:06 141580640
>>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 по моему удобнее.
Аноним 13/06/19 Чтв 15:14:03 141582341
Сап аноны!

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

(Сори за кровь из глаз)
Аноним 13/06/19 Чтв 15:27:04 141583142
>>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'ом? Мне нужно отправить не ссылку, а файл, при этом не загружая его на сервер, потому что работа с файлами запрещена. Вот и думаю, как загрузить из оперативки.
Аноним 13/06/19 Чтв 15:36:37 141583943
Аноним 13/06/19 Чтв 15:41:31 141584544
Аноним 13/06/19 Чтв 16:10:04 141587845
>>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",
Только я всё еще не могу отправить файл. Я могу отправить его, если просто скачаю в папку, или отправить его по ссылке. Но решить задачу в том виде, в котором она есть, уже не могу.
Аноним 13/06/19 Чтв 16:27:07 141588746
>Ты опять неправильно кодируешь тело запроса.
А, всё. Я отправляю запрос с заголовком ответа сервера. Прости, я тупой.
Аноним 13/06/19 Чтв 17:00:22 141591047
Ещё я только понял, что получаю содержимое файла и плевать, что использовать - Guzzle, curl или file_get_contents. Нужно бы отдохнуть, чтобы так не тупить, но я хочу закончить.
Аноним 13/06/19 Чтв 17:26:51 141592048
Я правильно понял, что мне нужно содержимое самостоятельно закодировать в multipart/form-data? Понять бы теперь, как это сделать.
Аноним 13/06/19 Чтв 17:41:51 141593049
>>1415920
Бля, мужик, чё у тебя за проблема запрос организовать с нужными параметрами? Второй день написать не можешь.
Подтягивай матчасть значит.
Аноним 13/06/19 Чтв 19:24:54 141598750
Хочу писать - начинаю писать - сразу не хочу. В чем моя проблема? =)
Аноним 13/06/19 Чтв 19:28:57 141598951
>>1415987
>начинаю писать - сразу не хочу
Если писать неприятно - проверься на простатит.
Аноним 13/06/19 Чтв 19:34:38 141599152
>>1415987
У меня наоборот обычно - начинать не хочу, а в себя прихожу через пару часов как минимум.
Аноним 13/06/19 Чтв 19:59:02 141599553
>>1415989
ударение на второй слог
Аноним 13/06/19 Чтв 20:10:12 141599854
>>1415987
Добро пожаловать в клуб!
Аноним 14/06/19 Птн 01:30:18 141612555
>>1415604 (OP)
>поздравляю тебя с отсутствием мозгов!
Иди нах, умник
Аноним 14/06/19 Птн 07:27:04 141616156
>>1415605
Зачем нужны четыре пробела, если есть таубляция? Ладно бы отбивалось одним-двумя пробелами, но визуально-то одно и то же!
Аноним 14/06/19 Птн 08:18:22 141616957
1.png (3Кб, 338x190)
338x190
2.png (5Кб, 832x168)
832x168
Аноним 14/06/19 Птн 08:34:40 141617358
>>1416169
А нахуя ты таб по 4 раза жмакал, долбоеб
1 таб = 4 пробелам визуально.
Аноним 14/06/19 Птн 11:06:23 141622559
>>1416169
Ширину табуляции в любой IDE настроить можно. Ставь хоть с пробел.
Мне вот таб легче нажать, чем как обезьянка пробел дрочить по 4 раза на строку, а то и больше.
Аноним 14/06/19 Птн 13:55:58 141634460
>>1416225
Ну так по секрету, все так и делают, никто не дрочит пробел.
Аноним 14/06/19 Птн 14:35:11 141637561
>>1416344
А что я постоянно эти вопросы встречаю везде?
Аноним 14/06/19 Птн 15:36:41 141640862
>>1416161
В какой-то момент выбора между табами и пробелами вылезли художники-педерасты и начали пронзительно верещать, что они хотят что бы один и тот же код повсюду выглядел одинаково, в то время как табы по разному отображаются в различных IDE/редакторах. К сожалению, им не успели насрать на лицо и поэтому блядские пробелы теперь стандарт.
Аноним 14/06/19 Птн 16:05:04 141642263
>>1416408
>табы по разному отображаются в различных IDE/редакторах
Какой-то хуёвый аргумент - они отображаются как настроено.
Что за инвалиды не могут сделать себе как нравится: хоть 1 отступ, хоть 8, если такой любитель? С пробелом такие штуки не получится вытворить.
Аноним 14/06/19 Птн 16:07:14 141642464
>>1416422
А ещё IDE обычно с табуляцией немного код подравнивает, в силу своего ума. Пробелы тут тоже сосут.
Аноним 14/06/19 Птн 16:25:19 141643665
>>1416375
Потому что ты сидишь на борде для детей.
Аноним 14/06/19 Птн 16:40:54 141644366
>>1416422
>Какой-то хуёвый аргумент - они отображаются как настроено.
Вот именно. А пачке педиков было неприятно, что код, который они выравнивали в соответствии со своими художественными вкусами, у кого-то будет выглядеть по другому.
Аноним 14/06/19 Птн 17:16:55 141645867
>>1416443
Ещё с табами можно динамически отображать вложенность операторов просто меняя ширину отступа, но не меняя при этом исходников.
Аноним 14/06/19 Птн 20:27:09 141655868
>>1416443
Хуйня может получтся если табы с пробелами смешивать. Если ты отбиваешь отступы табами - ты не хочешь чтобы IDE меняло их на пробелы. Соответственно не подравнивай код пробелами иначе у другой макаки может хуита получится у которой ширина таба другая
Аноним 14/06/19 Птн 20:34:56 141656269
Кроме того табодолбоебы не учитывают что в коде не только идентация для блоков нужна но и иногда приходитсяи строки переносить и аргументы нетодов и пары клч => занение у массивов и другие конструкции для читабельности. Бляди начинают лупить табы с пробелами. А если у меня таб == 2 пробела
Аноним 14/06/19 Птн 20:42:35 141656770
Ребят, извиняюсь за тупой вопрос, но что требуется знать на подобных вакансиях
https://spb.hh.ru/vacancy/31725993
https://spb.hh.ru/vacancy/31636756
кроме собственно языков? Ведь полюбому там необходимы фреймворки, тестирование, package manager, дебаггер, разные БД, потом еще по фронту React, jquery, адаптивная верстка.
Аноним 14/06/19 Птн 20:45:08 141656971
Скажите пожалуйста, сколько времени займет изучение основ PHP так чтобы на стажера хватило? Ну чисто по времени
Аноним 14/06/19 Птн 20:46:59 141657072
>>1416567
Позвони им. Если они связываются со стажерами - значит у них дохуя свободного времени.
Аноним 14/06/19 Птн 20:53:15 141657573
>>1416569
На стажера одного пхп не хватит. Лучше иметь общую эрудированность в ИТ, чтобы самостоятельно искать информацию и решать задачи. Задачи тебе посильные найдут а вот нянчится и объяснять тебе никто не будет. Хоть ты и стажер
Аноним 14/06/19 Птн 21:14:08 141658374
>>1416575
Ну я понимаю, просто на изучение всех тонкостей PHP уйдет больше всего времени, как мне кажется. А настроить сервер и подключить к нему базу данных можно за пару дней
Аноним 14/06/19 Птн 21:25:50 141659075
>>1416583
На ПЧП у тебя уйдет ровно столько времени сколько потребуется у данного работодателя, какой попадется. Так что если знаешь что апач это программа которая запускает интерпритатор пхп и что пхп выполняется на сервере. Что запросы передаются байтами по сети по протоколу хттп. То иди уже стажерь
Аноним 14/06/19 Птн 21:29:20 141659476
>>1415627
>Насколько часто это соблюдается на практике?
кем? В любой нормальной фирме с нормальными программистами придерживаются стандартов.

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

мимопроходил
Аноним 14/06/19 Птн 22:27:41 141662480
>>1416590
И что, этого хватит?
Аноним 14/06/19 Птн 22:33:18 141662681
>>1416624
Зависит от того насколько низко ты готов опуститься.
Аноним 14/06/19 Птн 22:35:12 141662882
>>1416594
>Если ты кодишь для себя
Я сначала так и хотел, когда начинал. Теперь только по рекомендациям и пишу - там многие мелочи за меня продумали. Совсем ленивый стал.
Аноним 14/06/19 Птн 22:50:16 141663483
>>1416626
Да я любой работе буду рад
Аноним 14/06/19 Птн 23:01:42 141663884
>>1416634
Тебя какой-то хуй троллит.
Тебе тестовое вышлют, которое ты провалишь скорее всего. Вряд ли они мимокроков набирают - уж язык знать хорошо должен.
Аноним 14/06/19 Птн 23:45:22 141666285
>>1416638
А если пройду? Это же только допуск к собесу
Аноним 15/06/19 Суб 00:41:14 141668286
>>1416662
Думаешь ты один такой умный? Придётся конкурировать с теми, кто уже хоть что-то знает.
Аноним 15/06/19 Суб 09:03:21 141673387
>>1416408
>>1416422

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

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

Ты пишешь "что за инвалиды...", а я не понимаю, что ты за инвалид, который не может написать элементарный плагин для изменения отступов при выводе.
Аноним 15/06/19 Суб 09:05:45 141673588
>>1416458

То же самое можно элементарно делать в пробелами. напиши плагин к своему убогому редактору, который будет вместо N пробелов подряд выводить M.
Аноним 15/06/19 Суб 09:34:16 141674289
Вы из какого года вылезли, все споры на тему табы-пробелы уже давно решены с помощью стандарта PSR2 и инструмента PHP-CS-Fixer, который автоматически форматирует код согласно общепринятому стандарту: https://www.php-fig.org/psr/psr-2/#1-overview
Этому стандарту следуют все ведущие фреймворки вроде Symfony и Laravel, поэтому для единобразия вы тоже обязаны ему следовать, а не лезть со своим уставом в чужой монастырь, иначе будет бардак.
IDE поддерживают PHP-CS-Fixer, так что вы можете одним хоткеем форматировать код по стандарту. Обсуждать тут нечего.
Аноним 15/06/19 Суб 11:24:59 141676890
>>1416733
>>1416735
>напиши плагин
Ты надеюсь понимаешь как это ебануто звучит? Вместо целевой разработки я должен заниматься переделкой IDE.
Толсто в общем.
Аноним 15/06/19 Суб 11:28:25 141676991
>>1416733
>Напиши плагин к редактору, который будет при выводе заменять каждые N пробелов на M.
Уже есть такой плагин - табуляция.
Аноним 15/06/19 Суб 18:03:29 141690292
С Хероку кто-нибудь работал?
>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 МБ до максимума?
Аноним 15/06/19 Суб 18:37:18 141692093
Аноним 15/06/19 Суб 18:57:20 141692894
>>1416920
Всё, разобрался.
.user.ini, вроде, не работает, но ini_set("memory_limit", "1024M") - вполне.
Аноним 15/06/19 Суб 20:15:32 141695195
>>1416768

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

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

Ну и насколько я знаю, элита /pr/ использует очень гибко конфигурируемые редакторы, под которые можно писать макросы на элитном языке со скобочками, для них такой плагин сделать, наверно, дело десяти минут.
Аноним 16/06/19 Вск 03:21:02 141705597
Парни, есть странный вопрос. Как из php скрипта запросами можно на лету кардинально изменять структуру(!) таблицы в бд, если не считать ALTER TABLE.?
Аноним 16/06/19 Вск 03:31:04 141705798
>>1417055
Создать новую таблицу и импортировать туда инфу со старой, потом удалить старую и переименовать новую.
Аноним 16/06/19 Вск 11:41:26 141712399
>>1415604 (OP)
Замечательная шапка, ОП, ты молодец!

мимопроходил
Аноним 16/06/19 Вск 19:05:55 1417348100
Объясните, зачем php разработчику углубленное знание джаваскрипта, если он не фулстек? Почему так в шапке написано?
Аноним 16/06/19 Вск 21:33:37 1417413101
>>1417348
Всмысле углубленное. Там простые задачи, чтобы ты мог хоть что-то сделать
Аноним 16/06/19 Вск 22:12:59 1417434102
>>1417413
ну, этим же фронтендер должен заниматься?
Аноним 17/06/19 Пнд 00:48:19 1417476103
>>1417434
Ну не хочешь не учи
Аноним 17/06/19 Пнд 01:00:44 1417479104
>>1417057
Ну вообщем да, без копии бд никак не получается, целый день пытался чот измудрить. Если кому нибудь придет что в голову отпишите плз, я мониторю тред.
Аноним 17/06/19 Пнд 11:23:24 1417583105
Наверное вопрос не по теме треда, но всё равно спрошу. У меня был сервер на котором лампово вертелся блог WP и форум phpBB (каждый на своём домене) всё это было на php5 разделенное по своим "блокам" chroot+fpm
Сейчас обновил всё до php7.2 и получается очень странная херота, что в некотором проценте случаев php процесс ВП пытается прочитать файлы из системы форума, а форум иногда выдаёт 404 ошибку из-за отсутствия wp-config.php, то есть как-будто их chroot смешиваются, или процессы уходят не туда. При этом все конфиги уже трижды переписаны и в nginx и в php всё по эталонным инструкциям, да и поиск не выдаёт - что у кого-то были подобные проблемы. Что делать?
Аноним 17/06/19 Пнд 15:34:19 1417736106
Привет котаны. Я нуб, ток осваиваю PHP.
Что имею\умею - имеется содранный и чуть переделанный MVC фреймворк. Представление реализовано стандартно - html возвращаю шаблонами с разметкой. В принципе я это все понимаю в "принципе", ага.
Сейчас в учебных целях я на свой недофреймворк натягиваю бутстрап-шаблон, в шаблоне соответственно всякие поля для отправки почты и менюшки и прочее. Все это реализовано с помощью джейквери.
Так уж получилось что поверхностно знаю reactjs что то уровня todo могу сделать.
Вот что прошу подсказать:
Я читал о том, что в стандартную страницу можно вставлять отдельные компоненты react, и мне хочется не джейквери использовать в отдельных случаях, а попробовать воткнуть реакт-компонент. Тупо отдельную форму отправки почты.
Как это сделать? С помощью вэб-пака я собираю бандл реакта, в котором допустим код одного компонента, и вставляю его куда нужно в моем шаблоне? Но это я понимаю на столько в общем, что нихуя не понимаю.
У кого нибудь есть подобный опыт? Опыт простенького скрещивания реакта с пхп?
Аноним 17/06/19 Пнд 15:54:11 1417753107
>>1417736
О, Реакт. Моя любимая тема.
Была дом, и в доме срали в подвале. Управдома это заебало и что вы думаете он сделал? Может быть, он натыкал камер в подвале? Или он поставил биотуалет близко к подъезду? Нет, конечно. Он приклеил на подвал табличку Туалет! Вот это React-way.
Когда я увидел ёбаный JSX и охуительные функции render(), мои волосы встали нахуй дыбом. Я сам несколько раз лепил html в js, но я никогда не считал это чем-то хорошим. Я до последнего не мог поверить, что этот кусок кала - признанный на весь мир фреймворк.
Аноним 17/06/19 Пнд 16:08:20 1417761108
>>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, но я никогда не считал это чем-то хорошим.
у тебя есть выбор или джс в штмл или штмл в джс, не вижу существенной разницы
Аноним 17/06/19 Пнд 16:23:13 1417773109
>>1417761
>не вижу существенной разницы
А она есть. В случае, когда у тебя нет Реакта, тебе приходится в html время от времени скармливать готовым объектам <?=json_encode($array); ?> и всё. Реакт же сплетает в братских объятиях логику и представление.
Я сталкивался с Реактом на 5 проектах, и каждый раз меня не покидало ощущение, что я сделаю аналогичное говно на нативке страниц на 20, достаточное для конкретного проекта, и при этом избавлюсь от тонны проблем.
Vue вернул мне веру в человечество, это именно то, чем должен быть фронт фреймворк.
Аноним 17/06/19 Пнд 16:46:10 1417789110
>>1417736

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

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

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

Аноним 17/06/19 Пнд 17:38:40 1417821112
>>1417816
>А вообще в принципе есть разница на каком языке бекенд для SPA написан?
нет, нету
на ноде пишут т.к. можно все прямо в одной папке проекта писать - и сервер и клиентскую часть, кроме того она довольно быстрая, быстрее питона, пхп и руби
Аноним 17/06/19 Пнд 17:39:23 1417823113
>>1417816

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

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

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

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

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

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

Поищи список middleware к нужному фреймворку и посмотри, что там есть.
Аноним 18/06/19 Втр 00:10:40 1418072122
Пи Эйч Пи-и-и-и.
Аноним 18/06/19 Втр 01:16:44 1418082123
>>1418072
Почему очень много уважаемых и шарящих в этой теме людей на полном серьезе произносят PHP как ПЭ ХА ПЭ?
Это какой-то мем или им просто похуй?
Аноним 18/06/19 Втр 01:51:17 1418085124
>>1415604 (OP)
На самом деле, сейчас, во время, когда существует бешеное количество информации, от которой Сократ сошел бы с ума, лол, главная проблема - 95% инфы - просто лажа, и нужно искать среди терабайтов данных действительно стоящий материал. А это все из-за того, что каждый мудак, который умеет находить последовательность чисел фибоначчи, считает себя супер-пупер гением, и решает запилить обучающий, мать его, контент. Вот и выходит, что интернет - огромная помойка, сайты - лажа, инфа - блевотина бездарей. И чтобы среди этого обезьянника встать на путь становления человеком, нужно понять, что невозможно выучить все, только лишь улучшая понимание каждого топика ежедневно, запоминая и анализируя теорию, практикуя навый код, решая появляющиеся проблемы, мы можем развиваться. Поэтому, ребята, просто удалите все, что не открывали в течении последнего месяца, оно вам не нужно, задайте вопрос себе: "Чего я хочу? Кто я сейчас и что могу?, возьмите одну тему и изучайте ее. Это же структурный подход, пользуйтесь им. Удачи. Кто еще говорил, что это наука, и она не может быть простой и понятной? Кто говорит, что программировать легко - бездари, лжецы, продажники, и прочая челядь, которая срет в уши. Самое молодое направление в науке, как оно может быть простым?
Аноним 18/06/19 Втр 10:10:53 1418149125
>>1418082
Можно говорить ЭР НЭ ЭР
Аноним 18/06/19 Втр 10:21:19 1418150126
Аноним 18/06/19 Втр 11:29:15 1418177127
Еще раз хочу сказать спасибо ОПу и всем пищущим, вы заняты богоугодным делом
Аноним 18/06/19 Втр 15:29:40 1418278128
Мда, я думал джаваскрипт это дерьмовый язык. Теперь я изучаю пхп и понимаю, что такое настоящий дерьмовый язык. А джаваскрипт просто запутанный.
Надеюсь эти недостатки как-то решаются, с помощью фрейворков или еще чего, или просто с ними не сталкиваешься по работе. А то я не знаю как я буду с этим работать
Аноним 18/06/19 Втр 16:33:24 1418304129
>>1418278
Я тебе как программист html заявляю
<?php echo"<div>да ты охуил чтоли!</div>" ?>
Аноним 18/06/19 Втр 17:01:39 1418313130
>>1418304
<div><?= 'Да ты охуел, чтоли?!' ?></div>
Аноним 18/06/19 Втр 17:03:40 1418314131
Аноним 18/06/19 Втр 18:26:00 1418390132
>>1418278
Все так.
И да, ца у этого пыхыпыговна соответствующая - тупое, совершенно безмозглое быдло.
Семенящий дебил по кличке ОП >>1418177 - например.
Аноним 18/06/19 Втр 20:06:14 1418468133
>>1418278
Нормальный язык PHP. И что крайне важно - заебенно подходит под свою задачу. Комьюнити годное. И доки отличные. В принципе для вэба среднего масштаба руки лучше ничего нет.
Я сейчас с нодой решил поебаться, но так как подзабыл JS ебусь с прототипами, а после буду ебаться с evemtEmmiter что бы понять что откуда в этом блядстве наследуется.
Аноним 18/06/19 Втр 20:08:06 1418469134
>>1418468
Классы в пхп гораздо симпатичнее, и это нормальные классы, с нормальной инкапсуляцией.
Аноним 18/06/19 Втр 22:19:35 1418541135
Screenshot 2019[...].png (77Кб, 1190x246)
1190x246
Screenshot 2019[...].png (53Кб, 731x449)
731x449
Screenshot 2019[...].png (89Кб, 731x571)
731x571
Screenshot 2019[...].png (105Кб, 1115x585)
1115x585
Анончик помоги, не выполняется запрос. В php вторую неделю.
Работаю php+apache+mysql +phpmyadmin
Сейчас еще кину скрин формы в index.php..
Два дня ебусь, гугл не помог. Молю, с меня нефть
Аноним 18/06/19 Втр 22:24:04 1418543136
Screenshot 2019[...].png (67Кб, 989x215)
989x215
>>1418541
форму переменной в запросе '{$login}' по-другому тоже писал '$login' дело не в нем.
form.
Аноним 18/06/19 Втр 22:32:01 1418545137
>>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.
Аноним 18/06/19 Втр 22:33:43 1418547138
>>1418541

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

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

error_reporting = E_ALL

вместо того, что там написано, чтобы не скрывать никакие ошибки.
Аноним 18/06/19 Втр 23:43:52 1418587140
>>1418545
>>1418547
>>1418551
Короче прикинь, я понял ошибку.
Оказывается в запросе , к примеру (INSERT INTO `users` (`id`, `login`, `password`) VALUES ('55', 'fdf', 'fdf'));
у users, id, login, password ДОЛЖНЫ СТОЯТЬ другие ковычки ```
А в остальном обычные ''
Воот, как пофиксить эту ебалу? Что бы везде одинаковые ставить стандартные одинарные ковычки?
Может это потому что я на маке?
Аноним 18/06/19 Втр 23:45:40 1418589141
Аноним 19/06/19 Срд 01:20:58 1418616142
>>1418541
У тебя опечатка в слове $conection енжой йор динамическая типизация
Аноним 19/06/19 Срд 06:54:07 1418641143
>>1418547
>Ой, вижу
>>1418587
>Короче прикинь
Пиздец два педика.
Аноним 19/06/19 Срд 10:08:17 1418683144
Аноним 19/06/19 Срд 10:51:37 1418693145
>>1418587

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

http://www.mysql.ru/docs/man/Legal_names.html
Аноним 19/06/19 Срд 12:25:41 1418715146
>>1418641
Ща бы доебываться до слов..
Аноним 19/06/19 Срд 17:54:49 1418899147
>>1418683
А чем оно лучше API mysqli?
Аноним 19/06/19 Срд 18:09:29 1418904148
>>1418899
PDO более универсален - с разными базами можно работать.
Аноним 19/06/19 Срд 18:13:50 1418907149
Начинаю изучать PHP. Прочитал, что сейчас MySQL - неактуально и стоит переходить на PDO. Тру?
Аноним 19/06/19 Срд 19:26:37 1418938150
>>1418904
А какие могут пригодиться кроме mysql
Аноним 19/06/19 Срд 19:33:23 1418944151
Аноним 19/06/19 Срд 20:05:41 1418967152
Вкатываюсь в пхп. Прочитал шапку фул. Нашел 2 книги, но не сказал бы, что они прям для новичков (их описание говорит тоже об этом). Посоветуйте что-то объемное, охватывающее большинство ключевых моментов, но при этом понятное
Аноним 19/06/19 Срд 20:45:55 1418995153
Аноним 19/06/19 Срд 20:47:41 1418997154
>>1418967
>Прочитал шапку
>Нашел 2 книги
Ты в библиотеку вкатываешься или в разработку? Толку от чтения без практики?
Аноним 20/06/19 Чтв 02:12:38 1419144155
>>1418967
Я бы вообще посоветовал на ютубе посмотреть туторы, для базиса.
В книге все слишком подробно описана каждая вещь поэтому чтоб в целом узнать структуру придется прочесть 500+ страниц
Аноним 20/06/19 Чтв 02:13:43 1419145156
>>1418997
Нужно больше книжек богу книжек
Аноним 20/06/19 Чтв 04:01:59 1419153157
>>1418967
>Посоветуйте что-то объемное, охватывающее большинство ключевых моментов, но при этом понятное
Мне понравилась местная задачка со студентами - практически все аспекты веб-разработки там усвоить придётся. Лучше всяких книжек.
Аноним 20/06/19 Чтв 04:02:36 1419154158
>>1418967
Как вообще можно учить язык без выполнения какой-то задачи я хз.
Аноним 20/06/19 Чтв 09:08:23 1419207159
Route::view в ларе отвечает за указание на файл со страничкой?
Аноним 20/06/19 Чтв 14:42:20 1419407160
Аноны, есть тут кто то кто на Node.js пишет? Я увлекся немного.
Хочу что то аналогичное моему php-фреймворку запилить - то есть роутер парсит url, и вызывает соответствующие контроллеры и экшены.
В сети все туторы на express, там это все несколько иначе. Впрочем обработчик запроса в express поддерживает регулярки. Но в JS нет аналога preg_match. В JS нет автозагрузки классов хотя может она не нужна? Ведь класс загружается однажды, и висит в памяти, так?
Сейчас хочу что то типа MVC фреймворка на ноде сделать. Что бы подгружались классы и вызывались экшены.
Не в JS тред пишу по очевидным причинам - они там учатся css динамически менять.

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

Аноним 20/06/19 Чтв 16:18:42 1419442161
>>1419153
Да, хорошая задачка. А можете порекомендовать какой-нибудь видеоурок, короткий, но дающий все базовые навыки веб разработки? Можно без фронта
Аноним 20/06/19 Чтв 16:18:51 1419443162
>>1419407
>В JS нет автозагрузки классов
Так язык был придуман специально для динамической смены css. Зачем ему это?
Хочешь современных фич - используй тайп скрипт.
Аноним 20/06/19 Чтв 16:35:46 1419455163
>>1419442
Нет такого урока, да и быть не может. Поначалу полезно всё подряд смотреть, пока сам не подберёшь себе нужный формат и курс.
Аноним 20/06/19 Чтв 19:55:23 1419523164
Screenshot 2019[...].png (198Кб, 1221x741)
1221x741
Почему ошибки в php такие некорректные?
Пишет ,что скобка лишняя:
Parse error: syntax error, unexpected ';' in /Users/akismac/Sites/bar/includes/registration.inc.php on line 19

А по факту все ок
Аноним 20/06/19 Чтв 20:09:43 1419540165
>>1419523
Не лишняя а неожиданная, значит что то не дописано раньше.
Ты одну ) потерял в 17 строке.
Аноним 20/06/19 Чтв 20:13:21 1419546166
>>1419523
Какой милый код, анон
Смотрю и глаза радуются
Аноним 20/06/19 Чтв 20:19:27 1419552167
>>1419523
что за тема подсветки синтаксиса?
Аноним 20/06/19 Чтв 20:35:49 1419562168
>>1419552
Стандартная тема Саблайма.

>>1419546
Чего в нём милого? Обычный джунский код.
Аноним 20/06/19 Чтв 20:36:58 1419564169
Аноним 20/06/19 Чтв 21:00:51 1419576170
>>1419562
>Обычный джунский код.
Это ты так думаешь
>Чего в нём милого?
У тебя просто нет чувства прекрасного
Аноним 20/06/19 Чтв 21:12:43 1419581171
>>1419576
>Это ты так думаешь
Ну да - я, не ты же. С чего бы мне твои мысли высказывать?

>У тебя просто нет чувства прекрасного
Ты красивее просто ничего не видел.
Аноним 20/06/19 Чтв 21:14:31 1419582172
>>1419581
>Ты красивее просто ничего не видел.
Нет, просто я умею находить прекрасное и красивое в мелочах, вроде твоего "обычного джунского кода".
Аноним 20/06/19 Чтв 21:19:16 1419587173
>>1419582
В каких ещё мелочах? Там даже программирования нет, как явления. Ты просто дёргаешь стандартный функционал - ни обстракций не завезли, ни знаний технологии. Это даже не джун, а скрипт-кидди.
Ещё и семёнишь.
Аноним 20/06/19 Чтв 21:24:45 1419588174
>>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.
Аноним 20/06/19 Чтв 21:55:27 1419598175
Аноним 20/06/19 Чтв 21:59:57 1419601176
>>1419587
> ни обстракций не завезли
Почему все "кодеры" 21 века ,любят напыщенные абстракции и считают это понтом? Причем в больших колличествам.
Вас что всех в универе по одинаковым системам образования прогоняли? Представь себе, раньше вообще небыло ООП, люди писали функциональщину. Ооп просто мода, часто ее пихают туда где от нее нет никакого смысла.
Аноним 20/06/19 Чтв 22:06:17 1419602177
>>1419601
>функциональщину.
процедурщину,историк
Аноним 20/06/19 Чтв 22:11:07 1419608178
>>1419601
>любят напыщенные абстракции и считают это понтом?
Не понт, а необходимость. Ты бы понял это, если бы не простейшие скрипты писал, а софтверно инженерил.
Не дай бох тебе большой проект - утонешь в своём же говне из копипасты и тысяч if - else.

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

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

>пихают туда где от нее нет никакого смысла
Надо тебя спрашивать куда чего пихать?
Аноним 20/06/19 Чтв 22:37:52 1419622179
GitHub Аноним 20/06/19 Чтв 23:13:24 1419631180
Как оформить свой блядский гитхаб, чтоб он был не всратым портфолио?

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

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

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

Пиздос
Аноним 21/06/19 Птн 00:08:20 1419661184
>>1419638
ЗАЕБИСЬ!!!!!!!!!!!!!!!!! У МЕНЯ ВСЕ ПОЛУЧИЛОСЬ УРААААААААААААААААААА
ОН БОЛЬШЕ НЕ БЕСКОНЕЧНЫЙ
Аноним 21/06/19 Птн 01:39:49 1419697185
>>1419523

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

Также, есть более удобный алгоритм обработки форм, позволяющий исключить лишние редиректы: https://github.com/codedokode/pasta/blob/master/forms.md
Аноним 21/06/19 Птн 01:44:08 1419700186
>>1419631

Во-первых, заполни информацию о себе. Во-вторых, там вроде есть pinned repositories, которые можно закрепить вверху списка. В-третьих, весь твой гитхаб изучать все равно никто не будет, так как на это нет времени.
Аноним 21/06/19 Птн 01:53:27 1419702187
Аноним 21/06/19 Птн 01:54:50 1419703188
Аноним 21/06/19 Птн 01:57:06 1419704189
Аноним 21/06/19 Птн 01:59:01 1419705190
>>1415604 (OP)
> с формами, MVC, git, composer, JS,
А зачем php вообще нужен если учить JS? разве Дс не может полностью заменить php?
Аноним 21/06/19 Птн 02:00:03 1419706191
Аноним 21/06/19 Птн 02:18:58 1419709192
>>1419706
Ну расскажи, в чем я неправ
Аноним 21/06/19 Птн 02:32:32 1419711193
>>1419634
Объекты более гибкие чем функции. Их понимать проще, описывать и сочетать. Тупо нагляднее получается.
Аноним 21/06/19 Птн 02:39:37 1419712194
>>1419703
На Боброчане наверняка запилили. В их стиле.
Аноним 21/06/19 Птн 02:41:09 1419713195
>>1419705
>разве Дс не может полностью заменить php
Ассемблер может заменить и то и другое.
Вкатывайся в ассемблер.
А лучше вообще сразу байт-код ебаш паяльником.
Аноним 21/06/19 Птн 08:55:15 1419759196
Аноним 21/06/19 Птн 11:10:20 1419816197
>>1419588
>>Не понимаю, что ты там велосипедить собрался.
Да я в принципе согласен с тобой. ПХП удобнее. Ноду заюзал что бы просто с иного ракурса взглянуть на разработку в вэб.
Сейчас вот задумался - как реализовать свою цепочку мидлвэйров в пхп, в моем фреймворке. Понятно что не ради продакшена, а ради тупо интереса.

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

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

Аноним 21/06/19 Птн 11:13:46 1419817198
>>1419713
>байт-код
>не машинный
Виртуальным паяльником?
Аноним 21/06/19 Птн 11:59:40 1419854199
>>1419713
Очень смешно, я ведь серьезно спросил
Аноним 21/06/19 Птн 12:12:53 1419861200
>>1419854
Ты хуйню спросил. Ответили тебе ровно тем же - пиши на ассемблере, ведь он и пхп и жс заменить может. Что тебе не понятно?
Аноним 21/06/19 Птн 12:25:05 1419866201
пхп не нужен
Аноним 21/06/19 Птн 12:29:13 1419867202
Аноним 21/06/19 Птн 13:00:47 1419888203
>>1419866
Всё, аноны, сворачиваемся - анон сказал, что пхп не нужен. Закрываем лавочку.
Аноним 21/06/19 Птн 13:23:56 1419894204
>>1419888
для новых проектов
Аноним 21/06/19 Птн 13:24:53 1419895205
Аноним 21/06/19 Птн 13:25:34 1419896206
Аноним 21/06/19 Птн 13:26:31 1419898207
Аноним 21/06/19 Птн 13:32:21 1419902208
как в ларавеле заполнить таблицу данными?
Аноним 21/06/19 Птн 13:46:12 1419909209
Хочу погрузиться в жавускрипт с головой, но у меня всё желание отбивает местная фронтентд-гопота. Создаётся ощущение, что ЦА этого языка - токсичные школьники и прочий залётный ИТ-скам на хайпе.
Это неправильно всё конечно, но интерес здорово убивает.
Аноним 21/06/19 Птн 13:48:59 1419910210
>>1419902
блять чел реально помощи просит, он еще молод и глуп и не видал таких залуп, ептя..ну ответить че переломишься?Себя сначала вспомни как ты начинал, или ты прям с пеленок супер пупер кодером был? ага вставил дискетку в лоб с надписью ООЛ и все охереный сец
Аноним 21/06/19 Птн 13:50:05 1419911211
>>1419910
ты не ошибся постом?
Аноним 21/06/19 Птн 13:51:53 1419912212
Аноним 21/06/19 Птн 14:02:55 1419918213
Аноним 21/06/19 Птн 14:04:21 1419919214
>>1419918
ты хауди хо пересмотрел что ли? лечись
Аноним 21/06/19 Птн 14:09:39 1419923215
>>1419919
Тебе тут никто ничего расжёвывать не будет, пионер. Тем более такому наглому говну как ты.
Если ты этого ждал, то можешь выкатиться из треда вместе со своим говноблоггером.
Аноним 21/06/19 Птн 14:12:50 1419924216
>>1419923
наглое говно это ты и твой дружок хауди хо, которые на малейшую просьбу о помощи обкладывают хуями и посылают в гугл
но вообще пардон, меня настолько взбесили эти слова нашет "нафиг не спрашивай у меня, матерого программера, вон, гуглить учись" что я автоматом выдал на гора, сам не понял как это у меня получилось..мдя, а в школе вроде 4 по дойчу стояла, а тут прям как чистый берлинец выдал, сам в шоке.
Аноним 21/06/19 Птн 14:15:39 1419926217
>>1419924
>посылают в гугл
Первое, что учиться любой айтишник, будь то хоть хелпдеском, хоть админом, хоть кодером - ходить в гугл.
Иди в гугл и не задавай тупых вопросов в ИТТ треде.
Аноним 21/06/19 Птн 14:17:52 1419928218
>>1419924
У Ларавеля отличная документация. Ты от треда чего вообще хочешь? Сходи и сам почитай.
Аноним 21/06/19 Птн 14:20:09 1419929219
>>1419928
я бы не сказал,что его док охуенно подходит новичку
Аноним 21/06/19 Птн 14:27:17 1419933220
>>1419929
Значит тебе ещё рано такие вещи трогать.
О том тебе и говорять - расжёвывать никто не будет. Самому к этому идти надо.
Аноним 21/06/19 Птн 14:29:07 1419934221
15328630530290.png (234Кб, 512x512)
512x512
>>1419933
>Это тред и для начинающих
Аноним 21/06/19 Птн 14:32:43 1419936222
>>1419934
Ларавель не для начинающих.
Учи шапку треда - по ней тебе ответят.
Аноним 21/06/19 Птн 14:33:59 1419937223
>>1419936
ты мне предлагаешь начать с говно слима,там доки вообще пиздец
Аноним 21/06/19 Птн 14:35:23 1419939224
>>1419937
Откуда тебе знать какая там документация, если ты в ней не разбираешься?
Учи матчасть и не выёбывайся.
Аноним 21/06/19 Птн 14:37:55 1419940225
Аноним 21/06/19 Птн 14:40:37 1419942226
>>1419940
Сообщество кодеров вообще очень токсичное.
Аноним 21/06/19 Птн 14:49:43 1419948227
Аноним 21/06/19 Птн 14:52:38 1419949228
>>1419940
Пришёл васян - расскажите ему быстро как работать с базами на Ларе. Сам не знает нихуя и учить не хочет. Бросается говном в очевидные советы.
Ну ты и дно, дружок.
Аноним 21/06/19 Птн 14:54:07 1419951229
Аноним 21/06/19 Птн 14:57:17 1419953230
14813168187240.jpg (50Кб, 500x500)
500x500
няши,с чего такой бугурт?нужно быть добрее и поставить неофита на путь истинный...человеку нужно помоч...
Аноним 21/06/19 Птн 15:03:25 1419954231
>>1419953
>нужно быть добрее
>человеку нужно помоч
Кому?
Мне не нужно.
Тебе нужно - ты и помогай.
Аноним 21/06/19 Птн 15:19:39 1419963232
>>1419954
пхп плохо знаю,не мое направление
Аноним 21/06/19 Птн 15:21:44 1419964233
>>1419963
>пхп плохо знаю
Малаца, все правильно делаешь.
Аноним 21/06/19 Птн 15:45:16 1419985234
Поэтому я предлагаю банить школьников - пускай в ридонли посидят. Иначе бессмысленный срач разводят.
Аноним 21/06/19 Птн 15:48:58 1419987235
>>1419985
Это не развод срача, это повышение скорости постинга.
Чекай, наш тред в топе.
Аноним 21/06/19 Птн 15:54:42 1419993236
>>1419985
>я предлагаю банить школьников
Лучше ебать - а они и не против :3
Аноним 21/06/19 Птн 16:06:09 1420003237
так все таки,читать раздел сидинг?
Аноним 21/06/19 Птн 21:33:53 1420189238
Что с тредом случилось? Зачем вы этому жирному говну отвечаете?
Аноним 21/06/19 Птн 21:35:12 1420190239
Аноним 21/06/19 Птн 21:59:43 1420204240
>>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-приложения
Аноним 22/06/19 Суб 01:05:23 1420252241
node.png (1Кб, 176x52)
176x52
php.png (1Кб, 181x50)
181x50
90.png (3Кб, 295x86)
295x86
Сап, пэхапешники. Делаю курсач. Вопрос такой: есть база данных, в ней таблица с изображениями это требование курсача, как и использование ms sql. Грузятся они туда норм, через пхп, а выгружаются - нет, только частично. https://pastebin.com/NfyXVwxs - скрипт выдачи изображения. Пикрил структура базы и размер изображений при выгрузке через php и node.js (под нодой все хорошо). Это какое-то ограничение mssql_fetch_row? Почему это не гуглится?
Аноним 22/06/19 Суб 02:21:42 1420261242
>>1420252
Разве хранят файлы в базе? Не проще их на диск складывать, а в базу только имена посылать?
Аноним 22/06/19 Суб 02:26:34 1420262243
>>1420261
Я понимаю, что это не лучшая практика.
> База данных должна состоять как минимум из пяти таблиц, причём в таблицах должны быть предусмотрены поля для хранения данных в текстовом формате, формате даты и бинарном формате
А на словах препод сказал, что хранить надо изображения
Аноним 22/06/19 Суб 02:31:14 1420265244
>>1420262
Где курсы-то проходишь? Бесплатно надеюсь?
Аноним 22/06/19 Суб 02:32:34 1420266245
>>1420262
>препод сказал, что хранить надо изображения
База Данных оптимизирована на работу с данными, а файловая система сервера, внезапно, на работу с файлами.
Ты неправильно инструменты используешь, отсюда и твои проблемы.
Аноним 22/06/19 Суб 02:33:12 1420267246
>>1420265
Вышка в регионе, бюджет, 2 курс
Аноним 22/06/19 Суб 02:34:54 1420268247
>>1420266
Так это вообще реально обойти или проще ограничить максимальный размер файла миллионом байт и забить?
Аноним 22/06/19 Суб 02:40:18 1420270248
>>1420268
Хз я с таким извращением не встречался. Ищи в доках.
Аноним 22/06/19 Суб 02:42:19 1420271249
>>1420267
Преподов, наверное, набирали как положено - что с вышкой был, и на зарплату 15 тысяч.
Аноним 22/06/19 Суб 04:19:36 1420282250
>>1420190
Очень красивый, стройный код

мимопроходил
Аноним 22/06/19 Суб 07:23:23 1420298251
1.png (34Кб, 899x433)
899x433
2.png (14Кб, 658x231)
658x231
>>1415604 (OP)
Изящнейшее решение задачи про таблицу умножения.
Покажу своим друганам - они обзавидуются.
Аноним 22/06/19 Суб 07:36:15 1420300252
>>1420252
Крч, мало ли кому интересно. Почему есть ограничение в миллион байт я так и не нашел и решил проблему разбиением картинки на части и отправкой по частям через хранимую процедуру.
Аноним 22/06/19 Суб 11:42:12 1420359253
>>1420252
У меня была похожая проблема с системой скуд, не мог целиком вытянуть из её базы картинки.
Что именно я тогда сделал не помню, но скорее всего тебе подойдет то что я нашел по первой ссылке на SO в гугле по запросу "mssql partial image":
mssql_query('SET TEXTSIZE 10000000'); // число в байтах нужно подбирать под твой ожидаемый размер картинок, который так или иначе должен быть ограничен твоими скриптами

И да тебе верно подсказывают что так делать _не_правильно_
Аноним 22/06/19 Суб 12:30:59 1420372254
>>1420300
>мало ли кому интересно
Мне любопытно было.
Аноним 22/06/19 Суб 12:40:02 1420374255
Саблайм — неплохой редактор, чтобы открыть любой код на любом языке и просмотреть его, мб немного подправить и даже неплохой инструмент для верстки, но вот когда необходимо сделать реальный проект...необходимы инструменты несколько другого уровня. В теории, можно использовать блокнот/саблайм для написания кода на java, но это станет в конечном итоге адом)
Среда разработки — это...среда) Название говорит само за себя. В ней есть все, что нужно + большие возможности кастомизации. Среда сама проверяет твой код, говорит замечания по кодстайлу (можно создать самому или скачать какой-то стандарт), говорит замечания по избыточности, деплоит на сервер, имеет отладчик и дебагер, удобную визуализацию систем контроля версий...и очень много другого в одной программе с единой четкой логикой) Приходить к среде нужно тогда, когда начинаешь понимать, что хочется чего-то большего. Если саблайм кажется идеальным, то пока что не стоит его менять, как мне кажется. Это должно прийти со временем.
Все сказанное выше — чисто ИМХО и может быть ошибочным)
Аноним 22/06/19 Суб 12:47:34 1420375256
>>1420374
Надо ещё учесть, что профессиональные инструменты не бесплатны. Разве что студентам дают, но толку от этого, да и студенты у нас, вон, файлы целиком из базы тянут. С таким обучением никакая среда не спасёт.
Остальные - не студенты и нужно ебаться с кряками-мокрописьками.
Лучше уже фришные ИДЕ тогда.
Аноним 22/06/19 Суб 13:00:34 1420377257
>>1420375
Молоток тоже денег стоит. Давайте будем гвозди забивать фришным булыжником!
Аноним 22/06/19 Суб 13:02:36 1420379258
orig.jpg (45Кб, 736x736)
736x736
>>1420375
>Надо ещё учесть, что профессиональные инструменты не бесплатны.
Аноним 22/06/19 Суб 13:14:05 1420383259
>>1420375
>Надо ещё учесть, что профессиональные инструменты не бесплатны.
В чем твоя проблема?
Аноним 22/06/19 Суб 17:04:26 1420456260
>>1420190
Очень слабое ООП. Объекты ради объектов, процедурщина на статических классах. Больше по теме читай.

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

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

Схалтурил по архитектуре неслабо - многое проигнорировал. На выходе приложение скорее напоминающее Вордпресс, чем хоть какой-то фреймворк.
Аноним 22/06/19 Суб 17:11:03 1420459261
Аноним 22/06/19 Суб 17:15:26 1420461262
15073279724903.png (405Кб, 604x453)
604x453
>>1420459
Спасибо, пошел читать.
Аноним 22/06/19 Суб 19:56:13 1420510263
>>1420459
Да ты что советуешь-то? Инлайн пхп депрекейтед. Почитай стандарты. Шаблонизаторы и только. Инлайн код залупа полная.
Аноним 22/06/19 Суб 20:05:48 1420513264
>>1420510
>Инлайн пхп депрекейтед
Пруфца бы.
Аноним 22/06/19 Суб 20:28:08 1420524265
Аноним 22/06/19 Суб 20:33:08 1420528266
>>1420524
Найс тролишь, братиш
Аноним 22/06/19 Суб 20:40:50 1420532267
>>1420528
В чём троллинг? Конструкция <?= применима если только в шаблонизаторе. Стандарт явно использовать только <?php и <? теги.
Аноним 22/06/19 Суб 20:48:28 1420535268
Написал функции count и array_values.
Вроде все выполняется, но меня смущает, что я воткнул в первый цикл какую-то левую переменную $k, чтобы foreach работал. Наверняка есть какой-то хитрый способ обойтись без нее.
ЧЯДНТ?
https://ideone.com/NHXec4
Аноним 22/06/19 Суб 21:22:22 1420569269
>>1420532
Если бы там еще что-то подобное было написано.
Аноним 22/06/19 Суб 22:10:20 1420603270
>>1420524
Выдержку приведи со сслыкой.
А пока - безпруфный вскукарек.
Аноним 22/06/19 Суб 23:02:12 1420633271
Аноним 23/06/19 Вск 01:13:03 1420682272
>>1420510

Это и есть встроенный в PHP шаблонизатор. Ты бы на исходный код посмотрел. Для вывода таблицы умножения не требуется устанавливать фреймворк.
Аноним 23/06/19 Вск 01:40:39 1420692273
>>1420456
>процедурщина на статических классах
Понял

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

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

>Схалтурил по архитектуре неслабо - многое проигнорировал.
В чем схалтурил? Я почитал на гите, хабре статьи, посмотрел урок на ютюбе. Сделал как написано, разделил на Модель, Вид, Контроллер. У каждой страницы своя модель, свой контроллер и html шаблон. Так же есть роутер и фронт контроллер. Что еще реализовать то нужно было?
Аноним 23/06/19 Вск 06:48:06 1420751274
>>1420633
Хуй знает.
Пойду думать, как это исправить.
Аноним 23/06/19 Вск 09:27:15 1420769275
Аноним 23/06/19 Вск 10:45:25 1420799276
>>1420682
Но ведь для вывода таблицы умножения и инлайн рнр код не нужно использовать.

Инлайн рнр бэд практис. Запомните это. Где-то в своих проектах для себя вы безусловно вольны использовать, что вашей душе угодно.
Аноним 23/06/19 Вск 10:55:33 1420803277
>>1420799
> Инлайн рнр бэд практис. Запомните это.
Звучит аргументировано.
Аноним 23/06/19 Вск 10:57:33 1420804278
>>1420803
Я выше писал уже. Читайте psr-2. Там всё сказано.
Аноним 23/06/19 Вск 11:00:27 1420805279
>>1420804
Это вчера было найс троллингом. Сегодня это просто тупость.
Аноним 23/06/19 Вск 11:00:48 1420806280
Аноним 23/06/19 Вск 14:25:08 1420886281
>>1420804
>Читайте psr-2
Ты сам его не читал.
Аноним 23/06/19 Вск 14:56:45 1420892282
за что это отвечает?Route::resource()
Аноним 23/06/19 Вск 18:45:08 1421010283
>>1420769
foreach ($arr as $k => $v)

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

foreach ($arr as $v)

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

>>1421018
Чтобы научиться писать собственные функции. Прохожу слитый курс от WebForMySelf.
Аноним 23/06/19 Вск 21:23:03 1421178286
imagine.jpg (40Кб, 368x604)
368x604
$kek = 'Привет, мир!';
echo strlen($kek) / 2;
Аноним 23/06/19 Вск 21:30:19 1421190287
>>1421178
Для кирилицы надо использовать mb_strlen
Аноним 23/06/19 Вск 22:51:50 1421257288
yoba.png (191Кб, 512x512)
512x512
Аноним 24/06/19 Пнд 15:07:38 1421536289
Так, ну-ка быстро взяли меня работать за еду! Реще блеать!
Аноним 24/06/19 Пнд 18:10:29 1421620290
mcrYwpbliZM.jpg (127Кб, 768x576)
768x576
Анончик спасай. Завтра иду на собес, где можно коротко и ясно почитать про ООП, чтоб сумечь отбиться по вопросам ООП.
Знаю, только что это классы ,с помошю которых можно строить структурированные данные , внутри которых всякие плюшки, функции. А потом это все передавать как объект. Знаю ,что это удобно, знаю синтаксис (не оч хорошо).
Ну или своими словами скажите, плиз. С меня тонны нефти (красивые картиночки)
Аноним 24/06/19 Пнд 18:16:50 1421621291
>>1421620
И вот такие еще вопросы

-общее понимание шаблонов проектирования
-общее понимание типов архитектур программных решений (десктоп, клиент-сервер, многозвенные)
Я конечно понимаю суть этих вопросов, но мне кажется что будут задавать формальные вопросы с названиями таких шаблонов. А я не читал книжек по типу "паттерны проэктирования"
Аноним 24/06/19 Пнд 21:33:07 1421720292
Скажите, почему считается, что у php низкий потолок? Зарплаты у сеньоров примерно такие же, как и у других языков.
Аноним 24/06/19 Пнд 21:54:10 1421728293
>>1421720
Наверное из-за индусов. Стало дофига кодеров маленького и среднего уровня. Они естественно стали меньше получать.
А сеньеров никогда небыло много, они в любом языке стоят дорого
Аноним 24/06/19 Пнд 22:05:10 1421741294
в 2019г пхп применяется для стартапов?
Аноним 24/06/19 Пнд 22:12:08 1421746295
>>1421741
Что за сратапы? Он применяется только криворукими заднеприводными ("backend") обезьянами для своих говносайтиков.
24/06/19 Пнд 22:36:51 1421751296
Аноним 25/06/19 Втр 06:27:10 1421825297
>>1421746
сайты сложнее бложика
Аноним 25/06/19 Втр 12:40:31 1421957298
Для фриланса (в стиле "я, я, можно я, можно я сделаю Вам это за 100 рублей или вообще бесплатно?!" или удалёнки (несбыточная мечта) в 2k19 году пэхэпэ с его традиционными причиндалами оптимальный вариант или стоит рассмотреть другие варианты?
Аноним 25/06/19 Втр 12:59:46 1421976299
>>1421621
>-общее понимание шаблонов проектирования
Их только при хорошем понимании самого ООП можно разбирать. И вообще - смотри в википедии.

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

>будут задавать формальные вопросы
Нет, не формальные - тебя на знание стека будут проверять.
Аноним 25/06/19 Втр 13:02:40 1421979300
>>1421746
>>1421957
Здорово наверное быть унылым говном и вбрасывать толстоту там, где каждый знает больше тебя?
Аноним 25/06/19 Втр 13:12:21 1421982301
>>1421979
>пыхыпыговноеды
>каждый знает
Лучшая шутка месяца, однозначно.
Аноним 25/06/19 Втр 15:11:57 1422037302
кроме легаси и говно визиток,его где нибудь еще используют?
Аноним 25/06/19 Втр 15:14:19 1422038303
>>1421976
>Нет, не формальные - тебя на знание стека будут проверять.
т.е?
Аноним 25/06/19 Втр 15:23:55 1422042304
Аноним 25/06/19 Втр 15:49:00 1422052305
Аноним 25/06/19 Втр 17:33:59 1422096306
<?php
echo intval(11, 8); //11
echo intval('11', 8); //9

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

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

При чём, это ведь не ошибка даже, в мануале так и есть!
Аноним 25/06/19 Втр 18:05:01 1422102307
>>1422096
>в мануале так и есть!
Мануал надо целиком читать
>The base parameter has no effect unless the var parameter is a string.
Аноним 25/06/19 Втр 18:06:27 1422103308
>>1422102
Да, Антон, спасибо, я просто привык, что после примеров уже нет смысла скроллить.
Аноним 25/06/19 Втр 19:34:14 1422155309
>>1422102
>The base parameter has no effect unless the var parameter is a string.
АХАХАХАХАХАХА
Вот это, блядь, дизайн интерфейса!
Вот это, блядь, архитектура!
Ух, бля!
Аноним 25/06/19 Втр 20:01:20 1422179310
Аноним 25/06/19 Втр 23:19:53 1422266311
>>1422179
У меня вполне серьезный вопрос:
а как обосновывается использование пхп в новом проекте?
Я могу понять, что если есть легаси, то никуда ты не денешься.
Но, вот, пожалте, надо сделать новую ебу. И принимается решение - будем делать на пхп.
Как это решение обосновывается?
Или теперь начальник-смузихлеб не ебет себе мозги такими вопросами, а просто отстегивает бабло?
Аноним 26/06/19 Срд 00:11:50 1422280312
>>1422266
Стоимость. В вебе обычно подразумевается какая никакая поддержка проекта. Нужно вносить какие-то изменения, правки. Пхпешники стоят мало и их как говна. В любой момент можно задешево кого-то найти на проект. А если сделать на чем-то другом то можно натолкнуться на ситуацию когда придется отстегивать кучу бабла на дорогого специалиста. Любой разбирающийся в ситуации заказчик будет заказывать разроботку на пхп чтобы потом не ебаться с поиском специалистов для доработки/поддержки.

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

Но спасибо за ответ.
Аноним 26/06/19 Срд 06:30:41 1422315314
>>1422293
а чем это отличается от разраб на питоне?
Аноним 26/06/19 Срд 08:36:11 1422335315
Аноним 26/06/19 Срд 13:33:40 1422458316
>>1422293
ну пажалуйста, ну выбери пхп!
Аноним 26/06/19 Срд 13:50:00 1422471317
>>1422335
То есть все разработчики на Питоне разрабатывают одинаково хорошо? И там нельзя принципиально сделать через жопу?
Аноним 26/06/19 Срд 13:56:10 1422477318
>>1420692
Бамп
Оп, пожалуйста
Аноним 26/06/19 Срд 14:21:31 1422497319
>>1422471
>разработчики на Питоне разрабатывают одинаково хорошо?
На фоне пыхыпыдебилов (тебя) - именно так.
Впрочем, на таком фоне это несложно, хаха.
Аноним 26/06/19 Срд 15:23:56 1422563320
>Питонодебил кукарекает
>обезьяна на кривом говне без нормальной инкапсуляции кукарекает
>живтоне с разметкой пробелами кудахтает
Дальнейшее развитие нашего диалога будет заключаться в твоих кукареках НЕНУЖНА.

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

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

^[+\s][87]

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

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

как мне в последнюю часть к цифрам добавить "сколько угодно скобок, пробелов и минусов"?
Аноним 26/06/19 Срд 15:27:03 1422568323
Аноним 26/06/19 Срд 15:31:14 1422569324
1.jpg (28Кб, 620x244)
620x244
Аноним 26/06/19 Срд 15:44:09 1422578325
>>1422567
>[+\s]звезда
это съест любую комбинацию из пробельных и плюсов, типа " ++ +++++ +++ ", оно тебе надо?
Аноним 26/06/19 Срд 15:58:17 1422588326
>>1422471
Зачем ты вообще на него внимание обращаешь? Пора бы привыкнуть, что регулярно тут дауны всякие залетают. Просто игнорируй их.
Аноним 26/06/19 Срд 16:11:15 1422592327
>>1422477
Тебе же указали куда воевать, чего ещё хочешь? Репетиторов нам сюда не завезли. А жаль.
Аноним 26/06/19 Срд 16:26:51 1422601328
Learn-ruby-on-r[...].png (150Кб, 800x500)
800x500
>Именно поэтому я никогда не выберу пхп - там изначально будет спроектировано через хуй, реализовано через хуй, работать будет через хуй
всегда есть выбор
Аноним 26/06/19 Срд 16:29:39 1422604329
Знающий анон, а подскажи вопрос по регуляркам:
почему я не могу, например, банально сперва вырезать строковыми функциями все пробелы, скобки, минусы и тире, и после этого уже работать чисто с цифрами? Понятно, что урок с регулярками создан чтобы научиться в нем разбираться, но как дело на практике обстоит? В крупных организациях имеется ввиду. Есть хоть какой то прирост производительности/скорости загрузки, если поставить перед регуляркой строковую функцию с авто-заменой str_replace? Конкретные цифры. Без снобизма и демагогии аля "ну отцы так делали и нам завещали".
Аноним 26/06/19 Срд 16:50:06 1422615330
>>1422604
>но как дело на практике обстоит?
Обычно регулярками не пользуются. Но какой из тебя программист, если ты шаблон строки накидать не можешь? Сегодня ты регулярки пропустил, а завтра половину ООП не осилил и забил, и не можешь найти работу, потому, что все отлично видят твой уровень.
Аноним 26/06/19 Срд 16:56:03 1422621331
Аноним 26/06/19 Срд 16:56:55 1422623332
>>1422615
>Обычно регулярками не пользуются.
У меня часто возникают ситуации, когда проще накидать регулярку, чем ебаться с множественными заменами и поисками.
мимо-битриксоблядь
Аноним 26/06/19 Срд 17:12:09 1422629333
>>1422563
>этот тред с этими безмозглыми быдлодебилами (тобой)
>с развитым сообществом
Шутку понял.
Смешно.
Аноним 26/06/19 Срд 17:16:11 1422638334
>>1422623
Ну как бы да - на разных проектах по разному может быть.
Правда, говорят, что они медленные и плохо читаются, поэтому лучше не увлекаться.
Аноним 26/06/19 Срд 18:02:44 1422668335
>>1422638
>говорят, что они медленные
Насколько помню наоборот.
Аноним 26/06/19 Срд 18:02:45 1422669336
>>1422629
>этот тред с этими безмозглыми быдлодебилами
>Спизданул даун с дипломом программиста перфокарт, сосат всем.
Аноним 26/06/19 Срд 18:21:03 1422678337
изображение.png (499Кб, 600x800)
600x800
>>1422669
>дипломом
>перфокарт
Унижаемый за тупость и в итоге вылетевший студентик ну совсем не палится.
Аноним 26/06/19 Срд 19:38:27 1422711338
time.jpg (7Кб, 245x64)
245x64
Аноним 26/06/19 Срд 21:00:01 1422768339
Пыханы, расскажите, в сторону какого алгоритма копать или как бы вы решили такую задачу:
Есть список компаний, нужно из всех названий сформировать группы компаний по похожести. Группы, где совпадают 3/4/5 и тд. слов из названия. Сначала я получу массив, где каждое значение это будет массив слов из названия компаний. Как потом эти массивы слов компоновать по пересечению значений?
Аноним 26/06/19 Срд 21:13:33 1422773340
>>1422768
Гуглишь расстояние левенштейна и кластерный анализ. Строишь матрицу растояний между названиями и потом обрабатываешь каким-то методом кластеризации. Если тебе нужно именно по совпадающим словам то вместо растояний используешь количество не совпадающих слов в названиях, или что-то типа того.
Аноним 27/06/19 Чтв 10:02:14 1423012341
Как пройти assert?

class JobSeeker {
public static function questClassSearch(): bool {
return someFunc(function (string $c): void {
someFunc(self::class, $c);
});
}
}

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

Что должно быть на месте someFunc?
Аноним 27/06/19 Чтв 10:18:14 1423025342
>>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 количеством слов в самом большом названии
Аноним 27/06/19 Чтв 11:10:43 1423069343
>>1422768
Получаешь массив из названий компаний.
Из него получаешь словарь из отдельных слов каждой компании, подсчитывая сколько встречается каждое слово.
У тебя получится словарь вида "слово:количество совпадений".
Сортируешь его по количеству совпадений в убывающем порядке.
Используя этот словарь распределяешь компании из первого массива по группам.
Аноним 28/06/19 Птн 00:18:21 1423625344
А почему в php принято переносить скобку в объявлении функции на новую строку, а во всех нормальных языках нет?
Аноним 28/06/19 Птн 00:49:47 1423651345
>>1423625
Это стиль старых пердунов - "the one true brace style". Пошел из С. А так как пхп на С написан то наверное перетек и в сам пхп. Его еще в ядре линкса используют, например, так как тоже на С пишется.
Аноним 28/06/19 Птн 09:01:02 1423736346
>>1423625
>а во всех нормальных языках нет?
Для меня читаемость кода выше с скобкой в новой строке
Аноним 28/06/19 Птн 13:20:36 1423913347
>>1423736
Удвою. Хорошо видно объявление и последующий блок кода.
Аноним 28/06/19 Птн 14:58:36 1423952348
Аноним 28/06/19 Птн 16:22:00 1423999349
>>1423625
>а во всех нормальных языках нет
Зато в нормальных языках и функции и замыкания одинаково выглядят, а в ПХП объявление - с новой скобкой, замыкание - без.
Аноним 28/06/19 Птн 18:25:06 1424068350
>>1423736
Очень дело вкуса. Для меня это говно просто проеб вертикальной строчки на хуйню.
Аноним 28/06/19 Птн 19:07:57 1424091351
>>1423999
В нормальных языках и в php замыкания обозначают разные сущности.
Аноним 28/06/19 Птн 22:02:25 1424191352
возьмите работать, за любые деньги, с ооп знаком чет на симфони делал ну пж постараюсь быть полезным
Аноним 28/06/19 Птн 22:16:08 1424206353
когда речь идет про вкат в треде пхп советуют идти в джс, приходишь к ним кидают обратно сюда
Аноним 28/06/19 Птн 22:37:02 1424217354
>>1424206
никто себе конкурентов не хочет. такие вкатывальщики сначала вопросы на дваче задают, а потом приходят к тебе на работу и начинают доёбывать вопросами уже в рабочее время.
Аноним 29/06/19 Суб 02:06:46 1424295355
>>1424206
Окай. Иди нахуй.
Ты нигде не нужен.
Аноним 29/06/19 Суб 04:57:10 1424319356
>>1423625
Кстати я уже начал встречать js таким же образом оформленный, именно в недавних компонентах/сниппетах
Аноним 29/06/19 Суб 14:53:07 1424539357
image.png (176Кб, 500x500)
500x500
Аноним 29/06/19 Суб 15:22:06 1424560358
Аноним 29/06/19 Суб 15:49:12 1424567359
15086599129350.jpg (389Кб, 1000x1499)
1000x1499
github.com/ta-tikoma/phpins
решил написать свой валидатор кода. раскритикуйте, на толкните на что нибудь умное?
- почему не phpmd - потому что слишком долгое время обработки.
Аноним 29/06/19 Суб 16:12:20 1424584360
>>1424560
Ну тупенький значит.
Не от большого ума ты задаёшь незнакомым людям вопросы - на что въебать тебе последующие 5-10 лет.
Аноним 29/06/19 Суб 17:18:54 1424610361
Аноним 29/06/19 Суб 20:46:11 1424670362
учил php, через месяц уже получил работу лол
Аноним 29/06/19 Суб 21:02:55 1424674363
>>1424670
Что выучил за месяц, что спрашивали? Какая зарплата?
Аноним 29/06/19 Суб 22:45:04 1424718364
>>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, это могло бы стать полезной отдельной библиотекой для анализа кода.

Если есть вопросы - задавай.
Аноним 30/06/19 Вск 06:15:17 1424791365
>>1424718
спасибо за столь подробный ответ.

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

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

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

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

в процессе подбора инструментов так же встречал эту библиотеку, но отмел её наверное из-за лени разбираться а оправдал себя тем что на регулярках быстрее отработает(введу их небольшого количества), но вероятно ты прав и стоит вернуться к ней. Основной целью ставил для себя именно быстроту выполнения - да бы при сохранении файла(а возможно и в процессе его написания) мгновенно видеть результат.
Хотел ввести и di чтоб ввести возможность автоподгрузки валидаторов как сторонних пакетов. но все суммарно упиралось в мысли на сколько мне это урежет скорость.
Аноним 30/06/19 Вск 12:47:01 1424833366
какой портрет пхп программиста?
Аноним 30/06/19 Вск 12:55:24 1424837367
>>1424833
Рандомный как в дешевом хостеле
Аноним 30/06/19 Вск 17:33:51 1424975368
тест
Аноним 30/06/19 Вск 18:41:51 1425006369
Аноним 30/06/19 Вск 18:51:07 1425010370
15411864672170.jpg (83Кб, 917x636)
917x636
Как правильно интегрировать гитхаб с композером? Я загрузил туда либу, а композер говорит - не знаю таких. Делал compozer init на проекте.
Аноним 30/06/19 Вск 19:01:13 1425018371
>>1425006
не знаю кто такой школодебил, но ответил на мои 2 сообщения
Аноним 30/06/19 Вск 19:02:32 1425019372
>>1425018
Это ты, дебил мелкобуквенный.
Впрочем что от пхпдауна взять.
Аноним 30/06/19 Вск 19:08:34 1425021373
>>1425019
нас тут двое кажется, я на c/c++ работаю ваще
Аноним 30/06/19 Вск 19:17:12 1425024374
>>1425021
>я на c/c++ работаю
Вовсе нет, фантазер, ты слишком тупой.
Аноним 30/06/19 Вск 19:19:51 1425028375
>>1425010
Проще всего создать ssh ключ и в composer.json

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

"require": {
"<nikname>/<projectname>": "dev-master"
}
Аноним 30/06/19 Вск 19:29:12 1425033376
Аноним 30/06/19 Вск 19:31:47 1425036377
15372248589621.jpg (68Кб, 789x960)
789x960
Аноним 30/06/19 Вск 20:09:31 1425054378
>>1415604 (OP)
Кто-нибудь пояснит что конкретно делают эти точки, про них ничего нету в гайде, а без них код не выполняется??
> ТОЧКА $x $x ТОЧКА "\n\
<?php
for ($x=1; $x<=10; $x++ ){
echo "$x
$x=".$x*$x."\n";
}
Аноним 30/06/19 Вск 20:12:40 1425055379
Аноним 30/06/19 Вск 20:18:53 1425059380
Аноним 01/07/19 Пнд 00:05:48 1425229381
>>1425220
Там регуляркой ещё валидировать можно.
Аноним 01/07/19 Пнд 00:51:21 1425239382
IMG3755.JPG (35Кб, 228x277)
228x277
В году так 2011-2013 был хороший (на мой взгляд) сайт с уроками по азам PHP, там ещё девочки из Унылого учителя на бекграунде были и проект позиционировался как "от двачера для двачеров".
Там ещё была задача - написать генерацию броска игральной кости.
Он мёртв?
Аноним 01/07/19 Пнд 01:10:35 1425242383
/test/
Аноним 01/07/19 Пнд 09:08:12 1425293384
>>1425239
Давай читать шапку вместе:

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

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

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

Аноним 01/07/19 Пнд 13:43:20 1425405388
Аноним 01/07/19 Пнд 14:07:03 1425416389
Аноним 01/07/19 Пнд 17:45:11 1425530390
Апач внезапно перестал понимать свой .htaccess.
Вчера ещё всё нормально работало, на хостинге тоже всё отлично, а на локальной машине - хттп еррор 500. Ни копию с хостинга не берёт, ни старую свою.

Ну что за параша?
Аноним 01/07/19 Пнд 19:55:26 1425609391
>>1425530
Убедись что ошибка именно там, а не в коком-то скрипте (заменяй их на пустые файлы где возможно).
Аноним 01/07/19 Пнд 20:26:54 1425631392
>>1425609
Я на чистую софт переустановил и всё заработало как надо. Хз что это было.
Аноним 01/07/19 Пнд 23:24:48 1425828393
>>1425631
Короче, я затёр свои неймспейсы в конфиге композера пока пушил и разбирался.
Я идиот.
Аноним 02/07/19 Втр 12:40:35 1426111394
Аноним 02/07/19 Втр 12:41:17 1426113395
40к ЗП в рашке, для человека с 2годами опыта работы и овер 5 годами запиливания сайтиков для себя. Это зашквар? Стоит ли увольняться?
Аноним 02/07/19 Втр 12:43:54 1426116396
>>1426113
ну ищи другое место работы
Аноним 02/07/19 Втр 13:12:06 1426137397
Аноним 02/07/19 Втр 13:18:01 1426142398
>>1426137
На сколько возьмут.
Аноним 02/07/19 Втр 13:25:58 1426149399
>>1426113
Анону без опыта работы, с парой самопильных проектов "для себя" и хорошим знанием laravel/doctrine паттернов, предлагали от 55 до 65 в Питере.
Аноним 02/07/19 Втр 17:30:31 1426388400
Аноним 02/07/19 Втр 19:32:41 1426444401
function fn ($param = "default", $two = "2") {
echo $param;
echo $two;
}

fn("???");

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

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

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

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

и передавать null?
Аноним 02/07/19 Втр 20:04:06 1426465403
Аноним 02/07/19 Втр 20:05:51 1426467404
>>1426449
А, блядь, ну так ты всё правильно сделал.

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

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

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

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

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

не еби мозги ни себе ни людям
Аноним 02/07/19 Втр 21:19:53 1426568408
>>1426498
>fn(, '23'); //23

А не пиздите ли вы часом, молодой человек? Моя IDE говорит, что в этой строке ошибка и , не может идти после нихуя.
Аноним 02/07/19 Втр 21:32:22 1426591409
>>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.

Но это явно кривое решение. Ведь мы не в самом деле используем дефолтные значения, а просто дублируем их.
Аноним 02/07/19 Втр 21:42:56 1426617410
>>1426444

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

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

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

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



Аноним 02/07/19 Втр 22:52:26 1426706412
Котаны, суть поясните за smtp сервер. Есть у меня сайт, хочу почту отправлять. Я компосером загрузил phpMailer - это и есть smtp - сервер? С него могу миллионы в день писем отправлять Элону Маску Ольге Бузовой?
Аноним 02/07/19 Втр 22:56:51 1426711413
>>1426149
Складывается ощущение что ЗП больше зависит от того на сколько программист подскакивает кабанчиком, а не от скилла в известных пределах.
Аноним 02/07/19 Втр 23:03:45 1426716414
>>1426711

Звучит как оправдание. А не в том ли проблема, что некоторые программисты слишком увлекаются изобретением архитектур и лишним прилизыванием кода вместо быстрого выполнения задач бизнеса?
Аноним 02/07/19 Втр 23:41:22 1426751415
>>1426640
Поэтому бэк интереснее.
Аноним 03/07/19 Срд 08:41:35 1426855416
>>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
Аноним 03/07/19 Срд 08:43:14 1426856417
>>1426855
Чёт не дописалось немного. Писечка эта бесплатна, если меньше 10k писем и меньше 100 получателей в месяц вроде как.
Аноним 03/07/19 Срд 10:38:23 1426895418
>>1426855
Для себя подведу итог : smtp - протокол.
PHPMailer - реализация этого стандарта - то есть самодостаточный smtp-сервер, с него могу отправлять тыщи писем Бузовой.
Но так же я могу воспользоваться публичными серверами или же smtp - серверами, которые ставятся как отдельное ПО на мой сервер, но мне это не нужно, потому что есть у меня PHPMailer.
Я все правильно понял?
Это я сам для себя разжевываю что бы понимать .
Аноним 03/07/19 Срд 13:14:59 1426973419
>>1426895
Начнём с того, что я сам не весь из себя знаток данного вопроса, поэтому в деталях могу что-то напутать. Но всё же

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

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

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

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

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

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

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

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

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

ссылка https://ideone.com/04Pa5z
Хо решения правильный или я совсем хуйню сделал?
Аноним 03/07/19 Срд 16:34:34 1427086422
Тут такое дело, получал по студенческой лицухе phpstorm и не только, регал почтовый адрес в сакраменто колледж, на данный момент эту хрень прикрыли со стороны jetbrains, как теперь получить через студенческую лицензию подписку, кто знает?
Аноним 03/07/19 Срд 17:08:23 1427114423
>>1426985
Анон, я сам новичок, но ты все правильно и красиво сделал. Единственно что - у тебя нижняя проверка, где
>если баланс отрицательный - хватит считать
всегда будет в конце выполняться, поэтому и дублирование идет
Попробуй чуть-чуть изменить код, вообще не сильно привязывайся к коду, вон там даже в учебнике написано что есть намеренные ошибки
>Подсказка: код, который дан как образец, содержит намеренно внесенные ошибки.

вот например
https://pastebin.com/gRj4H8MX
Аноним 03/07/19 Срд 17:22:00 1427125424
>>1426974
>>Integrated SMTP support - send without a local mail server

То есть PHPmailer самостоятельно может формировать согласно протоколу smtp и отправлять письма, но если винда ( в ней с помощью mail() нельзя отправить по дефолту) и нет локального smtp -сервера то отправить не сможет. Либо цепляться к smtp -серверу (локальному или в сети), и уже сервер отправляет/принимает письма.
Так?
Аноним 03/07/19 Срд 17:32:52 1427142425
14212597293923.jpg (19Кб, 388x399)
388x399
Нахуя вы изучаете похапэ? Работы нихуя нет. Никому эта копрофилия в 2к19 не нужна. Пишут на чем угодно, только не на пхп. И причем уже года 4 как.
На дот нете, на жабе, на жоэс, даже на питоне че-то там пишут, но пых мертв.
Работы нет
Аноним 03/07/19 Срд 17:34:18 1427145426
>>1427142
но ведь 70% веба на пых-пыхе
Аноним 03/07/19 Срд 17:34:53 1427148427
>>1427145
Ты бы вакансиями пруфнул
Аноним 03/07/19 Срд 17:45:01 1427161428
>>1427160
>выпук безработной маньки
Аноним 03/07/19 Срд 17:50:39 1427166429
Аноним 03/07/19 Срд 17:52:00 1427170430
>>1427166
>руби
Последний раз слышал про эти засохшие сопли в 2014
Аноним 03/07/19 Срд 17:52:43 1427172431
Аноним 03/07/19 Срд 17:53:11 1427173432
>>1427172
Ага, прям как цой или кобол
Аноним 03/07/19 Срд 17:53:38 1427176433
>>1427086
Крякни да и все, что как маленький-то. Заработаешь копейку с помощью шторма - купишь лицензию, все по-честному. Вообще это оффтоп, соре
Аноним 03/07/19 Срд 17:54:14 1427177434
>>1427173
в Швятой живее всех
Аноним 03/07/19 Срд 17:55:46 1427179435
Аноним 03/07/19 Срд 18:05:00 1427182436
>>1427174
>заебали, сил нет
Одевайся, деньги на тумбочке.
Аноним 03/07/19 Срд 19:32:08 1427238437
>>1427176
Нет, крякать не буду, это гавно.
Аноним 03/07/19 Срд 19:51:23 1427250438
Аноним 03/07/19 Срд 19:56:11 1427258439
Аноним 03/07/19 Срд 19:58:07 1427263440
>>1427261
<20?
Ну тогда странно, мб просто не твоё
Аноним 03/07/19 Срд 19:59:04 1427264441
>>1427237
Я тоже не могу решить задачи, очень сложно идет.
Аноним 03/07/19 Срд 20:01:32 1427266442
>>1427261
>>1427264
Два дебила - это сила.
А потом местные дурачки удивляются почему это сложилось мнение что пыхыпы для олигофренов.
Вот именно поэтому.
Аноним 03/07/19 Срд 20:10:40 1427283443
>>1427267
>Ты сходу все задачи решал?
Точно так.
Еще дебильные вопросы будут?
Аноним 03/07/19 Срд 20:14:54 1427289444
tupoyvopros.png (62Кб, 767x301)
767x301
Объясните тупому, как должно выглядеть решение этой задачки, только начал а уже обосрался.
Аноним 03/07/19 Срд 20:17:20 1427291445
Аноним 03/07/19 Срд 20:21:26 1427294446
Аноним 03/07/19 Срд 20:32:26 1427310447
>>1427291
Нет, не тролю, рили не понел, что нужно сделать. Полагаю задать диапазон от 1 к 6 (задача на выпадения кубика). Но как это сделать не ебу.

>>1427292
Вашу шутку я оценил.
Аноним 03/07/19 Срд 20:50:20 1427350448
Поглядите, долбоёб мало того что в рандом не умеет - так ещё и не понимает как сага работает, кек
Аноним 03/07/19 Срд 20:54:32 1427362449
БУМП
Аноним 03/07/19 Срд 20:58:25 1427372450
>>1427142
Иди на node.js напиши.А мы посмотрим как тебя асинхронность и промисы в жопу выебут. А в рот тебя выебет модуль http.
Аноним 03/07/19 Срд 21:25:51 1427394451
за что отвечает папка модель во фреймворках?
Аноним 03/07/19 Срд 21:50:18 1427409452
Аноним 03/07/19 Срд 22:16:12 1427418453
>>1427394
я сам на ноде с рубой пишу, но скорее всего - за работу с базами данных. Но это у нас - у королей
Аноним 04/07/19 Чтв 11:30:31 1427736454
Аноним 04/07/19 Чтв 11:33:37 1427740455
>>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;

Или пиздец какой толстяк, или пиздец какой дебил.
или оба пункта одновременно
Аноним 04/07/19 Чтв 11:35:56 1427745456
https://itproger.com/news/44

Лол, обосрался, пока читал. Смахивает на какой-то жирный троллинг
Аноним 04/07/19 Чтв 11:43:06 1427754457