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



<<
Назад | Вниз | Обновить тред | Автообновление
1103 | 118 | 376

Клуб изучающих PHP #103 /php/ Аноним 22/07/18 Вск 07:57:28  1232710  
php-noob-1.png (33Кб, 500x500)
cat-cafe-osaka.jpg (157Кб, 1024x683)
cat-sad.jpg (194Кб, 1024x768)
himouto-umaru-c[...].jpg (99Кб, 1200x674)
Добро пожаловать в клуб востребованных и незаменимых людей. Тут мы изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
Аноним 22/07/18 Вск 07:59:41  1232711
just-google-it.jpg (156Кб, 787x830)
grammar-nazi.png (56Кб, 500x644)
В прошлом треде >>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
Аноним 22/07/18 Вск 15:31:26  1232886
Где по логике MVC должны хранится скрипты? Если писать их прямо во вьюшке меня будут бить? Обязательно ли передавать во вьюшку модель формы? Как ко мне будут относится, если я передам модель объекта из БД?
Аноним 22/07/18 Вск 15:42:51  1232901
>>1232710 (OP)
А телега у вас есть? Мимо junior-middle php
Аноним 22/07/18 Вск 16:23:10  1232944
>>1232886
Как к пхпшнику.
Аноним 22/07/18 Вск 16:36:25  1232967
>>1232886
зачем тебе это? Какая цель?
Аноним 22/07/18 Вск 19:49:37  1233122
>>1232699
Спасибо за ответ ОП. Очень прошу тебя прочетсь пост целиком:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Руби-хайп закончился, и с него давно все уже перекатываются, кто куда, а го - это вообще несерьёзно.
Аноним 23/07/18 Пнд 21:09:18  1233728
>>1233721
>го - это вообще несерьёзно
поясни. Я тож скептически отношусь ибо похож на хайповую неустоявшуюся хуиту, но почитал о нем немного и судя по описаниям прям сказка и прям все из коробки есть и фреймворки ненужны и либы и пр.
Аноним 23/07/18 Пнд 21:59:55  1233765
6-3-Kalom1.jpg (240Кб, 768x576)
>>1232901
Лично у меня есть желание общаться. Оставь что-то для связи с тобой.
>>1233688
Javascript/Java
Аноним 23/07/18 Пнд 22:05:18  1233767
162043-gothic-w[...].jpg (271Кб, 1280x1024)
>>1233688
1. Каких ботов?
2. Дай код хоть одного.
3. Сколько зарабатываешь?
Аноним 23/07/18 Пнд 22:24:57  1233779
>>1233765
>Javascript
это табу
Аноним 23/07/18 Пнд 22:26:03  1233781
>>1233767
нахуя тебе это?
Аноним 23/07/18 Пнд 22:39:37  1233789
>>1233781
Посмотрю на реализацию
Laravel Аноним 23/07/18 Пнд 23:24:05  1233842
image.png (203Кб, 1057x729)
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

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

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

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

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

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

https://github.com/NotBadCode/TheKnowledgeBase
Аноним 24/07/18 Втр 09:38:12  1234002
>>1233688
>На что съебаться с PHP?
Зачем?

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

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

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

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

WinCC и прочие.

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

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

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

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

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

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

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

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

Мне кажется, у тебя какая-то жуткая каша в голове и ты сам не совсем понимаешь о чем говоришь.
Тебе стоит более подробно изучить рынок и технологии, а потому уже говорить о востребованности и происходящим.
Аноним 24/07/18 Втр 10:48:34  1234039
>>1234032

Учи Laravel.
Аноним 24/07/18 Втр 10:50:15  1234040
>>1234039
Прежде чем к фреймворку приступать, надо хотя бы на уровне джуна PHP знать, разве нет?
Аноним 24/07/18 Втр 10:50:47  1234041
>>1234034
>Тебе стоит более подробно изучить рынок и технологии, а потому уже говорить о востребованности и происходящим.

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

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

join chat/ Eh8Gzg94NT7LDHFpw4iZ7g
Аноним 24/07/18 Втр 17:59:56  1234249
>>1234248
https://т . ме не забываем добавлять передо джоин чат, и пробелы убираем.
Аноним 24/07/18 Втр 18:13:51  1234253
>>1234217
>>1234219
Cпасибо, большое
Аноним 24/07/18 Втр 18:36:40  1234261
cat.jpg (136Кб, 960x1280)
>>1234248
>>1234249
Обновленная ссылка на неофициальный чат треда, милости прошу к нашему шалашу!
https://t-do.ru/joinchat/Eh8Gzg94NT7LDHFpw4iZ7g
Аноним 24/07/18 Втр 19:15:04  1234267
>>1234002
>Если ты хочешь уйти из веба
ноуп

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

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

