«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #105 /php/ Аноним 2018/10/19 19:29:51  №1281608 1
15376956868120.png (33, 500x500)
500x500
15376956868121.jpg (157, 1024x683)
683x1024
15376956868142.jpg (194, 1024x768)
768x1024
15376956868163.jpg (289, 700x840)
840x700
Добро пожаловать в клуб востребованных и незаменимых людей.

Не используйте ideone для задач с многобайтными строками.

Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки, печем печенье и даже делаем простые сайты! Зачем? Кто-то хочет изменить мир, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Предыдущий тред был тут: >>1268753 (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? — Да, однозначно. Посмотри любую вакансию.
Аноним 2018/10/19 19:30:58  №1281610 2
15376958125050.jpg (156, 787x830)
830x787
15376958125071.png (56, 500x644)
644x500
>>1281608 (OP)
В прошлом треде >>1268753 (OP) все проверено - зайдите и найдите свой пост и скорее всего на него есть ответ. Если я кого-то пропустил, напомните о себе тут.

---

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

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

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

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

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт или slovari.yandex.ru и найди название для переменной там
- в именах классов используется 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
Аноним 2018/10/19 19:55:27  №1281620 3
В прошлом треде не успел задать все вопросы по поводу своего выполнения задания про палиндром - http://codepad.org/7N715LEE

Можно ли ещё какие либо другие действия сократить с кучи строк до одной команды или ещё как то? Особенно мне не нравится 21-22 строка, но другого решения я на тот момент не нашел.

Заранее спасибо.
Ответы: >>1281622
Аноним 2018/10/19 19:57:48  №1281622 4
>>1281620
Запихнуть описания этих переменных в условие if
И пробелы убрать готовой функцией в пхп
Аноним 2018/10/20 00:16:21  №1281663 5
Вопрос такой, нахожусь в самом начале пути в программировании. Хочу выучить питон, но я так понимаю к питону нужно подходить с какой то базой в виде htlm/css ну и так далее. ВОПРОС, стоит ли учить php перед питоном, будет ли мне легче потом или наоборот я засру мозги хуевым языком (многие так говорят) и мне будет сложнее перестроится. Может быть есть срединный путь, например ознакомиться с языком поверхностно. И еще такой вопрос, стоит ли налегать на информатику для укрепления фундамента, ну там всякие нули/единицы, булева алгебра итд, или это все придет в процессе?
Ответы: >>1281696 >>1281707 >>1283040
Аноним 2018/10/20 05:13:29  №1281694 6
Ответы: >>1285907
Аноним 2018/10/20 05:30:41  №1281696 7
>>1281663
>Эй макаки! Если я тут с вами говна поем, я таким же пидором как вы стану? Может быть есть срединный путь, например полизать говно поверхностно?
Ответы: >>1281701
Аноним 2018/10/20 05:39:56  №1281697 8
>питонобыдлу опять жопу разрывает
Не надоело? ЖС-тред засрали, ПХП-тред засрали, что следующее?
Ответы: >>1281702
Аноним 2018/10/20 05:57:39  №1281701 9
>>1281696
Я к тому что вдруг по работе потом встречусь с пхп и нихуя не пойму, а мне скажут ты че лах чтоле не понимаешь)) иди нахуй отсюда. Я пока не вдупляю что нужно знать обязательно а что нет. Понятно что все знать невозможно. А насчет макак не мне судить с моим уровнем знаний, я пока даже до макаки не дорос.
Ответы: >>1284072
Аноним 2018/10/20 06:00:41  №1281702 10
>>1281697
Оскорблять кого то не хотел, глупо споря о языках скатываться до оскорблений.
Аноним 2018/10/20 06:06:41  №1281707 11
>>1281663
> php перед питоном
Нет.
>булева алгебра итд,
Походу дела освоишь.
Для сайтов на джанго мат. не нужна.
Аноним 2018/10/20 06:11:16  №1281709 12
1497998043177.png (275, 584x562)
562x584
Учи руби, он самый лучший.
Только на нем вакансий нет.
Ответы: >>1289794
Аноним 2018/10/20 06:33:24  №1281715 13
Можно ли где где-нибудь найти документация к симфони в менее вырвиглазном виде, чем у них на сайте?
Ответы: >>1281720
Аноним 2018/10/20 07:30:36  №1281720 14
>>1281715
Видосики от от knpuniversity ?
Ответы: >>1281721
Аноним 2018/10/20 07:33:26  №1281721 15
>>1281720
Меня тошнит от рекламы пхпсторма и их тупого юмора. Я уж лучше глаза себе ломать буду.
Ответы: >>1281741
Аноним 2018/10/20 07:40:08  №1281726 16
1492378203437.gif (1755, 500x281)
281x500
Если я скажу, что у меня виндовс 10 дома, на собеседовании обоссут? Может, стоит на арч вернуться?
Аноним 2018/10/20 07:48:50  №1281727 17
>>1281726
Очевидный ляликс очевиден.
Ответы: >>1281729
Аноним 2018/10/20 07:52:30  №1281729 18
>>1281727
А арч теперь не ляликс?
Аноним 2018/10/20 09:04:49  №1281741 19
Ответы: >>1281745
Аноним 2018/10/20 09:12:48  №1281744 20
Анон, сделал тестовое. Попросили залить в сеть.
Ебусь heroku.com .Уже сил моих нету.
Какая есть альтернатива php+mysql + бесплатный домен
Ответы: >>1281746
Аноним 2018/10/20 09:18:15  №1281745 21
>>1281741
Любитель дегенератских шуточек?
Аноним 2018/10/20 09:18:16  №1281746 22
>>1281744
ngrok + отсутствие перебоев в элекросети
Аноним 2018/10/20 09:27:21  №1281749 23
>>1281726
Покажи виртуалку с настроенным серваком на debian.
Аноним 2018/10/20 16:21:33  №1281895 24
ОП совсем убежал да?
Ответы: >>1281936
Аноним 2018/10/20 19:01:20  №1281936 25
>>1281895
Если этот тред сделать платным, может ОП тогда не будет убегать?
Ответы: >>1281952
Аноним 2018/10/20 20:25:27  №1281952 26
>>1281936
Ели его сделать платным, то только ОП убегать и не будет.
Аноним 2018/10/21 07:39:54  №1282072 27
Ребят, нужны прогнозисты.
Есть два стула, начать изучать JS, либо PHP, на какой сесть?
Где больше шекелей будут давать?
Ответы: >>1284073
Аноним 2018/10/21 08:20:31  №1282088 28
Попытался всё-таки сделать вторую задачку на массив. Можно ли сделать этот код короче и как?
Аноним 2018/10/21 08:50:07  №1282102 29
Ответы: >>1285906
Аноним 2018/10/21 09:00:08  №1282106 30
>>1282088
Начинай уже думать глобально. А если у тебя человек 100 или 1000? А если у тебя рост отрицательный?
Ответы: >>1282109
Аноним 2018/10/21 09:09:44  №1282109 31
>>1282106
> у тебя рост отрицательный

Нахуй ты из него ёбаного QA делаешь, пидор?
Аноним 2018/10/21 09:28:13  №1282113 32
3912048104801.jpg (3, 208x21)
21x208
Ответы: >>1282297
Аноним 2018/10/21 09:38:50  №1282117 33
>>1282088
Не понимаю, толсто это или правда. . . . .
Аноним 2018/10/21 09:44:51  №1282123 34
>>1282088
как так получилось, что в переменную нумбер набралось 8, если внутри цикла прохода по массиву все эти составляющие? разве не должно было получиться 8 * (кол-во элементов в массиве)?
Ответы: >>1282125 >>1282133
Аноним 2018/10/21 09:51:10  №1282125 35
>>1282123
Он обнуляет переменную в начале цикла.
Ответы: >>1282148
Аноним 2018/10/21 10:07:52  №1282128 36
>>1282088

Ты скопировал код сравнения роста много раз. Тогда цикл foreach не нужен - его нужно убрать.

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

Для начала, попробуй стереть все внутри foreach, кроме echo. Ты понимаешь, как работает этот код и что он выведет?

После этого, попробуй сделать в цикле такой код:

если (рост текущего ученика выше анона)
то увеличить number на 1

А после цикла выведи, чему равно number.

Если что-то непонятно - уточняй.
Ответы: >>1282297
Аноним 2018/10/21 10:11:18  №1282133 37
>>1282123
Выучи русский язык, олень ты малолетний. В одной итерации цикла может быть столько условий на сколько хватит ОЗУ+swap.

Переменная нумбер имеет значение 8, потому что 8 рыл выше коротышки анона.
Ответы: >>1285906
Аноним 2018/10/21 10:39:32  №1282148 38
Аноним 2018/10/21 11:03:52  №1282165 39
Есть ли смысл погружаться в асинхронный пхп с евентлупами (реакт-пхп/свул/пхп-пм и тд), либо сразу вкатываться в го?
Ответы: >>1282175 >>1282197
Аноним 2018/10/21 11:22:35  №1282175 40
>>1282165
Сразу в го, у пхп с асинком нет будущего, к сожалению.
Аноним 2018/10/21 11:56:30  №1282197 41
>>1282165
Если тебе нужна только ассинхроннось, то имеет смысл поковырять РеактПХП или только прототип накидать.

А так лучше Го или Джаву.
Аноним 2018/10/21 13:21:51  №1282297 42
Аноним 2018/10/21 13:33:55  №1282306 43
>>1281608 (OP)
Подскажите пожалуйста, мб не туда смотрю, вроде был список сделанных списков студентов.
Я уже спрашивал, но нифига не понял как сделать много гет-параметров, хотел бы подсмотреть как другие люди решали мой вопрос.

Допустим я искал студента по фамилии Иванов и сейчас у меня в адресной строке: index.php?search=Иванов
И я хотел бы чтоб кнопка сортировки (например по баллам) тогда имела внутри ссылку на index.php?search=Иванов&sort_by=grades, а если ничего не искал то index.php?sort_by=grades.

Я в twig нашел как засунуть в href текущий url {{ app.request.query.all }}, но как туда добавлять что-то вообще не понимаю, и не гуглится нихрена, и документацию twig почитал нихрена не вижу, я может вообще не с той стороны подхожу?
Аноним 2018/10/21 14:05:44  №1282322 44
>>1282306
Скорее не с той стороны всё-таки.
У тебя есть какой-то набор параметров, по которым происходит выборка из базы (например, тебе нужны 20 студентов с фамилией "иванов", отсортированных по имени). Тогда набор параметров будет представлять собой объект с подобными полями:
{order_by: "name", search: "иванов", page: 1, perpage: 20}
Этот объект можно передавать на фронт с бэка, чтобы знать текущее состояние выборки на фронте и по нему строить другие запросы к бэку (например, изменить страницу с первой на вторую). Его же можно передавать get-параметрами (удобнее всего - в обычном джсоне одним параметром), либо в теле post-запроса, и обрабатывать его на бэке (в соответствии с ним построить запрос к базе). Такой подход гораздо гибче ковыряния в request query (тем более в шаблоне).
Аноним 2018/10/21 18:42:30  №1282462 45
>>1282306
вырвать руки или ебать тебя в жопу.

сделай форму к странице, сохрани там все варианты
<form>
<input type=hidden name=search value="ivanov">
<input type=hidden name=order value="grades">
<input type=hidden name=page value="1">
</form>

далее делаешь жабаскрипт при клике на ссылку, которая соберет твои данные, типа
$.post("prettyurl.php",{"search": $("input[name=search").val(), "order": $("input[name=search").val()}, function(data){ alert(data);});

году в 2005м закончили с этой ебаторией и генерацией ссылок для пейджеров из php, генери на фронте все ссылки


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

Ответы: >>1282626
someApprentice 2018/10/21 21:48:23  №1282527 46
Напомню про свой пост в прошлом треде >>1279602

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

>Мне нравится 3-ий вариант с дублированием кода, но я не могу понять, почему это плохо - это плата за то чтобы опыт пользователя был максимально комфортным.
>
>В отличие от первых двух вариантов, не нужно иметь отдельно и JS и PHP приложения на сервере, а можно обойтись чем-то одним - либо PHP, либо JS.
>
>И к тому же, всё равно не получится не дублировать код. Допустим в упрощенной HTML версии есть формы (поиск или отправка сообщения), их всё равно нужно будет обработать на сервере так же как и в фронтенд JS приложении. Разве это не так?
>
>Если не существует универсальной архитектуры, то почему бы не применить и такой способ?


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

Я набросал небольшой код, как это примерно будет работать:

https://codepen.io/anon/pen/ePjNLP?editors=0010

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

1) При иницилиазации приложения определять текущий роут и запустить привязанный к нему компонент (в моем случае запустить у компонента метод run() ).

2) При переходе по роутам, очищать страницу, отрисовывать компонент и запускать его.

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

И у меня есть один не большой вопрос... Сейчас, при создании роутера, мы передаём экземпляр компонента, и каждый раз, когда мы инициализируем соответствующий этому экземпляру роут, вызывается метод run() этого компонента, и если в нём есть подписка на какое-то событие (DOM или RxJS Observable), то при переходе на другой роут эта подписка не отмениться, и, что хуже того, при возвращении на этот же роут, повеситься ещё одна такая же подписка. Я должен написать, например, метод stop() или в ES6 есть какой-то трюк для этого?


Кстати, для рендера можно и React использовать.


Back to the god damn jQuery
Ответы: >>1282560 >>1282689 >>1290010
Аноним 2018/10/22 04:17:12  №1282560 47
>>1282527
Берешь фреймворк, назначаешь на роуты компоненты, в компонентах подписываешься на хуки : onInit/onDestroy
Аноним 2018/10/22 10:14:23  №1282626 48
>>1282462

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

Также, в твоем коде нет индикатора загрузки и обработки ошибок, советую почитать мой урок про аякс: https://github.com/codedokode/pasta/blob/master/js/ajax.md

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

>>1282306

Списка нет, но можно на гитхабе поискать по student list.

> Я в twig нашел как засунуть в href текущий url {{ app.request.query.all }}

Это для фреймворка Симфони, а не для Твига. В Симфони в шаблон передается глобальная переменная app, которая содержит много всяких полей. Это немного нарушает разделение ответственности в MVC, если view может так спокойно залезть в параметры запроса (хотя и сокращает код).

Я вижу, что у многих вызвает вопросы генерация ссылок, давай разберемся. В протоколе HTTP у нас нет состояния: сервер не "помнит", какие параметры пагинации или поиска ты задавал раньше. Потому ты их должен указывать при генерации ссылки. Да, ссылки будут получаться длинные.

Вот вариант решения: сделать функцию, которая будет принимать на вход текущее значение параметров (сортировка, поиск итд), название колонки и выдавать ссылку для нее:

function generateSortLink($viewParams, $column): string

Это может быть функция, метод, статических метод (паттерн Utility Class), функция-расширение twig. Она определяет по названию колонки и текущей выбранной колонке направление сортировки, собирает параметры и генерирует ссылку, например, с помощью http_build_query.

Что такое $viewParams? Это текущие параметры вывода таблицы, их конечно можно сделать массивом, а можно сделать классом с комментариями:

class TableFilter
{
public $searchPhrase;
public $sortBy;
public $sortDir;
public $page
}

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

Аналогично, для пагинации можно написать похожую функцию:

function generatePagerLink(TableFilter $viewParams, int $page): string

При желании, можно как-то объединить эти функции в одну универсальную, например, такую:

function generateTableLink(TableFilter $currentParams, array $replace): string

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

Теперь затронем тему аякса и JS. В страницу можно встраивать код на JS, который может сам отправлять запросы на сервер аяксом и вставлять результат на страницу без ее перезагрузки. Если ты разбираешься или интересуешься JS и хочешь сделать обновление таблицы без перезагрузки, то есть довольно интересная библиотека pjax. Она перехватывает клики по ссылкам, запрашивает указанную в ссылке страницу аяксом и вставляет ее в указанную область страницы. Таким образом ты можешь сделать страницу, работающую без JS, а затем в соответствие с принципом progressive enhancement, для пользователей с JS добавить возможность работы без перезагрузки страницы. И это все - почти без написания JS кода.

pjax умеет отправлять формы, потому ты можешь заставить форму поиска работать без перезагрузки страницы при наличии JS.

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

Если что-то еще непонятно - задавай вопросы. Это обучающий тред.
Аноним 2018/10/22 10:16:02  №1282628 49
Аноним 2018/10/22 12:18:54  №1282687 50
>>1279602

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

Потому, что это на практике очень плохо будет работать. Разработчик добавляет новую фичу в JS-версию. Не забудет ли он добавить ее в PHP-версию? Или исправление бага. Плюс, удваиваются затраты времени. Дублирование кода - почти всегда плохо. Если же код не дублировать, то такие ситуации, когда 2 версии кода работают по-разному, сразу исключаются.

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

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

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

Если и делать PHP версию, то максимально простую. Ведь цель - слабые устройства с ограниченным трафиком. Но тогда придется делать ее на отдельном URL (https://messenger/h/), к ней не получится прицепиться из реакт-приложения (да и если она выглядит по-другому, то пользователя не обрадует внезапная смена внешнего вида в процессе загрузки).

> И к тому же, всё равно не получится не дублировать код. Допустим в упрощенной HTML версии есть формы (поиск или отправка сообщения), их всё равно нужно будет обработать на сервере так же как и в фронтенд JS приложении. Разве это не так?

Да, действительно. Обработчик, может быть, придется писать отдельно. Но у меня была мысль, нельзя ли сэкономить на написании шаблона и кода для отображения данных (view). Чтобы и на сервере, и на клиенте страницу рисовал один и тот же код.

Кстати, в классическом HTML надо бы добавить в форму уникальное число - nonce - для защиты от случаев, когда плохая связь и пользователь несколько раз отправляет форму с сообщением.

> Однако, как я уже писал, первые два способа можно улучшить, отказавшись от PHP и писать API на Node.js.

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

> +Сверх быстрая отрисовка DOM
Ой-ой. "Быстрый" в реакте - это значит "быстрый в сравнении с другими фреймворками, делающими сравнение деревьев DOM", а не быстрее любых JS библиотек.

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

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

Я погуглил и нашел это: https://reactjs.org/docs/react-dom-server.html - если ты используешь то же самое приложение на сервере, то думаю, что можно:

> If you call ReactDOM.hydrate() on a node that already has this server-rendered markup, React will preserve it and only attach event handlers, allowing you to have a very performant first-load experience.

> 2) PHP (Symfony) + нативное ES6 приложение на фронтенде
И еще там больше работы в сравнении с реакт.

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

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

> И ещё мне сейчас пришел 4-ый вариант с вашей подсказкой про socket_create():

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

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

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

> Если сократить, то вопрос будет простым - может ли React подхватывать HTML страницу и вешать на неё JS?
Да. https://reactjs.org/docs/react-dom-server.html
Ответы: >>1282804 >>1282816
Аноним 2018/10/22 12:19:26  №1282689 51
>>1282527

> Я набросал небольшой код, как это примерно будет работать:
> https://codepen.io/anon/pen/ePjNLP?editors=0010

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

> $('.feed ul').
Тут кстати должен быть поиск не по всей странице, а относительно корня компонента.

> Нужно писать приложение на ES6, поскольку, я боюсь, что готового решения, для подхвата отрендеренной страницы и дальнейшей работы как SPA приложения просто не существует

Реакт и ангулар же вроде умеют это.

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

Не может быть такого. Наверняка есть такая возможность.

> Сейчас, при создании роутера, мы передаём экземпляр компонента, и каждый раз, когда мы инициализируем соответствующий этому экземпляру роут, вызывается метод run() этого компонента, и если в нём есть подписка на какое-то событие (DOM или RxJS Observable), то при переходе на другой роут эта подписка не отмениться

Да, надо делать "жизненный цикл" компонента, предусмотреть в нем метод detach(), и гарантировать его вызов перед удалением компонента из дерева DOM. И, конечно, вызывать detach() у всех дочерних компонентов. А уже в этом методе мы отменяем подписку на события и все остальное.

В Реакте это делается за счет метода componentWillUnmount: https://reactjs.org/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class
Ответы: >>1282804
someApprentice 2018/10/22 15:10:13  №1282804 52
>>1282687
>>1282689

Спасибо за ответы - у меня теперь не возникает сомнений на чем и как писать.

