«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #103 Аноним 2018/07/22 04:57:28  №1232710 1
php-noob-1.png (33, 500x500)
500x500
cat-cafe-osaka.jpg (157, 1024x683)
683x1024
cat-sad.jpg (194, 1024x768)
768x1024
himouto-umaru-chan.jpg (99, 1200x674)
674x1200
Добро пожаловать в клуб востребованных и незаменимых людей. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки, печем печенье и даже делаем простые сайты! Зачем? Кто-то хочет изменить мир, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Предыдущий тред был тут: >>1199390 (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/07/22 04:59:41  №1232711 2
just-google-it.jpg (156, 787x830)
830x787
grammar-nazi.png (56, 500x644)
644x500
В прошлом треде >>1199390 (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/07/22 12:31:26  №1232886 3
Где по логике MVC должны хранится скрипты? Если писать их прямо во вьюшке меня будут бить? Обязательно ли передавать во вьюшку модель формы? Как ко мне будут относится, если я передам модель объекта из БД?
Ответы: >>1232944 >>1232967 >>1241066
Аноним 2018/07/22 12:42:51  №1232901 4
>>1232710 (OP)
А телега у вас есть? Мимо junior-middle php
Ответы: >>1233765
Аноним 2018/07/22 13:23:10  №1232944 5
Аноним 2018/07/22 13:36:25  №1232967 6
>>1232886
зачем тебе это? Какая цель?
Ответы: >>1241066
Аноним 2018/07/22 16:49:37  №1233122 7
>>1232699
Спасибо за ответ ОП. Очень прошу тебя прочетсь пост целиком:

> В чем смысл такого кеша? Я не понимаю из описания, что кешируется и куда.
Имеется ввиду, пишутся на диск из php но читаются только файловым сервером.

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

> Практичнее сделать неумирающее приложение и держать список файлов в памяти. Если надо, дампить его на диск и при запуске читать дамп. Также, это лучше писать не на PHP, а на Го, так как тут критична производительность.
Я никак не могу пихать его в рам потому что её мало. Файлы могут весить по 1-2 мегабайта, а память там общая на несколько сайтов. Сейчас в среднем свободно меньше гига и даже тот в "эвейлебл" а не фри. Плюс иногда память сильно нужна на всякие процессинги. Получается, под это дело нужно выделять пару гигов хотябы и всё-равно часть системы отвечающая за частоту запросов оставить, чтобы в памяти лежали самые популярные файлы.

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

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

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

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

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

Теперь попробую дополнить факторами по которым я решил что так будет лучше и для чего вообще кеш нужен:
1. Кеш для картинок, не помню указывал ли это раньше. Грубо говоря, есть оригинал в 5к, кеш - для его версий в 4к, 2к, телефонном и так далее. Хочу отдельно отметить что это не относится к тамбнейлам, для них отдельная системка и весят они ничтожно мало и проблем нет.
2. Картинок очень много и потенциально есть вероятность запроса их в любом порядке и любом разрешении.
3. Мало рам, диск ограничен.
4. Почему вообще кажется что нужен кеш: ресайз картинок, особенно крупных - занятие небыстрое. Я почему-то думаю, что одно чтение файла с диска быстрее чем чтение более крупного файла с диска, его декодировка, ресайз, кодировка и отдача.
5. "аналитически" (аналитика не моя) считается что в основном будет спрос только на ряд файлов в определнных разрешениях. Что это значит: допустим, какое то изображение в определеном разрешении запросили один раз в месяц - нет смысла даже думать о его кешированнии. Но на главной (лендинг типа) странице есть как минимум несколько изображений которые показываются всем посетителям - очевидно что их есть смысл закешировать в размере в котором они для лендинга юзаются. Так-же есть такие разделы где часто показываются одни и те-же картинки, и ориентировочно большинство пользователей имеют fhd мониторы - следовательно, вероятность что они будут эти именно эти картинки просить в именно таком разрешении выше.
6. Таким образом это не традиционный кеш, а кеш по частоте обращений, т.е. кешировать в принципе нужно только то что чаще всего запрашивают пользователи.
7. Использование отдельного "реестра" для частоты обращений (внутри мемкешд например) как раз позволяет минимизировать бесполезные иопсы и писать только то что реально нужно.
8. Нужна возможность именно вручную контролировать кап на дисковое пространство кеша, чтобы случайно не забить диск и прочие радости.

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

Но и в то же время не хочется чтобы парочка любопытных листальщиков галерей завалила сайт по рам или диску.
Ответы: >>1241066
Аноним 2018/07/22 19:40:55  №1233215 8
image.png (79, 353x353)
353x353
Поставил эту IDE под XUbuntu.
Запустил сервер регистрации в docker-контейнере.
Опасно так делать, за яйца не возьмут?
Аноним 2018/07/22 19:53:20  №1233228 9
Хочу стать программистом 300к/секунду, я туда зашел?
Ответы: >>1233242
Аноним 2018/07/22 20:11:41  №1233242 10
>>1233228
нет, сюда заходят смеяться пять минут
Аноним 2018/07/23 07:11:15  №1233404 11
15306426068990.gif (17, 140x140)
140x140
Где все? Ещё не перекатились?
Тренд легитимный?
Ответы: >>1233435
Аноним 2018/07/23 08:03:05  №1233435 12
Ответы: >>1233634 >>1241067
Аноним 2018/07/23 15:21:47  №1233634 13
>>1233435
Ах ты змеюка подколодная.
Аноним 2018/07/23 17:28:10  №1233688 14
На что съебаться с PHP?

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

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

Что посоветует анон?
Аноним 2018/07/23 17:35:48  №1233697 15
>>1233688
Посоветую пойти нахуй в соответствующие треды.

Заебал уже анрелейт.
Ответы: >>1233702
Аноним 2018/07/23 17:42:04  №1233702 16
>>1233697
Как с помощью пхп приносить дяде больше бабла?
Аноним 2018/07/23 17:56:58  №1233721 17
>>1233688
Из всего тобой перечисленного внимания заслуживает только питон.

Руби-хайп закончился, и с него давно все уже перекатываются, кто куда, а го - это вообще несерьёзно.
Ответы: >>1233728
Аноним 2018/07/23 18:09:18  №1233728 18
>>1233721
>го - это вообще несерьёзно
поясни. Я тож скептически отношусь ибо похож на хайповую неустоявшуюся хуиту, но почитал о нем немного и судя по описаниям прям сказка и прям все из коробки есть и фреймворки ненужны и либы и пр.
Аноним 2018/07/23 18:59:55  №1233765 19
6-3-Kalom1.jpg (240, 768x576)
576x768
>>1232901
Лично у меня есть желание общаться. Оставь что-то для связи с тобой.
>>1233688
Javascript/Java
Ответы: >>1233779
Аноним 2018/07/23 19:05:18  №1233767 20
>>1233688
1. Каких ботов?
2. Дай код хоть одного.
3. Сколько зарабатываешь?
Ответы: >>1233781
Аноним 2018/07/23 19:24:57  №1233779 21
Аноним 2018/07/23 19:26:03  №1233781 22
Ответы: >>1233789
Аноним 2018/07/23 19:39:37  №1233789 23
>>1233781
Посмотрю на реализацию
Ответы: >>1233845
Laravel Аноним 2018/07/23 20:24:05  №1233842 24
image.png (203, 1057x729)
729x1057
Error creating resource: [message] fopen(http://cabinet.laravel.com/latest.zip): failed to open stream: Connection refused

Checking Domain Name
Domain Name: cabinet.laravel.com
Top Level Domain: COM (Commercial TLD)
DNS Lookup
IP Address: 159.203.176.43

И как теперь быть? съебать из этой страны не предлагать
Ответы: >>1233853 >>1233918
Аноним 2018/07/23 20:34:19  №1233845 25
>>1233789
и по ней определишь какой язык стоит учить?
Аноним 2018/07/23 20:59:57  №1233853 26
>>1233842
ну попробуй же курлом через прокси
Аноним 2018/07/24 01:39:01  №1233913 27
>>1232710 (OP)
Посоны, на рутракере PHPStorm без вирусов лежит или с вирусами, самые популярные раздачи? Стоит ли его пиратский вообще качать для ознакомления пока дома сижу без работы. И комп 2 гига 2 ядра вин7
Ответы: >>1233953
Аноним 2018/07/24 02:15:53  №1233918 28
>>1233842

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

Прокси в линуксе обычно задается переменной окружения HTTP_PROXY.
Ответы: >>1233955
Аноним 2018/07/24 05:04:33  №1233953 29
>>1233913
сам phpstorm можно просто оффициально триальный с сайта скачать, и потом активировать уже
А вообще там вроде недавно бесплатную комьюнити версию завезли, если я ничего не путаю
Ответы: >>1235076
Аноним 2018/07/24 05:11:20  №1233955 30
>>1233918
>Прокси в линуксе обычно задается переменной окружения HTTP_PROXY.

насколько помню socks прокси так не задать
Аноним 2018/07/24 06:31:54  №1233998 31
Привет всем.

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

https://github.com/NotBadCode/TheKnowledgeBase
Ответы: >>1241067
Аноним 2018/07/24 06:38:12  №1234002 32
>>1233688
>На что съебаться с PHP?
Зачем?

>Хочу ушуршать, на что-то более взрослое в этом плане.
В плане чего?

Для веба за первое место сейчас дерутся PHP и JS.
Остальное сильно позади.
Ну ещё очень модно использовать GO.

Веб это не только 'сайтики' и боты, но ещё и целый пласт разные веб-приложений, сервисов автоматизации, всяких СРМ, ERP, B2B и т.д.

Если ты хочешь уйти из веба, то можешь смотреть в сторону мобилок и соответственно их технологий/языков, тоже модно-молодёжно.
Ответы: >>1234008 >>1234010 >>1234267
Аноним 2018/07/24 06:44:16  №1234008 33
>>1234002
>сервисов автоматизации

WinCC и прочие.

, всяких СРМ, ERP, B2B и т.д.

Решено в рамках уже существующих ERP, одножоп в случае СНГ и САП в случае остального мира.
>
Ответы: >>1234034
Аноним 2018/07/24 06:48:43  №1234010 34
>>1234002
>то можешь смотреть в сторону мобилок и соответственно их технологий/языков, тоже модно-молодёжно.

А вот там как раз веб через кордову сейчас актуален. Потому что на жабе боль, на qt можно делать тяжелый быстрософт, но его еще большая боль писать, а серьезными задачами, где требуется быстродействие плюсов один хер на мобилах работать не удобно и софт не популярен. Там веб самое то. Кроме игорь, но их пишут на готовых движках.
Ответы: >>1234034
Аноним 2018/07/24 07:23:20  №1234028 35
image.png (406, 914x1200)
1200x914
Коданы, скажите, годная книга? Сейчас на пару дней без пеки и инторнетов останусь, стоит ли почитать?
Ответы: >>1234030 >>1234173
Аноним 2018/07/24 07:31:57  №1234030 36
>>1234028
> Коданы, скажите, годная книга? Сейчас на пару дней без пеки и инторнетов останусь, стоит ли почитать?

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

Как сейчас вспоминаю, этот html4, ебля с браузерами и их несовместимостью, робкие попытки внедрить jQuery, смешивание пыха и html в нечитаемую write-only лапшу на стопицот файлов, SQL инъекции, XSS-инъекуции, magicquotesgpc который не помогает и самопальный парсер.
Ответы: >>1234032
Аноним 2018/07/24 07:35:27  №1234032 37
>>1234030
>у тебя горит сентябрь, яга недопита и ты хочешь вернуть себе 2007 - то вперед.
Было бы неплохо, конечно. А по сабжу устаревшая книга? Что, тогда, из нового почитать? Я только начинаю учить, если что. Для новичков что-то вменяемое есть?
Ответы: >>1234039
Аноним 2018/07/24 07:37:39  №1234034 38
>>1234008
>Решено в рамках уже существующих
Конечно, всё уже изобрели и придумали, но почему то спрос на индивидуальные решения всё равно высок

>>1234010
>веб через кордову сейчас актуален

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

>на qt можно делать тяжелый быстрософт
>быстродействие плюсов один хер на мобилах работать не удобно и софт не популярен

Мне кажется, у тебя какая-то жуткая каша в голове и ты сам не совсем понимаешь о чем говоришь.
Тебе стоит более подробно изучить рынок и технологии, а потому уже говорить о востребованности и происходящим.
Ответы: >>1234041
Аноним 2018/07/24 07:48:34  №1234039 39
Ответы: >>1234040
Аноним 2018/07/24 07:50:15  №1234040 40
>>1234039
Прежде чем к фреймворку приступать, надо хотя бы на уровне джуна PHP знать, разве нет?
Ответы: >>1234042
Аноним 2018/07/24 07:50:47  №1234041 41
>>1234034
>Тебе стоит более подробно изучить рынок и технологии, а потому уже говорить о востребованности и происходящим.

А что там изучать? 80% - жаба, 20% - плюсы + QT (как правило тот самый непопулярный ёба-софт в котором можно чотополезноесложноеделать или портировано с десктопа переверсткой). Геймдев 90% сисярп на юньке, остальные 10 - ноунейм двадэ движки.
Аноним 2018/07/24 07:52:13  №1234042 42
>>1234040

А что ты на пыхе будеш без фреймворка в 2018 году писать? Консольные хеллоуворлды и "прочитать файл" в репле?
Ответы: >>1234046
Аноним 2018/07/24 08:03:05  №1234046 43
>>1234042
На практике ничего. Но без знания синего зелёного слоника, я смогу только установить фреймворк по гайдам зайти и охуеть. Я только-только функции начал учить, до ООП ещё как до луны на тракторе.
Ответы: >>1234137
Аноним 2018/07/24 11:12:37  №1234137 44
>>1234046
Не хочешь скооперироваться?
мимо тоже недавно начал учить
Ответы: >>1234151
Аноним 2018/07/24 11:44:45  №1234151 45
>>1234137
Решаю сейчас задачу про йоду, я с вами тоже могу, мимоещеодин
Ответы: >>1234155 >>1234170
Аноним 2018/07/24 11:49:47  №1234155 46
>>1234151
Давай фейкопочту/телегу
мимо решающий задачу "цифры в слова"
Ответы: >>1234170 >>1234221
Аноним 2018/07/24 12:16:19  №1234170 47
>>1234155
>>1234151
@agcn202931
можно запилить конфу, нас уже минимум трое
Аноним 2018/07/24 12:20:24  №1234173 48
15305939564440.jpg (37, 604x445)
445x604
>>1234028
2к18
Читать книги да ещё и в переводе.
Ответы: >>1234179 >>1234181
Аноним 2018/07/24 12:36:40  №1234179 49
>>1234173
Когда есть божественный курс "центра Специалист при МГТУ Баумана".
Ответы: >>1234242
Аноним 2018/07/24 12:40:08  №1234181 50
Аноним 2018/07/24 13:28:41  №1234208 51
Нубас зашедший для размятия можопызга репортинг ин. Поясните ЧЯДНТ. Вторую часть задачи выполнил, выводится все по задумке верно, но в первой части не могу вывести результаты выпадения кубов. Переменная не добавляется как нужно, а идет текстом. https://ideone.com/YpdRkJ
Ответы: >>1234217 >>1234219
Аноним 2018/07/24 14:00:13  №1234217 52
Ответы: >>1234253
Аноним 2018/07/24 14:02:06  №1234219 53
>>1234208
ковычки не те, братан
Ответы: >>1234253
Аноним 2018/07/24 14:04:46  №1234221 54
Аноним 2018/07/24 14:46:02  №1234242 55
Ответы: >>1268537
Аноним 2018/07/24 14:57:30  №1234248 56
Группа в телеге,

join chat/ Eh8Gzg94NT7LDHFpw4iZ7g
Ответы: >>1234249 >>1234261
Аноним 2018/07/24 14:59:56  №1234249 57
>>1234248
https://т . ме не забываем добавлять передо джоин чат, и пробелы убираем.
Ответы: >>1234261
Аноним 2018/07/24 15:13:51  №1234253 58
Аноним 2018/07/24 15:36:40  №1234261 59
cat.jpg (136, 960x1280)
1280x960
Ответы: >>1237042
Аноним 2018/07/24 16:15:04  №1234267 60
>>1234002
>Если ты хочешь уйти из веба
ноуп

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

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

При этом хотелось бы, чтобы возможность написать сайт тоже была. Я так понял - питон идеальный вариант
Аноним 2018/07/25 17:48:32  №1234904 61
Кто-нибудь учит по курса ProfIT ? если да, давайте скооперируемся для разбора домашки. Мимодебилкоторыйсамнеможет
Аноним 2018/07/25 21:08:34  №1235075 62
>>1233688
го как кор язык не кому нужен не будет , алсо большие проекты на го будут не поддерживаемые ввиду его не полного ООП , как доп язык норм , по серьёзнее кровавый терпрайз C# Java тд
Ответы: >>1235990
Аноним 2018/07/25 21:11:04  №1235076 63
>>1233953
раннюю не стабильные версии раздавали , но тоже с триалом
Аноним 2018/07/26 00:32:02  №1235138 64
Поясните за современные cms/фреймворки? Последние 5 лет выпал из темы, ебал вола в одной конторе и пилил продукт на некроговне (yii)
К говноедству высокая терпимость. К какой платформе присмотреться, чтоб побольше денег и ближайшие 5-6 лет не остаться без работы? Magento/woo/laravel/symfony/codeigniter/zf2? Кто может пояснить?
Рынок не СНГ есличо
Ответы: >>1236000
Аноним 2018/07/26 05:56:26  №1235186 65
Друзья, есть ли у вас годные уроки по созданию корзины магазинов?
Аноним 2018/07/26 09:49:07  №1235305 66
Как же я ненавижу битрикс блядь. Какое это говно. Раньше я просто ненавидел все ЦМСки, но сейчас понял, что у них есть неоспоримый говнолидер
Аноним 2018/07/26 20:33:37  №1235889 67
Призываю в тред гуру для ответа и новичков для просмотра. Эта конкретная задача которую вам по любому придется выполнять.
Задача: https://pastebin.com/jwPp3di5
Есть форма которая пишет введенное значение в файл. Но!, при нажатии кнопки обновить в браузере запрос повторяется и значение знаешь? опять пишутся в файл. Нужно ей запретить.
Пикрилейтед 2 - кнопка обновить
Пикрилейтед 3 - 5 нажатий

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

Я решаю это так: https://pastebin.com/8ERUtNbx
Добавляю заголовок:
header("Location:$_SERVER[PHP_SELF]");
Но есть и минусы. Если файл что-то выводит до этой строки - будет ошибка:
Warning: Cannot modify header information - headers already sent by (output started at C:\Web\Apache2.2\htdocs\3.php:2) in C:\Web\Apache2.2\htdocs\3.php on line 18
Для того чтобы не контролировать весь вывод до заголовка, нужно в PHP.ini включить буфер
output_buffering = On
И использовать функции буфера ob_start(); и ob_end_flush();
Результат: https://pastebin.com/x9Np8tPb
Минус тоже в том что не во всех серверах буфер будет включен.
Ответы: >>1235891 >>1236030
Аноним 2018/07/26 20:39:02  №1235891 68
>>1235889
Так а что за задача? Тебе нужно с каждого нового запроса новый фал создавать или дописывать в один?
Ответы: >>1235899
Аноним 2018/07/26 20:57:48  №1235899 69
>>1235891
Задача НЕ дописывать в файл (файл тут для удобства, тоже самое происходить при добавлении в БД) пр обновлении страницы.
Мне показали пример ссессий и метки но я нихуйя пока не могу понять. Когда и как ставить.
Аноним 2018/07/27 02:56:20  №1235958 70
15256339482151.jpg (32, 512x512)
512x512
Ой, как у меня бомбит.
Вот сделали в похапе удобные классы для работы с датой, ай как хорошо.
Сколько будет 31 января плюс 1 месяц? ТРЕТЬЕ МАРТА, СУКА, ТРЕТЬЕ МАРТА, ААААААААААААААААААААААААААААААААААААААААААААААААА
Это говно просто увеличивает месяц на единицу, и если дней че-т многовато, увеличивает месяц еще на единицу и щедро ссыпает остаток туда. Сука!

Ладно, возьмем класс DatePeriod.
Запустим его с интервалом в месяц от 31 января. Сколько будет 31 января плюс 2 месяца. Че, 31 марта? ХУЙ ТАМ, ТРЕТЬЕ АПРЕЛЯ АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА
ИДИТЕ НАХУЙ
СУКА
БЛЯДЬ
Аноним 2018/07/27 04:33:53  №1235970 71
>>1235958
>эти исповеди говноеда
Этот дурачок начинает что-то подозревать, какая прелесть.
>>1232710 (OP)
Ты гнида, кстати.
Ответы: >>1235972
Аноним 2018/07/27 04:36:41  №1235971 72
Неосиляторы, идите обратно во вротенд тред, не надо тут помойку делать, как у вас
Ответы: >>1235975
Аноним 2018/07/27 04:37:45  №1235972 73
15238970866291.webm (431, 640x360)
360x640
>>1235970
Не смей обижать ОПа.
Ответы: >>1235973
Аноним 2018/07/27 04:42:50  №1235973 74
>>1235972
>ОП
Гнида, активно распространяющая омерзительное говно среди безмозглого быдла.
Впрочем, не говорю это как что-то плохое.
Ответы: >>1235977 >>1235993
Аноним 2018/07/27 04:44:37  №1235975 75
>>1235971
>дегенераты уровня /зк высирающие этот ваш пыхыпы обосрались с датами как школьники
>Неосиляторы
О да, конечно.
Ответы: >>1235977
Аноним 2018/07/27 04:47:19  №1235977 76
>>1235975
>>1235973
Что, даже учебник опа не осилил? Или с мувисвитчером не берут уже на галерку?
Ответы: >>1235979
Аноним 2018/07/27 04:49:30  №1235979 77
lookuponyou.jpg (41, 720x480)
480x720
>>1235977
>эти проекции пыхыпы олигофрена
As expected.
Ответы: >>1235982
Аноним 2018/07/27 04:54:47  №1235982 78
>>1235979
Молодец, опустил тут всех гринтекстом и картиночками, можешь уебывать в свою ламповую фронт помойку, серьёзно, уходи
Ответы: >>1235983
Аноним 2018/07/27 04:55:57  №1235983 79
>>1235982
>эти мольбы о пощаде
На коленях челобитную подавай.
Ответы: >>1235984
Аноним 2018/07/27 04:57:42  №1235984 80
>>1235983
Тебя уже в b заждались, больше тебе никто тут не ответит
Ответы: >>1235985
Аноним 2018/07/27 04:58:53  №1235985 81
>>1235984
>больше тебе никто тут не ответит
Какой наивный идиотик, хаха.
Аноним 2018/07/27 05:38:13  №1235990 82
>>1235075

КРОВАВЫЙ тырпрайз вполне себе и на пыхе пилят.
Аноним 2018/07/27 05:45:03  №1235992 83
>>1235958

Покажи, как ты из складывал.
Ответы: >>1235994
Аноним 2018/07/27 05:50:22  №1235993 84
Ответы: >>1235994 >>1235997
Аноним 2018/07/27 05:50:52  №1235994 85
Аноним 2018/07/27 06:04:54  №1235997 86
>>1235993
Пруфы твоим выдумкам будут?
Ответы: >>1235999
Аноним 2018/07/27 06:09:56  №1235999 87
image.png (35, 500x586)
586x500
Ответы: >>1236001
Аноним 2018/07/27 06:10:10  №1236000 88
>>1235138
магазинчики пилят в основном на Magento
остальной булшит на WP Drupal(ибо он нынче CMF)

laravel - хайповая штука по типа RoR есть какой то процент его на рынке но не велик

symfony - хороший интерпрайз фрейм с кучей слоёв абстракций (его бы и брал под большие проекты) довольно большой процент рынка как у нас так и гейропке

yii2 - как по мне очень не плох для средней руки проектов так как у них есть божественный gii потому таблицы с фильтрами и тд очень быстро накидываются в отличии от SF LR
Ответы: >>1237092
Аноним 2018/07/27 06:14:49  №1236001 89
>>1235999
Фотошоп свой уноси.
>ideone.com
Ссылочку на .рт, пожалуйста.
Аноним 2018/07/27 06:18:09  №1236003 90
Ответы: >>1236008 >>1236009
Аноним 2018/07/27 06:23:08  №1236008 91
>>1236003
За костыль спасибо, я уже свой наворотил.
Ответы: >>1236010
Аноним 2018/07/27 06:25:33  №1236009 92
>>1236003
>$dt = new DateTime("2018-01-31");
>$dt->add(new DateInterval("P1M")); // 2016-03-02
Ясно.
>эти говнокостыли из говна в этом говнотреде
Понятно.
Ответы: >>1236014
Аноним 2018/07/27 06:26:10  №1236010 93
>>1236008
>За костыль спасибо
Ебать ты червь-пидор.
Впрочем, что с пхпшника взять.
Аноним 2018/07/27 06:45:13  №1236014 94
Ответы: >>1236015 >>1236018
Аноним 2018/07/27 06:47:21  №1236015 95
>>1236014
Не корми щитпостера. Не отвлекай, видишь, человек ТРАЛЕНКОМ занимается.
Ответы: >>1236018
Аноним 2018/07/27 06:57:40  №1236018 96
>>1236014
>костыль
>на оф сайте пхп
И тут снизу постучали.
Впрочем быдло (тебя) вовсе не жаль.
>>1236015
>КУДАХ БАБАХ КУКАРЕКУ
Да, все же нервная работа - жрать говно бесплатно.
Аноним 2018/07/27 07:14:44  №1236025 97
А ну-ка напомните, для чего в принципе нужен PHP, когда есть JS?
Ответы: >>1236029
Аноним 2018/07/27 07:21:36  №1236029 98
>>1236025
>Клуб изучающих PHP #103
>#103
>для чего в принципе нужен PHP
Кормить быдло говном же, глупый.
Аноним 2018/07/27 07:25:13  №1236030 99
>>1235889

Чтобы форма не отправлялась 2 раза, надо использовать паттерн Post/Redirect/Get. Почитай мой урок про обработку форм https://github.com/codedokode/pasta/blob/master/forms.md

> Но есть и минусы. Если файл что-то выводит до этой строки - будет ошибка:

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

Также, надо сохранять файл в utf-8 без BOM (byte order mark).

Не надо искать сложные решения там, где есть простые.
Ответы: >>1236478
Аноним 2018/07/27 07:33:27  №1236036 100
>>1235958

Да, действительно. С другой стороны, если бы 31 января + 1 месяц давало 28 февраля, возникли бы другие проблемы: а сколько например должно давать 30 января + 1 месяц?

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

$start->add(...P1M)->sub(...P1D);
Ответы: >>1236038 >>1236044
Аноним 2018/07/27 07:44:56  №1236038 101
>>1236036
>а сколько например должно давать 30 января + 1 месяц?
28 или 29 февраля, олигофрен.
>этот давно запощенный говнокостыль
Оно еще и с замедленным развитием.
Ответы: >>1236160
Аноним 2018/07/27 08:02:54  №1236044 102
Ответы: >>1236046 >>1236050
Аноним 2018/07/27 08:11:25  №1236046 103
Аноним 2018/07/27 08:19:37  №1236050 104
>>1236044

"логично" это субъективное мнение. И это сторонняя библиотека со специальной функцией прибавления месяца, а не встроенный JS объект Date. Я думаю, в PHP можно при желании тоже найти такую стороннюю библиотеку (или написать, если вдруг ее нет).
Ответы: >>1236056 >>1236058 >>1236097
Аноним 2018/07/27 08:39:13  №1236056 105
Ответы: >>1236102
Аноним 2018/07/27 08:42:51  №1236058 106
>>1236050
>"логично" это субъективное мнение.
То есть вот это правильно:
>$dt = new DateTime("2018-01-31");
>$dt->add(new DateInterval("P1M")); // 2016-03-02
Фиксирую.
Аноним 2018/07/27 09:51:11  №1236097 107
>>1236050
Мм. Естественно буду искать, не стандартной же пользоваться! Так что мимо.
Ответы: >>1236102 >>1236125
Аноним 2018/07/27 09:53:08  №1236102 108
Ответы: >>1236125 >>1236249
Аноним 2018/07/27 10:12:03  №1236125 109
>>1236097
>>1236102
>эта криворукость
Типичный пхпшник типичен.
Ответы: >>1236160
Аноним 2018/07/27 10:45:17  №1236160 110
>>1236125
>>1236038

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

Если вам не нравится PHP, просто не используйте его и проходите мимо. Алсо, https://habr.com/post/315152/
Ответы: >>1236164 >>1236557
Аноним 2018/07/27 10:47:04  №1236164 111
>>1236160
На коленях умоляй, олигофрен по кличке ОП.
Аноним 2018/07/27 12:16:48  №1236249 112
>>1236102
Спс, буду иметь в виду.
Аноним 2018/07/27 17:16:15  №1236478 113
gothic7.jpg (103, 1024x768)
768x1024
>>1236030
>Чтобы форма не отправлялась 2 раза, надо использовать паттерн Post/Redirect/Get.
Где про это можно прочитать/посмотреть реализацию?

ОП, прошу твое внимания, так как всем похуй.
Я сам реализовал. Логика такова:
1. Создаем переменную метку и генерируем её случайное значение. Вставляем эту метку в форму чтобы отправить её методом POST.
2. Есть условие добавления информации в файл (в БД/не важно). К этому условию добавляем то, что переменная $_SESSION['token'] != $_POST['tonek']. В конце добавления данных в файл/БД/куда угодно устанавливаем $_SESSION['token'] = $_POST['tonek']. И все работает.
Логика такова:
Случайное число (например 666), передается формой ($_POST['token'] = 666), сравнивается с $_SESSION['token'] (коротая, пустая "" != 666) и условие выполняется. Присваиваем $_SESSION['token'] = $_POST['tonek'] (Это 666 = 666). Но когда мы нажимаем обновить (F5) $_POST['token'] не генерирует новое число, а отправляет старое. А его значение уже присвоено $_SESSION['token']. Теперь условие не выполняется. А выполнится оно только при новом отправлении формы.
https://pastebin.com/GjEUKt4y
Но мне типа успешные люди сказали что код хуевый. 2. Так ли это?

>Надо в начало файла поместить всю логику, а весь вывод делать в конце. Если ты сначала выводишь шапку, а только потом обрабатываешь форму, то ты делаешь большую глупость.
3. Можешь исправить мой код так как ты его видишь?
Ответы: >>1236495 >>1236551
Аноним 2018/07/27 17:51:35  №1236495 114
Аноним 2018/07/27 19:23:00  №1236551 115
>>1236478

> Где про это можно прочитать/посмотреть реализацию?

Это описано в уроке на который я давал ссылку: https://github.com/codedokode/pasta/blob/master/forms.md

> Если все данные введены правильно, то мы после их обработки делаем редирект на какую-то другую страницу, например на страницу просмотра введенной информации, страницу благодарности, и т.д. Редирект необходим, чтобы при обновлении страницы форма не отправлялась повторно (если ты не знаешь, что такое редирект, то это выдача заголовка вроде Location: /thankyou.php. В php для этого используется функция header()).

> Этот подход (редирект после успешной обработки формы) называется Post/Redirect/Get.

У тебя какое-то переусложненное решение с сессиями.

Советую прочитать урок внимательно.

> 3. Можешь исправить мой код так как ты его видишь?

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

Должно быть так:

<?php

проверка данных формы;
определение значений переменных

?>
HTML код с подстановкой переменных

Ответы: >>1236553
Аноним 2018/07/27 19:32:47  №1236553 116
>>1236551
Благодарю. Прости я не читал твоих уроков. По книге как-бы ебашу.
Аноним 2018/07/27 19:49:46  №1236557 117
Аноним 2018/07/27 20:37:51  №1236566 118
>>1232710 (OP)
только начал писать на пхп, иде phpStorm, когда клацаю на значок гугола кидает на сайт, на котором написано 502 bad gateway.
как проверять работоспособность программы?
Ответы: >>1236583
Аноним 2018/07/27 21:46:24  №1236583 119
>>1236566
держу в курсе: разобрался и пофиксил, не тратьте время зря, если хотели.
Аноним 2018/07/28 09:58:49  №1236708 120
>>1232710 (OP)
хочу изучать php по книжкам, но до сих многие вроде как годные книжки даже на английском под пятую версию. насколько большая разница между 5 и 7 с точки зрения синтаксиса? какие-нибудь базовые вещи одинаковы? потому что в питоне между 2 и 3 разница прямо в базовых структурах есть разница.
Аноним 2018/07/28 10:32:33  №1236724 121
Зачем нужны интерфейсы, если есть абстрактные классы?
Ответы: >>1236732 >>1236735
Аноним 2018/07/28 10:44:25  №1236732 122
>>1236724
А нахуй нужны и интерфейсы и абстрактные классы, если есть просто классы?
Аноним 2018/07/28 11:03:32  №1236735 123
>>1236724

Это вопрос из серии, зачем нужен молоток, если есть ножовка. Это разные инструменты для разных целей.
Аноним 2018/07/28 12:35:08  №1236780 124
Вопрос для знающих phpQuery
Сделал выборку по тегам. как получить содержимое конкретного элемента? Могу получить содержимое с помощью foreach($tmp as $v).
pq($v)->text() (так работает).
А так
pq($tmp[1])->text() нихрена не выводит

че за херня?
Ответы: >>1236800
Аноним 2018/07/28 13:05:25  №1236800 125
>>1236780
попробуй pq($tmp.eq(1))->text()
Ответы: >>1236814
Аноним 2018/07/28 13:41:06  №1236814 126
>>1236800
Не знал про такой метод.
$tmp->eq(1)->text()
Ушел читать доки по jQuery

От души братишка
Ответы: >>1236820
Аноним 2018/07/28 13:55:16  №1236820 127
Аноним 2018/07/28 14:47:10  №1236837 128
В js ноль, но мне срочно нужно прикрутить скрипт. И я не могу понять что я делаю не так. Сейчас скину исходники и попытаюсь описать проблему.
Есть страница с формой. https://ideone.com/BA8klI
Есть скрипт отправки: https://ideone.com/XV6tAU
Есть PHP для обработки отправленных данных будет много допиливаться, это пока тест просто: https://ideone.com/EMpowl

Теперь проблема. Картинки-то загружаются. Но в ответ, вместо вывода php echo 'success' или echo 'error' мне приходит ВСЯ страница от хэдера до футера, весь html-код. В итоге, у меня в диве .divResults появляется копия вёрстки. Как мне выводить то, что получается на выходе PHP-скрипта? Уже кучу всего прогуглил, всё равно никак не могу въехать. Выручайте, аноны.


Ответы: >>1236882 >>1236889
Аноним 2018/07/28 15:50:41  №1236863 129
Можно ли сделать так, чтобы по нажатию html кнопки шел скрипт php? Или в php есть какая-то своя кнопка?
Допустим, в туторе ОПа есть бросок кубиков, и я хочу сделать так, чтобы кубики бросались только после нажатия кнопки.
Ответы: >>1236865
Аноним 2018/07/28 15:53:13  №1236865 130
>>1236863
Конечно. Пили форму, по которой будет отправляться какое-нибудь значение. Если кнопка нажата, значение существует, выполняем скрипт.
Аноним 2018/07/28 16:46:37  №1236882 131
>>1236837
Вот так это выглядит визуально. Если написать вместо ($('#divResults').html(data)); alert(data), то весь код страницы выдаёт в алерте. Не понимаю, как мой php скрипт может выдавать весь код. Если что, я совсем ньюфаг, только учусь, так что, не бейте за очевидные вопросы, тупые ошибки и быдлокод.
Ответы: >>1236884 >>1236889
Аноним 2018/07/28 16:47:17  №1236884 132
Ответы: >>1236889
Аноним 2018/07/28 17:01:11  №1236889 133
>>1236837
>>1236882
>>1236884
Всё, отбой. ПРОСТО дописал в начале адреса до php-скрипта http:// и всё заработало. Весь день голову ломал, блэд.
Аноним 2018/07/28 18:30:21  №1236937 134
https://ideone.com/iOSQ4K
подскажите, пожалуйста.
в общем, в форму можно ввести сумму денег, но как сделать так, чтобы эта сумма вычиталась из нынешнего баланса, а затем умножалась или удалялась навсегда в случае победы/поражения?
Ответы: >>1236952
Аноним 2018/07/28 18:53:12  №1236952 135
>>1236937
1) name и id у инпутов должны быть разными.
2) Ты отправляешь две формы одним методом. Либо заключай всё в одну форму, либо записывай деньги в переменную. Лучше в одну форму вида:
Ваша ставка: input class='bet' и т.д.
<button type='submit' name='roll'>Бросить кубики</button>
3) в if у тебя странная конструкция. Проще if (isset($_POST['roll']) {
//код
}
4) Для вычета-прибавления денег используй switch case http://php.net/manual/ru/control-structures.switch.php
Ответы: >>1236954
Аноним 2018/07/28 18:55:36  №1236954 136
>>1236952
Да, забыл дописать в <button> нужен value="". Неважно что будет в значении, потому что если ты будешь использовать isset, как в моём примере, то тебе важен только сам факт наличия этой переменной.
Ответы: >>1236957
Аноним 2018/07/28 19:01:20  №1236957 137
>>1236954
огромное спасибо, анон! сейчас буду разбираться, просто это мой второй день знакомства с пхп, нихуя не знаю...
Аноним 2018/07/28 21:06:48  №1237037 138
Хочет кто вместе с другим аутистом попробовать накалякать простой говнодвижок имиджборды?
Ответы: >>1237038 >>1237039
Аноним 2018/07/28 21:08:58  №1237038 139
>>1237037
А почему бы и нет, это была бы хорошая практика для тех, кто учится меня, например
Ответы: >>1237040
Аноним 2018/07/28 21:13:00  №1237039 140
>>1237037
Гоу, только я в ООП пока не могу.
Ответы: >>1237041 >>1237042
Аноним 2018/07/28 21:13:57  №1237040 141
>>1237038
Только я не на фреймворке планирую это делать, если что.
Как с тобой связаться можно? Лучше фэйкомыльце.
Ответы: >>1237042
Аноним 2018/07/28 21:15:51  №1237041 142
>>1237039
Похоже, что нужна какая-нибудь конфочка для кооперации.
Аноним 2018/07/28 21:16:46  №1237042 143
>>1237040
И я не могу.
>>1237039
Зайди в конфу в телеге (>>1234261
), напиши там, что ты по поводу движка, я тебе отпишу.
Ответы: >>1237046
Аноним 2018/07/28 21:26:34  №1237046 144
>>1237042
Блин, регаться надо, еще и телефон просит. SOOOOQAAA, 21 век.
Ответы: >>1237055
Аноним 2018/07/28 21:37:47  №1237055 145
>>1237046
Это такая ерунда, по сравнению с разработкой движка.
Аноним 2018/07/29 02:40:31  №1237092 146
>>1236000
Бро, как-то не очень сходится
Вакансий на ларавель и проектов на апворке в разы больше, чем на симфони, и уж тем более yii
У laravel тоже есть команд лайн тул, который умеет все то же, что и gli, и даже больше
Про магенто тоже мимо, вторая версия судя по форумам магенто это фейл, на первой делать уже не так хотят, в итоге магента сдаёт позиции
В целом твой ответ актуален для 2015 года примерно, тогда так и было, ларавель без работы, yii/symfony/magento в тренде
Ответы: >>1237206
Аноним 2018/07/29 10:36:55  №1237206 147
>>1237092
я больше сужу про офлайн работу , ссылки на его gii от лары можно ? последний раз чекал было всё было не очень , проверю.
Ответы: >>1237269
Аноним 2018/07/29 11:28:48  №1237231 148
Подскажите пожалуйста, сделал типа todo/faq на php, и решил перенести его с локального сервера на бесплатный хостинг, перекинул бд и файлы, а оно говорит мне http error 500, это нормально вообще?
Я блеать понятия не имею что писать в этот долбаный htaccess :(
Ответы: >>1237236
Аноним 2018/07/29 11:35:18  №1237236 149
>>1237231
Посмотри логи на сервере, няша. 500 ошибка это что угодно может быть. И какая у тебя БД? MySQL? Ее нельзя просто так перекинуть, надо импорты-экспорты творить.
Ответы: >>1237287
Аноним 2018/07/29 13:03:12  №1237269 150
>>1237206
Вот тебе оффлайн джобы
Ответы: >>1237280
Аноним 2018/07/29 13:13:03  №1237274 151
Котаны, оцените тестовое и скажите, сколько джуну нужно времени на него в среднем, и можно ли реализовав это вообще смело проситься в джуны ?
Создание веб-приложения для регистрации и авторизации на php, html, css, js/jquery.

Форма регистрации:
1) Поля:
- login (unique)
- password
- confirm_password
- email (unique)
- name