При этом хотелось бы, чтобы возможность написать сайт тоже была. Я так понял - питон идеальный вариант
Аноним 25/07/18 Срд 20:48:32  1234904
Кто-нибудь учит по курса ProfIT ? если да, давайте скооперируемся для разбора домашки. Мимодебилкоторыйсамнеможет
Аноним 26/07/18 Чтв 00:08:34  1235075
>>1233688
го как кор язык не кому нужен не будет , алсо большие проекты на го будут не поддерживаемые ввиду его не полного ООП , как доп язык норм , по серьёзнее кровавый терпрайз C# Java тд
Аноним 26/07/18 Чтв 00:11:04  1235076
>>1233953
раннюю не стабильные версии раздавали , но тоже с триалом
Аноним 26/07/18 Чтв 03:32:02  1235138
Поясните за современные cms/фреймворки? Последние 5 лет выпал из темы, ебал вола в одной конторе и пилил продукт на некроговне (yii)
К говноедству высокая терпимость. К какой платформе присмотреться, чтоб побольше денег и ближайшие 5-6 лет не остаться без работы? Magento/woo/laravel/symfony/codeigniter/zf2? Кто может пояснить?
Рынок не СНГ есличо
Аноним 26/07/18 Чтв 08:56:26  1235186
Друзья, есть ли у вас годные уроки по созданию корзины магазинов?
Аноним 26/07/18 Чтв 12:49:07  1235305
Как же я ненавижу битрикс блядь. Какое это говно. Раньше я просто ненавидел все ЦМСки, но сейчас понял, что у них есть неоспоримый говнолидер
Аноним 26/07/18 Чтв 23:33:37  1235889
gothic 2018-07-[...].jpg (171Кб, 1600x1024)
Снимок.PNG (11Кб, 436x241)
Снимок2.PNG (6Кб, 320x145)
Призываю в тред гуру для ответа и новичков для просмотра. Эта конкретная задача которую вам по любому придется выполнять.
Задача: 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
Минус тоже в том что не во всех серверах буфер будет включен.
Аноним 26/07/18 Чтв 23:39:02  1235891
>>1235889
Так а что за задача? Тебе нужно с каждого нового запроса новый фал создавать или дописывать в один?
Аноним 26/07/18 Чтв 23:57:48  1235899
>>1235891
Задача НЕ дописывать в файл (файл тут для удобства, тоже самое происходить при добавлении в БД) пр обновлении страницы.
Мне показали пример ссессий и метки но я нихуйя пока не могу понять. Когда и как ставить.
Аноним 27/07/18 Птн 05:56:20  1235958
15256339482151.jpg (32Кб, 512x512)
Ой, как у меня бомбит.
Вот сделали в похапе удобные классы для работы с датой, ай как хорошо.
Сколько будет 31 января плюс 1 месяц? ТРЕТЬЕ МАРТА, СУКА, ТРЕТЬЕ МАРТА, ААААААААААААААААААААААААААААААААААААААААААААААААА
Это говно просто увеличивает месяц на единицу, и если дней че-т многовато, увеличивает месяц еще на единицу и щедро ссыпает остаток туда. Сука!

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

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

Покажи, как ты из складывал.
Аноним 27/07/18 Птн 08:50:22  1235993
>>1235973
Да пожалуйста.
https://ideone.com/9NBmfs
Аноним 27/07/18 Птн 08:50:52  1235994
>>1235992 -> >>1235993
Аноним 27/07/18 Птн 09:04:54  1235997
>>1235993
Пруфы твоим выдумкам будут?
Аноним 27/07/18 Птн 09:09:56  1235999
image.png (35Кб, 500x586)
>>1235997
Ты меня тралируешь?
>>> https://ideone.com/9NBmfs <<<
Аноним 27/07/18 Птн 09:10:10  1236000
>>1235138
магазинчики пилят в основном на Magento
остальной булшит на WP Drupal(ибо он нынче CMF)

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

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

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

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

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

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

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

Не надо искать сложные решения там, где есть простые.
Аноним 27/07/18 Птн 10:33:27  1236036
>>1235958

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

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

$start->add(...P1M)->sub(...P1D);
Аноним 27/07/18 Птн 10:44:56  1236038
>>1236036
>а сколько например должно давать 30 января + 1 месяц?
28 или 29 февраля, олигофрен.
>этот давно запощенный говнокостыль
Оно еще и с замедленным развитием.
Аноним 27/07/18 Птн 11:02:54  1236044
>>1236036
http://jsfiddle.net/rLjQx/96508
Вот как жээсеры решили, смотрится логично, даже с учётом високосного года.

https://github.com/moment/moment/issues/854
И к этому пришли намеренно.
Аноним 27/07/18 Птн 11:11:25  1236046
>>1236044
>жээсеры
Репорт.
Аноним 27/07/18 Птн 11:19:37  1236050
>>1236044

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

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

Если вам не нравится PHP, просто не используйте его и проходите мимо. Алсо, https://habr.com/post/315152/
Аноним 27/07/18 Птн 13:47:04  1236164
>>1236160
На коленях умоляй, олигофрен по кличке ОП.
Аноним 27/07/18 Птн 15:16:48  1236249
>>1236102
Спс, буду иметь в виду.
Аноним 27/07/18 Птн 20:16:15  1236478
gothic7.jpg (103Кб, 1024x768)
>>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. Можешь исправить мой код так как ты его видишь?
Аноним 27/07/18 Птн 20:51:35  1236495
>>1236478
В гугле, например.
https://stackoverflow.com/questions/4142809/simple-post-redirect-get-code-example
Аноним 27/07/18 Птн 22:23:00  1236551
>>1236478

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

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

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

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

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

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

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

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

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

<?php

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

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

Аноним 27/07/18 Птн 22:32:47  1236553
>>1236551
Благодарю. Прости я не читал твоих уроков. По книге как-бы ебашу.
Аноним 27/07/18 Птн 22:49:46  1236557
>>1236160
Пасиба за ссыль!
Аноним 27/07/18 Птн 23:37:51  1236566
>>1232710 (OP)
только начал писать на пхп, иде phpStorm, когда клацаю на значок гугола кидает на сайт, на котором написано 502 bad gateway.
как проверять работоспособность программы?
Аноним 28/07/18 Суб 00:46:24  1236583
>>1236566
держу в курсе: разобрался и пофиксил, не тратьте время зря, если хотели.
Аноним 28/07/18 Суб 12:58:49  1236708
>>1232710 (OP)
хочу изучать php по книжкам, но до сих многие вроде как годные книжки даже на английском под пятую версию. насколько большая разница между 5 и 7 с точки зрения синтаксиса? какие-нибудь базовые вещи одинаковы? потому что в питоне между 2 и 3 разница прямо в базовых структурах есть разница.
Аноним 28/07/18 Суб 13:32:33  1236724
Зачем нужны интерфейсы, если есть абстрактные классы?
Аноним 28/07/18 Суб 13:44:25  1236732
>>1236724
А нахуй нужны и интерфейсы и абстрактные классы, если есть просто классы?
Аноним 28/07/18 Суб 14:03:32  1236735
>>1236724

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

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

От души братишка
Аноним 28/07/18 Суб 16:55:16  1236820
>>1236814
https://stackoverflow.com/questions/5001101/difference-between-selector0-selector-eqindex-in-jquery
Аноним 28/07/18 Суб 17:47:10  1236837
В js ноль, но мне срочно нужно прикрутить скрипт. И я не могу понять что я делаю не так. Сейчас скину исходники и попытаюсь описать проблему.
Есть страница с формой. https://ideone.com/BA8klI
Есть скрипт отправки: https://ideone.com/XV6tAU
Есть PHP для обработки отправленных данных будет много допиливаться, это пока тест просто: https://ideone.com/EMpowl

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