>Ведь цель - слабые устройства с ограниченным трафиком.
Моя цель изначально была сделать поддержку приложения с отключенным JS, потому что по версии Tor Project это повысит безопасность (https://www.torproject.org/docs/faq.html.en#TBBJavaScriptEnabled).

>On the other hand, we should disable JavaScript by default to better protect against browser vulnerabilities ( not just a theoretical concern!).


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


>Но у меня была мысль, нельзя ли сэкономить на написании шаблона и кода для отображения данных (view). Чтобы и на сервере, и на клиенте страницу рисовал один и тот же код.
Да, я теперь вижу эту точку зрения. Для этого нужно писать серверную часть на Node.js. Это может занять ещё какое-то время.


Спасибо большое за ответы, ещё раз.
someApprentice 2018/10/22 15:21:00  №1282816 53
>>1282687
* Забыл написать

>В нашем случае еще и немного ухудшается безопасность, идеальнее было бы расшифровывать сообщения только на клиенте.
Я тоже думал об этом, и мне пришла в голову мысль, что обычные чаты шифруются более просто, а для GPG использовать особые "секретные чаты" как в телеграмме, которые будт работать только с включенным JS или в нативных приложениях. Причем можно добавить функцию, чтобы пользователь мог сам загружать свои приватные/публичные ключи. Хранить приватные ключи на сервере, конечно же плохая идея, даже если они зашифрованы паролем.
Ответы: >>1282918 >>1282922
Аноним 2018/10/22 17:19:19  №1282918 54
>>1282816

А, кстати, я вспомнил, есть интересный мессенджер Tox - он работает вообще без серверов, за счет DHT сети (как в торрентах) и прямых соединений между клиентами. И тоже все шифрует. Может еще из него можно какие-то идеи подчерпнуть.
Ответы: >>1282992
Аноним 2018/10/22 17:20:24  №1282922 55
>>1282816

Такие компромиссы не очень хорошие, приложение либо надежно, либо нет. В твоем варианте, те, кто использует секретные чаты, будут выделяться среди пользователей и привлекать внимание.
Ответы: >>1282992
Аноним 2018/10/22 18:04:03  №1282950 56
1520770236141.gif (2981, 266x176)
176x266
Таки линукс творит чудеса - только установил, сразу две конторы пригласили на жуниора поболтать. А я ведь даже симфони не доучил.
Ответы: >>1282975
Аноним 2018/10/22 18:35:29  №1282975 57
>>1282950
Это всё из-за аниме.
someApprentice 2018/10/22 19:08:24  №1282992 58
>>1282918
Помню-помню что вы писали об этом. У меня всё это отмечено и будет изучено когда дойдёт очередь.

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

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

Или просто хранить приватный ключ зашифрованный паролем на сервере. Но мне такая идея просто не нравится, хоть у меня и нету весомых причин для этого, кроме той, что если пароль от приватного ключа слишком простой, то его можно просто брутфорснуть (но это вина пользователя что он имеет слабый пароль).
Ответы: >>1285905
Аноним 2018/10/22 20:25:31  №1283020 59
Как перестать прокрастинировать и сделать наконец тестхаб?
Ответы: >>1283051 >>1283051
Аноним 2018/10/22 20:49:48  №1283040 60
>>1281663
>ВОПРОС, стоит ли учить php перед питоном
Если чтобы потом кодить на питоне - нет, конечно. Это примерно как научиться ездить на тракторе, чтобы потом ездить на легковушке: php и сам по себе-то в разы сложнее питона, а если наворачивать что-то кроме кора, то это у тебя растянется на полтора года. Опять же, изучать только кор, в отрыве от домена применения - бесполезно, писать какие-то скрипты в разы проще на удаве, да и приятнее, да и либок навернуто с миллион на каждую тему.

ОП, скинь эталонную (на твой взгляд) реализацию списка студентов. Можешь?
Ответы: >>1285498
Аноним 2018/10/22 21:09:14  №1283051 61
>>1283020
Оп, знаю что занят. Но глянь моих студентов:
https://github.com/Awesome-Kirill/fukingStudent
>>1283020
Я к выходным первую версию своего ТестХаба выложу
Ничего сложного, без задней мысли берешь и делаешь
Ответы: >>1285903
Аноним 2018/10/22 21:19:25  №1283057 62
что лучше выбрать
Ответы: >>1283071
Аноним 2018/10/22 21:47:06  №1283071 63
Ответы: >>1283247
Аноним 2018/10/23 08:25:26  №1283247 64
Аноним 2018/10/23 10:27:49  №1283303 65
Какое же глючное говно этот атом, гитхаб явно самых лютых говнокодеров для него созвал. Лучше бракетсы с майнерами из АУРа установлю. Или есть что лучше на линукс для ПХП?Emacs не предлагать.
Аноним 2018/10/23 10:47:04  №1283312 66
>>1283303
>Что либо, кроме полноценной ide для кодинга
Ответы: >>1283318
Аноним 2018/10/23 11:03:37  №1283318 67
>>1283312
>полноценной ide
Я не хочу ждать две минуты после набора каждого символа.
Ответы: >>1283815
Аноним 2018/10/23 11:27:45  №1283331 68
Ответы: >>1283347
Аноним 2018/10/23 11:48:47  №1283347 69
1504104438524.gif (1071, 500x281)
281x500
Ответы: >>1283361
Аноним 2018/10/23 11:58:04  №1283350 70
image.png (7, 1490x21)
21x1490
image.png (3, 507x22)
22x507
Джуны и вкатывалщики. Учитесь хорошо. Слушайте ОПа. И не делайте такое говно никогда.
Ответы: >>1283362 >>1283379 >>1283658
Аноним 2018/10/23 12:15:13  №1283361 71
>>1283347
Анимешник, опять ты? Пыхошторм === профессиональный стандарт.
Ответы: >>1283377
Аноним 2018/10/23 12:15:51  №1283362 72
>>1283350
Работаете над cpa-сетью?
Аноним 2018/10/23 12:47:46  №1283377 73
42947868p0.jpg (453, 1365x1293)
1293x1365
>>1283361
Для тех, у кого есть деньги.
Ответы: >>1283419 >>1283440 >>1290010
Аноним 2018/10/23 12:49:32  №1283379 74
>>1283350
Вкатыватьщик на стажировку ИТТ, постараюсь.
Аноним 2018/10/23 12:52:47  №1283382 75
аноны, а поясните за функции, что-то я понять это задачу не могу с 3 разными кредитами, как на ideone.com запустить функцию то?
Ответы: >>1285498
Аноним 2018/10/23 13:06:24  №1283394 76
>>1283303

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

kate, gedit - простые редакторы с подсветкой.

vim/emacs если ты любишь нестандартные сочетания клавиш

Netbeans - если хочется IDE на Яве, но бесплатно. Если там есть какие-то косяки, ты получаешь уникальную возможность их исправить.

Аноним 2018/10/23 13:17:09  №1283400 77
Почему Симфони до сих пор использует неймспейсы вместо автозагрузки?
Ответы: >>1283658 >>1285498
Аноним 2018/10/23 14:00:33  №1283419 78
Ответы: >>1283437
Аноним 2018/10/23 14:29:59  №1283437 79
Ответы: >>1283496 >>1283658
Аноним 2018/10/23 14:32:22  №1283440 80
Ответы: >>1283470
Аноним 2018/10/23 15:07:20  №1283470 81
>>1283440
Он сейчас поломан на ауре.
Аноним 2018/10/23 15:31:19  №1283496 82
Ответы: >>1283698
Аноним 2018/10/23 16:49:35  №1283541 83
Чет работодатели дают задачи даже легче студентов. Ну хоть Doctrine изучу попутно.
Ответы: >>1283591 >>1283716 >>1284016
Аноним 2018/10/23 18:16:15  №1283591 84
Ответы: >>1283598
Аноним 2018/10/23 18:26:10  №1283598 85
Аноним 2018/10/23 23:03:02  №1283658 86
>>1283437
найди старый активационный код, а после добавь сервер активации в блок ( hosts -> 0.0.0.0 )

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


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

>>1283350
ты удивишься, но так написано 90% прожектов. почти каждый раз случается:
1. да ладно, мне дружбан вася за пиво напишет
2. надо кого на 300 баксов нанять, хотя бы удаленно, вася послал нахуй с обновлением
3. биз прет и мы нанимаем разработчика в штат, но подешевле. какой дурак нанимает разработчика за 500к дерева, когда и за 30 сделают тоже самое.

profit !!
Аноним 2018/10/24 05:58:02  №1283698 87
>>1283496
Лайк. рабочий способ
Аноним 2018/10/24 07:36:22  №1283708 88
Омг, Анон, я смог написать эту ебучую функцию с 3 банками. может кто-нибудь глянуть и сказать, насколько код ущербен? https://ideone.com/B0PT91
Ответы: >>1283718 >>1285491
CMS Аноним 2018/10/24 07:51:18  №1283713 89
Как я блядь ненавижу CMS'ки!
Нахуй существует это говно вообще блядь?
Оно никогда не работает. Не соответстует своей доке. Чтобы чтото там сделать необходимо писать костыли и т.д.

Заставили создать страницу на какомто новом говне - Тридион. Блядь я бы на 3х языках сайт уже переписал пока разбираюсь
Ответы: >>1285491
Аноним 2018/10/24 08:06:30  №1283716 90
1480192928409.jpg (95, 499x302)
302x499
>>1283541
>задание на вакансию пхп-макаки
>90% работы в задании - фронтенд
Гениально.
Ответы: >>1283724
Аноним 2018/10/24 08:09:52  №1283718 91
>>1283708
Зачем ты присваиваешь результат выполнения функции переменным и пытаешься его вывести, если у тебя весь вывод информации осуществляется в функции? Алсо, ставь пробелы между параметрами функции, после управляющих конструкций и перед кавычками, изучи psr-2 хотя бы в рамках описания уже известных тебе языковых конструкций, если хочешь чтобы твой код можно было нормально прочесть.
Ответы: >>1283720
Аноним 2018/10/24 08:18:23  №1283720 92
>>1283718
>Алсо, ставь пробелы между параметрами функции, после управляющих конструкций и перед кавычками, изучи psr-2 хотя бы в рамках описания уже известных тебе языковых конструкций, если хочешь чтобы твой код можно было нормально прочесть.
>
Благодарочка, исправлюсь. А присваиваю, потому что иначе почему-то ideone не хочет выводить ответ, и output будет пуст
Аноним 2018/10/24 08:29:10  №1283722 93
1474571634372.jpg (33, 500x500)
500x500
Доктрина импортила мне настроение. Работа с БД - моя любима тема, а ORMы ее, получается, практически полностью берут на себя, а мне только энтити остается гет/сетить.
Ответы: >>1285491
Аноним 2018/10/24 08:31:46  №1283724 94
>>1283716
Двачую. Укатываюсь из ПХП, только потому что я хочу работать с сервером, а не адаптивной говноверсткой заниматься
Ответы: >>1283824
Аноним 2018/10/24 10:42:00  №1283790 95
>>1281608 (OP)
есть проблема , прошу анона помочь.

Есть свой сайт, ПХП поддерживает, скрипты ПХП уже есть свои и все работают, то есть технически все в порядке.

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

https://myrusakov.ru/php-curl-post.html

Создаю 2 файла, пытаюсь выполнить код, что в примере

<?php
$a = $_POST['a'];
$b = $_POST['b'];
echo $a + $b;
?>

и второй

<?php
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://mysite.ru/receiver.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "a=4&b=7");
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>


Понятно, название сайта свое, он выдает ошибку 301 Moved Permanently. Гуглил как испавить, судя по всему такая ошибка возникает не редко. Догуглился до того что вставил

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

теперь он уже не показывает ошибку 301 ,а показывает пустаю страницу. Если открыть файл receiver.php то цифра ноль и все.

Скажите пожалуйста, как заставить эту хуйню работать. Спасибо
Ответы: >>1283843
Аноним 2018/10/24 11:28:59  №1283815 96
>>1283318
Зато будешь тратить несколько дней на рефакторинг и дебагинг (если конечно это реальный проект, а не манясайт на локалхосте) вместо нажатия пары клавиш.
Аноним 2018/10/24 11:41:52  №1283824 97
>>1283724
У меня вот на нынешней работе исключительно бэкенд. Так что я даже задачки опа хз как решать, потому что всякие хтмл и жс вообще не знаю.
Аноним 2018/10/24 12:36:01  №1283843 98
>>1283790
Непонятно, как у тебя вообще может вернуться 301 - потому что это не ошибка, а ответ-редирект. Грубо говоря, сервер говорит браузеру "301: иди вон туда ->>>>".
Выставив же CURLOPT_FOLLOWLOCATION ты просто прошёл по адресу.
Вангую, что твой запрос летит просто не на тот скрипт.
Поэтому посмотри заголовки ответа, тебе должен прийти заголовок Location - это скорее всего даст тебе ответ, кто именно тебя редиректит и куда.
Ответы: >>1284087 >>1284165
Аноним 2018/10/24 15:20:54  №1283903 99
>>1283303
пхпсторм, тк есть под все языки
Из бесплатного эклипсе
я PHP говнарь, задовайте ответы. Мамкаёб 4000 2018/10/24 18:10:58  №1283979 100
Не понимаю хейта на php. ясен хуй, что только им не обойдется. Но, используя sql и java, чем он плох? наговнокодил, показал, все ЩЩастливы...
Ответы: >>1284078
Аноним 2018/10/24 19:27:15  №1284012 101
>>1283303
NetBeans - годнота на самом деле, но придетс напильником поработать - чтото поднастроить, какие-то плагины накатить
Аноним 2018/10/24 20:05:22  №1284016 102
>>1283541
можешь в тред скинуть решение, интересно что у тебя выйдет.
или напиши в тг @korts
Аноним 2018/10/24 20:50:14  №1284027 103
Посоны, как пыха то, жива? Нужно чем то зарабатывать дополнительную денежку пока сижу на основной работе. Сейчас рисую всякие макеты сайтиков, но пизданутые заказчики уже настаебали. Пишу простенькие скрипты на питоне для внутреннего использования, с ооп знаком
Ответы: >>1284079
Аноним 2018/10/24 23:51:24  №1284071 104
Дружки пирожки, нужна ваша помощь:

Дано много блогов на WP с установленным плагином, этот плагин имеет API с кучей эндпоинтов.
Есть сайт, с веб сервера которого нужно делать запросы к блогу на эти эндпоинты.
Как обезопаситься да так, чтобы инициация была только со стороны веб сервера, а не вордпресса? То есть тупо в плагине же я не могу хранить user:password которые буду сравнивать с пришедшими с запросом из веб-сервера, как быть?
Сгенерить токен при инсталле плагина, сохранить его, а потом передать на веб-сервер я тоже не могу, потому что инициатор всех действий - веб сервер.
Какие еще есть варианты?
Аноним 2018/10/24 23:51:40  №1284072 105
>>1281701
ты либо пойдешь в контору с пхп, либо с питоном. вряд ли там будут оба бекенд языка использоваться.
Аноним 2018/10/24 23:54:12  №1284073 106
>>1282072
на жс чуть больше в снг секторе из-за его хайповости, особенно если ты фуллстек нода + реактом
Аноним 2018/10/25 00:24:40  №1284078 107
Аноним 2018/10/25 00:25:31  №1284079 108
>>1284027
беру джангу, пили круды
Аноним 2018/10/25 00:49:54  №1284087 109
>>1283843
А не может сервер его футболить из-за отсутствия нужных заголовков, типа наличия версии браузера и прочего ливера? Ну, вроде как защита от ботов такая?
Ответы: >>1284165
Аноним 2018/10/25 08:01:53  №1284165 110
>>1283843
спасибо за ответы.

Ошибку 301 он после проставления CURLOPT_FOLLOWLOCATION уже не выдавал, там просто нихуя не происходила , пустая страница.Интересно как это понимать? В коде вроде ошибок нет, да я его и тупо копировал.

А если CURLOPT_FOLLOWLOCATION, то 301. Как-то так.

>>1284087
пробывал разными браузерами одно и то же
Ответы: >>1284337
Аноним 2018/10/25 08:16:24  №1284168 111
68032202p0.jpg (1064, 1488x2088)
2088x1488
Есть что хорошего почитать о том, как готовиться к собесам на пхп-мартышку? В перезвоним треде сплошь долбоебы и статьи для иностранного рынка.
Ответы: >>1284336
редактирование документов Anton 2018/10/25 09:08:20  №1284192 112
Всем привет.
Есть задача. Редактировать документ онлайн.
По прямой ссылке обращаться нельзя.
Документы должны хранится на локальном сервере.
Какие варианты решения можете предложить?

P.S Хотелось бы бесплатный вариант на подобии webdav. Можно открывать документ средствами юзера, но что бы он потом сохранялся на сервер.
Ответы: >>1284200
Аноним 2018/10/25 09:23:18  №1284200 113
Задачка Аноним 2018/10/25 09:45:39  №1284215 114
682HwXy8mSU.jpg (89, 693x392)
392x693
Добрый вечер, аноны. Сделал задачку из шапки, появился вопрос: возможно ли было сделать этот код компактней? У меня чувство, что я где-то проебался. Извиняюсь, если вопрос глупый, язык только начал изучать. Прикреплю код пикчей потому что я долбаеб потому что я сейчас на работе, а ебаный пхп меня почему-то очень увлек и я вместо сна решаю разные задачки. Как убегал не нашел ничего более логичного, чем сделать скрин и перебросить на телефон. Спасибо заранее.
Аноним 2018/10/25 10:14:56  №1284231 115
1540462497699.jpeg (3358, 1992x2656)
2656x1992
Кто-то может простым языком пояснить зачем нужно внедрение зависимостей? :(
Ответы: >>1284236 >>1284334
Аноним 2018/10/25 10:28:56  №1284236 116
>>1284231
Очевидно же.
Отсеивать вкатывальщиков вайтишников
Аноним 2018/10/25 12:57:32  №1284307 117
>>1284215
>возможно ли было сделать этот код компактней?
Возможно. если использовать не array(), а []
Ответы: >>1284377
Аноним 2018/10/25 13:54:12  №1284333 118
>>1284215
Так как ты пишешь, обычно не делают. Есть (нестрогое) правило, что если в массиве больше 2-х элементов, его пишут в столбик, а не в строчку.
Ну и да, советую поставить phpstorm, настроить себе code style: psr-2, а потом вызвать автоформатирование проекта - увидишь как правильно.
Ответы: >>1284377
Аноним 2018/10/25 13:54:16  №1284334 119
Ответы: >>1284525
Аноним 2018/10/25 13:57:32  №1284336 120
>>1284168
Читай статьи кайнд оф "вопросы к php-разработчику на собеседованиях" на хабре (ну и комментарии, ясен пень).
Ну и отдельно вопросы и мануалы по выбранному фреймворку.
Обычно, классика это внутренности php (типы, наследование, позднее статическое связывание), схема работы интернета (веб-сервер, всё такое), ООП-паттерны (нарисуй синглтон, т.п.) и базы данных (джоины, агрегации).
Ответы: >>1284350
Аноним 2018/10/25 13:58:26  №1284337 121
>>1284165
Ещё раз, убери CURLOPT_FOLLOWLOCATION и скажи, что у тебя возвращается в заголовке Location?
Аноним 2018/10/25 14:13:51  №1284347 122
15362619406540.jpg (93, 620x447)
447x620
Помогите дураку сделать функцию, которая удаляет элементы массива, если они не целые числа ИЛИ состоят из менее 11-ти символов.
Ответы: >>1284418
Аноним 2018/10/25 14:24:39  №1284350 123
58604162p0.jpg (175, 844x1000)
1000x844
>>1284336
>нарисуй синглтон
Надеюсь, фабрику рисовать не заставят.
Аноним 2018/10/25 15:04:39  №1284374 124
Почитал все эти статейки и понял, что мне надо не вопросы штудировать, а русскоязычные термины. Таки есть минус в чтении доков только на английском.
Аноним 2018/10/25 15:09:25  №1284377 125
>>1284333
Спасибо, попробую
>>1284307
Не знаю почему, но категорически не хочу учить себя этому упрощению, потому писал через array()
Аноним 2018/10/25 15:11:19  №1284378 126
Сил моих нет больше читать Зандстру, половину одолел уже тошнит. Есть что то не такое нудное по тем же темам ?
Ответы: >>1284410 >>1284642
Аноним 2018/10/25 15:52:32  №1284410 127
>>1284378
>Зандстра
>нудно
Выкатывайся из программирования.
Аноним 2018/10/25 16:09:16  №1284418 128
>>1284347
Уже не нужно, сам сделал. Спасибо за помощь:3
Аноним 2018/10/25 17:53:26  №1284492 129
Здаров пацаны, я не кодер, пробую сделать элементарный Update Data In a MySQL Table.

Делаю запрос connfirmation.php?ordernum=123 но нихуя не работает, объясните долбоебу почему.

Connfirmation.php:

<?php

$ordernum=$_GET['ordernum']

require_once 'connection.php';

// подключаемся к серверу
$conn = mysqli_connect($host, $user, $password, $database);

if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$sql ="UPDATE orders SET confirm='YES' WHERE Num='$ordernum'";

if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($link);

?>

Ответы: >>1284524
Аноним 2018/10/25 18:40:14  №1284524 130
Ответы: >>1284922
Аноним 2018/10/25 18:41:04  №1284525 131
>>1284334
Благодарю! Потерял
Аноним 2018/10/26 00:47:15  №1284642 132
>>1284378
Чувства тебя не обманывают, задрачивание паттернов, особенно в отрыве от практики тебе ничего особенно не даст, более того все без применения это довольно быстро забудется. Лучше почитать действительно важные книги вроде Совершенный код Макконнелла или чистый код Р. Мартина, sicp навернуть в конце концов. Это, конечно, только мое мнение но паттерны штука опциональная, которая изучается уже в процессе, а не нечто фундаментальное и необходимое. От того что начнешь всюду пихать абстрактные фабрики,код лучше и понятней не становится.
Ответы: >>1284692
Аноним 2018/10/26 06:09:01  №1284692 133
>>1284642
А потом такие дауны никуда не могут вкатится годами, потому что тратят все время на бесполезные для веба задачки, а фронт контроллер написать не в состоянии.
Ответы: >>1285057 >>1285224
Аноним 2018/10/26 09:02:19  №1284761 134
Есть одна так называемая бд написанная на фреймворке simfony. Есть одна покупная CRM, которая предоставляет api для импорта из самописного говна. Надо из самописаной базы вытащить данные и выгрузить их CRM. Про апи нихуя не знаю и даже не могу понять чего начать. Направьте на путь истинный
Ответы: >>1285489
Аноним 2018/10/26 14:44:48  №1284922 135
>>1284524
у меня небольшой шоп, вообще я вручную по мылу запрашиваю подтверждение о покупке, хотел немного автоматизировать процесс.

ошибок не возникает никаких, ответов тоже никаких, смотрю через консоль в firefox. В логах просто отправка запроса. Спс за ссылку, почитаю на досуге.
Ответы: >>1285187 >>1285188 >>1285489
Аноним 2018/10/26 19:48:16  №1285057 136
>>1284692

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

и я всегда с удовольствием смотрю на жжение ануса у заказчика, когда его модный и хваленый ленд переписывается и код занимает экран понятного кода, а не 20 классов прикрученных к симфони, которые ему писали месяц
Ответы: >>1285189 >>1285489
Аноним 2018/10/27 05:17:03  №1285187 137
>>1284922
>ошибок не возникает никаких, ответов тоже никаких
Возможно, у тебя отключен вывод ошибок в настройках php. Вот первая ссылка из гугла как их включить https://karashchuk.com/PHP/error_reporting-display_errors-display_startup_errors/

В крайнем случае ты можешь после каждой переменой выводить её значение с помощью var_dump().

https://secure.php.net/manual/ru/function.var-dump.php
Аноним 2018/10/27 05:19:19  №1285188 138
>>1284922
>смотрю через консоль в firefox
Также, обрати внимание на код ответа (400 - ОК, 500 - Внутренняя ошибка сервера).
Аноним 2018/10/27 05:34:02  №1285189 139
>>1285057
Чуствуется запашок проперженного дивана от твоего поста...
1) На практике ситуация диаметрально противоположная. Внезапно оказывается что у заказанного лендоса должен быть магазин, авторизация с ролями, управление заказами и так далее и так далее.
2) Заказчик никода не заглядывает в код. Ему побоку один там экран или 100500.
3) Вовремя ты никогда не напишешь потому, что четкое ТЗ , по крайней мере для мира пыхеров - это что то из области розовых пони.

Мимо
Ответы: >>1285223 >>1285267
Аноним 2018/10/27 09:17:06  №1285223 140
>>1285189
Согласен на 70%. Сразу наворачивать симфони и тридцать классов тоже - ещё одна крайность.
Мудрый разработчик выберет то, что при минимальных трудозатратах принесёт максимум пользы сейчас и в ближайшее время, но при этом будет расширяемо до более сложных вариантов по необходимости - и заранее предупредит заказчика.

Другой мимо
Аноним 2018/10/27 09:19:09  №1285224 141
>>1284692
Спор не имеет смысла.
Очевидно, нужны и теория и практика, в комплексе.
Иначе это будет или заучивание бессмысленных концепций, или кодирование без понимания того, что ты делаешь и зачем.
Аноним 2018/10/27 10:56:36  №1285267 142
>>1285189
вы забыли про:
4. оплата за ваш труд - 2 миски похлебки и мы подумаем платить вам или нет
5. а в последующем помимо управления заказами надо будет привязать все к битриксу, друпалу, водпрессу, настроить под поисковики и т.д. то чего почти все фреймворки не умеют из коробки
Аноним 2018/10/27 16:30:46  №1285489 143
>>1284922

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

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

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

Ну и как тебе написал анон, на локальном сервере стоит включить вывод ошибок на экран, опциями display_errors и error_reporting в php.ini.

>>1285057

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

DI придуман не просто так, у меня, если что, есть урок про него.

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

>>1284761

Не очень понятно, чем именно можно тебе помочь. Если ты хотел спросить, что такое API, то вот советы:

- API это набор правилили стандартов для взаимодействия между программами
- тут скорее всего (ты не написал подробностей) API основан на протоколе HTTP
- значит, надо прочесть про HTTP, например, тут: https://github.com/codedokode/pasta/blob/master/network/http.md
- затем надо прочесть документацию по API
- затем, посмотреть, может для работы с API уже есть готовая библиотека?
- если нет, придется писать свой код для отправки HTTP запросов. Можно взять библиотеку вроде Guzzle для этого.
Аноним 2018/10/27 16:31:12  №1285491 144
>>1284215

Не, код довольно краток и сокращать дальше уже нечего.

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

>>1283722

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

Ну и в сущностях не обязательно делать геттеры/сеттеры для всех полей. А смотреть по ситуации. Может, какие-то поля нельзя менять. Или можно менять, но только одновременно. И т.д.

>>1283713

Ты по одному продукту делаешь вывод обо всех.

>>1283708

Пока что неправильно. У тебя там получаются круглые цифры:

> 12-й месяц выплаты. Долг перед банком :-3576.4368783754.Всего выплачено:60000

А должно быть всего выплачено около 61270.