2) Функционал:
После заполнения формы, уходит запрос на создание пользователя, поля проверяются на валидность (не пустые), уникальные поля проверяются на уникальность в БД, password и confirm_password сравниваются (должны быть одинаковыми). Если что-то не так - выдается ошибка.
В случае ошибки, возвращаем текст с ошибками.
В случае успеха шифруем пароль ("соль"+md5 или "соль"+sha1) и заносим данные в нашу базу.

Форма авторизации:
1) Поля:
- login
- password
2) Функционал:
После заполнения формы уходит запрос:
- проверяется наличие пользователя в бд;
- сверяется пароль.

В случае ошибки, возвращаем текст с ошибками.
В случае успеха происходит процесс авторизации (создание необходимых связей cookies + session + db). Обратите внимание, что в db тоже должна быть связь с сессией и cookies.

В случае авторизации мы должны видеть сообщение 'Hello [имя пользователя]', формы в таком случае не отображаем.
Внешний вид значения не имеет.

Основные требования:
- Вместо базы данных используем файл XML.
- Пароль не должен хранится в открытом виде.
- Связь авторизации - cookies + session + db (xml).
- Формы должны отрправляться используя технологию ajax, ответ в формате json.
- Если js отключён, то форма отправиться не может.
- Все поля форм - обязательные.
- Все формы реализуются через <form>.
- Результаты залить на github/bitbucket. Сделать репозиторий публичным. Ссылку прислать по почте.

Дополнительные требования
- защита от инъекций при получении параметров через get- или post;
- осмысленное название полей в бд;
- разумное оформление кода – имена переменных, функций, отступы, комментарии;
- код должен быть - прост в поддержке;
- отсутствие дублирование кода. копипаст – признак низкой культуры разработки;
- разделение логики работы и представления – некрасиво писать html и php вперемешку;
- css/js в отдельных файлах;
- осмысленное использование css.
Ответы: >>1237282 >>1237362 >>1237469
Аноним 2018/07/29 13:20:25  №1237280 152
>>1237269
сорри мой промах , не угараю по АСАШАЙ потому ищу работу больше в европке , 4 года перекатился в пшекарню и с этого делаю выводы.
Ответы: >>1237283
Аноним 2018/07/29 13:22:27  №1237282 153
>>1237274
Джун должен знать хотя бы один фреймворк и уметь создать самостоятельно приложение простое (уровня магазина или форума), а ты детские задачи даешь.
Аноним 2018/07/29 13:25:35  №1237283 154
>>1237280
Бро, я сам в Польше уже 4 года, но работаю с США, в Европе денег нет, и айти отсталое
Реально прочекал - локальные польские вакансии - это реально срез США уровня 2015-2016 года
Ответы: >>1237329
Аноним 2018/07/29 13:37:43  №1237287 155
>>1237236
Я импортировал все как надо, sql еще сначала ругался что логин-пароль для доступа к бд неверные, не поменял я их в dbconfig, а как поменял - 500.
В журнале только вот это: [29/Jul/2018:16:31:35 +0300] 0.113 0.113 500 95...74 f.xsph.ru GET / HTTP/1.1 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" "-" 314 141.8.195.34 f
Ответы: >>1237360
Аноним 2018/07/29 14:08:18  №1237293 156
>>1232710 (OP)
> С чего начать
С другого языка
Ответы: >>1237295
Аноним 2018/07/29 14:24:22  №1237295 157
Аноним 2018/07/29 15:41:15  №1237329 158
>>1237283
согласен , няш, не кинь плиз на лара gii , хочу опробовать , вполне возможно дальше буду двигаться в сторону лары
Ответы: >>1237338 >>1237340
Аноним 2018/07/29 15:56:54  №1237338 159
Аноним 2018/07/29 15:58:07  №1237340 160
>>1237329
Алсо, какой город у тебя?
Ответы: >>1237476
Аноним 2018/07/29 16:28:15  №1237360 161
>>1237287

Ты смотришь access.log, журнал обращений к сайту. Нужно смотреть лог ошибок. Он часто называется error.log, php-errors.log, php-fom.log и тд. На линуксе они обычно в /var/log, но на хостинге могут быть свои особенности, другая папка или просмотр через админку. выясни, где на хостинге логи ошибок.
Ответы: >>1238221
Аноним 2018/07/29 16:30:07  №1237362 162
>>1237274