Аноним 28/07/18 Суб 18:50:41  1236863
Можно ли сделать так, чтобы по нажатию html кнопки шел скрипт php? Или в php есть какая-то своя кнопка?
Допустим, в туторе ОПа есть бросок кубиков, и я хочу сделать так, чтобы кубики бросались только после нажатия кнопки.
Аноним 28/07/18 Суб 18:53:13  1236865
>>1236863
Конечно. Пили форму, по которой будет отправляться какое-нибудь значение. Если кнопка нажата, значение существует, выполняем скрипт.
Аноним 28/07/18 Суб 19:46:37  1236882
>>1236837
Вот так это выглядит визуально. Если написать вместо ($('#divResults').html(data)); alert(data), то весь код страницы выдаёт в алерте. Не понимаю, как мой php скрипт может выдавать весь код. Если что, я совсем ньюфаг, только учусь, так что, не бейте за очевидные вопросы, тупые ошибки и быдлокод.
Аноним 28/07/18 Суб 19:47:17  1236884
2018-07-2819-43[...].png (24Кб, 764x553)
>>1236882
Отклеилось
Аноним 28/07/18 Суб 20:01:11  1236889
>>1236837
>>1236882
>>1236884
Всё, отбой. ПРОСТО дописал в начале адреса до php-скрипта http:// и всё заработало. Весь день голову ломал, блэд.
Аноним 28/07/18 Суб 21:30:21  1236937
https://ideone.com/iOSQ4K
подскажите, пожалуйста.
в общем, в форму можно ввести сумму денег, но как сделать так, чтобы эта сумма вычиталась из нынешнего баланса, а затем умножалась или удалялась навсегда в случае победы/поражения?
Аноним 28/07/18 Суб 21:53:12  1236952
>>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
Аноним 28/07/18 Суб 21:55:36  1236954
>>1236952
Да, забыл дописать в <button> нужен value="". Неважно что будет в значении, потому что если ты будешь использовать isset, как в моём примере, то тебе важен только сам факт наличия этой переменной.
Аноним 28/07/18 Суб 22:01:20  1236957
>>1236954
огромное спасибо, анон! сейчас буду разбираться, просто это мой второй день знакомства с пхп, нихуя не знаю...
Аноним 29/07/18 Вск 00:06:48  1237037
Хочет кто вместе с другим аутистом попробовать накалякать простой говнодвижок имиджборды?
Аноним 29/07/18 Вск 00:08:58  1237038
>>1237037
А почему бы и нет, это была бы хорошая практика для тех, кто учится меня, например
Аноним 29/07/18 Вск 00:13:00  1237039
>>1237037
Гоу, только я в ООП пока не могу.
Аноним 29/07/18 Вск 00:13:57  1237040
>>1237038
Только я не на фреймворке планирую это делать, если что.
Как с тобой связаться можно? Лучше фэйкомыльце.
Аноним 29/07/18 Вск 00:15:51  1237041
>>1237039
Похоже, что нужна какая-нибудь конфочка для кооперации.
Аноним 29/07/18 Вск 00:16:46  1237042
>>1237040
И я не могу.
>>1237039
Зайди в конфу в телеге (>>1234261
), напиши там, что ты по поводу движка, я тебе отпишу.
Аноним 29/07/18 Вск 00:26:34  1237046
>>1237042
Блин, регаться надо, еще и телефон просит. SOOOOQAAA, 21 век.
Аноним 29/07/18 Вск 00:37:47  1237055
>>1237046
Это такая ерунда, по сравнению с разработкой движка.
Аноним 29/07/18 Вск 05:40:31  1237092
>>1236000
Бро, как-то не очень сходится
Вакансий на ларавель и проектов на апворке в разы больше, чем на симфони, и уж тем более yii
У laravel тоже есть команд лайн тул, который умеет все то же, что и gli, и даже больше
Про магенто тоже мимо, вторая версия судя по форумам магенто это фейл, на первой делать уже не так хотят, в итоге магента сдаёт позиции
В целом твой ответ актуален для 2015 года примерно, тогда так и было, ларавель без работы, yii/symfony/magento в тренде
Аноним 29/07/18 Вск 13:36:55  1237206
>>1237092
я больше сужу про офлайн работу , ссылки на его gii от лары можно ? последний раз чекал было всё было не очень , проверю.
Аноним 29/07/18 Вск 14:28:48  1237231
Подскажите пожалуйста, сделал типа todo/faq на php, и решил перенести его с локального сервера на бесплатный хостинг, перекинул бд и файлы, а оно говорит мне http error 500, это нормально вообще?
Я блеать понятия не имею что писать в этот долбаный htaccess :(
Аноним 29/07/18 Вск 14:35:18  1237236
>>1237231
Посмотри логи на сервере, няша. 500 ошибка это что угодно может быть. И какая у тебя БД? MySQL? Ее нельзя просто так перекинуть, надо импорты-экспорты творить.
Аноним 29/07/18 Вск 16:03:12  1237269
Screenshot20180[...].png (117Кб, 720x1280)
Screenshot20180[...].png (117Кб, 720x1280)
Screenshot20180[...].png (117Кб, 720x1280)
>>1237206
Вот тебе оффлайн джобы
Аноним 29/07/18 Вск 16:13:03  1237274
Котаны, оцените тестовое и скажите, сколько джуну нужно времени на него в среднем, и можно ли реализовав это вообще смело проситься в джуны ?
Создание веб-приложения для регистрации и авторизации на 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.
Аноним 29/07/18 Вск 16:20:25  1237280
>>1237269
сорри мой промах , не угараю по АСАШАЙ потому ищу работу больше в европке , 4 года перекатился в пшекарню и с этого делаю выводы.
Аноним 29/07/18 Вск 16:22:27  1237282
>>1237274
Джун должен знать хотя бы один фреймворк и уметь создать самостоятельно приложение простое (уровня магазина или форума), а ты детские задачи даешь.
Аноним 29/07/18 Вск 16:25:35  1237283
>>1237280
Бро, я сам в Польше уже 4 года, но работаю с США, в Европе денег нет, и айти отсталое
Реально прочекал - локальные польские вакансии - это реально срез США уровня 2015-2016 года
Аноним 29/07/18 Вск 16:37:43  1237287
>>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
Аноним 29/07/18 Вск 17:08:18  1237293
>>1232710 (OP)
> С чего начать
С другого языка
Аноним 29/07/18 Вск 17:24:22  1237295
>>1237293
Говно, ты?
Аноним 29/07/18 Вск 18:41:15  1237329
>>1237283
согласен , няш, не кинь плиз на лара gii , хочу опробовать , вполне возможно дальше буду двигаться в сторону лары
Аноним 29/07/18 Вск 18:56:54  1237338
>>1237329
Называется artisan
Можно писать свои команды, но есть встроенные, вот чит шит https://gist.github.com/42antoine/8822851
Аноним 29/07/18 Вск 18:58:07  1237340
>>1237329
Алсо, какой город у тебя?
Аноним 29/07/18 Вск 19:28:15  1237360
>>1237287

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

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

Аноним 29/07/18 Вск 20:20:22  1237397
Подскажите годный редактор php кода на андроид.
Аноним 29/07/18 Вск 21:11:21  1237414
>>1237397
SoloLearn
Аноним 29/07/18 Вск 22:51:37  1237469
>>1237274
Очень похоже на студентов.
Делал бы в течение полугода, бросал бы 3 рази и в итоге забил.
Аноним 29/07/18 Вск 23:04:37  1237476
>>1237340
ДС местный , я имел ввиду что то типа https://backpackforlaravel.com/ чтоб круды для бекенда быстро делать , модели генерить с валидацией и тд
Аноним 29/07/18 Вск 23:18:04  1237479
>>1237476
>ДС местный
No to w takim razie zapraszam na browara, ziomku
>я имел ввиду что то типа https://backpackforlaravel.com/ чтоб круды для бекенда быстро делать , модели генерить с валидацией и тд
Ну так можно че-то поставить, не все такое имеет смысл пихать в коробку
Аноним 30/07/18 Пнд 00:04:02  1237500
>>1237479
держи для связи фейк FB /profile.php?id=100013704018224
Аноним 30/07/18 Пнд 00:10:30  1237504
>>1237500
>/profile.php?id=100013704018224
отписал, прочекай реквесты
Аноним 30/07/18 Пнд 00:59:17  1237521
Привет, анон. Подскажи, как в цикле добавлять процент переменной к ней самой? https://ideone.com/RJVewR
То есть переменная должна увеличиваться каждый цикл на 10% от нынешнего ее значения, но я не знаю как прибавить проценты. Помогите, пожалуйста.
Аноним 30/07/18 Пнд 01:03:31  1237523
>>1237521
тэакс, я просто умножил на 1.1
это можно считать решением проблемы?
Аноним 30/07/18 Пнд 09:26:29  1237566
Котаны спасайте. Есть 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 похуй
Аноним 30/07/18 Пнд 10:21:07  1237587
>>1232710 (OP)
Опчик, проверь пожалуйста задачу про ООО Вектор
https://ideone.com/slxeeN
Аноним 30/07/18 Пнд 14:16:38  1237663
В общем я заебался и не понимаю логики.

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

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

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

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

Аноним 30/07/18 Пнд 14:19:58  1237667
>>1237663
$array[1] + array[5];
Аноним 30/07/18 Пнд 14:21:13  1237669
>>1237667
$array[5]*
Аноним 30/07/18 Пнд 14:23:33  1237673
>>1237667
Пиздец, шатала это все.

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

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

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

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

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

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

Если решишь эту, можешь попросить еще задачку. И так пока не начнешь понимать, как работать с массивами.
Аноним 30/07/18 Пнд 18:06:51  1237775
>>1237713
>>1237715
>>1237717

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

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

echo $a;
echo $b;

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

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

Спс.
Аноним 30/07/18 Пнд 20:33:19  1237853
>>1237833
А ты понимаешь в чем разница?
Аноним 30/07/18 Пнд 20:58:01  1237877
>>1237823

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

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

Чтобы вывести названия из массива через запятую, можно использовать implode().
Аноним 30/07/18 Пнд 21:54:49  1237945
image.png (17Кб, 627x111)
image.png (31Кб, 635x495)
Помогите пожалуйста, как сделать сумму вложений без цифр после точек или хотя бы уменьшить их?
Аноним 30/07/18 Пнд 23:05:59  1237986
>>1237853
Видимо не совсем.
Аноним 30/07/18 Пнд 23:06:56  1237988
>>1237877
>То есть если я поменяю список животных на входе, программа должна сама их отсортировать, а у тебя этого нету.

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

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

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

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

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

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

Попроси задачку посложнее, когда решишь.
Аноним 31/07/18 Втр 02:01:09  1238079
В чём может быть проблема?
Кука с сессией живая, в файле значение моё записано. А var_dump($_SESSION[]) возвращает NULL. Сессия у меня открывается после авторизации, сразу после этого (пока существует сигнальная переменная $success) и в массиве есть данные. Но стоит обновить страницу или перейти в другой раздел, как авторизация сбрасывается и массив NULL. Хотя, ещё раз. Кука живая и в её временном файле есть значение.
Аноним 31/07/18 Втр 02:02:06  1238080
>>1238079
>var_dump($_SESSION)
фикс
Аноним 31/07/18 Втр 03:32:13  1238092
сап двач. я тут к вам с ебанутым вопросом. чем php разработчик отличается от frontend разработчика? я как понял ни чем судя по требованиям работодателей
Аноним 31/07/18 Втр 09:48:24  1238138
>>1238006
https://ideone.com/FgM9lY
Аноним 31/07/18 Втр 09:52:58  1238140
>>1237945
https://ideone.com/Ws1AAk
Оцените решение
Аноним 31/07/18 Втр 09:54:50  1238141
>>1238092
php - это backend
чем отличается backend разработка от frontend разработки, сам нагуглишь, если тебе сами термины ни на что не намекают.
Аноним 31/07/18 Втр 09:56:37  1238142
>чем отличается водитель автобуса, от водителя категории А? я как понял ничем, судя по тому, что оба водители.
Аноним 31/07/18 Втр 10:25:01  1238153
Начал изучать симфони, возник вопрос, а есть ли гайды\уроки на русском?
Аноним 31/07/18 Втр 10:36:33  1238160
>>1238142
Нет
Аноним 31/07/18 Втр 12:34:03  1238221
>>1237360
На самом деле оказалось что через встроенный файловый менеджер хостинга нельзя копировать папки, только файлы, так что все мои шаблоны, классы и прочая хрень рассованная по папкам не скопировалась.
Дозалил чего не хватало через фтп и сайт завелся, спасибо за участие.
Аноним 31/07/18 Втр 13:10:09  1238231
Вопрос ни сколько про 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 => [СЮДА ПОПАДЁТ ИНФОРМАЦИЯ О ПРОБЛЕМАХ С АЛИАСОМ]
]

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

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

