«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб любителей изучать PHP #88 Аноним 2017/04/04 14:08:00  №966608 1
14901370728420.jpg (102, 500x500)
500x500
Добро пожаловать в наш уютный тред. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Visual Studio Code, Netbeans PHP или PhpStorm (с ним будет удобнее).

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост, прежде чем писать код).

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

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка 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 2/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

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

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

Оформляй код аккуратно!!! — например пропусти через 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
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/.
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Посоветуйте редактор кода - Sublime Text 3, Notepad++, PhpStorm
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
- Что самое главное для программиста? Умение аккуратно оформлять код.
- ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
- Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.


-------------------

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

Если тебе лень выравнивать код руками, закачай его на 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
Аноним 2017/04/04 14:30:13  №966622 2
ОП, ты вроде шарил в Symfony.
Нужно получать кол-во новых комментов к статье по последнему просмотру ее юзером.
Таблица последнего просмотра - article_id, user_id, timestamp; Сущность ActicleLastView.

Сущность Atricle, сериализация через JMS.

Как по уму сделать подсчет кол-ва комментариев появившихся после timestamp по заданному юзеру? Вытаскивать QueryBuilder через leftJoin? Как замэпить полученное число в сущность Article?
Ответы: >>966660 >>967844
Аноним 2017/04/04 15:31:31  №966660 3
>>966622
>Нужно получать кол-во новых комментов к статье по последнему просмотру ее юзером.
Типо, посмотрел коммепнты, поставил временной маркер, а при следующем просмотре просто подгружаешь, комменты которые появились после временни отмеченного временным маркером?

Скинь код и скрин и диаграмму базы.
Ответы: >>966706
Аноним 2017/04/04 16:23:44  №966678 4
Анон, подскажи, пожалуйста, готовое решение "long polling сервера на php" (если таковое имеется).
Интересует не простейший пример, коих в инете полно. А работоспособное, проверенное решение, которое может держать пару тысяч юзеров, раздавая им свежую информацию.
Ответы: >>967844
Аноним 2017/04/04 17:10:54  №966706 5
>>966660
В целом верно, только кол-во новых показывается в списке, типа стикера с кол-вом новых комментариев в статье после последнего просмотра.

Когда юзер открывает статью - пишу временную метку в ActicleLastView (для таблицы primary key => user_id + article_id).

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

В принципе я уже решил вопрос двумя leftJoin (ActicleLastView, Comments) с кучей условий джойна + groupBy(article_id), но хочется понять, есть ли более элегантное решение, например, с запросами к отношениям как в laravel.

Кстати, вызывают ли @ORM\OneToMany(targetEntity="AppBundle\Entity\Comment", mappedBy="application", orphanRemoval=true, cascade={"remove"}) дополнительные подзапросы при обращении к свойствам или вытягиваются при любом запросе (в т.ч. и через QB)?
Ответы: >>966717 >>967844
Аноним 2017/04/04 17:29:02  №966717 6
>>966706
Я бы сделал так.
Смотрим комменты.
Записываем номер последнего комментария.
Все не просмотренные комменты - это все комменты у которых собственный номер больше, чем номе последнего коммента.
Чтобы посчитать кол-во их используй конструкцию.
getQuery()->getSingleScalarResult(); Она тебе сразу цифру даст.

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

>Кстати, вызывают ли @ORM\OneToMany(targetEntity="AppBundle\Entity\Comment", mappedBy="application", orphanRemoval=true, cascade={"remove"}) дополнительные подзапросы при обращении к свойствам или вытягиваются при любом запросе (в т.ч. и через QB)?

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

Аноним 2017/04/04 19:20:03  №966783 7
>>966744
Когда переделаете в супергруппу, тогда и зайду.
Аноним 2017/04/04 19:27:37  №966792 8
Ответы: >>966850
Аноним 2017/04/04 20:26:12  №966850 9
Аноним 2017/04/04 20:41:20  №966864 10
Бля анон, я знаю ты скажешь я тупой, но я не могу исправить эту ебаную ошибку в проге про айфон и кредит!! Пиздец у меня горит уже просто. http://archive-ipq-co.narod.ru/l1/loops.html Дай подсказку, пожалуйста!
Ответы: >>966900
Аноним 2017/04/04 21:22:04  №966900 11
>>966864
Не переживай, ты не первый сюда с таким вопросом приходишь. Я тоже спрашивал где-то неделю назад.
Пример кода к задаче, который даёт ОП, слегка сбивает с толку. Перепиши весь цикл заново, попробуй решить с помощью while.
Аноним 2017/04/04 22:00:49  №966920 12
Ответы: >>966928 >>966939 >>979515
Аноним 2017/04/04 22:05:19  №966928 13
>>966920
Было бы где наговнокодить, там меньше 100 строчек
Аноним 2017/04/04 22:08:40  №966929 14
Аноним 2017/04/04 22:13:13  №966933 15
>>966929
Рендерить пытаюсь в Controller/Home.php
Аноним 2017/04/04 22:16:30  №966939 16
>>966920
А если изменить выплаты будут продолжаться дольше 20 месяцев?
Ответы: >>966944
Аноним 2017/04/04 22:19:08  №966943 17
>>966929
Я думал над этим. Хочу вот сейчас сделать так, что бы останавливался цикл когда баланс уже 0.
Ответы: >>967038
Аноним 2017/04/04 22:19:31  №966944 18
Ответы: >>967026
Аноним 2017/04/04 22:42:26  №966957 19
>>966929
Нашел в чем проблема: не было
Ответы: >>966976
Аноним 2017/04/04 22:57:22  №966976 20
Ответы: >>967847
Аноним 2017/04/04 23:01:42  №966982 21
Снимок.PNG (20, 656x267)
267x656
Анон, сломал голову об такую мелочь. Есть один код (на пикрил он же):

{
"work_status": [{
"id": 293,
"received": "2016-11-12T05:40:09.372Z",
"status_current": "suspended", // rejected suspended finished
"status_date": {
"rejected": false,
"suspended": "2016-11-12T05:40:09.372Z",
"finished": false
}
}]
}