Не хочу рекламировать свои же уроки, но если взять задачу про студентов из шапки, то там есть подробные комментарии, и многие из них подойдут и к этой задаче. Ну а про хеширование паролей есть урок на http://github.com/codedokode/pasta/

Аноним 2018/07/29 17:20:22  №1237397 163
Подскажите годный редактор php кода на андроид.
Ответы: >>1237414
Аноним 2018/07/29 18:11:21  №1237414 164
Аноним 2018/07/29 19:51:37  №1237469 165
>>1237274
Очень похоже на студентов.
Делал бы в течение полугода, бросал бы 3 рази и в итоге забил.
Аноним 2018/07/29 20:04:37  №1237476 166
>>1237340
ДС местный , я имел ввиду что то типа https://backpackforlaravel.com/ чтоб круды для бекенда быстро делать , модели генерить с валидацией и тд
Ответы: >>1237479
Аноним 2018/07/29 20:18:04  №1237479 167
>>1237476
>ДС местный
No to w takim razie zapraszam na browara, ziomku
>я имел ввиду что то типа https://backpackforlaravel.com/ чтоб круды для бекенда быстро делать , модели генерить с валидацией и тд
Ну так можно че-то поставить, не все такое имеет смысл пихать в коробку
Ответы: >>1237500
Аноним 2018/07/29 21:04:02  №1237500 168
>>1237479
держи для связи фейк FB /profile.php?id=100013704018224
Ответы: >>1237504
Аноним 2018/07/29 21:10:30  №1237504 169
>>1237500
>/profile.php?id=100013704018224
отписал, прочекай реквесты
Аноним 2018/07/29 21:59:17  №1237521 170
Привет, анон. Подскажи, как в цикле добавлять процент переменной к ней самой? https://ideone.com/RJVewR
То есть переменная должна увеличиваться каждый цикл на 10% от нынешнего ее значения, но я не знаю как прибавить проценты. Помогите, пожалуйста.
Ответы: >>1237523
Аноним 2018/07/29 22:03:31  №1237523 171
>>1237521
тэакс, я просто умножил на 1.1
это можно считать решением проблемы?
Ответы: >>1238523
Аноним 2018/07/30 06:26:29  №1237566 172
Котаны спасайте. Есть db xml вида
<users>
<user>
<login>123456</login>
<password>e10adc3949ba59abbe56e057f20f883eu4h3f7h4387hfqp</password>
<email>123456</email>
<name>d</name>
<key>123</key>
</user>
</users>

Узлов user много, нужно найти соответвующий уловию и записать что то в key. Я допустим могу найти этот узел через xpath, но он не дает его изменить.
$xml = simplexml_load_file("../registration/users.xml");
\t//получить доступ к кей и записать туда
\t$key_xml = $xml->xpath("//user[login = $login]/key");
\t$key_xml[0] = 'qqq';

Это не работает - Fatal error: Call to undefined method SimpleXMLElement::save()
Как добраться и изменить этот узел, xpath, simplexml похуй
Аноним 2018/07/30 07:21:07  №1237587 173
Аноним 2018/07/30 11:16:38  №1237663 174
В общем я заебался и не понимаю логики.

Есть массив примерно такой: $array = [1,2,3,4,5,]

Как вывести сумму некоторых его элементов?
например 1 и 5го?

Эта ебучая array_sum может складывать только все элементы.

Как складывать отдельные обращаясь к ним по ключам?

Ответы: >>1237667
Аноним 2018/07/30 11:19:58  №1237667 175
Ответы: >>1237669 >>1237673
Аноним 2018/07/30 11:21:13  №1237669 176
Аноним 2018/07/30 11:23:33  №1237673 177
>>1237667
Пиздец, шатала это все.

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

Ебал я нахуй это все.
Мой удел кидать мешки и коробки похоже.
Аноним 2018/07/30 12:17:44  №1237713 178
>>1237673
не сразу же всё понимать, шо ты
Ответы: >>1237775
Аноним 2018/07/30 12:22:49  №1237715 179
>>1237673
Найди на ютубе разные уроки по непонятной теме, все пересмотри. Дожно стать понятно, гарантирую!
Ответы: >>1237775
Аноним 2018/07/30 12:23:44  №1237717 180
Ответы: >>1237775
Аноним 2018/07/30 12:24:39  №1237718 181
>>1237673
А вообще даже я проебался, не 1 и 5, а 0 и 4
Аноним 2018/07/30 14:13:01  №1237755 182
>>1237673

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

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

На входе: список слов: кот, собака, кит, сова
На выходе:

- кот, кит
- собака, сова

Если решишь эту, можешь попросить еще задачку. И так пока не начнешь понимать, как работать с массивами.
Ответы: >>1237823 >>1243210
Аноним 2018/07/30 15:06:51  №1237775 183
>>1237713
>>1237715
>>1237717

Я сорвался малость, прошу прощения и спасибо за поддержку.
Аноним 2018/07/30 15:38:54  №1237782 184
https://ideone.com/o5sL6d
Оцените, пожалуйста, решение задачки из учебника ОПа. Что можно поправить?
Ответы: >>1237794
Аноним 2018/07/30 15:51:41  №1237794 185
>>1237782
Твой школьник на 862 рубля больше заплатил, чем должен был. Подумай как своему маленькому другу сэкономить на чехол для айфона и пару банок яги обмыть.
Ответы: >>1237796
Аноним 2018/07/30 15:54:44  №1237796 186
>>1237794
подскажи, нужно добавить еще одну переменную?
Ответы: >>1237805 >>1237806
Аноним 2018/07/30 16:20:15  №1237805 187
Аноним 2018/07/30 16:20:32  №1237806 188
Ответы: >>1237807
Аноним 2018/07/30 16:22:57  №1237807 189
>>1237806
Зачем ты в айдеон пытаешься html воткнуть? Для кода используй \n
Ответы: >>1237809 >>1237811
Аноним 2018/07/30 16:25:23  №1237809 190
>>1237807
P.S. Да и пофиксил ты так себе. Программа говорит, что твой школьник ещё три месяца мзду банку носит и переплачивает уже не 800 рублей, а 7134
Ответы: >>1237811
Аноним 2018/07/30 16:27:13  №1237811 191
Ответы: >>1237812
Аноним 2018/07/30 16:34:08  №1237812 192
>>1237811
>м ну на сайтике опа в проверь себя висит 61к рублей
Значит, и у ОПа ошибка. Смотри сам. У него там в остатке тоже 4138р за 11й месяц. Если школьник может платить по 5к в месяц, то почему бы ему не закрыть кредит сразу?
Ответы: >>1237813
Аноним 2018/07/30 16:36:18  №1237813 193
>>1237812
потому что 4138 * 1,03 + 1000 > 5000
Ответы: >>1237815
Аноним 2018/07/30 16:38:23  №1237815 194
>>1237813
Точно, это я обосрался. Забыл, что там ещё в условии +1000. Тогда правильно.
Ответы: >>1237816
Аноним 2018/07/30 16:39:07  №1237816 195
>>1237815
да я вот тоже про это вспомнил только с последним фиксом.
Аноним 2018/07/30 16:53:25  №1237823 196
>>1237755
$array = ['кот', 'собака', 'кит', 'сова'];

$a = $array[0] . $array[2];
$b = $array[1] . $array[3];

echo $a;
echo $b;

Только я не пойму как разделение между словами сделать а то у меня слитно все выводится.
Ответы: >>1237831 >>1237877
Аноним 2018/07/30 17:06:33  №1237831 197
>>1237823
>Только я не пойму как разделение между словами сделать а то у меня слитно все выводится.
Вот с костылями, например:
$a = $array[0] . ' ' . $array[2];
$b = $array[1] . ' ' . $array[3];

А вот без костылей:
$a = "$array[0] $array[2]";
$b = "$array[1] $array[3]";
Ответы: >>1237833
Аноним 2018/07/30 17:09:14  №1237833 198
>>1237831
Точно, не то использовал, надо было . ' ' . а не просто точку.

Спс.
Ответы: >>1237853
Аноним 2018/07/30 17:33:19  №1237853 199
>>1237833
А ты понимаешь в чем разница?
Ответы: >>1237986
Аноним 2018/07/30 17:58:01  №1237877 200
>>1237823

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

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

Чтобы вывести названия из массива через запятую, можно использовать implode().
Ответы: >>1237988
Аноним 2018/07/30 18:54:49  №1237945 201
image.png (17, 627x111)
111x627
image.png (31, 635x495)
495x635
Помогите пожалуйста, как сделать сумму вложений без цифр после точек или хотя бы уменьшить их?
Ответы: >>1237994 >>1238140
Аноним 2018/07/30 20:05:59  №1237986 202
Аноним 2018/07/30 20:06:56  №1237988 203
>>1237877
>То есть если я поменяю список животных на входе, программа должна сама их отсортировать, а у тебя этого нету.

Даже не представляю как это сделать.
Ответы: >>1238006
Аноним 2018/07/30 20:19:22  №1237994 204
>>1237945
for ($dep = 10000; $dep <= 1000000; $dep=$dep*1.1) {
}
Аноним 2018/07/30 20:41:55  №1238006 205
>>1237988

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

$byLetter = [
'к' => ['кот'],
'с' => ['собака', 'сова']
];

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

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

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

Попроси задачку посложнее, когда решишь.
Ответы: >>1238138
Аноним 2018/07/30 23:01:09  №1238079 206
В чём может быть проблема?
Кука с сессией живая, в файле значение моё записано. А var_dump($_SESSION[]) возвращает NULL. Сессия у меня открывается после авторизации, сразу после этого (пока существует сигнальная переменная $success) и в массиве есть данные. Но стоит обновить страницу или перейти в другой раздел, как авторизация сбрасывается и массив NULL. Хотя, ещё раз. Кука живая и в её временном файле есть значение.
Ответы: >>1238080
Аноним 2018/07/30 23:02:06  №1238080 207
Аноним 2018/07/31 00:32:13  №1238092 208
сап двач. я тут к вам с ебанутым вопросом. чем php разработчик отличается от frontend разработчика? я как понял ни чем судя по требованиям работодателей
Ответы: >>1238141
Аноним 2018/07/31 06:48:24  №1238138 209
Аноним 2018/07/31 06:52:58  №1238140 210
Аноним 2018/07/31 06:54:50  №1238141 211
>>1238092
php - это backend
чем отличается backend разработка от frontend разработки, сам нагуглишь, если тебе сами термины ни на что не намекают.
Аноним 2018/07/31 06:56:37  №1238142 212
>чем отличается водитель автобуса, от водителя категории А? я как понял ничем, судя по тому, что оба водители.
Ответы: >>1238160
Аноним 2018/07/31 07:25:01  №1238153 213
Начал изучать симфони, возник вопрос, а есть ли гайды\уроки на русском?
Аноним 2018/07/31 07:36:33  №1238160 214
Аноним 2018/07/31 09:34:03  №1238221 215
>>1237360
На самом деле оказалось что через встроенный файловый менеджер хостинга нельзя копировать папки, только файлы, так что все мои шаблоны, классы и прочая хрень рассованная по папкам не скопировалась.
Дозалил чего не хватало через фтп и сайт завелся, спасибо за участие.
Аноним 2018/07/31 10:10:09  №1238231 216
Вопрос ни сколько про PHP, сколько про "логику работы" в целом, но поскольку пишу на PHP сейчас, то спрошу тут.

Анон, как реализовать работу с ошибками и предупреждениями? Допустим, у меня есть класс, который отправляет e-mail. Я вызываю его как-то так:

$email = new MyClass;
$email->set_login("yoba");
$email->set_password("yoba2");
$email->to("!eot");
$email->send();

Функция to позволяет задать получателя. При этом, допустим, если получатель начинается с !, то это алиас. То есть, to("!eot") запишет в список получателей irinaerohina@mail.ru
Если я передаю в to неизвестный алиас, то мне хотелось бы, чтобы скрипт меня об этом как-то проинформировал, но это, по идее, не критическая ошибка, поэтому полностью падать он не должен. Ну и что, что не знает такого алиаса? Может это не алиас вовсе, а действительно такой ящик (нет, но для примера будем считать так).

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

Два вопроса:
1) Правильно ли я мыслю?
2) Как это реализовать?

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

Грубо говоря, send вернёт массив вида
[
success => true/false
messages => [СЮДА ПОПАДЁТ ИНФОРМАЦИЯ О ПРОБЛЕМАХ С АЛИАСОМ]
]

Так? Или хуйню несу? Если да, то как сделать не по хуйне? Если нет, то как это реализовать с такой логикой?
Ответы: >>1238247 >>1238254
Аноним 2018/07/31 10:52:29  №1238247 217
>>1238231
Что значит "класс продолжает работу"? Ты вызываешь три метода для присвоения значений переменным, а затем метод send проверяет чего там наприсваивали и есть ли вообще куда слать письмо и формирует "отчет". По идее только он и может что-то там прервать.

Если ты хочешь чтоб оно сразу проверялось можно сделать всё в $email->send($login, $pass, $email), чтоб он допустим проверял не пустая ли строка там передана и дальше ничего не делал если таки пустая, либо уже вызывал $this->to($email), $this->set_password($pass), $this->set_login($login) и отправлял письмо.

Но меня кстати можно и не слушать, я сам только вкатываюсь.
Ответы: >>1238248
Аноним 2018/07/31 10:54:31  №1238248 218
>>1238247
И кстати невалидный алиас тоже критическая ошибка, по моему. Куда письмо то слать будем?
Ответы: >>1238435
Аноним 2018/07/31 11:04:31  №1238254 219
>>1238231

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

Урок https://github.com/codedokode/pasta/blob/master/php/exceptions.md

Если ты хочешь предупреждать, то проверять правильность email надо было заранее до отправки письма.
Аноним 2018/07/31 13:48:38  №1238361 220
Почему в мануале текст в массиве взят в одиночные кавычки ' ' а на офф сайте в двойные " " ?
Ответы: >>1238438
Аноним 2018/07/31 15:42:09  №1238435 221
>>1238248
Туда и слать.
Любой набор печатных символов - это валидный адрес. И собака не нужна даже.
Аноним 2018/07/31 15:50:21  №1238438 222
image.png (66, 526x570)
570x526
>>1238361
Я тебе и без кавычек могу массив написать. Что дальше?
Сходи прочитай чем отличаются кавычки друг от друга.
Аноним 2018/07/31 15:57:59  №1238439 223
Ответы: >>1238452
Аноним 2018/07/31 16:21:27  №1238452 224
>>1238439
Перечитал этот гайд с каменным стояком, спасибо.
Аноним 2018/07/31 18:44:38  №1238523 225
Аноним 2018/07/31 20:26:40  №1238591 226
ОП, проверь, пожалуйста, задачи:
ПИШИ ВЕРНО:http://sandbox.onlinephpfunctions.com/code/3c8352717c46dd94d722880076fc352ce3aea067
YODA SPEAK(с сохранением знаков в конце):http://sandbox.onlinephpfunctions.com/code/0a534cec17d6efe3b16c9e23961603f67e07937e
СУММА ПРОПИСЬЮ:http://sandbox.onlinephpfunctions.com/code/1291210f3e694793e62a1be823935a1dc6df6d69
КАЛЬКУЛЯТОР(с делением и дробями): http://sandbox.onlinephpfunctions.com/code/c631161ae42f91df834bc0202ea3b840eb807a50
Ответы: >>1238602 >>1241783 >>1243952
Аноним 2018/07/31 20:32:39  №1238602 227
>>1238591
Сколько ушло времени на "Сумма прописью"?
Ответы: >>1238700
Аноним 2018/07/31 22:05:46  №1238655 228
Аноним 2018/07/31 23:25:54  №1238678 229
Ответы: >>1238682
Аноним 2018/07/31 23:48:41  №1238680 230
Тут есть программисты которые по своместительству селшники? Просто интересно стоит ли задрачивать php, html, css и прочую поеботу если хочешь заниматься seo? Ну и просто интересно бывают ли такие люди.
Ответы: >>1238699
Аноним 2018/08/01 01:10:21  №1238682 231
>>1238678
mbstring не установлен у них.
Аноним 2018/08/01 03:14:08  №1238699 232
Аноним 2018/08/01 03:14:38  №1238700 233
Аноним 2018/08/01 09:36:17  №1238859 234
Я новичек.
поясните пожалуйста, если я хочу, чтобы на странице элементы отображались по клику кнопок на странице без перезагрузки -это реализовываться с помошью JS, php или просто средствами html/css?
что гуглить?
Ответы: >>1238861
Аноним 2018/08/01 09:39:22  №1238861 235
>>1238859
Чтобы они просто отображались - html/css. Если там динамическое содержимое - html/css/js-ajax/php
Это всё в связке.
Ответы: >>1238866
Аноним 2018/08/01 09:45:51  №1238866 236
>>1238861
ну например при кликле на определенную кнопу появляются разные виды формы( текстовая с несколькими полями, текстовая с одним полем, радио)
Ответы: >>1238867
Аноним 2018/08/01 09:48:28  №1238867 237
>>1238866
Конкретно то, что ты описал - js. Если тебе надо будет так же без перезагрузки страницы отправить эту форму на сервер, там обработать и отобразить результат, надо будет задействовать ещё ajax и php.
Аноним 2018/08/01 12:49:28  №1238955 238
Бля, дали поправить говно на юи2, а у вас даже встроеного дебагерра нет, два дня ебусь не могу ебучий хДебагер прикрутить. Вот в моем стеке дебажить одно удовольствие.
мимо джавамакака
Ответы: >>1239003
Аноним 2018/08/01 12:54:50  №1238961 239
Оп подскажи. Сейчас дрочу массивы (задание со стихом), хочу оптимизировать код. Функция array rand используется только для одного массива, так? Для остальных массивое ее повторять на каждом шаге?
Грубо говоря "массив1"
"Массив2"
Rand1=rand(массив1)
Rand2=rand(массив2)
Echo rand1 rand2
Или есть возможность упростить как-то.дальнейшие действия продумал, поэтому не интересно
Ответы: >>1239099
Аноним 2018/08/01 14:19:04  №1239003 240
>>1238955
Ебать ты даун. Небось под виндой сидишь
Ответы: >>1239090
Аноним 2018/08/01 15:17:46  №1239056 241
Нахуй вы тут сидите, ебанутые чтоли? Все равно без высшего образования ничего не добьетесь
Ответы: >>1239090
Аноним 2018/08/01 16:44:09  №1239090 242
Аноним 2018/08/01 16:58:05  №1239099 243
>>1238961
Ты циклы проходил уже? Всю эту ебанину с повторениями можно [/s нужно ]делать в цикле. А так да для каждого массива нужно вызвать функцию и передавать его туда.

for(int i = 0; i < arrayCount; i++) и т.д.

Мимо С++ лорд.
Ответы: >>1239114
Аноним 2018/08/01 17:10:21  №1239114 244
>>1239099
>С++ лорд
Ваномас, ты?
Аноним 2018/08/01 18:15:48  №1239213 245
Посоны, привет. Что не так с этим кодом вроде бы все очевидно. Почему у меня кука не прибавляется?

https://ideone.com/W0diyg
Ответы: >>1239240
Аноним 2018/08/01 18:49:29  №1239240 246
>>1239213
Ты неправильно пытаешься куку достать, вместо ключа указываешь значение.

$_COOKIE["visitCounter"]
Ответы: >>1239248
Аноним 2018/08/01 18:58:39  №1239248 247
>>1239240
Так мне и нужно значение же. Сначала 0, потом сразу становится 1 (инкремент), а на второй заход уже мы прибавляем до двойки. Должны. Но инкремент не срабатывает, почему-то.
Ответы: >>1239279 >>1239321
Аноним 2018/08/01 19:18:49  №1239279 248
>>1239248
У тебя есть две куки - visitCounter и lastVisit. Чтобы получить значение определённой куки, ты должен обратиться к ней по ключу (ты его задаёшь в setcookie), например $_COOKIE["visitCounter"].
Аноним 2018/08/01 20:08:16  №1239321 249
>>1239248
Убери $ из названия ключа массива, аутист
Ответы: >>1239330
Аноним 2018/08/01 20:14:28  №1239330 250
>>1239321
Сплю уже анончик, спасибо!

Кстати, не знаете, почему vscode не тащит имена переменных в подсказки из файла в файл?
Аноним 2018/08/01 21:27:04  №1239383 251
15310929391570.jpg (68, 604x604)
604x604
Привет ОП, проверь пожалуйста задачу "сумма прописью".
https://ideone.com/oytq0C

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

На локальном сервере результаты работы программы отображались нормально, но когда загрузил на ideone появились лишние пробелы. Отдаю на суд, сил больше нет перерешивать. Задача была самой интересной из всех, но кажется я решил её через задницу.
Ответы: >>1241891 >>1243951
Аноним 2018/08/01 22:31:03  №1239405 252
>>1233234

Анон написал в старом треде, из которого все ушли:

> Суть: проверка текста/слова на палиндром.Застрял в конце задания, где идет цикл и нужно так сказать взять и сравнить по одному символу с начала и конца строки.Я не понимаю как.Вот ссылка на задачу, прощу помочь
http://sandbox.onlinephpfunctions.com/code/22218979dccb938eb3aaab1772761f3e654185e9

Отвечаем анону:

Для начала, нам надо сделать цикл от $i = 0 до (половина длины строки). Это есть в коде, хорошо.

Затем мы берем $i-й по счету символ с начала и с конца строки.

С начала мы берем символ так: $symbol = mb_substr($op1, $i, 1);

Как взять символ с конца? Можно вспомнить, что в mb_substr параметр -1 значит "с последнего символа", -2 "со второго с конца символа" итд. То есть:

если $i = 0 мы должны передать -1
если $i = 1 мы должны передать -2
если $ = 2 то -3
...

Пишем код: $right = mb_substr($op1, -$i - 1, 1);

Остается только сравнить 2 символа.

Ссылка на мануал про mb_substr, где это объясняется: http://php.net/manual/ru/function.mb-substr.php

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