Но меня кстати можно и не слушать, я сам только вкатываюсь.
Аноним 31/07/18 Втр 13:54:31  1238248
>>1238247
И кстати невалидный алиас тоже критическая ошибка, по моему. Куда письмо то слать будем?
Аноним 31/07/18 Втр 14:04:31  1238254
>>1238231

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

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

Если ты хочешь предупреждать, то проверять правильность email надо было заранее до отправки письма.
Аноним 31/07/18 Втр 16:48:38  1238361
Почему в мануале текст в массиве взят в одиночные кавычки ' ' а на офф сайте в двойные " " ?
Аноним 31/07/18 Втр 18:42:09  1238435
>>1238248
Туда и слать.
Любой набор печатных символов - это валидный адрес. И собака не нужна даже.
Аноним 31/07/18 Втр 18:50:21  1238438
image.png (66Кб, 526x570)
>>1238361
Я тебе и без кавычек могу массив написать. Что дальше?
Сходи прочитай чем отличаются кавычки друг от друга.
Аноним 31/07/18 Втр 18:57:59  1238439
>http://codedokode.github.io/phpbook
Читаю и будто геем написано не как что-то плохое.
Аноним 31/07/18 Втр 19:21:27  1238452
>>1238439
Перечитал этот гайд с каменным стояком, спасибо.
Аноним 31/07/18 Втр 21:44:38  1238523
>>1237523
Для уберточных вычислений использовать не стоит: http://php.net/manual/ru/language.types.float.php
А вот для прикладных задач можно.
Аноним 31/07/18 Втр 23:26:40  1238591
ОП, проверь, пожалуйста, задачи:
ПИШИ ВЕРНО: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
Аноним 31/07/18 Втр 23:32:39  1238602
>>1238591
Сколько ушло времени на "Сумма прописью"?
Аноним 01/08/18 Срд 01:05:46  1238655
https://www.youtube.com/watch?v=iadcTFFoXEw