> if ($open == 0){
> $creditSumm = $creditSumm;
Это можно было не писать, эта строчка ничего не делает.

Функции лучше не выводить результат, а возвращать - тогда тот, кто вызвал, может использовать его как хочет.
Ответы: >>1285500
Аноним 2018/10/27 16:45:08  №1285498 145
>>1283400

Ты что-то путаешь. Нейимспейсы и автозагрузка независимы друг от друга и не заменяют друг друга. Почитай урок https://github.com/codedokode/pasta/blob/master/php/autoload.md

>>1283382

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

function something($x, $y) {
...
}

$z = something(100, 500);
echo $z;

На ideone или где-то еще - не важно.

>>1283040

Не могу, там куча вариантов. Ищи на гитхабе по словам student list, и выбери то, что выглядит поприличнее.
Аноним 2018/10/27 16:45:28  №1285500 146
>>1285491
>Ты по одному продукту делаешь вывод обо всех.
Они все дерьмовые. CMS - это неюзабельная параша.
Аноним 2018/10/27 16:45:45  №1285501 147
Анон, который с https://github.com/Awesome-Kirill/fukingStudent - надо сделать папку для публичных файлов. Сейчас ты корень проекта вываливаешь в веб, это небезопасно. В комментариях к задаче это описано. Также, файлы для докер имеет смысл поместить в проект (можно внутрь отдельной папки), это неудобно, поддерживать 2 связанных репозитория.

https://github.com/Awesome-Kirill/fukingStudent/blob/master/composer.json#L2
Название проекта можно убрать или вписать правильное, это поле обязательно только для библиотек.

Ты используешь https://github.com/Awesome-Kirill/autowiringDI , но в нем нет даже общего описания. Я первый раз эту библиотеку вижу. То есть человек, получается, должен читать код, чтобы понять, что это такое и как работает. Думаю, тут нужно дополнить ридми, кратко описав, что это, зачем, как работает с примером кода, что может и что не может. Кратко.

> Created by PhpStorm.
Советую отключить этот бессмысленный комментарий в настройках IDE.

> $this->container["{$id}"];
Красивее сделать явное преобразование к строке, как мне кажется, через strval().

> https://github.com/Awesome-Kirill/autowiringDI/blob/master/src/AutowiringDI.php#L66
> public function make(string $cls){
Нужен комментарий. Название ничего не говорит.

Тут выравнивание кривое из-за смеси табов и пробелов: https://github.com/Awesome-Kirill/autowiringDI/blob/master/src/AutowiringDI.php - надо исправить. Тяжело читать.

https://github.com/Awesome-Kirill/fukingStudent/blob/master/student.sql#L40
> `ege` int(11) NOT NULL,
Нужно добавить UNSIGNED

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/mylog.log
Это надо добавить в gitignore, и логи лучше вынести в отдельную папку.

Твой роутер правильнее назвать Front Controller.

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/tmp/404.html#L18
надо экранировать вывод, почитай мою пасту про XSS

https://github.com/Awesome-Kirill/fukingStudent/tree/master/src/tmp
Папке надо дать название получше

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/View.php
надо убрать лишние пустые строки в коде

> https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/Controller/FormController.php#L36
> $postRequest = $postRequest + ['pass' => hash('sha256', random_int(0, 1200))];
Ох ты наивняша. У тебя ведь, получается, тут всего 1200 вариантов пароля. Хеш может выглядеть внушительно, но в его основе лежит одно из всего лишь 1200 чисел. И подобрать такой пароль элементарно.

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

Ты, возможно, где-то слышал, что надо хешировать пароли. Это немного не то, что ты сделал, у меня есть урок: https://github.com/codedokode/pasta/blob/master/security/password-hashing.md

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

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/Model/DataBase.php#L23
> } catch (\PDOException $e) {
> echo $e->getMessage();
Непраивльно. Ты выводишь ошибку пользователю (который ничего в ней не поймет), а в лог не пишешь (и разработчик о ней не узнает).

> https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/Model/DataBase.php#L123
> $config = parse_ini_file('./src/config.ini');
Почему у тебя класс базы данных занимается парсингом конфигов? Ты нарушил принцип разделения ответственности, когда каждый класс занимается своим делом. Ну и представь, если тебе захочется, например, усложнить код чтения конфига. Тебе придется копировать это в несколько мест. Неудобно.

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/Model/InitPDO.php
Непонятно назначение этого класса. Что мешает вместо него создавать PDO напрямую?

Также, ты там сделал логгирование. Ты для каждого catch в коде планируешь копировать код логгирования?

Еще, ты для модели студента используешь массив вместо объекта. Можешь назвать плюсы и минусы представления студента в виде массива или объекта? Почему ты так решил сделать?

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

По тестам: не стоит делать проверку кучи условий в одном тесте. Лучше на каждое условие сделать свой тест:

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

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

> $I->see('Этот email уже использован');
Это делает тест хрупким. Достаточно чуть поменять формулировку и все, тест провален. Лучше бы тестировать по более надежному признаку, может там есть какой-то класс или атрибут, который менее склонен к изменению.

https://github.com/Awesome-Kirill/fukingStudent/blob/master/tests/acceptance/FirstCest.php#L27
> $I->see('Logout');

Это тоже не очень надежно, вдруг это слово где-то есть в фразе на странице (you can logout later). Стоит хотя бы проверить до теста, что такого слова нет - тогда мы защитимся от этой ошибки.

> $I->amOnPage('/add/');
> $I->dontSeeCookie('isLogin');
Это мне не очень нравится, так как пользователь таких вещей не видит, а мы ведь имитируем его поведение. Также, ты привязываешься к подробностям реализации. То есть ты не проверяешь, что пользователь разлогинен, а проверяешь, что нет куки с определенным именем. И если ее имя поменяется, твой тест станет ошибаться.

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

https://github.com/Awesome-Kirill/fukingStudent/blob/master/tests/acceptance.suite.yml
Надо написать в ридми про этот файл, что в нем надо задать параметры соединения. И вообще про тесты, как их запустить.

Это не полный список замечаний, это только что я с первого взгляда увидел. Задавай вопросы, если что
-то непонятно.
Ответы: >>1285903
Аноним 2018/10/27 17:19:21  №1285515 148
>>1284215

echo join(" ", array_map(function($val){
return $val[array_rand[$val]]
},$poema);

на строку короче
Ответы: >>1285521
Аноним 2018/10/27 17:40:09  №1285521 149
>>1285515

Читабельность и понятность страдает. Не надо так запутывать код.
Аноним 2018/10/27 19:30:02  №1285621 150
Добрый вечер! Помогите, пожалуйста, с задачкой. Как сделать код проще? Не могу додуматься как сократить первый foreach(), в котором я убираю пробелы, тире и скобки
Ответы: >>1285623 >>1285900
Аноним 2018/10/27 19:30:57  №1285623 151
>>1285621
А, и еще момент. Скажите, пожалуйста, где лучше выкладывать код, чтобы не мучаться со скринами? Не могу в гитхаб, не понимаю
Ответы: >>1285675 >>1285754
Аноним 2018/10/27 20:57:12  №1285675 152
java.jpg (71, 427x604)
604x427
>>1285623
начни с того что str_replace принимает массив первым аргументом ( типичная ошибка нуба )
str_replace(["-","(",")"," "],"",$number);

во вторых, синтаксис "{$base}" - пиздец сам по себе.

зы. парсер номерв, это такая уникальная задача.... поищи готовый, уже есть 100500 вариантов
Ответы: >>1285708 >>1285900
Аноним 2018/10/27 21:49:52  №1285708 153
>>1285675
>начни с того что str_replace принимает массив первым аргументом ( типичная ошибка нуба )
О, спасибо. Я до этого сам не додумался, не знал что так можно.
Еще, как я заметил, не обязательно вводить переменную или создавать пустой массив перед использованием.

>во вторых, синтаксис "{$base}" - пиздец сам по себе.
Почему? В каком плане?

>зы. парсер номерв, это такая уникальная задача.... поищи готовый, уже есть 100500 вариантов
Погуглю, спасибо. Мне просто интересно, возможно ли это было сделать без использования str_replace(), а только используя регулярные выражения.
Ответы: >>1285719 >>1285900
Аноним 2018/10/27 22:18:10  №1285719 154
рубль.jpg (5, 360x357)
357x360
>>1285708
пустая переменная - твой слчай, если ты будешь делать продакшен то у тебя будет вариант с str_replace($this->replace_array,"",$str)
т.е. ты даешь себе же возможность расширить массив заменяемых зняений

"{$base}" = $base вообще следует избегать двойных строк, для них существует отдельная обработка и лучше делать "".$base."" пока не понимаешь как оно работает
нубы которые делают как ты жарятся в отдельном котле
Аноним 2018/10/28 01:29:12  №1285754 155
>>1285623

На ideone можно выкладывать. Там заодно и результат выполнения виден. Правда, там не работают mb-функции.

Есть и другие сайты: http://codepad.org/
https://repl.it/languages/php
pastebin

Также, если ты зарегистрирован на гитхабе (бесплатно, без СМС), то там есть отличный удобный сервис для выкладывания кода - gist.github.com. Чтобы им пользоваться, не надо знать git, просто копируешь код и сохраняешь. Попробуй.
Аноним 2018/10/28 12:38:51  №1285899 156
Привет, посоветуйте плз имеет ли смысл покупать онлайн курсы( я рассматриваю курсы от лофтскул,если вам не лень погуглите посмотрите их программу) по php? У меня проблема в том, что самому на самообучение мне сложно себя смотивировать и все никак систематически за это не засяду. Но я не работаю, сижу на шее у мамки и деняк нет лишних, так что 300$ для меня деньги. Там проекты делаются и уже какое-никакое портфолио будет. А как самому пилить проекты в портфолио,как их делать - все кажется сложным. Вроде щас вся инфа есть в открытом доступе. Реально ли выучиться самому?
Ответы: >>1295877 >>1295909
Аноним 2018/10/28 12:39:51  №1285900 157
>>1285621

Вместо кучи str_replace лучше использовать один strtr() с массивом замен, либо один preg_replace().

Убирать foreach не требуется. Хотя можно 2 foreach объединить в один.

Вместо "{$number}" надо писать просто $number.

>>1285675

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

>>1285708

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

Обязательно. Если ты сделаешь

echo $a;

то это выдаст warning.

> Мне просто интересно, возможно ли это было сделать без использования str_replace(), а только используя регулярные выражения.

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

Аноним 2018/10/28 12:40:51  №1285903 158
>>1283051

В дополнение к замечаниям тут: >>1285501

В шаблонах надо убрать копипасту. Ты скопировал шапку и подвал в каждый шаблон, этого не должно быть.

Имена шаблонов лучше сделать соответствующими именам контроллеров и экшенов, а не случайными.

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/Controller/ListController.php#L36
> if (isset($_COOKIE['isLogin']) and $this->authentication->isValidCookie($this->model, $_COOKIE['isLogin'])) {

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

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

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/tmp/allVue.html#L6
> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">

Зачем ты запрещаешь масштабировать страницу? Этот код придумали люди, которым лень было делать нормальную верстку и проще показалось запретить масштабирование. Я негативно отношусь к таким людям.

> <hr class="container-fluid">
Что за ерунда? Почему hr?

https://github.com/Awesome-Kirill/fukingStudent/blob/master/src/tmp/vue-bootstrap-table.js
12 000 строк - не многовато ли для отображения простой таблицы?

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

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

При ошибке надо показывать форму с заполненными полями, а не редиректить.
Аноним 2018/10/28 12:41:20  №1285905 159
>>1282992

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

Да. Получается, есть такие решения:

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

Второй вариант мне кажется адекватным. Он же используется в эппловском iMessage.

Желательно показывать список устройств, чтобы пользователь мог его проверить.

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

Кстати, есть такая интересная штука, как 2FA. Это второй фактор для защиты от случая, когда у пользователя украли пароль. Есть такие протоколы TOTP и HOTP: https://ru.wikipedia.org/wiki/Google_Authenticator . Вместо программы от Гугла можно использовать свободную программу из F-Droid, не требующую доступа в интернет.

Выглядит это так:

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

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

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

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

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

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

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

Вообще, конечно, правильнее могло бы быть не изобретать свои протоколы, а взять какой-то сушществующий, благо их много: https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_protocols (да, немного поздно об этом думать).
Аноним 2018/10/28 12:41:40  №1285906 160
>>1282133

У нас тут не урок русского языка.

>>1282102

В PHP есть стандартная функция сортировки, свою писать не надо. Да и сортировать тут не надо.
Аноним 2018/10/28 12:42:32  №1285907 161
>>1281694

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

Для проверки я открыл Developer Tools. В фаерфоксе - есть вкладочка "Шрифты", где написано, какой именно шрифт использован. В хромиуме эту информацию можно поискать на вкладке Computed.

Там видно, что использован шрифт Lato с начертанием normal. А так как у нас элемент em, то браузер сам синтезировал из нормального шрифта косой, механически наклонив буквы. Загадка разгадана.

Для подтверждения я открыл https://fonts.googleapis.com/css?family=Lato:300,400,900 - там нету курсива (кстати, изучи этот файл, там интересная оптимизация сделана).

Тебе надо подключить определения font-face еще для курсивных начертаний Lato.

Далее, почисти кеш (или поставь галочку в devtools) открой вкладку Network и перезагрузи страницу. У тебя там гигантские PNG-картинки с работами, весом под мегабайт в сумме. PNG дает хорошее качество, но совершенно неразумный вес. Попробуй их пережать в JPG, желательно без визуальной потери качества, и посмотреть, будет ли вес меньше. Не советую пользоваться автоматическими конверторами без выбора степени сжатия - они могут слишком сильно сжимать - ее лучше выбрать вручную.

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

После сжатия ты можешь, если хочешь, использовать дополнительные утилиты для дополнительного уплотнения файла: jpegtran, jpegoptim, mozjpeg.

Из минусов JPEG: в нем нельзя сохранять мелкий текст - он коверкается. Я когда-то для оптимизации даже разделял картинку на JPEG-фон и PNG-текст.

Верстальщик должен разбираться в оптимизации картинок. Потому, советую почитать https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/automating-image-optimization/

Также, есть набор старых, но очень интересных статей по оптимизации картинок: http://chikuyonok.ru/tag/%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/

Я также советую изучить теги picture и img srcset. Они позволяют указать несколько вариантов картинок, которые могут выбираться в зависимости от размера экрана, плотности пикселей, поддержки браузером формата картинки: https://developer.mozilla.org/ru/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images

> <div class="serveicesBlock">
> <div class="img"></div>
Тег .img разве нельзя убрать и заменить на псевдоэлемент :before? Попробуй сделать, или там какая-то проблема? Этот тег смотрится лишним в разметке.

В картинках - плохо, что картинки дублируются. Этот как минимум может вызвать повторную отправку запросов для них. Браузер всегда загружает картинки, указанные в атрибуте img[src], даже если они скрыты и невидимы. Тут лучше бы убрать дублирование, или что-то мешает так сделать?

Далее, надо проверить адекватность стилей по умолчанию. Представь, что к этому сайту решили добавить текстовую страницу, например, "О нас" (или даже подключить CMS и дать возможность менеджерам добавлять страницы самим). Как она будет выглядеть?

Для проверки я взял простой сайт https://motherfuckingwebsite.com/ и через devtools подключил твой CSS. Результат - не впечатляет: текст отцентрирован и плохо читабелен, списки выглядят ужасно. Нужно переделать CSS так, чтобы страница с простыми HTML тегами в нем выглядела нормально и в стиле сайта. То есть чтобы при добавлении новой страницы надо было сделать минимум работы и не надо было искать, как отключить центрирование.

> box-sizing: border-box;
Если добавить префиксы вроде -moz-box-sizing и -webkit-box-sizing, то поддерживаемых браузеров будет чуть больше: https://caniuse.com/#search=box-sizing (тебя наверно путают номера версий, не смотри на них, смотри на год выпуска браузера).

Если ты знаком с Node.JS, то можешь установить autoprefixer для автоматизации процесса.

> .serveicesBlock:nth-child(3) > .img {
Это не очень удачная идея. Если добавить, убрать или переставить блоки, то все картинки перепутаются. Лучше поставить уникальный класс на каждый блок. Не надо так делать, что при правке кода в одном месте ломается что-то в другом.

То же касается портфолио. Если возможно, я советую привязать картинки к кнопкам с помощью CSS классов или data-атрибутов. Так проще все это поддерживать.

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

Еще меня беспокоит, что при определенной ширине экрана блоки Consectetur, Tristiquet выстраиваются 3 в один ряд, и один снизу. Было бы красивее по 2 в ряд.

Также, я потестировал сайт в browsershots (а ты потестировал?) и в некоторых браузерах кнопки типов работ (illustration/motion) склеиваются друг с другом, а в некоторых, наоборот, далеко, там всюду разное расстояние. Это плохо:

- http://api.browsershots.org/png/original/a1/a1f0cd30d038c27fa04739dbb02a396e.png
- http://api.browsershots.org/png/original/86/8693a113b4c0c01939393f1d2143e9b5.png
- http://api.browsershots.org/png/original/0c/0c373ab1a4baaeab83f7b28ff643c6ac.png

Также видел склеенные кнопки в одном из IE:

- IE10: https://www.browserstack.com/screenshots/b35082fa437b517d40ea30383c037102943de97e/win7_ie_10.0.jpg

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

Но в общем молодец, у тебя неплохо получается. Советую исправить замечания, почитать теорию по ссылкам, которые я дал, может еще почитать про новшества CSS3 (flexbox, grid итд) и начинающий верстальщик из тебя вполне готов.
Аноним 2018/10/28 20:07:06  №1286165 162
Аноны, помогите, прошу вас!
Задачка на исправление ошибок в тексте и у меня встает следующий вопрос (вот код http://codepad.org/3zrTEE2d): как сделать так, чтобы местах, где требуется просто поставить пробел, код не сжирал последующую букву? Я пытался через $replacement.'$2', но он, сука, выдает мне ебаный еррор Array to string conversion, хотя я вроде не передаю ему никаких массивов, а хочу дать вторую часть кода из массива регексп. Я уже в отчаянии!

Ответы: >>1286177 >>1286201 >>1286462
Аноним 2018/10/28 20:23:36  №1286177 163
>>1286165
И вот еще: http://codepad.org/RWkJyh7k . Это задачка на наебалово в госзакупках. Возможно ли сделать код короче?
Извиняюсь, если сильно напрягаю анона, но просто почему-то немного трудно идут рег. выражения. Я их уже второй день штудирую, пишу-переписываю свой код. И приходится в методичку загядывать
Аноним 2018/10/28 21:35:51  №1286201 164
Ответы: >>1286205
Аноним 2018/10/28 21:54:36  №1286205 165
>>1286201
Вроде должно работать
"/([,|.|!|?|:])(\\S)/u",
"$1 $2",
Ответы: >>1286445
Аноним 2018/10/29 01:39:41  №1286233 166
Аноносы, посоветуйте книжку, сайт, или что-нибудь другое, где МАКСИМАЛЬНО КРАТКО и ПОНЯТНО объясняется устройство и прнципы работы сетей, адресация, маршрутизация и. т. д.
Аноним 2018/10/29 07:04:15  №1286291 167
>>1286233
>МАКСИМАЛЬНО КРАТКО и ПОНЯТНО
Читай стандарты епта.
Аноним 2018/10/29 09:48:09  №1286347 168
>>1286233
Котеров PHP5, первые две главы.
Ответы: >>1286397
Аноним 2018/10/29 11:01:18  №1286397 169
>>1286347
Читал. Как-то поверхностно.
Аноним 2018/10/29 13:02:37  №1286438 170
Хотел воспользоваться ларавель-микс и установил нод.жс, это нормально, что он нахуярил мне всякой всячины в папку node_modules на 170мб, хотя мне нужен только бутстрап и жквери?
Аноним 2018/10/29 13:32:41  №1286445 171
>>1286205
>"/([,|.|!|?|:])(\\S)/u"
Спасибо, но я так уже делал. Это только на знаки препинания. А, например, жи-ши - это уже отдельно делать, или как? Так ведь получается слишком много повторяющегося кода. Я для этого в массив все вариации запихал, чтобы просто дополнять массив новыми правилами. А то не фен-шуй
Ответы: >>1286462
Аноним 2018/10/29 13:33:59  №1286446 172
>>1286233
Андрей Созыкин, ютуб
Аноним 2018/10/29 14:13:40  №1286462 173
>>1286445
>>1286165
$errors = [
\t'$1ардинально' => '/(К|к)оординально/ui',
\t'$1десь' => '/(С|с)десь/ui',
\t'с$1' => '/з(дела(л|ю|н|ем|нный))/ui',
\t'$1и' => '/(ж|ш)ы/ui',
\t'$1 $2' => '/([,.;:!?])(\w+)/ui',
\t'$1, $2 ' => '/(\w)\s(но|а)\s/ui'
];
дальше нужно пройтись циклом
Ответы: >>1286470 >>1286563 >>1288802
Аноним 2018/10/29 14:22:55  №1286470 174
>>1286462
\t это так табуляция отображается.
Аноним 2018/10/29 15:36:07  №1286510 175
62877922p0.jpg (271, 726x1000)
1000x726
Эх, хочется уютно писать бек на пхп, а работу предлагают только для chad fullstack-инженеров.
Аноним 2018/10/29 16:02:45  №1286530 176
http://codepad.org/fCzesIi4 почему эти два варианта не работают? Хоть убейся, но не работают. Никак не могу решить проверочную задачку, отформатировал текст таким способом
function makeThisTextBetter ($text){
\t$regexp = "/(\\s)([.|,|!|?|:])(\\s)/u";
\t$result = preg_replace ($regexp, "$2 ", $text);
\treturn $result;

, а сделать первую букву заглавной не удается
Аноним 2018/10/29 16:36:41  №1286563 177
Аноним 2018/10/29 17:43:40  №1286586 178
Аноним 2018/10/30 03:06:59  №1286823 179
Анонче, глянь, пожалуйста, мою задачку на числа-буквами. Я не дописал еще, но мне интересно знать в правильном ли я направлении двигаюсь http://codepad.org/xLD7yTTv
Дальше пока не пишу, потому как очень хочу спать. Однако написал я ее за пару часов. Я молодец? Просто хотелось похвалиться перед кем-то. Под задачкой написано, что она сложна для новичков, однако управился относительно быстро
Ответы: >>1287024
Аноним 2018/10/30 08:50:50  №1286887 180
Анон по ссылке решение задачи по ООП о компании "Вектор" https://repl.it/repls/AttractiveWoodenButtons. Чувствую, что нагородил лишнего. Начиналось все вроде просто, а потом выросло в такое.
Аноним 2018/10/30 10:57:06  №1286951 181
Где можно прочитать, как работать с HTML + PHP? После пары гайдов мне кажется, что я делаю все очень хуево, ибо файлов ну очень много (для каждой странички - связка .html + php, для индекса - полупустой файл с include_once(huita.html) и сам huita.html) и пиздец.

Есть какие то стандарты, а то я совсем себя неуютно чувствую?
Ответы: >>1286959
Аноним 2018/10/30 11:28:04  №1286959 182
>>1286951
Задача список студентов из шапки. В ней есть ссылки на уроки по отдельным вещам от ОПа.
Аноним 2018/10/30 11:42:12  №1286962 183
Аноны, что то бошка уже кипит.
Мне надо, чтобы вышла строка МАССИВ ПУСТОЙ, КРАСАВЧИК, если в массиве нет ни одной записи.

if ((empty($array)){
echo "Массив пустой, красавчик";
}
почему то не работает. Хелп!
Ответы: >>1286965 >>1289495
Аноним 2018/10/30 11:52:53  №1286965 184
>>1286962
Дохуя как то скобок.

if (empty($array)){
echo "Массив пустой, красавчик";
}
Ответы: >>1286970
Аноним 2018/10/30 11:58:21  №1286970 185
>>1286965
Не работает.
Вар дамп выдает вот это:
array(0) { }

Работает такое условие:
if ($myArray === array()){
\techo "заебись";
}
Ответы: >>1289508
Аноним 2018/10/30 12:23:38  №1286980 186
Можно ли где то скачать уже готовые, наверстанные html+css сайты, чтобы не пердолится с разметкой и сразу натягивать свой пхп?
Ответы: >>1287718
Аноним 2018/10/30 12:30:13  №1286983 187
Вы таки говорите, что без знания математики можно вкатиться в пхп. Но у меня глава про айфон и циклы еле идет. Может быть навернуть для начала SICP ?
Ответы: >>1287019
Аноним 2018/10/30 13:15:15  №1287019 188
>>1286983
В задачах ОПа максимум арифметика за 7 класс, если у тебя с этим проблеммы, то о сикп пока и думать нечего. Можешь попробовать пройти вводный курс по программированию на хекслете. https://ru.hexlet.io/courses/introduction_to_programming
Ответы: >>1287027 >>1287033 >>1287038
Аноним 2018/10/30 13:21:10  №1287024 189
>>1286823
Не вчитывался, но заметил, что операции остаток от деления и деления с округлением ты не используешь, инклайн ворд переделал, а можно как у ОПа сделать.
Ответы: >>1287136
Аноним 2018/10/30 13:24:47  №1287027 190
>>1287019
банкомат и по кругу - нет
Аноним 2018/10/30 13:28:40  №1287033 191
>>1287019
Спасибо. Буду лучше вникать
Аноним 2018/10/30 13:31:51  №1287038 192
>>1287019
Собственно проблема у меня скорее с самим пониманием программирования , потому что с арифметикой проблем нет. Для меня это все разновидность магии. А программисты - колдуны ирл все от незнания, да
Аноним 2018/10/30 13:36:36  №1287041 193
в ларавеле есть что либо похожее на гемы или батарейки?
Ответы: >>1287064
Аноним 2018/10/30 13:53:03  №1287064 194
Ответы: >>1287070
Аноним 2018/10/30 14:00:17  №1287070 195
>>1287064
тебя лично его возможности полностью удовлетворяют?
Аноним 2018/10/30 15:17:20  №1287104 196
Не пойму, что не так?

<?php

class Car{
public $color = "Wite";
public $speed;
public $brand;
public $fuel;
}

$car1 = new Car;
$car1->brand = "Жигули";
$car1->color;
$car1->speed = 70;
$car1->fuel= 10

$car2 = new Car;
$car2->brand = "ГАЗ";
$car2->color = "black";
$car2->speed = 100;
$car2->fuel = 15;

echo $car1->brand;
?>
Ответы: >>1287106 >>1287108
Аноним 2018/10/30 15:18:20  №1287106 197
>>1287104
Точку с запятой поставь, ковбой.
Аноним 2018/10/30 15:18:22  №1287107 198
когда ОП вернется?
Ответы: >>1287128
Аноним 2018/10/30 15:18:45  №1287108 199
>>1287104
Блять, вот я валет.Нашел пропущенные точку с запятой. Сори!
Аноним 2018/10/30 15:45:53  №1287128 200
>>1287107

А все задачи до 162-го поста в этом треде кто, по твоему, проверил? Если на твой вопрос не ответили или не проверили задачу, напомни о ней.
Ответы: >>1287796
Аноним 2018/10/30 15:58:37  №1287136 201
>>1287024
Да, не использовал. Мне этот способ показался проще. Пока на работе подумал ещё, что для вывода тысяч можно проверить длину массива и разбить массив на сегменты по 3 т.е. 0-2 это сотни, дальше проверочное [3] для больших значений , 4-6 сотни и т.д., это всего пару строк кода плюс массив для крупных чисел, плюс подправить баг с числами, допилить склонения и будет всё складно. Т.е. я мыслил таким образом, что в числе 987 654 321, 987 миллионов, 654 тысячи 321. И каждый "миллион/тысяча" будет ключом для второго массива больших чисел, который будет подставляться между малыми. На словах все труднее звучит, но я попробую как вернусь с работы это реализовать
Ответы: >>1287139
Аноним 2018/10/30 16:04:11  №1287139 202
>>1287136
А, ещё забыл один вопрос: почему у меня \n не пашет? Не переводит строку. Приходится <br> использовать
Ответы: >>1287193 >>1287201 >>1287262
Аноним 2018/10/30 16:45:10  №1287151 203
Аноним 2018/10/30 17:06:21  №1287165 204
https://ideone.com/9wUomK
Задание- описать классы для прямоугольника, круга, пирамиды, описать метод для нахождения площади фигуры (не уточняется именно пирамида или все-таки треугольник, поэтому пирамида с равнобедренными треугольниками), а так же отсортировать по убыванию площади объекты и вывести на экран.
Сделал создание рандомных фигур, с рандомными параметрами, вывод нормально работает, но никак не могу сделать сортировку, вот уже несколько часов бьюсь.
Может стоит как-то по другому сделать массив с фигурами? Или просто я слепой, что не могу увидеть как сортировать
Аноним 2018/10/30 17:31:45  №1287193 205
>>1287139
в терминале запускай
Аноним 2018/10/30 17:40:39  №1287201 206
>>1287139

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

Чтобы переносы строк нормально работали и в браузере и в ideone (и в консоли), можно использовать для этого \n, а в начале программы поставить

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

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

Иначе перенос строки будет в исходном коде страницы (его можно увидеть нажав Ctrl + U), но на самой странице его не будет.


Аноним 2018/10/30 19:51:47  №1287262 207
Аноны, снова Добрый вечер. На связи Анон который последние несколько дней засирает тред тупыми вопросами про >>1287139, и который смог написать программу про перевод цифр в слова, но так и не понимает как сделать первую букву заглавной(стртуаппер хоть убейся, но в целом массиве меняет только первую на заглавную). Так вот, у меня есть вопрос. Я иногда, когда не могу писать код (как сейчас, я на работе), читаю учебники и задачки и представляю по какому принципу их сделать. Я прочитал задачку про навигатор и она мне показалась очень простой и у меня возникла мысль. Сделать (или сгенерировать, это сложнее и как это сделать пока представление мутное, но есть идеи как повернуть это через рандом) массив, который будет размером 100*100 где-то и который будет являеться картой. На карте есть несколько дорог и зданий и типо_курсирующие_автобусы пару штук. Смысл в том, чтобы по нажатию на первую клетку передавалась информация откуда, при нажатии на вторую передавалась информация куда, а скрипт уже считал дистанцию до ближайшей дороги, а дальше считал дистанцию до места прибытия по дороге пешком или автобусом. У меня в голове (возможно это иллюзия, конечно, а я долбаёб) есть примерное представление как это сделать. Единственное что, я пока не знаю как сделать кнопку,, которая будет передавать скрипту что либо, всегда передавал инфу рандомом или значением, а когда надо что то поменять менял значение. А вопрос состоит в том, стоит ли заниматься этой хернёй и даст ли она мне что нибудь, каких то знаний или опыта, или лучше дальше делать задания по методичке и не заниматься ерундой и тратить время? Хотя бы до конца учебника опа и на моём уровне знаний.
Ответы: >>1287270 >>1287554 >>1287625
Аноним 2018/10/30 19:57:10  №1287267 208
Up
Ответы: >>1287426
Аноним 2018/10/30 20:04:39  №1287270 209
>>1287262
Или даже можно без массивов, но с картой-массивом мне кажется интереснее
Аноним 2018/10/30 23:01:53  №1287320 210
Добрый вечер, не могу понять что не так
https://ideone.com/7Qw2os
почему в итоге прибавляет 5к, а не 1270
Ответы: >>1287323
Аноним 2018/10/30 23:08:44  №1287323 211
Аноним 2018/10/31 05:53:02  №1287383 212
Вкатился в PHP, и обнаружил, что отсутствуют хорошие рекомендации по построению правильных архитектур backend'a, так как каждый видит со своей кучи навоза (как и в js на frontend'e). Значит какой напишешь в силу своего видения говнокод - так и будет работать. Мой всё правильно понимается или всё же в чём-то заблуждаюсь?
Поясните, пожалуйста... Желательно ссылками и примерами, по возможности
Ответы: >>1287875
Аноним 2018/10/31 07:50:40  №1287426 213
>>1287267
Добро пожаловать в тематику
Аноним 2018/10/31 12:26:23  №1287543 214
Подскажите пожалуйста, как настроить сервер, чтобы он выдавал все ошибки? У меня бесплатный хостинг 000webhost.com. Чето не понимаю.
Аноним 2018/10/31 13:06:32  №1287554 215
>>1287262
Думать мало, надо делать тоже, когда садишься и начинаешь конкретно кодить, то проясняются все иллюзии.
Аноним 2018/10/31 14:51:51  №1287625 216
>>1287262
Просто пиши, что угодно, главное кодируй и решай проблемы.
Всё, с чем столкнёшься - крайне полезный опыт.
Аноним 2018/10/31 15:18:02  №1287654 217
Можно ли сделать так, чтобы информация выдавалась кусками через промежутки времени? То есть, загрузилась страница, на ней написано "Привет, Мир". Проходит 2 секунды и появляется следующая строка "Пока, Мир". Проходит еще время и появляется еще что нибудь. Или же подобное делается с помощью жабаскрипт?
Ответы: >>1287657
Аноним 2018/10/31 15:19:12  №1287656 218
1482432455763.jpg (963, 1400x960)
960x1400
Блядский хачик тимлид на собеседовании мне минут пять втирал, что $string.='text'; не будет работать, если я заранее не объявлю $string="";. Хотелось встать и уйти.
Ответы: >>1287666 >>1287677 >>1287708
Аноним 2018/10/31 15:19:37  №1287657 219
>>1287654
>Или же подобное делается с помощью жабаскрипт?
Именно.
Аноним 2018/10/31 15:26:29  №1287666 220
>>1287656
работать то оно будет но кинет нотис
ну и бтв некоторые люди оборачивают ошибки в исключения
так что всё возможно
Ответы: >>1287667
Аноним 2018/10/31 15:27:21  №1287667 221
>>1287666
>работать то оно будет но кинет нотис
Я это ему и говорил.
Аноним 2018/10/31 15:32:31  №1287670 222
Алсо, когд я спросил, почему они используют pg_ вместо PDO, он начал гуглить PDO.
Аноним 2018/10/31 15:40:37  №1287677 223
Ответы: >>1287680
Аноним 2018/10/31 15:42:42  №1287680 224
>>1287677
Нет, они где-то в 7 км от них.
Аноним 2018/10/31 15:59:24  №1287695 225
Какой же я тупооой
Аноним 2018/10/31 16:19:50  №1287708 226
>>1287656
В итоге он признал ошибку?
Ответы: >>1287710
Аноним 2018/10/31 16:26:26  №1287710 227
>>1287708
В итоге я его отсортировал пузырьком и ушел.
Ответы: >>1287721
Аноним 2018/10/31 16:37:31  №1287718 228
>>1286980
Ctrl+U в хроме на любом сайте и верстка твоя
Аноним 2018/10/31 16:44:26  №1287721 229
>>1287710
"Своего первого тимлида, я отсортировал в 16 лет" (с)
Ответы: >>1287725 >>1287726
Аноним 2018/10/31 16:52:20  №1287724 230
15210634003770.png (2021, 1860x2190)
2190x1860
Полтора года начал изучать пхп, за год его более-менее подучил. Чуть более полу года назад на сайте вакансий города где я живу увидел объявление веб-разработчика на пхп/яваскрипт. Я отписался, выполнил пару тестовых заданий, потом два месяца делал простую работу и учил яву - платили 20к в месяц. Потом меня взяли на постоянную основу и спросили сколько я бы хотел получать, я не очень разбирался в оплате и думал что у меня знания плохие и сказал 40к, они сказали что ок.
Суть в том, что я уже пол года работаю на эту зп, и думаю что я могу получать намного больше т.к. даже мои входные знания были очень даже неплохие. Платить больше мне в этой компании вряд ли будут. И я думаю - стоит ли увольнятся и искать новую работу (а я постоянно вижу вакансии где платят больше), или я еще зелёный и мне стоит работать где я работаю?
Думаю спросить поднимут ли мне зп до 55к, если нет, то уволюсь. Или 40 это норм зп для веб разработчика?
Студия занимается созданиями местных сайтов.
Не могу решить что делать, помоги аннован. Просто, я скопил немного денег т.к. живу с родителями, и мог бы пол-года год еще поучиться и найти еще лучше работу, но я не уверен что смогу.
Ответы: >>1287865 >>1287866
Аноним 2018/10/31 16:52:51  №1287725 231
maxresdefault.jpg (35, 1024x576)
576x1024
Аноним 2018/10/31 16:53:13  №1287726 232
image.jpeg (217, 600x600)
600x600
Аноним 2018/10/31 17:32:15  №1287774 233
чем так хорош ларавел,что он щас в топе?
Аноним 2018/10/31 17:57:13  №1287796 234
>>1287128
Просто мне показалось, что отвечают только на вопросы с проектами, а на задачки нет, вот я подумал что это не ОП.
Аноним 2018/10/31 20:10:38  №1287865 235
>>1287724
Посмотри на опыт западных коллег: там сначала получают оффер, а потом с этим оффером идут к боссу, и торгуются, кто больше заплатит. Таким макаром очень быстро поднимают ЗП, и часто скачут между конторами.
Вообще там собеседования что-то типа спортивной дисциплины - на них ходят даже не ради офферов, а просто чтобы понимать, сколько ты стоишь на рынке, имеешь ли прогресс, или начал закисать и пора шевелиться.
Это у нас пиздец: поговорил с конкурентом - все, предатель, расстрел на месте.

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

Да, есть и адекватные конторы, в этой сфере вообще кадровый голод, и, если босс не дурак (что в РФ редкость), и личных конфликтов нет, выгоднее тебе просто немного поднять ЗП, потому что с тебя все равно имеют намного больше.
Но тут уже опасность для тебя - можно 10 лет отработать в одной конторе, каждый год увеличивая ЗП на 5к, и к концу получая аж 90к(!), а можно за эти же 10 лет сменить несколько контор, каждый раз получая прибавку в 10-20к, и к концу иметь за уже под 200, плюс огромный опыт: сидя в одной конторе, при всем желании стать профи, сгниешь заживо, т.к. узкая специализация и однотипные задачи., уже через год поймешь, что ничего нового тебе не светит, кроме как клепать одно и то же ради денег, не прогресс, а застой, рутина.

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

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

Но и голову тоже нужно включать.
Если ты понимаешь, что на деле ничего из себя не представляешь, стоит прибегнуть к концепции трамплинов: используй первую работу чтобы наработать опыт, а когда поймешь свою реальную стоимость - сможешь выйти на рынок сам, и это будет уже не попытка найти хоть какую-то работу, а выбор наиболее достойного места из нескольких предложений.
Ответы: >>1288227
Аноним 2018/10/31 20:11:50  №1287866 236
>>1287724
А входные какие были знания конкретно можешь рассказать?
Ответы: >>1288227
Аноним 2018/10/31 20:43:26  №1287875 237
>>1287383
Заблуждаешься
Да, каких-то четких рекомендаций тут нет, но в целом архитектура бекенда устоялась.
Всегда есть роутер, есть реквест, а иногда и ответ (мало где, в основном везде свои велосипеды с глюками), есть конфиг (тут пожалуй больше всего велосипедов), есть ядро, есть контроллер, есть кэш, иногда контейнер зависимостей (довольно редко на самом деле), и конечно же какой-нибудь недо-orm.

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

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

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

И без ООП, конечно, никакой толковой архитектуры не выйдет, как ни крути
А с ООП забываешь про include-ад, и просто юзаешь автозагрузчики

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

И конечно стоит подумать о тестах. Подумать, потому что на практике нигде не видел, чтобы их использовали. Зато почти все публичные модули идут с тестами.
Идея заманчивая, но начать её использовать не так просто - кажется, что оверхед будет слишком большой, хотя на деле оно наоборот, экономит время: на тестах ты быстро формализуешь задачу, быстро натыкаешься на баги, и быстро приводишь код в соответствие с задачей, а без тестов ты быстро нахуевертишь гору кода, быстрее тестов, но потом потратишь в десять раз больше времени, ползая по коду, в попытках отловить непонятно откуда взявшиеся странные баги, потому что магия, мать её
Ответы: >>1287998
Аноним 2018/11/01 01:08:49  №1287944 238
Аноним 2018/11/01 04:54:31  №1287961 239
Вопрос по ООП-Будильнику

>- для данного текущего времени получить ближайшую активную тревогу, которая сработает в будущем. Если таких несколько, можно вернуть любую из них. Это будет использоваться для показа времени ближайшего срабатывания будильника на экране.
>- для данного текущего времени получить активную тревогу, которая срабатывает ровно в это время. Это будет использовано для проигрыша мелодии. Например, если в списке есть тревога на 08:00 в Пн, Ср, Пт и сейчас среда 08:00, то нужно ее вернуть. Если тревог больше одной - можно вернуть любую.
>- для данного текущего времени удалить из списка все одноразовые тревоги, которые больше никогда не сработают.

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

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

Заранее спасибо.
Ответы: >>1287965
Аноним 2018/11/01 05:15:26  №1287965 240
>>1287961
Можно сократить код мелодии подобным образом?

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

https://ideone.com/DcsQxM
Аноним 2018/11/01 06:05:56  №1287983 241
Как можно вывести значение массива, если известен его индекс?
Ответы: >>1287992 >>1287996
Аноним 2018/11/01 06:51:06  №1287992 242
>>1287983
Открой уже учебник, не самоунижайся.
Аноним 2018/11/01 06:57:32  №1287996 243
Аноним 2018/11/01 06:58:31  №1287998 244
>>1287875
Спасибо. Значит исходя из твоего ответа чистый PHP никому не нужен.
Однако мне нравится чистота без каких-либо фреймворков и сторонних библиотек.
Мне трудно представить трудно отслеживаемые баги, так как разработка кода процесс детерминированный.
ООП нужно только для энтерпрайза по моему личному опыту, поэтому предпочитаю ПОП, так как наиболее гибко.
Роутеры, контроллеры и прочее это разве не относится к MVC и MVVC, а если так, то действитетльно ли нужно это?
Алсо спасибо за мудрые рекомендации к последующему обдумыванию.
Ответы: >>1288010
Аноним 2018/11/01 07:19:38  №1288010 245
>>1287998
С чего это не нужен? Крупные проекты пишутся на нативном php. Любой фреймворк - это зависимость. Чем больше проект, тем больше проблем с зависимостями.
Сегодня в моде микросервисная архитектура. Использование шаблонов ООП в этой архитектуре зависит от ситуации. Последний проект, в котором я участвовал, был на микросервисах. У нас только в двух использовались шаблоны. И то, самые простые, типа фабрики.
Аноним 2018/11/01 14:34:05  №1288227 246
>>1287866
Прошёл курс опа, знал цсс/хтмл/пхп неблохо, мог бы написать сайт, фронт, бэк, всякие парсеры етц, умею в медиа. Когда пошёл на работу в целом особо нового не узнал, только приёмы которыми пользуются на работе и с 0 почти яву подучил, но не то чтобы силён в ней.

>>1287865
Спасибо что расписал, сегодня сказал что я бы хотел больше получать и был послан со словами - не нравится увольняйся. 2 месяца дорабатываю и после НГ увольняюсь.
Ответы: >>1288357 >>1288583
Аноним 2018/11/01 16:59:45  №1288357 247
>>1288227
>яву
java или javascript?
В перзвоним тредах говорят, что декабрь-январь мертвый сезон. Увольняйся сейчас или жди до февраля.
Аноним 2018/11/01 17:03:45  №1288365 248
15401459034652.jpg (52, 601x390)
390x601
БлЯдь сука ебесь оно в рот нахуй блядь сука как нахуй получить доступ CGI-BIN ёбанный рот этага ядра блядь
Аноним 2018/11/01 17:05:53  №1288367 249
hhh.png (42, 1068x673)
673x1068
Помогите дауну
Русские буквы выводятся как на пики, как решить?
Ответы: >>1288375
Аноним 2018/11/01 17:21:26  №1288375 250
>>1288367
все, исправил, сори
Аноним 2018/11/01 19:21:33  №1288440 251
image.png (471, 640x640)
640x640
Ответы: >>1288519
Аноним 2018/11/01 21:56:48  №1288519 252
>>1288440
тебе нужно почитать про MVC паттерн и ООП в целом.
Начни с написания роутера.
Не ОП
Ответы: >>1288520 >>1288527
Аноним 2018/11/01 22:01:04  №1288520 253
>>1288519

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

А вот "толстые" (большие) контроллеры - это нехорошо.
Аноним 2018/11/01 22:13:47  №1288527 254
Аноним 2018/11/02 05:02:26  №1288583 255
>>1288227
Прямо все задания опа сделал, включая тестхаб?
Аноним 2018/11/02 07:33:47  №1288656 256
В чем вы пишите свой код?
Ответы: >>1288694 >>1288757
Аноним 2018/11/02 08:31:42  №1288694 257
Аноним 2018/11/02 10:34:00  №1288757 258
Аноним 2018/11/02 12:02:10  №1288795 259
С пдо вобще не работал, а манул дочитал лишь до середины (Connections and Connection management). Решил, что потом дочитаю и начал делать. И вот присваиваю пременной значение ответа sql, а код выполняется не дожидаясь этого ответа, и на тесте на нулл выдает true. Выставил задержку в качетсве костыля, но она тоже не помогает, а ждать на каждом обращении более 0.15 сек не по барски. Что делать?
Ответы: >>1288805 >>1288827
Аноним 2018/11/02 12:22:10  №1288802 260
>>1286462

самый херовый совет который я только видел. с фтронта на бек соскакивали ?

preg_replace - принимает 2 массива, что заменять - регулярка, на что заменять - регулярка
Ответы: >>1288804
Аноним 2018/11/02 12:24:41  №1288804 261
slow.jpg (29, 300x270)
270x300
>>1288802
str_replace может просто в тупую принимать 2 массива
str_replace(["a","b"],["z","x"],$str) - заменит a->z, b->x

нубы обычно не читают доку. что не показано на ютубе, того не существует
Аноним 2018/11/02 12:25:07  №1288805 262
>>1288795

Минимальный пример кода в студию. Напиши, что он выводит, и что, по-твоему, должен вывести. Тогда я смогу глянуть и за 5-10 секунд понять, в чем дело. А по твоему описанию ничего не понять.
Ответы: >>1288813
Аноним 2018/11/02 13:04:36  №1288813 263
Ответы: >>1288820 >>1288822 >>1288824
Аноним 2018/11/02 13:33:27  №1288820 264
>>1288813

sleep надо убрать.

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

Также, включи выброс исключения при ошибке: http://php.net/manual/ru/pdo.setattribute.php ( PDO::ERRMODE_EXCEPTION: )

Также, включи отображение ошибок в php.ini (display_errors = 1), если оно не включено. Но не делай так на продакшене!

Я подозреваю, проблема в том, что ты почему-то не включил вывод ошибок (хотя во всех моих уроках написано, что надо его включать), происходит какая-то ошибка, но так как ты не включил их вывод, ты о ней не знаешь и придумываешь неправильные объяснения происходящему, ставишь sleep, хотя он ни на что не влияет итд.
Ответы: >>1288870
Аноним 2018/11/02 13:34:12  №1288822 265
>>1288813

Также, на будущее: минимальный пример лучше писать без использования класса, просто последовательность команд.
Ответы: >>1288870
Аноним 2018/11/02 13:36:30  №1288824 266
>>1288813

Также, вместо if ($ans == null) надо в примере писать var_dump($ans); Чтобы точно видеть, что возвращается, а не гадать.

У меня такое ощущение, что ты пропустил основы, и сразу берешься за сложные темы, в итоге путаешься. Это конечно не имеет отношения к багу, и это твое личное дело, но по моему это плохая идея, а на собеседовании это легко определить.
Ответы: >>1288870
Аноним 2018/11/02 13:39:32  №1288827 267
>>1288795

Твое объяснение неправильное. PDO работает синхронно, и его методы не возвращают управление, пока не получат ответ от БД или пока не будет обнаружена ошибка. Соответственно, от того, ставишь ты sleep или нет, ровным счетом ничего не зависит. Тем более, что ты его ставишь уже после выполнения взаимодействия с БД.
Аноним 2018/11/02 14:50:57  №1288870 268
>>1288820
>ATTR_PERSISTENT
Ну мне нужно минимизировать время, а запросов к базе много. Если есть альтернативы, то я буду не против. А вообще скорее всего перепишу все на prepare, без кривого класса.
>display_errors
Вроде все включено
>PDO::ERRMODE_EXCEPTION:
Он тоже вроде включен по умолчанию, но ошибки через try catch нет
>>1288824
Возвращает пустой массив, но если передвинуть на строчку вниз, то вернет все что запрашивал.
>>1288822
Ответы: >>1288882 >>1289076
Аноним 2018/11/02 15:12:32  №1288882 269
>>1288870
Хотя возможно это действительно не в pdo вина. Просто это выглядело достаточно странно, когда у меня ПК был под нагрузкой, то возвращался пустой массив, а если внутри if я убирал die, то программа после выполнялась вполне нормально.
Аноним 2018/11/02 17:39:57  №1288974 270
Дублирую из прошлого треда.
Задачка про банкомат - https://ideone.com/yC58nJ
Не могу сделать проверку на достаточное количество купюр в банкомате.
"Лиличка" - https://3v4l.org/9nNiF
Не предсталвяю, как вывести столбцы рядом друг с другом.
Ответы: >>1289005 >>1289006
Аноним 2018/11/02 18:34:17  №1289005 271
>>1288974
А если через for перебирать по каждому символу, и в строчке выводить тип $lines[0][$i]
Аноним 2018/11/02 18:34:43  №1289006 272
>>1288974
А если через for перебирать по каждому символу, и в строчке выводить тип $lines[0][$i]
Аноним 2018/11/02 20:31:20  №1289076 273
>>1288870

>>PDO::ERRMODE_EXCEPTION:
> Он тоже вроде включен по умолчанию, но ошибки через try catch нет

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

Прочитай внимательно мануал, что стоит по умолчанию: http://php.net/manual/ru/pdo.error-handling.php

Также, try/catch писать не надо. Почитай урок про исключения: https://github.com/codedokode/pasta/blob/master/php/exceptions.md
Аноним 2018/11/03 06:41:56  №1289176 274
Похоже, вкатываться в PHP с отвращением к верстке бесполезно. Все жуниорские вакансии - фулл-стек с упором на жабаскрипт.
А жаль, бэк ведь писать интересно.
Ответы: >>1289242 >>1290527
Аноним 2018/11/03 07:35:53  №1289183 275
какой фреймворк самый понятный?
Аноним 2018/11/03 07:40:50  №1289185 276
Ответы: >>1289187
Аноним 2018/11/03 07:44:34  №1289187 277
Ответы: >>1289188
Аноним 2018/11/03 07:45:51  №1289188 278
Аноним 2018/11/03 09:35:01  №1289221 279
Ответы: >>1289225
Аноним 2018/11/03 09:43:31  №1289225 280
1497998043177.png (275, 584x562)
562x584
Аноним 2018/11/03 10:48:43  №1289242 281
>>1289176
В твоей мухосрани нет ни одной вакансии с чистым беком на пхп (юи2/лара)?
Ответы: >>1289243
Аноним 2018/11/03 10:50:38  №1289243 282
>>1289242
Есть. Для сеньоров.
Ответы: >>1289384
Аноним 2018/11/03 14:20:55  №1289314 283
>>1289183
Все MVC фреймворки похожи как близецы
rwerw 2018/11/03 17:10:15  №1289371 284
test
Аноним 2018/11/03 17:13:12  №1289373 285
Ответы: >>1289374 >>1289494 >>1289993
Аноним 2018/11/03 17:14:36  №1289374 286
>>1289373
Посмотрел твой код и думаю программирование не твое,парень...
Ответы: >>1289376
Аноним 2018/11/03 17:17:06  №1289376 287
Ответы: >>1289379
Аноним 2018/11/03 17:23:08  №1289379 288
>>1289376
Логики нет, складывается впечатление что у тебя в школе по математике были одни двойки.
Ответы: >>1289380
Аноним 2018/11/03 17:26:19  №1289380 289
>>1289379
Чего конкретно исправить и какая логика верная?
Ответы: >>1289381
Аноним 2018/11/03 17:27:03  №1289381 290
Аноним 2018/11/03 17:37:14  №1289384 291
>>1289243
они могут быть не против ждунов
Аноним 2018/11/04 01:13:14  №1289494 292
bump треду
https://www.ideone.com/vORnwM гляньте, пожалуйст. Может программирование - не мое, как у этого анона и я зря стараюсь?>>1289373
Ответы: >>1289505
Аноним 2018/11/04 01:28:10  №1289495 293
>>1286962
Что находится в переменной $array?
Аноним 2018/11/04 01:38:03  №1289496 294
Ищи как менять настройки php.ini на своём хостинге. Нужно поменять настройки display_errors = On и error_reporting = E_ALL.
Аноним 2018/11/04 03:01:57  №1289505 295
>>1289494
еще бамп


Аноны, помогите, пожалуйста, с задачкой на навигатор! Во первых, у меня выскакивает ошибка Warning: Use of undefined constant by - assumed 'by' (this will throw an Error in a future version of PHP). Что это за предупреждение такое? Вот кусочек моей функции https://www.ideone.com/SbFo4J. У меня он ищет путь по наименьшему кол-ву прыжков, а я хочу по времени, но не могу сообразить как. Рассуждал по логике, что функция должна прыгать от одной станции к другой в поиске искомой (чего, в принципе, добился). Тип, если цель не по соседству, то запрыгнуть в любую и снова искать, там снова прыгнуть и снова искать. Но как по времени это все провернуть? Заставлять его не убивать себя после найденного маршрута, а искать всевозможные вариации и сравнивать время? Я в замешательстве. Помогите, пожалуйста. Может и правда программирование - не мое?или сначала протрезветь?
Ответы: >>1289723
Аноним 2018/11/04 03:55:14  №1289508 296
image.png (24, 1121x251)
251x1121
>>1286970
Всё работает. Ты криворукий просто.
Аноним 2018/11/04 12:04:06  №1289611 297
В задаче, где надо привести телефоны к одному виду написал /^(\+?\s*7)?/ для поиска +7 и замены на 8. С номерами, которые начинаются на +7 проблем нет, а у номеров, начинающихся на 8 появляется ещё одна 8. ЧЯДНТ
https://ideone.com/u4b6h9
Ответы: >>1289617
Аноним 2018/11/04 12:24:31  №1289617 298
Ответы: >>1289631
Аноним 2018/11/04 12:50:44  №1289631 299
>>1289617
Спасибо. Вижу, что я ступил.
Аноним 2018/11/04 16:30:00  №1289723 300
>>1289505
Вроде все сделал, программа исправно прокладывает маршруты, но есть одно но: почему если я ставлю return вместо exit() скрипт сходит с ума, зацикливается и начинает искать вообще всевозможные пути до искомой точки? Разве return не останавливает выполнение функции и возвращает значение? Не выкладываю код т.к. по мере написания он оброс кучей мусора(я в рабочем скрипте, который написал ранее, дописывал новый код, чтобы не сломать то, что работает и проверял что изменилось), от которого я сейчас планомерно стараюсь избавиться. И мне захотелось, чтобы фукнция отдавала мне массив пройденного пути, а не прописывала путь по мере выполнения т.к. она иногда может прокладывать путь, но не писать как она это сделала.
Ответы: >>1289726
Аноним 2018/11/04 16:35:31  №1289726 301
>>1289723
return прерывает работу текущей функции, поднимая тебя "наверх" в стеке вызовов.
Ответы: >>1289736
Аноним 2018/11/04 16:51:30  №1289736 302
>>1289726
Понял, спасибо. Можешь по задачке подсказать? Я сейчас только понял, что он отображает текстом в принципе неверный маршрут, но сам каким-то образом добирается до точки верно. https://ideone.com/1U7MMZ вот моя функция. Где кусок кода взят в комментарий - это старый код, который ищет по кол-ву прыжков. Я извиняюсь, что расписано так убого, но мне правда нужна помощь.
Аноним 2018/11/04 17:02:20  №1289740 303
Делаю задачку "сверху вниз", как "поднять" вывод текста после нескольких "\n" ? Что бы следующая строка выводилась справа от предыдущей а не справа и снизу
Ответы: >>1289748 >>1290496
Аноним 2018/11/04 17:07:03  №1289748 304
>>1289740
А не пробовал выводить каждый символ каждого предложения построчно? Ну то есть "кошка любит молоко" выводилось сначала к, потом л, потом м, дальше \n и следующая буква. Лично я таким способом делал но не доделал
Ответы: >>1289755
Аноним 2018/11/04 17:26:39  №1289755 305
>>1289748
можно попробовать конечно, но придётся переписывать саму суть кода. Спасибо
Аноним 2018/11/04 18:18:30  №1289763 306
Аноны, подскажите пожалуйста, как добавить на страницу интерактивные кнопки? Читаю про всякие $_GET $_FORM, но не могу понять как этим пользоваться (читай - у меня нихера не работает). В мануале этого нет. Где это можно прочесть? Молю
Аноним 2018/11/04 19:12:36  №1289794 307
>>1281709
Тольятти опять протёк?
Аноним 2018/11/05 03:36:33  №1289923 308
Почему у меня padLeft из учебника выдает ошибку? Uncaught Error: Call to undefined function padRight(). Тип я ее задавать должен или что?
Ответы: >>1289924
Аноним 2018/11/05 03:40:34  №1289924 309
>>1289923
А, понял, дико извиняюсь. Мне почему то показалась, что это стандартная функция
Аноним 2018/11/05 06:41:44  №1289947 310
54295124p0.png (463, 670x943)
943x670
Какой ЖС фрейморк учить симфонидауну? В ЖС тред не посылайте, там токсичность.
Аноним 2018/11/05 08:32:42  №1289974 311
Иду на собеседования для вакансии, где требуется "знать основы PHP".
Какие вопросы могут задать?
Аноним 2018/11/05 08:33:40  №1289976 312
>>1289947
Это элитный рнр-тред, катись нахуй отсюда со своим ебаным ЖС.
Аноним 2018/11/05 09:11:00  №1289993 313
>>1289373
Анон, для начала прочти о том, как следует оформлять код. Когда смотришь на твое решение задачи, вообще отпадает желание в чем-то разбираться. Как минимум:
1. Поставь пробел между операторами (=/>/</==).
2. Поставь фигурные скобки в операторах условия (if/elseif/else).
3. До и после строки, где ты определяешь функцию или класс нужно оставлять один пробел.
4. Фигурные скобки, определяющие начало тела функции либо класса, ставятся на следующей строке.
5. Убери лишние пробелы и табы
Ознакомься с гайдлайнами по оформлению PHP-кода:
1. https://www.php-fig.org/psr/psr-1/
2. https://www.php-fig.org/psr/psr-2/
Помни, анон, код больше читается, нежели пишется. Даже если ты пишешь решение задачки, код которой увидит и забудет небольшое количество анонимусов с двача, все-равно не ленись и пиши его аккуратно!
Ответы: >>1290163
Аноним 2018/11/05 09:23:53  №1289998 314
>>1289947
Начни с React/Redux. Попробуй написать проект, который на основе какого-нибудь публичного API выводит списки, где есть пагинация или постраничная навигация, а при нажатии на какой-либо элемент из списка перенаправляет на более детальную страницу об элементе используй react-router. Вот список открытых API:
https://github.com/toddmotto/public-apis
Если хорошо умеешь в верстку, на grid/flexbox с sass создай структуру проекта, если нет, можно использовать react-bootstrap или material UI.
Для начала, только средствами React компонентов, попробуй написать простой конвертер валют или вывести табы с днями недели и погодой. А затем приступай к более сложному проекту, в котором надо управлять состоянием здесь вступает в игру redux .
Экосистема довольна обширная, и походу дела необходимо будет много нового узнать.
После react/redux vue/vuex дается легко. в процессе ознакомления с js, поглядывай в сторону typescriprt. Насчет Angular ничего сказать не могу.
Ответы: >>1290027 >>1290348 >>1290354
Аноним 2018/11/05 09:49:47  №1290010 315
>>1281726
Какая разница, что у тебя на домашнем компьютере?
>>1282306
А почему бы не делать сортировку по баллам дефолтно, если не задан параметр sort_by? Это намного логичнее, чем заниматься подстановкой параметров в ссылки.
>>1282527
Посмотри за Flux, его реализовали в React/Redux например.
>>1283377
Во-первых, студентам один год дают бесплатно, во-вторых можно всегда взять VSCode и настроить. Мне в компании хотели лицензию выдать, но я имаксер.
>>1289947
Лучше всего React/Redux, ибо порог вхождения минимален.
>>1289183
Slim/Silex.
Ответы: >>1290292
Аноним 2018/11/05 10:16:03  №1290019 316
>ибо порог вхождения минимален.
Анон, не будь таким снобом.
Аноним 2018/11/05 10:33:48  №1290027 317
>>1289998
>Начни с React/Redux
Так и думал.
>Если хорошо умеешь в верстку
Вообще не умею.
Ответы: >>1290292
Аноним 2018/11/05 13:05:55  №1290132 318
Аноним 2018/11/05 14:30:24  №1290163 319
>>1289993
Спасибо,учту, а есть чего по самому коду?
Ответы: >>1290281
Аноним 2018/11/05 18:47:24  №1290275 320
image.png (3, 338x83)
83x338
Аноны, прошу вас, помогите. Какого хуя это не работает?
//Функции выравнивания
function padRight($string, $length)
{
\t$padRight = str_pad($string, $length, " ", STR_PAD_RIGHT);
\treturn $padRight;\t
}
function padLeft ($string, $length)
{
\t$padLeft = str_pad($string, $length, " ", STR_PAD_LEFT);
\treturn $padLeft;
}

// Заголовок таблицы
echo padRight('Сотрудник', $col1) .
padLeft('Часы', $col2) .
padLeft('Ставка', $col3) .
padLeft('З/п', $col4) . "\n\n";


Оно выравнивает данные, но не выравнивает шапку. Это пиздец какой-то, очко горит блять
Ответы: >>1290322
Аноним 2018/11/05 19:02:30  №1290281 321
>>1290163
что у тебя в соl1 и т.д. приходит то?
Аноним 2018/11/05 19:18:17  №1290292 322
>>1290010
> Во-первых, студентам один год дают бесплатно
Даже не один, можно продлевать лицензию по мере перехода с курса на курс. Например у меня в сумме лицензия с 2014-го по 2019-й, и как только закончится - сразу куплю, оно того стоит. Ещё у них там скидки появляются (друг купил PHPStorm за полцены в день дружбы лол: https://blog.jetbrains.com/blog/2018/07/30/celebrate-this-friendship-day-with-jetbrains-and-unwrap-your-presents/ )

>>1289947
А как не быть токсичным, если ты сам себя дауном называешь? И зачем тебе распыляться на два фронта, пиши себе бекенд, в чём проблема? Или работодатели не могут отдельно фронта нанять?

>>1290027
Без вёрстки сможешь только туду-списки по туториалам делать. Сейчас в моде styled components (подход когда обеспечения модульности вёрстку кладут рядом с JS кодом), для разработки на фронтенд фреймворке нужно уметь в вёрстку:
- https://www.styled-components.com/
- https://vuejs.org/v2/guide/single-file-components.html
Ответы: >>1290331 >>1290527
Аноним 2018/11/05 19:31:12  №1290300 323
Почему в, например, цикле
foreach ($hours as $hour){
if ($hour > 40){$hour += 10;}
}
Переменная $hour увеличивается, а при вардампе вне цикла она остается прежняя? И как с этим бороться кроме как тупой перестановкой внутри цикла (это же целая строка!)?
Ответы: >>1290333
Аноним 2018/11/05 20:23:34  №1290322 324
Аноним 2018/11/05 20:29:06  №1290331 325
>>1290292
> https://www.styled-components.com/

Мне не нравится. Что мешает верстку для компонента класть в отдельный CSS файл? Их подход:

- по производительности очень плох
- способствует загромождению шаблонов стилями
- не взаимодействует нормально с devtools
Ответы: >>1290407
Аноним 2018/11/05 20:30:57  №1290333 326
>>1290300

$hour это не элемент массива. Это переменная, в которую копируется значение из текущего элемента массива. От того, что ты её изменишь, в массиве ничего не поменяется. Где ты прочел, что так можно делать?

Мануал: http://php.net/manual/ru/control-structures.foreach.php
Аноним 2018/11/05 20:48:53  №1290348 327
>>1289998

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

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

Опять же, прежде чем учить SASS, надо освоить CSS. Так как SASS это препроцессор для CSS.

Кстати, ты, видимо, хорошо разбираешься во фронтенде? Не хочешь глянуть нашу задачу на SPA - она ведь несложная? А что что-то никто ее до сих пор не решил (( https://github.com/codedokode/pasta/blob/master/js/spa.md

Заметь, кстати, это та задача, где SPA нужен и приносит пользу. В отличие от всяких дурацких TODO списков и других типичных задач, которые проще сделать без SPA, на формах и PHP, и где реакт это оверкилл.
Аноним 2018/11/05 20:55:37  №1290354 328
>>1289998

То есть, я имею в виду, в любом случае, сначала надо освоить основы верстки (у нас в шапке, кстати, есть задания), а потом уже браться за флексбокс, и тд. Реакт можно начинать изучать и параллельно, но без знания верстки им много не сделаешь.
Аноним 2018/11/05 21:32:56  №1290405 329
Мой первый код,поздравьте меня.

<?php
error_reporting (-1);
echo "Бросаем кубик\n";
$random= mt_rand(1,6);
echo "Выпало $random "; / Я молодец :) /
?>
Ответы: >>1291256
Аноним 2018/11/05 21:33:25  №1290407 330
>>1290331
> по производительности очень плох
Но это ведь не инлайн стили, там в итоге один css файл собирается. Не вижу причин для проседаний.

> способствует загромождению шаблонов стилями
Стили находятся не в шаблоне, а в компоненте. В случае с Vue - это отдельный .vue файл, в случае с реактом будет просто вёрстка вверху файла. Компоненты обладает высоким cohesion (зацеплением?), из-за чего их очень удобно переиспользовать.

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

Из недостатков отмечу, что не работает emmet синтаксис для написания стилей, так как IDE не видит стили внутри JS кода (но это просто плагин для реакта нормальный не сделали, для Vue сделали).

> Что мешает верстку для компонента класть в отдельный CSS файл?
Тоже хороший вариант. Я хотел акцентировать внимание на том, что вёрстка во фронтенд фреймворках идёт бок-о-бок с JS кодом и её обязательно нужно знать.
Ответы: >>1290427
Аноним 2018/11/05 21:56:05  №1290427 331
>>1290407

>> не взаимодействует нормально с devtools
> Там есть соурсмапы, так что всё тоже самое.
Нет, там будут в HTML-коде CSS-классы вроде x76gdydsv, которые невозможно читать. Плюс, sourcemaps это зло: они часто глючат, требуют усилий по их поддержке, могут быть не той версии, итд. Лишняя возня. Плюс, при попытке отредактировать что-то в devtools они отключаются.
Аноним 2018/11/05 23:55:33  №1290470 332
Аноны, как заставить пхп свистеть пердеть и двигаться? Потихоньку начал еще читать вложенный учебник JS, но при прочтении создается ощущение, будто я все это уже видел. Хочу кнопки нажимать и смотреть как это работает, а не в код вбивать свои переменные.
Ответы: >>1290471
Аноним 2018/11/05 23:59:11  №1290471 333
>>1290470
>Хочу кнопки нажимать и смотреть как это работает
"php -a" в консоль и играйся сколько влезет
Ответы: >>1290570
Аноним 2018/11/06 05:18:16  №1290496 334
>>1289740
А ты придумай алгоритм.
Аноним 2018/11/06 06:47:24  №1290510 335
Аноним 2018/11/06 07:47:31  №1290527 336
>>1290292
>И зачем тебе распыляться на два фронта
---> >>1289176
Ответы: >>1290530
Аноним 2018/11/06 07:51:08  №1290530 337
>>1290527
>
Хуёвый работодатель, чо. У нас фронт и бек - отдельные люди со специализацией.
Аноним 2018/11/06 09:46:15  №1290570 338
>>1290471
А чтобы в браузере это было?
Ответы: >>1290580
Аноним 2018/11/06 10:09:57  №1290580 339
Ответы: >>1291131
Аноним 2018/11/06 12:45:43  №1290635 340
Хочу спарсить сайт. Юзаю file_get_contents, выдаёт страницу-заглушку типа "реквест не может быть выполнен бла-бла-бла". Похоже, на сайте стоит что-то типа клаудфлары.
Как обойти? UserAgent-заголовки пробовал подменять - нихуя.
Ответы: >>1290637 >>1292641
Аноним 2018/11/06 12:50:58  №1290637 341
Screenshot1.png (14, 1129x247)
247x1129
>>1290635
Вот такую хуйню выдает вместо требуемой страницы, короче говоря. На других сайтах тестил - всё норм.
Ответы: >>1290643
Аноним 2018/11/06 13:03:32  №1290643 342
Аноним 2018/11/06 14:23:08  №1290686 343
>>1281608 (OP)
F


class phone
{
public $names = array(
Pavel' => '12345',
'Rita' => '11223',
'Egor' => '22334',
'Masha' => '33445',
'Lev' => '44553',
'Varya' => '55443');

\tfunction getNumberByName(){
\t\techo $names['Pavel'];
\t}
}
$obj = new phone;
$obj->getNumberByName();
Ответы: >>1290687 >>1292641
Аноним 2018/11/06 14:23:27  №1290687 344
>>1290686
Дорогой анон, почему не работает?
Ответы: >>1290689
Аноним 2018/11/06 14:28:39  №1290689 345
>>1290687
Потому что $names у тебя не переменная, а поле объекта.
Почему, в таком случае, ты обращаешься к нему как к переменной?
Аноним 2018/11/06 18:29:17  №1290865 346
Ребята, посоветуйте книг по теории по php что бы знать за память и все такое ...
Ответы: >>1291065
Аноним 2018/11/07 03:47:58  №1291065 347
Аноним 2018/11/07 08:43:18  №1291131 348
>>1290580
Хватит издеваться, мне правда интересно. Я сделал простенькую задачку опа про вопросы через ООП, которые надо вводить или выбирать ответ, написал под это функцию создания объекта и прочие прелести и понял, что хуле я как лох вбиваю все сам в переменную и смотрю результат, если моя программа сама может все сделать, только скажи, даже переменную сгенерирует. Хочется оформить все в пользовательский интерфейс. Читаю учебник js и чувствую, что я это уже где-то видел. Хочется уже программами срать а не в алфавит играться
Ответы: >>1292103
Аноним 2018/11/07 09:48:17  №1291150 349
Может у кого-нибудь есть на примете простенькое(или нет, главное чтобы было рабочим и можно было от него оттолкнуться) приложение по управлению почтовыми сервисами?
В духе посмотреть входящие, отправленные, отправить новое.
С меня тонна нефти
Аноним 2018/11/07 14:06:28  №1291256 350
>>1290405
ты действительно молодец, держи в курсе
Аноним 2018/11/07 20:32:27  №1291497 351
Объясните мне зачем нужен parent::, как им пользоваться, что за self (почему не this как в других источниках?)? У меня ниче не циклится и работает как часы.
Ответы: >>1292106 >>1292638
Аноним 2018/11/08 12:18:41  №1291752 352
учу с нуля, совсем нуб, встал на третьем задании из учебника в шапке

https://ideone.com/sY6axO

подскажите что я делаю не так (возможно что все не так)
Ответы: >>1291793
Аноним 2018/11/08 13:37:57  №1291781 353
Пыханы, есть одна сущность, назовем ее КОНКУРС.
Так вот, на конкурс записываются люди.
Нужно сделать рассылку по участникам конкурса с новостями, правилами и прочей инфой.
Как бы вы организовали это?

Вариант 1:
Таблица contest_mail, где будет contest_id, text, subject, targeting. В поле targeting будут записываться параметры: возраст, регион, статус на сайте, и в момент отправки писем, получатели по этим параметрам будут отбираться динамически.
Но как не проебаться, и не выбрать одного и того же человека дважды, если слать письма пачками штук по 100? Пока идея такая: SQL запрос с определенной сортировкой и записью последнего выбранного user_id, который дальше подставлять в этот SQL запрос, чтобы выборка начиналась с него.

2 вариант: все то же самое, только сделать дополнительную таблицу: contest_mail_recipient. Куда в момент сохранения параметров рассылки сразу делать записи, кому и какую рассылку следует отправить. Но минус в том, что при каждом сохранении рассылки куча записей будут удаляться/вставляться. Алсо, если после сохранения получателей, набегут еще человек 100 в конкурс, то они как получатели запишутся только при новом сохранении рассылки.

Так вот, какой метод предпочтительнее: динамический или статический?
Ответы: >>1308859
Аноним 2018/11/08 14:21:21  №1291793 354
>>1291752
https://ideone.com/ejM0XM

все сделал, заработало

проверьте пожалуйста все так?
натыкайте носом в косяки
Ответы: >>1292000 >>1292640
Аноним 2018/11/08 16:20:12  №1291856 355
Untitled.png (6, 1188x41)
41x1188
Ответы: >>1292640
Аноним 2018/11/08 16:56:51  №1291888 356
За сколько по времени можно обучиться , что бы зарабатывать денюшку? не как хобби, а как работа
Ответы: >>1292071
Аноним 2018/11/08 20:00:48  №1291996 357
>>1281608 (OP)
Где я не прав?

<?php

error_reporting(-1);

echo "Lets start the game!\n";

$human1 = mt_rand(1,6);

$human2 = mt_rand(1,6);

$robot1 = mt_rand(1,6);

$robot2= mt_rand(1,6);

echo "Human got $human1 and $human2, robot got $robot1 and $robot2\n";

if (($human1 == $human2) || ($robot1 == $robot2)) {

echo "Double! Greatest luck you ever had!";
exit ();

if (($human1 + $human2) > ($robot1 + $robot2)) {

echo "Human got ($human1+$human2), robot got ($robot1+$robot2), Human won!\n";

}

elseif (($human1+$human2) < ($robot1+$robot2)) {

echo "Human got ($human1+$human2), robot got ($robot1+$robot2), Robot won!\n";

}

}

elseif (($human1+$human2) == ($robot1+$robot2)) {

echo "Human got ($human1+$human2), robot got ($robot1+$robot2), Draw!\n";

}


}



?>
Ответы: >>1292108 >>1292639
Аноним 2018/11/08 20:04:50  №1292000 358
>>1291793
Неплохо, но как бы сделать без твоего
$compSum = ($compDice1 + $compDice2);
?
Аноним 2018/11/08 23:03:03  №1292062 359
image.png (0, 85x50)
50x85
image.png (388, 1027x1200)
1200x1027
Аноним 2018/11/08 23:25:36  №1292071 360
>>1291888
3-6 месяцев с нуля, если в день сидеть >4 часов
Аноним 2018/11/09 04:11:39  №1292103 361
>>1291131
На данном этапе обучения, тебе нужно сконцентрироваться на понимании самих конструкций, что такое объект, что такое поля, методы. Увидеть как объекты взаимодействуют между собой. Чтобы это понять достаточно командной строки. Затем тебе надо будет решить задачу про компанию Вектор (здесь тоже придется обойтись лишь командной строкой). Только потом приступай к использованию php для написания веб-приложений, тогда ты поймешь, как сделать пользовательский интерфейс при помощи форм, получить от пользователя данные, использовать их и отобразить результат.
>я как лох вбиваю все сам в переменную и смотрю результат, если моя программа сама может все сделать, только скажи, даже переменную сгенерирует
Цитируя Мартина Фаулера:
Всякий раз, когда возникает соблазн что-то распечатать, используя print, или написать отладочное выражение, напишите тест вместо этого.
>Читаю учебник js и чувствую, что я это уже где-то видел
Ошибочное чувство, если ты уже это видел, сможешь объяснить в чем разница между this на php и this на js?
Аноним 2018/11/09 04:38:27  №1292106 362
>>1291497
>Объясните мне зачем нужен parent::
https://phpbooktest2.ga/l1/pasta.html Раздел "Наследование Классов".
>что за self (почему не this как в других источниках?)
self - ссылка на текущий класс
this - ссылка на текущий объект
Объекты, инстанцированые от одного класса делят между собой общие поля и методы класса, но могут иметь различные поля и методы объекта.
https://ideone.com/4kTUzx
Аноним 2018/11/09 04:45:29  №1292108 363
>>1291996
Как ты запускаешь этот код? В уме?
Какого хуя? Аноним 2018/11/09 05:54:43  №1292117 364
\\ - не должно же замениться
Ответы: >>1292125 >>1292634
Аноним 2018/11/09 06:35:29  №1292125 365
Ответы: >>1292133
Аноним 2018/11/09 06:39:24  №1292126 366
Пыхач, я прочитал почти всю документации к Yii2, но так и не понял, как сделать так, чтобы имя роута и имя action не совпадали. Например, я хочу, чтобы YobaController::actionPerekat вызывалось не на /yoba/perekat, а, например, на /yoba/ukritie/petekat. До этого я Laravel смотрел, там для этого специальный yaml с роутингом сделали.
Ответы: >>1292143
Аноним 2018/11/09 07:17:16  №1292133 367
>>1292125
Хотел написать, чтобы довены не работающие с регулярками, не писали. Но решил что это очевидно...
Ответы: >>1292638
Аноним 2018/11/09 07:49:07  №1292143 368
>>1292126
'rules' => [
'<controller>/ukritie/<action>' => '<controller>/<action>'
]
Ответы: >>1292147
Аноним 2018/11/09 08:06:48  №1292147 369
>>1292143
Это же нужно в конфиге делать, а не где-то внутри контроллера?
Ответы: >>1292149
Аноним 2018/11/09 08:16:00  №1292149 370
Ответы: >>1292152
Аноним 2018/11/09 08:17:26  №1292150 371
image.png (6, 385x100)
100x385
>>1281608 (OP)
Анон, подскажи, что не так?

Решил я значит поизучать Yii и воспользовался этим видео.
https://www.youtube.com/watch?v=0E4QKJwZok4

Скачиваю wamp, все слово в слово повторяю и на пункте инициализации библиотеки (запуска из-под консоли init.bat) получается хуита:
Ошибка """php.exe"" не является внутренней или внешней"
Прописал путь до версии ПХП - не помогло.

Что не так?
Ответы: >>1292153 >>1292634
Аноним 2018/11/09 08:20:03  №1292152 372
>>1292149
Плохо зделоли, тупо. Спасибо
Аноним 2018/11/09 08:20:14  №1292153 373
>>1292150
Попробуй переменную с путями назвать Path и туда все пути через ; добавить
Ответы: >>1292161
Аноним 2018/11/09 08:42:33  №1292161 374
>>1292153
Все? Т.е. не только на ту версию php, которая сейчас юзается?
Ответы: >>1292163
Аноним 2018/11/09 08:44:26  №1292163 375
>>1292161
Под "все" я имею в виду остальные пути в системе, для Питона или Руби, например. А так для конкретной версии ПХП надо.
Ответы: >>1292165
Аноним 2018/11/09 08:49:34  №1292165 376
image.png (19, 564x252)
252x564
Ответы: >>1292167
Аноним 2018/11/09 08:51:59  №1292167 377
>>1292165
Ага, только 4 строчка лишняя.
Ответы: >>1292168
Аноним 2018/11/09 08:54:26  №1292168 378
>>1292167
Даже так не работает.
Ответы: >>1292169
Аноним 2018/11/09 08:56:04  №1292169 379
Ответы: >>1292170
Аноним 2018/11/09 08:57:01  №1292170 380
Ответы: >>1292171
Аноним 2018/11/09 09:00:23  №1292171 381
>>1292170
Попробуй компуктер перезагрузить
Аноним 2018/11/09 09:37:34  №1292196 382
image.png (119, 480x360)
360x480
>>1281608 (OP)
Неделю назад устроился на первую свою проггерскую работу на пхп. 60к в месяц, не веб студия и не хуитрикс (Laravel юзают и Симфони, в основном пишем RESTApi и непосредственно логику всего, что не на с++), связано с документооборотом, у ребят там масштабы типа портала госуслуг - общая система авторизации и куча ништяков, используют последние технологии, кубернетс, свои фронтендеры, свой девопс, свои с++ ники на подсосе у бэкэнда, короче прямо мечта, а не работа.
Они через 2 часа позвонили с собеседования и пригласили к ним работать. Это было второе собеседование в моей жизни, с первого тоже недавно позвонили и пригласили на работу, правда предложили немного больше, но мне на втором тимлид очень понравился, заебатый чувак, поэтому отказался.

Тимлид еще удивлялся, что я понимаю ОПП, паттерны и SOLID, Dependency Container/injection и т.д., и могу запрос SQL с джоином и каунтом написать, и что у меня есть пара небольших проектиков личных.

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

Еще добавлю - те, кто планирует вкатываться в самое дно:
1) Веб студий и битрикса стало явно меньше, если учитывать то, что я видел на хедхантере год назад.
2) Вы, скорее всего, так и останетесь на этом уровне навсегда, ибо подходы у крупных фирм и у конвеера на дне - просто невероятно разные.
Аноним 2018/11/09 09:41:26  №1292199 383
>>1292196
Еще добавлю забавный факт - на собеседовании я просил 30к, и даже думал, что много прошу, лол блять.
Встроенный пыховский сервер Аноним 2018/11/09 09:44:59  №1292201 384
Есть какая инфа по нем? Я имею ввиду на что он годен вообще? Какое-нибудь рест-апи на нем норм писать? Или он просто для галочки существует?
Ответы: >>1292634
Аноним 2018/11/09 09:46:52  №1292204 385
>>1292196
>Теперь я понимаю почему меня с руками оторвать хотели, если такое, что вы тут творите - норма для начинающих.
Тред не читал, что тут творят? Алсо, ООП и паттерны - это сейчас стандарт, по факту это даже фронт энд макаки сейчас знают, а битрикса столько же, сколько и всегда - овер до хуя. Даже слишком до хуя. Хотел бы я, чтоб его было меньше. У меня бывали случаи, что меня разворачивали из-за его __НЕ__ знания (sic!).
Ответы: >>1292207
Аноним 2018/11/09 09:47:01  №1292205 386
Ответы: >>1292208
Аноним 2018/11/09 10:01:42  №1292207 387
>>1292204
>это сейчас стандарт, по факту это даже фронт энд макаки сейчас знают
Как ты ошибаешься...) ООП - это окей, паттерны - ну с натяжкой кто-то что-то там читал, но о SOLID могут сказать (с пониманием) 10% из собеседуемых (на моей практике), о написании запроса с джоином - это вообще для многих непосильная задача и самое частое оправдание - это "ну мы же на орм/active record/eloquent/что угодно пишем", блять.

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

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

Мимо мидло-синьоро ля пехепехо.
Ответы: >>1292631 >>1292632
Аноним 2018/11/09 10:06:11  №1292208 388
>>1292205
У разработчика лендингов в веб студии подгорело?
Аноним 2018/11/09 12:05:19  №1292273 389
8697333.gif (81, 360x288)
288x360
Моя ужасная история. Сократили с работы, денег примерно было на год не работать (6 месяцев я уже проебал) и было решно вкатывать в веб. Т.к. есть товарищи жс ниньдя выбор пал первым яп учить жс. В начале дрочил кантора, точнее не дрочил, а игрался с формами попутно гугля и читая нужные мне главы. Потом начал ковырять жквери, не долго, может неделю-две, понял что этот то же жс только с МАГИЕЙ, ставишь $ и всё работает. Дальше пошёл в реакт, и сейчас ковыряю его, редуксы всякие не смотрел. Верстку особо не смотрел, никаких ледингов не верстал, верстку освоил чисто на том уровне чтобы работаь с ДОМом. Т.е. знаю пару css селекторов и основные хтмл артибуты.
Но всё чаще грусть тоска меня съедает когда я открываю hh, вакансий жунов жс без опыта почти нет, а если и есть то для этого ты уже должен быть версталой, знать препроцессоры, галпы, вебпаки, адаптивно верстать и всё вот это. Т.е. подразумевается что они больше нацелены на верстальщиков с минимальным знанием жс, которые будут верстать в реакте не забивая себе голову чем-то сложным. Т.е. вакансий нет блять. Но мне постоянно всплывают в рекомендациях вакансии жунов ПХП и требования не такие простыни, как на жс, обычно просят пхп, ларавель и сьюл и ОБУЧАЕМОСТЬ. Ну и я кароч думаю браться за пхп. Цель максимально быстро найти работу за 200-300 баксов в месяц.
Что скажете? Что посоветуете для максимально быстрого вката? Можно начинать учить сразу с фреймворка? С того же ларавеля? Нет времени пол года еще убивать на досканальное изучение ванильного пхп и т.д. Может есть какие-то убер годные курсы на пхп, платина? Помогите плиз. Или мне пиздец. Не хочу идти водителем убера работать.
Ответы: >>1292285 >>1292321 >>1292326
Аноним 2018/11/09 12:16:49  №1292285 390
>>1292273
>найти работу за 200-300 баксов в месяц
Лучше работай водилой за такие копейки.
Ответы: >>1292319 >>1292325
Аноним 2018/11/09 12:55:17  №1292319 391
>>1292285
спасибо, ваше мнение очень важно для нас.
Аноним 2018/11/09 12:56:59  №1292321 392
>>1292273
>обычно просят пхп, ларавель и сьюл и ОБУЧАЕМОСТЬ
Пхп - ООП, MVC, паттерны, SOLID. Желательно: spl, генераторы, ссылки.
Laravel - eloquent, middleware, request, policies, doctrine, blade, webpack+npm
SQL - индексы, оптимизация запросов(explain/slow_query_log), джоины, типы данных, ключи, связи

Это чисто база, с которой тебя возьмут на джуна.
Т.е. ты меняешь шило на мыло. В любом случае знать нужно дохуя везде.
Ответы: >>1292631 >>1292632
Аноним 2018/11/09 13:00:17  №1292325 393
>>1292285
Ну реально блять, за 300 баксов пердолить пхп это ебанизм.
У нас дворники в два раза болше имеют. Они метут асфальт метлой.
Аноним 2018/11/09 13:00:23  №1292326 394
>>1292273
Уже месяц пытаюсь вкатиться.
За это время выучил/подтянул
JS
C#
NodeJs
Java
jQuery
React
Yii
Linux
Сейчас ещё БД надо и с линуксом углубиться.
Если повезет, возьмут в контору с зп 30к.
Ответы: >>1292332
Аноним 2018/11/09 13:03:24  №1292332 395
>>1292326
>PHP, C#, Java, JS
Ты долбаеб? Тебя никуда не возьмут, если такой аркестр в резюме засунешь, определись конкретно с языком.
>30k
Слишком мало, тебя скорее не возьмут, потому-что ты за еду готов работать, а не потому-что ты тупой.
Ответы: >>1292335
Аноним 2018/11/09 13:07:31  №1292335 396
>>1292332
>Тебя никуда не возьмут, если такой аркестр в резюме засунешь
Почему? PHP и JS почти всегда стеком идут. Да и Java/C# (идентичные на 90%) тоже к вебу подходят

>Слишком мало, тебя скорее не возьмут, потому-что ты за еду готов работать, а не потому-что ты тупой.
Не, я не дурак. Я ж в резюме 40 написал! Это в вакансии 30 предлагают.
Ответы: >>1292354
Аноним 2018/11/09 13:19:07  №1292354 397
>>1292335
Работодатель не дурак. Он понимает, что если ты учишь 3 разных языка - то ты в каждом разбираешься на хуевом уровне.
Ответы: >>1292355
Аноним 2018/11/09 13:21:05  №1292355 398
>>1292354
Так я на стартовые позиции!
Да и сами они в резюме подобное пишут...
Ответы: >>1292357
Аноним 2018/11/09 13:22:54  №1292357 399
>>1292355
Потому-что резюме пишутся так:
- Ой, ребят, нам нужно нового проггера нанять, че в требованиях писать?
- Да накидай, чтоб программирование знал, ну там всякие алгоритмы, про язык нпиши
>Программирование - pascal, delphi, php, c++, c#, java, javascript...
Ответы: >>1292360
Аноним 2018/11/09 13:24:31  №1292360 400
image.png (5, 695x26)
26x695
>>1292357
Там, где я жду собеседования так и есть
Ответы: >>1292361 >>1292365
Аноним 2018/11/09 13:26:32  №1292361 401
>>1292360
Ну на собеседовании тебя про них и не спросят. Просто hr (тупая бабища) понакидала знакомых ключевых слов. Может оказаться, что это вообще не php собеседование.
Ответы: >>1292364
Аноним 2018/11/09 13:28:14  №1292364 402
>>1292361
А как тогда правильно в собеседовании указать?
Типа, я ж только в тегах написал, с чем знаком.
Ответы: >>1292442
Аноним 2018/11/09 13:28:24  №1292365 403
Ответы: >>1292366
Аноним 2018/11/09 13:28:55  №1292366 404
Аноним 2018/11/09 15:17:03  №1292434 405
Аноны, кто любит решать задачки? Поломайте голову, если хотите:

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

Предложите алгоритм или реализацию.
Аноним 2018/11/09 15:18:25  №1292435 406
>>1292434
Предлагаю пытать раскаленным паяльником разработчиков таких фич. Только хочешь вкладку закрыть, так тебе на весь экран прилетает НИУХАДИТИ ПЛИС((9, это выглядит жалко и раздражает, не делойте так.
Аноним 2018/11/09 15:24:55  №1292438 407
>>1292434
совсем блять охуели
показываешь красивое уникальное предложение сразу
???
профит
а теперь нахуй путешествуй
Аноним 2018/11/09 15:30:03  №1292442 408
>>1292364
Пиши то, чем конкретно будешь заниматься. Т.е. нахуй выкидывай про Java и про C#. То, что ты человек-швейцарский нож сыграет только в минус в итоге. Тимлиду нужен человек, который любит один язык и изучает его, а не распыляется на хуй знает что, причем PHP и Java/C# - очень разные вещи и знать сразу два подобных языка на хорошем уровне - сложно, как минимум потому-что у них абсолютно разные задачи и подходы.
Аноним 2018/11/09 16:29:29  №1292479 409
image.png (29, 627x148)
148x627
помогите пожалуйста, тут написано что выполняем операцию которая хранится в $op, но как мне ее выполнить или достать оттуда?
Ответы: >>1292516 >>1292613 >>1292632
Аноним 2018/11/09 16:38:21  №1292487 410
Вроде кидали чат в телеге сего треда, киньте еще раз
Аноним 2018/11/09 17:24:25  №1292516 411
>>1292479
if ($op == ' '){
} elseif...
Я так решал. Если операция первая, то значение пустое и тогда я откладывал номер в результат, оп задавал. Ну и так далее
Ответы: >>1292518 >>1292531
Аноним 2018/11/09 17:26:53  №1292518 412
>>1292516
ну а как ты выполнял само умножение/сложение? до меня это не доходит
Аноним 2018/11/09 18:00:19  №1292531 413
>>1292516
не, там логично все как в коде у ОПа, надо просто подумать.
Аноним 2018/11/09 21:29:02  №1292604 414
Здрасти.
Мне нужно вот это:
echo file_get_contents('.passwd');
Перевести в non alphanumeric вид, типа того:
$___="\\$___";

Заранее спасибо.
Аноним 2018/11/09 21:48:45  №1292613 415
image.png (17, 510x599)
599x510
Ответы: >>1292614 >>1308858
Аноним 2018/11/09 21:50:05  №1292614 416
image.png (92, 1186x1046)
1046x1186
>>1292613
Бля, картинка не та приклеилась.
Аноним 2018/11/09 22:12:02  №1292622 417
>>1292434
Это джаваскрипт, а не пхп. На пыхе я никогда не смогу это определить
Ответы: >>1292627
Аноним 2018/11/09 22:32:47  №1292627 418
>>1292622
$a=readline("Вы хотите уйти со страницы? Y/N");
$a=strtoupper($a);
if $a='Y' { vigodnoe_predlojenie(); }
else { break; }
Аноним 2018/11/09 22:39:21  №1292631 419
340-413

Ты просто пишешь if/elseif для каждой операции по типу:

if ($op == '+') {
\t$result += $number;
} elseif ($op == '-') {
\t$result -= $number;
} else {
\tнеправильная операция $op;
}

Или что-то другое непонятно? Уточни тогда.

>>1292434

Ну ок, не хотите это, поломайте голову над задачками про ООП:

- ООП-Будильник: https://phpclub.tech/pr/res/1232710.html#1263399
- ООП-Гостиница: https://phpclub.tech/pr/res/1082507.html#1097078

>>1292321

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

>>1292207

Еще лучше спрашивать, "а зачем тут нужна стратегия, если можно if поставить вместо нескольких классов?" - это почти любого выбьет.
Ответы: >>1292722
Аноним 2018/11/09 22:39:54  №1292632 420
>>1292479

Ты просто пишешь if/elseif для каждой операции по типу:

if ($op == '+') {
\t$result += $number;
} elseif ($op == '-') {
\t$result -= $number;
} else {
\tнеправильная операция $op;
}

Или что-то другое непонятно? Уточни тогда.

>>1292434

Ну ок, не хотите это, поломайте голову над задачками про ООП:

- ООП-Будильник: https://phpclub.tech/pr/res/1232710.html#1263399
- ООП-Гостиница: https://phpclub.tech/pr/res/1082507.html#1097078

>>1292321

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

>>1292207

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

Аноним 2018/11/09 22:40:15  №1292634 421
>>1292201

Информация есть в мануале http://php.net/manual/ru/features.commandline.webserver.php

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

Немного про него у написано у меня тут: https://github.com/codedokode/pasta/blob/master/soft/web-server.md#%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80

Рест-API ты пишешь на PHP, а запускать можно с любым сервером - хоть с встроенным, хоть с нгинкс.

>>1292196

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

>>1292150

После смены PATH надо либо перезагрузить систему, либо разлогиниться/залогиниться.

>>1292117

В случае с бекслешами, проблема в том, что они интерпретируются в 2 местах:

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

Чтобы увидеть, что получит движок регулярок, используй echo:

echo '\\\[ab]'; // выведется \\[ab] что понимается в регулярке как "ищи бекслеш, а далее идет a либо b"

У тебя явно ошибка в регулярке, чтобы написать "искать бекслеш", надо написать 4 бекслеша подряд:

echo '\\\\'; // выведется \\ что воспринимается в регулярке как "ищи 1 бекслеш"
Аноним 2018/11/09 22:45:18  №1292638 422
>>1292133

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

>>1291497

Давай начнем с определений, прочти очень внимательно:

- класс объекта - это класс, который был указан при создании объекта в new: $a = new Child; // тут это Child
- "окружающий" класс - это класс, в коде которого использовано слово $this, self, итд (это название я сам придумал, не знаю, как это назвать. Статический контекст?).
- окружающий метод - метод, в котором использовано слово $this, self, итд

Также, пусть у нас есть такая цепочка классов: предок Grandparent (G) -> его наследник Parent (P) -> его наследник Child(C) (т.е. Child extends Parent, Parent extends Grandparent).

$this используется для обращения к обычному полю или обычному методу того же самого объекта. Поле или метод ищутся по цепочке наследников, начиная с класса объекта, и заканчивая самым древним предком (C -> P -> G)

$this->x = 1;
$this->y();

Исключение - приватные методы/поля, они ищутся только в окружающем классе.

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

parent, self, static используются для указания на статическое поле, статический метод, или обычный метод в предке с тем же названием, что и окружающий. Допустим, код ниже написан в классе P и вызывается из объекта класса C:

parent::x() - обычный или статический метод x ищется от предка окружающего класса вглубь (G)
self::x() - статический метод x в окружающем классе или его предках (P -> G)
static::x() - статический метод x ищется от класса объекта к предкам (C -> P -> G)

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

Примеры обращений к статическим полям:

self::$x = 1;

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

Не запутал?
Аноним 2018/11/09 22:45:37  №1292639 423
>>291131

Тебе достаточно изучить основы HTML и HTML-формы. Вот урок, где есть пример передачи параметров в скрипт для его запуска и просмотра результатов в браузере: https://github.com/codedokode/pasta/blob/master/soft/web-server.md#%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0-%D0%B0%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B2-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82

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

Но старайся не смешивать логику программы с логикой ввода/вывода данных. Их надо разнести отдельно.

>>1291996

У тебя неправильно стоят фигурные скобки. Должно быть так:

if (условие 1) {
\tдействия в этом случае;
} elseif (условие 2) {
\t...
} else {
\t...
}

Либо так (хуже):

if (условие 1){
\tдействия 1;
\texit();
}

if (условие 2){
\tдействия 2;
\texit();
}

Изучи внимательно, как работает if.

Аноним 2018/11/09 22:46:16  №1292640 424
>>1291856

> Emails - https://ideone.com/K5xlAn
Задача была достать email из строки с текстом (где есть email и посторонние слова), а не из массива. Так что пока не то.

>Опечаточник - https://ideone.com/T9lkRz
Ты просто выделяешь все латинские буквы. Но надо искать случаи, когда слово состоит из букв обоих алфавитов, а если слово полностью на русском или полностью на английском, то это нормально.

>Grammar Nazi - https://ideone.com/092o3K
Тут ты скопипастил if 5 раз. А можешь без копипасты (подсказка: используй цикл по массиву правил)?

> "/\s+(а|но)/ui"
это правило сработает на слово "ночь".

> нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
Это правило у тебя не проверяется.

>Grammar Nazi Next - https://ideone.com/NU9Zee
Те же замечания, что к предыдущей задаче.

>Shift - https://ideone.com/L4JUTk
Неплохо, но можешь сделать, чтобы многоточия и другие группы знаков препинания не разбивало бы пробелами?

>>1291793

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

В else условие не пишут.

Тут лишняя точка с запятой, смотри внимательно:

else ($anonSum == $compSum); {

Точка с запятой завершает блок if и код интерпретируется так:

if (...) {
\t...
} else {
\t//\tЭто воспримется не как условие, а как действие для else
\t($anonSum == $compSum);
}

// Это не часть if, а просто сгруппированные команды
{
\techo "Ничья, Победила дружба!\n";
\texit();
}

Ответы: >>1294375 >>1297394
Аноним 2018/11/09 22:46:33  №1292641 425
>>1290686

Надо писать $this->names

Имя класса пишут с большой буквы.

Класс надо назвать не Phone, а PhoneList.

>>1290635

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

Также, ответ не похож на ответ от cloudflare и у тебя может быть просто ошибка.
Аноним 2018/11/09 23:18:17  №1292651 426
Интересно Гитхаб дискриминирует пользователей винды.

Ставим в FF User-Agent Mozilla/5.0 (X11; Arch Linux; Linux x86; rv:52.3.0) Gecko/20100101 Firefox/52.3.0 и заходит на гитхаб - все ок.

Меняем там ОС на винду - Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.3.0) Gecko/20100101 Firefox/52.3.0 - появляется сообщение о неподдерживаемом браузере и отключается JS с кучей полезного функционала (по сути писать даже комментарии нельзя).

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

Это мне напоминает историю, когда Гугл постоянно ломал поддержку Оперы в своих продуктах, и это лечилось заменой User-Agent.
Ответы: >>1292656
Аноним 2018/11/09 23:40:17  №1292656 427
>>1292651
>Firefox/52.3.0
С разморозкой!
>Firefox/63.0
Ответы: >>1292659
Аноним 2018/11/09 23:46:16  №1292659 428
>>1292656

Так почему они банят ФФ 52 под виндой, но не банят под линуксом? Тебе не кажется, что логичнее банить малочисленных линуксоидов?
Ответы: >>1292664
Аноним 2018/11/10 00:29:53  №1292664 429
>>1292659
Ты против меньшинств? В php-треде?
Аноним 2018/11/10 02:16:49  №1292670 430
»1292103
Не смогу конечно. Как раз сейчас делаю задачу по вектору, жжения в жопе от ООП не ощущаю. Единственное что - создаётся ощущение, что я делаю что-то не так. Пока не буду выкидывать код(т.к. он не дописан), но распишу что он из себя представляет. Надеюсь что Добрый Анон скажет где я проебался.
У меня объект компания, в котором лежит инфа о всех департаментах. От него зависит объект департамент, в котором записан лидер и название департамента . Далее работник, в котором вся инфа о работнике и дофига методов для тестов правильности заполнения, методов установки переменных, метод рассчёта, отладочный метод и прочее. Все, естественно, запривачено, а методы выше защищены, методы департамент и компания абстрактные. Конец. А отдельно живут функции создания объектов, создания разметки, массив с работниками который называется рекруты (я решил дать каждому работнику ещё и имя, хоть и условное, поэтому есть большой массив рекрутов с желаемым департаментом, именем и т.д.), функция распаковки массивка с последующей упаковкой объектов в массив, функция подсчета общих цифр по департаментам и, естественно, небольшой код, который запустит все это дерьмо. И вот когда я начал писать функцию подсчета общего числа работников, зп и прочего, у меня возникло чувство, что я что-то делаю не так. С одной стороны, это можно было запихнуть в объект департамента, а общий итог - в объект компании. С другой стороны департамент и компания - это абстрактные классы, а значит вызвать или создать объект из них я не смогу.
Подскажи, добрый Аноне, правильно ли я делаю?
Ответы: >>1292671 >>1308857
Аноним 2018/11/10 02:19:08  №1292671 431
>>1292670
Забыл еще написать, что у меня дохера комментариев, в которых обозначается что где есть. Ну, что есть, почти над каждой функцией я писал зачем она, а некоторый код, чтобы не выкидывать, я пихал в коммент и помечал что это вообще и откуда оно. Еще одна причина моего не особого желания выкладывать код. Он очень большой, в итоговом варианте вместе с массивом рекрутов и комментариями строк 300
Ответы: >>1292672
Аноним 2018/11/10 02:33:27  №1292672 432
>>1292671
И да, я столкнулся со вполне очевидной проблемой - не могу найти общую сумму т.к. все свойства объектов я сам же и защитил. Ну все, теперь я потерялся
Ответы: >>1292673 >>1308858
Аноним 2018/11/10 02:56:45  №1292673 433
>>1292672
>Доктор, у меня геморой, но я не буду его показывать, потому что я стесняюсь. Вооооот... Я сейчас его нарисую на бумужке!
Аноним 2018/11/10 08:39:47  №1292722 434
>>1292631
>"а зачем тут нужна стратегия, если можно if поставить вместо нескольких классов?"
Да вроде этот вопрос обычно обкашливается в любой статье про этот паттерн, нет?
Ответы: >>1292726
Аноним 2018/11/10 08:41:19  №1292726 435
>>1292722
Хотя вообще, да. Норм вопрос. Как раз и солид затронет и в целом мышление человека.
Аноним 2018/11/10 08:52:09  №1292732 436
Посоны, что там с дот ком баблом 2.0? Скоро уже или еще поживём?
PHP FRAMEWORK Аноним 2018/11/10 08:52:49  №1292733 437
timthumb.php.jpeg (35, 600x280)
280x600
Работаю с пыхой уже давно. Сам язык хорошо знаю. Для сайтоделия использую Laravel. Чет захотелось покачать свои скилы и обуздать какой-нибудь новый фреймворк.

Что посоветует анон?

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

Часто слышу: Symfony и Zend, может задрочить что-то из этого? Еще давно мечтаю, но никак руки не доходили посмотреть на Slim - простой фреймворк, удобный для написания REST-API, стоит на него обратить внимание?
Ответы: >>1292738
Аноним 2018/11/10 08:59:44  №1292738 438
>>1292733
Странно. Те, кто действительно давно работают - в курсе, что Symfony и Laravel - это 2 доминанта. Laravel - для всего, Symfony - для энтерпрайза. Yii2 постепенно умирает, еще с тех пор, как их главный свалил.
Ответы: >>1292762 >>1292840 >>1292842
Аноним 2018/11/10 10:12:38  №1292762 439
>>1292738
> Laravel - для всего, Symfony - для энтерпрайза
Лараёб незаметен.
Ответы: >>1292835 >>1292840 >>1292847
Аноним 2018/11/10 11:50:53  №1292835 440
>>1292762
>top1 фреймворк PHP в мире
>ЛАРАЕБ ЫЫЫЫЫ РРРРЯЯЯЯЯЯЯЯЯЯЯ

Я лишь констатирую факт рынка, писал я и на Yii2, и на ларе, сейчас на проекте с Silex и Symfony работаю, пилим микросервисы со своим OAuth.
Ответы: >>1292840
Аноним 2018/11/10 11:56:05  №1292840 441
>>1292835
>>1292738
Двачую. Ларавел - это тот-же симфони, только немного обрезанный и "разболтанный", т.е. не такой строгий и с меньшими требованиями для макаки. Он даже построен на компонентах Симфони, лол, о чем речь?

>>1292762
Долбаеб детектед.
Ответы: >>1293034
Аноним 2018/11/10 11:59:14  №1292842 442
>>1292738
>Те, кто действительно давно работают - в курсе
это те, кто в конфах и тредах давно срется. У меня из-за работы хуй время есть даже разобраться что сейчас топчик.

Начальнику похуй. Клиент платит за то, что я пилю? Збс, а стек сам выбирай, что потребуется - то и юзай. Благо деньжатами не обижает, но времени рил нету. Я относительно недавно выкроил вемечко, чтобы обуздать некоторые свистоперделки седьмой пыхи
Ответы: >>1292847 >>1292859
Аноним 2018/11/10 12:02:17  №1292844 443
>>1281608 (OP)
Здравствуйте, товарищи программисты. Я начинающий. Не могли бы вы мне помочь понять, что делает эта функция? mysqli_fetch_array()
В гугле как то непонятно.
И почему в конце mysqli стоит буква i?
Ответы: >>1292849 >>1308857
Аноним 2018/11/10 12:06:03  №1292847 444
>>1292762
Не понял бугурта. Ларавел - это упрощенный Симфони, но без платной поддержки для энтерпрайза. А Симфони тем и ценится для большого бизнеса, что они покупают пакет платной поддержки, причем нехуевый такой, сравнимый с майкрософтовским. И при любой проблеме - они пинают саппорт и те фиксят всё, что угодно в кратчайшие сроки, в том числе туда входят и аудиты ПО и много чего еще интересного.
А с Laravel ты получаешь гулькин хуй, документацию и stackoverflow, ну и лишь надежду на то, что твои программисты сами смогут решать проблемы фреймворка и тратить на это время.

По рейтингам Laravel находится в топ 1 по миру. Дальше идет symfony. Yii2 к примеру еле догоняет по рейтингам Codeigniter.

>>1292842
>Начальнику похуй. Клиент платит за то, что я пилю? Збс, а стек сам выбирай, что потребуется - то и юзай.
Так если ты макака - то смысл вступать в спор о фреймворках? Для тебя лучшим решением может быть даже CMS. А лучше шли нахуй такого работодателя, повышай квалификацию и найди нормальную работу. У нас в компании разработка начиналась еще с 5.5 версии пыхи. И постепенно шли в ногу со временем. Сейчас осталось немного легаси с 5.6, которое активно выпиливается и переводится на 7.1, плюс есть докер и большие планы на кибернетс. Мой личный совет - вали с этого говна с "заказчиком", иначе можешь там надолго завязнуть.
Аноним 2018/11/10 12:09:25  №1292849 445
>>1292844
Ничего. Забудь их нахуй, и если кто-то их будет упоминать не в контексте шутки - шли его тоже нахуй. Для белых людей уже давно есть PDO.
Ответы: >>1292872
Аноним 2018/11/10 12:17:01  №1292859 446
>>1292842
>Я относительно недавно выкроил вемечко, чтобы обуздать некоторые свистоперделки седьмой пыхи
Ты уже должен был по дефолту на ней сидеть. Поддержка 5.6 заканчивается через полтора месяца, лол блять.
Аноним 2018/11/10 12:33:10  №1292872 447
>>1292849
Бляха муха, почему всё так сложно? Вроде только разобрался в одном, тут оказывается что это нахуй не надо, надо пользоваться другим. Щас опять пол дня учить как это работает....
Ответы: >>1292877 >>1292882
Аноним 2018/11/10 12:35:48  №1292877 448
>>1292872
Всё работает одинаково, забей.
Главное не забудь где доки.
Ответы: >>1292884
Аноним 2018/11/10 12:37:33  №1292882 449
>>1292872
Не сложно. Просто процедурный стиль никому нахуй не нужен сейчас, а встроенный в PHP PDO реализует унифицированный интерфейс и из коробки поддерживает основные БД, а с доп модулями - вообще все.
Аноним 2018/11/10 12:39:41  №1292884 450
>>1292877
PDO сейчас уже обязателен по дефолту. Функции типа mysql_* уже давно deprecated и в скором времени вообще будут из языка удалены.
Ответы: >>1292887
Аноним 2018/11/10 12:42:34  №1292887 451
>>1292884
Я просто говорю, что учить-пол-дня там нечего.
Ответы: >>1292888
Аноним 2018/11/10 12:44:02  №1292888 452
>>1292887
Для новичка много чего - от prepared до транзакций (я в курсе, что они есть в SQL). Много чего на самом деле, интерфейс у пдо богатый.
Аноним 2018/11/10 12:53:40  №1292897 453
Хелп!
По старому надо было сделать вот это:
while ($row = mysqli_fetch_array($result)) {
\t$publications[] = new NewsPublication;
}

как это сделать с помощью пдо?
Ответы: >>1292902
Аноним 2018/11/10 12:58:46  №1292902 454
>>1292897
Тебя в гугле забанили?
Достаточно ввести "pdo mysqli fetch array". А вообще. Забей хуй пока на код, иди и читай про ООП, про SQL и про PDO. Зачем ты сразу пытаешься использовать то, что даже не ебешь, как работает?
Аноним 2018/11/10 14:17:19  №1292946 455
Блять нахуй я разобрался с этим пдо!!!!111 Мб я не так уж и плох как о себе мню!
Ответы: >>1292972
Аноним 2018/11/10 14:56:24  №1292972 456
>>1292946
Красава, уже решил на что 300к/нс тратить будешь?
Ответы: >>1292995
Аноним 2018/11/10 15:29:20  №1292995 457
>>1292972
Я сомневаюсь, что 5к/мес смогу делать, если честно.
Ответы: >>1293003
Аноним 2018/11/10 15:35:47  №1293003 458
>>1292995
Ну а вобще, если я смогу делать 20к/мес, это будет просто рай. Считайте я живу с мамкой и папкой, буду въябывать на фрилансе...иии что еще нужно для счастья, если не надо стоять в пробках, общаться с мерзкими людьми в офисах и тому подобное? Это просто предел мечтаний, аноны
Ответы: >>1293137
Аноним 2018/11/10 16:06:59  №1293034 459
>>1292840

Но там ведь все на статических методах ... Хотя в Симфони тоже почему-то до сих пор не могут отказаться от хранения реквеста в контейнере. Трудно из программиста выбить привычку хранить все в глобальных переменных.
Ответы: >>1293139
Аноним 2018/11/10 17:55:36  №1293137 460
>>1293003
Хз, на первой работе 60 получал сначала. 20к мес - это смешно даже для погромца в мухосрани.
Ответы: >>1293141
Аноним 2018/11/10 17:57:17  №1293139 461
>>1293034
>Но там ведь все на статических методах
Что? Фасады - инжектятся, все остальное тоже инжектится, и никакой статики.

>Хотя в Симфони тоже почему-то до сих пор не могут отказаться от хранения реквеста в контейнере.
Не вижу ничего плохого, контейнеры юзаются не только в пыхе, но и в большинстве других языков.
Аноним 2018/11/10 18:04:26  №1293141 462
>>1293137
Я про фриланс имею в виду. Мне много не надо....
Аноним 2018/11/10 19:36:25  №1293208 463
>>1287151
ОП, вот мои еще проверь пожалуйста.
Ответы: >>1297560 >>1297694
ТЕЛЕГРАМ Аноним 2018/11/10 22:28:44  №1293315 464
У вас есть конфа телеговская?
Ответы: >>1293410 >>1293496
Аноним 2018/11/10 22:35:06  №1293320 465
Сап двач. Может кто знает какие-то книги про погромирование в целом? Стэк я учу понемногу, но не всегда понимаю как лучше написать и т.п.
Вот например два варианта кода в контроллере
if ($request->isValid()) {
...
return new Response($payload, 200);
} else {
return new Response($errors, 400);
}

или же

if ( !$request->isValid()) {
return new Response($errors, 400);
} ...elseif(...){}
else {
return new Response($payload, 200);
}

Есть ли вообще разница?
Ответы: >>1293375 >>1294999 >>1295825
Аноним 2018/11/11 01:25:12  №1293366 466
Как у вас тут лампово, сегодня вечером вкатываюсь.
Аноним 2018/11/11 04:26:28  №1293372 467
как же лень js учить пиздец
Ответы: >>1293378
Аноним 2018/11/11 05:36:41  №1293375 468
>>1293320
Нафига после ретурн ставить элс, сам подумой.

if (! $хрень1) {
return
}
if (! $хрень2) {
return
}
if (! $хрень3) {
return
}
Аноним 2018/11/11 05:47:17  №1293378 469
>>1293372
А зачем пхп программисту жаба скрипт?
Ответы: >>1293379
Аноним 2018/11/11 05:54:22  №1293379 470
5mkKFNwr.png (255, 512x512)
512x512
>>1293378
Чтобы писать микросервисы на ноде
Аноним 2018/11/11 07:24:34  №1293399 471
71507285p0master1200.jpg (371, 821x1200)
1200x821
Короче, работу в моем мухосранске искать бесполезно. Начну, тогда уж, в понедельник тестхаб писать.
Ответы: >>1293497
Аноним 2018/11/11 08:11:23  №1293410 472
>>1293315
Есть другая конфа для вкатывальщиков
Ответы: >>1293412
Аноним 2018/11/11 08:23:24  №1293412 473
>>1293410
А эта чем тебя не устраивает?
Аноним 2018/11/11 10:02:23  №1293472 474
Мне очень тяжело читать официальную документацию. Есть какие нибудь ресурсы, где всё описано для дибилов, на подобии прекрасных, на мой взгляд, уроков этого треда?
Ответы: >>1293499
Аноним 2018/11/11 10:19:57  №1293491 475
Когда можно начинать выкладывать свой говнокод? У меня нет никаких практических реализаций работающих сайтов, но есть решения небольших задачек.
Возможно, мне хотелось бы, чтобы анон заценил и ткунл меня носом в говно. Так вот, где публиковать, что читать по этому поводу, есть ли вобще в этом смысл? Краем уха слышал про гитхаб.
Ответы: >>1293500 >>1308856
Аноним 2018/11/11 10:23:20  №1293496 476
Ответы: >>1293685 >>1293833
Аноним 2018/11/11 10:25:03  №1293497 477
>>1293399
Анимешник, го в телегу.
Аноним 2018/11/11 10:27:47  №1293499 478
Аноним 2018/11/11 10:29:35  №1293500 479
>>1293491
Если ты решаешь задачки ОПа, то я думаю стоит выкладывать свои поделки начиная со списка студентов.
Ответы: >>1293502
Аноним 2018/11/11 10:33:43  №1293502 480
>>1293500
Задачки опа я решил давно. С горем пополам правда. Теперь я делаю более практичные вещи, типо вывода нужных элементов из бд на страницу и всё такое.
Ответы: >>1293551
Аноним 2018/11/11 11:55:40  №1293551 481
Аноним 2018/11/11 15:24:47  №1293685 482
>>1293496
Все. Меня выгнали тамошние каклы
Ответы: >>1293707
Аноним 2018/11/11 16:18:27  №1293707 483
>>1293685
>Начал срач за JS в конфе PHP
>Начал срач про хохлов в конфе PHP

>Меня выгнали тамошние каклы
Ответы: >>1293716
Аноним 2018/11/11 16:39:04  №1293716 484
>>1293707
Просто школодаун порвался от того, что ему сказали, что фотошоп - не программирование и решил уйти с чата, мол пока меня не кикнут (ато ему неприятно это слышать) он не вернется - всем было похуй, потом пришла его хохло-шлюха и как и подобает устроила майдан во имя этого ЧСВшного долбоеба.

Срач я вообще не начинал. Просто сказал, что дизайнер != программист и с хохлами не общаюсь. Остальное - бугурт обиженок
Ответы: >>1293752
Аноним 2018/11/11 17:10:23  №1293730 485
>конец 2018
>до сих пор не знать, что в конфах сидят либо какие-то мегауспешные охуенные челы (шанс 1%) либо долбоебы-вниманиебляди (шанс 99%)
Ответы: >>1293736
Аноним 2018/11/11 17:19:18  №1293736 486
>>1293730
хз. Большая пхпшная конфа состоит вроде из адекватов, которые как и положено погромистам предрасположены и устойчивы к хардкорным шутейкам
Аноним 2018/11/11 17:48:28  №1293752 487
>>1293716
Иди со своим битриксом работай, долбаеб.
Ответы: >>1293761
Аноним 2018/11/11 17:57:05  №1293761 488
>>1293752
Каво? А это ты тот обучатель вкатывальщиков? Как там твоя занудная конфа толерантных геев поживает? Вкатываетесь друг в друга? Докер осилил или что ты там не мог обуздать?
Ответы: >>1293765
Аноним 2018/11/11 17:59:46  №1293765 489
>>1293761
>>1293763

Долбаеб, мы твой гитхаб посмотрели и поржали над твоими дополениями для битрикса. Долбаеб еще что-то там вякает про js...
Ответы: >>1293768 >>1293774
Аноним 2018/11/11 18:05:01  №1293768 490
>>1293765
Лол, но ведь я не работаю с битриксом.
А на гитхабе пара высеров, которым овер год. Среди которых нет битрикса, но зато есть пара годных ботов. Например бот рассылки сообщений по авито с интерфейсом, антикапчей, ЛК и пр. Сомневаюсь, что кто-то из вашей гомо конфы способен написать что-то подобное. Писал я это больше года назад и сейчас бы писал по другому, но что забавно, что меня пытался обоссывать 3х месячный вкатывалищик.
Ответы: >>1293774 >>1293819
Аноним 2018/11/11 18:12:00  №1293774 491
>>1293768
>>1293765

Прекращайте флуд. Хвастаться скриптами для рассылки спама можно в каком-нибудь другом треде.
Ответы: >>1293810 >>1293821
Аноним 2018/11/11 18:47:30  №1293810 492
>>1293774
>Двач
>Прекратите флудить!

))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Аноним 2018/11/11 18:57:23  №1293819 493
>>1293768
Ты какой-то ебанутый.
Аноним 2018/11/11 18:59:00  №1293821 494
>>1293774
>Прекращайте флуд
Вся суть этих конф кстати.
Как только начинается какой-то спор, что нормально впринципе, особенно в тематических чатах, для того они и существуют. Так сразу админа рвет, что его гомосексуальное болото потревожили и блочит несогласных.
Ответы: >>1293842 >>1293844
Аноним 2018/11/11 19:08:17  №1293829 495
Ребят, надо сверстать сайт-визитку быстро и разместить на хостинге(посоветуйте/желательно,чтобы сервер размещался в германии). Есть ли гайды для дурака как я? Или надо 3-4 месяца изучать php+ html/css.
Ответы: >>1293833
Аноним 2018/11/11 19:19:05  №1293833 496
>>1293829
Это задачка подстать программистам. Тут в конфе какраз сидят хтмлные прогеры, помогут:
>>1293496
Аноним 2018/11/11 19:28:56  №1293842 497
>>1293821
Нет, ты просто ебанашка обоссаная.
Конфы для того и нужны что они тематические, а ты пришел яйцами трясти и разводить срач.

мимо сторонний наблюдатель
Аноним 2018/11/11 19:32:02  №1293844 498
>>1293821
>Заходишь в конфу PHP
>Начинаешь ныть, как же ты ненавидишь блядский JS, и что JS - это вообще не программирование
>Тебя просят пройти нахуй, ибо конфа про PHP
>Начинаешь агриться на хохла и нести хуйню про порошенко и хохлов в целом
>Получаешь бан
>РРРРРРРЯЯЯЯЯЯЯЯЯЯЯ АДМИН ПОДСОСЫ ГЕИ 3х МЕСЯЧНЫЕ ВКАТЫВАЛЬЩИКИ, БОЛОТО БЛОЧАТ НЕСОГЛАСНЫХ

Ты прям реально какой-то шизик, это уже даже не смешно.
Ответы: >>1293851
Аноним 2018/11/11 19:45:57  №1293850 499
Ответы: >>1293920
Аноним 2018/11/11 19:46:29  №1293851 500
>>1293844
>Начинаешь ныть, как же ты ненавидишь блядский JS, и что JS - это вообще не программирование
Не говорил такого. Говорил, что фронтенд - это дизайнерство, где программирование используется для дизайнерства. Вообще про жс ничего не говорил толком.

>Тебя просят пройти нахуй, ибо конфа про PHP
Конфа про пхп, а мне начали рассказывать, что я не прав и хтмл - это программирование. А еще кинули 3д модельку и сказали глянь как красиво = программироание

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

Пиздлявая ты макака
Ответы: >>1293853
Аноним 2018/11/11 19:48:16  №1293853 501
>>1293851
Твоя шизофрения прогрессирует, ты уже сам придумываешь прошлое и веришь в него, кажись. Жесть. Любой человек может зайти в конфу, пролистнуть историю и увидеть, что ты пиздишь. Не стыдно?
Ответы: >>1293855
Аноним 2018/11/11 19:52:01  №1293855 502
>>1293853
Так зайди и пролистни. Каково это жить в манямирке?
Аноним 2018/11/11 22:00:09  №1293920 503
>>1293850

Нет, рано. Мы обычно еще несколько дней или недельку сидим в бамплимите. Треды тут тонут очень медленно, и много не провереных задач. Так что подождем.
Ответы: >>1293987
Аноним 2018/11/12 05:08:24  №1293987 504
>>1293920
>Мы обычно еще несколько дней или недельку сидим в бамплимите
Нахуя?
Ответы: >>1294008
Аноним 2018/11/12 07:03:07  №1294008 505
>>1293987
Дочитай фразу, шизик.
Аноним 2018/11/12 11:04:44  №1294146 506
2121212.png (42, 825x440)
440x825
Вы чего? Какие 49 лет до миллиона, когда анону каждый год будет капать +1000 рублей к основному депозиту в десять тысяч рублей?
Ответы: >>1294199
Аноним 2018/11/12 12:00:39  №1294199 507
>>1294146
Не 1000, а 10% от предыдущей суммы. Первый месяц - 1000р, потом - 1100р, 1210р, и т д
Ответы: >>1294234 >>1294287
Аноним 2018/11/12 12:34:33  №1294234 508
>>1294199
> Первый месяц - 1000р, потом - 1100р, 1210р, и т д
Какой нахуй первый месяц? Ты ёбаная жертва ммм и кэшбери!!! У тебя в условии 10% ГО ДО ВЫХ. Это в месяц менее 100₽, со второго года уже от 11к надо считать и так далее.
Аноним 2018/11/12 12:49:11  №1294248 509
Анон, студия разработки сайтов ищет людей в свой коллектив для работы над проектами. Свободный график, свободный выбор задач без конкуренции, все онлайн. Для участия необходимо знание технологий веб-разработки на минимальном уровне и готовность пользоваться гуглом. Подробности телега @cg002
Ответы: >>1294253 >>1294302
Аноним 2018/11/12 12:52:39  №1294253 510
>>1294248
Ахахахха ну и галера. Оплата 300кк/пикосекунду два раза в месяц?
Аноним 2018/11/12 13:54:40  №1294287 511
>>1294199
Не, програмирование - это не моё
Аноним 2018/11/12 14:08:26  №1294302 512
>>1294248
Че ж стек не написали?
Ответы: >>1294312
Аноним 2018/11/12 14:17:49  №1294312 513
image.png (410, 500x500)
500x500
>>1294302
>Че ж стек не написали?
>знание технологий веб-разработки на минимальном уровне и готовность пользоваться гуглом
Стэковерфлоу же.
Аноним 2018/11/12 15:19:45  №1294375 514
Ответы: >>1294669
Аноним 2018/11/12 16:00:57  №1294403 515
>>1281608 (OP)
Аноны, поясните, пожалуйста, за регулярные выражения

Выражение такого вида:
if(preg_match("~Жепа~", "Жепа")){
echo "zbs";
}

Распечатает zbs, потому что прег матч вернет 1.
Но если я во второй аргумент подставлю Жепа123, то скрип тоже сработает. Как сделать, чтобы он не сработал?
Ответы: >>1294447 >>1294455
Аноним 2018/11/12 17:28:18  №1294447 516
>>1294403
>скрип тоже сработает
>Как сделать, чтобы он не сработал?
Ошибку сделай. Например вместо if напиши hui
Аноним 2018/11/12 17:36:38  №1294455 517
>>1294403

Почитай про ^ и $. Регулярка по умолчанию не требует полного совпадения со строкой, достаточно, чтобы она совпадала с кусочком строки.
Аноним 2018/11/12 22:27:42  №1294621 518
Не уверен что пишу в правильный тред, но тем не менее прошу совета бекендеров. Не совсем php-related.

Есть один сайт, он высоконагруженный поэтому работает на нескольких серверах, балансировка через round-robin dns, то есть пользователь по сути попадает на случайный. База mysql, один мастер пара слейвов. Есть разные штуки которые хотелось бы кешировать в мемкеше, но проблема в том, что когда данные инвалидируются (например обновилась запись в базе) то кеш надо инвалидировать на всех серверах на которых они могли быть добавлены в мемкеш. Как в принципе решается эта проблема?
Ответы: >>1294638 >>1294664
Аноним 2018/11/12 23:19:17  №1294638 519
programmist.jpg (90, 408x720)
720x408
>>1294621
>, то есть пользователь по сути попадает на случайный. База mysql, один мастер пара слейвов. Есть разные штуки которые хотелось бы кешировать в мемкеше, но проблема в том, что когда данные инвалидируются (например обновилась запись в базе) то кеш надо инвалидировать на всех серверах на которых они могли быть добавлены в мемкеш. Как в принципе решается эта проблема?

много как ! желательно сеньером с опытом ;)

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

5. не юзать round robin, есть более удобные механизмы. определять принадлежность юзверя по куке к примеру, это умеют делать балансеры

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

зы. если деления по гео нет - проблема с херовой архитектурой. но так часто бывает.
когда прожект начинает жить на 8-10 серверах каждый разраб начинает жалеть что не придерживается принципа модульности. одну жирную тушу тяжело сапортить, намного проще побить на сервисы типа чат, топ-10 и подобные, тяжелым дать выделенный сервер, легкие поселить на один сервер.
когда чат становится "жирной тушей" начинать делить его на более мелкие части и т.д.
Аноним 2018/11/13 00:11:57  №1294656 520
>>1294638
Спасибо за такой подробный ответ!
>много как ! желательно сеньером с опытом ;)
Ну, все сеньеры ведь когда-то учились и набирались опыта, вот и я.
Аноним 2018/11/13 00:39:49  №1294664 521
>>1294621

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

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

Алсо, я бы смотрел на редис - это как мемкеш, только с кучей наворотов.
Аноним 2018/11/13 00:41:27  №1294665 522
>>1294638

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

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

Аноним 2018/11/13 01:24:45  №1294668 523
>>1294638

> одну жирную тушу тяжело сапортить

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

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

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

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

> намного проще побить на сервисы типа чат, топ-10 и подобные

Только проблему географической распределенности это не решает никак.
Аноним 2018/11/13 01:25:04  №1294669 524
>>1294375

> emails -https://ideone.com/QSOmHS
Уже лучше, но тут есть небольшой подвох. Ты дампишь весь массив matches, и если в регулярке будут круглые скобки, то там будут кроме email еще попавшие в эти скобки куски email. Надо выделить из массива результатов только email.

> Grammar Nazi - https://ideone.com/kcqacc
Ок, но ты выводишь одно и то же предложение несколько раз. Можно его вывести один раз и показать все ошибки сразу?

Также, ты можешь захотеть почитать мануал по preg_replace.

> "/\s+(а|но)\s/ui"
После "но" может быть не только пробел, но и, например, запятая, и многоточие. Лучше использовать признак границы слова.

> Grammar Nazi Next - https://ideone.com/3wddIK

Та же проблема с "но".

> "/([.?!:,])\s+/u" => "$1 "
Это вставит пробелы в многоточие. А можно ли исправить это?

> Yoda speak - https://ideone.com/RkU2vP
Хорошо, но надо бы сделать первые буквы предложений заглавными.

> Числа прописью - https://ideone.com/pbxcf4

Для числа 999011012 выдает фигню: https://ideone.com/YtpKrI

Сделай более тщательное тестирование. Когда ты делаешь какую-то задачу, ты всегда сам должен ее внимательно протестировать, так как чем раньше обнаружится ошибка, тем дешевле и быстрее ее исправить. Вот подсказка, какие числа стоит брать: 0, 1, 2, 5, 9, 11, 12, 15, 19, 91, 92, 99 и еще добавить к ним сотни. Числа, где есть миллионы, но нет тысяч или единиц

> function word($number, $words)
Надо бы ставить тайп-хинты. Тайп хинты позволяют указать, что аргумент функции должен быть определенного типа (например быть строкой, массивом или целым небольшим числом). Тайп хинт делает код понятнее (так как видно, какого типа переменная) и надежнее (так как PHP не позволит передать что-то неразрешенное и ты сразу увидишь ошибку). Также он позволяет указать тип возвращаемого значения. Используй их везде.

Мануал: http://php.net/manual/ru/functions.arguments.php#functions.arguments.type-declaration

> if ($hundred != 0 && $hundred > 99) {
Первая часть условия бессмысленна.

> if ($tensAndUnits <= 20 && $tensAndUnits > 9)
Лучше переставить условия местами для читаемости. Сначала 9, потом 20

> $resultExp .= " " . $numbers[$hundred];
Можно еще складывать слова в массив, а в конце функции его склеить. ТОгда не надо возиться с удалением лишних пробелов.

> $i = strlen((string)$number);//Считаем количество цифр
Костыльно. Почему бы тебе не воспользоваться функцией десятичного логарифма log10? Для log10(1) = 0, log10(10) = 2, log10(100) = 3 итд.

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

> $threeDigits = intval(floor($number / pow(10, $i - 3)));//Получаем первые 3 цифры
> $firstTwoDigit = intval(floor($number / pow(10, $i - 2)));//Получаем первые 2 цифры
Можно без этой унылой копипасты одинаковых кусков кода?

> $resultExp = preg_replace("/один\sтысяча/u", "одна тысяча", $resultExp);
Костыльно. Давай лучше с самого начала генерировать правильную форму слов.
Ответы: >>1294857 >>1294952
Аноним 2018/11/13 11:43:15  №1294857 525
4957cc90ec.jpg (43, 200x275)
275x200
Ответы: >>1297560
Аноним 2018/11/13 13:29:18  №1294899 526
Анончик, для чего используется это?
<?php } ?>
Ответы: >>1294987
Аноним 2018/11/13 14:22:03  №1294952 527
>>1294669
Исправил:
Числа прописью - https://ideone.com/yhrxPg
Yoda speak - https://ideone.com/HM3Xci (3 пик)
Grammar Nazi - https://ideone.com/V1k3eX
Grammar Nazi Next - https://ideone.com/QaRhUG
Опечаточник - https://ideone.com/JTJWb7
Вопрос: проверял Числа прописью и ввёл число 5909123000, когда хотел получить остаток вместо 909123000 возвращается 614155704. Почему? Я погуглил и PHP_INT_MAX у меня 2млрд, что больше, чем 909 млн? так что не должны же последние биты убираться или что там в подобных случаях делает яп.
По поводу GN: в одну строчку можно было, но там получается бардак, и я пока не смог догадаться не до чего лучше, чем по разному обозначать разные ошибки. Плюс ко всему, некоторые правила срабатывают на новые вставки в текст, пик 2
Ответы: >>1294953 >>1296299
Аноним 2018/11/13 14:22:34  №1294953 528
pr3.png (3, 270x74)
74x270
pr4.png (0, 115x37)
37x115
pr5.png (4, 1782x21)
21x1782
Аноним 2018/11/13 15:29:05  №1294987 529
>>1294899
Закрывающая скобка, идущая обработчику пхп. Скорее всего в файле перемешана логика и отображение, что плохо.
Ответы: >>1295242
Аноним 2018/11/13 15:34:28  №1294990 530
Аноним 2018/11/13 15:51:33  №1294999 531
>>1293320
>Есть ли вообще разница?
Нету. Просто один вариант негатив другого.
Аноним 2018/11/14 02:21:13  №1295232 532
>>1281726
Зачем ставить, когда можно напиздеть? Всегда говорю что у меня мак дома. Никто же не прийдёт ко мне домой и не проверит. Или как ты себе представляешь? Пойдёт HR проверять к тебе что такм у тебя стоит, и если линукса нет - прямо на месте обссыт?
Ответы: >>1295446
Аноним 2018/11/14 03:37:34  №1295242 533
Аноним 2018/11/14 13:49:16  №1295446 534
>>1295232
>но напиздеть? Всегда говорю что у меня мак дома. Никто же не прийдёт ко мне домой и не проверит. Или как ты себе представляешь? Пойдёт HR проверять к тебе что такм у тебя стоит, и если линукса нет - прямо на месте обссыт?

ахахаха, тебе сука дадут мак и посмотрят как ты там lamp настроишь. а после того как ты будешь делать это в течении 2-5 дней с мануалом под рукою, обоссут и выгонят ссаными тряпками.
пиздаболов дохуя, айчар не спалит, а твои коллеги по галере быстро стуканут, нахуй им на галере такой гребец
Ответы: >>1295659
Аноним 2018/11/14 22:39:26  №1295659 535
>>1295446
> lamp
> в конторе занимающейся кодингом
> lamp
> Настраивать 4 дня, когда он ставится за 2 клика
Ты ебанутый? Во первых никто на производстве ламп не юзает (ну разьве что ИП Ероха). Во вторых - мак от винды отличается только парой консольных команд. Ну и утилиты там другие - да. Но по сути VScode и там и там. Gitbach пульный, утилиты тестирования - вообще считай клоны.
Ответы: >>1295684
Аноним 2018/11/14 23:54:25  №1295684 536
Аноним 2018/11/15 00:22:19  №1295691 537
Блин фреймворки фреймворки...дали тестовое задание запилить что-то вроде http://preview.codecanyon.net/item/quickquiz/full_screen_preview/13641603

гуггления приводили на разные фреймворки , первый из которых silex я изучал дня 2 пока не вкурил, что он не поддерживается уже год.. потом был pyrocms.com...на гитхабах во всех репозиториях комментарии по getting started в стиле ультра-минимализм. Забивают поиск своим не упершимся в хуй гениальными Rock высерами.
Вот это чудо у кого нибудь получилось оживить https://github.com/formers/former ? - а рейтинг зашкаливает у чувака. У этой Cупер-Хуйни - pyrocms.com половина страниц в демо: 500. Или может я совсем необучаемое быдло. Просто интересно фреймворки кому-нибудь реально облегчали жизнь?

Ответы: >>1295737 >>1296299
Аноним 2018/11/15 05:45:12  №1295737 538
>>1295691
>что он не поддерживается уже год..
Это тебе голоса в голове сказали?
Ответы: >>1295832
Аноним 2018/11/15 07:48:18  №1295769 539
images.jpg (8, 257x196)
196x257
Дратути. К вам прибыла очередная макака. Вопрос: какую редакцию начинать изучать. php5 или php7? В чем принципиальная разница?
Ответы: >>1295771 >>1296299 >>1296687
Аноним 2018/11/15 07:54:33  №1295771 540
>>1295769
>очередная макака
Исходя из твоего вопроса, ты еще не макака даже, а так.

>php5 или php7?

5.6 еще актуален и какое-то время останется, тк много на нём написано говна, которое требует поддержки, доработки.
ПРИНЦИПИАЛЬНОЙ разницы нет, особенно для новичка. Основные конструкции ничем не отличаются.
Главная фишка пхп 7 это производительность, которая взлетела чуть ли не в два раза, всё остальное это улучшение ооп, новые операторы типа <=>, типизация.
Ответы: >>1295775 >>1296453
Аноним 2018/11/15 07:59:29  №1295775 541
>>1295771

Ясно, спасибо. Буду сходу в 7й вкатываться.
Аноним 2018/11/15 09:14:30  №1295797 542
Какие технологии и фреймворки сейчас востребованы, за что готовы платить деняки на фрилансе?
Ответы: >>1295833
Аноним 2018/11/15 09:27:53  №1295799 543
Аноны, я нуфажина
Приобрел свой бесплатный хостинг, учусь по видеоурокам. Там сказали не запариваться по поводу настройки веб сервера и настроить .htaccsess как сказал он. Вот настройки:
RewriteEngine On
RewriteBase /MVC/ /у меня много папок на хостинге, конкретно в этой я учусть делать mvc/

RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d\t
RewriteRule ^(.*)$ index.php

Все ок, все работает, кроме того, что не подгружаются стили. В чем может быть проблема?
Ответы: >>1295804
Аноним 2018/11/15 09:34:14  №1295804 544
>>1295799
>Все ок, все работает, кроме того, что не подгружаются стили
Что в консоли пишет браузер?
Ответы: >>1295817
Аноним 2018/11/15 09:53:02  №1295817 545
>>1295804
Пишет не удалось загрузить таблицу стилей hostname.com/MVC/templates/default.css
Ответы: >>1295823
Аноним 2018/11/15 10:02:06  №1295823 546
>>1295817
Заработало! Я нахуевертил с путями.
Аноним 2018/11/15 10:07:11  №1295825 547
>>1293320
СИКП, ХТДП, совершенный код.
Лучше пиздуй на Хекслет, там тебя научат (если хочешь учиться)
Аноним 2018/11/15 10:17:28  №1295832 548
>>1295737
Значит костылик запилили .. временный.. Потому как я читал июньские посты нескольких людей что ВСЕ

Как установить вот эту приблуду https://github.com/anomalylabs/button_block-extension в свой проект?
Без Ларавеля она не заработает же..
Ответы: >>1295851
Аноним 2018/11/15 10:19:33  №1295833 549
Ответы: >>1295848 >>1296298
Аноним 2018/11/15 10:51:52  №1295848 550
>>1295833
Чо это такое, зочем нужно?
Аноним 2018/11/15 11:01:33  №1295851 551
>>1295832
composer require 'anomaly/button_block-extension'
Ответы: >>1295874
Аноним 2018/11/15 12:30:24  №1295872 552
Есть вопрос по работе с таймзонами в MySQL и Doctrine.
В проекте используется подход с конвертацией времени в UTC на стороне Doctrine: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/cookbook/working-with-datetime.html#handling-different-timezones-with-the-datetime-type

Проблемы начинаются тогда, когда нужно группировать данные по дате. Данные в БД сконвертированы в UTC, но пользователю нужно показать данные, сгруппированые с учётом его таймзоны. Использовать функцию convert_tz у MySQL? В таких приложениях нужно ли просить пользователя указывать свою таймзону где-то у себя в настройках или нам, как разработчикам, нужно самим угадывать его таймзону? Какие вообще стандартные практики при разработке приложений, которыми будут пользоваться люди с разными таймзонами? Было бы круто, если бы ОП добавил урок на эту тему в репозиторий на гитхабе.
Ответы: >>1296297
Аноним 2018/11/15 12:31:56  №1295874 553
>>1295851
А зачем в кавычках?
Аноним 2018/11/15 12:36:07  №1295877 554
>>1285899
Зачем платить за курсы, если нет свободных денег?
Да и тем более, большинство информации есть в свободном доступе, просто на курсах все удобно распределено, ну или типа того
Все равно придется самому писать многие вещи и все самому постигать
https://nnm-club.me тут можешь чекнуть курсы, не только от лофтскул

Удачи
Аноним 2018/11/15 14:30:00  №1295909 555
Аноним 2018/11/15 19:08:18  №1296030 556
https://ideone.com/VssKNl

Только начал изучать, у ОПа в учебнике задача с айфоном. Вопрос: можно ли делать, так как у меня? Всё вроде сходиться, по всем примерам. И да, я не заморачивался с переменными, как у ОПа, а просто наебашил матьимачехи.
Ответы: >>1296297
Аноним 2018/11/15 21:40:09  №1296086 557
Ответы: >>1296297
Аноним 2018/11/16 14:21:12  №1296297 558
527-557

>>1296086

> for ($i=0;$i<9;$i++) {
> $massivWord = $allWords[$i];

Для перебора массива лучше использовать foreach, а то у тебя при изменении списка слов надо считать его длину вручную. А "\n" можно было точно так же вставить в массив.

> echo "$poem";
Кавычки тут не нужны: echo $poem; В кавычки помещается текст (можно с переменными), а если у нас одна переменная, то ей кавычки не нужны.

>>1296030

> (($credit/100)3);
Проценты лучше вынести в переменную. Во-первых, будет по названию понятно, что это за число, во-вторых, менять будет проще.

> $realPrice=$realPrice+1000+(($credit/100)
3);
> $credit=$credit+1000+(($credit/100)*3);
Тут почти копипаста. Общую часть стоит вынести в отдельную переменную.

> И да, я не заморачивался с переменными
Менять числа неудобно, и непонятно, что они значат.

>>1295872

> Данные в БД сконвертированы в UTC, но пользователю нужно показать данные, сгруппированые с учётом его таймзоны.

Да, придется преобразовывать дату в запросе. Стоит глянуть, не повредит ли это производительности запроса.

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

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

Также, желательно писать, в каком часовом поясе время. Ну и протестировать все это тщательно.

Насчет определения. В HTTP-заголовках эта информация не передается. Определить смещение от UTC (на компьютере пользователя) можно кодом на JS (и сохранить в куку), но при первой загрузке страницы время еще неизвестно и потому можно угадывать его по GeoIP.
Ответы: >>1296414
Аноним 2018/11/16 14:22:03  №1296298 559
>>1295833

Обрати внимание, что там есть проблемы:

- в начале каждого контроллера иет копипаста, выставляющая хедеры: header('Access-Control-Allow-Origin: *'); ...
- кстати, изучи, что каждый из них делает, не копируй бездумно
- здесь нет проверки на ошибку декодинга JSON: $data = json_decode(file_get_contents("php://input")); Надо проверять, что в $data не null.
- при ошибке удаления это сообщается текстовым сообщением. Но это неудобно проверять программно тому, кто вызвал API. Надо при ошибке как-то сигнализировать, например, HTTP-кодом ошибки или менять вид JSON на {"error": "Cannot delete"}

Также, изучи основы HTTP (у меня тут есть урок https://github.com/codedokode/pasta/ ). Ну и если ты делаешь REST API, изучи, что это такое.

> $this->id = htmlspecialchars(strip_tags($this->id));
Это бессмысленный набор функций. Автор не знает, как правильно обрабатывать данные от пользователя и сует все функции, про которые слышал.

> public function __construct($db) {
Тут не хватает тайп-хинта

Весь код выложен в публично доступную папку. Надо бы его переделать, чтобы доступны снаружи были только контроллеры в /api/, а не все. Так безопаснее.

> // Print error if something goes wrong
> printf("Error: $s.\n", $stmt->error);
Это непраивльно. При ошибке автор выводит сообщение в HTTP-ответ. То есть приложение, которое будет отправлять запрос к этому API, увидит это сообщение. Но оно ведь не обладает интеллектом и прочесть его не может. А разработчик, наоборот об ошибке не узнает.

Это надо переделать. Ошибки должны писаться в лог, а в HTTP-ответе надо отдавать код ошибки 5xx.

Также, API не документировано. Я советую изучить Swagger и документировать с его помощью.

> // Get Single Post
> public function read_single() {
...
> $stmt->bindParam(1, $this->id);

Сделано дебильно. Почему нельзя передавать id прямо в функцию как аргумент? Зачем вместо очевидного варианта сделана передача через поле? Я скажу, почему. Автор не знает ООП, но пытается изображать ООП-код.

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

Также, ты можешь, используя комментарии из задачи про студентов, сделать блог сам - только правильно.
Аноним 2018/11/16 14:23:10  №1296299 560
>>1295769

Используй PHP7 (зачем старье использовать?), но прочти любую статью про отличия PHP7 от PHP5.

>>1295691

> первый из которых silex я изучал дня 2 пока не вкурил, что он не поддерживается уже год
Есть Slim, тоже микрофреймворк.

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

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

>>1294952

> Числа прописью - https://ideone.com/yhrxPg
> (int $number = 0, array $words)
Значения по умолчанию помещают в конец списка, иначе это мало смысла имеет (тебе все равно придется указывать $number).

> function word(int $number = 0, array $words)
У функций можно указывать тип возвращаемого значения: function something(): string { ... }

> function digitsToWords(int $number, array $numbers, bool $isFemale){
Не очень логично, что тут передается $numbers. Разве нам понадобится когда-то менять написание цифр? Если нет, то незачем их и передавать, пусть они будут заданы в этой или другой функции.

Код в конце программы тоже стоило завернуть в функцию.

> $i = intval(log10(abs($number))) + 1;//Количество цифр = log10(n) + 1;
Можно было вынести это в отдельную функцию для определения количества цифр в числе.

> $threeDigits = getDigits($number, $i - 3);
> $number = getRemainder($number, $i - 3);
> $resultExp[] = digitsToWords($threeDigits, $numbers, $isFemale);
> $resultExp[] = word($threeDigits, $denomination);
А это нельзя поместить в цикл из 3 шагов, а не копировать 3 раза?

> Я погуглил и PHP_INT_MAX у меня 2млрд, что больше, чем 909 млн?
В PHP есть 2 типа чисел: int и float. Int для целых небольших чисел, float - дял любых, но у него ограничена точность (~8 значащих цифр в 32-битной версии и ~15 в 64-битной). При выходе за пределы int PHP автоматически конвертирует число в float.

Число 5 млрд в 32-битной версии будет сохранено как float, в чем легко убедиться:

echo PHP_INT_MAX ."\n";
echo 5909123001;
echo "\n";

Я сделал похожий код, но удлинил число для 64-битной версии: https://repl.it/repls/BriskVerticalMetadata

Как видишь, девятки округлились при преобразовании в float.

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

Проблема, впрочем, может быть вот тут: $number % pow(10, $i)

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

Есть даже баг-репорты по этому поводу: https://www.google.com/search?q=site%3Abugs.php.net+php+modul%D0%BE+with+float+&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA

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

Если ты хочешь аналог % для float, то это fmod(). Но в данной задаче float не годится - нам нужно точное число, а не примерная сумма денег на счету. Для денег вообще не стоит использовать float.