Аноним 2018/08/02 10:12:00  №1239564 253
Сап двач. Какую тему (что-то с вебом) взять для диплома в магистратуре?
Ответы: >>1239565 >>1239618 >>1239713
Аноним 2018/08/02 10:14:16  №1239565 254
>>1239564
Онлайн-магазин дилдаков с генерацией описания товара, конечно.
Аноним 2018/08/02 12:23:50  №1239618 255
>>1239564
А учишься ты по какому направлению, или (что-то с вебом) - это и есть оно?
Аноним 2018/08/02 15:10:18  №1239693 256
Люди добрые, дошел до урока ОПа где нужно пользоваться функцией mb_strlen. В общем, проблема в том, что при попытке запустить этот код возникает ошибка; мол, неопределенный плагин, хотя в папке с интераптором пхп есть все нужные длл. Может, нужно с этими длл что-то сделать, чтобы все это дело работало как надо? IDE phpStorm
Ответы: >>1239710 >>1239850
Аноним 2018/08/02 15:20:22  №1239704 257
.png (79, 1250x486)
486x1250
Парни, скажите, пожалуйста, — это нормально, что я пишу такие адовые цыклы для проверки палиндрома, или можно как-то элегантнее решить?
И еще 2 вопроса:
1) Как настроить так, чтобы из строки брались только буквы, и строка вроде "add/a" тоже считался палиндромом, но и "л/фф/л" тоже?
2) Как сделать так, чтобы если я напишу одну букву "а" латиницей, то это все равно был палиндром?
Ответы: >>1239706
Аноним 2018/08/02 15:21:46  №1239706 258
Аноним 2018/08/02 15:23:54  №1239710 259
>>1239693
mb_internal_encoding('utf-8');
Прописал?
Ответы: >>1239732
Аноним 2018/08/02 15:25:49  №1239713 260
>>1239564
Аналог азино 777, после защиты тебя оторвут с руками.
Аноним 2018/08/02 15:58:09  №1239732 261
>>1239710
у меня в этой строке и ошибка.
Ответы: >>1239759
Аноним 2018/08/02 16:47:45  №1239757 262
нет файла php.ini, как фиксить?
Ответы: >>1239788 >>1239788
Аноним 2018/08/02 16:53:09  №1239759 263
Ответы: >>1239761
Аноним 2018/08/02 16:54:45  №1239761 264
>>1239759
ну так без нее не работает mb_strlen
Ответы: >>1239762
Аноним 2018/08/02 17:00:22  №1239762 265
image.png (43, 872x291)
291x872
>>1239761
На каком сервере запускаешь? Какая версия PHP?
OSPanel, PHP 7.1.7, всё работает без указания кодировки.
Вот список кодировок, с которыми мультибайтовые функции работают по дефолту http://php.net/manual/en/mbstring.supported-encodings.php
Ответы: >>1239763
Аноним 2018/08/02 17:03:24  №1239763 266
>>1239762
запускаю на внутреннем сервере или как ето называется. в общем, ничего кроме пхп не качал. я ньюфаг совсем
7.2.8
Ответы: >>1239764
Аноним 2018/08/02 17:07:03  №1239764 267
>>1239763
Если ты совсем-совсем ньюфаг, зачем тебе, в принципе, локальный сервер? Пиши в том же ideone сразу запускай. Когда поймёшь зачем тебе сервак, тогда, кури мануалы, ставь нормальный локалхост. А пока только в синтаксисе разбираешься, не заморачивайся..
Ответы: >>1239765
Аноним 2018/08/02 17:10:02  №1239765 268
Screenshot1.png (6, 402x183)
183x402
Screenshot3.png (7, 1278x187)
187x1278
>>1239764
да мне сервак и не нужен, просто в учебнике опа задачки с mb_string, а он у меня не работает какого-то хуя
Ответы: >>1239771
Аноним 2018/08/02 17:18:05  №1239771 269
Ответы: >>1239775 >>1240019
Аноним 2018/08/02 17:19:30  №1239775 270
>>1239771
блин, а в чом смысол, почему там работает....
Ответы: >>1239776
Аноним 2018/08/02 17:21:48  №1239776 271
>>1239775
Вот пока там работает всё что тебе нужно, там и пиши.
Ответы: >>1239778 >>1240019
Аноним 2018/08/02 17:23:06  №1239778 272
>>1239776
ну, анонче, ну, милый, объясни пожалуйста............
Ответы: >>1239781
Аноним 2018/08/02 17:27:38  №1239781 273
>>1239778
Бля, друг, тебе бы ещё синтаксис русского языка подтянуть. Задачки из ОП-поста ты и в песочнице выполнишь, а там уже может и понимание придёт что это и для чего, сам разберёшься. Не загружай голову лишним пока.
Ответы: >>1239782 >>1240019
Аноним 2018/08/02 17:30:26  №1239782 274
>>1239781
ладно, заинька, и на том спасибо!
Аноним 2018/08/02 17:42:20  №1239788 275
>>1239757
>>1239757
Ну скачай с офф.сайта ещё раз. Также в папке с пхп есть два файла: php.ini-development и php.ini-production. Один из них ты должен переименовать просто в php.ini.
Аноним 2018/08/02 17:54:55  №1239795 276
Что думаете, потратить месяц?
Ответы: >>1239806
Аноним 2018/08/02 18:08:23  №1239806 277
>>1239795
Тебе за твои же деньги нальют хуцпы в уши и насрут на голову. Все эти курсы есть в открытом доступе на торрентах, не благодари.
Ответы: >>1241068
Аноним 2018/08/02 18:38:29  №1239822 278
Если я хочу установить bootstrap вручную в проект используя композер.
Устанавливать в публичную папку ?
Ответы: >>1239854
Аноним 2018/08/02 19:27:17  №1239850 279
>>1239693

Тебе надо учиться настраивать php. В php настройки задаются с помощью файла конфигурации php.ini. Где именно он хранится, зависит от того, какая у тебя ОС, и тд.

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

<?php phpinfo();

И запусти его. Ты увидишь кучу разных настроек. Среди прочего, там будет указано, какой файл конфигурации php.ini был использован и путь к нему.

Также, там будет информация об установленных расширениях php. Чтобы mb-функции работали, надо расширение mbstring. Если оно не установлено, надо включить его в php.ini.
Аноним 2018/08/02 19:32:05  №1239854 280
>>1239822

Композер ставит все в папку vendor. К счастью, там есть возможность указать произвольный скрипт или функцию в php-файле, которую нужно вызвать после установки пакетов: https://getcomposer.org/doc/articles/scripts.md

Таким образом, тебе придется написать скрипт (лучше всего на php) и прописать его на post-update-cmd. Этот скрипт должен копировать (или создавать симлинки, если мы на linux) файлы в публичную папку.
Аноним 2018/08/03 06:38:23  №1240019 281
Ответы: >>1240053 >>1240690
Аноним 2018/08/03 06:47:56  №1240023 282
Шарящие анончики, хелп.

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

Ситуация следующая: вся логика магазина обрабатывается в 1с и мне дали указание сделать данные на сайте и в 1с идентичными.

Проблема вот в чем: в 1с адреса пользователей хранятся таким образом:
1.Одномерные таблицы регионов/городов/улиц
2.Таблица, которая эта всё связывает
По логике вещей связующей таблицей должна быть та, в которой хранится адрес пользователя.
Но нет!

Их связывает таблица, в которой зачем-то хранятся кластеры домов.

Потом айди группы домов записывается в таблицу, где второй столбец это адрес дома и т. д.

В чем логика? Может я просто тупой? Это же рушит принципы нормализации.
Ответы: >>1240090
Аноним 2018/08/03 07:27:53  №1240053 283
>>1240019
Как загуглить ответ и сделать вид, что ты уличил кого-то в чём-то. Пока, ты доказал только то, что гуглом ты пользуешься лучше, чем анон, который задавал вопрос.
Ответы: >>1240059 >>1240690
Аноним 2018/08/03 07:30:44  №1240059 284
>>1240053
Дебил по кличке ОП, ты?
Аноним 2018/08/03 08:21:48  №1240090 285
>>1240023
>В чем логика? Может я просто тупой? Это же рушит принципы нормализации.

Потому что улицы, города, регионы переименовываются, а человеки меняют ФИО. При этом предыдущие названия/имена на момент заключения договоров/составления и подписывания документов остаются в силе и не могут быть изменены.
Ответы: >>1240111
Аноним 2018/08/03 08:51:32  №1240111 286
>>1240090
Ты глупый?
В связующей таблице одни айдишники, просто группы домов плчему-то совмещаются
Ответы: >>1240120
Аноним 2018/08/03 08:58:09  №1240120 287
>>1240111
Это ОП, он дебил.
Будь толерантней, пидор.
Ответы: >>1240124
Аноним 2018/08/03 08:59:14  №1240124 288
>>1240120
Хорошо, прости.
ОП первых тредов не дебил, вообще-то.
Ответы: >>1240128
Аноним 2018/08/03 09:02:02  №1240128 289
>>1240124
>ОП первых тредов
Так пыхыпы реально одебиливает, к тому же еще и вкатывающиеся в говно безмозглые быдларии.
А ты думал это все шуточки, да?
Ответы: >>1240133
Аноним 2018/08/03 09:04:50  №1240133 290
>>1240128

ОП конечно же не дебил, я его знаю лучше чем кто-либо еще. Флуд разводить тут не надо, идите в любой другой тред.
Ответы: >>1240137
Аноним 2018/08/03 09:07:53  №1240137 291
>>1240133
>этот маняврирующий дебил по кличке ОП
А вот и иллюстрация.
Аноним 2018/08/03 13:04:06  №1240257 292
ОПчик, помоги! Что я делаю не так?

Хочу сделать так, чтобы у меня на адрес 127.0.0.1 открывался с домена ну и добавил парочку записей в hosts файл, но что-то пошло не так и нихуя не открывается при введении домена, что делоть? Вот записи:

# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within DNS itself.
#\t127.0.0.1 localhost
#\t::1 localhost
#\t127.0.0.2 friden.dev
#\t127.0.0.2 www.friden.dev

Ответы: >>1240258
Аноним 2018/08/03 13:10:25  №1240258 293
>>1240257
Раскомментируй (# убери).
Ответы: >>1240262
Аноним 2018/08/03 13:21:08  №1240262 294
>>1240258
А, Ааааа! ААААААААААААААА! То есть эти ебучие решётки не нужны?
Ответы: >>1240266
Аноним 2018/08/03 13:32:06  №1240266 295
>>1240262
Да, они используются для комментирования строки (она игнорируется при выполнении). В будущем ещё не раз с ними столкнешься.
Ответы: >>1240268
Аноним 2018/08/03 13:33:04  №1240268 296
>>1240266
Всё равно нихуя не работает. Как вообще завести встроенный в php сервак, чтобы он пердолился при введении адреса friden.dev?
Ответы: >>1240271 >>1240278
Аноним 2018/08/03 13:37:05  №1240271 297
>>1240268
Вот это попробуй:
sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Ответы: >>1240272
Аноним 2018/08/03 13:38:08  №1240272 298
>>1240271
Но я ведь не на линуксе или однострочная программа на perl работает и под виндой?
Ответы: >>1240274 >>1240278
Аноним 2018/08/03 13:39:47  №1240274 299
>>1240272
 
>не на линуксе
 
Ясно.
Всего доброго.
Аноним 2018/08/03 13:48:28  №1240278 300
>>1240268
Наверное потому, что ты используешь домен .dev.
https://webdevstudios.com/2017/12/12/google-chrome-63/
Попробуй один из перечисленных в статье.
>>1240272
Совет на будущее - не копируй бездумно команды, тем более выполняющиеся от рута (sudo запрашивает права суперпользователя), тем более по советам двачеров.
Ответы: >>1240279 >>1240280
Аноним 2018/08/03 13:49:10  №1240279 301
>>1240278
пасиб за ссылку, я в курсе про эти программы, требущие sudo. В своё время сидел на ubuntu.
Аноним 2018/08/03 13:50:24  №1240280 302
image.png (4, 237x130)
130x237
>>1240278
Бля, антоша! Спасибо! Завелось!
Аноним 2018/08/03 14:00:24  №1240285 303
OP посмотри пожалуйста https://github.com/Qevg/filehosting

На всякий случай распишу как устроена загрузка файла, а то немного запутано получилось.
Сначала при загрузке файла отправляется ajax запрос на сервер
https://github.com/Qevg/filehosting/blob/master/public/js/upload.js#L102

На сервере генерируется имя будующего файла, сохраняется в redis и отправляется клиенту
https://github.com/Qevg/filehosting/blob/master/app/Controller/UploadController.php#L95

Если все удачно, то начинается загрузка файла
https://github.com/Qevg/filehosting/blob/master/public/js/upload.js#L124

Пока файл загружается у пользователя есть ссылка на будующий файл + имеется возможность добавить описание файлу. Если файл ещё не загружен, то описание будет сохранено в redis
https://github.com/Qevg/filehosting/blob/master/public/js/upload.js#L177
https://github.com/Qevg/filehosting/blob/master/app/Controller/UploadController.php#L137

После того как файл будет загружен информация из редиса (если она там есть) будет перемещена в основую бд
https://github.com/Qevg/filehosting/blob/master/app/Controller/UploadController.php#L121

Если же пользователь добавит информацию после того как файл будет загружен, то она (инфа) сразу будет отправлена в основную бд
https://github.com/Qevg/filehosting/blob/master/public/js/upload.js#L157
https://github.com/Qevg/filehosting/blob/master/app/Controller/FileController.php#L100


>> https://gist.github.com/codedokode/9424217#%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C
Почему бы сразу не генерировать рандомное имя для файла который будет храниться на сервере? Мне кажется так намного правильнее чем писать 100500 проверок.

>> https://gist.github.com/codedokode/a455bde7d0748c0a351a#codeception
>> Slim не поддерживается
Уже поддерживается https://github.com/herloct/codeception-slim-module

Чуть позже ещё это сделаю

video preview + ffmpeg
add acceptance tests
cli
travis-ci
Ответы: >>1240359 >>1240580
Аноним 2018/08/03 15:39:05  №1240359 304
>>1240285
Я канеш не оп, но зачем юзать редис? Как я понял то выгоды он никакой не дает. Ведь можно получить такое же поведение и с обычной бд? И если попытаться скачать файл, который еще не загружен, то в ответ придет 200, это ж не хорошо. Можно еще добавить в бд какой-то uploaded булевый, и если 0 то по ссылке на файл рисовать плашку что файл грузиться, в будущем ты захочешь сделать ютьюб и сможешь рисовать плашку не только при загрузке, но и при обработке, повесить это всё дело на вебсокет, и при завершении загрузки/обработки отправлять страничку.
Ответы: >>1240556
Аноним 2018/08/03 21:19:07  №1240556 305
>>1240359

Ну я вижу тут 3 варианта как реализовать этот функционал

1. Как только пользователь начинает загружать файл добавлять запись в бд (id, fileName). После того как файл будет загружен добавлять остальные данные.
У этого варианта есть проблема в том, что пользователь может прекратить загрузку файла, а в бд запись так и останется.

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

3. И третий вариант это пока файл загружается сохранять данные во временную бд. После того как файл загрузится переносить в основную. Этот вариант мне показался самым лучшим.
Для этой задачи решил использовать nosql db с типом хранение key-value ибо быстро модно, молодежно.

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

>> И если попытаться скачать файл, который еще не загружен, то в ответ придет 200, это ж не хорошо.
Да косяк. Хотя там вроде должен будет быть 500 код т.к $file там вроде должен будет быть null а в 58 строке вызывается $file->getPath(). Надо будет поправить

>> вебсокет
Интересная штука. Надо будет попробовать
Ответы: >>1241068
Аноним 2018/08/03 22:39:50  №1240580 306
>>1240285
Не хочешь завернуть все докер контейнер?
Ответы: >>1240586
Аноним 2018/08/03 23:01:53  №1240586 307
>>1240580
Надо будет попробовать. Я ещё не работал с ним
Аноним 2018/08/04 09:12:08  №1240684 308
Можете посоветовать видео курсы для самых маленьких? У меня всегда были проблемы с решением задач, даже если я знаю как решать, без визуальных подсказок дико туплю на одном месте
Ответы: >>1241068
Аноним 2018/08/04 09:20:21  №1240690 309
image.png (24, 599x307)
307x599
image.png (99, 1383x881)
881x1383
>>1240019
>>1240053
ну тащем-то, я разобрался и понял, что это из-за вебсервера. так что накатил lamp и теперь все у меня работает.........


Аноним 2018/08/04 09:47:19  №1240709 310
Что делать, анон?
Как разобраться в чужем коде.
Сайт на nginx, у себя пробовал и в nginx и на апаче, запускаться он не хочет. 3-и сутки ищу файл в котором подключении к дб. Не могу понять, как связываются фалы, никаких инклюдов и рекваеров. Что мне делать?
Ответы: >>1240720 >>1241068
Аноним 2018/08/04 10:19:42  №1240720 311
>>1240709
В шаблонах поищи mysql_connect :)
Аноним 2018/08/04 10:43:17  №1240726 312
сап /pr/

Что думаете насчет http://code-basics.ru и Хекслет в частности?
Кто-нибудь учился там за бобло?
Ответы: >>1240730 >>1263769
Аноним 2018/08/04 11:02:03  №1240730 313
>>1240726
Хекслет говорят годнота. Друган 300к/сек рекомендует
Ответы: >>1240770
Аноним 2018/08/04 12:01:26  №1240759 314
Анончики. Я умею писать "синхронный" бэк, когда на 1 запрос идёт 1 ответ. Как мне сделать 2 ответа на 1 запрос, например? Чтоб на сервер, например, прилетела задача, запустились какие-то 2 процесса асинхронно, 1 задача закончилась раньше и отдала пользователю ответ пока вторая ещё работает. Как эта хуета называется вообще? Как гуглить?
Ответы: >>1240879 >>1241068
Аноним 2018/08/04 12:24:36  №1240770 315
>>1240730
Чем хекслет на php мне не зашел, там бесплатно почти нихуя, массивы только да еще что-то начальное.

Алсо js годен.
Ответы: >>1263769
Аноним 2018/08/04 12:48:01  №1240783 316
Привет, дорогой тред, есть неебическое желание заработать с программирование до нового года (вернее, до 1 января 2019) любую сумму - будь то 100, 200 или даже косарь рублей. Сейчас знаю ровным счетом нихуя, но имею достаточно свободного времени для изучения языка - анон, считаешь ли ты мою миссию выполнимой?
Ответы: >>1241078
Аноним 2018/08/04 13:21:07  №1240800 317
Книги по Пи-Эйч-Пи из популярного картинкогайда еще годные или уже устарели?
Ответы: >>1240803
Аноним 2018/08/04 13:26:18  №1240803 318
Ответы: >>1240805
Аноним 2018/08/04 13:27:59  №1240805 319
>>1240803
Дык картинка 2012 года.
Ответы: >>1240812
Аноним 2018/08/04 13:36:41  №1240812 320
>>1240805
По идеи там не нужен восклицательный знак. Я пытался подытожить твой тезис твоими же словами, но вышло недоразумение.

Сам же все понимаешь, разгар 2018 на дворе, сведения из 2012 актуальны только в основе - типа справка по команде echo.
Ответы: >>1240816
Аноним 2018/08/04 13:43:28  №1240816 321
>>1240812
Вообще УСТАРЕЛО - это уже полумем среди прогеров. Споры "$нейм устарело" среди прогеров достаточно частые.
Ответы: >>1240823
Аноним 2018/08/04 14:00:37  №1240823 322
>>1240816
Синтаксис языка практически никогда не устареет, а вот парадигмы программирования, инструменты, либы... в 2012 ещё актуально было иметь серт от zend framework, а сейчас его кто-нибудь юзает?
Аноним 2018/08/04 16:02:57  №1240879 323
>>1240759
Погугли message queue и websocket например
Аноним 2018/08/04 18:03:24  №1240950 324
Снимок.PNG (24, 1573x484)
484x1573
>>1232710 (OP)
Почему от прочтения шапки мне стало так спокойно и тепло?

Сап, аноны. Хочу сделать себе виджеты для стрима. Посоветуйте, что почитать про css/html, чтобы я все понял. и забил хуй
Ответы: >>1240958 >>1241067
Аноним 2018/08/04 18:13:37  №1240958 325
>>1240950
>Хочу сделать себе виджеты для стрима.
Смотря какие виджеты ты хочешь. Но чтобы научиться базовым основам html и css, посмотри хотя бы туториалы на ютубе Ищи что-то типа "html5 с нуля" и "css3 с нуля". Есть неплохие уроки. Многому ты там не научишься, но понять что это такое и нужно ли оно тебе, хватит.
Ответы: >>1240989
Аноним 2018/08/04 18:56:58  №1240989 326
1.PNG (12, 213x167)
167x213
2.PNG (34, 289x47)
47x289
3.PNG (15, 1584x420)
420x1584
4.PNG (15, 1036x414)
414x1036
>>1240958
Хотелось бы виджет на подобие пик2. Статичный, прозрачный, прямоугольник со значком и белым текстом. Вроде как во вкладке html ничего и не надо трогать, внешний вид изменяется в таблице css. Сейчас виджет как на пик1 . Думаю мне и не надо прям все учить, понять как добавлять картинку, движение по координатам, размер, цвет, прозрачность, блюр.
Ответы: >>1240990
Аноним 2018/08/04 19:00:47  №1240990 327
>>1240989
>движение по координатам, размер, цвет, прозрачность, блюр.
Вот с этого момента прям всё. Потому что тут уже js, а без знания html и css ты ничего не сможешь сделать в js.
Ну может, не быть профи в вёрстке, но знать тэги, принцип работы css и позже взаимодействие с ними в js обязательно.
Аноним 2018/08/04 19:05:12  №1240997 328
Ответы: >>1241067 >>1243953
1-35 Аноним 2018/08/04 23:52:57  №1241066 329
>>1232886

Я могу предложить урок, где есть пример MVC-кода: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

> Где по логике MVC должны хранится скрипты?
Ты имеешь в виду, файлы с кодом? Не понимаю вопрос. Что значит "где"? В какой папке?

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

> Обязательно ли передавать во вьюшку модель формы?
Если ты хочешь вывести эту форму, то наверно. А как ты иначе ее выведешь и заполнишь значениями?

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

>>1232967

По моему, человек хочет разобраться в MVC. Это тред как раз для таких для вопросов. Что тут непонятного?

>>1233122

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

Тогда проще всего сгенерировать уменьшенные версии картинок один раз и навсегда. Если их 2000 и уменьшенные версии весят допустим по 2 Мб на картинку (хотя JPEG можно сжать гораздо сильнее), это всего 4 Гб диска. Если заказчик хочет высококачественные изображения, то 4Гб - небольшая плата за них.

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

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

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

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

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

> 2. Картинок очень много и потенциально есть вероятность запроса их в любом порядке и любом разрешении.
> 3. Мало рам, диск ограничен.