тут тянка говорит что выучит веб-погромирование и будет грести бабло. вот.
Аноним 01/08/18 Срд 02:25:54  1238678
https://ideone.com/3AVDz2
в чем проблема? не понимаю
Аноним 01/08/18 Срд 02:48:41  1238680
Тут есть программисты которые по своместительству селшники? Просто интересно стоит ли задрачивать php, html, css и прочую поеботу если хочешь заниматься seo? Ну и просто интересно бывают ли такие люди.
Аноним 01/08/18 Срд 04:10:21  1238682
>>1238678
mbstring не установлен у них.
Аноним 01/08/18 Срд 06:14:08  1238699
>>1238680
Семён?
Аноним 01/08/18 Срд 06:14:38  1238700
>>1238602
Часа 3
Аноним 01/08/18 Срд 12:36:17  1238859
Я новичек.
поясните пожалуйста, если я хочу, чтобы на странице элементы отображались по клику кнопок на странице без перезагрузки -это реализовываться с помошью JS, php или просто средствами html/css?
что гуглить?
Аноним 01/08/18 Срд 12:39:22  1238861
>>1238859
Чтобы они просто отображались - html/css. Если там динамическое содержимое - html/css/js-ajax/php
Это всё в связке.
Аноним 01/08/18 Срд 12:45:51  1238866
>>1238861
ну например при кликле на определенную кнопу появляются разные виды формы( текстовая с несколькими полями, текстовая с одним полем, радио)
Аноним 01/08/18 Срд 12:48:28  1238867
>>1238866
Конкретно то, что ты описал - js. Если тебе надо будет так же без перезагрузки страницы отправить эту форму на сервер, там обработать и отобразить результат, надо будет задействовать ещё ajax и php.
Аноним 01/08/18 Срд 15:49:28  1238955
Бля, дали поправить говно на юи2, а у вас даже встроеного дебагерра нет, два дня ебусь не могу ебучий хДебагер прикрутить. Вот в моем стеке дебажить одно удовольствие.
мимо джавамакака
Аноним 01/08/18 Срд 15:54:50  1238961
Оп подскажи. Сейчас дрочу массивы (задание со стихом), хочу оптимизировать код. Функция array rand используется только для одного массива, так? Для остальных массивое ее повторять на каждом шаге?
Грубо говоря "массив1"
"Массив2"
Rand1=rand(массив1)
Rand2=rand(массив2)
Echo rand1 rand2
Или есть возможность упростить как-то.дальнейшие действия продумал, поэтому не интересно
Аноним 01/08/18 Срд 17:19:04  1239003
>>1238955
Ебать ты даун. Небось под виндой сидишь
Аноним 01/08/18 Срд 18:17:46  1239056
Нахуй вы тут сидите, ебанутые чтоли? Все равно без высшего образования ничего не добьетесь
Аноним 01/08/18 Срд 19:44:09  1239090
>>1239056
>>1239003
Псина опять сорвалась с цепи.
Аноним 01/08/18 Срд 19:58:05  1239099
>>1238961
Ты циклы проходил уже? Всю эту ебанину с повторениями можно [/s нужно ]делать в цикле. А так да для каждого массива нужно вызвать функцию и передавать его туда.

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

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

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

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

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

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

На локальном сервере результаты работы программы отображались нормально, но когда загрузил на ideone появились лишние пробелы. Отдаю на суд, сил больше нет перерешивать. Задача была самой интересной из всех, но кажется я решил её через задницу.
Аноним 02/08/18 Чтв 01:31:03  1239405
>>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

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