Длинный json с таким контентом.
В php у меня j,sxysq парсер для вывода этого всего через foreach. Считаю общее количество работы вот так <?php echo count($json['work_status']) ?>. Даже сумел сортировать рабjту по status_current и выводить её по запросу одного из 3х статусов, но как ни пытался, не получается подсчитать и вывести, сколько всего
status_current suspended, к примеру.
Ну по логике я попробовал конечно
<?php echo count($json['work_status']['status_current'] == 'suspended') ?> или <?php echo count($item['status_current'] == 'suspended') ?> но нифига.
Ответы: >>967014
Аноним 2017/04/04 23:34:05  №967014 22
>>966982
array_sum(array_map(function ($w) { return $w['status_current'] == 'suspended'; }, $json['work_status']))
Ответы: >>967022 >>967241
Аноним 2017/04/04 23:37:55  №967018 23
Такой трабл: в БД лежит инфа о юзере, то есть его логи, пассворд и т.п. Пароль естественно прошел через bcrypt().
На аппликухе на андроиде есть логин, который посылает мне в АПИ данные. Но при сравнении двух паролей генерируется разная хеш-функция, и в итоге проверить на равность неполучается. Есть какие-то способы это сделать? Laravel 5.4
Ответы: >>967847
Аноним 2017/04/04 23:40:10  №967022 24
>>967014
Ну и сложности. Я даже и близко не рыл в эту сторону. Спасибо анон, всё работает как надо. Теперь пойду разберу на части и выясню, почему это работает.
Ответы: >>967060 >>967240
Аноним 2017/04/04 23:47:35  №967026 25
125677.png (160, 1920x1028)
1028x1920
>>966944
Анон, помоги с регулярными выражениями. Никак не получается написать шаблон. Вот что у меня есть - $regexp='/[(\+7)|8][0-9]{10}/';. Не понимаю как сюда впихнуть условие на любое количество скобок, пробелов или минусов.
Ответы: >>967027 >>967039 >>967847
Аноним 2017/04/04 23:48:17  №967027 26
Аноним 2017/04/04 23:56:00  №967038 27
>>966943
Если подумать как следует, то задача становится легкой. Тебе всего лишь надо написать:
Пока кредит больше нуля - считаем общую сумму с учетом сервиса и процента. Если эта сумма больше 5000, то вычитаем из неё 5000 и прибавляем эти 5000 к $total, иначе вычитаем из неё остаток кредита и прибавляем эту сумму к $total. Всё.
Ответы: >>967046
Аноним 2017/04/04 23:56:20  №967039 28
>>967026
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$
Ответы: >>967041
Аноним 2017/04/04 23:59:24  №967041 29
>>967039
Не проходит тест:(.
Ответы: >>967044
Аноним 2017/04/05 00:01:50  №967044 30
Аноним 2017/04/05 00:06:50  №967046 31
>>967038
>иначе вычитаем её остатка кредита и прибавляем эту число к $total.
Фикс
Ответы: >>967047
Аноним 2017/04/05 00:07:46  №967047 32
>>967046
Охуенно пофиксил. Пора, наверное, спать идти.
Аноним 2017/04/05 00:09:12  №967048 33
Я в задании на числа прописью чот какую-то ересь написал, но работает, посоветуйте, куда идти (https://3v4l.org/jOnfA).

Удалил все ОПовские $amount1 = mt_rand(1,99999999);, кроме одной, т.к. eval все равно гоняет по всем версиям php.
Ответы: >>967050 >>979515
Аноним 2017/04/05 00:10:12  №967050 34
Ответы: >>979515
Аноним 2017/04/05 00:28:56  №967058 35
>>966744
Теперь мы не просто группа, а публичная супергруппа , прости Господи! Добро пожаловать!:
https://t.me/PHP_club
Ответы: >>967077
Аноним 2017/04/05 00:31:42  №967060 36
>>967022
count() не принимает параметром что-то сложнее массива, никаких условий, функций и тому подобного.
array_map() принимает функцию и массив, потом применяет функцию к каждому элементу и возвращает новый массив. То есть после её применения тебе вернется массив вроде [1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1] или с булинами, хз.
С array_sum() думаю уже сам сообразишь как и что.
Ответы: >>967240
Аноним 2017/04/05 01:20:39  №967077 37
tt.jpg (30, 450x250)
250x450
Аноним 2017/04/05 10:20:56  №967147 38
Как сделать html-форму с выпадающим списком, который предлагает варианты в зависимости от выбора в предыдущем выпадающем списке?
Ответы: >>967157 >>967159
Аноним 2017/04/05 10:33:40  №967157 39
>>967147
Метод, у которого в аргументы будет передаваться массив $previousDropDown, что-то такое. При этом в нём будет создаваться новый $previousDropDown - из только что выбранного.
Аноним 2017/04/05 10:39:40  №967159 40
Аноним 2017/04/05 13:29:28  №967240 41
>>967060
Вчера лёг спать до этого поста, а утром читал про array_map и пробовал примерчики. Но это >>967022 как-то слишком ювелирно выглядит, толком в логику не вник - с толку сбивала функция и ретурн.
Вот спасибо за разжёвывание.
Ответы: >>967241
Аноним 2017/04/05 13:30:21  №967241 42
Аноним 2017/04/05 13:43:42  №967259 43
А что, расширения для пхп 7.0 могут уже не подойти к 7.1? Такая большая разница или особенность какая-то?
Ответы: >>979515
Аноним 2017/04/05 13:47:39  №967265 44
Бамп вопросу про MVC >>966100 из прошлого треда.
Ответы: >>967323 >>967847
Аноним 2017/04/05 14:09:44  №967295 45
Объясните мне, что делает strpos. Я прочёл мануал, но не понял.
Ответы: >>967302
Аноним 2017/04/05 14:16:34  №967302 46
>>967295
Ищет строку в строке и возвращает позицию.
strpos("qwe asd zxc rty fgh vbn", "fgh"); => 16
Аноним 2017/04/05 14:31:37  №967318 47
И ещё, где можно подробно и с примерами почитать про вёрстку под мобильные устройства?
Ответы: >>967847
Аноним 2017/04/05 14:36:56  №967323 48
>>967265
Для начала поясни зачем тебе там вообще жаваскрипт и что за проект такой. Про echo и то как пхп-скрипт должен отдавать аякс-ответ - ну блин, если ты уж и пользуешься технологией то знать должен.
Ответы: >>967385
Аноним 2017/04/05 14:39:08  №967325 49
Сделал наконец задачу с регулярными выражениями - http://ideone.com/yAuKgH. Подскажите можно ли сделать это задание проще и лучше? А то у меня есть ощущение, что я говнище какое-то сделал.
Ответы: >>967326 >>967375
Аноним 2017/04/05 14:39:40  №967326 50
Аноним 2017/04/05 14:55:57  №967338 51
МДА...
Аноним 2017/04/05 15:09:41  №967347 52
>Only variables should be passed by reference
Разверните суть сего посыла в целом плз.
Ответы: >>967847
Аноним 2017/04/05 16:05:10  №967375 53
>>967325
Избавься от повторов:
>*[\d][\s-()]
Ответы: >>967515
Аноним 2017/04/05 16:30:00  №967385 54
>>967323
>Про echo и то как пхп-скрипт должен отдавать аякс-ответ - ну блин, если ты уж и пользуешься технологией то знать должен.
Когда я читал про аякс, там было сказано только, что он возвращает данные одним куском через echo.

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

JS нужен всю дорогу, как же без него?
Ответы: >>967389
Аноним 2017/04/05 16:35:11  №967389 55
>>967385
В данном случае - тебе надо обычное MVC-приложение, такое можно сделать за пару часов. Так и не понял зачем тебе там аякс, только лишнее усложнение.
Ответы: >>967392 >>967397
Аноним 2017/04/05 16:36:41  №967392 56
>>967389
>Кликает по любому из них - появляется модальное окно. Сверху инфа о заказе, вынутая из таблицы в БД, снизу поля для ввода инфы.
А, епты, не дочитал. Вообще такое лучше в фреймворке делать, там все вообще просто.
Аноним 2017/04/05 16:40:26  №967394 57
Делаю файлообменник, нихуя не понял как отдавать файлы из не публичной папки. Из того что пишет ОП - думаю сделать вариант отдавать файлы приложением на PHP, только я чегот не понял как это делается. Вот я хочу например превьюшки для картинок делать. Надо запилить, ф-ю и вызывать ее в шаблоне? А возвращает она все эти ебучие заголовки?
Ответы: >>967458 >>967847
Аноним 2017/04/05 16:49:26  №967397 58
>>967389
>тебе надо обычное MVC-приложение
Да блин. Я НЕ ПОНИМАЮ, как это грёбаное обычное приложение сделать. Вернее, сделать-то я могу, но вот что бы MVC и по фен-шую - не понимаю. Вот конкретно. Написано, что модель не должна срать в эхо. Не должна, блядь, и всё тут. Но как она передаст обратно в контроллер данные? У меня этим занимается аякс. Получается, айск выкинуть? Они там совсем охуели? Что происходит? По идее, паттерн (любой) - это некой HOW TO, призванное облегчать разработку, поддержку и использование. А тут что? Набор гнуси, вот это что такое. Причём переусложнённой и запутанной. Я уже штук пять разных описаний MVC для веба прочитал и все они разные.


Ответы: >>967430 >>967847
Аноним 2017/04/05 17:52:30  №967430 59
>>967397
>что модель не должна срать в эхо. Не должна, блядь, и всё тут
Ну правильно, модель должна что-то возвращать в контроллер, а контроллер уже передаст данные в твой скрипт, что непонятного то?
Ответы: >>967431
Аноним 2017/04/05 18:03:24  №967431 60
>>967430
Как конкретно модель возвращает данные?
Аноним 2017/04/05 18:04:50  №967432 61
>>967431
Ты прикалываешься?
Аноним 2017/04/05 18:46:27  №967454 62
>>967431
Через EventDispatcher кидаешь событие, а сервис перехватывает и записывает их в статический объект, за которым в режиме бесконечного лупа следит контроллер
Ответы: >>967847
Аноним 2017/04/05 18:47:44  №967457 63
>>967431
Ну а если ты серьезно не в курсе, то гугли return.
Аноним 2017/04/05 18:48:08  №967458 64
>>967394
Ну хз как надо, я это сделал в виде 1 индекс.пхп и 1-й папки рядом. Ну типа юзер через форму загружает файл на сервер и этот файл становится тут же виден на страничке и его можно скачать. Если это картинка, то можно сделать валидацию на это дело и выдавать в обёртке <img>. Без фреймворка всё отлично работает. Теперь осталось как-то усложнить всё в MVC.
Ответы: >>967466
Аноним 2017/04/05 18:57:30  №967466 65
Аноним 2017/04/05 19:52:38  №967498 66
ОП-чан нас окончательно покинул?
Ответы: >>967795
Аноним 2017/04/05 20:20:56  №967515 67
>>967375
Как? Я правда не понимаю.
Ответы: >>967518
Аноним 2017/04/05 20:25:27  №967518 68
>>967515
Лол. Получилось. $regexp='/^ ?(\+ ?7|8)([- ()]*\d){10}$/m';
Аноним 2017/04/05 20:53:32  №967527 69
Как оно работает из терминала? Он запускает какой-то локальный сервер или этот сервер постоянно работает?
Я думал, для того чтобы оно заработало в терминале, надо поставить апач,а оно и без апача работает. Объясните, пожалуйста этот момент.
Ответы: >>967563 >>967847
Аноним 2017/04/05 21:28:36  №967563 70
>>967527
"Оно" это что? Фреймворк, файлик? Если ты про интерпритатор php то для него никакой сервер не нужен.
Ответы: >>967575
Аноним 2017/04/05 21:38:31  №967575 71
>>967563
Я вот про интерпритатор, да. А как он не нужен-то?
Ответы: >>967659
Аноним 2017/04/05 22:23:22  №967659 72
>>967575
> А как он не нужен-то?
Так для IDE, например. Где достаточно php.exe и указать к нему путь. Там же и консолька. Смотря что и для чего оно тебе нужно.
Аноним 2017/04/05 22:27:02  №967666 73
Я нуб и столкнулся с тем, что фор и форич могут одно и то же. Так во что углубляться при изучении, если например я могу реализовать функцию и с тем и с этим?
Ответы: >>967671 >>967847
Аноним 2017/04/05 22:29:35  №967671 74
>>967666
>функцию
...в смысле работающую одинаково, одну и ту же.
Аноним 2017/04/05 22:46:21  №967683 75
14884107863140.jpg (37, 604x604)
604x604
бананы, кто осваивал Ларавель, легко вам давалось сие? я вот в самом начале. Посмотрел сейчас урок про мидлваре и почувствовал себя дебилом как похоже и есть
Ответы: >>967809
Аноним 2017/04/06 01:41:39  №967795 76
>>967498

ОП сидит в основном треде: >>958715 (OP)

Если у тебя вопросы к ОПу или по каким-то задачам ОПа или хочется проверить решение, то стоит запостить хотя бы ссылку на пост в тот тред, ближайшие несколько дней ОП точно будет там, не тут.
Аноним 2017/04/06 02:11:16  №967809 77
>>967683
Уже 5 лет пишу на пхп и последние 2 года использую ларавель в своих проектах. В милдварях нет ничего сложного.
Ответы: >>967815
Аноним 2017/04/06 03:03:46  №967815 78
>>967809
Чем ларавель лучше yii2, чому многие прогеры на него переходят, особенно для своих проектов? Я смотрю уроки по yii - ну вроде заебок, всё чётко, понятно, gii хорош.
А что в ларавеле так привлекает?
Ответы: >>967820 >>967824
Аноним 2017/04/06 04:39:04  №967820 79
>>967815
Ну как бы со стороны архитектуры - уии полное говно. Пройдись по классам и дойди до классов Object \ Component , там лютый трешак. Или посмотри на govnokod.ru . Ларавел также может и покруче создать админку причем более изи см SleepingOwl. Есть крутой DI (IoC container) в отличии от галимого локатора в уии. В уии идут после того как написал на пхп "хелло ворд я вася 2+2=4" но порог входа в Ларавел будет совсем иной. Ну и еще как бы ларку на сколько знаю то финансируют т.е есть инвестиции а уии пишется в свободное время и то судя по репозиторию там все очень плохо ( посмотри сколько пр висит даже), я сам контрибьютил немного в ларку и там как то нормально принимают, в уии аж стремно чет пр кидать сразу понимаешь что упустят (хз). Но есть + в уии что раб сила очень дешевая и создать типичный говносайт не дорого на нем. Но для чего то серьезнее говносайта я категорически против уии. (ору с конфигов в адванседе)
Ответы: >>967840 >>967845
Аноним 2017/04/06 04:45:03  №967822 80
MalikYobacropped.jpeg (175, 876x1228)
1228x876
Сап, программач. Долго гуглил, читал мануал PHP, но всё ещё задаюсь вопросом: как можно обезопасить сайт от инклуд-иньекции или чего-нибудь подобного, если атака происходит через залив файла?

Поясню, что я нашел:
- Отфильтровать расширения файлов, и тогда не смогут залить какой-нибудь yobaskriptxss.php
Резонно. Но я тут провел эксперимент:
>написал в блокноте <?php echo '<img src="dir://yoba.jpg">';?>
>сохранил это в формате .jpg
>залил на сайт через форму
>заинклудил этот jpg на главную страницу
>выдало пикрелейтед

-Так проверь MIME!
Проверял. На уровне post-запроса всё заебись. Вот только где-то я вычитал, что этот самый mime легко подделать.
Т.е., даже getimagesize() иногда за милую душу хавает запрятанный php-код!

Может, нужно как-то аплоудить, проверять файл, а потом его удалять в той же итерации, если он какой-то не правильный? А что, если там скриптина гадкая, которая всё мне сломает нахуй?
Помоги, анон!
Ответы: >>967843 >>967825 >>967840
Аноним 2017/04/06 05:39:22  №967824 81
>>967815
Юии это что-то спизженное с асп дот нета, а ларавель это скорее спизженные рельсы.

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

Но потом я прозрел и перешел на слим, а сейчас вообще частично перевел некоторую свою хуйню на опенрести
Аноним 2017/04/06 05:41:41  №967825 82
>>967822
Выноси аплоады в отдельную папку или на отдельный поддомен который про пхп ничего не знает, а просто отдаёт файлы.
Аноним 2017/04/06 07:58:52  №967836 83
>>966853

Возьми пока на пробу вот это, тут тредов 10-20 с картинками:

- http://www.mediafire.com/file/e8jt8v4fny3m5sk/threads-archive-66-72.zip
- http://www.mediafire.com/file/urj17w5s4w00jqc/threads-60-80.zip
- http://www.mediafire.com/file/gza5360wdzqd743/threads-archive-pr-1..17.zip

Если все нормально получится импортировать, я и оставшееся скину. Учти, что там верстка со временем менялась.

Я сам собирался когда-нибудь сделать архив, но все руки не доходили.

Также, есть еще такой архив, тут все HTML-файлы вcех тредов, без картинок, в исходном необработанном виде. Часть тредов была восстановлена из гуглокеша, что-то было восстановлено из DOM в браузере уже после того как тред был удален, потому там верстка может различаться: http://www.mediafire.com/file/aahizd9bi5kvmnk/threads-1-86-html-only.zip

Ну и если есть более важные дела, не трать слишком много времени на это.

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

>>966596

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

> Если захочу запретить пользователю ставить лайк самому себе, то в MySQL нужно писать триггер, а Postgres просто использовать CHECK?
Видимо, да. Судя по http://stackoverflow.com/questions/2538786/how-to-abort-insert-operation-in-mysql-trigger/8559284#8559284 там есть костыль, чтобы выбросить ошибку в ходе операции. Но конечно CHECK лучше так как он виден в SQL коде таблицы.


>>966516

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

>>966393

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

Ответы: >>967843 >>967843 >>984851
Аноним 2017/04/06 07:59:13  №967837 84
>>966275

В формах есть пара специальных типов полей:

- http://symfony.com/doc/current/reference/forms/types/collection.html
- также, можно вкладывать поля друг в друга (то есть у класса формы может быть поле-подформа) для отношений один-к-одному

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

Роуты может быть удобнее описывать не аннотациями, а в отдельном конфиге.

> if (!$tests) {
> throw $this->createNotFoundException(
> 'No tests'
Если тестов пока нет, то стоит выводить вместо списка сообщение об этом.

> ->createQuery("select a from AppBundle\Entity\User a
> where a.id=".$test->getAuthor()->getId())
Надо использовать плейсхолдеры, так же для поиска по простым условиям есть функции findBy(), findOneBy(), find().

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

> if (isset($_GET['status'])){
Надо использовать Request

>>966146

Ты про класс HttpKernel или компонент? Если посмотреть компонент https://github.com/symfony/http-kernel то там довольно много, так что наверно вопрос был про класс.

Вот интерфейс: https://github.com/symfony/http-kernel/blob/master/HttpKernelInterface.php
Вот реализация по умолчанию: https://github.com/symfony/http-kernel/blob/master/HttpKernel.php

Как видно, HttpKernel является чем-то вроде Front Controller, он обеспечивает нахождение и вызов контроллера, который будет обрабатывать запрос, обработку исключений и генерацию событий. События довлоьно важны, например, роутер в Симфони вызывается по одному из событий вроде REQUEST (а по событию EXCEPTION запускается обработчик, выводящий страницу ошибки). Хотя мне это не очень и нравится, так как такой неявный вызов роутера создает свои сложности.

Ответы: >>967843 >>967843
Аноним 2017/04/06 07:59:59  №967838 85
>>966103

Если ты используешь синтаксис вроде $this->... внутри коллбека, то надо проставить как-то тайп-хинт для this, может через @var $this, но не уверен, что это будет работать. Или откуда ты берешь объект ContainerWrapper? Надо как-то на эту переменную поставить тайп-хинт или phpDoc конструкцию.

>>966100

Ты просто неправильно поделил приложение на M/V/C.

Твое приложение можно рассматривать двояко:

- либо как единое целое, где MVC приложение находится на сервере, а JS-код - это лишь часть интерфейса, часть HTML-страницы, "тонкий клиент", который просто передает запросы на сервер и отображает ответы. То есть является дополнением к View.
- либо как 2 независимых приложения: серверное на PHP, и отдельное на JS, которое взаимодействует с сервером, но содержит свои модели, свое хранилище данных, может само их обрабатывать. Тут будет 2 набора M/V/C на клиенте и сервере.

Если JS код это отдельное приложение, то код на JS - долгоживущий, и ему нужен вариант MVC с активной моделью. Если что, вот тут на примере игры разбираются такие реализации MVC: https://github.com/codedokode/pasta/blob/master/js/minesweeper-mvc.md

Проще наверно рассматривать JS код как "тонкого" (с маленьким объемом логики) клиента, а PHP-код как отдельное MVC приложение. Тогда у нас на сервере мы используем обычные контроллеры, модели и вью. А задача JS приложения просто передать запрос пользователя на сервер и отобразить результат, оно просто служит продолжением контроллера и вью в PHP.

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

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

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

> Единственный вариант, который я вижу - json.
Это то же самое, что вывод HTML.

> Первый стул - это вернуть из пхп-скрипта (Модели) эти значения и уже в js-скрипте (Вид) подставить их в ячейки документа
> Второй стул - это оставить в index.php только место для вставки, а полностью весь код таблицы набрать в пхп-скрипте, передать его через айкс обратно js-скрипту и вставить одним действием

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

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

Ответы: >>967843 >>967919
Аноним 2017/04/06 08:00:26  №967839 86
>>965989

замечу еще что mysql-функции уже давно устарели.

>>965899

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

> public function getEmpolyees($position, $rank, $boss, $quantity)
Во-первых, название неправильное. Функции getSomething обычно что-то возвращают, но здесь это не так (здесь подойдет add). Во-вторых, ты искуственно ограничиваешь возможности по добавлению работников. Можно было бы сделать так:

addEmployee(Employee $employee)

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

Также, у тебя почему-то в getEmployees не проставляется поле quantity, хотя оно исплоьзуется в других функциях ниже. Почему?

Также, у тебя в коде ошибки:

> Notice: Undefined index: allDepSalary in /in/28B8k on line 186


> public function calculateall() //Произвести все расчеты и вывести на экран.
Это не задача департамента, что-то выводить на экран, это лучше сделать снаружи класса.

В классе Employee есть поле quantity, но оно почему-то почти нигде не используется. Зачем оно тогда?

> $salary = $salary + ($salary)*25/100;
Тут проще было определять только коэффициент, вместо того чтобы копипастить эту формулу несколько раз.

> If ($this->boss) $salary=$salary
Надо ставить фигурные скобки.

Слова class, if пишутся с маленькой буквы.

Сумму можно считать либо отдельной функцией, либо сделать класс Компания, а в нем методы для подсчета суммы.

Насчет поля quantity - надо его либо использовать, либо убрать. Либо ты помещаешь его в класс ГруппаРаботников, либо еще куда-то, либо убираешь. Но не как сейчас, что поле есть, но не используется.

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

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

В реализации наследования работников есть небольшая проблема. У тебя при наследовании надо обязательно прописать значения зарплаты, потребления кофе итд. Но как об этом догадаться? Как это проконтроллировать? Никак. Здесь лучше исользовать абстрактные методы вроде получитьБазовуюЗарплату(), сделать эти методы в базовом классе, чтобы нельзя было унаследоваться, не переопределив их.

Ответы: >>967843 >>967873
Аноним 2017/04/06 08:00:45  №967840 87
>>967820

На мой взгляд, в ларавель слишком много статических методов. После Симфони как-то не очень.

>>967822

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

Про меры безопасности при загрузке файлов можно прочесть в комментариях к задаче про файлообменник: https://gist.github.com/codedokode/9424217

Ответы: >>967843 >>967865
Аноним 2017/04/06 08:27:03  №967844 88
>>966622

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

> Как замэпить полученное число в сущность Article?
Никак. Одна сущность - одна таблица. Можно сделать только связь M-N между User, Article через промежуточную таблицу с timetamp, но я думаю, что эффективнее просто брать нужные данные SQL запросом.

> Вытаскивать QueryBuilder через leftJoin?
QueryBuilder нужен при сборке запроса в зависимости от условий

>>966678

Был какой-то php multiplexor.

>>966706

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

Зачем усложнять? Сущности/DQL надо использовать когда тебе нужен маппинг, получить 1 цифру из БД проще SQL или DQL запросом (DQL запрос тоже может возвращать 1 число, а не сущность).

> Кстати, вызывают ли @ORM\OneToMany(targetEntity="AppBundle\Entity\Comment", mappedBy="application", orphanRemoval=true, cascade={"remove"}) дополнительные подзапросы при обращении к свойствам или вытягиваются при любом запросе (в т.ч. и через QB)?

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

Имей в виду, что это может вызывать свои проблемы. Представь что у тебя у Поста 1000 комментариев. Если ты сделаешь count($this->comments) то даже это приведет к выборке всех 1000 комментариев в память. Добавление 1 комментария в коллекцию скорее всего тоже вызовет подгрузку существующих.

Хотя по моему, именно для COUNT там есть какая-то опция, которая позволяет сделать SELECT COUNT в такой ситуации.

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

Ну то есть, если представить как работает ленивая загрузка, станет понятно, когда какие запросы вызываются. по умолчанию доктрина пытается откладывать загрузку всего на потом.
Аноним 2017/04/06 08:33:57  №967845 89
PbGRqH1oNw.jpg (92, 569x535)
535x569
>>967820
кстати, раз уж ларавель-кун в треде, ответь на вопрос, будь ласка. мне надо админку делать к тестовому заданию, как правильно и грамотно? что читать, куда копать?
Ответы: >>967866
Аноним 2017/04/06 08:42:51  №967847 90
>>966976

Ссылка не работает, но по моему в сообщении черным по белым написана причина. Или у тебя использован этот тег, но все равно ошибка?

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

>>967018

Сравнить хеши от разных функций нельзя. Либо ты что-то делаешь неправильно.

>>967026

Напиши выражение для

"ровно 1 цифра, за ней любое число пробелов-минусов-скобок"

Затем возьми его в скобки и напиши что оно повторяется ровно 10 раз.

>>967265

Ответ чуть выше.

>>967318

Поищи статьи вроде "N лучших адаптивных сайтов". Посмотри, какие решения использованы.

Изучи:

- тег meta viewport, подробно
- CSS-медиазапросы @media (max-width) подробно
- атрибуты srcset, теги picture, source

Для начала наверно хватит.

>>967347

Если у функции аргумент, который принимает не значение, а ссылку на переменную:

function (&$x)

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

Почитай PHP мануал про ссылки.

>>967397

Читай оповское на гитхабе.

>>967431

Через return. Открой пример кода у ОПа и посмотри как сделан PostService: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

Это и есть модель.

>>967454

Зачем пишешь бред?

>>967394

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

>>967527

В PHP встроен мленький веб-сервер, почитай: https://github.com/codedokode/pasta/blob/master/soft/web-server.md

>>967666

foreach нужен для перебора массива, for для циклов со счетчиком или условием.

Аноним 2017/04/06 09:45:27  №967865 91
>>967840
Это не статика наверное, а фасады. Инфа гуглится
Аноним 2017/04/06 09:47:28  №967866 92
>>967845
Спроси у своего Мб погонщика нужна ли админка. Может тебя просто наябывают . И если нужна спроси прокатит ли вариант с совой
Ответы: >>967874
Аноним 2017/04/06 10:15:49  №967873 93
>>967839
>ты можешь сделать класс для группы работников
nananananan
Мы уже проходили это. Это очень бредовая идея.

>Насчет поля quantity - надо его либо использовать, либо убрать.
Используется же для создания работников в цикле getEmpolyees.

>У тебя при наследовании надо обязательно прописать значения зарплаты, потребления кофе итд.
Это подразумевается, когда ты создаёшь новую профессию, зачем её создавать не задав ей никаких параметров?
Ответы: >>971934
Аноним 2017/04/06 10:15:58  №967874 94
>>967866
нужна, надо простую написать самому
Ответы: >>968089 >>968809
Аноним 2017/04/06 10:51:07  №967885 95
>>966608 (OP)
Уже не знаю, что делать. В общем есть два блока:

<div>Блок1</div>
<div>Блок2</div>

Хочу разместить их строго друг за другом. Для этого прописываю в css display: inline-block; - везде пишут, что блоки приобретают свойство строчных элементов и располагаются строго друг за другом, а не переносятся наследующую строку. В Html-academy написано то же самое.

В результате у меня блок2 все равно переносится на новую строку. Вообще блядь ничего не меняется. Меня это дерьмо уже заебало. Помогите пожалуйста.
Аноним 2017/04/06 11:28:15  №967908 96
>>967885
Ебани бутстрап точнее отдельно сетку оттуда, номером с нуля делаешь то враппать 2 твоих блока надо классом с инлайном и ширину в % блока которые вложены. Считай все правильно делаешь, врапни и чилдам ширину добавь
Аноним 2017/04/06 11:38:22  №967917 97
>>967885
Ты все курсы в htmlacademy прошел? Такое ощущение, что нет.
Аноним 2017/04/06 11:39:26  №967919 98
>>967838
Окей. Я так понял, что мне о MVC пока думать рано и кодить, как кодится.
Ответы: >>967925
Аноним 2017/04/06 11:42:38  №967925 99
>>967919
>пока думать рано
А потом тебе станет 30 лет, останешься без работы и сбомжуешься насмерть.
Ответы: >>967928
Аноним 2017/04/06 11:44:40  №967927 100
Делаю сайт, закидываю изменения сразу на хостинг.
Внезапно, браузер начинает тормозить. В консоли сайта вот такая хрень. Штоэта? У меня таких js-ок вообще нет, а в шапке подгружаются только такие:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script><!-- для загрузки фото -->
<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script><!-- для загрузки фото -->
<script type="text/javascript" src="js/external/jquery/jquery.js"></script>
<script type="text/javascript" src="js/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery-ui-datepicker-ru.js"></script>
<script type="text/javascript" src="js/jquery.main.js"></script>
<script type="text/javascript" src="core.js"></script><!-- Основная логика сайта -->


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

Главное, я не понимаю, откуда вообще это подгружается? Как определить?
Ответы: >>967931 >>967938 >>971933
Аноним 2017/04/06 11:45:25  №967928 101
>>967925
>А потом тебе станет 30 лет
Мне 32.
Ответы: >>967939
Аноним 2017/04/06 11:50:17  №967931 102
>>967927
На хостинге тебя взломали. Вытаскивай оттуда код и смотри что к чему
Ответы: >>967986
Аноним 2017/04/06 11:55:02  №967938 103
>>967927
На хостинг - в смысле на модную одминку для веб-сайтов уровня бложеков, в которой даже ssh нет? Или на секурный тобою лично настроенный сервер?
Ответы: >>967986
Аноним 2017/04/06 11:56:55  №967939 104
>>967928
Пенсию небось получаешь? Или просто хикка?
Ответы: >>967977 >>967988
Аноним 2017/04/06 12:15:50  №967973 105
Ответы: >>967975
Аноним 2017/04/06 12:16:54  №967975 106
>>967973
> Аноним 06/04/17 Чтв 12:15:50  №967973
>
Руки бы тебе оторвать за флоаты
Ответы: >>967980
Аноним 2017/04/06 12:17:21  №967977 107
>>967939
Получаю, мамкину. Ну и второе тоже.
Аноним 2017/04/06 12:21:38  №967980 108
>>967975
Но ведь это решит его проблему.
Аноним 2017/04/06 12:25:10  №967986 109
>>967938
>>967931
Сервер Ру-центра. Там у нас самописный сайт на голом html+css+js. Внутри есть каталог уже с тем проектом, который я ковыряю. Левые запросы с самого сайта вроде не идут. А с моего подкаталога - идут, но не всегда. Не могу понять, что является спусковым крючком.
Ответы: >>967992 >>967996
Аноним 2017/04/06 12:25:52  №967988 110
>>967939
Работаю админом-эникеем.
Аноним 2017/04/06 12:28:18  №967992 111
>>967986
Возможно это от хостинга. 200 лет тому назад, на бесплатных хостингах былла такая фича, как инжект скриптов в сайты юзеров. Так же бывало в настройках, подключались так библиотеки разные.
Ответы: >>968004 >>971934
Аноним 2017/04/06 12:31:29  №967996 112
>>967986
Ну вот и говорю - если бы настроил сам все порты, базы, поставил бы всё вручную - никто бы не взломал.
Я уже, кстати, не первый раз сталкиваюсь с таким - жил был сайт на уважаемом "хостинге", а потом хуяк и взломали.
Почему-то если соблюдать элементарные правила, то всё работает как часы годами.
Аноним 2017/04/06 12:36:07  №968002 113
>>967885
Всё работает, о чём ты?
<div style="display:inline-block">Блок1</div>
<div style="display:inline-block">Блок2</div>
Аноним 2017/04/06 12:37:25  №968004 114
>>967992
Просканил сайт через virustotal.com и 2ip.ru/site-virus-scaner - пишут, что чисто.
Ответы: >>968007
Аноним 2017/04/06 12:41:18  №968007 115
>>968004
Так вирустотал же не может залезть во всю логику и внутренний код. Какой-то ты совсем профан, не понимаешь элементарных вещей.
Лучше подучись юниксам и прочим девопсам, в жизни пригодится.
Ответы: >>968017
Аноним 2017/04/06 12:56:21  №968017 116
>>968007
>Лучше подучись юниксам и прочим девопсам, в жизни пригодится.
Не пригодится. Админство умирает.
>Какой-то ты совсем профан
Раньше как-то не приходилось сталкиваться с вирусами на сайтах.

И ещё я выяснил, что запросы начинают идти сразу после процедуры логина. Странно. Там у меня цепочка login.php -> index.php -> manager.php либо guard.php. Всё по гайду из https://habrahabr.ru/post/13726/
login.php просто стучит в дыню в бд, генерирует хеш, сравнивает пароли, ставит куки и редиректит на index.php.
header("Location: index.php"); exit();
Что тут можно сломать - хрен знает. Я даже все файлы уже заменил на заведомо чистые. Не помогло.
Ответы: >>968025
Аноним 2017/04/06 13:14:27  №968025 117
>>968017
>Админство умирает.
А кто будет разворачивать всё и поддерживать? Дед Мороз?
Даже чтобы paas типа амазоновских приблуд настроить нужно дофига знания.
Ответы: >>968033
Аноним 2017/04/06 13:15:40  №968027 118
у кого есть ненужный макет сайта фотографа? мне в шарагу принести, да чтоб отъебались
Ответы: >>968030
Аноним 2017/04/06 13:22:16  №968030 119
>>968027
Погугли и скочай
Ответы: >>968034 >>968038
Аноним 2017/04/06 13:30:09  №968033 120
>>968025
>А кто будет разворачивать всё и поддерживать? Дед Мороз?
Данный срач не для этого треда. Но всё же не удержусь: количество админских вакансий с каждым годлом уменьшается, зарплата либо стоит на месте, либо уменьшается при очередном кризисе, а требования растут. Это статистика. Что там внутри происходит, какие процессы влияют - разговор отдельный. Но по итогу админство умирает. Я сейчас получаю килобакс за эникейство. Это с MCSA и CCNA. Могу я получать больше? Ну, положим, могу. 80к за въёбывание от рассвета до заката и ещё чуть-чут. Но это уже уровень руления цисковскими шеститонниками. Нужен мне такой геморрой за лишние 20к? Нет.
Аноним 2017/04/06 13:34:10  №968034 121
>>968030
хотел добротный от анона
Ответы: >>968038
Аноним 2017/04/06 13:48:23  №968038 122
Аноним 2017/04/06 14:47:24  №968081 123
Мучу файлообменник по задачке из ОП-поста.
И как бороться с повторным отправлением файла при возврате или обновлении странички? Вот это вот "повторная отправка формы".
Я сделал какую-то хуйню, чтоб избежать этого: заставил вылезать поп-ап после отправки файла - "файл отправлен" и когда тыкаешь на закрытие поп-апа, то идёт переход на страницу загрузки - ну слишком убогий костыль. Анон, что делать, а?
Ответы: >>968090 >>971933
Аноним 2017/04/06 14:56:34  №968089 124
>>967874
>
ну ебашь с нуля тогда
Ответы: >>968205
Аноним 2017/04/06 14:58:12  №968090 125
>>968081
После загрузки файла редиректь на его страницу сразу . Поидее сработает
Ответы: >>968095
Аноним 2017/04/06 15:03:18  №968095 126
>>968090
Не, если так, то при обновлении страницы или переходе назад - повторная отправка. Ну я и сделал по сути редирект, только через джаваскрипт и диалог, но это не очень.
Аноним 2017/04/06 15:08:38  №968103 127
И кстати почему-то не могу открыть файлы, отправленные и принятые на моём WAMP'е. Отказано в доступе, картинки не отображаются, архивы не открываются в общем. В свойствах нет владельца вообще. Чтоб открыть такой файл, приходится в свойствах назначать себя его владельцем или переместить на не системный диск. Но это походу дело в винде.
Ответы: >>968117 >>971933
Аноним 2017/04/06 15:30:23  №968117 128
>>968103
Купи уже нормальную линукс-впску и установи lamp.
Ты не будешь разворачивать на винде заказчику.
Аноним 2017/04/06 17:03:36  №968202 129
http://archive-ipq-co.narod.ru/l1/arrays.html делаю последнюю задачу в этом гайде, анончик подскажи пожалуйста как мне при выборе числа брать слог, который стоит в массиве на месте выбранного числа?
Ответы: >>968215 >>968442
Аноним 2017/04/06 17:05:46  №968205 130
>>968089
я и спрашиваю как с нуля ебашить. добавить страницу, роут и разрешить только юзеру админ туда войти? надо мидлваре контроллер написать?
Аноним 2017/04/06 17:21:13  №968215 131
Ответы: >>968219
Аноним 2017/04/06 17:24:50  №968219 132
>>968215
Ты нахуй бампаешь свой пост, который оставил меньше 20 минут назад, и который даже уплыть не успел сука? Вот нихуя тебе не буду подсказывать. Сиди думай сам, а не бампай, как ебанутый.
Ответы: >>968222
Аноним 2017/04/06 17:27:12  №968222 133
>>968219
ну лол, я сижу думаю уже часа 4 наверное. заебался если честно , уже хочется дальше пойти.
Ответы: >>968253
Аноним 2017/04/06 18:02:08  №968236 134
>>966744
Э бля, там че та качать надо, иди ка ты нахуй со своими зондами, репорт.
Ответы: >>968244 >>968249 >>968654
Аноним 2017/04/06 18:13:19  №968244 135
>>968236
Это телега же, лол
Аноним 2017/04/06 18:16:27  №968249 136
Ответы: >>968585
Аноним 2017/04/06 18:18:51  №968253 137
>>968222
Диды без двачей писали духам завещали дидов не увожаешь
Даже стэковерфлоу не было
Дана тебе документация, есть куча книг - жуй не хочу, нет, буду ждать идиотских ответов на дваче.
На дваче только поверхностное могут сказать, беги отсюда, пока молодой мелокбуквенный, оно тебя сожрет.
Ответы: >>968254
Аноним 2017/04/06 18:22:25  №968254 138
>>968253
в гугеле не знаю как сформулировать вопрос. блядь, разве так сложно мне ответить? Просто я не знаю как указать в массиве то что записано в $random
Ответы: >>971933
Аноним 2017/04/06 18:35:09  №968256 139
Как мне записать то что лежит в массиве $letters под номером $random????
Ответы: >>971933
Аноним 2017/04/06 19:33:44  №968288 140
Решаю задачу из урока "Повторим?", где надо изобразить калькулятор. Такой вопрос - мы храним в переменной "$op" одно из трех значений: "+", "-", "*". Такой вопрос - как из этой переменной вытащить строку и использовать как оператор? Такое вообще возможно? Ну типа:
$op = '+';
$result = 5 $op 4;

и результат будет 9.
Ответы: >>968294 >>971933
Аноним 2017/04/06 19:47:03  №968294 141
>>968288
Хотя уже не надо, я задачу с калькулятором так решил. Проверьте/посоветуйте, пожалуйста.

https://3v4l.org/1ensi
Ответы: >>971933
Аноним 2017/04/06 21:59:58  №968442 142
>>968202
Код свой покажи, а то непонятно, подойдёт ли тебе array_rand() или нет.
Ответы: >>968450
Аноним 2017/04/06 22:02:12  №968450 143
>>968442
там же есть код, самое последне задание
Ответы: >>968465
Аноним 2017/04/06 22:14:05  №968465 144
>>968450
Ты свой покажи.
Короче, тебе нужна функция mt_rand() - выберешь число из количества элементов в массиве - посчитай это количество, а ещё нужно вспомнить, как доставать значение из простого массива, имея ключ - число.
Аноним 2017/04/07 02:43:24  №968585 145
>>968249
Это как-то сложно, там сайт с сотовым.
Аноним 2017/04/07 02:52:23  №968588 146
>>965842
>Электросеть
https://jsfiddle.net/6591a2sL/7/

>> Если что, я не согласен с вашим замечанием - потому что мне не нужно было давать ссылку на Сеть, только передать уже посчитанный баланс. Можно было считать Сеть за контроллер, а ЛЭП за модель которая содержит вспомогательные методы расчета. А теперь в эти методы нужно передавать ссылку на ЛЭП. Мне из-за этого кажется что я понял и сделал всё ещё более худшим образом.
>Я уже не очень понимаю, о чем речь. Тот метод, что используется сейчас, вполне подходит. Если хочется обсудить другой вариант, то хорошо бы увидеть хотя бы кусочек кода.

Было:
function ElectricalNetwork(...) {
...
}

function PowerLine(..., price) {
...
this.price = price;
}

PowerLine.prototype.countPowerAfterPass= function(power) {
...
}

PowerLine.prototype.countPrice = function(power) {
...
}

Потом стало:
function ElectricalNetwork(...) {
...
}

ElectricalNetwork.prototype.countPowerAfterPass= function(linkToPowerLine, power) {
...
}

ElectricalNetwork.prototype.countPrice = function(linkToPowerLine, power) {
...
}

function PowerLine(..., price) {
...
this.price = price;
}

>> Можно я не буду эту менять? Придётся заново переосмысливать мою программу.
>По идее, ты должен стараться писать программу так, что в ней было легко разобраться. И соответственно небольшие изменения не должны вызывать сложностей и ради них не требуется всю программу переделывать, а только небольшую часть. А если все оставить как есть - может ты и дальше будешь писать цикл там, где он не требуется.
На самом деле, сейчас я припоминаю, что сначала я пытался решить через min()\max(), но у меня что-то не получалось и я решил написать счетчик через цикл, как и должно быть работают счетчики в реальном мире.


>Определение типа переменной
https://jsfiddle.net/5q3r473h/5/


>Напиши функцию неглубокого копирования объектов и массивов
https://jsfiddle.net/uyey3at1/6/

>> var clone = object.bind(clone);
>Тут ошибка. Во-первых, клонировать функции не требуется (да и это невозможно наверно), во-вторых, если уж клонировать, то непонятно почему надо привязывать this к пустому на тот момент значению clone. Что делает этот bind?
Я пытался получить новую функцию из старой.

>> Включая примитивные значения, которые на самом деле тоже объекты?
>Это не так. Почитай пожалуйста еще раз про боксинг, например в моих заданиях по JS ( https://gist.github.com/codedokode/ce30e7a036f18f416ae0#Боксинг ) или в других статьях: http://www.jisaacks.com/javascript-boxing/
>
>Примитивные значения - это не объекты, но если пытаться их использовать как объекты (обращаться к свойствам или методам), для них автоматически создается временный объект, в который заворачивается примитивное значение.
Ах да точно, я забыл про это.


>Глубокое копирование
>Тут те же замечания, что и к предыдущей задаче.
https://jsfiddle.net/b0a7tk75/3/
Ответы: >>971932
Аноним 2017/04/07 10:34:43  №968654 147
1325368323001.jpg (17, 414x600)
600x414
>>968236
Не только этот долбоёб, но ещё и модератор долбоёб.....
Сажи вам с картинкой и бугуртом...
Ответы: >>968655 >>969466
Аноним 2017/04/07 10:35:23  №968655 148
Ответы: >>969466
Аноним 2017/04/07 11:46:06  №968667 149
В общем есть некая страница профиля студента. Нужно реализовать функционал, благодаря которому студент сможет загрузить свое фото и оно будет отображаться в его профиле. Как это проще всего реализовать? Буду благодарен за любые советы.
Ответы: >>968720 >>968723
Аноним 2017/04/07 11:52:09  №968669 150
Есть конструкция вида (function($){…})(jQuery). Когда она находится внутри <script></script> прямо под тем html-кодом, который её вызывает, всё ок. Но стоит перенести функцию в отдельный js-файл, как работать перестаёт, просто не реагирует на нажатие кнопок, как будто его и нет.
Весь код: https://jsfiddle.net/ex16zd7h/

>«(function($){…})(jQuery) » создает анонимную функцию, и тут же
>вызывает ее, передавая в качестве параметра объект jQuery, таким
>образом внутри анонимной функции мы можем использовать алиас $
>не боясь за конфликты с другими библиотеками — так как теперь $
>находится лишь в области видимости нашей функции, и мы имеем
>полный контроль над ней.

Как её правильно вынести в отдельный файл?
Ответы: >>968671 >>968735 >>971930
Аноним 2017/04/07 11:58:36  №968671 151
Ответы: >>968672
Аноним 2017/04/07 12:03:02  №968672 152
>>968671
Не понял тебя. По ссылке правила для $( document ).ready(), но у меня скрипт должен срабатывать не после загрузки страницы, а при клике по ссылке. JS-файл загружается в head самым последним. А код, который хочу перенести из html-файла, в js-файле вставляю тоже в самый низ.
Ответы: >>968673
Аноним 2017/04/07 12:11:24  №968673 153
>>968672
Браузер выполняет твой html (именно html, не js) сверху вниз. Когда ты подрубаешь свой js файл через тег <script> у тебя в доме находятся только те теги которые выше него в html файле. В твоём коде за авторством Тимура эвент вешается на ссылку через $('.submit.button').click но видимо в этот момент дом пуст, там еще нет этой ссылки. Твои варианты:
1) дерунть код в конце html файла руками через чет типа <script>init();</script>
2) дернуть код через $(document).ready
3) использовать $().live или $().on или как он блять сейчас в этой параше называется чтобы вешать эвенты на те элементы, которых еще нет в доме.
Ответы: >>968674 >>968680 >>971930
Аноним 2017/04/07 12:14:33  №968674 154
>>968673
>2) дернуть код через $(document).ready
То есть, обернуть js-код в эту обёртку? Спасибо, попробую.
Аноним 2017/04/07 12:22:33  №968680 155
>>968673
Спасибо, получилось.
Аноним 2017/04/07 13:41:47  №968720 156
Аноним 2017/04/07 13:48:56  №968723 157
>>968667
Ячейку в таблице student назвать avatar.
Затем функционал по загрузке изображения - экшн actionSetAvatar(), там метод по загрузке изображения, проверке-валидации, затем убрать прежний аватар, если есть, а потом сохранить и отрендерить.
Что-то такое, наверное.
Ответы: >>968724
Аноним 2017/04/07 13:51:21  №968724 158
>>968723
А, да: при этом в ячейке avatar сохранять кодированное имя изображения - md5 какой-нибудь. Чтобы у всех студентовских аватарок было своё имя, уникальное.
Довольно много всего нужно, конечно.
Аноним 2017/04/07 13:58:43  №968735 159
Ещё вопрос к >>968669. Пытаюсь передать через аякс не одну переменную, а несколько. Но конструкция, типа
data:
{
data1:data1,
data2:data2,
},

Не работает. Хотя в другом скрипте работает.
Аноним 2017/04/07 15:42:09  №968779 160
Черт побери. Как? Как я должен выбрать именно то число которое выпало?? Я не понимаю. Уже второй день ебус с этим, хелп
Ответы: >>968781 >>968784 >>968795
Аноним 2017/04/07 15:53:00  №968781 161
>>968779
>Как я должен выбрать именно то число которое выпало?
Наверное, ты имеешь в виду:
$selector = mt_rand (0, 999) % 1000;
Где тысяча — количество элементов в массиве (это я так написал, чтобы понятно было).
Ответы: >>968782
Аноним 2017/04/07 15:57:29  №968782 162
>>968781
не, смотри. я думал об этом. У меня условие, что надо выбрать 4 элемента из массива, и указать их индекс. Как узнать индексы рандомом я понимаю, как вывести тоже, но как узнать то, что записано в эти индексы и вывести это? Вот это я не понимаю.
Ответы: >>968795
Аноним 2017/04/07 16:06:13  №968784 163
>>968779

Ты читал мануал? array_rand выбирает случайный элемент из массива и возвращает его ключ (в твоем случае это скорее всего будет число, так как ты при создании массива не указал ключи явно, то PHP просто присвоил им порядковые номера). Проверить что именно в переменной, можно командой echo или var_dump.

А теперь открой урок про массивы и поищи, как имея массив и ключ элемента, получить значение этого элемента? Это и будет искомый слог. Если не найдешь, напиши, я или кто-то еще напишет правильный ответ.
Аноним 2017/04/07 16:28:33  №968795 164
>>968779
Ты смотри, мелкобуквенный пидр заговорил по-человечески!
Выше тебе уже объяснили всё и не раз.
>>968782
За 4 дня ты не смог дойти до того, что $randomText = $letter[$random]?
Объяснил же тебе выше всё.
Делай вар_дампы постоянно, пробуй, тыкайся, уточняй ответы анонов, хули ж ты.
Ответы: >>968798
Аноним 2017/04/07 16:35:06  №968798 165
images (1).jpg (2, 256x192)
192x256
>>968795
чувствую себя парнем с пика. Пиздец просто. Я тупо ставил () перед [] и из за этого нихуя не работало, ибо в гайде такой синтаксис был. Вот я еблан
Ответы: >>968846
Аноним 2017/04/07 17:07:09  №968809 166
>>967874
Интересно, выложи полное ТЗ.
Ответы: >>969407
Аноним 2017/04/07 18:18:18  №968846 167
>>968798

Напиши, где именно был неправильный пример - я проверю и исправлю, если что-то не так.
Ответы: >>968851
Аноним 2017/04/07 18:25:55  №968851 168
>>968846
Я посмотрел, на самом деле я еблан, но все же в разделе Повторим в массивах, нету Того как выводить определенный элемент зная его индекс. и там только в обучалке написан пример с echo 'Lalala {$weather[0]} , а я не заметил что там { и ставил(.
Ответы: >>968863
Аноним 2017/04/07 18:31:49  №968863 169
Аноним 2017/04/07 20:34:36  №968948 170
Объясните зеленому, как оформить такую плавную смену фона, как на этом сайте?
https://kettlenyc.com/
Ответы: >>969046
Аноним 2017/04/07 21:32:15  №968966 171
Решил первую задачу из урока "Еще немного задачек", про банкомат, на основе жадного алгоритма.

https://3v4l.org/WDC9X
Ответы: >>971930
Аноним 2017/04/07 22:45:39  №968998 172
Ответы: >>971929
Аноним 2017/04/08 01:51:18  №969046 173
>>968948
Код страницы открывать не пробовал? Стоит сразу в body:
-webkit-transition: background-color 0.5s ease-out,fill 0.5s ease-out;
transition: background-color 0.5s ease-out,fill 0.5s ease-out;
background-color: #fffb93;

background-color меняется через добавление класса с другим background-color через js, плавность через transition
Ответы: >>969195
Аноним 2017/04/08 11:57:45  №969195 174
>>969046
Спасибо, добрый анон, я попробую.
Аноним 2017/04/08 15:29:45  №969308 175
Аноны. Еще вопрос по симфони:
Что такое бандл? Это просто часть проекта? Нормально ли создавать бандл без контроллеров и вьюшек чисто для хранения бизнес-логики, чтобы использовать этот бандл в других бандлах? Можно ли настроить роутинг так, чтобы в зависимости от субдомена использовался определенный бандл? Можно ли создать бандл чисто для отдельной части сайта? Например для всех путей сайта бандл MainBundle, а для http://site.com/api использовался ApiBundle?
Ответы: >>969420
Аноним 2017/04/08 18:35:39  №969407 176
Ответы: >>969436
Аноним 2017/04/08 19:01:22  №969420 177
>>969308

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

http://symfony.com/doc/current/bundles.html

Бандл может предоставлять:

- сервисы в контейнере
- роуты
- контроллеры
- сущности доктрины
- шаблоны
- статические файлы

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

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

Бандлы в большинстве случаев самодостаточны и друг от друга не зависят.

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

> Можно ли создать бандл чисто для отдельной части сайта? Например для всех путей сайта бандл MainBundle, а для http://site.com/api использовался ApiBundle?
Можно

> Можно ли настроить роутинг так, чтобы в зависимости от субдомена использовался определенный бандл?
Можно, но не автоматически, а вручную прописать в разные роуты контроллеры из разных бандлов
Аноним 2017/04/08 19:34:16  №969436 178
>>969407
Любой фреймворк бери, разбирайся и делай на нём, это же не возбраняется.
Или ты прямо с нуля хочешь?
Аноним 2017/04/08 19:58:19  №969450 179
Всем привет. В общем есть обычная формочка для загрузки изображения:

<form enctype="multipart/form-data" action="photos.php" method="POST">
<input name="filename" type="file" />
<input type="submit" value="Send File" />
</form>

Хочется передать переменную $get вместе с изображением, но я не знаю как. Как сделать так, чтобы эта форма передавала и переменную и изображение?
Ответы: >>971929
Аноним 2017/04/08 20:04:47  №969451 180
приветик, а где можно найти себе вторую половинку в виде фронтенда? а то я ток в бекенд умею но это не точно, а хочется что-то красивое пилить
Ответы: >>971929
Аноним 2017/04/08 20:46:09  №969462 181
В вопросотреде не отвечают ((

Поясните за source страницы. Почему в инспекторе я вижу нормальные значения, а когда захожу в код или беру dom скриптом, то некоторых значений нет? Как мне распарсить dom уже с финальными значениями из инспектора?
Ответы: >>970540 >>971929
Аноним 2017/04/08 20:49:13  №969466 182
>>968655
>>968654
Найс пиарщик порвался. А модератор хороший человек, не проигнорировал. Спасибо Абу.
Аноним 2017/04/08 21:10:20  №969476 183
Все тот же тупой анон на связи. Решаю задачу на строки, и тут возник вопрос, а что переделать в программе? Я нипанимаю( вот текст задачи.
l33tspeak
Если ты когда-нибудь видел хакеров (например, в кино или в интернете), то знаешь, что у них есть свой, особый язык, который позволяет отличать своих от чужих. Он называется l33tspeak, и объяснен в википедии: http://en.wikipedia.org/wiki/Leet (как видишь, википедисты обладают элитными знаниями).

Чем мы хуже хакеров? Давай напишем программу для перевода текста на элитный язык. Опять же, воспользуемся массивом перекодировки и функцией strtr

Задачка: доделай программу по ссылке http://codepad.org/5XEkSKHI для перевода текста на l33tspeak. Покажи нам результат.
Ответы: >>969496
Аноним 2017/04/08 21:52:14  №969496 184
>>969476
Это какая-то неприлично простая задача. У меня испанский стыд.
Ответы: >>969497
Аноним 2017/04/08 21:52:56  №969497 185
>>969496
я только начинаю изучать и это задача на самом начале изучения строк. я просто не понимаю в чем заключается вопрос, что не так работает в программе?
Ответы: >>969501
Аноним 2017/04/08 21:53:46  №969499 186
Ответы: >>969514 >>971928
Аноним 2017/04/08 21:55:59  №969501 187
>>969497
Нужно все буквы в строке поменять на хуйню типа: "/7rN|3€t".
Ответы: >>969502 >>971929
Аноним 2017/04/08 21:56:42  №969502 188
>>969501
а, так это правда очень легко.
Аноним 2017/04/08 22:22:20  №969514 189
>>969499
Если что-то повторяется, то надо использовать цикл.
А это решение никуда не годится.
Аноним 2017/04/08 22:32:09  №969518 190
Делается словарь с алфавитом. Циклом проходится каждый символ в строке, вложенным циклом проходит по словарю, заменяет тукущий символ или просто пишет новую строку.
Аноним 2017/04/09 01:07:11  №969566 191
А когда можно будет сказать, что я владею php достаточно неплохо? Что надо уметь?
Ответы: >>969589 >>971928
Аноним 2017/04/09 02:17:48  №969589 192
2016-07-19141324.jpg (79, 368x497)
497x368
>>969566
Достаточно не плохо для чего?
Ответы: >>969654 >>969655 >>969871
Аноним 2017/04/09 08:17:50  №969654 193
14334131747083.jpg (49, 604x455)
455x604
>>969589
Чтоб бабаос с лохов рубить, очевидно же.
Аноним 2017/04/09 08:18:30  №969655 194
>>969589
Ну он не понимает просто пока ничего, и ему отправная точка нужна и цель какая-то. В общем что бы можно было проложить маршрут. Причем не длинный, а по конкретным ключевым точкам. Ну тип вроде как пришел на собеседование. А там:какие паттерны вы знаете? И ты такой ну вот эти 10 знаю, и рассказал. И на тебя уже как на человека смотрят. Хочется вот так же что бы было. А то, что на самом деле это за вечер "учится", никого не ебет.
А не дрочишься 2 года такой в разработке. А у тебя всё на сингтоне и норм. А на собеседовании ты такой, ну тип синглтон. А они такие: и что, всё? Ну вы знаете, мы вам перезвоним.
Аноним 2017/04/09 11:45:10  №969724 195
Как вот такая штука реализовывается: https://briefly.ru/aristofan/ljagushki/
При просмотре страницы прогресс-бар внизу увеличивается, показывая, сколько ещё осталось.
Тут анон ещё спрашивал об эизменениия фона при скролле 0 в ту же тему.
Аноним 2017/04/09 13:41:01  №969871 196
>>969589
Чтобы я мог уже не столько учить новые команды, сколько мог уже улучшать понимание изученных. То есть тот уровень, при котором основами я владею хорошо.
Аноним 2017/04/09 13:47:16  №969877 197
Сап, чет не могу сообразить. Вывел изображение из папки кодом:

echo "<img src='/images/".$id.".jpg'>"

Все нормально вывелось. Затем, если заменить это изображение в папке другим изображением с таким же именем, то на сайте все равно остается старое изображение, хотя в папке новое.
Ответы: >>969880 >>971928
Аноним 2017/04/09 13:48:52  №969880 198
>>969877
А, все, чет не работало не работало, а потом стало работать. Странно.
WordPress Аноним 2017/04/09 14:41:16  №969982 199
Кто-то с чего начинал изучать WordPress?
Какие книжечки читали по нем ?или прочее
Аноним 2017/04/09 16:27:34  №970087 200
Снимок.PNG (43, 755x628)
628x755
>Notice: Trying to get property of non-object on line 16
Помоги анон.
Foreach + массив - могу
Foreach + объекты - могу
For + массив - могу
For + объекты - не врубаюсь как
Ответы: >>970090 >>970143 >>971928
Аноним 2017/04/09 16:30:16  №970090 201
>>970087
<?= $obj->info->people[$i]->name ?>
Ответы: >>970101 >>970121
Аноним 2017/04/09 16:33:54  №970101 202
>>970090
Ох, спасибо. Я уже и методом тыка кучу вариантов перебрал... Не нашёл примеров.
Аноним 2017/04/09 16:42:22  №970121 203
>>970090
Кстати, пишут, что ++$i вроде как работает быстрей.
Я попробовал, визуально ничего не изменилось.
Стоит ли использовать в этом примере?

меньше недели учу php, извиняйте
Ответы: >>970143 >>971928
Аноним 2017/04/09 16:53:31  №970143 204
>>970121
Не быстрее, это просто пре-инкремент, когда сначала происходит математическая операция, а затем возвращается значение. А $i++ это пост-инкремент, сначала возвращается значение, а потом происходит математическая операция. В этом >>970087 коде если поменять $i++ на ++$i, то код выведет все элементы массива начиная с индекса 1, пропустив при этом 0 (самый первый).

Это так же имеет отношение к декременту, подробнее можешь тут почитать
http://php.net/manual/en/language.operators.increment.php
Ответы: >>970196
Аноним 2017/04/09 17:24:41  №970196 205
>>970143
Спасибо, уже читаю.
Ответы: >>970462
Аноним 2017/04/09 18:14:56  №970242 206
В общем есть изображение, которое пользователь загружает в форму. Нужно, чтобы его размер пропорционально изменялся
Аноним 2017/04/09 18:15:19  №970243 207
Аноним 2017/04/09 19:18:51  №970366 208
>>970242
Пропорционально чему?
В процентах от экрана можно.
$width = 200;
$height = 'auto';
Аноним 2017/04/09 20:36:33  №970462 209
>>970196
Прочитал, ++$i сомнительная штука.
>>970242
В html и css например, прокатывало пописывание только одного значения высоты или ширины.
Аноним 2017/04/09 22:11:55  №970540 210
Аноним 2017/04/09 22:26:31  №970551 211
Ребят, я тут сейчас перекатываюсь в веб разработку, смотрю различные фриланс сайты и т.д. Вы мне можете объяснить, кто такой senior wordpress developer. То есть аноны там что-то зарабатывают работая с html&css и wp. Я с wp не работал, но за что там могут платить? То что я слышал, то там и программирования как такого нету. Ты вот тянешь для разработки html/css/js + php, паттерны там какие то учишь, фремворки, а можно просто делать сайтики на wp? поясните, плиз.
Аноним 2017/04/10 02:44:44  №970693 212
>>970551
>за что там могут платить
За вредность.

>Ты вот тянешь для разработки html/css/js + php, паттерны там какие то учишь, фремворки, а можно просто делать сайтики на wp?
Ты всю свою карьеру собираешься сайтики на WP разрабатывать?
Советую не тратить на это время, потому что заебет не через год, так через три.
А приобретенные за это время навыки и практики тебе нигде не пригодятся, или чего хуже только навредят.
WP, друпал и прочие джумлы это тупик. Если хочешь быть разработчиком, а не администратором CMS, начни с изучения основ.
Аноним 2017/04/10 02:47:43  №970694 213
>>970551
>senior wordpress developer
Петушара это зашкваренный. Ни один серьезный разраб не будет такое про себя писать.

>Я с wp не работал, но за что там могут платить?
Говносайтов туча на нем, заказчиков много. Паттерны-фреймворки там не нужны, достаточно доку по вордпрессу прочитать. Платят мало, ибо скиллов особо не требуется.
Аноним 2017/04/10 11:43:34  №970784 214
Взялся за задачу про студентов, несколько дней разбирался в css, запилил формы реги/логина, почитал про БД, поковырялся в mysql admin'е, опять же почитал про MVC и остальные вводные со страницы задачи, а дальше то чтооооо? Оп предлагает пердолится с ходу с фреймворками типо автоподключения классов и PDO, меня это в первую очередь пугает.

Может кто скинет годный урок по созданию первого простенького сайта с подключением БД и какими-то действами в php? Хотя бы понять алгоритм действий и увидеть как это всё строится.
Аноним 2017/04/10 11:47:13  №970787 215
>>970784
>Может кто скинет годный урок
Я сам недавно вникал в это, нашёл такое:
http://phpfaq.ru/pdo
Попробуй, мне нормально зашло.
Ответы: >>971546
Аноним 2017/04/10 15:13:27  №970899 216
>>970784

Вообще, если ты читал урок по MVC, то можно для начала сделать как там, без базы данных, просто пример данных в коде записать. А позже добавить работу с базой данных.
Аноним 2017/04/10 19:49:33  №971106 217
>>970551
Senior Microsoft Word VBA Scripts Developer
Аноним 2017/04/10 20:52:54  №971171 218
ОП, я ниасилил задачку из твоего учебника на навигацию по Питеру. Я совсем безнадёжен, да?

зы. Задачку на рекурсию про "Ханойскую башню" с другого сайта решил за пару минут, не заглядывая в подсказки (просто почитав, что такое вообще рекурсия), а эта что-то вообще не зашла, но очень заинтересовала. Что курить для её решения своими силами?
Ответы: >>971237 >>971336 >>971927
Аноним 2017/04/10 22:00:10  №971231 219
>>970784
Автоподключение и pdo это не фреймворки, а часть php же, в любой книге по php их проходят. Фреймворки это когда symphony какой-нибудь натягиваешь.
Аноним 2017/04/10 22:03:07  №971237 220
>>971171
Норм все. Я когда начинал, тоже всякое такое примитивное осилить не мог неделями, щас достаточно сложные проекты пилю. Мозги раскачиваются постепенно на программирование, сразу ничего не бывает. Просто пробуй дальше каждый день, потом легче пойдет.
Ответы: >>971307
Аноним 2017/04/10 22:53:28  №971307 221
14628031818000.jpg (68, 609x609)
609x609
>>971237
>тоже всякое такое примитивное
>всякое такое примитивное
>такое примитивное
>примитивное
>алгоритм дейкстры-хуекстры
Аноним 2017/04/10 23:11:36  №971336 222
>>971171
я не могу банкомат решить на не жадном алгоритме, так что ты даже умнее меня
Ответы: >>971416 >>971927
Аноним 2017/04/11 00:18:07  №971416 223
>>971336
Никто не может вообще-то из присутсвующих.
жопа 2017/04/11 02:23:38  №971490 224
examcode.png (39, 2088x738)
738x2088
exam.png (27, 1338x768)
768x1338
Сап пыхыпач, решил вкатиться в веб, для себя начал вкатывание с пыхи, имею базовые знания в программирования, в качестве первой задачи выбрал написание двачаанонимного форума
За 2 дня была успешно сделана система постинга без картинок картинки постараюсь сделать завтра если не буду сильно занят
Мне интересно, насколько некорректно делать отображение как я сделал ? с использованием хтмл тегов в пхп коде
Посоветуйте как прикрутить по больше функционала и сделать код красивее.
Ответы: >>971496 >>971513 >>971927
Аноним 2017/04/11 02:30:45  №971496 225
>>971490
нихуя, тут были гайды всё это время, пошёл читать, раз такое дело просто оцените моё говно по степени говняности \10, где-то 7-10 часов моего старания вот.
Ответы: >>971508
Аноним 2017/04/11 02:50:27  №971508 226
>>971496
Убер говно конечно-же.
Главное то, что вообще сделал.
Ответы: >>971510
Аноним 2017/04/11 02:53:46  №971510 227
>>971508
Мне нужны объяснения
хотя читая гайды я кое что понимаю
пожалуйста
Ответы: >>971517
Аноним 2017/04/11 03:09:13  №971513 228
>>971490
а ещё вопрос, насколько предпочтительнее ООП нежели его не использование.
Ответы: >>971517 >>971579 >>971925
Аноним 2017/04/11 03:19:18  №971517 229
>>971510
>>971513
Сначала гуиды, а потом вопросы. Там все расписанно.
Ответы: >>971518
Аноним 2017/04/11 03:20:18  №971518 230
>>971517
но, но ...
мне интересно сейчас
Ответы: >>971520
Аноним 2017/04/11 03:44:00  №971520 231
>>971518
Слишком много писать, по этому все собрали воедину и запилили одним гуидом.
Аноним 2017/04/11 07:36:59  №971546 232
>>970787
Сразу же в начале куча не известных мне слов. Объяснятся очевидно для тех кто уже работать с БД.

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

Плюс очень удобно задать FETCH_MODE по умолчанию, чтобы не писать его в КАЖДОМ запросе, как это очень любят делать прилежные хомячки.
Также здесь можно задавать режим pconnect-а, эмуляции подготовленных выражений и много других страшных слов.

Вот абсолютно ничего не понятно.
Ответы: >>971742 >>971925
Аноним 2017/04/11 10:14:48  №971579 233
>>971513
С объектами проще управляться в крупном проекте.
Представь, у тебя куча функций простых, которые явно никак друг с другом не связаны, замучаешься разбираться.
А представь класс, у которого всё определено в свойствах и методах, методы (те же функции) относятся только к этому классу (не обязательно, можно статические методы, которые будут работать независимо), всё удобно и понятно.
Аноним 2017/04/11 12:09:12  №971643 234
Ребята. Только вкатился в php и программирование, в общем. Есть проблема с заданием из учебника опа. Подскажите, что не так с моим кодом http://ideone.com/hQmnsB ?
Ответы: >>971671 >>971699 >>971925
Аноним 2017/04/11 12:46:34  №971671 235
>>971643
Попробуй поставить if с (creditBalance < 0) в начале цикла, а не конце.
Ответы: >>971965
Аноним 2017/04/11 13:03:15  №971682 236
Аноны, поясните, что за путаница. Почему во всех русскоязычных мануалах padding - поля, а margin - отступы? Ведь правильный перевод с англ. padding - отступы, а margin - поля. Я учил по второму варианту, и теперь читаю русскоязычные уроки, задания и мозг плавит. Как канонично?
Ответы: >>971690 >>971925
Аноним 2017/04/11 13:08:47  №971690 237
>>971682
> правильный перевод с англ
> padding
падинг
> margin
маржин

Так проще.
Ответы: >>971843
Аноним 2017/04/11 13:17:01  №971699 238
>>971643
Сначала проверяй на отрицательность, потом только сохраняй значение.
Ответы: >>971965
Аноним 2017/04/11 13:40:17  №971712 239
Такой вопрос, а в CSS всегда в body указывается margin: 0px;? Если не написать этот кусок кода, то съезжает разметка слегка в сторону. WTF?
Ответы: >>971925
Аноним 2017/04/11 14:05:16  №971742 240
>>971546
Понял, что без PDO уже нихуя не сделать, дайте по нему нормальный гайд для даунов, потому что въехать в prepare и execute просто не возможно, на php-manuale как обычно хуйня написана без пояснений.
Аноним 2017/04/11 16:09:40  №971843 241
Аноним 2017/04/11 16:15:23  №971850 242
ОП, можно я использую структуру твоего учебника для создания курса по РНР?
Хочу сделать блог с курсами: от сих до сих изучаешь что-нибудь, после чего можешь считать себя тем-то тем-то.
Курсы там будут по Photoshop, PHPStorm, по Yii2 уже почти готов, ну вот и хочу сделать по РНР, скопировав структуру, задачи (но там и куча других будет разных, а многих сложных и не будет - из "дополнительных").
Сам текст я переработаю, но вот структуру могу ли взять, формулировку задач?
Часть у тебя, часть у Робина Никсона, там тоже толково многое и понятно.
Аноны так-то возмутятся всё равно, наверное.
Ответы: >>971922
Аноним 2017/04/11 17:50:07  №971922 243
>>971850

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

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

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

Вообще, я давно собирался опубликовать тексты и картинки под какой-нибудь открытой лицензией creative commons (но пока не выбрал, под какой), но в этом случае там свои подвохи - надо указывать автора и надо публиковать свой текст под аналогичной лицензией. Если ты на такое готов в будущем (когда я выберу лицензию), то можешь копировать. Нет - пиши сам.
Ответы: >>972123
Напомню Аноним 2017/04/11 17:50:40  №971924 244
Аноним 2017/04/11 17:51:25  №971925 245
>>971712

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

Если тебя это не устраивает, просто задай свои значения через CSS.

Не используй CSS reset, так как он отменяет много полезных вещей (те же отступы между абзацами, отступы в списках).

>>971682

Я обычно использую такие термины:

- margin: отступ
- padding: поля

Так как padding - это поля внутри элемента (как поля на странице книги), а margin - это отступы между соседними элементами (хотя в английском да, поля на странице называют page margins).

>>971643

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

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

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

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

>>971513

ООП нужен для двух целей:

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

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

2) классы используют для организации кода, когда его много. Чтобы разбить код на N классов, каждый из которых отвечает за свою область, умеет решать одну задачу. Вообще, ООП тут не единственное решение, можно например разбивать код на модули (этого нет в PHP, но есть в других языках)

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

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

>>971546

Урок по исключениям, лучше изучать после ООП: https://github.com/codedokode/pasta/blob/master/php/exceptions.md
Ответы: >>971965
Аноним 2017/04/11 17:51:47  №971927 246
>>971490

Функции mysql.. устарели. Я бы советовал сразу переходить на PDO. Но там надо знать ООП.

Далее, у тебя еще есть такая проблема. Начинающие, когда пишут свои первые программы, просто пишут команды подряд, не разбивая код на части. Пока программы маленькие, это приемлемо. Но веб-приложения сложнее и больше и тут такой подход плохо работает. Надо отучаться писать стены кода и надо приучаться разбивать его на части, на отдельные функции. Разделять логику и HTML-шаблоны. Для этого можно почитать мой урок по MVC https://github.com/codedokode/pasta/blob/master/arch/mvc.md

Далее, у тебя банально идет незнание синтаксиса PHP. Нельзя писать $array[x], надо $array['x']. PHP должен выдавать ошибку, просто у тебя наверно отключен display_errors и ты их не видишь. Тебе надо перечитать мануал PHP внимательно.

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

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

Ну и HTML/CSS тоже надо подучить - <br> в HTML пишется без слеша в конце. Это не XHTML.

Советую изучить ООП, потом читать задачу про студентов.

>>971336

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

>>971171

А ты читал описание алгоритма Дейкстры? И вообще, про алгоритмы поиска пути? В Википедии есть список. Надо просто реализовать Дейкстру или любой другой алгоритм поиска пути на PHP. Вообще, алгоритмов много, есть например А-star и другие. В играх например они часто нужны.

>>970784

Еще добавлю, что по автозагрузке классов у меня есть отдельный урок https://github.com/codedokode/pasta/blob/master/php/autoload.md
Аноним 2017/04/11 17:52:07  №971928 247
>>970551

Установка плагинов, верстка, натягивание верстки, написание своих тем и плагинов. Я бы не советовал, это чуть лучше просто верстальщика.

>>970242

Изучи расширение gd к PHP, там есть функция imagecopyresampled для изменения размера картинки. Обычно пользователь загружает картинку, из нее делают 1 или несколько уменьшенных и далее выводят на сайте. Дополнительно иногда еще используют CSS, если размеры картинки должны как-то адаптироваться под размеры экрана.

>>970121

> Кстати, пишут, что ++$i вроде как работает быстрей.
А ты померяй.

>>970087

Прочитай мануал по json_decode. Он умеет выдавать массив, а не пародию на объект. Там по задумке по умолчанию для словарей JS создается объект класа stdClass в PHP, но на практике это не имеет особого смысла, лучше массив.

>>969877

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

Также, советую не формировать ссылку прямо в HTML, а сделать функцию, которая генерирует ссылку на картинку.

>>969566

Если ты хочешь работать PHP-разработчиком, то от тебя потребуется писать и поддерживать веб-прилоежния, скорее всего на фреймворке, с использованием ООП и MVC, работать с SQL базой данных, писать скрипты на JS.

>>969499

Первая и вторая строка формируются одинаково, можно было использовать цикл из 2 шагов. Также, можно убрать промежуточные переменные $w1-$w8
Ответы: >>972975
Аноним 2017/04/11 17:52:34  №971929 248
>>969501

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

>>969462

На странице могут быть программы на языке Яваскрипт, которые изменяют DOM в процессе работы. Также, если исходный код содержит ошибочный HTML код, то он не попадет в DOM или будет исправлен браузером. view-source показывает тот код, который пришел с сервера.

Получить текущий DOM можно так в хромоподобных браузерах: открыть отладчик в браузере (Ctrl + Shift + I) и набрать команды:

var html = document.documentElement.outerHTML;
copy(html);

Текущий HTML-код страницы будет скопирован в буфер обмена.

Насчет ФФ не знаю, может сработает, может нет, надо проверять.

>>969451

Можно освоить фронтенд, задания по HTML/CSS/JS ждут тебя в ОП-посте. И тогда половинка тебе не понадобится.

>>969450

Изучи HTML формы. Там есть возможность добавлять скрытые поля в форму.

>>968998

Ты создаешь локальную переименную Super, которая видна только внутри той маленькой функции и никак не видна снаружи нее. Лучше в момент вызова функции копировать ее название и прототип предка в глобальные переменные. А mySuper будет использовать эти переменные:

mySuper.currentParentFunction = Object.getPrototypeOf(object)[name];

Также, ты вызываешь this() не передавая родительской функции правильный контекст (она будет вызвана не на объекте, а с this = window).

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

Есть классы Parent extends Grandparent, Child extends Parent:

addMethod(Child.prototype, 'test', function () {
console.log('in Child');
var a = super(1, 2);
var b = super(3, 4);
return a + b;
});

addMethod(Parent.prototype, 'test', function (x, y) {
console.log('in Parent');
return super() + x + super() + y;
});

addMethod(Grandparent.prototype, 'test', function() {
console.log('in Grandparent');
return 100;
});

var child = new Child;
console.log(child.test()); // 410 если не ошибаюсь

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

Вместо __proto__ я советую использовать стандартный getPrototypeOf из ES5.

Также, есть еще одна оптимизация. Добавление обертки над методом делает его немного медленнее. Некоторые JS движки позволяют получить код функции в виде строки и проверить, есть ли там вызов super(). Если нет - можно не добавлять обертку. Так делает например бибилиотека classy. Хотя тут есть свой подвох: можно сохранить ссылку на super в другую переменную и вызывать через нее.

Ты можешь потом, если хочешь, посмотреть, как проблему решили авторы библиотек:

- classy: https://github.com/mitsuhiko/classy/
- наследование от John Resig: http://ejohn.org/blog/simple-javascript-inheritance/
- klass: https://github.com/ded/klass

Сейчас эти библиотеки отмирают потхоньку, так как в JS в ES6 (?) появился синтаксис для классов.
Аноним 2017/04/11 17:53:24  №971930 249
>>968966

> if ($i <= $quantity){
> }else {
Тут можно избавиться от if используя конструкцию: число купюр = наименьшее из (результат деления), (число купюр в банкомате).

Работает верно.

>>968669

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

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

Тебе там советуют использовать событие ready, но я дам другой совет. Помести во внешний файл функцию вроде function initFileUpload, а в HTML-коде под формой с файлом вставь ее вызов. Тогда она вызовется уже после того как форма появится в DOM.

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

>>968673

Лучше не ready, а поместить вызов инициализации сразу после формы. Так она раньше иницииализируется, а в твоем случае достаточно одного долго грузяющегося скрипта чтобы ready задержалось.
Аноним 2017/04/11 17:53:57  №971932 250
>>968588

Электросеть

> PowerLine.prototype.countPowerAfterPass= function(power) {
Вот в этом варианте мне не нравится то, что мы должны вызывать Powerline чтобы просто вычесть 2 числа. И там ведь не может быть других вариантов, что остаток непереданной энергии вычисляется как-то по другому. То есть мне не очень нравится идея делегировать эту операцию вычистания в PowerLine.

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

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

> function House(apartments = 0) {
Тут интересное значение по умолчанию, видимо бывают жилые дома без квартир? Мне кажется, что с точки зрения логики тут не должно быть значения по умолчанию, число квартир обязательно надо указывать.

Ну и еще одно, я тут подумал, что если совсем-совсем идеально стараться делать, то правильнее всего было бы в базовом классе не делать свойств power/nightPower, а только 2 абстрактных метода getPower или getNightPower (в JS правда нет абстрактных методов, но это не моя вина). Ведь когда мы делаем свойство power, мы предполагаем что мощность - это какое-то свойство, которое сохраняет свое значение. Но в каких-то случаях она вычисляется по формуле, в House например это поле даже не заполняется, получается что в базовом классе его быть не должно. Извини, если сбил с толку противоречивыми объяснениями, просто сейчас это стало заметно в коде. Ну и это уже совсем придирки, в принципе текущий вариант меня устраивает полностью.

Определение типа переменной

> whatIsType
Имя функции начинают с глагола, getType().

А так, все верно.

Напиши функцию неглубокого копирования объектов и массивов

> Я пытался получить новую функцию из старой.
Ну да, но ты привязал не то значение this, ты привязал значение clone в качестве this, и при таком вызове:

function fn() {}
var fnCopy = clone(fn);
fnCopy.call({});

Функция fn получит другой this.

Клонировать функцию можно наверно так:

function () { return fn.apply(this, arguments); }

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

> var clone = new Date();
> clone.setTime(object.getTime());
лучше new Date(object.getTime())

Решение теперь верное.

Глубокое копирование

Ок, верно.
Аноним 2017/04/11 17:54:16  №971933 251
>>968294

>reporting($op, $result, $number, $char);
Это можно было не копировать 4 раза а просто поставить перед if.

А так, верно решено.

>>968288

Нет, нельзя. Есть eval, но от него вреда больше чем пользы.

>>968256

$letters[$random] наверно?

>>968254

"найти значение элемента массива по индексу в PHP". Эти термины по моему описаны в начале урока про массивы.

>>968103

Наверно потому что сервер работает от какого-нибудь пользователя вроде SYSTEM. Ты там umask или chmod не вызывал?

>>968081

Надо делать редирект на страницу с файлом после успешной загрузки. Это назвается паттерн Post/Redirect/Get.

>>967927

Скорее всего сервер взломан. Самые популярные способы взлома:

- кто-то сохранил пароль от FTP, вирус его нашел и закачал вирус на сервер
- на сервере стоит какая-нибудь старая дырявая CMS
- кто-то упер пароль от панели управления хостингом

В простейших случаях вирус дописывает вредоносный код в HTML/PHP файлы, в более сложных - прописывается куда-нибудь в .htaccess. Лучше всего забекапить файлы, очистить папку на хостинге, проверить файлы и закачать заново. И поменять пароли.
Аноним 2017/04/11 17:54:54  №971934 252
>>967992

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

>>967885

Может у тебя там маргины какие стоят или просто блоки слишком широкие и не помещаются? Бери отладчик в браузере и изучай.

>>967873

> Используется же для создания работников в цикле getEmpolyees.
Там переменная, а не поле. Поле в объекте не используется.

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

Это подразумывается в твоей голове, а я предлагаю заложить это ограничение в код, чтобы любому сразу было видно. Для этого и придуманы абстрактные методы - чтобы указать, что обязан задать тот, кто пишет класс-наследник.
Аноним 2017/04/11 18:51:23  №971965 253
Ответы: >>971997 >>972001
Аноним 2017/04/11 19:55:55  №971996 254
Норм метод для скачивания файлов, или забыл чего важного?
public function download(\Slim\Http\Request $request, \Slim\Http\Response $response, $args)
{
$id = $request->getAttribute('fileId');
$file = $this->container->getFilesGateaway()->getFileByID($id);
$path = '..\\' . $file->link;
$fileName = $file->realName;
if (PHP_OS == 'WINNT') {
$path = iconv('utf-8', 'windows-1251', $path);
$fileName = iconv('utf-8', 'windows-1251', $fileName);
}
$newResponse = $response->withHeader('Content-type', 'application/octet-stream')
->withHeader('Content-Description', 'File Transfer')
->withHeader('Content-Disposition', 'attachment; filename=' . $fileName)
->withHeader('Content-Length', filesize($path));
readfile($path);
return($newResponse);
}
Ответы: >>974353
Аноним 2017/04/11 19:56:59  №971997 255
>>971965
Короче, анон. Я тут в этом треде html&css учу, сам с java работаю. У тебя какой-то хуевый очень выходит цикл, ты берешь for на 20 итераций, который делает 12 из них и выходишь из него через break. Это индийский стиль программирования, за него православные пацаны могут с вертухи прописать. Гугли, в php должен быть цикл while, когда ты точно не знаешь какое число итераций сделает цикл. Чуть позже детально вникну почему у тебя остаток там.
Ответы: >>972001
Аноним 2017/04/11 20:06:53  №972001 256
>>971965
>>971997
Я вник вообщем. Из-за того что ты выходишь из цикла через break (пальцы тебе за такое сломать), у тебя не доходит до последней строчки, где выводит последнюю оплату. Давай не гавнокодь, исправляй.
Аноним 2017/04/11 22:26:51  №972123 257
>>971922
Спасибо!
Картинки не думал брать, конечно. Я как раз хотел всё сделать текстом, чтобы удобно было искать интересующие моменты: я когда сам проходил всё по твоему учебнику, часто путался, постоянно пересматривал всё (в принципе, в этом тоже был плюс).
Задачи - только формулировки, пояснения и прочее хочу сделать для совсем начинающих.
Хочу ещё много добавить простых задач, чтобы после просто машинально применяли циклы разные, switch, допустим, разные встроенные функции. По ООП хочу гораздо больше всего сделать, но не с такими сложными задачами. Зандстра страницы с 80-й показался совсем сложным, не таким наглядным, каким хотелось бы всё видеть. Многое пропустил у него, а сейчас читаю про проектирование - ну неплохо, вроде бы многое понятно.
Всё это хочу сделать и для того, чтобы самому лучше понять многое.
Люблю наглядность, прогресс-бары, всякие milestones - вот просто в духе этого хочу многое реализовать, сделать такой чёткий курс.
Чувствую, что так или иначе буду и из твоего учебника черпать, вот и хотелось испросить разрешения.
Ответы: >>974353
Аноним 2017/04/11 22:28:26  №972125 258
Выручайте ОП, аноны. Не могу в 10 задание по HTML&СSS, там где картинки кошек.
https://github.com/codedokode/pasta/blob/master/html/html.md
Вот сам код:
https://codeshare.io/a3yENm
Проблема собственно с чем:
- Как правильно сделать внутри картинки заголовок? Я делал через position: relative и в него вложил position:absolute. Не уверен, что так и задумывалось.
- Как кусочек текста из figure который обвернут в span перенести на след строку? Его тоже делать absolute и выравнивать/выставлять margin`ом?
- Я никак не могу нагуглить, как сделать сноски слева от текста. Там в тег em вставлен собственный атрибут, я как понимаю, нужно его как-то использовать, но как именно? Можно ссылку какую-то или как это называется?
Ответы: >>972190 >>972460 >>972472
Аноним 2017/04/12 00:31:10  №972190 259
>>972125
- так пойдет
- display:block
- предполагаю, что что-то вроде этого:
em[data-ref="1"]:before {
left: 20px;
display: block;
position: absolute;
color: grey;
font-size: 0.7em;
content: '[1]';
}
Аноним 2017/04/12 02:02:14  №972216 260
Поясните кратко за ООП. Наткнулся сегодня, как то не очень понимаю.
Единственное, что уразумел, так это то, что это, по сути своей, взаимодействие классов, которые имеют разные добавляемые опции, вроде интерфейсов. Хотя, очень вероятно я могу и ошибаться
Аноним 2017/04/12 02:04:48  №972217 261
>>972216
$apple->type = "apple";
Зачем эти стрелочки >? Что оно относится к типу, указанному в главклассе?
Ответы: >>972218 >>972225
Аноним 2017/04/12 02:07:49  №972218 262
>>972217
Для чего нужно public? Чтобы его видели?
Ответы: >>972219 >>972220
Аноним 2017/04/12 02:12:03  №972219 263
Ответы: >>972221
Аноним 2017/04/12 02:12:55  №972220 264
>>972218
<?php
class Person {
public $isAlive = true;
public $firstname;
public $lastname;
public $age;
}
$teacher = new Person();
$student = new Person();

echo $teacher->isAlive;
?>

Оно мне 1 показало. Почему? Откуда?
Ответы: >>972224
Аноним 2017/04/12 02:13:53  №972221 265
>>972219
Да ладно тебе, не стукай. Давай, постою, как цапля?Курлык
Аноним 2017/04/12 02:39:51  №972224 266
Ответы: >>972225 >>972227
Аноним 2017/04/12 02:44:41  №972225 267
Аноним 2017/04/12 02:46:01  №972227 268
>>972224
То есть $teacher имеет только одно isAlive? Или isAlive только один учитель?
Ответы: >>972228 >>972321
Аноним 2017/04/12 02:50:14  №972228 269
Ответы: >>972230
Аноним 2017/04/12 02:51:11  №972230 270
14874149879340.jpg (5, 200x195)
195x200
Ответы: >>972231
Аноним 2017/04/12 02:51:34  №972231 271
Аноним 2017/04/12 04:20:06  №972242 272
Салам. Обязательно ли в задаче про список студентов использовать Апач? В ПХП же есть встроенный веб-сервер и все задачи из учебника решались норм без Апача
Ответы: >>972254 >>972336
Аноним 2017/04/12 06:32:21  №972254 273
>>972242
А ты вектор решил?
Ответы: >>972358
Аноним 2017/04/12 09:48:33  №972289 274
Может в тг или конфе вк cоберёмся? Заебало гуглить тупые вопросы часами.
Выгода для всезнаек и не нуфагов сомнительна от такого кооператива.

Например вынес подключение к БД в отдельный файл bd.php, в нём прописаны настройки подключения и собственно подключение к бд, подключаю этот файл к скрипту, в котором необходимо выполнить действия с БД, но внезапно записанный объект в $database не является глобальной переменноq, т.е использовать его в своём коде я не могу, нужно походу объявлять глобальную переменную или ещё какой-нибудь хуйни наворотить.
Аноним 2017/04/12 10:38:42  №972305 275
>>972289
Ну так запиши это в виде класса, подключить класс и создай объект класса, использовать лучше синглетон
Ответы: >>974354
Аноним 2017/04/12 11:08:09  №972316 276
>>972289
Иди, собирайся. Тут сидят люди которые не пользуются социалочками и прочей ебаниной.
Аноним 2017/04/12 11:17:48  №972320 277
Аноны, тут кто-то недавно вкидывал ссылки на канал какого-то чувака, который там еще рассказывал про свою историю, типа он пять лет мучился с самообучением и все в таком духе. У кого осталось? Просто ссылка проебалась, очень обидно.
Аноним 2017/04/12 11:20:12  №972321 278
>>972227
Булево значение true - это 1, а false - 0, NULL.
Поставь там свойство public $isAlive = false; - посмотри сам.
Иногда нужно для работы чего-либо возвращать true или false.
Например, ты дойдёшь до задачи про "Вектор", там у работника будет свойство $isBoss. Вот если $isBoss = true, то от этого зарплата в два раза выше, а количество отчётов в два раза меньше.
Но как так ты дошёл до ООП, а с таким не сталкивался? Непонятно.
Аноним 2017/04/12 11:22:05  №972323 279
>>972289
Давно есть у нас конфа в Телеграме: https://t.me/PHP_club
Помогаем по мере сил стремящимся.
Аноним 2017/04/12 11:34:07  №972327 280
Сап. Нужен совет от знaющего Laravel

В контроллер запихнул метод, который тригерится в определённом случае и отправляет всем email через Mail::to...
Пока в базе около 5 юзеров, и оно нормально работает, но какова вероятность что когда их будет несколько сотен, оно всё наебнётся?
Ответы: >>972355
Аноним 2017/04/12 12:01:36  №972335 281
>>972216

Кратко тут не пояснить. В ОП посте есть учебник, в нем глава про ООП - прочти ее и реши задачи в ней, а если что-то непонятно - то напиши вопрос.
Аноним 2017/04/12 12:01:58  №972336 282
Аноним 2017/04/12 13:10:54  №972355 283
>>972327
Такие вещи вряд ли завалят основной процесс, но если пользователей будет несколько тысяч, то запрос к серверу, который вызвал это событие будет достаточно медленоват. Лучше такие блокирующие вещи выносит в фон, почитай про сервера очереди задач типа gearman или rabbitMQ.
Ответы: >>972357
Аноним 2017/04/12 13:23:18  №972357 284
>>972355

Вообще, рассылка может отвалиться по таймауту. Обычно там стоит execution_time_limit или как оно называется.
Ответы: >>972375
Аноним 2017/04/12 13:27:22  №972358 285
Ответы: >>972361
Аноним 2017/04/12 13:32:44  №972361 286
Ответы: >>972418
Аноним 2017/04/12 13:52:20  №972370 287
http://phpclub.rf.gd/pr/res/945059.html#955473
>Также, если интересен вопрос оптимизации выборки, то тут придется усложнять схему БД. Сейчас, чтобы вывести посты на главной, приходится делать много запросов, и они не очень эффективные (например, подсчет числа постов в каждом треде отдельно).
>
>Можно добавить в тред поля для хранения числа постов, а также ссылки на последние посты (либо сделать это через отдельную таблицу связи тред - последние посты). Соответственно данные можно будет выбрать в 2 захода: выбираем треды, затем собираем из них id ОП-поста и последних постов и выбираем их одним запросом. Но это конечно немного усложнит работу с базой, так как при изменениях надо обновлять эти дополнительные поля. Но зато снизит нагрузку на базу при выборке.
Этот совет будет актуален, если я перешел на Доктрину? Я реализовал ассоциацию Один-Ко-Многим и теперь, когда я получаю Тред, я получаю его Посты и Файлы, и теперь подсчет количества постов выполняется посредством метода count() класса ArrayCollection.

https://github.com/someApprentice/phpClub/blob/master/src/Threader.php#L115
https://github.com/someApprentice/phpClub/blob/master/src/Thread.php#L15
https://github.com/someApprentice/phpClub/blob/master/src/Post.php#L12

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

https://github.com/someApprentice/phpClub/blob/master/src/Threader.php#L117-L125

Мне следует получать посты через свои запросы?


>Также, строить цепочку постов через выбор всех постов в БД очень неэффективно. Лучше сделать таблицу связи "многие-ко-многим", связывающую посты, может быть такого вида:
>
>from_id | to_id
>
>или такого
>
>from_id | to_id | depth
>
>То есть мы берем пост, и для каждой ссылки в нем вставляем записи в таблицу связи. Можно вставлять только ссылки из самого поста, тогда надо делать несколько SQL запросов, чтобы построить цепочку, а можно вставлять ссылки еще и на посты с большей глубиной вложенности, тогда цепочка выбирается одним запросом, но таблица будет больше по объему.
А как из с таблицы с глубиной вложенности получить всю цепочку одним запросом?

Из примера выше (http://phpclub.rf.gd/pr/res/945059.html#956138):

>2) таблица хранит для каждого поста ссылки на все листья дерева, то есть для примера выше там будут записи

>A -> B
>A -> C
>A -> D
>B -> C
>B -> D
>C -> D

Допустим нужно получить цепочку поста B. Ссылки на дочерние ветки он имеет, но на родительские нет. В любом случае, нужно будет искать родителей в несколько запросов.


>И еще, может стоит добавить опцию, чтобы сохранялись и выводились ссылки на тред в архиве /pr/ и в архиваче, если они есть. Просто, чтобы было.
А как это реализовать? В /pr/ к ссылке на архив треда добавляется дата сохранения, которую неизвестно как получить, а на архиваче используются свои собственные id тредов.
Ответы: >>972377
Аноним 2017/04/12 14:00:38  №972375 288
>>972357
Понял, спасибо. Пойду гуглить
Аноним 2017/04/12 14:04:21  №972377 289
>>972370

> Я реализовал ассоциацию Один-Ко-Многим и теперь, когда я получаю Тред, я получаю его Посты и Файлы, и теперь подсчет количества постов выполняется посредством метода count() класса ArrayCollection.

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

> Мне следует получать посты через свои запросы?
Да.

> А как из с таблицы с глубиной вложенности получить всю цепочку одним запросом?
Давай я пример приведу. Допустим пост A ссылается на B, C, пост B ссылается на D, E. Получаются такие записи:

post | reference | depth
A | B | 1
A | C | 1
A | D | 2
A | E | 2
B | D | 1
B | E | 1

Соответственно чтобы получить всю цепочку начиная с A, бы делаем выборку WHERE post = A

Если же мы делаем одноуровневую таблицу, то получается так:

post | ref
A | B
A | C
B | D
B | E

И мы должны сделать 3 запроса:

WHERE post = A // получаем B, C
WHERE post IN (B, C) // получаем D, E
WHERE post IN (D, E) // ничего

> А как это реализовать? В /pr/ к ссылке на архив треда добавляется дата сохранения, которую неизвестно как получить, а на архиваче используются свои собственные id тредов.
Прописывать в конфиг какой-нибудь вручную.
Ответы: >>972417 >>975117
Аноним 2017/04/12 15:26:40  №972417 290
>>972377
>Соответственно чтобы получить всю цепочку начиная с A, бы делаем выборку WHERE post = A
Но если мы хотим получить всю цепочку начиная с B, нужно будет сделать ещё один запрос WHERE reference=B, и так далее, пока мы не найдем всех предков.

Ответы: >>974354
Аноним 2017/04/12 15:28:51  №972418 291
Ответы: >>972429
Аноним 2017/04/12 16:10:58  №972429 292
>>972418
И думает, что выкрутился.
Аноним 2017/04/12 16:21:13  №972436 293
Подскажите, пожалуйста, дебилу простым ЧЕЛОВЕЧЕСКИМ языком, как работает оператор JOIN (и RIGHT JOIN с LEFT JOIN). И пример практический. Бесконечное спс.
Аноним 2017/04/12 16:25:22  №972441 294
>>972436
>Бесконечное спс
Ну что ты, не стоит благодарности.
Аноним 2017/04/12 16:31:06  №972445 295
>>972436
Гугл, поиск картинок, "SQL JOIN" вон там -->>
Аноним 2017/04/12 16:36:22  №972449 296
>>972436

A JOIN B ON cond берет по очереди каждую запись из таблицы A и присоединяет к ней по очереди все строки из таблицы B. Это называется полное декартово произведение таблиц. Если указано условие ON, то соединяются только пары записей, соответствующие условию в нем.

Допустим таблица A содержит записи A1, A2, A3, а таблица B - B1 и B2.

SELECT * FROM A JOIN B вернет такую таблицу:

A1 | B1
A1 | B2
A2 | B1
A2 | B2
A3 | B1
A3 | B2

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

Если в таблице A - N записей, а в B - M то в итоге после джойна без условия получится N*M записей.

LEFT JOIN отличается от STRAIGHT JOIN тем, что если для записи Ax не нашлось ни одной пары в B, соответствующей условию, то в результат добавляется пара

Ax | NULL

То есть при LEFT JOIN в результате гарантированно встретится хотя бы 1 раз каждая запись из A.

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

Если что-то непонятно - уточняй.

У нас в ОП посте есть задачи по SQL. Советую решить.
Аноним 2017/04/12 16:49:37  №972460 297
>>972125
> Я никак не могу нагуглить
Я загуглил "css data attributes" и нашёл такую статью: https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes

>>972436
> дебилу простым ЧЕЛОВЕЧЕСКИМ языком
>>972216
> Поясните кратко за ООП
Почему у вас такой странный подход к изучению: "поясните кратко", "объясните дебилу", "простым языком"? За что вам платить тогда, вас же с таким подходом любой заменить может.
Аноним 2017/04/12 17:11:37  №972472 298
>>972125

> - Как правильно сделать внутри картинки заголовок? Я делал через position: relative и в него вложил position:absolute. Не уверен, что так и задумывалось.

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

> - Как кусочек текста из figure который обвернут в span перенести на след строку? Его тоже делать absolute и выравнивать/выставлять margin`ом?

Какой способ позиционирования позволяет располагать блоки вертикально? Очевидно, display: block

> - Я никак не могу нагуглить, как сделать сноски слева от текста. Там в тег em вставлен собственный атрибут, я как понимаю, нужно его как-то использовать, но как именно? Можно ссылку какую-то или как это называется?

Тебе надо почитать про генерируемый контент и CSS-свойство content:

http://htmlbook.ru/css/content
http://htmlbook.ru/css/attr
http://htmlbook.ru/css/counter-increment
http://htmlbook.ru/css/before
http://www.umade.ru/resources/specifications/CSS2/generate.html



Ответы: >>972694
Аноним 2017/04/12 21:25:27  №972615 299
>All Unicode regex engines discussed in this tutorial treat any single Unicode code point as a single character. When this tutorial tells you that the dot matches any single character, this translates into Unicode parlance as "the dot matches any single Unicode code point". In Unicode, à can be encoded as two code points: U+0061 (a) followed by U+0300 (grave accent). In this situation, . applied to à will match a without the accent. ^.$ will fail to match, since the string consists of two code points. ^..$ matches à.
>Matching a single grapheme, whether it's encoded as a single code point, or as multiple code points using combining marks, is easy in Perl, PCRE, PHP, Boost, Ruby 2.0, and the Just Great Software applications: simply use \X. You can consider \X the Unicode version of the dot.
http://www.regular-expressions.info/unicode.html
Это правда, что с юникодом регексы надо писать иначе, чем до юникода? В том, что касается "количества символов", например в "этот символ повторяется n раз", речь идёт о юникод-графемах или о "code points"? Я как-то не замечал этого, работая с юникодовскими регексами.
Ответы: >>972624
Аноним 2017/04/12 21:32:13  №972624 300
>>972615

Юникод - сложная штука, к сожалению. действительно, буквы вроде "а с кружочком сверху" может быть закодирована 2 способами: как один символ или как буква a + модификатор-кружочек. Это не единственный подвох, в Юникоде полно других.

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

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

Про \X кстати первый раз слышу.

> В том, что касается "количества символов", например в "этот символ повторяется n раз", речь идёт о юникод-графемах или о "code points"?
Число повторений идущего перед квантификатором выражения, то есть:

.{10} = 10 codepoints
\X{10} = 10 graphemes

К счастью, ситуации, когда надо отмерять ровно N сложносочиненных символов, довольно редки.
Ответы: >>972692
Аноним 2017/04/12 21:44:36  №972653 301
устроился в крупную контору. я так убого верстаю, убейти миня. меня по ходу держат тока из жалости и то ненадолго.
Ответы: >>972670
Аноним 2017/04/12 21:56:53  №972667 302
>>972216
>Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
Качай это, он тебе кратко за одну книгу весь ООП пояснит.
Аноним 2017/04/12 22:00:29  №972670 303
>>972653

В ОП посте есть задания на HTML, изучай.
Ответы: >>972678
Аноним 2017/04/12 22:08:23  №972678 304
>>972670
нет, у нас в конторе уровень гораздо выше ваши школо-задачек из оп-поста.
сейчас уже одна практика и рефакторинг от коллег мне, наверное, поможет. или не поможет.
Ответы: >>972726
Аноним 2017/04/12 22:17:32  №972684 305
>>972436
Есть две таблицы, piki_tochenu и hui_drochenu.

piki_tochenu
pika_id sidit_id
1 я
3 мать

hui_drochenu
hui_id sidit_id
1 я
2 мать
3 я

select * from piki_tochenu
join hui_drochenu on hui_drochenu.sidit_id = piki_tochenu.sidit_id
where piki_tochenu.sidit_id = 'я';

Сделаешь джойн, будешь сидеть сразу на хуе 1 и пике 1, потом на хуе 1 и пике 3. До джойна сразу на стольких не мог сидеть.
Аноним 2017/04/12 22:38:26  №972692 306
>>972624
> > В том, что касается "количества символов", например в "этот символ повторяется n раз", речь идёт о юникод-графемах или о "code points"?
> Число повторений идущего перед квантификатором выражения, то есть:

> .{10} = 10 codepoints
> \X{10} = 10 graphemes
Бло, я мог бы так критически облажаться. Не попадись мне эта статья.
А php вполне мог бы заменять кодпойнты на графемы, если ему указать флаг u, это вроде как логично. Теперь кроме флага u придётся ещё и \X ставить, если есть хотя бы намёк, скажем, на шведский алфавит, или на китайские знаки.
Ответы: >>974354
Аноним 2017/04/12 22:40:40  №972694 307
>>972472
Да, посмотрел все, спасибо. Вроде внешне вышло все как и должно быть, но меня не покидает ощущение, что я гавнокожу. Я правильно понимаю, что по CSS и HTML вообще нету никаких code conventions, или канонов по оформлению разметки? Если не впадлу и есть время скажите, где кривая реализация в CSS. P.S. Все тот же урок с котом.
https://codeshare.io/21V8Z1
Ответы: >>972738 >>972820 >>974354
Аноним 2017/04/13 00:03:50  №972726 308
>>972678

Может быть ты приведешь примеры сложных задач? Чтобы можно было дополнить наши задачи?
Аноним 2017/04/13 00:25:47  №972738 309
>>972694
Двачую этого. Есть где-то свод правил по типу PSR для PHP, как CSS и HTML оформлять? Имена классов, селекторы и прочее.
Ответы: >>972820 >>974354
Аноним 2017/04/13 08:08:35  №972808 310
скажите, пожалуйста, в пхп мире используют докер?
Ответы: >>974355
Аноним 2017/04/13 08:17:09  №972810 311
Снимок.PNG (25, 1323x416)
416x1323
2.PNG (9, 1057x95)
95x1057
3.png (6, 345x163)
163x345
Получается, чтобы регекс мог найти любой допустимый словесный символ без цифр и знаков, надо использовать юникод-класс который обещает быть не быстрым. А вот знаки в него не включены, для включения нижних подчёркиваний нужно использовать старый добрый \w (с указанием 'u' после регекса). По сути, \w всё так же остаётся самым удобным для проверки слов классом.
А вот дефисы \w не видит, чтобы проверять слова,интересно, почему так сделали. Чтобы проверять слова с ними, придётся дописать его отдельно.

занимательный юникод
Ответы: >>974355
Аноним 2017/04/13 09:03:45  №972820 312
>>972694
>>972738
гуглите бэм-нэйминг.
но это только один из возможных вариантов
Аноним 2017/04/13 09:14:01  №972823 313
Как сделать полный жесткий revert в git до состояния определенного коммита? Чтобы не просто вернуть файлы в состояние, но и полностью удалить новые файлы, которые были с того момента добавлены.
Ответы: >>972842 >>972870
Аноним 2017/04/13 10:35:55  №972842 314
>>972823

git checkout commit-id

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

Аноним 2017/04/13 12:29:57  №972870 315
Аноним 2017/04/13 13:18:06  №972880 316
Ответы: >>979514
Аноним 2017/04/13 16:04:14  №972975 317
>>971928

>Прочитай мануал по json_decode. Он умеет выдавать массив, а не пародию на объект. Там по задумке по умолчанию для словарей JS создается объект класа stdClass в PHP, но на практике это не имеет особого смысла, лучше массив.

Не всё так просто, если я не знаю тонкостей json и php. Читал. Про массив-то я знаю. Собственно почему в этом случаее объекты хуже массивов я так и не понял. Расскажи пожалуйста. Видел комменты в стаковерфлоу к похожим задачкам и там видел пару реакций на stdClass - что это зло, но не понял сути.

Т.к. я нуб, то погуглив, наткнулся на это
http://stackoverflow.com/questions/18640607/what-is-better-stdclass-or-object-array-to-store-related-data
Там был тест скорости, который показал, что у меня объекты быстрей на 0.5ms.

И такой тип записи выглядит полее удобочитаемым
$json_array->sub_1->sub_2[$i]->sub_3
чем такой
$json_array["sub_1"]["sub_2"]["sub_3"]

А так, конечно хотелось бы знать, что правильней и применять это.
Ответы: >>972982 >>972994 >>972995
Аноним 2017/04/13 16:12:39  №972982 318
>>972975
>объекты
Имею ввиду классы vs массивы, конечно.
Аноним 2017/04/13 16:23:15  №972994 319
>>972975

Для массивов есть много функций для работы с ними (array_keys и так далее), а для stdClass - нет. При этом stdClass это пародия на нормальный класс (у него нет ни полей ни методов). Таким образом, плюсов у stdClass нет, а минусы есть - для него нет удобных функций, как для массивов.
Ответы: >>973134
Аноним 2017/04/13 16:24:14  №972995 320
>>972975

Ну то есть stdClass это по сути массив, для работы с которым нет функций вроде array_keys.
Ответы: >>973134
Аноним 2017/04/13 18:07:03  №973059 321
Как годно оптимизировать сайт под разные экраны?
Ответы: >>973074
Аноним 2017/04/13 18:26:19  №973074 322
Аноним 2017/04/13 19:42:21  №973134 323
>>972994
>>972995
Яааасно. тогда конечно нет смысла его юзать. Спасибо анончик.
Аноним 2017/04/13 19:47:55  №973135 324
ОП, аноны, помогите. Смотрите, я делаю урок №11 на три кнопки (те что ОП советовал, по CSS). Все работает, кроме одной вещи, у меня кнопка хоть убей, но не хочется оставаться нажатой. Уже все перепробовал. Нашел похожие кнопки на bootstrap, посмотрел как они там сделаны (в source коде), запутался окончательно. НЕ работает именно момент .button:focused, input:checked тоже самое. ЧЯДНТ
Собственно сам код: https://codeshare.io/aJ7x76
Ответы: >>973151 >>973342 >>976693
Аноним 2017/04/13 20:05:16  №973151 325
Ответы: >>973158 >>976693
Аноним 2017/04/13 20:22:05  №973158 326
>>973151
Блин, ОП - линковал похожее, тут такое ощущение что трабла какая-то из-за того что input вложен в label. Если его достать и прописать через for и id, что просили не делать, то кнопка нажимается, но слетает почему то border-radius. Как так жить, ОП надежда на тебя.
Ответы: >>973182
Аноним 2017/04/13 20:47:45  №973182 327
>>973158
+ ОП, еще пишет что для кнопки использовал три тэга, label + input + i. Зачем нужен i?
Ответы: >>976693
Аноним 2017/04/13 20:53:38  №973187 328
Премного благодарен за предоставленный гайд для начинающих, все что гуглится просто невероятный кал, лишь редкие исключение можно изучать но даже там много пердолинга даже с самой базой. Добра.
Вопрос по SQL Аноним 2017/04/13 23:19:45  №973263 329
В общем треде не ответили, спрошу тут.
Задача с sql-ex.ru: "Get the makers who produce only one product type and more than one model. Output: maker, type."

Я написал вот такой запрос:
select maker from product
group by maker
having count(model) > 1 and count(distinct type) = 1

Он правильный, но в решении требуется помимо maker выбрать ещё и type, пишу так:
select maker, type from product
...

И получаю ошибку: "Column is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause SQL Server". Насколько понял, это из-за того, что SQL-сервер не понимает, какой type выбрать из сгрупированных. Переписываю запрос так:
select maker, max(type) from product
...

Такое решение мне засчитали. Но не выглядит ли это костыльно? Тут полный перебор сгруппированных значений, когда хватило бы получения первого значения.
Ответы: >>973302
Аноним 2017/04/14 00:57:26  №973302 330
>>973263

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

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

Алсо у тебя в COUNT(model) по моему DISTINCT пропущен.

COUNT(model) это SUM(model IS NOT NULL) и это явно не то что нужно.
Ответы: >>973383
Аноним 2017/04/14 01:39:36  №973312 331
Поясните за do while.

$i = 2;
do {
$i++;
echo $i;
}

while($i == 10);
echo $i;

Он мне показывает 3. Но разве он, после while($i == 10);, не должен показывать 10? Ведь задал условие, что бы $i = 10.
Ответы: >>973342
Аноним 2017/04/14 07:36:04  №973342 332
>>973135
Бамп, так и не разобрался. У меня вышло сделать с не вложенным input в label. По другому никак.
>>973312
Смотри, ты задаешь условие в while, а не конечный результат. У тебя сейчас цикл выглядит таким образом, пока i РАВНО - 10, выполнять условие цикла. После первой итерации (которая выполнится даже если условие выполнено, это особенность do-while) i у тебя равен 3 и происходит выход из цикла. Короче говоря, тебе нужно поменять условие в цикле с i равно 10, на - пока i не станет равно 10.
Ответы: >>973343
Аноним 2017/04/14 07:37:59  №973343 333
>>973342
которая выполнится даже если условие НЕ выполнено.
fix
Аноним 2017/04/14 08:09:44  №973345 334
Ответы: >>973465 >>976692
Аноним 2017/04/14 10:05:41  №973376 335
Можно ли как нибудь представить перечисление в виде (x, y, z) как таблицу чтобы при-JOIN'ить её к другой таблице? IN не подходит
Ответы: >>973382
Аноним 2017/04/14 10:28:23  №973382 336
>>973376
То-есть изначально мне надо выбрать все данные по дням, но у меня есть дни в которые данных в нужной таблице нет, и мне нельзя эти дни пропускать, а надо вывести день и 0 результатов.
К примеру '2017-04-14', 0. In не подходит, так как он игнорит эти дни, идеальным вариантом взять список дней и приJOIN'ить их к таблице нужной по которой шла бы группировка, но я не могу написать в виде SELECT * FROM ('2017-04-14', '2017-04-13')
Ответы: >>973384
Аноним 2017/04/14 10:28:58  №973383 337
>>973302
http://www.sql-ex.ru/help/select13.php#db_1
Извиняюсь, что сразу схему не показал. Столбец model в таблице product уникален, поэтому от DISTINCT ничего не поменяется.

Ещё вопрос, в таком запросе:
select from A where id > (select min(id) from B)
Сколько раз выполнится вложенный запрос? Столько, сколько строк в A? Если да, то можно ли как-то это оптимизировать?

Ответы: >>976692
Аноним 2017/04/14 10:32:07  №973384 338
>>973382
Как вариант - создавать временную таблицу но думаю это будет довольно медленный вариант в 4 хода - создание временной таблицы, наполнение данными, выборка, удаление таблицы
Ответы: >>973387
Аноним 2017/04/14 10:38:43  №973387 339
>>973384
Что то наподобие вышло

SELECT d.date, if (o.count is null, 0, o.count) as count, if(o.salary is null, 0, o.salary) as salary FROM `#date` as d
LEFT JOIN (SELECT count(*) as count, sum(total) as salary, DATE(date_added) as `date` FROM `order`) as o on o.date = d.date

Но лучше бы без временной таблицы.
Ответы: >>973389 >>973548
Аноним 2017/04/14 10:41:30  №973389 340
>>973387
Извините что нафлудил - забыл группировку по DATE(date_added) во внутреннем запросе
Ответы: >>973548
Аноним 2017/04/14 10:57:50  №973395 341
121.png (33, 792x682)
682x792
Как сделать дешифровку через array_flip(), что бы текст обратно переводился ?
Ответы: >>973439 >>974373
Аноним 2017/04/14 12:49:49  №973439 342
Ответы: >>974305
Аноним 2017/04/14 13:51:30  №973465 343
Ответы: >>976692
Аноним 2017/04/14 14:16:36  №973479 344
Показатель в ~400 rps на машине с конфигурацией 2 x 2.7 ghz, 512 mb ram можно считать нормальной?
Кстати, интересует еще опыт местных в масштабирвоание базы под инсерты апдейты.
Ответы: >>973573
Аноним 2017/04/14 14:49:34  №973499 345
ОП, аноны, поясните пожалуйста. Вот 12 задание по CSS, нужно сверстать эти вкладки. Тут как я понял анимация сделана на JS. Без него никак правильно?
Ответы: >>973501 >>973510 >>979513
Аноним 2017/04/14 14:49:55  №973501 346
Аноним 2017/04/14 14:55:52  №973506 347
Подскажите, как лучше фильтровать полученные от пользователя данные?
Ответы: >>976692
Аноним 2017/04/14 14:58:10  №973510 348
Аноним 2017/04/14 15:49:47  №973548 349
>>973389
>>973387
Если кому понадобится, решил без временных таблиц:

SELECT
d.date,
IF(o.count IS NULL, 0, o.count) AS count,
IF(o.salary IS NULL, 0, o.salary) AS salary
FROM
(SELECT
`date`
FROM
(SELECT ('2017-04-01') AS date UNION SELECT ('2017-04-02') AS date UNION SELECT ('2017-04-03') AS date UNION SELECT ('2017-04-04') AS date UNION SELECT ('2017-04-05') AS date UNION SELECT ('2017-04-06') AS date UNION SELECT ('2017-04-07') AS date UNION SELECT ('2017-04-08') AS date UNION SELECT ('2017-04-09') AS date UNION SELECT ('2017-04-10') AS date UNION SELECT ('2017-04-11') AS date UNION SELECT ('2017-04-12') AS date UNION SELECT ('2017-04-13') AS date UNION SELECT ('2017-04-14') AS date) AS date_tables) AS d
LEFT JOIN
(SELECT
COUNT(*) AS count,
SUM(total) AS salary,
DATE(date_added) AS `date`
FROM
`order`
GROUP BY DATE(date_added)) AS o ON o.date = d.date
Ответы: >>973549 >>976692
Аноним 2017/04/14 15:51:42  №973549 350
>>973548
Точнее можно ещё избавиться от одного лишнего селекта в первом селекте
Аноним 2017/04/14 16:25:49  №973573 351
>>973479

Сама по себе цифра ничего не говорит. Если на эту машину поставить нгинкс и раздавать текстовый файл - он наверняка выдаст намного больше.
Ответы: >>973586
Аноним 2017/04/14 16:36:16  №973586 352
>>973573
Там приложение на фалконе, которое полгода уже разрабатывается. В структуре базы 40 таблиц, активное использование связей. Энжинкс само собой. Сейчас просто посматриваю на то, как нагрузку держит текущий вариант.
Аноним 2017/04/14 17:54:31  №973647 353
Вот допустим у меня есть метод, который может принимать на вход объекты двух типов, и делать с ними идентичные действия. Как быть с тайпхинтами? Делить метод на два для каждого класса, использовать func_get_args(), вписать условия в __call(), поставить в качестве тайпхинта род.класс либо дописать для каждого из этих классов интерфейс?
Ответы: >>973668 >>973684
Аноним 2017/04/14 18:10:49  №973668 354
>>973647
Тайпхинтинг же для такого и нужен, разве не?
Аноним 2017/04/14 18:22:32  №973684 355
>>973647
Конечно же интерфейс, алло блять!
Ответы: >>973748
Аноним 2017/04/14 18:55:57  №973704 356
4jiYlNsEWZg.jpg (159, 666x655)
655x666
Вопрос опу по файлшарингу.

Хранить ли в модели файла, а также в базе данных полный путь на скачку (http://fileshare.loc/download/id) и полный путь к папке downloads (C:\Apache24\htdocs\file-sharing\app\Controller/../../public/downloads/2017/04/14) или же обойтись короткими как у меня? /downloads/2017/14/04 папка и /download/id скачка соответственно.

Также неизбежно ли отказываться от конструктора класса-модели и создавать отдельный метод setProperties из-за того, что set_fetch_type(\PDO::fetch_class, 'ClassName') будет требовать третьим аргументом передачу свойств для конструктора, которые проблематично в моем FIleGateway получить?
Ответы: >>973746 >>973811 >>976691
Аноним 2017/04/14 19:47:49  №973746 357
>>973704
Это все не в модели хранится, а в конфиг файле/классе. Модели либо конфиг класс передается, либо готовые значения из конфиг класса (лучше). В конфиг классе может как относительный через _DIR_, так и абсолютный храниться, на то он и конфиг.
Ответы: >>973812
Аноним 2017/04/14 19:51:23  №973748 358
>>973684
А какой смысл этого? Метод принимает объект, ему надо понять, к какому классу он относится. При чем тут интерфейс сам по себе?
В методе условия ставить для вытягивания соответствующих свойств из объекта соответствующего класса и т.п.?
Ответы: >>973760 >>976691
Аноним 2017/04/14 20:13:15  №973760 359
>>973748
You doing it wrong. Если метод может принимать два разных объекта и делать с ними разные вещи в зависимости от того, какой объект был ему скормлен, значит у тебя один метод, который выполняет роль двух методов, а это значит, что тебе надо разделить этот метод на два метода, каждый из которых принимает свой объект. Если у тебя метод может принимать больше одного класса объектов, но делает с ними одинаковые вещи, то тогда он должен принимать интерфейс. Либо так, либо говнокодить bad practice и тогда тебя не должны волновать type hinting и прочие ништяки нормального адекватного кода.
Если тебе нужно получать одинаковые данные, но с разных параметров объекта, то надо сделать два прокси метода, которые каждый выдергивает нужные параметры с твоих объектов и вызывает один основной метод, который уже делает всю логику вне зависимости от того, какие там объекты вначале были. Это позволит тебе затем, не переопределяя этот основной логический метод, добавить еще один прокси-метод, который будет принимать третий вид объекта и также скармливать нужные данные основному методу, которому по прежнему будет пофиг, от какого объекта эти данные были получены.
Ответы: >>973763 >>973770 >>973774
Аноним 2017/04/14 20:15:44  №973763 360
>>973760
Чисто для примера:

public function proxyMethod1(objectType1 $object)
{
$this->logicMethod($object->$c, $object->d);
}

public function proxyMethod2(objectType2 $object)
{
$this->logicMethod($object->e, $object->f);
}

public function logicMethod(int $a, int $b)
{
return $a + $b;
}
Ответы: >>973770
Аноним 2017/04/14 20:24:40  №973770 361
>>973760
>>973763
Я ничего не пони.
Но я был мимо, просто интерсно тоже, Зандстра что-то писал об этом, но у него вроде именно с проверкой класса у объекта.
Ответы: >>973773
Аноним 2017/04/14 20:29:35  №973773 362
>>973770
Я бы избегал кода, в котором метод может принимать два разных вида объектов в качестве одного аргумента. Либо делаешь два метода, каждый из которых принимает нужный объект, либо пилишь интерфейс с методом, который позволяет получить нужные данные, а твои объекты реализуют этот интерфейс и позволяют получить эти данные независимо от того какого типа сам объект.
Ответы: >>973809
Аноним 2017/04/14 20:31:31  №973774 363
>>973760
Короче чтобы долго не объяснять, вот пример кода:
https://github.com/MakeevD/MicroCrm/blob/master/app/Http/Controllers/OrderController.php#L121 - этот метод вызывает статический метод TempHandler'а (метод сохраняет изменения в базу), https://github.com/MakeevD/MicroCrm/blob/master/app/Helpers/TempHandler.php , у которого есть метод destroy (44 строка). Модель Temp имеет два внешних ключа, к двум моделям.
Короче я создал пустой интерфейс для обеих моделей, но уже убедился в том, что этот метод TempHandler'а вообще не нужен, как и сам TempHandler как класс, а его метод store переписать в конструктор модели Temp.
Ответы: >>976691
Аноним 2017/04/14 21:59:41  №973807 364
помогите решить эту сранную(интересную,просто уже заебавшую) с регулярными выражениями. Сижу как даун,видимо судьба, втыкаю 1+ час и не могу никак сделать. Вот то что смог понять,но никак все равно не получается:(:( https://regex101.com/r/tTXSls/1
http://archive-ipq-co.narod.ru/l1/regexp.html - тут естессна сама задача,там с массивом правильных и неправильных номеров.
Ответы: >>973813
Аноним 2017/04/14 22:11:10  №973809 365
>>973773
Сейчас посмотрел: Зандстра советует делать суперкласс и одинаковы методы в каждом дочернем, которые будут вытягивать, допустим, количество страниц или время прослушивания для дочерних классов CdProduct или BookProduct.
При этом у него в конструктор суперкласса передаются и время прослушивания, и количество страниц, то есть не одно вместо другого, но и то, и сё.
Ещё он говорит про instanceof, но мне такое не нравится тоже.
Аноним 2017/04/14 22:12:04  №973811 366
>>973704

Так у меня динамически создаются эти пути (год/месяц/день), как мне это хранить в конфиге-то.
Ответы: >>973812 >>979513
Аноним 2017/04/14 22:12:20  №973812 367
Аноним 2017/04/14 22:15:29  №973813 368
>>973807
Что повторяется, то сокращай.
Я вообще не понимаю этого сайта с регулярками, сама тема такая, что редко пригождается (уже подо всё написаны регулярки, а сам начнёшь использовать - обязательно где-нибудь проколешься).
Ответы: >>973815 >>973817
Аноним 2017/04/14 22:17:54  №973815 369
>>973813

так,если тебе конечно не сложно,можешь попробовать написать руглярку для этой задачки,чтобы я понял?
Аноним 2017/04/14 22:26:20  №973817 370
>>973813

забудь
проблема для детишек - не поставил в начале и конце регулярного выражения ^ $ как писалось в уроке...
Аноним 2017/04/15 01:16:26  №973866 371
Вопрос по поводу ПДО, допустим есть такая конструкция:

public function getUsers()
{
$sql = "SELECT * FROM users";
$result = $this->db->query($sql);
$users = $result->fetchAll(PDO::FETCH_OBJ);
return $users;
}

Как правильно проверить что запрос сработал, достаточно будет сделать просто вот так?

if($result = $this->db->query($sql)) {

//остальной код

}
Ответы: >>973871 >>976690
Аноним 2017/04/15 01:22:36  №973867 372
Как сериализовать объект класса в XML текст? Есть какие нибудь готовые хорошие решения, или придется изобретать брать с stackoverflow свой велосипед?
Ответы: >>973960 >>974017 >>979513
Аноним 2017/04/15 01:39:04  №973871 373
И да, в дополнение к этому >>973866 когда происходит вставка каких-либо данных в подобной ситуации:

public function addQuestion(Question $question) {
if($stmt = $this->db->prepare("INSERT INTO question (id, question_text, user_ip, user_cookie) VALUES (NULL, ?, ?, ?)")) {
$stmt->execute(array($question->question_text, $question->user_ip, $question->user_cookie));
}
}

Что лучше вернуть из такой функции? Чтобы можно было как-то проверить успешность выполненного запроса уже вне класса?
Ответы: >>974017 >>976690
Аноним 2017/04/15 12:50:54  №973960 374
>>973867
Зачем тебе XML, может тебе на самом деле Json нужен?
Аноним 2017/04/15 13:13:24  №973968 375
$stmt = $pdo->prepare('SELECT FROM students ORDER BY :test DESC');
$stmt->execute(array(':test' => $sort));
Аноны, почему это не работает? Если делать сортировку без prepare, то все отлично работает.
$stmt = $pdo->query('SELECT
FROM students ORDER BY test DESC'); - работает.
Ответы: >>973998 >>974017
Аноним 2017/04/15 14:23:59  №973998 376
>>973968
>array(':test' => $sort)
Это еще что такое?
Ответы: >>974000 >>974017
Аноним 2017/04/15 14:27:41  №974000 377
>>973998
Точнее в таком случае у тебя должно быть так:
$stmt = $pdo->prepare('SELECT FROM students ORDER BY :test DESC');
$stmt->bindValue(':test', $sort);
$stmt->execute();
Короче ты путаешься в синтаксисе. Почитай про подстановку значений в ПДО, у ОПа еще есть где-то.
Ответы: >>974017
Аноним 2017/04/15 15:03:34  №974013 378
Появилась задача выведения огромного списка (пусть, например, товаров) в select инпуте. При этом открывать весь список клиенту каждый раз необязательно, поэтому сразу его весь отдавать нецелесообразно. Вариант кэширование + ajax запрос при фокусе очевиден, но, во-первых, список может обновляться очень часто, а во-вторых, при этом всё равно присутствует какая-то задержка. Как мне сделать так, чтобы список "заполнялся" в реальном времени?
Т.е., допустим, по фокусу на инпут идёт один запрос на сервер, откуда в потоке приходят записи и колбэком заносятся в общий селект. Мне кажется, что это задача простая, но сходу в голову ничего не лезет.
Ответы: >>974016 >>979513
Аноним 2017/04/15 15:08:16  №974016 379
>>974013
На клиенте запоминай сколько записей вернул ajax запрос, потом при необходимости догрузить еще записей, отправляй такой же запрос, только с параметром count, который будет использоваться бэкендом для выборки данных с оффсетом.
Ответы: >>974024
Аноним 2017/04/15 15:08:33  №974017 380
>>973867
Выбирай: https://packagist.org/search/?q=XML%20Serializer

>>973968
После подстановки твой запрос будет выглядеть примерно так: SELECT FROM students ORDER BY 'column' DESC
То есть вместо :test - строка, а нужен столбец (без кавычек).
Почему строка написано тут: https://secure.php.net/manual/en/pdostatement.execute.php

В качестве параметров PDO не используют столбцы или названия таблиц, так как параметры - это какие-то значения (строки, числа), пришедшие от пользователя. Для столбцов на голом PDO обычно пишут руками проверку: if (!in_array($column, ['age', 'name', ...])) { ...

>>973871
Если произошла ошибка, то PDO выбросит исключение. Это в старых MySQL расширениях для PHP нужно было постоянно проверки писать.

>>973998
Это синтаксис для массивов в PHP < 5.4

>>974000
В этом примере тоже будет ORDER BY 'строка' и сортировка не сработает. Строка потому что bindParam по дефолту всё приводит к PDO::PARAM_STR https://secure.php.net/manual/en/pdostatement.bindparam.php
Ответы: >>974022
Аноним 2017/04/15 15:16:43  №974022 381
>>974017
>В этом примере тоже будет ORDER BY 'строка' и сортировка не сработает. Строка потому что bindParam по дефолту всё приводит к PDO::PARAM_STR
Да, забыл. Можно эмуляцию отключить, ну или там просто отдельно пихать параметр сортировки.
Аноним 2017/04/15 15:19:09  №974024 382
>>974016
Ну это понятно, типа обычная пагинация по скроллу или кнопке. А в реальном времени? Типа, допустим, 10 000 записей, выводить по 100 => написать рекурсивную функцию, которая отправит 100 запросов? Просто хочется всё это в один запрос уместить.
Ответы: >>974025
Аноним 2017/04/15 15:22:13  №974025 383
>>974024
> А в реальном времени?
Что ты сделать-то хочешь? Тут два варианта, или пагинация или отправка всего списка сразу, сохранение его на клиенте и вывод его по кускам. Мне кажется делать несколько аякс запросов будет логичнее, если учитывать что список огромный.
Аноним 2017/04/15 16:03:46  №974046 384
Посоветуйте нормального обучалова (видео, книги и тп), где доходчиво рассказывается про symfony 2.7+. Вот прям чтоб от и до
Ответы: >>974160
Аноним 2017/04/15 16:32:37  №974063 385
Как в регулярке,при помощи preg_raplace, заменить любое число пробелов на один единственный?
Ответы: >>974070 >>974075
Аноним 2017/04/15 16:46:19  №974070 386
>>974063
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
Что непонятного то?
Ответы: >>974071 >>974072
Аноним 2017/04/15 16:51:18  №974071 387
>>974070
Окей, если ты такой молодец, можешь помочь еще кое с чем? Мне бы знать, как букву из нижнего в верхний регистр свичнуть
Ответы: >>974073 >>976690
Аноним 2017/04/15 16:52:23  №974072 388
>>974070

И кстати, это бред какой-то и на мой первый вопрос ты не ответил
Ответы: >>974074
Аноним 2017/04/15 16:53:21  №974073 389
>>974071
Если горит сделать с регуляркой - напиши регулярку которая ищет нужную тебе букву в нижнем регистре и меняй ну букву в верхнем, делов то.
Ответы: >>974089
Аноним 2017/04/15 16:58:02  №974074 390
>>974072
$string = "qwe rty tyu ";
$string = preg_replace (‘/\s+/’, ‘ ‘, $string) ;
Такие вещи легко гуглятся, на самом деле.
Аноним 2017/04/15 16:59:29  №974075 391
>>974063
preg_replace('/[\s]{2,}/', ' ', $string);
Ответы: >>976690
Аноним 2017/04/15 17:32:52  №974089 392
>>974073
В этом то и проблема...
Не знаю как просто
Я сейчас напишу свой реплейс и ты скажешь,что не так:
preg_replace("/^(\s+)?([а-яё]/u"#но только проблема в том,что мне надо все предложение просмотреть,а я только первый символ смотрю(а как сделать я хз)#,'вот тут то я и не знаю,что написать',$'какой-то текст')
Ответы: >>974090
Аноним 2017/04/15 17:39:41  №974090 393
>>974089
Не совсем понял что ты хочешь, если ты хочешь чтобы искалось по всей фразе, то метасимвол ^ лишний в твоем выражении.

>("/^(\s+)?([а-яё]/u"

> ^ декларирует начало данных (или строки в многострочном режиме)
https://secure.php.net/manual/ru/regexp.reference.meta.php
Ответы: >>974093 >>974095
Аноним 2017/04/15 17:45:28  №974093 394
>>974090
Мне нужно, заменить одну букву в начале предложения, поэтому я и поставил ^
Ответы: >>974246
Аноним 2017/04/15 17:54:14  №974095 395
>>974090
Если не сложно,помоги(кинь реплейс весь для замены первой буквы со строчной на заглавную):3
Аноним 2017/04/15 17:55:34  №974096 396
4jiYlNsEWZg.jpg (37, 468x306)
306x468
Вот так можно переносить аргументы и параметры, если они длинные? #stylewars
Ответы: >>974098 >>974106
Аноним 2017/04/15 18:05:37  №974098 397
>>974096
(){
arg1,
arg2,
arg3,
arg9999
}
А вообще сокращать надо. Тут достаточно и $thumbWidth например.
Аноним 2017/04/15 18:14:12  №974106 398
>>974096

На вопрос отвечают рекомендации по оформлению кода PSR:

http://www.php-fig.org/psr/psr-2/#method-arguments

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

IDE умеют форматировать код в соответствии со стандартом, если настроить нужные опции: https://ratanparai.wordpress.com/2014/10/16/prepare-eclipse-for-php-psr-standard/
Ответы: >>974116
Аноним 2017/04/15 18:26:20  №974116 399
>>974106
Раз уж тут появился вопрос про оформление кода, то спрошу -
как относятся к такому оформлению:

// \t - табуляция
$entity = new Entity();
\t$entity->setFoo();
\t$entity->setBar();
\t$entity->set...;
Ответы: >>974194
Аноним 2017/04/15 19:50:04  №974146 400
Бля, где можно найти больше работы удаленно?
Нашел сначала в группе вк одну, работаем понемножку, с оплатой по задачам, но работы очень мало сейчас.
Нашел вторую, там же, писать модули под одну систему. 8 тысяч рублей за один модуль, поговорили по скайпу, оплатили уже первые 2 задачи по текущему модули, все четко, все получается почти всегда
Но хочу немного больше нагрузки, а в офис лень идти. Нравится удаленная работа, вкатился недавно, уже есть что показать.
Может фриланс?Или есть еще где то места, где публикуются обьявления по рабте
Ответы: >>974194 >>974248
Аноним 2017/04/15 19:59:19  №974160 401
>>974046
Да почитай документацию на сайте. Я освоился за пару часов более менее
Аноним 2017/04/15 21:02:59  №974194 402
>>974116

Так не делают. Отступ добавляется внутри блоков вроде if, for.

>>974146

fl.ru не смотрел что ли? freelansim, geekjob, hh.ru, мой круг.
Аноним 2017/04/15 23:18:48  №974246 403
Ответы: >>976690
Аноним 2017/04/15 23:21:40  №974248 404
>>974146
freelancer, guru, upwork, toptal, crossover
Там все деньги, в твоих контактах гроши по сравнению с тем, что там. Но надо инглиш сначала подучить.
Ответы: >>974253 >>974253 >>974254
Аноним 2017/04/15 23:31:54  №974253 405
2017-04-1523-26-58.png (86, 1486x836)
836x1486
>>974248
>freelancer
>>974248
>freelancer

Ты наверное английскую версию имел, а то зашел на русскую и сразу проиграл в голос
Ответы: >>974283
Аноним 2017/04/15 23:33:23  №974254 406
>>974248
О, спасибо, то что нужно, английский не особая проблема. Разве что если общаться именно голосом, там могут проблемы возникать. А так писать на нем могу свободно документацию, статьи, книги и т.д. Этого достаточно?
Ответы: >>974257 >>974682
Аноним 2017/04/15 23:35:38  №974257 407
>>974254
читать свободно*
Аноним 2017/04/16 02:20:28  №974283 408
>>974253
Мы с пацанами в 2008 сидели в кроватке на уроке информатики...
Аноним 2017/04/16 08:45:33  №974305 409
>>973439
Падажжи ебана.
Можно подробнее, пожалуйста. Вообще не могу въехать в задачу. То есть знаю функцию, но не понимаю как это все правильно записать, что бы работало.
Аноним 2017/04/16 11:17:50  №974353 410
>>971996

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

> $path = '..\\' . $file->link;
Не стоит использовать такие относительные пути, так как они высчитываются относительно текущей директории процесса (не директории в которой php-файл) и могут указывать куда угодно.

> 'attachment; filename=' . $fileName)
Это не будет работать так как в filename по стандарту можно указывать только ASCII (латинницу). Есть способ указать там кодировку, но он работает только в новых браузерах, так что лучше это поле не использовать.

> readfile($path);
> return($newResponse);
Это тоже неправильно. Ты сначала выводишь содержмое файла через readfile, а только потом возвращаешь объект ответа с заголовками, но без тела ответа. Зачем тогда этот объект Response нужен если он не содержит тело ответа?

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

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

Ну и наконец, все это подразумевает отдачу файла средствами PHP. Эффективнее было бы переложить эту задачу на веб-сервер, если есть такая возможность. Она есть в Апаче с помощью модуля X-Sendfile и в нгинксе в модуле X-Accel-Redirect. От PHP скрипта только требуется указать имя файла для отдачи. Стоит добавить возможность использовать такой модуль.

>>972123

Имей в виду еще, что на это все может уйти много времени.

>>972289

Тебе надо разобраться с областью видимости переменных. Напрмер, глобальные переменные не видны внутри функций.
Ответы: >>974431
Аноним 2017/04/16 11:18:21  №974354 411
>>972305

Синглтон это плохой паттерн в данном случае.

>>972417

> Но если мы хотим получить всю цепочку начиная с B, нужно будет сделать ещё один запрос WHERE reference=B, и так далее, пока мы не найдем всех предков.

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

post | reference | depth
A | B | 1
A | C | 1
A | D | 2
A | E | 2
B | D | 1
B | E | 1

Мы ищем посты не по условию WHERE reference =, а по условию WHERE post = и выборка WHERE pos t = A включает в себя и посты из выборки с post = B (D и E).

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

>>972692

Проблемы будут не только с регулярками, например mb_lenth() вернет длину в codepoints.

>>972694

В HTML используют отступ в 2 или 4 пробела. Имена тегов пишут в нижнем регистре.

В CSS пишут свойства либо вертикально, либо горизонтально. Имена классов и id пишут маленькими буквами, разделяя слова минусами.

Есть еще БЭМ.

Погуглить стайлгайды можно по словам вроде "html style guide". Вот я например гугловский выгуглил: https://google.github.io/styleguide/htmlcssguide.html

>>972738

Погуглить стайлгайды можно по словам вроде "html style guide". Вот я например гугловский выгуглил: https://google.github.io/styleguide/htmlcssguide.html
Ответы: >>974508
Аноним 2017/04/16 11:18:43  №974355 412
>>972808

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

>>972810

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

> для включения нижних подчёркиваний нужно использовать старый добрый \w (с указанием 'u' после регекса).
Можно писать так [\p{L}_]

> А вот дефисы \w не видит, чтобы проверять слова,интересно, почему так сделали
Не знаю. Это формально не дефис, а математический знак минус.
Аноним 2017/04/16 11:47:09  №974373 413
121.png (33, 792x682)
682x792
>>973395
Объясните плиз, подробно, как решать ? Чето совсем додуматься не могу, как это все правильно записать.
Ответы: >>976690
Аноним 2017/04/16 12:02:55  №974383 414
Не нашел отдельного треда про CSS/HTML, напишу сюда, ОП вроде добрый.

Сделал мобильную верстку для сайта на медиа

@media only screen and (min-width: 400px) and (max-width: 500px),
only screen and (min-device-width: 400px) and (max-device-width: 500px){

в браузере в указанном разрешении все норм, но на реальном телефоне отвратительная хрень - позиции выставляются по минимальному значению (< 400px), а вот размеры шрифта, элементов - все дико мелкое. В итоге как будто телефон выбирает css для 400px, а отрисовывает на свои реальные пиксели. Что не так?
Ответы: >>974437
CSS Аноним 2017/04/16 13:20:53  №974427 415
>>971913
https://github.com/codedokode/pasta/blob/master/html/html.md

8: https://jsfiddle.net/Lpguk5kx/

10: https://jsfiddle.net/18504y5y/3/

11:
https://jsfiddle.net/3qm145b4/2/
https://jsfiddle.net/3qm145b4/2/embedded/result/
Второе - тест клавиатурной навигации. На jsfiddle немного глючит из-за наличия посторонних элементов на странице. Но если сохранить эту https://pastebin.com/YDuMFQSP страницу и открыть браузером, то навигация работает правильно (стрелочки+Tab для радиокнопок, стрелочки+пробел для чекбоксов).

12:
https://jsfiddle.net/qozy8zsL/7/
https://jsfiddle.net/qozy8zsL/7/embedded/result/
Ответы: >>976689
Аноним 2017/04/16 13:36:48  №974431 416
>>974353
>У тебя та же проблема что и у других начинающих: ты пишешь код стеной и не можешь вынести отдельные действия в функции. Ну например конвертирование кодировки в пути надо делать отдельной функцией, а не копипастить многократно по коду. Да и саму отдачу файла наверно тоже.
В целом понял. Я в общем-то так и думал, сделать класс типа FileDownloader и реализвать в нем разные способы отдачи файлов.
>Не стоит использовать такие относительные пути, так как они высчитываются относительно текущей директории процесса (не директории в которой php-файл) и могут указывать куда угодно.
А нормально ли будет сделать пхп-файл в котором константами будут прописаны все эти пути? Или надо как-то хитрее делать?
Ответы: >>976114
Аноним 2017/04/16 14:12:33  №974437 417
>>974383

meta viewport поставил? Без него телефон будет рендерить страницу в вьюпорт шириной 800-900 пикс и всячески имитировать десктопный браузер. При этом твое правило min-device-width срабатывает.

https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag
http://frontender.com.ua/mobile-web/wtf-viewport/

Я бы также убрал min-device-width, какое оно отношение имеет к верстке? Размер окна браузера не обязан совпадать с размером экрана устройства.

Аноним 2017/04/16 14:52:22  №974448 418
Продолжая выше тему про указывание абсолютных путей. Вот есть у меня в приложении папка public, в которой все файлы и исполняются. Выше от нее лежит папка с загруженными файлами. Как правильно всегда получать абсолютный путь к этой папке? Я пока добился такого только с помощью такой вот стремной конструкции dirname(getcwd()).
Ответы: >>976109 >>976111
Аноним 2017/04/16 14:57:02  №974449 419
Поясните пожалуйста, почему див с одной строкой текста в данном случае сместился чуть вниз? Если дополнить текст до двух строк, то смещение становится нормальным, как и у первого.
https://jsfiddle.net/rw01ae7v/
Ответы: >>974461
Аноним 2017/04/16 16:33:30  №974461 420
>>974449
vertical-align: top, либо пропиши float.
Vertical-align у тебя по умолчанию baseline, а baseline в данном случае - конец строки первого дива
Аноним 2017/04/16 16:42:37  №974463 421
На винде вообще работает кто-то с PHP? Или во всех конторах на компах только линукс установлен?
Ответы: >>976109
Аноним 2017/04/16 16:54:06  №974471 422
Кто-нибудь пробовал макачить на YouDo? Там на первый взгляд задания все простые, можно с лёгкостью за часик заработать на пивас.
Ответы: >>974551
Аноним 2017/04/16 18:34:27  №974508 423
>>974354
>> Но если мы хотим получить всю цепочку начиная с B, нужно будет сделать ещё один запрос WHERE reference=B, и так далее, пока мы не найдем всех предков.
>
>Может быть я не так понял условия задачи? Вот в этом примере, когда мы создаем большую таблицу связей:
>
>post | reference | depth
>A | B | 1
>A | C | 1
>A | D | 2
>A | E | 2
>B | D | 1
>B | E | 1
>
>Мы ищем посты не по условию WHERE reference =, а по условию WHERE post = и выборка WHERE pos t = A включает в себя и посты из выборки с post = B (D и E).
>
>То есть если представить посты и связи как дерево, то в этой таблице мы одним запросом выбираем всех потомков узла любой глубины вложенности, а не только непосредственных детей.
>Может быть я не так понял условия задачи?
Проясню на всякий случай условия задачи:

Если мы имеем пост №1, на который ссылается №2, и на номер №2 ссылается №3, то какой бы пост мы не выбрали мы должны получить всю эту цепочку.


Я с самого начала был запутан этой таблицей, я думал что A это самый старший предок, который имеет ответы B, C и т.д, но, тем не менее, это не меняет принципа моего вопроса - Если B имеет ссылки на предков, то он не имеет ссылок на детей и получить всю цепочку только одной выборкой WHERE post=B нельзя, нужно делать


Ответы: >>974518
Аноним 2017/04/16 18:45:51  №974517 424
Кто нибудь делал форму фильтрации контента типа тех что в магазинах? Проблема начинается когда сразу отправляются опции которые могут вычитать и добавлять результати(и или). Я пробовал передавать в get параметры и в контроллере на if'ах фильтровать но это говнокод полный. Может кто на ларавел делал и подскажет буду признателен.
Ответы: >>974522 >>975135
Аноним 2017/04/16 18:57:13  №974518 425
>>974508

А, понял, о чем речь. Может быть можно тогда допилить таблицу и добавить туда не только "потомков", но и "предков" поста, с depth = -1, -2 и тд?

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

WHERE post = A
UNION
WHERE reference = A

Вообще, я сейчас поймал себя на мысли, что связи между постами образуют не дерево (где у узла ровно один предок, и много потомков), а граф без циклов (где узел может ссылаться на любое число узлов и любое число узлов может ссылаться на него, но циклов нет так как пост может ссылаться только на предыдущие посты): https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D1%86%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B3%D1%80%D0%B0%D1%84

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

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

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

Ответы: >>975117
Аноним 2017/04/16 19:12:47  №974522 426
>>974517
>Проблема начинается когда сразу отправляются опции которые могут вычитать и добавлять результати(и или).
Приведи пример. Типа (A ^ B) V (C ^ D) V (E)? И как на фронте это выглядит?
Ответы: >>974585
Аноним 2017/04/16 20:11:33  №974551 427
>>974471
Что за анальная регистрация
Аноним 2017/04/16 21:28:27  №974585 428
>>974522
Ну пример на телефонах: есть чекбоксы hdmi, ips(условие и), ну и чекбоксы моделей с условием или, но не в этом суть. Как вообще правильно организовать передачу параметров и разбирать их в контроллере? Плюс если там будут связующие таблицы с айдишками фичей телефонов то код вообще раздутый выходит. В общем может есть готовые решения, паттерны организации фильтрации контента?
Ответы: >>974607 >>976109
Аноним 2017/04/16 21:36:33  №974588 429
Ответы: >>976109
Аноним 2017/04/16 22:27:40  №974607 430
>>974585
Ну я свой код уже скидывал выше в треде, вот класс-хелпер для фильтрации:
https://github.com/MakeevD/MicroCrm/blob/master/app/Helpers/SearchOrders.php
и форма:
https://github.com/MakeevD/MicroCrm/blob/master/resources/views/orders/search.blade.php
Контроллер передаёт в этот класс массив search[] с формы, и там всё постепенно строится Builder. В классе-хелпере лежит массив с правилами, по какому методу Builder'а искать тот или иной параметр (например, все даты объединены правилом date). Нужен какой-то другой - дописываешь правило и метод.
Это внешне похоже на то, как это реализовано в Yii2. Но я хуй простой, и интересно было бы послушать мнение других.
Ответы: >>974610 >>974612 >>976108
Аноним 2017/04/16 22:35:17  №974610 431
>>974607
попробуй почитать документацию, можешь юзать скоупы для моделей и чтоб вернуть json можешь с метода просто массив вернуть.

PS. 6yrs php experience
Ответы: >>974620
Аноним 2017/04/16 22:46:08  №974612 432
>>974607
спасибо тебе, посмотрю
Аноним 2017/04/16 23:02:29  №974620 433
>>974610
Ну этот проект в процессе буквально пару недель, впереди ещё много доделывать и рефакторить. Ну да, со скоупами более ларавель-вей, но вкратце суть такая:
1. Определяем правила, по которым ищутся параметры. (после того, как напишу валидацию, думаю, привяжу эти правила и к поиску)
2. Перебираем массив параметров с фронтенда, к каждому одноименному полю вызываем соответствующий правилу метод (скоуп)
3. Возвращаем билдер, и в контроллере уже его сортируем-пагинируем-сериализуем

Мой todo: передавать массив ['логический_оператор' => 'массив_параметров']. Каждый массив_параметров фильтруется вышеописанным способом, а затем они связываются между собой логическими параметрами (в качестве ключа) в том порядке, в котором его принял хелпер. Ну и этот массив может быть многоуровневым.
Ответы: >>976108
Аноним 2017/04/16 23:09:13  №974624 434
Начал изучать документацию по Doctrine и такой вопрос: можно ли получить объект продукт который хранится в нескольких таблицах? И вторая часть вопроса - можно ли потом будет сохранить его методом flush() назад в те же таблицы при изменении?
Ответы: >>974634 >>976108
Аноним 2017/04/16 23:29:39  №974634 435
Аноним 2017/04/16 23:36:53  №974639 436
А XML сейчас актуален вообще? Ну за исключением rss конечно
Ответы: >>974683 >>976108
Аноним 2017/04/17 00:49:57  №974682 437
>>974254
На апворке да, на топталах/кроссоверах нет, там устный проверяют.
Аноним 2017/04/17 00:52:10  №974683 438
>>974639
Все soap веб-сервисы на нем. Rest тоже часто бывают.
Аноним 2017/04/17 06:06:48  №974741 439
в избранное
Аноним 2017/04/17 14:04:44  №974915 440
Есть тут кто? Есть пара вопросов.
Ответы: >>974938
Аноним 2017/04/17 14:21:24  №974938 441
Ответы: >>974941
Аноним 2017/04/17 14:23:21  №974941 442
>>974938
Давно писал свою простенькую тёмную тему для двача через stylish т.к. нормальной не нашёл, а тут решил чего-то модернизировать, и пришла куча идей, но я не специалист в css, поэтому не уверен - можно ли такое вообще сделать. Это к вашему треду?
Ответы: >>974958 >>977943
Аноним 2017/04/17 14:37:37  №974958 443
>>974941
Это скорее в Верстка-тред, тут я думаю верстальщиков поменьше. Хотя большинство знает CSS на средне-начальном уровне
Ответы: >>974962
Аноним 2017/04/17 14:39:31  №974962 444
>>974958
Я бы мог составить список вопросов и тут написать их, а то 1 я в этом точно не разберусь.
Ответы: >>974985
Аноним 2017/04/17 15:17:43  №974985 445
>>974962
ну составь, на какие сможем ответим
Ответы: >>974992
Аноним 2017/04/17 15:27:34  №974992 446
Untitled.png (5, 833x102)
102x833
>>974985
Все вопросы к стайлишу:
1. Можно ли добавить в строку на 1 пике кнопку "Доска", которая бы вела на главную доски треда. Например, если я тут бы её нажал, то перешёл бы на доску /pr ?
2. Можно ли сделать так, что при автообновлении страницы она сама прокручивалась вниз?
Ответы: >>975025 >>976108
Аноним 2017/04/17 15:51:59  №975025 447
>>974992
Ничего из списка Stylish'ем не сделать, тебе нужен язык JavaScript и аддон, позволяющий вставить свой JavaScript код в страницу (Greasemonkey, Tampermonkey). Для первой задачи нужно вычленить название доски и вставить элемент-ссылку в ДОМ-дерево, для второй задачи нужно изучать JavaScript макабы, чтобы узнать как добавить прокрутку после автообновления. Если не знаком с JS, то будет туго. Вся инфа есть на learn.javascript.ru
Ответы: >>975040
Аноним 2017/04/17 16:08:50  №975040 448
>>975025
А вы не поможете скрипты написать? Я в цсс худо-бедно с гуглом написал говнотему, а с яс я точно не справлюсь.
Аноним 2017/04/17 18:14:53  №975117 449
>>972377
>> Я реализовал ассоциацию Один-Ко-Многим и теперь, когда я получаю Тред, я получаю его Посты и Файлы, и теперь подсчет количества постов выполняется посредством метода count() класса ArrayCollection.
>
>Ну так это сверхнеэффективно, выбрать кучу постов в память только для того, чтобы получить их количество или получить первые 3.
>
>> Мне следует получать посты через свои запросы?
>Да.
Ха, даже если я использую NativeSQL запросы, то я всё равно получаю ArrayCollection на самом деле PersistentCollection, не знаю почему со всеми постами. У меня не получилось нагуглить как получить сущность без ассоциаций. Значит нужно отказаться от них?

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

Ответы: >>975160 >>976106 >>976106
Аноним 2017/04/17 18:52:13  №975135 450
>>974517
А почему бы тебе не сортировать в реальном времени прямо на странице, а для получения подробной информации отправлять например аяксом только id уже отфильтрованных записей?
Аноним 2017/04/17 18:54:31  №975137 451
Аноны, что означает подобная запись?
public function get(): StringReverseWorker
{
код
}
Интересует именно двоеточие
Ответы: >>975144
Аноним 2017/04/17 19:01:44  №975144 452
>>975137
>: StringReverseWorker
Возвращаемый тип.
Гугли: тайпхинтинг в пхп.
Ответы: >>975149
Аноним 2017/04/17 19:09:38  №975149 453
>>975144
Да, оно, спасибо. Впервые вообще такое вижу. Откуда ты об этом узнал?
Ответы: >>975158 >>975159
Аноним 2017/04/17 19:19:58  №975158 454
>>975149
Это в седьмой пыхе завезли. Strict Mode, все дела
Аноним 2017/04/17 19:20:14  №975159 455
>>975149
Это супер новая фитча пхп7.
Ответы: >>976106
Аноним 2017/04/17 19:22:06  №975160 456
>>975117
Почему бы тебе не использовать getSingleScalarResult();???

Пример:
public function getTotal()
{
return $this->createQueryBuilder('post')
->select('COUNT(post)')
->getQuery()
->getSingleScalarResult();
}
Ответы: >>975177 >>975178 >>975192
Аноним 2017/04/17 19:35:19  №975177 457
>>975160

Зачем вы тут используете Query Builder? Пишите на DQL сразу, будет и проще и читабельнее. Query Builder для сборки запросов из частей, а тут запрос всегда одинаковый.

Алсо тут проще обычный SQL запрос использовать без маппингов, через DBAL.
Ответы: >>975183
Аноним 2017/04/17 19:37:12  №975178 458
>>975160
Да, это скорее всего работает. Сейчас проверю.
Ответы: >>975192
Аноним 2017/04/17 19:43:01  №975183 459
>>975177
> Пишите на DQL сразу, будет и проще и читабельнее.
>Алсо тут проще обычный SQL запрос использовать без маппингов, через DBAL.
Иди своей дорогой, сталкер.
Ответы: >>976106
Аноним 2017/04/17 20:02:35  №975191 460
14920989386350.jpg (45, 538x348)
348x538
подскажите, пожалуста. попробовал решить задачку с калькулятором. вот код http://ideone.com/6hUFWJ
1. на идеуан выдает ошибку
Uncaught Error: Call to undefined function mb_strlen() in /home/8DynTa/prog.php:14
2. через терминал все работает на ноуте, но только конкатенирует строки, а не складывает их, не могу понять где ошибка
3. пошпыняйте за сам код
Ответы: >>975196 >>976099 >>976106
Аноним 2017/04/17 20:04:41  №975192 461
Аноним 2017/04/17 20:13:07  №975196 462
>>975191
на ideone может не быть расширения mbstring
Ответы: >>975340 >>976099
Аноним 2017/04/17 21:55:29  №975278 463
Стоит ли вкатываться в Ларавел без знания php? Саму суть я понимаю, писал на Python Django. Синтаксис выучить это 1-2 дня, но боюсь что иногда буду заходить в тупики и придётся читать документацию с самого начала.
Ответы: >>975562 >>976099
Аноним 2017/04/17 23:16:27  №975333 464
Как и на чём реализовать следующее:
1. Большая картинка, допустим, нарисована коробка с инструментами, в которой лежат молоток, отвёртка, зубило, рубанок, пила и тд.
2. Инструменты при наведении курсора слегка увеличиваются и являются ссылками на соответствующие страницы (о молотках, отвёртках и тд).
3. В зависимости от наличия инструментов, там может быть рядом лежащих три молотка, три отвёртки (рядом, но со смещением).
4. Какая-то форма в админке для заполнения количества: допустим, ставлю три галочки в чекбоксах - появляются на картинке три молотка, а всего может быть пять молотков.
Вообще там нужно было полку с ручными работами, они готовятся медленно, но вот с молотками понятнее, надеюсь.
Сама визитка на Yii2.
Человеку в админке нужно просто как-то указывать количество молотков-отвёрток, жмакать на "сохранить", а потом на странице видеть изменения.
Как к такому подступиться вообще? На jQuery, на чём?
Ответы: >>975353
Аноним 2017/04/17 23:28:40  №975340 465
>>975196
понятно, тоже так подумал, жаль вот ошибку я еще не нашел
Аноним 2017/04/18 00:19:29  №975353 466
>>975333
css + jquery же, можно бутстрап для упрощения жизни, но не обязательно.

>Как к такому подступиться вообще?
Уроки верстки из шапки делал? Тогда бы знал уже. Бэкграунды, флоаты, абсолютное позиционирование, css эффекты.
Ответы: >>975437
Аноним 2017/04/18 10:27:30  №975437 467
>>975353
Я делал очень давно и не до конца доделал тот макет.
Что CSS - это понятно, бутстрап там уже есть. Что jQuery - я предполагал.
Ну а как подступиться-то? Я хз же вообще.
Нужна ведь вкладка в админке для выставления флажков в чекбоксах. Или лучше не чекбоксы, а ползунки jQuery UI, наверное.
Не могу всё собрать воедино, так как никогда не имел с этим дела.
Ответы: >>975517
Аноним 2017/04/18 13:13:13  №975515 468
Где искать заказы? Как должно примерно выглядеть портфолио, чтобы пользоваться спросом хоть каким-то?
Ответы: >>975518
Аноним 2017/04/18 13:21:41  №975517 469
>>975437
Позиционируй сначала все при помощи css и эффекты при наведении сделай, а потом уж jquery эвенты вешай и по чекбоксам распределяй.
Аноним 2017/04/18 13:22:31  №975518 470
>>975515
апворк, топтал
тесты заполненные + отзывы клиентов
Ответы: >>975525
Аноним 2017/04/18 13:41:03  №975525 471
>>975518
Тесты -- примеры работ?
Ответы: >>976099
Аноним 2017/04/18 14:02:06  №975537 472
14551235823923.jpg (118, 1024x768)
768x1024
Ответы: >>975700
Аноним 2017/04/18 14:56:09  №975562 473
>>975278
Ну доки ларавела точно надо почитать. К докам пхп по необходимости будешь обращаться, ничего сложного. Разве что ларавел, конечно, распиаренное говно . Объективно он сейчас самый хуевый для разработки вариант, но уж больно удобный, мимими.
Ответы: >>975586
Аноним 2017/04/18 15:45:28  №975586 474
>>975562
Почему самый хуевый? Вроде как в сравнении с yii говорят, там больше наворотов и функицонала.
Ответы: >>975591
Аноним 2017/04/18 15:48:52  №975591 475
>>975586
Перделок на уровне кода ага, больше. Полезного функционала меньше. Скорость такая, что кина не будет, посаны. Медленнее ларавела только вордпресс.
Ответы: >>976099
Аноним 2017/04/18 16:16:39  №975617 476
Можете помочь по CSS? А то я что-то не понимаю.
Есть такое
<div class = words><div class = italic>n: </div>{{noun}}</div>
Фишка в том, что если {{noun}} пустой, то весь класс words не должен отображаться, если же в {{noun}} будет слово или буква, то должно показаться, типа:
n: test

Ответы: >>975655
Аноним 2017/04/18 17:27:04  №975655 477
>>975617
{% if noun is not null %}
{% endif %}
Ответы: >>975662
Аноним 2017/04/18 17:32:18  №975662 478
Ответы: >>975663
Аноним 2017/04/18 17:32:55  №975663 479
>>975662
А тебе куда надо?
Ответы: >>975666
Аноним 2017/04/18 17:37:58  №975666 480
Untitled.png (26, 959x1157)
1157x959
>>975663
Делаю свои карты в программе Анки, и хочу так сделать, что если я не напишу ничего в поле, то оно не отображалось бы - пик.
Ответы: >>975681 >>976099
Аноним 2017/04/18 17:40:26  №975668 481
Решил давеча в файлообменнике для коментов запилить эктивРекорд, а то как-то глупо на каждый чих по сущности делать. Ну так вот, пилю я короче такой абстрактный класс ActiveRecord, в нем хочу сделат метод insert, ну вы понели. Проблема появилась с подготовленными запросами. Вот с классом-шлюзом все понятно, там просто хуячишь запроса вида
"INSERT INTO table(name, secondName, nuTiPonel) VALUES (?, ?, ?);
Ну а далее prepare($sql) и экзекут, ну вы понели. Ну или там можно bindParam(':name', $name). Ну тут проблема в том, что я не знаю заранее сколько и каких у меня будет параметров в класс-таблице для подстановки. Как лучше решить проблемку? А то на ум сплошной говнокод приходит, типа хранить все эти данные в специальной параметре-массиве и прочее.
Ответы: >>976099
Аноним 2017/04/18 17:53:05  №975681 482
>>975666
Лол.
Тогда никак, если там нельзя java script.
Аноним 2017/04/18 18:11:41  №975700 483
>>975537
Кот на месте, я спокоен.
Аноним 2017/04/18 18:47:33  №975719 484
Господа, помогите, пожалуйста, с небольшой задачей.
Есть основной сервер с обновляющимися данными, я с него периодически отправляю запросы с этими данными на другой сервер-клиент. И на сервер-клиенте должна обновляться страница.
Так вот, как сделать, чтобы из текста пост-запроса генерировалась страница с этим текстом? (Подозреваю, что это элементарно)
Ответы: >>976088
Аноним 2017/04/18 18:58:48  №975725 485
Какой уровень прошаренности должен быть для вкатывания во фриланс?
Ответы: >>976088
Аноним 2017/04/18 19:00:29  №975727 486
Вот я еблан, не могу понять как эту задачу решить. Нашел вот этот вариант.

<?php

$bankSum = 10000;
$bankPercent = 1.1;

for ($age=16; $age < 1000; $age++) {
$time = $age - 16;
$bankSum = $bankSum * $bankPercent;
if ($bankSum >= 1000000) {
break;}
}

echo "через $time лет сумма на счёту в банке составит $bankSum, этому некто будет $age";

Помогите понять, почему мне кажется, что это неправильно? И как округлить число там полученное? Через Round не выходит.
Ответы: >>975768 >>976088
Аноним 2017/04/18 19:18:03  №975758 487
Сап, пыханы! У меня всего один вопрос. Вот скажите мне почему вас не любят другие программисты? В частности, откуда пошло выражение "пхп-макака"?
Ответы: >>975760
Аноним 2017/04/18 19:20:03  №975760 488
>>975758
Низкий порог вхожения -> много вкатывальщиков -> много говнокода
Ответы: >>975763
Аноним 2017/04/18 19:21:52  №975763 489
>>975760
В общем-то, я так и думал. Спасибо, выкатываюсь.
Ответы: >>975842
Аноним 2017/04/18 19:29:45  №975768 490
>>975727

round($bankSum)

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

echo "через " . $time . " лет сумма на счёту в банке составит " . round($bankSum) . ", этому некто будет " . $age;
Ответы: >>975788 >>975806 >>976083
Аноним 2017/04/18 19:37:36  №975788 491
>>975768
О, спасибо, получилось. Не туда round пихал.
Аноним 2017/04/18 19:47:43  №975806 492
>>975768
А есть какая-нибудь практическая польза от того, что я выношу переменные за скобки? Пока я понял только, что это для того, чтобы формулы не наёбывались.
Аноним 2017/04/18 19:48:13  №975808 493
>>975806
За ковывки.
Быстрофикс
Ответы: >>975809
Аноним 2017/04/18 19:48:44  №975809 494
>>975808
Сука, ЗА КАВЫЧКИ.
Аноним 2017/04/18 20:05:18  №975832 495
>>975806
Вопрос отметается, я понял.
Аноним 2017/04/18 20:06:23  №975835 496
>>975806

Да, так такие функции как round() будут работать. Пока они в кавычках - считаются текстом и просто выводятся на экран.
Тебе самому потом проще будет, некоторые текстовые редакторы не хотят делать подсветку переменных внутри кавычек.

Я бы на твоём месте ещё поменял этот участок кода:

> for ($age=16; $age < 1000; $age++)

Внутри цикла у тебя используется if как "СИГНАЛ СТОП", но проще будет изменить само условие цикла, тогда не потребуется делать дополнительных проверок.

for ($bankSum = 10000, $age = 16, $time = 0, $bankPercent = 1.1;
$bankSum <= 1000000; $bankSum *= $bankPercent)
{
$time++;
$age++;
}

То-есть все переменные обозначили в условии, затем цикл повторяется столько раз, пока сумма не будет равна миллиону
Ответы: >>975841
Аноним 2017/04/18 20:12:41  №975841 497
>>975835
А, ну я просто перед этим прочитал в уроке, что, мол, код становится запутанным, если несколько переменных вставлять в цикл и поэтому так танцевал. Так что спасибо за информацию.
Аноним 2017/04/18 20:12:58  №975842 498
>>975763
Только обобщать не надо на всех сразу. Я и джавистов/шарпистов видел таких, которые любую вордпресную пхпмакаку заставят себя почувствовать богом программирования, и никакой порог вхождения повыше им не помог.
Аноним 2017/04/18 23:35:39  №976042 499
Аноны, у меня довольно идиотский вопрос. Когда создается объект, который наследуется от другого класса, то создаются два объекта? Или как вообще это работает?
Ответы: >>976064 >>976078
Аноним 2017/04/18 23:54:46  №976054 500
Прошу помощи:

Работаю с Йи2 на винде и локальном сервере Апачи. Возникла необходимость из скрипта (модели) создавать папку и в ней же создавать файл. Вот только файл не создается (создаю с помощью мкдир) и происходит фатальная ошибка. Что интересно, я из модели могу создать и папку и файл везде, кроме папки локального сервера. То есть в корневой директории Йи2 - уже не могу. За пределами - пожалуйста. Помогите решить.
Аноним 2017/04/19 00:18:06  №976064 501
>>976042
Нет, один объект создается. Просто методы и свойства наследуются от какого-либо класса.
Ответы: >>976071
Аноним 2017/04/19 00:36:44  №976070 502
>>976054
Уточню: в ходе проверок выяснилось, что могу создать подпапку из модели бекэнда (я использую адвансед шаблон) в любом каталоге, кроме каталога фронтэнд и, соответственно, его подкаталогов. В чём проблема?
Ответы: >>976075 >>976080
Аноним 2017/04/19 00:37:16  №976071 503
>>976064
Смотри:
<?php

class Base
{
private $test = 0;

function setPrivate($n)
{
$this->test = $n;
}

function getPrivate()
{
echo $this->test;
}

}

class Derived extends Base
{
}

$d = new Derived();
$d->setPrivate(4);
$d->getPrivate();
Ответы: >>976085
Аноним 2017/04/19 00:50:52  №976075 504
>>976054
>>976070
Уточню ещё раз: если модель переместить в common я всё так же могу создавать папки в бекэнде и не могу создавать во фронтэнде.
Ответы: >>976080
Аноним 2017/04/19 00:55:25  №976078 505
>>976042

При наследовании создается новый класс на основе старого (условно говоря, берутся методы и поля из предка и к ним добавляются поля и методы наследника) Объект всегда создается один.

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

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

Ответы: >>976085
Аноним 2017/04/19 00:57:53  №976080 506
>>976054
>>976070
>>976075
Опять уточню: даже если модель переместить во фронтэнд, я все равно могу создавать папки в бэкэнде и не могу во фронтэнде.
Аноним 2017/04/19 01:04:16  №976083 507
>>976054

А текст и подробности ошибки? Что в логах написано?

>>975768

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

Писать стоит либо так:

echo "Прошло $time секунд\n";

либо так, если нужны выражения:

printf("Прошло %d секунд\n", $time + 100 - $start);

Подробности про printf в мануале.

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

$bankSum = 10000;
$age = 16;
$bankPercent = 1.1;

Да и менять значения удобнее, когда они в начале, а не в середине программы.
Ответы: >>976092
Аноним 2017/04/19 01:06:17  №976085 508
>>976078
Спасибо за объяснение, но я немного другое не могу понять >>976071
Вот если класс derived унаследовал от base свойство тест (приватное для родительского класса), то почему я могу его изменить из?
Ответы: >>976086 >>976116 >>976121
Аноним 2017/04/19 01:06:53  №976086 509
Аноним 2017/04/19 01:09:36  №976088 510
>>975727

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

- выведи таблицу умножения для чисел от 1 до 5:

1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
...
5 x 5 = 25

- выведи в конце сумму всех получившихся чисел (1 + 2 + 3 ... + 25 = ?)

>>975725

зайди на fl.ru и посмотри задачи

>>975719

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

Клиент - это тот, кто запрашивает какие-то данные
Сервер - тот, кто обслуживает клиентов (serve - обслуживать) и выполняет их запросы, дает им ответы

Ответы: >>976155
Аноним 2017/04/19 01:13:13  №976092 511
yiiй.png (61, 1875x944)
944x1875
>>976083
Скрин ошибки.

Последние логи и, кажется, они не регистрируют эту ошибку.

AH00112: Warning: DocumentRoot [C:/Apache24/docs/dummy-host2.example.com] does not exist
[Wed Apr 19 00:48:10.490833 2017] [mpm_winnt:notice] [pid 1860:tid 424] AH00455: Apache/2.4.25 (Win64) PHP/7.1.2 configured -- resuming normal operations
[Wed Apr 19 00:48:10.490833 2017] [mpm_winnt:notice] [pid 1860:tid 424] AH00456: Apache Lounge VC14 Server built: Dec 17 2016 11:15:57
[Wed Apr 19 00:48:10.506459 2017] [core:notice] [pid 1860:tid 424] AH00094: Command line: 'D:\\user\\apache\\bin\\httpd.exe -d D:/user/apache'
[Wed Apr 19 00:48:10.506459 2017] [mpm_winnt:notice] [pid 1860:tid 424] AH00418: Parent: Created child process 6296
AH00112: Warning: DocumentRoot [C:/Apache24/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [C:/Apache24/docs/dummy-host2.example.com] does not exist
AH00112: Warning: DocumentRoot [C:/Apache24/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [C:/Apache24/docs/dummy-host2.example.com] does not exist
[Wed Apr 19 00:48:11.378009 2017] [mpm_winnt:notice] [pid 6296:tid 396] AH00354: Child: Starting 64 worker threads.
[Wed Apr 19 00:48:12.378949 2017] [mpm_winnt:notice] [pid 7036:tid 400] AH00364: Child: All worker threads have exited.
Ответы: >>976121
Аноним 2017/04/19 01:22:49  №976099 512
>>975666

В CSS есть псевдокласс :empty - https://developer.mozilla.org/ru/docs/Web/CSS/:empty - может можно его задействовать.

Только наверно HTML придется переделать, например добавлять префикс n: через псевдоэлемент ::before.

>>975668

В твоем случае проще всего написать функцию, которая получает на вход массив с данными и выдает на выходе либо кусок SQL кода с экранированными данными через $pdo->quote(), либо кусок SQL кода с плейсхолдерами и массив значений плейсхолдеров.

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

док-я: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html#insert
код: https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Connection.php#L680

Важно написать код так, чтобы SQL-инъекция (подмена запроса) была невозможна, чтобы при любых входных данных вид запроса соответствовал задуманному.

А в общем, для построения произвольных запросов из кусков есть паттерн Query Builder: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html

>>975591

Может какое-нибудь кеширование не включено?

>>975525

Тесты с вопросами на знание той или иной технологии.

>>975278

Как ты собрался писать на PHP без знания PHP?

>>975196

Я им писал пару месяцев назад, недавно ответили, что проверят, в чем проблема.

>>975191

mb-функций нет на ideone, есть на 3v4l.org
Ответы: >>976183 >>977933
Аноним 2017/04/19 01:41:40  №976106 513
>>975191

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

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

>>975183

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

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

Ты вместо аккуратного запроса нагородил кучу скобок и стрелок и наверно думаешь что Query Builder придумали как замену SQL.

>>975159

Очень полезная фича. Раньше тип указывали через phpdoc вроде @return SomeClass, а теперь можно нормально на уровне языка указать.

>>975117

Во-первых, я не советую исплоьзоваь NativeSQL с маппингом. Если тебе нужен маппинг - используй DQL или Query Builder , если тебе нужно посчитать количество то можно выполнить обычный SQL запрос без маппинга, напрямую через DBAL.

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

Соответственно запрос вида

$em->find('Thread', $threadId);

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

Для подсчета числа постов ты можешь использовать

SELECT COUNT(*) FROM posts WHERE thread_id = ?

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

Далее, тебе надо для треда получить 3 последних поста. Тут есть много вариантов:

1) через DQL делаем запрос вида

SELECT p FROM posts WHERE IDENTITY(posts.thread) = ? ORDER BY postedTime DESC
с опцией setMaxResults(3)

Это будет преобразовано в SQL запрос вида SELECT .. ORDER BY postedTime DESC LIMIT 3

Разумеется, нужен индекс по (thread_id, postedTime) для оптимальной выборки.

Этот метод позволяет выбрать 3 последних поста оптимально, но только для 1 треда. Нужно для 10 тредов - нужно 10 запросов.

2) потому можно при желании применить денормализацию и хранить в БД ссылки на 3 последних поста каждого треда. Либо в самой таблице тредов в виде id, либо в виде таблицы связи многие-ко-многим треды <-> посты. В Доктрине она оформляется как ассоциация hasMany по моему.

Это позволяет одним запросом выбрать 3 последних поста для N тредов сразу.

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

Ну например в такой ситуации:

1: $thread = $em->find('Thread', $threadId);
2: $posts = $thread->getPosts();
3: foreach ($posts as $post)

делается 2 SQL запроса:

В строчке 1 - SELECT FROM threads WHERE id = ?
В строчке 3 (да, в 3, а не в 2, так как у нас ленивая коллекция) - SELECT FROM posts WHERE thread_id = ?

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

>>975117

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

Ну давай взвесим:

1) если не дублировать данные. таблица будет раза в 2 меньше, но надо сделать 2 запроса которые можно объединить в 1 с помощью UNION
2) если дублировать данные, таблица будет больше, при добавлении поста надо делать больше вставок, зато мы делаем 1 запрос вместо 2.

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

Ответы: >>976188
Аноним 2017/04/19 01:59:58  №976108 514
>>974992

Ссылка "назад" ведет на доску.

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

>>974639

Удобный формат же. Например данные для Яндекс-Маркета в нем предоставляются.

>>974624

В Доктрине один объект = 1 строка таблицы. Если таблиц несколько, то нужно несколько объектов со связями между ними.

flush() сбрасывает в базу все изменения во всех объектах. То есть тут тебе делать ничего не надо, доктрина сама все найдет и сохранит.

>>974620

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

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

>>974607

Полезно представить настройки фильтра в виде объекта. И передавать уже этот объект куда надо:

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

А городить многомерные массивы - это запутывать код.


Аноним 2017/04/19 02:09:09  №976109 515
>>974588


> [(Дд|Dd)]
Ты не понял, как работают квадратные скобки. В твоем случае это читается как "любой один из символов: скобка, буква Д, вертикальная черта". То есть в квадратных скобках ( или | это обычные символы.

> \\s\\S
Это позволяет между буквами "д" и "у" вставить любые другие буквы, например твоя регуялрка среагирует на фразу

аД кУ пиР мирА коК

Пример: https://ideone.com/QJ7KLx

Также ты забыл флаг u, без которого корректная работа с русскими буквами вообще не гарантируется.

>>974585

Можно состояние фильтра представить в виде объекта. И передавать везде этот объект. Или при желании усложнить - в виде коллекции объектов.

class PhoneFilter
{
private $isHdmi = false;
private $hasIps;
...
}

>>974463

Можно работать на винде. Можно поставить вируталку с дебианом.

Линукс изучить полезно в любом случае.

>>974448

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

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



Ответы: >>976184
Аноним 2017/04/19 02:15:19  №976111 516
>>974448

Почитай теорию, что такое "текущий каталог процесса":

http://heap.altlinux.org/issues/textbooks/linux_intro/Filesystem_use.html
https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3
http://php.net/manual/ru/function.chdir.php

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

Вот еще теория:

https://ru.wikibooks.org/wiki/UNIX#.D0.A4.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2.D0.B0.D1.8F_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D0.B0


Аноним 2017/04/19 02:17:51  №976114 517
>>974431

Можно отдельный класс для отдачи файлов. Но не все можно в него помещать.

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

> А нормально ли будет сделать пхп-файл в котором константами будут прописаны все эти пути? Или надо как-то хитрее делать?
Лучше класс с методами, возвращающими нужные пути. Так гибче.

Аноним 2017/04/19 02:27:40  №976116 518
>>976085

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

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

Это называется инкапсуляция, почитай http://learn.javascript.ru/internal-external-interface

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

> Вот если класс derived унаследовал от base свойство тест (приватное для родительского класса),
Свойство он унаследовал, а право доступа к нему - нет. Доступ к нему имеют только методы, унаследованные из Base.

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

Вообще, "гарантии" - это важное условие для написания надежных программ.
Аноним 2017/04/19 02:34:37  №976121 519
>>976085

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

class Base
{
private $a;
}

class Derived extends Base
{
private $a;
}

Изучи, как это работает. Подвох тут в том, что это не одно поле, которое переопределено, а именно 2 разных поля - Base#$a и Derived#$a. методы, описанные в Base видят первое, а методы в Derived - второе.

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

>>976092

Это общий лог Апача. Наверно у Юи есть свой лог и он перехватывает и пишет ошибки туда. Поищи.

А вообще, причина видна, хоть твой скриншот ее не показывает, но можно там увидеть "No such file or directory" то есть ты пытаешься создать папку внутри несуществующей папки.


Ответы: >>976132
Аноним 2017/04/19 03:31:51  №976132 520
>>976121
Папка существующая - это 100%.
Ответы: >>976688
Аноним 2017/04/19 07:52:58  №976155 521
>>976088
Я знаю что такое клиент. Ну ок, отправляю с одного сервера на другой сервер, где хостится сайт.
Ответы: >>976688
Аноним 2017/04/19 10:12:49  №976183 522
>>976099
> кеширование не включено?
Включено, включено. Я же понимаю все. Но вообще он реально тяжелый, та же юи в 3 раза быстрее летает (а у юйки весьма средняя скорость по больнице я бы сказал). Люмен пашет шустрее юи уже, но это ж не сам ларавел. Под скоростью, конечно, имеется ввиду не только скорость обработки запроса, но и потребляемые ресурсы. И конечно все это будет не критично, если нет проблем с расширением серваков, но я как-то такой подход не одобряю. Да и не осуждаю сам ларавел, нишевая тема, удобная в некоторых местах, востребованная сейчас (юи только на легаси уже, нового почти ничего нет) просто вот не взял бы я его на свой проект, на мой взгляд есть масса решений гораздо лучше и эффективнее.
Аноним 2017/04/19 10:15:28  №976184 523
Ответы: >>976688
Аноним 2017/04/19 10:24:58  №976188 524
>>976106
>Если понимать, как работает Доктрина,то станет видно что любые обращения к коллекции $posts вызовут загрузку всех постов треда в память. даже если они все нам не нужны.
Такое поведение будет и при getRepository()?

>По моему пункт 1 выгоднее. У нас ведь была цель избавиться от потенциально большого числа запросов (если цепочка постов длинная), а два запроса или один - разницы особой нет.
Но нужно сделать не два запроса, а ещё столько же сколько детей. Получается мы делаем эти запросы либо при вставке либо при получении. Только есть разница, что мы вставляем только один раз при добавлении поста, а получаем каждый раз когда пользователь получает цепочку. С такой перспективы кажется лучше 2-ой вариант.
Ответы: >>976350
Аноним 2017/04/19 13:53:42  №976299 525
Поцоны, помогине с регуляркой. Допустим, в массиве текста есть такие склееные слова "васяПетя". И мне нужно эти слова расклеить.

Нагуглил регулярку: ([а-я])([А-Я]) -проверил по regex101.com - находит такое совпадение.

Пишу скрипт:

<?php
$str = 'текст васяПетя текст';
$result = preg_match_all('/([а-я])([А-Я])/', $str, $found);
echo "Matches: $result<br>";
print_r($found);
?>

Нихера не находит. Как его расклеить-то? Помогите, анончики.
Ответы: >>976314
Аноним 2017/04/19 14:19:55  №976314 526
>>976299
Твоя регулярка найдет только по одному символу в подмаске. Тебе нужно указать что может встретиться от 1 и более символов, с помощью метасимвола +.

'/([а-я]+)([А-Я]+)/'

https://secure.php.net/manual/ru/regexp.reference.meta.php
>+ квантификатор, означающий 1 или более вхождений
Ответы: >>976335
Аноним 2017/04/19 15:14:32  №976335 527
>>976314
> Тебе нужно указать что может встретиться от 1 и более символов, с помощью метасимвола +.
Спасибо за отклик, это уже лучше! Но почему пикрелейтед не вытаскивает второе слово?
Ответы: >>976347 >>976351
Аноним 2017/04/19 15:50:59  №976347 528
>>976335

Флаг g (global) поставил? Без него на regex101 ищется только первое совпадение.
Ответы: >>976348
Аноним 2017/04/19 15:52:45  №976348 529
Аноним 2017/04/19 15:56:12  №976350 530
>>976188

getRepository возвращает объект репозитория и ничего не загружает из базы вообще.

> Но нужно сделать не два запроса, а ещё столько же сколько детей.
Нет, я говорил про вариант, где для построения цепочки нужно ровно 2 запроса:

1) для постов, до которых можно дойти по стрелкам в графе WHERE post = A (на которые ссылается A)
2) для постов, до которых можно дойти, идя против направления стрелок в графе WHERE reference = A (которые ссылаются на A)

Посмотри на граф со стрелками и может быть станет понятнее.

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

Ответы: >>976361
Аноним 2017/04/19 15:56:57  №976351 531
>>976335
А-Я найдет ведь только буквы в верхнем регистре. По сути чтобы "раслеить" этого достаточно. Но раз уж хочешь чтобы находило целиком, то ([А-Я][а-я]плюсик) во второй части. Наверно. Не проверял.
Ответы: >>976353 >>976354
Аноним 2017/04/19 16:03:50  №976353 532
>>976351
А по хорошему тебе достаточно было бы найти из твоего склеенного говна позицию вхождения "яП", а не все сразу, что твоя первая регулярка и делает, притом там даже скобочки не нужны. С этим уже можно будет работать.
Ответы: >>976354
Аноним 2017/04/19 16:05:42  №976354 533
>>976351
А, точно же елки-палки>>976353
Да не, там разные слова склеены, текста дофига. Но спасибо!
Аноним 2017/04/19 16:29:57  №976361 534
>>976350
>2) для постов, до которых можно дойти, идя против направления стрелок в графе WHERE reference = A (которые ссылаются на A)
Но если пост A ссылается на пост B то нужно будет сделать запрос WHERE reference = B, и так далее.

При условии что структура такая:

>post | reference | depth
>A | B | 1
>A | C | 1
>A | D | 2
>A | E | 2
>B | D | 1
>B | E | 1
Ответы: >>976687
Аноним 2017/04/19 17:49:50  №976391 535
Делаю файлообменник, узнал про константу directory separator. Ее везде использовать вместо слеша в функция move_uploaded_file и подобных?
Ответы: >>976687
Аноним 2017/04/19 18:21:43  №976403 536
Что должно содержаться в ссылке для активации аккаунта, которая приходить на почту? Хэш подойдет?
Ответы: >>976687
Аноним 2017/04/19 21:27:16  №976518 537
Ответы: >>976687
Аноним 2017/04/20 02:11:25  №976668 538
>>975806
Переменные в кавычках должны парсится, вне кавычек нет. Парсинг занимает время у php. Если у тебя большие тексты, в которых переменные, то быстрее скрипт будет работать, если ты их вынесешь из кавычек.
Ответы: >>976669 >>976671
Аноним 2017/04/20 02:12:42  №976669 539
>>976668
Алсо сами кавычки на одинарные надо заменить, в них парсинга не происходит.
Аноним 2017/04/20 02:26:48  №976671 540
>>976668

Если ты пишешь "быстрее", пиши насколько. Иначе ты ничем не отличаешься от маркетологов которые берут цифры с потолка в рекламе.

Анонам советую не слушать таких пустословов. ставьте такие кавычки, которые нравятся.

По твоей логике и комментарии к коду писать не стоит, ведь из парсинг занимает время у PHP? И переменные наверно не стоит называть длиннее, чем одной буквой?

Аноним 2017/04/20 04:04:53  №976687 541
>>976518

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

>>976403

А зачем ты вообще присылаешь ссылку на почту? Попробуй начать рассуждать с этого.

>>976391

Можно, она для этого и придумана, но неудобно. Прямой слеш поддерживается и в Линуксе, и в винде, проще использовать его.

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

Вот примеры таких библиотек (нашел на packagist.org по слову path):

- https://github.com/donutclub/php-path
- https://github.com/vweevers/php-path
- https://github.com/webmozart/path-util

>>976361

Кажется, я понял, что ты имел в виду.

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

> Получается мы делаем эти запросы либо при вставке либо при получении. Только есть разница, что мы вставляем только один раз при добавлении поста, а получаем каждый раз когда пользователь получает цепочку.
Ну да, либо мы строим полный список заранее, либо делаем много запросов.
Ответы: >>977026
Аноним 2017/04/20 04:05:13  №976688 542
>>976184

> \\W*\_*
Это лучше записать как [\\W_]*

А так, верно.

Правописание

удобнее записать пары регулярка - замена так:

[
'/xxx/' => 'yyy',
'/xxx/' => 'yyy'
]

Сразу видно, что чему соответствует.

"Зделаем" не найдется.

В остальном все хорошо.

>>976155

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

>>976132

Возможно ты пытаешься создать папку, которая уже существует. Или возможно все-таки родительская папка не существует. Почему бы не проверить с помощью is_dir() ?

Если линукс, могут быть проблемы с правами на одну из папок в пути.
Ответы: >>976751
Аноним 2017/04/20 04:05:33  №976689 543
>>974427

8: https://jsfiddle.net/Lpguk5kx/

Ок, верно.

10: https://jsfiddle.net/18504y5y/3/

> text-decoration-color: #f0c000;
Это что-то новое из CSS3, я-то в общем не против, только надо смотреть уровень поддержки в браузерах: https://caniuse.com/#search=text-decoration

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

Так, в общем верно.

Вообще, для задания размера картинки используется запутанная (но работающая) схема. Я бы для надежности добавил max-width 100% на figure. Оно и без него работает, но с ним как-то определенности больше становится.

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

11: https://jsfiddle.net/3qm145b4/2/

> top: -100px;
Этого на реальном сайте ведь маловато, если только там нет overflow hidden.

Вообще, хорошо сделано.

> На jsfiddle немного глючит из-за наличия посторонних элементов на странице.
Да, я знаю, но если выделить мышкой на слово "Radio" и нажать Tab, то все работает.

12: https://jsfiddle.net/qozy8zsL/7/

> .tabs-wrapper input + label
Вот это нехорошо, оно ведь подействует не только на заголовок вкладки, но и на любую пару input + label в теле вкладки. Нужно делать селектор более точечным. Например использовать класс .tab-head тут

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

Так, в общем, верно.
Ответы: >>980278
Аноним 2017/04/20 04:05:52  №976690 544
>>974373

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

Также в помощь тебе мануал по strtr: http://php.net/manual/ru/function.strtr.php

Для расшифровки нам надо сделать обратную замену (например менять 1 на "а"). Для этого можно перевернуть массив кодов с помощью array_flip. Попробуй это сделать и вывести получившийся массив через var_dump.

>>974246

Не работает с utf-8 и нелатинскими буквами.

>>974071

mb_strtolower
mb_strtoupper

>>974075

Квадратные скобки не требуются.

>>973866

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

В этом и плюс исключений, что тебе делать ничего не надо для их обработки. Урок https://github.com/codedokode/pasta/blob/master/php/exceptions.md

Это в mysqli надо каждый вызов проверять, а тут не надо.

Если же ты хочешь проверить, что запрос что-то нашел, хотя бы 1 запись, то это стандартно - if (count(...) > 0)


>>973871

Ничего не надо возвращать, при ошибке выбросится исключение
Аноним 2017/04/20 04:06:10  №976691 545
>>973704

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

В коде сделать функции которые из этого относительного пути генерируют URL и полный путь.

При скачивании в URL в конце должно стоять исходное имя файла: /download/13/файл%20файл.txt

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

> и создавать отдельный метод setProperties
Можно и его, а можно свойства напрямую или через сеттеры менять.


>>973774

Названия у тебя очень неудачные и трудно понимать код. ЧТо такое TempHandler например? Непонятно. Что такое TempInterface? Комментариев тоже нет.

> $object->tempChanges()
наверно tempChanges надо в интерфейсе описать? Так как сейчас у тебя там ни одного метода не описано и значит вызывать ты тоже ничего не можешь.

> if (!empty($order->getDirty)) {
Скобки забыл

> $temp->name = 'change';
тут наверно константа нужна

> $temp->value = json_encode($tempArray);
Если можно, лучше бы в памяти хранить сам массив, а преобразовывать в JSON только в момент сохранения в БД.

https://github.com/MakeevD/MicroCrm/blob/master/app/Helpers/SearchOrders.php
тут тоже много странного, например почему фильтр записей наследуется от модели, почему куча статических методов которые явно должны быть нестатическими?

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

>>973748

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

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

Подход вида if ($x instanceof Class1) не работает, так как позже могут допсать новые классы, реализующие интерфейс.
Ответы: >>977068
Аноним 2017/04/20 04:06:28  №976692 546
>>973506

зависит от ситуации, что это за данные, что в них может быть, что мы хотим с ними делать.

>>973465
>>973345


> https://ideone.com/DV6lCb

> [8]
Тут скобки не нужны

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

> '/(\\-|\\s|\\(|\\)|)/';
Зачем тут последняя вертикальная черта? Лишняя ведь.

> /(\\+\\s7)/'
Тут стоит добавить еще что это должно быть в начале

>>973548

Я бы тут использовал IN, а недостающие пустые записи вставил на стороне PHP, если так можно делать.

>>973383

> select from A where id > (select min(id) from B)
> Сколько раз выполнится вложенный запрос? Столько, сколько строк в A? Если да, то можно ли как-то это оптимизировать?
Зависит от используемой базы данных. Некоторые умны, чтобы выполнить вложенный запрос 1 раз, некоторые нет. Проверить в MySQL план выполнения можно через EXPLAIN : https://www.google.ru/search?q=habr+explain+sql&newwindow=1&gbv=1

Оптимизировать можно с помощью переменной в PHP, выбрав первым запросом число, положив в переменную и поставив во второй запрос. В языке SQL тоже есть переменные (@x), но возможности работы сохранения данных из запроса в переменную разные в разных базах данных.

В MySQL ( https://dev.mysql.com/doc/refman/5.7/en/select-into.html ) синтаксис такой:

SELECT MIN(id) FROM table INTO @minValue;
SELECT FROM A WHERE is > @minValue;

В Postgres есть что-то такое: https://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW
Аноним 2017/04/20 04:06:45  №976693 547
>>973182

Для подсветки текста у нажатой кнопки.

>>973135

Эти кнопки делаются на основе input radio или checkbox. Мы делаем кнопку в виде тега label, который передает клик на input, и в зависимости от состояния инпута мы подсвечиваем текст кнопки.

Пример:

<input type="checkbox" class="btn-checkbox" id="checkbox1"><label for="checkbox1" class="btn-label">Текст</label>
.btn-checkbox:checked + .btn-label { background: yellow; }

Но тут есть недостаток - надо указывать атрибуты id, for. Избавиться от них, можно положив инпут внутрь label.

Изучи селекторы + и ~.

На хабре есть статьи, гугли. Например

- https://habrahabr.ru/post/144104/
- https://habrahabr.ru/post/154719/
- https://habrahabr.ru/company/imagecms/blog/204030/
- http://dimox.name/custom-checkboxes-and-radio-buttons-using-css-only/


>>973151

тут нет связи между label и input - их надо либо вложить друг в друга либо связать через id.

Аноним 2017/04/20 10:07:15  №976751 548
>>976688
>Тебе нужно какое-то хранилище
Ну да, можно и через базу, но это не главное.
Возможно, вы не совсем поняли мой вопрос, пожалуй упрощу его:
Как записать в файл данные из POST-запроса? Просто напишите пример кода, пожалуйста.
Ответы: >>979513
Аноним 2017/04/20 13:19:39  №976826 549
313131313.png (14, 768x211)
211x768
Антуаны, курю ваш гайд
Поясните, зачем нужны фигурные скобки на пикрилейтед? И без них же зоебись работает
Ответы: >>979513
Аноним 2017/04/20 16:00:05  №976909 550
Анонсы, у меня к вам есть один тупой теоретический вопрос. Будьте добры ответьте, если не затруднит. Возможно ли любую рандомную верстку сделать адаптивной тупо скриптами без человека? Ну теоретически.
Ответы: >>979513
Аноним 2017/04/20 20:00:55  №977026 551
>>976687
>А зачем ты вообще присылаешь ссылку на почту? Попробуй начать рассуждать с этого.
Чтобы удостовериться что почта существует, конечно же. В таком ключе становиться очевидно, что не так важно что должно содержаться в ссылке. Просто я часто видел в таких ссылках содержится какой-то хэш-код.
Ответы: >>979512
Аноним 2017/04/20 21:18:58  №977047 552
Ответы: >>977073
Аноним 2017/04/20 22:21:42  №977068 553
>>976691

Относительно папки с файлами это значит включая ее в этом пути? /downloads/2010/10/10 или /2010/10/10
Ответы: >>979512
Аноним 2017/04/20 22:39:31  №977073 554
>>977047
>PHP Notice: Undefined variable: playedDice2 in /home/UwjuzN/prog.php on line 13
>Молодой человек, это не для вас написано
Ответы: >>977122
Аноним 2017/04/21 00:29:22  №977122 555
Аноним 2017/04/21 09:09:42  №977180 556
Опчик проверь задачу "Клавиша Shift" https://3v4l.org/0N8g0

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

> preg_split('/((?<=[.?!]))/iu', $text, 0, PREG_SPLIT_NO_EMPTY)
Ответы: >>977716 >>979512
Аноним 2017/04/21 18:48:04  №977418 557
Чому этот код вешает мне браузер?
$newPow = function($b, $e) use (&$newPow){
if($e){

return $b * $newPow($b, $e);
} else {
return ;
}
};
echo $newPow(4, 4);
Ответы: >>977444 >>977446
Аноним 2017/04/21 18:54:29  №977421 558
Господа, вот вопрос. Я хочу сделать пакет для packagist / composer. Но мне нужны две версии. Под PHP 7.0 (с хинтингом скалярок) и под PHP 5.6

Ближайшее время (год) я буду поддерживать оба. Кодобаза будет почти одна, только я хинтинг из PHP 5.6 уберу. Какой best practice по проворачиванию такого (две параллельные ветки в пакаджисте), при условии что я не хочу версии 1.0 & 2.0, я хочу чтобы версия была одна между двумя бранчами?
То есть есть ли у меня возможность каким-то образом называть теги так, чтобы packagist вел именно параллельные версии? Вроде есть только постфикс RC для релиз кандидатов. Само собой в обоих бранчах будет свой композер.json (отличается только require для php) и настройки для CI.
Ответы: >>977446
Аноним 2017/04/21 20:07:14  №977444 559
>>977418

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

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