Тогда кеш с большой вероятностью не будет работать. Так как он быстро заполнится, дальше будут запрашивать картинки, которых в нем нет - значит придется удалять существующие, ни разу их не отдав. Как я писал выше, ты можешь протестировать это, даже не делая реальный кеш, а просто смоделировав его работу в программе и посчитав hit/miss rate (отношение числа попаданий и промахов кеша).

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

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

> 7. Использование отдельного "реестра" для частоты обращений (внутри мемкешд например) как раз позволяет минимизировать бесполезные иопсы и писать только то что реально нужно.
А как ты собрался считать эту частоту? Запускать php-скрипт на каждый запрос картинки? Это сразу понизит эффективность, так как нгинкс гораздо эффективнее раздает статические файлы, поддерживает conditional requests и тд, да и запуск скрипта на ограниченном железе требует время. Можно конечно попробовать (с модулем XSendfile), но у меня ощущение, что найти 4 Гб места проще и быстрее, чем писать и отлаживать такой кеш.

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

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

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

Правда, это получается сложная штука, требующая много времени на реализацию и отладку.
Ответы: >>1241102
Аноним 2018/08/04 23:53:30  №1241067 330
>>1233435

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

>>1233998

Написал пару ссылок в issues.

>>1240997

> w5.1 https://ideone.com/yvZESL

> if ($creditBalance >= $monthlyPayment) {
> ...
Тут можно было вместо if вычислять плату через min/max. А так, верно.

> w5.2 https://ideone.com/k3dgmE
В заголовке цикла слишком много выражений и его тяжело прочесть. Добавление процентов лучше было поместить в тело цикла.

> w5.3 https://ideone.com/4GtuH3
Верно.

> w5.4 https://ideone.com/X1glvK
Верно.

>>1240950

Если ты не спешишь, то как насчет нашего курса по HTML/CSS из шапки? https://github.com/codedokode/pasta/blob/master/html/html.md
Ответы: >>1241463
Аноним 2018/08/04 23:53:54  №1241068 331
>>1240759

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

>>1240709

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

Реквайры не нужны, если используется автозагрузка. https://github.com/codedokode/pasta/blob/master/php/autoload.md

Может тебе надо подучить теорию?

>>1240684

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

>>1240556

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

Страницы с не загруженными файлами можно удалять по крону.

Да и не стоит кеш использовать вместо базы данных. Это почти всегда плохая идея. Лучше завести отдельную таблицу.

> а значит надо будет заморочиться с уровнями изоляции, чтобы получить доступ к транзакции из прошлого http запроса.
Это невозможно, блокировки и транзакции работают только в рамках одного соединения с БД и отменяются при его разрыве.

>>1239806

Ну а что плохого в том, чтобы вознаградить авторов за материал? Да и вложение денег может привести к тому, что анон будет более серьезно относиться к делу. Но, конечно, важно помнить, что главнее всего желание изучать материал и разбираться, а просто заплатить денег недостаточно.
Аноним 2018/08/05 01:18:30  №1241078 332
>>1240783
Нет. Не плоди энтропию и просто делай, как можешь.
Аноним 2018/08/05 05:41:00  №1241102 333
>>1241066
Щас юзается для отдачи превьюшек X-Accel-Redirect (пишут что это нгинксовский аналог xsendfile)

Я по твоему посту так понял - ты не заметил что у меня есть отдельно превью (с ними проблем нет) и отдельно ресайзы. Вот ресайзы это кароче версии какой-то картинки 10кХ10к в разрешениях 5к, 4к, 2к, FHD, HD, vertical FHD, дохуя их.

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

Еще там не совсем тривиальная схема маппинга юри на файлы - всё проклятые "ЧПУ", в ссылках на файлы-то. Я хотел убрать пхп прослойку, но не осилил пока переписать логику преобразования юри в путь на регулярках в реврайтах нгинкса. Типа, сделать чтобы пхп запускался только если первьюхи не хватает.

Хотя я мерил - эта прослойка в целом по времени почти не ест если файлы уже готовы (~5мс), ест только при генерации.

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

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

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

Вообще конечно т.к. в сайт я "не верю" можно не торопиться с всякими изобретениями; даже на уника в минуту можно сгенерировать на ходу картинку. Но это не профессионально как то ощущается, а я ведь хочу стать погромистом...
Ответы: >>1243953
Аноним 2018/08/05 15:50:15  №1241463 334
>>1241067
Вся жизнь впереди, куда спешить то. хотя я спешу, так как все остальное я проебал. Посмотрю, спасибо.
Аноним 2018/08/05 16:39:42  №1241497 335
www.png (9, 627x110)
110x627
Безымянный.png (4, 450x138)
138x450
Что-то я совсем не врубаюсь, как задачи решать. Меня ещё с начальной школы не очень-то этому научили, если честно. Дико туплю, например: как узнать цифру этих 10%, ведь процент в программировании это не процент нихуя. Про сколько будет лет, и через сколько - вообще молчу, ну тупой я что поделать(
Аноним 2018/08/05 16:44:54  №1241501 336
>>1241497
1% = 1/100 = 0.01
То есть, 1% от числа это число*0.01.
Вот тебе подсказка по процентам.
У тебя должен быть в цикле счетчик, который увеличивается на 1 за каждую итерацию. Вот его значение и будет количеством лет.
Аноним 2018/08/05 16:45:36  №1241503 337
>>1241497
Тащемта ничего сложного-то тут нет. Просто берём 10% от 10000р, то есть 1000р, кидаем их на счет. Через год считаем новые 10% от уже 10100р, то есть 1100р и т.д.
Аноним 2018/08/05 16:52:29  №1241506 338
>>1241497
for(let i = 10000, j = 0; i < 1000000000; i += ((i * 10) / 100), j++) {

\tconsole.log(j);
}

Переписывай на своей недо-язык.
Аноним 2018/08/05 16:53:55  №1241507 339
>>1241506
Ой, там конечно же 6 нулей а не девять.
Аноним 2018/08/05 16:56:11  №1241508 340
>>1241506
Что ж ты на своём убер-языке такое говно нечитаемое написал? Ты как думаешь новичок в этом разбираться будет?
Ответы: >>1241509 >>1241511
Аноним 2018/08/05 16:57:35  №1241509 341
>>1241508
> новичок
Проценты изучают в 4-ом классе начальной школы.
Ответы: >>1241511
Аноним 2018/08/05 17:01:09  №1241511 342
>>1241506
>>1241508
let i = 10000;
for(j = 0; i<1000000; j++){
i = i+i*0.01;
console.log(j);
}
Пофиксил тебя, не благодари.
>>1241509
Я тебе о том, что код нечитаемый. А не проценты.
Ответы: >>1241513 >>1241516
Аноним 2018/08/05 17:02:18  №1241513 343
>>1241511
>i = i+i0.01;
i = i+i
0.1
Фикс. 10% же, а не 1%
Ответы: >>1241517
Аноним 2018/08/05 17:02:50  №1241516 344
Аноним 2018/08/05 17:02:59  №1241517 345
>>1241513
Гребаная разметка.
i=i+i*0.1
Аноним 2018/08/05 17:06:25  №1241519 346
>>1241497
Анон тебе надо учить арифметику и решать задачник типа "1000 задач по математике для младшеклассников" а не погромирование учить. Язык программирование это способ выражения мыслей.
Аноним 2018/08/05 17:28:46  №1241529 347
>>1241506
<code>for($i = 10000, $j = 0; $i < 1000000000; $i += (($i * 10) / 100), $j++, print_r($j)) { }</code>
?
Аноним 2018/08/05 18:26:39  №1241567 348
>>1241497
Ну смотри, проценты вообще легко получить, один процент это ведь 1/100 доля от числа
if (n == 1000)
percentage = 10
elseif (n == 1001)
percentage = 10.01
elseif (n == 1002)
percentage = 10.02
...

Алгоритм я подсказал, решение давай уже сам
Аноним 2018/08/05 19:06:18  №1241599 349
>>1232710 (OP)
без рофлов: вкатываюсь четвертый день и сразу же нахожу ну просто очевидные баги или как минимум херовый дизайн языка.
https://bugs.php.net/bug.php?id=38104

это грустно как-то. неужели всё правда так плохо?
Ответы: >>1241620 >>1241743
Аноним 2018/08/05 19:15:17  №1241620 350
>>1241599
Во-первых, ну ты и спринтер. 4й день, а уже в куки с сессиями вкатываешься. Во-вторых, как я понял, из примера, тут функция session_write_close() используется не по назначению. Потому что, прежде чем начать новую сессию надо завершить предыдущую. То есть, прежде чем стартовать сессию session_name('uniqueName1'); надо её завершить. Надо попробовать. По идее, код должен вызывать ошибку типа WARNING.
Ответы: >>1241624 >>1241638
Аноним 2018/08/05 19:17:49  №1241624 351
>>1241620
А, ну собственно, как я и говорил. Первый коммент от разработчика:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

Session is created every time you call session_start(). If you
want to avoid multiple cookie, write better code. Multiple
session_start() especially for the same names in the same
script seems like a really bad idea.
Ответы: >>1241638
Аноним 2018/08/05 19:27:30  №1241638 352
Ответы: >>1241646
Аноним 2018/08/05 19:35:58  №1241646 353
>>1241638
С одной стороны, да. А с другой, такое использование не предусмотрено логикой функции. И при большом потоке данных будет гораздо логичнее использовать ООП.
Аноним 2018/08/05 22:35:16  №1241743 354
>>1241599

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

Мне вообще сессии не нравятся, в большинстве случаев можно прекрасно обойтись без них. Например, авторизация без сессий проще получается и не надо решать проблему с удалением сессии из-за неактивности.
Аноним 2018/08/06 02:49:56  №1241772 355
Если я пройду двачевский учебник я буду считаться на уровне джуниор?
Ответы: >>1241779
Аноним 2018/08/06 04:45:49  №1241779 356
>>1241772
Пока заказчику в попенций не подставишь, будешь считаться стажером.
Ответы: >>1241780 >>1242474
Аноним 2018/08/06 04:48:35  №1241780 357
>>1241779
в
А ели сам заказчика нагнешь - то уже топ менеджер считай!
Аноним 2018/08/06 05:04:10  №1241783 358
>>1238591
ОП, мало ли ты пропустил. Если будет время, посмотри одним глазом.
Ответы: >>1243952
Аноним 2018/08/06 10:53:25  №1241891 359
Ответы: >>1243951
Аноним 2018/08/07 07:18:12  №1242416 360
>>1232710 (OP)
Где взять примеры решения различных задач? Голосования, новости, форум, статистика и т.д.
Ответы: >>1243950
Аноним 2018/08/07 09:07:50  №1242445 361
Аноним 2018/08/07 10:16:22  №1242474 362
>>1241779
Мне вот интересно можно ли проситься стажером если я набросал типа фака/туду с использованием твига и ооп (вообще все на объектах) прям тру mvc (насколько я могу судить). Ну и запросы по нескольким таблицам вот это вот все.

Прост есть контора где стажерам платят(!) 15к в месяц и требуют "знания php/mysql/html/css на уровне студентов старших курсов it-специальностей", хочу туда. В тестовом задании для стажера (я его у них просил когда вообще только задумал вкатиться) задачи типа поправьте хтмл документ чтоб он соответствовал хтмл5 или на пхп сгенерировать 1000 типа id и выбрать из них 50 типа победителей.
Ответы: >>1242770
Аноним 2018/08/07 17:46:42  №1242675 363

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

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

Это прекрасно, что ОПа ничего не остановит, и продолжается уже много лет!
Аноним 2018/08/07 21:43:03  №1242770 364
>>1242474
>15к в месяц

Ебануться
Ответы: >>1242821 >>1243065
Аноним 2018/08/08 05:32:00  №1242821 365
>>1242770
кстати в украине это средняя зп по стране

мимо-украинец
Аноним 2018/08/08 07:29:45  №1242852 366
Анон, как в PostgreSQL замутить следующее:
Есть article и article_tag.
Есть поисковик статей по тэгам.
Нужен запрос, чтобы найти статьи, у которых присутствуют все выбранные тэги.

Например:
article1 имеет tag1, tag2, tag3
article2 имеет tag1, tag2
в поисковике выбраны tag1, tag3

через оператора IN найдется и 1 и 2 статья, но у второй нет tag3, ее надо исключить.

вопрос: какой оператор нужен в условии?
Ответы: >>1242874 >>1243937
Аноним 2018/08/08 08:14:41  №1242874 367
>>1242852
value1 IN (...) AND value2 IN (...) и т.д.
Аноним 2018/08/08 10:50:53  №1242996 368
Привет, анон, помоги с задачкой на номера. https://ideone.com/XKC5wh
почему-то номера с +7 отмечаются как неправильные. В чём дело?
Ответы: >>1243016
Аноним 2018/08/08 11:06:09  №1243016 369
>>1242996
квадратные скобки в случае "+7" не подойдут. нужно использовать ( | ), также не забывай экранировать специальные символы типо + в РВ
Ответы: >>1243026
Аноним 2018/08/08 11:14:19  №1243026 370
Ответы: >>1243040
Аноним 2018/08/08 11:23:49  №1243040 371
>>1243026
(\\+7|8)

$correctText = str_replace(" ", "", $number);
$correctText = str_replace("-", "", $correctText);
$correctText = str_replace("(", "", $correctText);
$correctText = str_replace(")", "", $correctText);

не подойдет. тебе нужно учесть все пробелы, скобки, дефисы в РВ
Ответы: >>1243041
Аноним 2018/08/08 11:24:54  №1243041 372
>>1243040
Хорошо, спасибо, сейчас постараюсь разобраться этим.
Ответы: >>1243043
Аноним 2018/08/08 11:28:38  №1243043 373
Ответы: >>1243049
Аноним 2018/08/08 11:39:12  №1243049 374
>>1243043
Пока подсказывал тебе полез в свой старый код, когда решал эти задачки и обнаружил, что рандомно обозвал переменную :

$momo=preg_split('/(?<=[.?!])(?=[^.])/u',$text, 0,PREG_SPLIT_NO_EMPTY);

А потом зашел в /b и увидел это:
мне страшно
Ответы: >>1243050
Аноним 2018/08/08 11:40:17  №1243050 375
>>1243049
Не пугайся, анон, я тебя защищу!
Аноним 2018/08/08 11:40:58  №1243051 376
W5.2:
>В заголовке цикла слишком много выражений и его тяжело прочесть. Добавление процентов лучше было поместить в тело цикла.
поправил https://ideone.com/UHtWh5

W5.5: https://ideone.com/BSD1VQ
W5.6 https://ideone.com/zPl90z
шифр: https://ideone.com/ihyyM1
Leet: https://ideone.com/wKvLQw
Лев толстой: https://ideone.com/xL6nvv
Палиндром: https://repl.it/repls/FrighteningAjarDistributionsoftware
iPod: https://ideone.com/yvZESL


Ответы: >>1243950
Аноним 2018/08/08 12:03:46  №1243065 377
>>1242770
Много или мало для тебя?
Мне кажется ок при том что тебя учат и дают нормальный опыт.
php php 2018/08/08 13:00:10  №1243089 378
3.jpg (144, 1904x788)
788x1904
2.jpg (243, 3208x1264)
1264x3208
1.jpg (216, 1920x938)
938x1920
Так вот в чем моя идея... мне нужон слайдер с сб чтоб при добавлении строчки добавлялся новый слайд
1 картинка
при нажатии на кнопку {vidy} открывается
2 картинка
и при нажатии на {+} в профиле у дебила ой пользователя добавляется в его слайдер єтот слайд и рассчитывается его заработок
3 картинка
Ответы: >>1243138 >>1243937
Аноним 2018/08/08 14:47:19  №1243125 379
>>1241497
Во-первых поменьше думай об этом - "я не могу сосредоточиться, туплю и т.п." - оно само по себе мета-когниция и может мешать, во-вторых раскрути свой барабанчик, например, возми учебник по логике Виноградова или посмотри русскоязычный Хан Академия лекции по арифметике. Удачи.
Аноним 2018/08/08 15:17:54  №1243138 380
>>1243089
Сука, я думал у меня на мониторе грязь.
Ответы: >>1243144
Аноним 2018/08/08 15:30:59  №1243144 381
>>1243138
оно норм смотрится на стр_))))_)()7897897897)_
Аноним 2018/08/08 15:49:39  №1243150 382
Я делаю страницу с выводом информации из базы данных. Она принимает инфу у пользователя, отправляет ajax-ом на сервер и записывает в базу. Как сделать так, чтобы на странице сразу появлялась введённая пользователем инфа, без перезагрузки?
Ответы: >>1243200 >>1243202
Аноним 2018/08/08 17:31:36  №1243200 383
Сап двач. Нормальная ли практика конвертировать джсон в объект через симфони формы? Просто форма работает почти изкаробки, дай ей массив, и получишь дерево доктрин сущностей со всеми связями и валидацией. Мне не сильно нужно отрисовывать формы(я и не читал как они отрисовываются), но в будущем для разных типов входных данных достаточно написать свои декодеры в массив и кормить это форме, вроде нормально выходит.

>>1243150
Отправляешь обратно клиенту нужную инфу, а у клиента джаваскрипт присоединяет новую инфу к старой
Ответы: >>1243202 >>1243207 >>1243949
Аноним 2018/08/08 17:37:22  №1243202 384
>>1243200
>>1243150
Я тут подумал, если это простая строка типа сообщения в чате или пункта в туду листе то можно сразу аппендить, а от сервера ждать хттп код и при плохом коде удалять или писать ошибку, ну ты понял.
Аноним 2018/08/08 17:49:36  №1243207 385
>>1243200
> Нормальная ли практика конвертировать джсон в объект через симфони формы

Нет, формы для конвертации используют другой компонент - serializer: http://symfony.com/doc/current/components/serializer.html
Его лучше и использовать, у форм очень большой оверхед по абстракциям, особенно если функционал самих форм тебе не нужен.

Ответы: >>1243273
Аноним 2018/08/08 18:04:09  №1243210 386
>>1237755
КОроче, решил с О(n^2) епта
$arr = [...some animals...];
$count = count(arr);
$str = '';
for($i=0;$i<count; $i++){
$str = $arr[$i][0];
for($j = $i+1; $j < $count; j++){
if($arr[$i][0] == $arr[j][0])
$str .= " $str[$j];
}
echo $str . '\n';
$str = '';
}
Ответы: >>1243228 >>1243238 >>1243949
Аноним 2018/08/08 18:27:53  №1243228 387
>>1243210
foreach чтобы перебирать массивы.
Аноним 2018/08/08 18:33:10  №1243238 388
>>1243210
Не страшно, я решаю задачки которые уже решал в прошлом и туплю, хотя раньше не тупил и с ходу делал так, что ОП сразу писал - верно, главное не загоняться.
Аноним 2018/08/08 19:22:27  №1243270 389
Ответы: >>1243949
Аноним 2018/08/08 19:25:24  №1243273 390
>>1243207
Я не пойму как добавить игнорирование типов в сериалайзере. У меня например есть поле с типом инт (тип уточняется в аннотации для доктрины), и когда сериалайзер пытается записать туда строку то выбрасывается исключение что тип не подходит. Я же хочу записать что можно, а потом симфони валидатором проверить уже по другим аннотациям. Пришлось еще попотеть в гугле чтобы сериалайзер заработал, без этих строчек в framework.yaml он не конвертировал нормально
property_info:
....enabled: true
Ответы: >>1243279 >>1243949
Аноним 2018/08/08 19:34:39  №1243279 391
>>1243273
Надо было документацию проскроллить вниз o\
Я через тайпхинт внедрял сериалайзер, а он так автоматически подключает PropertyTypeExtractor, который и проверяет тип.
Аноним 2018/08/08 19:56:49  №1243287 392
>>1232710 (OP)
поделюсь годнотой, есть книжка murach's php and mysql, на оф. сайте лежат материалы, часть из которых небольше сайтики: формочки, работа с бд, mvc вот это всё. очень хорошо для начинающих
Ответы: >>1243938
Аноним 2018/08/09 20:59:44  №1243892 393
Ответы: >>1243948
Аноним 2018/08/10 01:36:40  №1243937 394
>>1243089

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

>>1242852

article JOIN article_tag WHERE tag IN (a, b)

Кстати в наших задачках по SQL есть похожая, только посложнее, советую поломать голову: https://github.com/codedokode/pasta/blob/master/db/databases.md
Ответы: >>1246699
Аноним 2018/08/10 01:47:31  №1243938 395
>>1243287
100% ископаемое говно. Все что не psr - в топку, особенно новичкам избегать.
Аноним 2018/08/10 03:04:59  №1243944 396
Топ тир:
Форма урсока и её вариации
Хай тир:
Каменная форма / неоновая форма красная.
нормал тир:
Остальные неоновые, а так же черная и коричневая из обычных форм.
Такое себе говнецо тир:
Трупная форма и остатки стандартной формы.

Я ем говно, но так как оно досталось мне с трудом, то я внушу себе что оно вкусное-тир:
Форма из башни магов. жаль ментально изнасилованных тех кто в этом гоняет
Ответы: >>1243945 >>1243963
Аноним 2018/08/10 03:13:14  №1243945 397
>>1243944
Простите, я перепутал вкладки.
307-394 Аноним 2018/08/10 03:54:02  №1243948 398
>>1243892

> public function __construct($name)
Здесь бы пригодился тайп-хинт на аргумент функции.

-------

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

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

Обрати внимание, что php7 усовершенствовал систему тайп-хинтов - теперь можно в их качестве указывать примитивные типы вроде int/string, а в php7.1 стало можно указывать тайп-хинт для возвращаемого функцией значения: https://habrahabr.ru/post/267799/ , причем можно указать тип void, значащий, что функция ничего не возвращает.

--------


> public function getWorkersCountAverage()
А здесь на результат.

> public function addEmployeers($position, $workersCount, $rank, $isHead)
Это не позволяет добавлять новые профессии без модификации класса Department. Также, не позволяет задавать какие-то свойства работников, которые не прописаны в addEmployees. Странно, почему надо что-то делать в департаменте, чтобы завести новую профессию? А вот если сделать addEmployee(Employee $e) - то проблема исчезнет.

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

> case "Manager":
Для обозначения классов лучше использовать встроенную константу class, case Manager::class - это защищает от опечаток (будет выдана ошибка) и позволяет использовать автодополнение в IDE.