Аноним 02/08/18 Чтв 13:12:00  1239564
Сап двач. Какую тему (что-то с вебом) взять для диплома в магистратуре?
Аноним 02/08/18 Чтв 13:14:16  1239565
>>1239564
Онлайн-магазин дилдаков с генерацией описания товара, конечно.
Аноним 02/08/18 Чтв 15:23:50  1239618
>>1239564
А учишься ты по какому направлению, или (что-то с вебом) - это и есть оно?
Аноним 02/08/18 Чтв 18:10:18  1239693
Люди добрые, дошел до урока ОПа где нужно пользоваться функцией mb_strlen. В общем, проблема в том, что при попытке запустить этот код возникает ошибка; мол, неопределенный плагин, хотя в папке с интераптором пхп есть все нужные длл. Может, нужно с этими длл что-то сделать, чтобы все это дело работало как надо? IDE phpStorm
Аноним 02/08/18 Чтв 18:20:22  1239704
.png (79Кб, 1250x486)
Парни, скажите, пожалуйста, — это нормально, что я пишу такие адовые цыклы для проверки палиндрома, или можно как-то элегантнее решить?
И еще 2 вопроса:
1) Как настроить так, чтобы из строки брались только буквы, и строка вроде "add/a" тоже считался палиндромом, но и "л/фф/л" тоже?
2) Как сделать так, чтобы если я напишу одну букву "а" латиницей, то это все равно был палиндром?
Аноним 02/08/18 Чтв 18:21:46  1239706
>>1239704
*циклы
Аноним 02/08/18 Чтв 18:23:54  1239710
>>1239693
mb_internal_encoding('utf-8');
Прописал?
Аноним 02/08/18 Чтв 18:25:49  1239713
>>1239564
Аналог азино 777, после защиты тебя оторвут с руками.
Аноним 02/08/18 Чтв 18:58:09  1239732
>>1239710
у меня в этой строке и ошибка.
Аноним 02/08/18 Чтв 19:47:45  1239757
нет файла php.ini, как фиксить?
Аноним 02/08/18 Чтв 19:53:09  1239759
>>1239732
Ну так убери
Аноним 02/08/18 Чтв 19:54:45  1239761
>>1239759
ну так без нее не работает mb_strlen
Аноним 02/08/18 Чтв 20:00:22  1239762
image.png (43Кб, 872x291)
>>1239761
На каком сервере запускаешь? Какая версия PHP?
OSPanel, PHP 7.1.7, всё работает без указания кодировки.
Вот список кодировок, с которыми мультибайтовые функции работают по дефолту http://php.net/manual/en/mbstring.supported-encodings.php
Аноним 02/08/18 Чтв 20:03:24  1239763
>>1239762
запускаю на внутреннем сервере или как ето называется. в общем, ничего кроме пхп не качал. я ньюфаг совсем
7.2.8
Аноним 02/08/18 Чтв 20:07:03  1239764
>>1239763
Если ты совсем-совсем ньюфаг, зачем тебе, в принципе, локальный сервер? Пиши в том же ideone сразу запускай. Когда поймёшь зачем тебе сервак, тогда, кури мануалы, ставь нормальный локалхост. А пока только в синтаксисе разбираешься, не заморачивайся..
Аноним 02/08/18 Чтв 20:10:02  1239765
Screenshot1.png (6Кб, 402x183)
Screenshot3.png (7Кб, 1278x187)
>>1239764
да мне сервак и не нужен, просто в учебнике опа задачки с mb_string, а он у меня не работает какого-то хуя
Аноним 02/08/18 Чтв 20:18:05  1239771
>>1239765
Не еби себе мозг.
http://sandbox.onlinephpfunctions.com/code/888d4a412ab7f48ede2ebe45174059113aac6a59
Аноним 02/08/18 Чтв 20:19:30  1239775
>>1239771
блин, а в чом смысол, почему там работает....
Аноним 02/08/18 Чтв 20:21:48  1239776
>>1239775
Вот пока там работает всё что тебе нужно, там и пиши.
Аноним 02/08/18 Чтв 20:23:06  1239778
>>1239776
ну, анонче, ну, милый, объясни пожалуйста............
Аноним 02/08/18 Чтв 20:27:38  1239781
>>1239778
Бля, друг, тебе бы ещё синтаксис русского языка подтянуть. Задачки из ОП-поста ты и в песочнице выполнишь, а там уже может и понимание придёт что это и для чего, сам разберёшься. Не загружай голову лишним пока.
Аноним 02/08/18 Чтв 20:30:26  1239782
>>1239781
ладно, заинька, и на том спасибо!
Аноним 02/08/18 Чтв 20:42:20  1239788
>>1239757
>>1239757
Ну скачай с офф.сайта ещё раз. Также в папке с пхп есть два файла: php.ini-development и php.ini-production. Один из них ты должен переименовать просто в php.ini.
Аноним 02/08/18 Чтв 20:54:55  1239795
Безымянный.png (88Кб, 714x794)
Что думаете, потратить месяц?
Аноним 02/08/18 Чтв 21:08:23  1239806
>>1239795
Тебе за твои же деньги нальют хуцпы в уши и насрут на голову. Все эти курсы есть в открытом доступе на торрентах, не благодари.
Аноним 02/08/18 Чтв 21:38:29  1239822
Если я хочу установить bootstrap вручную в проект используя композер.
Устанавливать в публичную папку ?
Аноним 02/08/18 Чтв 22:27:17  1239850
>>1239693

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

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

<?php phpinfo();

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

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

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

Таким образом, тебе придется написать скрипт (лучше всего на php) и прописать его на post-update-cmd. Этот скрипт должен копировать (или создавать симлинки, если мы на linux) файлы в публичную папку.
Аноним 03/08/18 Птн 09:38:23  1240019
>>1239781
>>1239776
>>1239771
Как уклониться от ответа, но сделать вид, что это не потому что ты не знаешь на него ответ, а потому что ты охуенный старожил и потешаешься над ньюфагом.

https://stackoverflow.com/questions/17204437/fatal-error-call-to-undefined-function-mb-detect-encoding
Аноним 03/08/18 Птн 09:47:56  1240023
Шарящие анончики, хелп.

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

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

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

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

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

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

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

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

Хочу сделать так, чтобы у меня на адрес 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.
# 127.0.0.1 localhost
# ::1 localhost
# 127.0.0.2 friden.dev
# 127.0.0.2 www.friden.dev

Аноним 03/08/18 Птн 16:10:25  1240258
>>1240257
Раскомментируй (# убери).
Аноним 03/08/18 Птн 16:21:08  1240262
>>1240258
А, Ааааа! ААААААААААААААА! То есть эти ебучие решётки не нужны?
Аноним 03/08/18 Птн 16:32:06  1240266
>>1240262
Да, они используются для комментирования строки (она игнорируется при выполнении). В будущем ещё не раз с ними столкнешься.
Аноним 03/08/18 Птн 16:33:04  1240268
>>1240266
Всё равно нихуя не работает. Как вообще завести встроенный в php сервак, чтобы он пердолился при введении адреса friden.dev?
Аноним 03/08/18 Птн 16:37:05  1240271
>>1240268
Вот это попробуй:
sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Аноним 03/08/18 Птн 16:38:08  1240272
>>1240271
Но я ведь не на линуксе или однострочная программа на perl работает и под виндой?
Аноним 03/08/18 Птн 16:39:47  1240274
>>1240272
 
>не на линуксе
 
Ясно.
Всего доброго.
Аноним 03/08/18 Птн 16:48:28  1240278
>>1240268
Наверное потому, что ты используешь домен .dev.
https://webdevstudios.com/2017/12/12/google-chrome-63/
Попробуй один из перечисленных в статье.
>>1240272
Совет на будущее - не копируй бездумно команды, тем более выполняющиеся от рута (sudo запрашивает права суперпользователя), тем более по советам двачеров.
Аноним 03/08/18 Птн 16:49:10  1240279
>>1240278
пасиб за ссылку, я в курсе про эти программы, требущие sudo. В своё время сидел на ubuntu.
Аноним 03/08/18 Птн 16:50:24  1240280
image.png (4Кб, 237x130)
>>1240278
Бля, антоша! Спасибо! Завелось!
Аноним 03/08/18 Птн 17:00:24  1240285
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
Аноним 03/08/18 Птн 18:39:05  1240359
>>1240285
Я канеш не оп, но зачем юзать редис? Как я понял то выгоды он никакой не дает. Ведь можно получить такое же поведение и с обычной бд? И если попытаться скачать файл, который еще не загружен, то в ответ придет 200, это ж не хорошо. Можно еще добавить в бд какой-то uploaded булевый, и если 0 то по ссылке на файл рисовать плашку что файл грузиться, в будущем ты захочешь сделать ютьюб и сможешь рисовать плашку не только при загрузке, но и при обработке, повесить это всё дело на вебсокет, и при завершении загрузки/обработки отправлять страничку.
Аноним 04/08/18 Суб 00:19:07  1240556
>>1240359

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

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

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

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

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

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

>> вебсокет
Интересная штука. Надо будет попробовать
Аноним 04/08/18 Суб 01:39:50  1240580
>>1240285
Не хочешь завернуть все докер контейнер?
Аноним 04/08/18 Суб 02:01:53  1240586
>>1240580
Надо будет попробовать. Я ещё не работал с ним
Аноним 04/08/18 Суб 12:12:08  1240684
Можете посоветовать видео курсы для самых маленьких? У меня всегда были проблемы с решением задач, даже если я знаю как решать, без визуальных подсказок дико туплю на одном месте
Аноним 04/08/18 Суб 12:20:21  1240690
image.png (24Кб, 599x307)
image.png (99Кб, 1383x881)
>>1240019
>>1240053
ну тащем-то, я разобрался и понял, что это из-за вебсервера. так что накатил lamp и теперь все у меня работает.........


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

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

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

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

Сап, аноны. Хочу сделать себе виджеты для стрима. Посоветуйте, что почитать про css/html, чтобы я все понял. и забил хуй
Аноним 04/08/18 Суб 21:13:37  1240958
>>1240950
>Хочу сделать себе виджеты для стрима.
Смотря какие виджеты ты хочешь. Но чтобы научиться базовым основам html и css, посмотри хотя бы туториалы на ютубе Ищи что-то типа "html5 с нуля" и "css3 с нуля". Есть неплохие уроки. Многому ты там не научишься, но понять что это такое и нужно ли оно тебе, хватит.
Аноним 04/08/18 Суб 21:56:58  1240989
1.PNG (12Кб, 213x167)
2.PNG (34Кб, 289x47)
3.PNG (15Кб, 1584x420)
4.PNG (15Кб, 1036x414)
>>1240958
Хотелось бы виджет на подобие пик2. Статичный, прозрачный, прямоугольник со значком и белым текстом. Вроде как во вкладке html ничего и не надо трогать, внешний вид изменяется в таблице css. Сейчас виджет как на пик1 . Думаю мне и не надо прям все учить, понять как добавлять картинку, движение по координатам, размер, цвет, прозрачность, блюр.
Аноним 04/08/18 Суб 22:00:47  1240990
>>1240989
>движение по координатам, размер, цвет, прозрачность, блюр.
Вот с этого момента прям всё. Потому что тут уже js, а без знания html и css ты ничего не сможешь сделать в js.
Ну может, не быть профи в вёрстке, но знать тэги, принцип работы css и позже взаимодействие с ними в js обязательно.
Аноним 04/08/18 Суб 22:05:12  1240997
w5.1
https://ideone.com/yvZESL
w5.2
https://ideone.com/k3dgmE
w5.3
https://ideone.com/4GtuH3
w5.4
https://ideone.com/X1glvK
1-35 Аноним 05/08/18 Вск 02:52:57  1241066
>>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 часов анализируем статистику запросов и удаляем редко востребованные картинки

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

Правда, это получается сложная штука, требующая много времени на реализацию и отладку.
Аноним 05/08/18 Вск 02:53:30  1241067
>>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
Аноним 05/08/18 Вск 02:53:54  1241068
>>1240759

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

>>1240709

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

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

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

>>1240684

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

>>1240556

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

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

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

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

>>1239806

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

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

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

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

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

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

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

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

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

console.log(j);
}

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

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