> class Marketer extends Employee
> {
> protected $rate = 400;
У тебя в коде есть неявное правило, что при создании новой профессии надо прописать ее параметры. Но это никак не документируется и не проверяется, следовательно, новому человеку будет трудно догадаться, как создавать новые професссии без тщательного изучения всего кода. Эту проблему можно решить, если объявить базовый класс абстрактным и добавить в него несколько абстрактных методов вроде getBaseSalary(): int, которые обязаны будут реализовать наследники. Почитай про абстрактные методы в PHP.

Еще ошибка - ты в базовом классе Employee обращаешься к полям вроде rate, которых в нем нет и которые будут только в наследниках - это неправильно. Когда ты пишешь класс, ты еще не знаешь, какие у него будут наследники и какие в них будут поля. Ведь наследников может дописать кто-то после тебя. Ну и читать код тяжело - как можно изучить класс Employee, если он обращается к каким-то несуществующим полям? Идея ООП в том, что мы разбиваем код на классы, с которыми можно работать по отдельности, у тебя это не работает.

Ну и наконец если объекты Employee нельзя создавать, то надо было пометить его абстрактным. Абстрактный класс - это недоделанный класс, заготовка, который нельзя использовать для создания объектов и который станет "конкретным" (законченным) после наследования.

> for ($i = mb_strlen($string); $i < $col; $i++) {
> $string = $string . " ";
Есть str_repeat.

> echo $this->padRight("Департамент", $this->col1) .
> $this->padRight("Сотр.", $this->col2) .
Тут у второй и далее строчек стоит добавить отступ, чтобы было видно, что это все одна длинная команда.

Так, для первого раза выглядит хорошо. Ждем антикризисных решений.
Аноним 2018/08/10 03:54:34  №1243949 399
>>1243200

Нет, конечно. Формы предназначены для работы с HTML формами. Тебе нужен сериализатор/десериализатор JSON.

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

>>1243273

Если поле имеет тип int, то естественно, строки в него записывать нельзя.

>>1243270

> $correctText = str_replace(" ", "", $number);
> $correctText = str_replace("-", "", $correctText);
> $correctText = str_replace("(", "", $correctText);
тут стоит использовать единственный preg_replace либо strtr с массивом.

> "(\\+7)"
Скобки не нужны

> (-|\\s|\\(|\\)
Можно было написать короче как "[\\-\\s()]"

А так, верно.

>>1243210

Тут не нужно O(N^2), хватит O(N).

> for($i=0;$i<count; $i++){
> $str = $arr[$i][0];

Смотри, как тут много скобок и знаков доллара. Это тяжело читать. Надо использовать в такой ситуации цикл foreach. Если ты изучал другой язык и там был for, то забудь про него, в PHP есть foreach для обхода массива.

Не надо называть переменные $arr, так как это ничего не значит. Называй animals или words.

> $arr[$i][0]
Это не вернет первую букву, а первый байт в слове. Строка в PHP - это набор байт, а не символов и $str[0] не вернет тебе первый символ. Почитай урок https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

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

[
'а' => [...],
'б' => [...],
...
]

То есть массив, где ключ - это первая буква, а значение - это массив слов на эту букву. Тогда хватит O(N).
Ответы: >>1244310 >>1244650
Аноним 2018/08/10 03:55:04  №1243950 400
>>1243051

> https://ideone.com/UHtWh5
Ок, хорошо.

> W5.5: https://ideone.com/BSD1VQ
Верно.

> W5.6 https://ideone.com/zPl90z
Ок, верно, имей в виду, что есть функция array_rand.

> шифр: https://ideone.com/ihyyM1
Правильно.

> Leet: https://ideone.com/wKvLQw
Ок, хорошо.

> Лев толстой: https://ideone.com/xL6nvv
Ок, верно.

> Палиндром: https://repl.it/repls/FrighteningAjarDistributionsoftware
> ($i + 1) * (-1)
Наверно, лучше было написать -($i + 1) или -$i - 1. Минус и плюс в PHP может использоваться не только как бинарный оператор, так и как унарный (с одним аругментом). Например: $y = -$x.

А так, верно.

> iPod: https://ideone.com/yvZESL
Верно, хотя вместо if можно использовать min/max и укоротить код.

>>1242416

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

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

Если тебе так нужны готовые примеры, поищи CMS или движки для этого, но предупреждаю, без базовых знаний там ковыряться очень тяжело.
Аноним 2018/08/10 03:55:45  №1243951 401
>>1239383
>>1241891

> function inclineWord($numbers, $isFemale, $key) {
Мне кажется, было бы лучше передавать не непонятный номер, а варианты формы слов, а функция бы из них выбирала. Так получилась бы универсальная функция, которая работает с любыми словами.

> if (arrayCheck($numbers)) {
Непонятно, зачем это. Не лучше ли обязать передавать в функцию просто число? Зачем туда передавать целый массив? Почему функция выбора формы числа должна ковыряться в каких-то непонятных массивах? Ты явно код разбора массива поместил не туда. Это не задача этой функции.

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

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

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

> Соединяет особенные числа
> function combineNumbers($numbers) {
Я абсолютно не понимаю, что делает эта функция. И комментарий тоже ничего не говорит. Код должен быть простой и понятный, а не такой. Подумай, если кто-то работает с твоим кодом, сколько времени придется ему потратить на разбор? Почему он или она должны решать ребусы? Так не должно быть.

> $multiplierAndKey = (count($numbers) == 3) ? [100, 3] : ((count($numbers) == 2) ? (($length == 4) ? [100, 2] : [10, 2]) : [1, 1]);
Это тоже трудно понять. Я смутно догадываюсь, что это как-то связано с сотнями и единицами, но не до конца понимаю.

> for ($key = 0, $min = 0, $max = 3; $max <= 9; $key++, $min += 3, $max += 3) {
Это тоже непонятно.

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

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

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

Будет гораздо проще.
Ответы: >>1244539
Аноним 2018/08/10 03:56:39  №1243952 402
>>1241783
>>1238591

> ПИШИ ВЕРНО:http://sandbox.onlinephpfunctions.com/code/3c8352717c46dd94d722880076fc352ce3aea067
> function makeFirstLetterUppercase($textArray) {
Логичнее сделать функцию, которая делает что-то одно и обрабатывает одно предложение за раз. И вызывать ее в цикле, ведь цикл у тебя уже есть. А ты зачем-то добавил в нее еще склеивание массива в строку.

> [?]|[!]|[.]
Короче [?!.]

> (\\.+|\\?+|!
А почему после ! не стоит +? А лучше было бы написать как [?!.,;:]+ - чтобы проходили любые сочетания знаков.

Решено верно.

> YODA SPEAK(с сохранением знаков в конце):http://sandbox.onlinephpfunctions.com/code/0a534cec17d6efe3b16c9e23961603f67e07937e
> foreach ($sentencesArray as $sentence) {
Лучше ($sentences as $sentence). Не надо писать array.

> $firstWord = mb_strtolower($firstWord) . mb_substr($lastWord,mb_strlen($lastWord) - 1, 1) . ' ';
> $lastWord = mb_strtoupper(mb_substr($lastWord, 0, 1)) . mb_substr($lastWord, 1, mb_strlen($lastWord) - 2);
Здесь может быть стоило сделать отдельную функцию upcaseFirst, ради читаемости. Ну и отделение знака от предложения стоило сделать отдельно от изменения регистра.

> mb_substr($lastWord,mb_strlen($lastWord) - 1, 1)
Короче mb_substr($lastWord, -1), подробности в мануале.

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

> СУММА ПРОПИСЬЮ:http://sandbox.onlinephpfunctions.com/code/1291210f3e694793e62a1be823935a1dc6df6d69

Неправильно выводит:

> На вашем счету: двадцать один миллионов двадцать две тысяч тридцать три (21022033) рублей.

> $words = array(
> 'рубль',
> 'рубля',
> 'рублей',

лучше сделать 2-мерный массив вида

[
[рубль, рубля, ..],
[тысяча, тысяч, ...],
...
]

Тогда не понадобятся магические цифры вроде $i += 3 или ($i == 6).

Еще вариант в таких случаях - сделать вместо цикла 3 вызова функции:

$part1 = spellNumber($number1, 'рубля', 'рублей', ...);
$part2 = spellNumber($number2, 'тысяча', 'тысячи', ...);
...

> $text .= $spelling[$digit] . ' ';
Часто проще складывать слова в массив, чтобы не мучаться с лишними пробелами.

> if (($number > 9) && ($number % 100 > 9)) {
Первое условие не лишнее?



КАЛЬКУЛЯТОР(с делением и дробями): http://sandbox.onlinephpfunctions.com/code/c631161ae42f91df834bc0202ea3b840eb807a50

А, я-то думал, тут дроби вроде 1/2 + 3/4 = 5/4.

> $number = floatval(strval($number) . $char);
> $number = strval($number) . $char;
Это плохо, что у тебя переменная постоянно меняет тип, так как трудно понять, где она имеет какой тип и как с ней работать. Лучше было копить символы как строку, а только перед выполнением операции преобразовать в число.

Работает верно.
Ответы: >>1243965
Аноним 2018/08/10 03:57:09  №1243953 403
>>1241497

Процент это 1/1000 числа. Увеличить на 10% - значит поделить число на 100 частей, взять 10 и прибавить к этому же числу. Ну или умножить число на 1,1.

>>1241102

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

> Еще там не совсем тривиальная схема маппинга юри на файлы - всё проклятые "ЧПУ", в ссылках на файлы-то.

Ты делаешь URL = путь к картинке на диске (/images/download/2000x3000/sunshine-123.jpg) и добавляешь в нгинксе правило, что если в папке /images/download/ нет файла, то вызывается PHP вместо отдачи 404.

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

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

>>1240997

> w5.1 https://ideone.com/yvZESL
> $creditBalance != 0;
Лучше писать условие $x > 0, чтобы при уходе в минус программа не зациклилась.

Верно, хотя вместо if можно было использовать min/max.

> w5.2 https://ideone.com/k3dgmE
> for ($pct = 10, $sumOfDream = 1000000, $dep = 10000, $clientAge = 16; ; $dep += ($dep / 100) * 10, $clientAge++)
Не надо писать такую длинную шапку цикла, ее трудно читать. Стоит оставить вверху только 1 переменную.

Так, верно.

> w5.3 https://ideone.com/4GtuH3
Верно.

> w5.4 https://ideone.com/X1glvK
Правильно.

Аноним 2018/08/10 04:32:31  №1243963 404
Аноним 2018/08/10 04:43:17  №1243965 405
>>1243948
>>1243952
Спасибо, сам такое без опыта не замечаю, думаю, придёт все потом.
Решу после антикризисных мер ещё твою про гостиницу из архива тредов, потому что схему ооп в голове пока что сложновато строить.
Аноним 2018/08/10 05:23:34  №1243975 406
>>1243948
OP, есть ещё вопрос здесь, который я так и не понял.
Изначально в дочерних классах работника (менеджер, инженер, ..) свойство $rate было запривачено и когда я вызывал метод
getSalaryEmployee(), то пхп выдавал ошибку, $rate запривачен и доступа нет. Но ведь я вызываю этот метод в том классе, где заприваченое свойство и находится, manager наследовал метод же, он в нем вызываться и должен и брать спокойно $rate. Пришлось ставить protected.
Ответы: >>1244054 >>1244057
Аноним 2018/08/10 08:30:45  №1244054 407
>>1243975

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

"Видимость" определяется тем, где в коде расположен метод. Не важно, откуда он вызван. Чтобы обращаться к приватному свойству, код должен быть расположен в пределах того же самого класса, между class { и }. Это так сделано неспроста, есть же принцип разделения ответственности. Представь, что каждый класс пишет отдельный человек. Приватные поля и методы принадлежат только этому человеку и никто другой не может ими пользоваться. Только он их видит и может вызывать. А, например, protected поля принадлежат автору класса, но он делится доступом с владельцами классов-наследников (но не предков).

Класс-наследник не включает в себя содержимое предка, это все же отдельные классы, хоть и связанные довольно тесным отношением наследования.
Ответы: >>1244106
Аноним 2018/08/10 08:33:59  №1244057 408
>>1243975

Добавлю еще, что в предке и наследнике могут быть приватные поля с одним и тем же именем, и это будет 2 разных поля. Если ты представишь мою аналогию, что каждый класс пишет отдельный человек, то поймешь, почему это работает: потому что об этих полях знает только их создатель, а другие их даже не видят и потому никакого конфликта нет.
Ответы: >>1244106
Аноним 2018/08/10 08:55:16  №1244073 409
Ебать вы тут хуйней занимаетесь. Дрочите всякие инкапсуляции, абстрактные методы, интерфейсы, делегирование. Годами же дрочите. НАхуй вам это?
вместо того, чтобы изучить конкретные технологии под конкретные вакансии и устоится наконец на работу вы блять читаете Мэтт Зандстра и решаете задачи типа ебаного калькулятора
Ответы: >>1244103 >>1244117 >>1244650
Аноним 2018/08/10 09:19:12  №1244103 410
>>1244073
А что ты предлагаешь конкретно?
Аноним 2018/08/10 09:20:51  №1244106 411
Аноним 2018/08/10 09:31:17  №1244117 412
>>1244073
А вообще зачем годами учить это? Я 2 недели как начал учить, уже понял ооп более менее с абстрактными классами и интерфейсами, решил вот задачу опа на ооп. Следующая будет список студентов, которая и представляет собой пример реальной задачи-формошлепства.
Аноним 2018/08/10 13:32:32  №1244310 413
>>1243949
>Когда у меня была обратная задача - преобразовать объект в JSON - я нашел сериализаторы неудобными. Они, например, по умолчанию экспортируют все поля сущности, и можно помечать те, что экспортирвать не надо. Но это плохой подход, так как легко забыть пометить поле и отдать какие-то приватные данные через API. Должно быть наоборот. Также, они заточены на сценарий, когда тебе надо преобазовать сущность в JSON целиком, но на практике часто нужна только часть полей, плюс какие-то дополниетельные свойства, которые вычисляются через методы. По факту было проще вручную их разобрать.

Ну у меня и такая задача тоже есть. Взять тот же тестхаб, есть тест как сущность для админа или создателя (с указанием правильных ответов) и тест как сущность для участвующего или студента (без указания правильных ответов). Я думаю просто потом по группам раскидать.
Я еще встречал в ларавел вот такую штуку:
https://fractal.thephpleague.com/transformers/
она вроде бы удобная, но я её не применял на практике. Можно ведь самому сделать некий сервис, который будет принимать параметром сущность, и возвращать массив с данными, которые уже нужно преобразовать в джсон, то есть то что ты и говорил, мы не добавляем в "черный" список например пароль, а добавляем все кроем пароля в "белый" список
Ответы: >>1244650
Аноним 2018/08/10 15:01:12  №1244359 414
>>1243948
>addEmployee(Employee $e)
ОП, извини, что вопросов много задают тупых, но никак не могу вкурить, что ты имел ввиду под этим.
Аноним 2018/08/10 22:49:11  №1244539 415
opmolodec.jpg (255, 807x646)
646x807
>>1243951
Очень приятно, что кто-то проверяет мои поделки. Большое человеческое спасибо!

Переделал и максимально закомментировал код. Надеюсь я исправился, пожалуйста оцените :3
https://ideone.com/QKJaY8
Ответы: >>1246427 >>1246798
Аноним 2018/08/11 07:36:51  №1244650 416
>>1243949
Какая-то устаревшая информация по сериалайзеру.

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

Группы в сериалайзере были давным давно: https://symfony.com/blog/new-in-symfony-2-7-serialization-groups
А до этого было принятно использовать JMS Serializer c их @ExclusionPolicy и @Expose: https://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies

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

Можно сделать свой нормалайзер и вычислять там то, что нужно: -
- http://mickadoo.github.io/symfony/2016/05/18/custom-symfony-normalizers.html
- https://thomas.jarrand.fr/blog/serialization/

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

В терминах symfony/serializer это называется нормализация и делается через кастомные нормалайзеры (ссылки выше).

Fractal тоже норм.

>>1244073
> Дрочите всякие инкапсуляции, абстрактные методы, интерфейсы,

Всё правильно делают, это позволит им устроится в хорошую контору с толковыми спецами и интересным стеком.
Аноним 2018/08/11 09:18:45  №1244719 417
Господа, у меня есть контейнер, в котором горизонтально находятся два div блока, которые выравнены друг относительно друга через флоат лефт и имеют минимальную ширину (допустим 600пх). При уменьшении окна браузера, когда контейнер становиться меньше 1200 пх, правый контейнер переходит на следующую строку. Каким образом я могу сделать так, чтобы после переноса второго контейнера (если экран юзера меньше чем 1200пх) эти блоки уже выравнивались не по левому краю, а по центру контейнера?
Ответы: >>1244904
Аноним 2018/08/11 13:02:35  №1244904 418
>>1244719
В @media (max-width: 1200px) убрать флоаты и сделать маргин-авто на блоках.
Не использовать флоаты, а использовать флексы.
Сделать блоки инлайн-блоками, а у родителя сделать центрование текста.
Использовать css column (require прямые руки).
Аноним 2018/08/11 17:20:52  №1245088 419
Поделитесь видеоуроками с практическим применением PHP (созданием сайта).
Ответы: >>1245094 >>1245125
Аноним 2018/08/11 17:26:35  №1245094 420
Ответы: >>1245103
Аноним 2018/08/11 17:43:31  №1245103 421
Аноним 2018/08/11 18:34:04  №1245125 422
>>1245088
Виктор Зинченко набери в ютабе, там чувак сначала пилит инет магаз, потом типа мини-инстаграмм
Ответы: >>1245152
Аноним 2018/08/11 19:13:59  №1245147 423
Трудно ли найти фриланс на PHP?
Ответы: >>1245325
Аноним 2018/08/11 19:19:04  №1245152 424
>>1245125
Звук ужасен конечно. А так спасибо.
Аноним 2018/08/11 21:57:22  №1245218 425
15257168881830.mp4 (2473, 640x640)
640x640
Sup /pr/. Пару вопросов от ньюфага, ежже.
1. Стоит ли вкатываться?
2. Сколько платят человеку, который уже может приступить к работе за еду?
3. Сильно тяжёло?
4. Троечник-гуманитарий осилит?
Заранее спасибо всем отписавшимся.
Ответы: >>1245509
Аноним 2018/08/11 23:07:34  №1245240 426
1450619445001.jpg (91, 938x712)
712x938
Ответы: >>1245509
Аноним 2018/08/12 06:36:39  №1245323 427
Такой вопрос: какую версию php актуально изучать? И какой актуально пользоваться?
Ответы: >>1245324 >>1245327
Аноним 2018/08/12 06:41:59  №1245324 428
>>1245323
Очевидно последнюю
Аноним 2018/08/12 06:42:29  №1245325 429
>>1245147
Идешь на фреланс и вбиваешь PHP, все просто, а там далее думаешь сам.
Аноним 2018/08/12 06:47:38  №1245327 430
Ответы: >>1245372
Аноним 2018/08/12 07:53:49  №1245354 431
Добрый день. Что можете сказать про htmlacademy?
Ответы: >>1245373
Аноним 2018/08/12 09:19:30  №1245372 432
>>1245327
просто, на хостах часто видел 5.7. А так понятно, что надо разбираться с последней.
Аноним 2018/08/12 09:20:36  №1245373 433
>>1245354
книжки и практика. html не такое уж и сложное нечто. Верстка разве что.
Аноним 2018/08/12 09:22:00  №1245375 434
где почитать гайды, чтобы не случался говнокод?
Аноним 2018/08/12 09:23:37  №1245376 435
а есть исходники чего-то типа phpbot?
Аноним 2018/08/12 12:59:49  №1245509 436
>>1245218
1) Не знаю
2) 3 яблока в час
3) Да, если ты ваще ньюфаг
4) Зависит от тя. Но если ты норм гуманитарий (а не просто долбоеб, который ни в чем не разбирается, но называет ся гуманитарием), то у тебя должен быть хороший английский - это огромный плюс.
>>1245240
автор анимешник (наверное)
Аноним 2018/08/12 14:57:10  №1245604 437
conflogo.jpg (171, 657x539)
539x657
Напоминаю PHP-лордам и вкатывальщикам, что у нас появился ламповый (неофициальный) чатик, где уже сидят целых 18 анонов!

https://t-do.ru/joinchat/Eh8Gzg94NT7LDHFpw4iZ7g

Присоединяйся няша, мы тебя ждем!
Аноним 2018/08/12 16:24:48  №1245668 438
query.JPG (34, 545x324)
324x545
trans.JPG (60, 535x670)
670x535
work.JPG (45, 593x433)
433x593
Вот функция, оборачивающая в Promise запрос к базе данных. Все отлично, resolve - reject, все работает. Теперь бы хотелось расшириться до полноценной транзакции с возможностью писать произвольное количество query и использовать в каждой последующей результат предыдущей. reject после rollback-а, resolve после крайнего удачного запроса. Есть мысли?
Ответы: >>1246346
Аноним 2018/08/13 00:36:09  №1245889 439
Зацените какой поехавший код я создал. Это задачка Считалка.
https://ideone.com/ygXoIg
Ответы: >>1245898 >>1245990
Аноним 2018/08/13 02:18:27  №1245898 440
>>1245889
Твоя мамка путешествовала по индии, до твоего рождения?
Аноним 2018/08/13 08:43:50  №1245990 441
>>1245889
Я не понял.
Тебе нужна помощь как это короче решить с меньшей вычислительной сложностью или ты просто шутки ради код запостил?
Ответы: >>1246182
Аноним 2018/08/13 11:49:46  №1246068 442
Есть массив данных пришедших от пользователя questions[] и у каждого элемента есть массив answers[].
Сначала сделать валидацию для всех значений questions,answers вложенным циклом, а затем уже записывать значения в БД еще одним вложенным циклом, я правильно понимаю?
Аноним 2018/08/13 15:24:36  №1246182 443
>>1245990
шутки ради код запостил
Аноним 2018/08/13 20:12:25  №1246346 444
>>1245668

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

A --> B --> C

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

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

Теперь подумаем, как это применить к твоей задаче. К сожалению, ты не написал, что за библиотеку ты используешь и как работает метод transaction(). Я предположу, что это WebSQL, а там метод t.executeSql() добавляет запрос в очередь на выполнение (они выполняются по одному). Описание https://www.w3.org/TR/webdatabase/#sqltransactioncallback

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

function runQuery(t: SQLTransaction, q: string, args: []): Promise<result> {
return new Promise(...);
}

Эта функция добавляет запрос в транзакцию и возвращает промис с результатом или ошибкой.

Остается только придумать, как сделать цепочку из запросов? Очевидно, путем преобразования результата первого запроса с помощью then():

var r1 = runQuery(t, ....);
var r2 = r1.then(function (data) {
//... обработка data
return runQuery(t, ...);
});
var r3 = r2.then(...);

Вот так мы и получаем выполнение нескольких зависящих друг от друга запросов. Когда первый запрос выполнится успешно, r1 разрезолвится и будет вызван коллбек внутри r1.then. Он добавит в очередь второй SQL запрос и вернет промис с результатом. r2 разрезолвится как только будет разрезолвлен этот промис.

Если же r1 будет отрежекчен, то r2 и r3 тоже отрежектятся, другие запросы выполняться не будут.

Разумеется метод transaction можно точно так же обернуть в промис:

function runTransaction(callback) {
return new Promise(...) {
database.transaction(callback, function (..) { resolve(); }, function { reject(); } );
}
}

Но мне не нравится идея передавать коллбек, я вместо этого напишу функцию, которая возвращает SQLTransaction:

function getTransaction(): Promise<SQLTransaction> {
return new Promise(function (res, rej) {
database.transaction(
function (t) { res(t); },
function (e) { rej(e); }
);
});
}

Его можно использовать для построения такой цепочки:

получить транзакцию -> выполнить 1-й запрос -> выполнить 2-й запрос

var tr = getTransaction();
tr.then(function (t) {
return [t, runQuery(t, sql1...)];
}).then(function ([t, data]) {
return [t, runQuery(t, sql2...)];
});

Здесь получается некоторая корявость из-за необходимости передавать пару [транзакция, результат]. Это можно решить, если научить функцию runQuery принимать промис транзакции вместо транзакции:

var t = getTransaction();
var r1 = runQuery(t, ....);
var r2 = r1.then(function (data) {
//... обработка data
return runQuery(t, ...);
});
var r3 = r2.then(...);

Единственное, что меня беспокоит, это вот эта строчка из спецификации (в 4.3.2 Processing model):

> While there are any statements queued up in the transaction, perform the following steps for each queued up statement in the transaction, oldest first.

Не получится ли так, что когда один запрос будет выполнен, а второй еще не добавлен в очередь, что транзакция закончится?

Задавай вопросы, если что-то непонятно. Тема промисов сложная, и надо с ней разобраться.
Ответы: >>1246359 >>1249334
Аноним 2018/08/13 21:06:42  №1246359 445
>>1246346
Да, сейчас пытаюсь разобраться с TypeScript и WebSQL (все мечтаю первым сделать твою задачу на SPA). WebSQL хоть и мертвая, но использует синтаксис SQLite, что не будет вредно изучить.

Сейчас уже спать хочу, но вот что сегодня нашел:

https://github.com/oskarer/websql-promisified
https://github.com/oskarer/websql-promisified/blob/master/src/index.js

Не могу понять что тут вообще происходит, но использование, согласись, лаконичное (вот прям идеальное для меня где async await).

Уже в голове промис промисом погоняет.

Спасибо что отвечаешь всегда на мои бешеные вопросы :3
Ответы: >>1249334
Аноним 2018/08/14 00:44:06  №1246426 446
Хей девчата, а ваш PHP умеет в асинхрон?
Ответы: >>1246441
Аноним 2018/08/14 00:58:20  №1246427 447
image.jpg (351, 1280x738)
738x1280
Ответы: >>1249518 >>1250182
Аноним 2018/08/14 05:09:50  №1246441 448
>>1246426
А он тебе точно нужен? Или тебя просто будет согревать мысль, что у твоего бати большой хер, даже если у тебя самого мелкий стручок?
Аноним 2018/08/14 06:47:02  №1246458 449
Помогите пожалуйста.
Есть форма, которой можно добавлять поля.
Как сделать чтобы в коде:

<input type="radio" name="correct[]" value=" ">

в значие value попадал ключ массива correct
<input type="radio" name="correct[1]" value="1">
<input type="radio" name="correct[2]" value="2">
<input type="radio" name="correct[3]" value="3">
Ответы: >>1246472
Аноним 2018/08/14 07:37:35  №1246472 450
>>1246458
Можно сделать массив на i элементов
Которые будут генерировать эти инпуты

Типо:
For ($i = 0; $i < correct.size(); $++)
хтмл.create = "<input name='correct [$i]'>"

написал с телефона
Ответы: >>1246474
Аноним 2018/08/14 07:40:57  №1246474 451
>>1246472
>хтмл.create
А js тут зачем? Можно же просто через echo на страницу вывести.
Ответы: >>1246475
Аноним 2018/08/14 07:42:22  №1246475 452
Аноним 2018/08/14 10:03:24  №1246547 453
Раньше пхпшторм при остановке на брейкпойнте разворачивался сам, а теперь приходится вручную переключаться на него с браузера. Что за хуйня, посоны?
Ответы: >>1246943
Аноним 2018/08/14 12:42:49  №1246617 454
Задача про новый айпад. Можно ли модифицировать код так, чтобы каждый раз не передавать в функцию идентичные аргументы $credit и $pay??? Если можно - то подскажите как, плееес.
https://ideone.com/Aa5oVU
Ответы: >>1246693
Аноним 2018/08/14 16:02:04  №1246693 455
>>1246617
Ну давай разберем по частям все тобою написанное.
Задача функций - избегать дублирования кода. У тебя один и тот же кусок кода 3 раза. А если банков будет 50 штук? Это нужно собрать в одну функцию.
Имена функциям принято начинать с глагола. Например calculateTotalAmount() и т.п.
>Можно ли модифицировать код так, чтобы каждый раз не передавать в функцию идентичные аргументы $credit и $pay???
Можно. Плохой вариант: использовать глобальные переменные (https://www.w3schools.com/php/php_superglobals.asp). За это бьют по рукам.
Вариант получше: использовать значения по умолчанию.
function doSomething($var = 100) {}

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

Ответы: >>1246802
Аноним 2018/08/14 16:09:13  №1246699 456
>>1243937
а подскажешь сервис где можно найти крестьянина который бы реализовал это в жзн
Аноним 2018/08/14 19:04:34  №1246798 457
>>1232710 (OP)
>>1244539
Переосмысление задачи "сумма прописью", алгоритм работы множителя расписан в более понятных if - else.

Пожалуйста, проверьте.
https://ideone.com/ycLXlo
Ответы: >>1249518 >>1250182
Аноним 2018/08/14 19:07:50  №1246802 458
Аноним 2018/08/15 01:09:41  №1246905 459
У меня от этого симфони уже жопа начинает гореть. Как будто я какие-то космически вещи вообще делаю.
Хочу джсон в объект трансформировать, ошибки обратно отправить если есть, этот сериалайзер проверяет тип поля, тип вроде бы он забирает из аннотаций для доктрин, выбрасывает исключение если тип неправильный, искал пол часа как отключить проверку типа, вроде бы нашел. Но суть в том что он все равно вызывает свой validateAndDenormalize метод, в конце которого просто есть проверка на этот ключ(на скрине) в массиве, и исключение игнорируется. После всего этого я еще раз делаю проверку через симфони валидатор, собираю ошибки если есть и отправляю ответ.
Это же вроде ОЧЕНЬ тупо, зачем делать валидацию клиентского инпута в сериалайзере, у всех же и так стоят свои правила типа пароль не меньше 6 символов, которые будут прогоняться через другой валидатор.
Или просто при исключении отправлять плохой ответ, и не париться? Это при условии что на клиенте у меня джаваскрипт не даст ничего плохого отправить 100%
Ответы: >>1246920
Аноним 2018/08/15 02:31:00  №1246920 460
>>1246905

Я почитал тут (ты не написал, что ты используешь, потому я предположил что этот компонент) https://symfony.com/doc/current/components/serializer.html и не вижу там каких-то упоминаний валидации.

> Это же вроде ОЧЕНЬ тупо, зачем делать валидацию клиентского инпута в сериалайзере

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

public function setName(string $name)

не словил бы ошибку. Ну и что бы у поля с типом

... @var string ...
private $name;

аннотация бы соблюдалась.

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

Кстати, порылся в исходниках сериализатора и узнал про компонент https://symfony.com/doc/current/components/property_info.html где и описано, как извлекается информация о типах (если что-то там сложно и непонятно, можешь спросить).

Вот место в исходниках: https://github.com/symfony/serializer/blob/master/Normalizer/AbstractObjectNormalizer.php#L295

Метод validateAndDenormalize() проверяет соответствие переданного значения типу поля в классе (тип определяется с помощью PropertyInfo) и выбрасывает исключение при ошибке. А при успехе - возвращает это значение (иногда слегка подправленное, например int может автоматически конвертироваться в float).

Тебе не надо отключать проверку типов. Так как значение нестандартного типа может вызвать ошибки в самых разных местах кода. А может даже уязвимости. Если ты хочешь обрабатывать ошибку типа, ты можешь ловить NotNormalizableValueException и что-то делать, например, выдавать ошибку HTTP 4xx (предоставлены некорректные JSON-данные).

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

> Это при условии что на клиенте у меня джаваскрипт не даст ничего плохого отправить 100%
Злоумышленника это не остановит. Он может слать данные напрямую на сервер без джаваскрипта. А ты зачем-то отключаешь защиту от этого.
Ответы: >>1247271
Аноним 2018/08/15 03:50:20  №1246929 461
Вкатывальщик на связи.
У меня есть класс для работы с конфигом, класс приложения с инициализацией сессии, конфига и бд, и автолоад.
Я подключаю автолоад, он загружает классы, в том числе и конфиг. Потом я подключаю отдельно приложение - оно инициализирует сессию и... вылетает при попытке инициализации конфига (Uncaught Error: Class 'classes\Config' not found). Но автолоад же уже подключил этот класс!
Как оно вообще должно работать?
Ответы: >>1246954
Аноним 2018/08/15 05:52:13  №1246943 462
Аноним 2018/08/15 07:01:40  №1246954 463
>>1246929
Запости код на github, облегчи нам жизнь.
Ответы: >>1246955
Аноним 2018/08/15 07:05:16  №1246955 464
>>1246954
Я ещё подолбился и таки нашёл проблему. Очень странные ошибки, лучше бы самостоятельно с вами аутировал, а не с этими курсами платными.
Ответы: >>1247016
Аноним 2018/08/15 09:21:43  №1247016 465
Аноним 2018/08/15 11:14:42  №1247062 466
Регулярки с номерами телефонов - на проверку. Тестер ошибок не находит, но чет мне не очень нравится решение т.к. добавив пробел перед некоторыми некорректными номерами, они становятся корректными. А так же корректными могут считаться номера вида 8 1234----------(((((5))))67 891. Вообщем так и должно быть или я чет накуралесил? https://ideone.com/a5k62i
Аноним 2018/08/15 15:27:06  №1247271 467
>>1246920
>Злоумышленника это не остановит. Он может слать данные напрямую на сервер без джаваскрипта. А ты зачем-то отключаешь защиту от этого.
Я думал проверять тип валидатором, там же есть Assert\Type() класс для этих вещей, а у валидатора еще можно ошибки отправить со своим сообщением. А с сериалайзером мне остается только ловить исключение и отправлять например 422 код, потому что сообщение исключения тоже особо смысла не несет для пользователя. Можно представить что кто-то сделает мобильное приложение и будет регистрировать созданные там тесты на моем сайте через какое-то апи, и например у них нет клиентской валидации, я поэтому и хотел отправлять нормально ошибки независимо от фронтэнда. Но я сейчас так подумал что мне это не особо нужно, у меня всего пару аякс запросов а все остальное это шаблоны на сервере.
Ответы: >>1247381 >>1247384
Аноним 2018/08/15 17:52:30  №1247381 468
>>1247271

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

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

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

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

https://github.com/symfony/serializer/blob/master/Normalizer/AbstractObjectNormalizer.php#L357

throw new NotNormalizableValueException(sprintf('The type of the "%s" attribute for class "%s" must be one of "%s" ("%s" given).', $attribute, $currentClass, implode('", "', array_keys($expectedTypes)), \gettype($data)));

Аноним 2018/08/15 17:54:56  №1247384 469
>>1247271

Также, если ты будешь делать АПИ, можно еще как-то сгенерировать JSON schema и проверять приходящие данные по ней. И даже выложить эту схему, чтобы пользователи АПИ могли самостоятельно по ней проверять данные. Если ты будешь документировать свое АПИ с помощью Swagger, то там как раз нужно описать структуру данных с помощью схемы.
Аноним 2018/08/15 19:10:14  №1247441 470
ОП, делаю антикризисные меры и хочу, чтобы выводились сразу все.

Для этого решил создать клоны вектора:
$companyClone = clone $vector;

В родительском классе прописал это, чтобы и департаменты внутри компании тоже клонировались:
\tpublic function __clone()
\t{
\t\tforeach ($this->departaments as $departament) {
\t\t\t$departament = clone $departament;
\t\t}
\t}

Но при проверке оказалось, что клонировался только объект компания, а департаменты так и остались ссылкой на одни объекты, что я не так делаю?
Ответы: >>1247443
Аноним 2018/08/15 19:15:26  №1247443 471
>>1247441

Ты клонировал департамент, но клон никуда не сохранил. В поле осталась ссылка на старый департамент.
Ответы: >>1247448
Аноним 2018/08/15 19:23:33  №1247448 472
>>1247443
Вроде разобрался уже, надо создать новый массив пустой, заполнить его клонами департаментов, а потом присвоить этот массив массиву департаментов. Для работников также.
Аноним 2018/08/15 19:31:08  №1247456 473
ПАЦАН ХОЧЕТ КОДНУТЬ.

Ща пройду ваш учебник, ебну задачи на фреймворке и вкачусь в IT НАХОЙ. Сначала на буду 120 к в мемсяц иметь, а потом амазон открою. Вот так вот.
https://www.youtube.com/watch?v=WemFf9i2JEo
Ответы: >>1247461
Аноним 2018/08/15 19:35:29  №1247461 474
>>1247456
>ебну задачи и вкачусь в IT НАХОЙ
>Сначала на буду 120 к в мемсяц иметь
Не, братан, это не так работает. Сначала тебя жизнь головой об косяк ёбнет. А потом как начнёшь что-то понимать в этой сфере, начнёшь зарабатывать свои первые 500 баксов в месяц.
Ответы: >>1247470 >>1247471
Аноним 2018/08/15 20:06:19  №1247470 475
>>1247461
>А потом как начнёшь что-то понимать в этой сфере
Я уже начал понимать!!! А ты хейтер ебучий!
Аноним 2018/08/15 20:07:32  №1247471 476
>>1247461
анончик, ты вроде уже прошел период зарабатывания 500 баксов в месяц. подскажи, сколько тебе времени понадобилось чтобы на программировании зарабатывать первые деньги?
Аноним 2018/08/15 20:26:23  №1247479 477
>>1232710 (OP)
>Учи HTML/CSS и SQL, PDO, хотя бы основы
По поводу SQL и PDO - это где уроки? Или типа самому читнуть надо? Если самому, посоветуйте материал с расчетом на выполнение более серьезных задач, ну то есть когда учебник прошел.
Ответы: >>1247483
Аноним 2018/08/15 20:36:19  №1247482 478
>>1232710 (OP)
И да, кстати, пофиксите дизайн сайта, он вообще нихуя не респонсив, с ноута, а тем паче мобилы сидеть НЕПРИЯТНО.
Ответы: >>1247502
Аноним 2018/08/15 20:37:53  №1247483 479
Ответы: >>1247795
Аноним 2018/08/15 21:42:04  №1247501 480
Урок про строки. Строка выводится нормально, но когда пытаюсь обратиться к отдельному символу строки получаю ромбик с вопросительным знаком. фиксить?
Ответы: >>1247503 >>1247504
Аноним 2018/08/15 21:43:11  №1247502 481
>>1247482

Ты прав, анончик. У меня уже наверно полгода лежит адаптивная верстка с выезжающим меню, которую я начал делать и даже успел лично протестировать на смартфоне и планшете. Но, увы, все руки не доходят доделать ее и выложить для тестирования анонами.
Аноним 2018/08/15 21:45:51  №1247503 482
Аноним 2018/08/15 21:47:07  №1247504 483
>>1247501
Через mb_substr работает нормально. Но почему по индексу не работает? Мне че каждый раз функцию вызывать? Это ж пиздец! Это точно должно так работать?
Ответы: >>1247588 >>1247595
Аноним 2018/08/15 22:01:17  №1247505 484
Анонче, посоветуй годных уроков по Symfony, желательно 2 версии.
Аноним 2018/08/16 05:19:51  №1247588 485
>>1247504
>по индексу
строка это не массив, а отдельные символы - не значения
Аноним 2018/08/16 05:48:13  №1247595 486
>>1247504
Если у тебя не работает, то ты русские буквы в строку запихал.
Аноним 2018/08/16 11:00:53  №1247704 487
Дошел до регулярок. Такой вопрос по валидации номера телефона:
Для начала валидирую код страны пока что в виде 8 онли + 9 и 2 любых на выбор:
"/89[0-9]{2}/u"
Однако он мне признает валидным номер типа 89117772018.
Як? Я ж укозал 2 повторения!
Ответы: >>1247707 >>1247710
Аноним 2018/08/16 11:08:37  №1247707 488
>>1247704
Все дошло, это типа два И БОЛЕЕ, ну логика.
Аноним 2018/08/16 11:14:50  №1247710 489
>>1247704

Твоя регулярка не проверяет, что строка целиком соответствует выражению. Она лишь ищет, есть ли в в строке такое выражение или нет.
Ответы: >>1247758
Аноним 2018/08/16 12:27:02  №1247749 490
>>1232710 (OP)
Няши привет. Никогда не упарывался по бекенду, но тут срочненько нужно написать подключение к бд и обернуть это http get запросом, чтобы это потом каким-то способом закинуть вообще не понимаю как это делать на простой сервак и дергать данные.

Сам джун и знаком с кодингом и работой с sql. По синтаксису php разберусь в работе, так вот, с какой либой это максимально просто и без напрягов сделать? Расширять вообще не планирую, ну мб еще пост запросы прикрутить и т.д.
Ответы: >>1247753 >>1247795
Аноним 2018/08/16 12:31:07  №1247753 491
Аноним 2018/08/16 12:42:34  №1247758 492
>>1247710
>строка целиком соответствует выражению
А как мне проверить строгое соответствие? Крышечкой вначале и долларом в конце, да?
Аноним 2018/08/16 13:57:47  №1247795 493
Аноним 2018/08/16 14:35:05  №1247821 494
Ответы: >>1247949 >>1250218 >>1256351
Аноним 2018/08/16 17:34:17  №1247949 495
>>1247821
Сколько пилил её? И что до неё выучил?
Ответы: >>1247964
Аноним 2018/08/16 18:11:46  №1247964 496
>>1247949
>Сколько пилил её?
Больше месяца. Это моя 3 попытка довести задачу до конца.
>И что до неё выучил?
Учил много чего. Но учить !== уметь. Я хронический вкатвальщик-прокрастинатор.Уже год учу.
Крч не ровняйся на меня
Аноним 2018/08/16 20:24:51  №1248015 497
Ответы: >>1248067
Аноним 2018/08/17 00:07:00  №1248067 498
>>1248015

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

Если у тебя есть идея, как можно поменять код, чтобы он работал и в составе расширения, и как юзерскрипт, то можешь написать. Я не пользуюсь юзерскриптами и не знаю, как они пишутся.
Аноним 2018/08/17 13:51:32  №1248230 499
Антоша! Не подскажешь что с этой хуйнёй делать? Уже трижды проклял эти ебаные терминальные редакторы.
Ответы: >>1248231
Аноним 2018/08/17 13:52:01  №1248231 500
image.png (188, 1498x742)
742x1498
Аноним 2018/08/17 19:13:40  №1248379 501
Ответы: >>1250223 >>1253604
Аноним 2018/08/17 20:08:51  №1248395 502
Привет, ребята. Кто ещё сегодня использует jQuery или уже deprecated?
Ответы: >>1248416
Аноним 2018/08/17 21:36:45  №1248416 503
>>1248395
Юзают те, кому и так норм. Ты удивишься, но ещё прилично сайтов, особенно в США, где можно встретить такую эзотерику как, например, mootools.
Аноним 2018/08/18 00:54:56  №1248449 504
Сап двач. Что-то у меня в последнее время котелок вообще перестал варить. Я сейчас делаю сайт, где можно проходить тесты. И вот я думаю как пользователю отдавать тест на прохождение и получать его решение. Я думал формой или джсоном присылать решение пользователя в виде [вопрос => ответ, ...], и тут я понял что я без понятия как идентифицировать вопросы. Нормально ли пользователю отправлять вопросы с id из бд, а потом на сервере например по юрл quiz/submit/id смотреть есть ли у этого теста вопрос с айди из массива, и есть ли у вопроса ответ с айди из массива, и если есть то тогда я уже считаю правильные ответы. Еще была мысль просто присылать строку с вопросом и ответом, а потом сравнивать через Collection->map но это как-то тупо или нет? :thinking:
Аноним 2018/08/18 05:18:30  №1248482 505
Привет Котаны, у меня такой вопрос - работаю сисадмином в мухосрани. Год назад увлекся прогингом немного, выучил JS, сейчас криво/косо знаю reactjs/node/express, плюсом я знаю основной синтаксис питона и основы sql, хотел осилить джангу - опять же нет вакансий в моем городе. И так же в моем сранске сейчас нет вакансий по reactjs а свалить я не могу.
А вот по пхп вакансий и правда полно.
Подскажите какой фрэймворк мне использовать, который максимум быстро позволит делать лэндинги, сайты-визитки и простенькие приложения с логикой?
%%опять же я мог бы бы делать это на node/express, но зачем это мухосранскому заказчику?
Ответы: >>1248485 >>1248512
Аноним 2018/08/18 05:29:45  №1248485 506
Ответы: >>1248588
Аноним 2018/08/18 05:32:17  №1248486 507
Еще вопрос - в JS разработке сейчас проповедуется изоморфный подход, SPA (которые на react делаются достаточно просто).
В пхп основной подход - это шаблонизация.
А еще, я как человек который хочет в вэб - чувстую себя однобоко без знания пхп. Может я на нем работать и не буду, но по моему php + js разработчик занть обязан.
Ответы: >>1248496
Аноним 2018/08/18 05:54:55  №1248491 508
И еще вопрос:
Допустим в laravel уже встроен функционал к примеру админской панели? Интрефейсы к бд? Ну и вообще всякие плюшки?
В node все это счастье ищется и впихивается самостоятельно (что в принципе не сложно, но у новичка разбегутся глаза от обилия вариантов).
Аноним 2018/08/18 06:39:57  №1248496 509
>>1248486
>>В пхп основной подход - это шаблонизация.
Не правильно сформулировал
В пхп основной подход - это шаблонизация? Я о среднегородском уровне.
Аноним 2018/08/18 07:27:52  №1248512 510
>>1248482
В мухах популярен Yii2.
Аноним 2018/08/18 07:30:53  №1248514 511
Аноним 2018/08/18 09:18:27  №1248545 512
Привет, тредю. Сильно ли устарела информация курса по пыхе от Борисова за 2016 год? На торренах более новых нема
Ответы: >>1248546 >>1248548
Аноним 2018/08/18 09:20:58  №1248546 513
>>1248545
Нашёл чей «курс» обсуждать итт. Конечно устарел его курс, то что он релизнут в 2016 не говорит о его актуальности.
Ответы: >>1248547
Аноним 2018/08/18 09:22:18  №1248547 514
>>1248546
Я просто вкатывальщик, и совсем не знаю, какие курсы хорошие, а какие плохие. Можешь ли посоветовать хорошие курсы, анон?
Ответы: >>1248549 >>1248550
Аноним 2018/08/18 09:25:03  №1248548 515
>>1248545
Курс профит. В чате треда, человек посмотревший оба курса, говорит что этот на порядок круче.
Аноним 2018/08/18 09:29:01  №1248549 516
Аноним 2018/08/18 09:30:16  №1248550 517
>>1248547
> Можешь ли посоветовать хорошие курсы, анон?

ШАПКУ ТРЕДА НЕ ЧИТАЙ
@
ВОПРОСЫ ЗАДАВАЙ


Для таких как ты @нон писал шапку, старался, а ты - мудло ленивое, даже не в состоянии шапку осилить.
Ответы: >>1248551
Аноним 2018/08/18 09:31:41  №1248551 518
>>1248550
нет-нет, я прочитал всю шапку и даже весь учебник милейшего человека - ОПа, но может я в глаза ебусь, но инфы по поводу курсов я там не вижу.
Ответы: >>1248552
Аноним 2018/08/18 09:36:46  №1248552 519
>>1248551
В учебнике опа для новичка как раз все что нужно. Дальше тебе нербходимо определиться - либо ты испольщуешь фреймворки, либо сам разрабатываешь фреймворки, лучше первый вариант для начала выбери, со временем, возможно, но маловероятно, дойдешь до второго варианта.
Ответы: >>1248555
Аноним 2018/08/18 09:41:25  №1248555 520
>>1248552
Хорошо, спасибо, анон!!
Аноним 2018/08/18 10:06:05  №1248559 521
image.png (57, 200x200)
200x200
Ответы: >>1248567
Аноним 2018/08/18 10:26:08  №1248567 522
>>1248559
Чем ярче и пестрее креативят зазывая на работу — там тотальная пизда. Если есть время на такой пиздец, значит работы будет очень много, а платить за неё будут очень мало. Овердохуя дружелюбия, все такие без пафоса.

Я рабоал в похожих местах и это пизда просто.
Аноним 2018/08/18 11:34:46  №1248582 523
image.png (80, 1075x718)
718x1075
Опчик. Чому не работает? Вроде, всё правильно сделал.
Ответы: >>1248586
Аноним 2018/08/18 11:43:37  №1248586 524
>>1248582
Ты строку в кавычки закрой, а не переменную.
Ответы: >>1248590 >>1248598
Аноним 2018/08/18 11:44:34  №1248588 525
>>1248485

кохана разве не всё?
Аноним 2018/08/18 11:48:40  №1248590 526
>>1248586
Какую часть? Это вроде специальная строка.
Ответы: >>1248594
Аноним 2018/08/18 11:50:50  №1248594 527
>>1248590
c первого по последний DIO_BRANDO
Ответы: >>1248595 >>1248598
Аноним 2018/08/18 11:52:06  №1248595 528
image.png (69, 1070x792)
792x1070
Ответы: >>1248596 >>1248598
Аноним 2018/08/18 11:55:05  №1248596 529
>>1248595
Слушай, у тебя тоже в браузере на убунту кривые шрифты?
Ответы: >>1248597 >>1249440
Аноним 2018/08/18 11:55:41  №1248597 530
>>1248596
Что значит "кривые"?
Ответы: >>1248602 >>1249440
Аноним 2018/08/18 11:55:53  №1248598 531
Ответы: >>1248600
Аноним 2018/08/18 11:59:51  №1248600 532
>>1248598
Нашёл. Проблема в отступах, которые я ставил.
Аноним 2018/08/18 12:00:12  №1248602 533
>>1248597
Неровные, отличающиеся от виндусовских.
Ответы: >>1248609
Аноним 2018/08/18 12:08:52  №1248609 534
image.png (91, 795x665)
665x795
>>1248602
Ну хуй знает. Вроде по-дефолту OpenSans.
Аноним 2018/08/18 19:27:10  №1248866 535
image.png (159, 1919x1022)
1022x1919
Ошибка, информирующая о том, что переменной нет, не выводится. Чо делать?
Ответы: >>1248910 >>1248911 >>1249439
Аноним 2018/08/18 20:36:19  №1248910 536
>>1248866
у меня например так работает:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

из документации
Note: Don't use php_value to set boolean values. php_flag (see below) should be used instead.
Может так попробовать?
Ответы: >>1248913
Аноним 2018/08/18 20:36:20  №1248911 537
>>1248866
У тебя нет ошибки. Поэтому нихуя и не выводится. Можешь посмотреть выхлоп в рнр консоле.
Ответы: >>1248912 >>1248915
Аноним 2018/08/18 20:37:37  №1248912 538
>>1248911
Всмысле блять нет? А где $user объявляется? PHP хоть и не строго типизированный, но объявить-то переменную нужно, а тут она не объявлена.
Аноним 2018/08/18 20:38:05  №1248913 539
>>1248910
Я и в php.ini эти настроечки на вывод сменил, но чот нифига.
Аноним 2018/08/18 20:39:12  №1248915 540
image.png (66, 1049x659)
659x1049
>>1248911
Тут тоже ошибки нет?
Ответы: >>1248917 >>1248918
Аноним 2018/08/18 20:45:58  №1248917 541
>>1248915
Есть тут ошибка, хуя ты напердолил, довен
Аноним 2018/08/18 20:48:44  №1248918 542
image.png (13, 937x126)
126x937
image.png (1, 127x41)
41x127
image.png (55, 1292x500)
500x1292
image.png (0, 67x33)
33x67
>>1248915
Ну, xdebug ругается, например.
Ответы: >>1248931
Аноним 2018/08/18 20:52:49  №1248922 543
image.png (2, 156x70)
70x156
При чём, без пердолинга.
массивы это так, мусор завалявшийся
Аноним 2018/08/18 20:57:58  №1248931 544
>>1248918
У меня не OS а Nginx c PHP-FPM.
Ответы: >>1248933
Аноним 2018/08/18 20:59:16  №1248933 545
>>1248931
Да какая разница. xdebug поставь.
Ответы: >>1248936 >>1248944
Аноним 2018/08/18 21:00:42  №1248936 546
Аноним 2018/08/18 21:08:38  №1248944 547
image.png (90, 1827x532)
532x1827
>>1248933
Заебись, завелось вроде.
Аноним 2018/08/19 08:10:56  №1249049 548
Можете привести пример нагружающего SQL запроса в пустую БД, который ничего не добавляя гарантированно подвесит на пару секунд? Что-то вроде "SELECT 10^32 * 10^32 as bignumber". Нужно для тестов.
Ответы: >>1249439
Аноним 2018/08/19 08:37:38  №1249060 549
Ребятушки мои родненькие, любименькие, посоветуйте пожалуйста, умоляю вас, что-нить по SQL, чтобы прям набить руку хорошо на них.
Ответы: >>1249439
Аноним 2018/08/19 10:45:46  №1249115 550
фуууууух сделал задание цифры прописью, вроде работает, проверьте плиз и скажите какой я долбаеб и как криво всё написано, мне как раз таки и нужны советы по тому, как сократить эти гребаные функции, особенно smallNumberToText, может лайфхацками какими-нибудь научите, воооот https://ideone.com/fcrQWX#stdin сэнкс
Ответы: >>1249437
Аноним 2018/08/19 14:41:20  №1249226 551
В треде анон, который ин зис вери момент самообучается по шведской демоверсии курса ProfIT PHP-1. В планах эту часть и следующую, если почувствую силы, буду проходить курс OTUS. Сейчас он для меня показался слишком сложным. Первое ДЗ там - балансировка строки заномастных скобок, а второе - создание API.

Если есть желающие позаниматься вместе, проверить домашку, обсудить какие-то вещи типа вката на позицию июня - рад вас видеть, пилите свою тележку.
Ответы: >>1249228 >>1249436
Аноним 2018/08/19 14:43:38  №1249228 552
>>1249226
Ах, да. Если есть анон с навыком дизайна и верстки, пусть даже особо не чухающий в PHP, но который хочет этому научиться параллельно запиливаю какой-нибудь проектик на ОБЩЕСТВЕННЫХ НАЧАЛАХ (с прицелом на озвездение своего гитхаба) - вообще заебись.
Аноним 2018/08/19 17:48:55  №1249334 553
websql.JPG (111, 708x882)
882x708
>>1246346
Итак! Код этого мастера >>1246359 с гитхаба мне не понравился.

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

Promise и async/await - checked!
Ответы: >>1249436
Аноним 2018/08/19 20:06:55  №1249436 554
>>1249226

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

- добавить значение в конец списка
- снять значение из конца списка

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

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

>>1249334

А мне не очень нравится твой код. Вот, что не так:

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

try {
something();
}

В такой ситуации try не нужен:

try {
...thow new Error()...
}

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

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

a = await something();
b = await something_else(a);

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

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

И еще. Если ты будешь использовать отступы по 4 пробела, а не 2, то проблемы со слишком большой вложенностью кода будут гораздо заметнее. Мне не нравится идея использовать 2 пробела, так как она используется, чтобы не замечать излишнюю вложенность.
Ответы: >>1249470
Аноним 2018/08/19 20:07:34  №1249437 555
>>1249115

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

Функцию inclineWord стоит переписать на работу с числами.

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

То же касается и smallNumberToText - оттуда нужна убрать гору preg_match.

Разбить число на миллионы/тысячи/единицы можно делением.

Проблема работы со строками, например в том, что PHP может представить большое число в виде 1e20 и все твои алгоритмы начнут давать ошибки. Ну а также, в более общем случае, числа могут быть отрицательными или дробными.

Код там можно записать так:

- если в числе есть сотни, добавляем слово для сотен
- если число заканчивается на 11-19, добавляем слово для них
- иначе, добавляем десятки и единицы

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

Вместо этой длинной команды:

$total2 = smallNumberToText($imploded3, null) .' '. inclineWord($imploded3, ' миллион', ' миллиона', ' миллионов') .' '. smallNumberToText($imploded2, $isFemale) .' '. inclineWord($imploded2, ' тысяча', ' тысячи', ' тысяч') .' '. smallNumberToText($imploded1, null) .' '. inclineWord($number, ' рубль', ' рубля', ' рублей')." ($number)";

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

Сейчас в коде трудно разобраться и трудно проверить правильность. Сидеть разбирать его построчно и проверять все возможные ситуации слишком долго. Код нужно упростить.
Ответы: >>1249939
Аноним 2018/08/19 20:07:55  №1249439 556
>>1249049

В MySQL есть функция BENCHMARK, но надо понимать, что MySQL многопоточная и повесить ты можешь в лучшем случае одно ядро процессора, в то время как другие потоки будут работать. Лучший способ "подвесить" базу данных - имея права администратора, послать процессам mysql сигнал SIGSTOP, который остановит их выполнение, а через несколько секунд - SIGCONT, который их разморозит.

Также, можно попробовать заджойнить несколько больших таблиц: SELECT .. FROM a, b, c LIMIT 1000000, 1 - хотя там MySQL может немного соптимизировать запрос.

>>1249060

А ты задачи по SQL из ОП-поста уже все решил? Вот еще задача тогда. Есть таблица со списком прихода и расхода товара на склад, в которой 3 колонки: время, id товара и изменение его количества. Например:

2018-01-01 12:00:01 | 101 | 3
2018-01-01 12:00:02 | 101 | -2
2018-01-01 12:00:03 | 102 | 1
2018-01-01 12:00:04 | 102 | -2

Это значит, что на склад пришло 3 единицы товара 101, затем было забрано 2 единицы, затем пришла 1 единица товара 102 итд.

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

>>1248866

Вижу, что уже ответили, но я напишу объяснение, чтобы было понятно.

У тебя для PHP стоят настройки для продакшена, а не для разработки (dev). То есть ошибки пишутся в лог где-то в /var/log/... но не выводятся на экран. Это неудобно для разработки.

Настройки меняются в файле php.ini где-то в /etc/php/... (в линуксе все общесистемные настройки хранятся в /etc) - нужны права администратора для редактирования. После смены настроек надо перезапустить php-fpm или apache, в зависимости от того, что используется:

service php-fpm restart

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

Сразу советую почитать про управление сервисами в systemd (команды вроде service xxx start/stop/restart, команда systemctl) - это пригодится. Я набрал "ubuntu systemd управление сервисами" - и выдало кучу ссылок на русском. Сервисы, кстати, - это программы, работающие в фоновом режиме, которые могут запускаться при загрузке ОС или по какому-то событию.

Также, для разработки тебе может быть удобнее использовать встроенный в PHP веб-сервер. Его плюс в том, что не надо настраивать nginx - просто переходишь в папку с проектом и запускаешь одной командой: https://github.com/codedokode/pasta/blob/master/soft/web-server.md
Ответы: >>1249522
Аноним 2018/08/19 20:08:28  №1249440 557
>>1248596
>>1248597

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

Пиксель может гореть только целиком. Потому, если например буква при рендеринге закрывает пиксель частично, то он в итоге загорается серым цветом, яркость пропорциональна площади попавшего в пиксель куска буквы (это называется анти-алиасинг, алиасинг - это эффект появления "ступенек" и "зубцов", которые видны на букве, состоящей только из белых и черных точек). Если например у нас есть буква I, и ее ширина равна допустим 1,5 пикселя, то она займет 2 вертикальных колонки пикселей, просто в правой колонке пиксели будут гореть вполсилы.

На экранах с крупными пикселями это (лишняя закрашенная область) может выглядеть как серые или белые пятна на буквах (грязь вокруг букв). Если у монитора неправильно настроена гамма (то есть он неточно передает оттенки серого, делая их темнее или светлее, чем нужно), эти пятна становятся более заметны. Без антиалиасинга будет еще хуже, у букв будут "заусенцы". Особенно они портят буквы с засечками вроде Times New Roman. Хотя это дело вкуса.

В Windows для решения этой проблемы сделали две вещи:

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

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

Плюс в том, что мелкий стандартный шрифт выглядит более четким.

На Mac, насколько я знаю, хинтинг не используется и буквы выглядят "как в линуксе".

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

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

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

- https://www.freetype.org/autohinting/hinter.html
- https://www.freetype.org/freetype2/docs/subpixel-hinting.html (здесь много подробностей)
- https://www.freetype.org/freetype2/docs/text-rendering-general.html

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

То есть, в линуксе можно поиграться с настройками freetype и настроить хинтинг и антиалиасинг индивидуально. Также, честно предупрежу, придется еще немного помучаться, чтобы программы на разных движках (Qt, GTK, Java, отдельные программы вроде Chromium) "увидели" эти настройки.

Замечу, что это все теряет актуальность на экранах с высокой плотностью пикселей и точной передачей оттенков серого. У меня, например, на смартфоне с IPS матрицей, мелкие буквы выглядят очень гладко, почти как напечатанные на бумаге, а пиксели с расстояния не видны, если поставить рядом экран смартфона и ноутбука, чувствуется, что они из разных поколений. При этом андроид использует ту же самую библиотеку freetype.
Аноним 2018/08/19 21:05:17  №1249470 558
>>1249436
Эмм. Ну это javascript же!

>try/catch в том же месте, где выбрасывается исключение. Это не имеет никакого смысла. try/catch предназначен для ловли исключения при вызове какой-то функции
не очень понял, что ты имеешь в виду. to.execute(); это и есть функция. transaction(); это тоже функция.

>идея пропускать не сработавшие запросы
тут я просто перенес идеологию из спецификации:

If the error callback returns false, then move on to the next statement, if any, or onto the next overall step otherwise.

Otherwise, the error callback did not return false, or there was no error callback. Jump to the last step in the overall steps.

Все фатальные ошибки ловятся в catch.

>ты смешиваешь await и коллбеки, говорящие о готовности (в вызове transaction)
>a = await something();
>b = await something_else(a);
Но на скриншоте все именно так! Я не понимаю...

>непонятно, зачем ты обернул весь код в анонимную функцию и сразу же вызвал ее.
await работает только внутри async-функции. А анонимная она тут просто для примера (это кусок тестового кода). В реальном коде это будет async-метод класса, с аргументами.

>отступы по 4 пробела
Уже привык к 2, потому что везде так пишут. Как в PHP везде 4, тоже привык.

Чет я разочарован немного.
Ответы: >>1250183
Аноним 2018/08/20 04:02:45  №1249518 559
Аноним 2018/08/20 04:33:20  №1249522 560
>>1249439
>2018-01-01 12:00:01 | 101 | 3
>2018-01-01 12:00:02 | 101 | -2
>2018-01-01 12:00:03 | 102 | 1
>2018-01-01 12:00:04 | 102 | -2
Если взять поля как date,id_product,count
То я бы написал типа такого
select id_product,sum(count) as sum from my_table order by id_product;
Ответы: >>1249560
Аноним 2018/08/20 07:24:08  №1249560 561
>>1249522

>select id_product,sum(count) as sum from my_table order by id_product;
group by конечно же
Ответы: >>1250182
Аноним 2018/08/20 15:19:00  №1249789 562
Кто-то шарит симфони? Можно как-то инструментами фреймворка этот велосипед переделать?
Ответы: >>1249821 >>1250181
Аноним 2018/08/20 16:16:06  №1249815 563
neponyatno.png (32, 587x325)
325x587
>>1232710 (OP)
В задаче на изображении, подразумевается доработка кода теста, из самого начала раздела ООП?

https://ideone.com/U4MsQ0
Ответы: >>1250181
Аноним 2018/08/20 16:23:36  №1249821 564
Аноним 2018/08/20 18:20:48  №1249875 565
>>1249821
Там функция в цикле вызывается чтоле? Говнокод, как по мне.

мимокрок
Ответы: >>1249926
Аноним 2018/08/20 18:49:45  №1249882 566
Как правильно сделать бесконечно работающий скрипт? Чтобы каждые mt_rand(?) минут выполнялся, например? Сделать цикл while, паузу sleep и выполнить nohup php /path/to/file.php & в терминале - нормальный вариант?
Ответы: >>1249949 >>1250086
Аноним 2018/08/20 20:02:44  №1249926 567
>>1249875
Не, тут вообще ебанина какая-то. Он начинает цикл (1 строка), его не заканчивает, оставив открытой фигурную скобку, но PHP-вставку закрывает. Дальше выводит собственно элемент массива, который перебирает, ставит hr (уже в html, тэг php закрыт) и открывает php для того, чтобы поставить ту самую закрывающую фигурную скобку.

Отсюда вопрос, нахуя так делать, если можно просто внутри цикла:
echo $record . '<hr>';
Ответы: >>1249951
Аноним 2018/08/20 20:15:24  №1249933 568
Ответы: >>1249935 >>1249937
Аноним 2018/08/20 20:16:02  №1249935 569
Аноним 2018/08/20 20:17:21  №1249937 570
>>1249933

А ты дальше не читал?
> Предлагаемые технологии: фреймворк (Symfony 3-4 (сложнее, но интереснее), Yii2, Laravel), MySQL или Postgres, шаблонизатор Twig, ORM Doctrine
Ответы: >>1249938
Аноним 2018/08/20 20:18:21  №1249938 571
>>1249937
Спасибо, что есть такие как ты читающие за менячмок в писю
Аноним 2018/08/20 20:19:38  №1249939 572
>>1249437
большое спасибо за советы! вот https://ideone.com/BNdQnj , переделал код, вроде меньше строк и более понятно получилось. Заранее скажу, что все те хитрые номера по типу 0, 1, 7000000 и т.д. работают у меня правильно, вопрос стоит опять же в правильности написания самого кода
Ответы: >>1250180
Аноним 2018/08/20 20:37:03  №1249949 573
>>1249882
Это, как мне кажется, на JS легче реализовать.
Или тебе именно на бэке надо?
Ответы: >>1249955 >>1250180
Аноним 2018/08/20 20:40:56  №1249951 574
>>1249926
Ну там выпендрёж просто - школяр какой балуется. Такие вещи в самом начале проходят - конпелятор тутошний. Понятно, что код нечитаем чуть более чем.
Аноним 2018/08/20 20:54:04  №1249955 575
>>1249949
Думаю во время пользования пекой включать скрипт и пусть себе делает дело, даже хостинг не нужен. И я пока только php учу, так бы, наверное, питон использовал. Парсер пишу.
Ответы: >>1249961 >>1250180
Аноним 2018/08/20 21:06:36  №1249961 576
>>1249955
А что от скрипта хочешь вообще?

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

>так бы, наверное, питон использовал
Питон интересно, да.
Аноним 2018/08/20 21:07:11  №1249962 577
Ответы: >>1249979
Аноним 2018/08/20 22:26:20  №1249979 578
>>1249962
Мощно! Хорошие комменты. Кто тут следит за ОП постом, доставьте в ФАК. Что-то типа как делать гостевуху.
Ответы: >>1250180
Аноним 2018/08/20 23:44:17  №1250008 579
>>1249821
>Тестовое Fora Soft'а, да ? :)

хз что это, я тестхаб от опа делаю, пытаюсь пройденные тесты засабмитить.

По твоему коду скажу что это всё вообще насрать, я на фрилансе видел в шаблонах код как у тебя и в коде альтернативный if/foreach etc через : и endforeach, когда один скрипт в 20 строк кода проходит несколько итераций от разных "разрабов", то он превращается вообще в кiсмос. Хотя есть такая тема что твоя сущность по геттеру отдает ридонли массив и mah oop, но я сейчас бухой и мне кажется что это дрочево полное, т. к. симфони формы для работы из коробки заствляют делать геттеры и сеттеры на все поля твоей сущности, поэтому это сразу мимо ddd, чуваки на