это грустно как-то. неужели всё правда так плохо?
Аноним 05/08/18 Вск 22:15:17  1241620
>>1241599
Во-первых, ну ты и спринтер. 4й день, а уже в куки с сессиями вкатываешься. Во-вторых, как я понял, из примера, тут функция session_write_close() используется не по назначению. Потому что, прежде чем начать новую сессию надо завершить предыдущую. То есть, прежде чем стартовать сессию session_name('uniqueName1'); надо её завершить. Надо попробовать. По идее, код должен вызывать ошибку типа WARNING.
Аноним 05/08/18 Вск 22:17:49  1241624
>>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.
Аноним 05/08/18 Вск 22:27:30  1241638
>>1241620
>>1241624
дальше читай что люди пишут + https://stackoverflow.com/questions/10046570/php-save-session-when-using-session-write-close
Аноним 05/08/18 Вск 22:35:58  1241646
>>1241638
С одной стороны, да. А с другой, такое использование не предусмотрено логикой функции. И при большом потоке данных будет гораздо логичнее использовать ООП.
Аноним 06/08/18 Пнд 01:35:16  1241743
>>1241599

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

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

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

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

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

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

Ебануться
Аноним 08/08/18 Срд 08:32:00  1242821
>>1242770
кстати в украине это средняя зп по стране

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

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

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

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

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

не подойдет. тебе нужно учесть все пробелы, скобки, дефисы в РВ
Аноним 08/08/18 Срд 14:24:54  1243041
>>1243040
Хорошо, спасибо, сейчас постараюсь разобраться этим.
Аноним 08/08/18 Срд 14:28:38  1243043
>>1243041
https://ideone.com/Z4ve6O но, кстати, оно работает.
Аноним 08/08/18 Срд 14:39:12  1243049
изображение.png (207Кб, 1445x674)
>>1243043
Пока подсказывал тебе полез в свой старый код, когда решал эти задачки и обнаружил, что рандомно обозвал переменную :

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

А потом зашел в /b и увидел это:
мне страшно
Аноним 08/08/18 Срд 14:40:17  1243050
>>1243049
Не пугайся, анон, я тебя защищу!
Аноним 08/08/18 Срд 14:40:58  1243051
791efee38faa898[...].png (71Кб, 200x198)
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


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

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

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

Аноним 08/08/18 Срд 21:04:09  1243210
>>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 = '';
}
Аноним 08/08/18 Срд 21:27:53  1243228
>>1243210
foreach чтобы перебирать массивы.
Аноним 08/08/18 Срд 21:33:10  1243238
>>1243210
Не страшно, я решаю задачки которые уже решал в прошлом и туплю, хотя раньше не тупил и с ходу делал так, что ОП сразу писал - верно, главное не загоняться.
Аноним 08/08/18 Срд 22:22:27  1243270
https://ideone.com/xFgw2z оцените решение задачки на изменение номеров.
Аноним 08/08/18 Срд 22:25:24  1243273
>>1243207
Я не пойму как добавить игнорирование типов в сериалайзере. У меня например есть поле с типом инт (тип уточняется в аннотации для доктрины), и когда сериалайзер пытается записать туда строку то выбрасывается исключение что тип не подходит. Я же хочу записать что можно, а потом симфони валидатором проверить уже по другим аннотациям. Пришлось еще попотеть в гугле чтобы сериалайзер заработал, без этих строчек в framework.yaml он не конвертировал нормально
property_info:
....enabled: true
Аноним 08/08/18 Срд 22:34:39  1243279
>>1243273
Надо было документацию проскроллить вниз o\
Я через тайпхинт внедрял сериалайзер, а он так автоматически подключает PropertyTypeExtractor, который и проверяет тип.
Аноним 08/08/18 Срд 22:56:49  1243287
>>1232710 (OP)
поделюсь годнотой, есть книжка murach's php and mysql, на оф. сайте лежат материалы, часть из которых небольше сайтики: формочки, работа с бд, mvc вот это всё. очень хорошо для начинающих
Аноним 09/08/18 Чтв 23:59:44  1243892
ОП, я тут ооп принес, можешь глянуть?
ОАО ВЕКТОР: http://sandbox.onlinephpfunctions.com/code/fa6829294e2c3d08ac26f3292afabf2e7bad049b
Аноним 10/08/18 Птн 04:36:40  1243937
>>1243089

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

>>1242852

article JOIN article_tag WHERE tag IN (a, b)

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

Я ем говно, но так как оно досталось мне с трудом, то я внушу себе что оно вкусное-тир:
Форма из башни магов. жаль ментально изнасилованных тех кто в этом гоняет
Аноним 10/08/18 Птн 06:13:14  1243945
>>1243944
Простите, я перепутал вкладки.
307-394 Аноним 10/08/18 Птн 06:54:02  1243948
>>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) .
Тут у второй и далее строчек стоит добавить отступ, чтобы было видно, что это все одна длинная команда.

Так, для первого раза выглядит хорошо. Ждем антикризисных решений.
Аноним 10/08/18 Птн 06:54:34  1243949
>>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).
Аноним 10/08/18 Птн 06:55:04  1243950
>>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 или движки для этого, но предупреждаю, без базовых знаний там ковыряться очень тяжело.
Аноним 10/08/18 Птн 06:55:45  1243951
>>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, используя функции выше, для каждой группы получает слова и склеивает их

Будет гораздо проще.
Аноним 10/08/18 Птн 06:56:39  1243952
>>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;
Это плохо, что у тебя переменная постоянно меняет тип, так как трудно понять, где она имеет какой тип и как с ней работать. Лучше было копить символы как строку, а только перед выполнением операции преобразовать в число.

Работает верно.
Аноним 10/08/18 Птн 06:57:09  1243953
>>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
Правильно.

Аноним 10/08/18 Птн 07:32:31  1243963
>>1243944
А что ето такое?
Аноним 10/08/18 Птн 07:43:17  1243965
>>1243948
>>1243952
Спасибо, сам такое без опыта не замечаю, думаю, придёт все потом.
Решу после антикризисных мер ещё твою про гостиницу из архива тредов, потому что схему ооп в голове пока что сложновато строить.
Аноним 10/08/18 Птн 08:23:34  1243975