Сохранен 1004
https://2ch.hk/pr/res/945059.html

Клуб любителей изучать PHP #86

 Аноним 03/03/17 Птн 03:29:50 #1 №945059 
14885009901210.png php-noob-1.png
14885009901221.jpg cat-cafe-osaka.jpg
14885009901252.png Imagery-hitagi-senjougahara-34535417-1920-1080.png
14885009901333.jpg cat-sad.jpg
Добро пожаловать в наш уютный тред. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>919074 (OP) ( http://arhivach.org/thread/233392/ )

Еще предыдущие треды в архиве:

- 84 >>898502 http://arhivach.org/thread/224683/
- 83: https://2ch.hk/pr/arch/2016-12-26/res/880700.html
- 82: https://2ch.hk/pr/arch/2016-12-01/res/864640.html
- другие: https://www.google.ru/search?q=site:2ch.hk/pr/+%D0%BA%D0%BB%D1%83%D0%B1+php

Мейлач лежит? Есть запасной тред: http://dobrochan.org/s/res/23225.xhtml#i46467

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

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП заходит редко, где-то раз в 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
Аноним 03/03/17 Птн 03:30:38 #2 №945060 
14885010388570.png grammar-nazi.png
14885010388591.png welcome-to-php.png
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.

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

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

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

Давай удочку, а не рыбу

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

Будь доброжелателен

Не годится: «Ты мануал хоть раз в жизни открывал, обезьяна?»
Не годится: «В гугле забанили?»
Не годится: «Твой код плохой»
Хорошо: «Вот, как можно улучшить этот код: ...»
Хорошо: «Ты неправильно используешь функцию abc(). Вот ее описание: ссылка, и как видишь ей надо передать строку, а не массив»

Не придирайся к знанию английского или русского языка.

Объясняй

Не очень хорошо: «сделай как в этом коде»
Хорошо: «если ты вставляешь текст от пользователя в SQL запрос, то получается SQl-инъекция, которая позволяет взломать твой сервер (ссылки). Чтобы этого избежать, надо вставлять данные с помощью плейсхолдеров (ссылки)»
Хорошо: «Помни, что код пишется для людей. Если писать такие большие функции, то в них становится трудно разобраться...»

Не проповедуй

Мы учим использованию самых распространненных подходов, стандартов, библиотеки фреймворков. Если ты не любишь ООП, пробелы в коде, jQuery, сам PHP, то рассказать об этом стоит в каком-нибудь другом треде.

Не придирайся к знанию английского языка, анон пишет как умеет.

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
Аноним 03/03/17 Птн 03:32:37 #3 №945061 
Если я кого-то пропустил в старом треде >>919074 (OP) то напомните о себе здесь.
Аноним 03/03/17 Птн 07:53:28 #4 №945082 
Какого хуя у пхпшторма нет комьюнити версии, а у пичарма есть? Пиздец дискриминация.
Аноним 03/03/17 Птн 09:25:28 #5 №945099 
Возможно ли полюбить php? Вот питон как ламповая тяночка, с ней хорошо, но с ней нет будущего, она утянет на дно. А php - это не такая ламповая, но зато работящая тян. Я же смогу привыкнуть к php и полюбить его? Это же не язык уровня 1С - грязного вонючего бомжа?
Аноним 03/03/17 Птн 10:11:12 #6 №945120 
14885250721780.png Безымянный.png
Мозг уже плавится, ребятки помогите какой функцией отсортировать массив по малым числам на пикрилейтед
Аноним 03/03/17 Птн 10:21:12 #7 №945130 
>>945120
У тебя видимо загвоздка в том, что ты не очень понимаешь что сортируешь. Наверное ты хочешь отсортировать массив по значению, хотя пытаешься через ключи.
http://php.net/manual/ru/array.sorting.php
Попробуй что-то из этого. ИМХО, у тебя очень хромает теория.
Аноним 03/03/17 Птн 10:22:35 #8 №945131 
>>945120
для начала вот это начни использовать:
foonction coolestDumpYouEvaSeen($array) {
echo "<pre>";
print_r($array);
exit;
}

А потом еще сформулируй вопрос нормально. Что из твоего данного массива после сортировки должно получиться.
Аноним 03/03/17 Птн 10:29:14 #9 №945139 
>>945099
Мне после Питона все языки говном кажутся.
До этого писал на пхп. Не представляю как бы снова пришлось писать на нём. Хотя ты мыслишь и делаешь правильно, на пыхе вакансий больше.
Аноним 03/03/17 Птн 10:52:14 #10 №945145 
Зачем везде знаки доллара? Неужели нельзя было сделать то же самое, но без этих экселевских атавизмов?
Аноним 03/03/17 Птн 10:54:34 #11 №945148 
>>945139
Но питон говно по сравнению с D
Аноним 03/03/17 Птн 10:56:25 #12 №945149 
>>945148
C хаскелем бы смешнее зашло
Аноним 03/03/17 Птн 11:00:02 #13 №945152 
>>945145
Спихдили из перла, проебав по пути всю идею.
Аноним 03/03/17 Птн 11:17:31 #14 №945166 
>>945130
> Наверное ты хочешь отсортировать массив по значению
>>945131
> А потом еще сформулируй вопрос нормально. Что из твоего данного массива после сортировки должно получиться.
Ничего не получается. Есть уникальный id, есть значение, которое присваивается этому id. Нужно вывести все id, отсортировав по значению, которому им присвоено. Что-то вроде ORDER BY id
Аноним 03/03/17 Птн 13:47:24 #15 №945227 
>>945120
asort() для кого придумали?
Аноним 03/03/17 Птн 14:57:07 #16 №945259 
14885422275530.png Безымянный.png
>>945227
Говно какое-то. Как этим пользоваться?
Аноним 03/03/17 Птн 15:07:26 #17 №945261 
>>945259
Все, получилось. Слава аллаху
Аноним 03/03/17 Птн 15:18:11 #18 №945266 
>>945259
>1000 строчек с присваиванием вместо цикла
>$peremennye_translitom
По-моему тебе уже только живительная эвтаназия поможет.
Аноним 03/03/17 Птн 15:19:22 #19 №945268 
>>945266
>>945259
Ну и до кучи
>быть долбоебом и не знать про +=
Хотя на фоне простыни вместо цикла это еще цветочки.
Аноним 03/03/17 Птн 15:52:23 #20 №945285 
14885455435640.png 14832165593560.png
>>945266
> >$peremennye_translitom
Могу себе позволить. Я не кодер, которого ебет начальство за каждую орфографическую ошибку в доках, а управленец, который как раз ебет кодеров который ебет нижестоящее начальство, чтобы оно ебало вас


> По-моему тебе уже только живительная эвтаназия поможет.
Программист - это, блядь, бледная моль, шестеренка №64. Кто-то скажет "кококо, а как же Джобс, Гейтсс, Цукерберг?". А вот хуй, эти люди прославились как организаторы-управленцы-бизнесмены, а собственно код писали безликие макаки, на которым всем похуй.

Так что под шконку. Сколько я таких ограниченных перевидала
Аноним 03/03/17 Птн 15:53:03 #21 №945286 
Подскажите, существует готовый скрипт для попапа пикч прям как на дваче (с возможностью перетаскивания и масштабирования)? Или придется все делать самому?
Смог найти только скрипты-галереи без масштабирования и перетаскивания.
Аноним 03/03/17 Птн 16:02:58 #22 №945288 
>>945285
що ты раскудахтался додик, что не пиши уже всем понятно что ты дебил
Аноним 03/03/17 Птн 16:30:58 #23 №945302 
>>945286
Укради с двача че ты как не пират?
А вообще, 99% уже есть такой скрипт, нужно больше искать. Попробуй по-английски составить вопрос гуглу, либо например на stackoverflow создай тему на английском.
>>945285
Добавил в коллекцию паст, это блять эпично.

Алсо, пацаны объясните, как это работает:
>>945259
>if ($ballov -- 0) {} else { print... }
?
Аноним 03/03/17 Птн 16:31:06 #24 №945303 
>>945286
Это называется lightbox, жс-либ для этого навалом.
Аноним 03/03/17 Птн 16:32:59 #25 №945305 
>>945302
>Алсо, пацаны объясните, как это работает:
Это тоже самое, что if ($ballov != 0) без лишних элсов потом.
Аноним 03/03/17 Птн 17:04:26 #26 №945331 
Ананасы, прочитал, что все ошибки теперь наследуются от Throwable. Однако, мой ExceptionHandler, который принимает Throwable, по-прежнему не перехватывает синтаксические ошибки, т. е. parseErrors. Что я не так делаю?
Аноним 03/03/17 Птн 17:49:49 #27 №945389 
>>945331
Алсо, перехватывает, если такие ошибки возникаю внтури классов. Но не работает, когда внутри обычного кода
Аноним 03/03/17 Птн 17:52:39 #28 №945391 
Если у меня некоторые свойства объекта устанавливаются в конструкторе, должен ли я проверять их существование в других методах? Т.е. я как бы подсказываю пользователю класса, что для работы с этим методом необходимы такие-то условия, но с другой стороны есть гарант в виде, что они существуют. Правда где-то их могут очистить... Т.е. наверное все-таки нужно проверять их на существование.
Аноним 03/03/17 Птн 17:54:27 #29 №945392 
>>945391
> есть гарант в виде...
констркутора. фикс
Аноним 03/03/17 Птн 17:56:50 #30 №945394 
>>945392
Конструктор чекает на нулл и невалидные значения? Публичные сеттеры есть? Если нет, то могут ли затереться значения где-то в коде класса? Если с этим всем разобрался, то можешь не проверять нихуя. Однако, поскольку код имеет свойство внезапно подвергнуться правкам твоей же рукой и ты уже забудешь где чего, то для верности можешь чекать вообще всегда.
Аноним 03/03/17 Птн 18:02:53 #31 №945395 
>>945394
Да и вообще паранойя пограмистам еще никогда не мешала.
Аноним 03/03/17 Птн 19:42:22 #32 №945483 
>>945285
Так пускай твои работники это все делают, хули ты тут делаешь? Хуевый ты управленец раз не можешь поручить такую простую задачу кому-то.
Аноним 03/03/17 Птн 19:44:14 #33 №945485 
>>945483
Твое дело в код смотреть, а не управленцам тыкать, говно
Аноним 03/03/17 Птн 19:45:00 #34 №945486 
>>945482
не увидел перекат.
Аноним 03/03/17 Птн 19:46:08 #35 №945488 
>>945485
Тогда я ушел с твоей обоссаной галеры вместе с половиной команды, спиздил сорцы проекта, написал обличающую статьюу на хабре-хуябре и доу, гуд лак искать макак за доширак.
Аноним 03/03/17 Птн 21:58:37 #36 №945599 
>>945285
Чего раскудахтался-то, придурок? Я в код заглядываю раз в 10 лет, чтобы отправить разъеботчикам не только exception.log, но и кусок говно кода, который надо поправить.
>перевидала
Ой, иди нахуй, зелень.
Аноним 03/03/17 Птн 22:32:31 #37 №945619 
>>945488
Вы, мамкины кодеры, никчемные пустые людишки. Посредственности, серая масса. Жизнь ваша убогая, никто вас не любит, никому вы не нужны. Ваши "умные, нестандартные мысли" про спиздить сорцы и написать обличающую статью за пределами интернета никому не интересны, рассуждения уровня пятиклассника о жизни никто слушать не будет, а за особо дерзкие выпады и по ебалу могут накидать. У вас нет чувства юмора и эрудиции, чтобы остроумно шутить, нет знаний и жизненного опыта, чтобы поведать что-нибудь интересное предложениями больше чем из 3-х слов. Детские максимы, псевдознания, почерпнутые из роликов на ютубе и передач по рен-тв, стереотипы, рожденные в среде клешированного офисного планктона и нитакихкакфсе - вот и весь ваш "интеллектуальный" арсенал. Разумеется, ни девушку, ни взрослого, думающего человека таким богатством духа не заинтересовать. Вам хочется денег, славы, признания, но в жизни никто вас даже не замечает, как никто не замечает вошь на бездомной собаке. Вот и приходится вам, бедненьким, привлекать к себе внимание на интернет-пространстве самыми идиотскими высказываниями, на которые сбегаются точно такие же обделенные жизнью, чтобы поспорить, давать советы, увещевать, хоть как-то почувствовать себя чем-то "значимым" для кого-то на другой стороне провода. В интернете вы все аналитики. философы и выдающиеся мыслители современности, а на деле неуверенные в себе, зажатые, зависимые от родителей и мнения окружающих человечишки, прячущиеся в своей комнате от мира и людей, как тараканы от включенного ночью на кухне света. Мне вас жаль.
Аноним 03/03/17 Птн 23:01:21 #38 №945641 
>>945619
>БА-БАХ!

https://youtu.be/X5WIjLxXZRE
Аноним 03/03/17 Птн 23:07:51 #39 №945646 
В чем профит использования констант для enum, как в задании к студентам написано?
Аноним 03/03/17 Птн 23:49:16 #40 №945676 
Сапер. https://github.com/greenTea242/MinesweeperMVC

Оп посмотри, пожалуйста. Если правильно реализовал попап, то буду пробовать сделать виджет для меню.
Аноним 04/03/17 Суб 00:29:20 #41 №945700 
Нытики из перезвоним-треда, выкатитесь обратно плиз. Тут тред про обучение программированию, а не для жалоб на жизнь от всяких неудачников, не способных найти себе хорошую работу. Вы своим нытьем мешаете тем, кто учится.

>>945646

- название Student::GENDER_FEMALE намного больше говорит чем просто строка 'f'.
- сразу видно, какие константы есть и какие варианты значений доступны
- если ты опечатаешься в константе, будет фатальная ошибка, а в случае со строкой -это останется незамеченным
- в IDE будет работать автодополнение при вводе названия константы

Еще хуже было бы, если бы ты например использовал для обозначения пола числа 1 и 2 вместо строк, тогда вообще понять в коде было бы ничего нельзя без констант.
Аноним 04/03/17 Суб 00:44:53 #42 №945704 
>>945391

> Если у меня некоторые свойства объекта устанавливаются в конструкторе, должен ли я проверять их существование в других методах?

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

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

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

если ($this->something неправильное) {
выбросить исключение;
}

Также, эту проверку можно сделать короче с помощью функции assert. Она правда не бросает исключение, а только дает warning:

assert($this->x > 0);

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

>>945331

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

в новом PHP7 вроде бы ошибка синтаксиса вызывает исключение ParseError и его можно ловить: https://www.daveyshafik.com/archives/69237-an-exceptional-change-in-php-7-0.html

В мануале оно тоже еcть: http://php.net/manual/en/class.parseerror.php

http://php.net/manual/ru/function.set-exception-handler.php

Учти, что ловятся ошибки только в подключенных или выполненных через eval файлах.

Но я не очень понимаю, зачем это нужно. Если ты написал кривой код то программа дальше выполняться не может и надо исправить код.
Аноним 04/03/17 Суб 04:13:07 #43 №945782 
Как освоить адаптивную вёрстку? какие есть хорошие уроки по этой теме, желательно чтобы с примерами реальных проектов, то есть чтобы показывался весь процесс адаптивной вёрстки из psd?
Аноним 04/03/17 Суб 04:22:48 #44 №945784 
>>945482

Мы уже в новом треде.

В каждой компании свои градации. Синьора из какой-нибудь провинциальной веб-студии в Гугле даже на собеседование на стажера не пустят.

Обычно эти градации соответствуют опыту:

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

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

Что должен делать претендент на пост джуниора с 0 опытом работы? Конечно, учиться. Зубрить вещи, которые пригодятся ему на работе:

- алгоритмы и структуры данных
- объектно-ориентированное программирование
- понятный и самодокументируемый код (есть книга "Совершенный код" на эту тему)
- системы контроля версий (git)
- если ты вебщик, то веб-технологии (HTML, CSS, JS)
- базы данных, SQL, нормальные формы, транзакции
- изучать популярные инструменты, библиотеки и технологии (фреймворки например)

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

Кстати, специально для такого целеустремленного тебя, у меня есть сборник реальных задач с собеседований: https://github.com/codedokode/pasta/blob/master/interview-tasks.md

Конечно, не везде это нужно. В провинциальной веб-студии, чтобы попасть на должность перекрашивателя меню и натягивателя верстки на CMS, это может не потребоваться. Но ты ведь вряд ли заинтересован в том, чтобы этим всю жизнь заниматься. Наверняка ты хочешь быть полноценным разработчиком в большой команде, разрабатывающей какой-нибудь серьезный продукт.
Аноним 04/03/17 Суб 04:35:06 #45 №945785 
>>945782

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

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

Я советую начать с изучения примеров адаптивных сайтов. Гугли статьи вроде "примеры адаптивных сайтов" и смотри примеры там, чтобы понять, как это обычно выглядит. Если у тебя нет смартфона, то ты можешь имитировать мобильный браузер, сделав окно узким либо открыв инструменты разработчика (Ctrl + SHift + I) и нажав там кнопочку со смартфоном.

Технически нужно изучить всего несколько вещей:

- медиа-запросы CSS @media
- тег meta viewport, говорящий браузеру, что страница адаптирована под мобильные устройства

У нас в ОП-посте есть задачи на CSS и там есть макет, которй надо свестать в том числе с адаптивностью

Иногда еще добавляют адаптацию страницы под экраны с высокой плотностью пикселей (ретина), чтобы для них использовались картинки более высокого разрешения. Гугли HTML-атрибут srcset и теги picture, source.

Вообще, адаптивность не ограничивается мобильными устройствами. Есть и другие вещи, которые можно улучшить. Ну например, при печати страницы ссылки становятся недоступны (ты не можешь кликнуть пальцем на бумагу). Можно в таких случаях сделать правило, чтобы при печати выводились URL ссылок. Изучи медиа-запросы, там много разных опций.
Аноним 04/03/17 Суб 04:37:43 #46 №945786 
>>945782

Вот еще скопирую старый ответ на эту тему:

------

Адаптивность значит способность отображаться на разных устройствах с учетом их особенностей. И это обычно не просто уменьшение шрифта. На мобильных устройствах (адроид/айфон) браузер по умолчанию рисует страницу на холсте шириной 800px точнее, 960px и отображает в уменьшенном виде. Пользователь кликает, чтобы ее увеличить, и если абзацы широкие, то ему приходится прокручивать экран вправо-влево чтобы читать текст (увидеть все это можно тут: http://www.youtube.com/watch?v=-1haU-WRMoA если ты с этим явлением не знаком).

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

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

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

1) правило @media в CSS которое позволяет применять блок правил только при определенных условиях (ширина экрана меньше определенного значения — например меньше 640px). Информация:

http://htmlbook.ru/css/value/media
http://htmlbook.ru/css/media

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

Заметь что @media не поддерживается в старом ИЕ, потому логично верстать страницу по умолчанию под обычные браузеры, а правила для маленьких экранов заключить внутрь @media, который ИЕ наверно проигнорирует (если нет — выносим в отдельный файл и подключаем через условные комментарии).

Кстати, насчет vw, ты можешь делать так:

font-size: 14px; // правило для старых браузеров
font-size: 5vw; // правило для CSS3 браузеров

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

2) тег meta viewport который говорит мобильному устройству что страница учитывает его особенности, и указывает что ее надо рисовать на холсте, равном реальной ширине экрана, чтобы отображалась в 100% масштабе. Часто (подозреваю по незнанию) запрещают зум, хотя мне это не нравится — может у человека маленький экран и плохое зрение и он хочет увеличить текст. Я против таких штук, но среднестатистический верстальщик делает такие вещи методом «скопипастил из интернета» и сам часто не понимает что он делает.

Инфо:
http://frontender.com.ua/mobile-web/wtf-viewport/
http://frontender.com.ua/mobile-web/useful-mobile-head-elements/
http://www.quirksmode.org/mobile/metaviewport/

(только не копируй оттуда куски кода бездумно)

Соответственно, вот примеры реализации адаптивной верстки (уменьши ширину окна чтобы увидеть изменения):

http://foodsense.is/ (комментарии под постами здесь не адаптивные)
http://alistapart.com/d/responsive-web-design/ex/ex-site-FINAL.html
http://robot-or-not.com/
http://spigotdesign.com/

Заметь что там шрифт нигде не меняется.

Если ты понимаешь английский, то вот еще неплохой гайд по основам адаптивного дизайна: https://developers.google.com/web/fundamentals/layouts/

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

Аноним 04/03/17 Суб 08:20:59 #47 №945813 
Что означат значение size для числовых типов в SQL? Количество цифр или велечину значения?

Проверяю на практикте:

mysql> CREATE TABLE test (number INT(6), text VARCHAR(6));
Query OK, 0 rows affected (0,41 sec)

mysql> INSERT INTO test VALUES (7, "abcdef");
Query OK, 1 row affected (0,16 sec)

mysql> INSERT INTO test VALUES (7777777, "abcdef");
Query OK, 1 row affected (0,05 sec)

mysql> INSERT INTO test VALUES (7777777, "abcdefg");
ERROR 1406 (22001): Data too long for column 'text' at row 1

Как такое может быть? Это значение не на что не полвияло.
Аноним 04/03/17 Суб 08:37:59 #48 №945815 
>>945813

Цифра в скобках значит разные вещи для разных типов данных.

https://dev.mysql.com/doc/refman/5.7/en/numeric-types.html (англ)
https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html
https://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html

http://phpclub.ru/mysql/doc/numeric-types.html (рус)

Для типов вроде INT это просто рекомендуемая ширина колонки при выводе чисел
Для DECIMAL задает точность в знаках
Для FLOAT - точность, но не в знаках, а в битах, выделяемых под хранение мантиссы (влияет на то, будет ли использоваться для хранения числа 4 или 8 байт). Если указать 2 числа, то точность в знаках, до которой числа принудительно округляются.
Аноним 04/03/17 Суб 09:17:51 #49 №945830 
>>945813
Может. Так как значения для номеров в скобках это не размер(он всегда фиксирован для инт типов), а количество цифр для отображения при запросе, например, mysql консольным клиентом.
Задачка про лайки Аноним 04/03/17 Суб 09:35:55 #50 №945839 
14886093555810.png 2017-03-04-093014217x131scrot.png
http://sqlfiddle.com/#!9/412e2/18
Отсюда: https://github.com/codedokode/pasta/blob/master/db/databases.md#Задачка-про-лайки/

На всякий случай напишу, что на sqlfiddle результат SELECT'ов по умолчанию выводится в виде HTML-таблицы, что выглядит громоздко, как по мне. Но можно выбрать plaintext (пик).
Аноним 04/03/17 Суб 10:22:44 #51 №945877 
14886121643540.png 2017-03-0410-13-15.png
Вот у меня такая структура проекта (пикрил). Как мне получать адрес папки src из любого места? Ну, я пишу контроллер, в нем метод render, который должен в соответствии с запросом отображать файл из папки views.

[code]
$_SERVER["DOCUMENT_ROOT"]. '/students/src/views/'. $view.'.php'
[/code]

Что-то подсказывает мне, что это говнокод.

Если использовать __DIR__, то у меня получается папка /src/controllers, так как класс контроллера расположен там.
Аноним 04/03/17 Суб 10:47:48 #52 №945887 
14886136681370.jpg 1488613817795.jpg
Сап, помогите вот с этой хуйней. Вроде бы и легко, но решить что-то не могу.
Аноним 04/03/17 Суб 12:16:24 #53 №945940 
Начал писать задание. Пытаюсь в PHP. Кто может ткнуть в самые идиотские ошибки?

https://github.com/TheUnravelGhoul/Students
Аноним 04/03/17 Суб 12:47:11 #54 №945962 
>>945877
мои глаза. просто возьми фреймворк и не парься.
>>945887
дебильные задачки для тупых олимпиадников. даже текст задачи нормально составить не могут. какие-то склеенные банкноты, натуральные числа, вообще ахуеть.
Аноним 04/03/17 Суб 12:47:39 #55 №945963 
>>945940
У тебя в шаблонах код контроллера. Шаблоны только отображают переданные сверху данные, а не обращаются к HTTP/выполняют SQL-запросы, как в твоём случае.
Формирование ссылки на CSS в контроллере выглядит странным (HTML это код шаблона, а не контроллера). Контроллер у тебя создаёт PDO, лучше бы передавать в контроллер сразу AbiturientGateway. Контроллеры в студентах необязательно делать классами, хватит двух скриптов list.php и form.php, которые будут разбирать HTTP-запрос, обращаться к модели и в конце подключать шаблон. Валидировать студента - не ответственность Gateway, нужно вынести валидатор оттуда. Мне кажется, что ты не читал пасту про MVC: https://github.com/codedokode/pasta/blob/master/arch/mvc.md
Исполняемый файл композера, папки vendor и .idea в системе контроля версий нет смысла хранить, добавь их в .gitignore
Аноним 04/03/17 Суб 12:48:39 #56 №945964 
>>945940
>https://github.com/TheUnravelGhoul/Students/blob/master/web/index.php
Сразу же проиграл.
Аноним 04/03/17 Суб 12:48:53 #57 №945966 
>>945940
foreach ($this->css as $css){
$list .= "<link rel = 'stylesheet' href = '". $css ."'>\n";
}
бляяя, такого ахуенного подключения стилей прямо в контроллере я еще не видел. просто 10 из 10 говнокод.
Аноним 04/03/17 Суб 12:50:57 #58 №945971 
>>945940
>htmlspecialchars($_GET['action']);
Ты нахрена так делаешь, у тебя что в контроллере SQL инъекция может быть?
Аноним 04/03/17 Суб 12:53:41 #59 №945974 
>>945966
Я честно говоря даже боюсь подумать нахуя так делать то.
Аноним 04/03/17 Суб 12:54:15 #60 №945975 
Привет, аноны.

Мы потихоньку пилим сообщество тех, кто учит вёрстку, полноценный frontend или же backend - https://vk.com/webdevheroes

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

Всех, кто желает получить новую специальность или кому просто интересно, приглашаю начинать учиться вот прямо сейчас: https://vk.com/webdevheroes

Большинство начинают учить по этому курсу с самого начала: https://htmlacademy.ru/courses

Какие-то аноны учат по книгам, кто-то по другим сайтам. Заходите, рассказывайте о том, как учите, к чему стремитесь, и, самое главное, просите помощи, если есть трудности.

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

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

https://vk.com/webdevheroes
Аноним 04/03/17 Суб 12:55:37 #61 №945979 
>>945940

require_once './../config/db.php';
require_once './../vendor/autoload.php';
use ghoul\controllers\SiteController;
use ghoul\helpers\gateways\AbiturientDataGateway;
use ghoul\models\Abiturient;
$action = empty($_GET['action']) ? "index" : htmlspecialchars($_GET['action']);
$site = new SiteController($config);
$site->registerCss("css/style.css");
$abiturientGateway = new AbiturientDataGateway($site->pdo);
?>

<html>
<head>
<title>Список абитуриентов</title>
<?=$site->getCssList()?>
</head>
<div class = "wrapper">
<?php $site->render($action) ?>
</div>
</html>

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


https://github.com/TheUnravelGhoul/Students/blob/master/src/views/index.php

Метод POST у тебя тоже должен быть в контроллере отдельно от html, а не во вьюхах. Во вьюхи выводится только хтмл код и переменные, которые ты передаешь во вью через контроллер. Весь код лежит в контроллерах или моделях. Во вью только циклом по массиву, который лежит в переменной, переданной через контроллер, можешь пройтись.
Аноним 04/03/17 Суб 13:02:48 #62 №945987 
чем пхп лучше Джанги или разницы нет,результат один?
Аноним 04/03/17 Суб 13:06:52 #63 №945994 
>>945987
Джанга лучше пхп, фласк лучше джанги. Питон лучше пхп. На питоне нет работы, на пхп дохуя. Выбор за тобой.
Аноним 04/03/17 Суб 13:07:36 #64 №945995 
>>945994
почему такой парадокс?
Аноним 04/03/17 Суб 13:08:28 #65 №945997 
>>945962

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

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

>>945963

Контроллеры можно делать и классами, и скриптом, и так и тк можно.

>>945964
>>945966

Он не сеньор с 20 годами опыта чтобы с первого раза все идеально написать. Не понимаю, в чем твоя претензия.

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

>>945971

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


Аноним 04/03/17 Суб 13:09:48 #66 №946001 
>>945971

Алсо, какое отношение htmlspecialchars имеет к SQL инъекциям, можешь прояснить? советую для начала изучить этот урок https://github.com/codedokode/pasta/blob/master/security/sql-injection.md
Аноним 04/03/17 Суб 13:10:37 #67 №946003 
>>945995
Какой еще парадокс? По-моему тут все логично и очевидно.
Аноним 04/03/17 Суб 13:11:46 #68 №946004 
>>945877

Есть варианты. Во-первых можно писать так:

__DIR__ . '/../src/';

.. - значит подняться на 1 уровень выше

можно так:

dirname(__DIR__) . '/src/xxx';

Аноним 04/03/17 Суб 13:12:01 #69 №946005 
>>946003
питон лучше,но мало работы.ват а фака?
Аноним 04/03/17 Суб 13:15:00 #70 №946009 
>>945997
>Вы прежде чем комментировать, не пробовали понять, что тут происходит, что это за тред и зачем люди здесь код постят? В ОП посте написано, прочитайте сначала.
Да я не придираюсь, просто мне было бы реально интересно понять ход мыслей - зачем в объекте хранить подключение таблицы стилей. А так у него типичная проблема неофита -понимание MVC.
Аноним 04/03/17 Суб 13:16:09 #71 №946011 
>>946005
На пхп очень много всего написано. Куча ORM, фреймворков и т.п. А на питоне? Собственно питон же и не заточен чисто на веб, а вот пхп полностью, того он в нем и доминирует, ничего странного.
CSS 1-5 Аноним 04/03/17 Суб 13:19:11 #72 №946012 
1: https://jsfiddle.net/mjqgokp8/1/
2: https://jsfiddle.net/Lq1fgjde/
3: https://jsfiddle.net/jf001qkz/
4: https://jsfiddle.net/zvcemf1n/
5: https://jsfiddle.net/716kuL41/

Я, правда, не все статьи по ссылкам читал, если видел, что и так удалось (удалось ли?) решить задание. Обязательно почитаю их.
Аноним 04/03/17 Суб 13:19:21 #73 №946013 
>>946011
Но на пистоне можно писать все то же самое, что и на пхп, только в разы изящнее. Еще руби есть, он например тоже заточен только под веб.
Все дело в говноедстве пидорах, эти тупые уебаны без чувства прекрасного будут еще сто лет форсить убеанскую хуйню, типа 1С или хостинга всего и вся на шинде и аспе. Эта тяга к безвкусице и некрасивым решениям, костылям и говну уже в крови.
Аноним 04/03/17 Суб 13:21:40 #74 №946014 
>>946013
как буд то на западе этого нет.питоном пользуються в основном узкая прослойка проэктов,заточеная на что то новое
Аноним 04/03/17 Суб 13:23:54 #75 №946018 
>>946011
>куча фреймворков
Пхп:
Cимфони, ларавел. Остальное хуйня для хипстеров.
Питон:
Джанга, фласк Остальное хуйня для хипстеров.
Аноним 04/03/17 Суб 13:26:00 #76 №946020 
>>946011
короче,зря я бросил пыху,дохуя времени потратил на питон
Аноним 04/03/17 Суб 13:26:03 #77 №946021 
>>946013
>Но на пистоне можно писать все то же самое, что и на пхп, только в разы изящнее.
Так бери и пиши, в чем проблема? Вот когда будут полноценные альтернативы симфони, доктрины, зенда и прочего - тогда посмотрим, может пхп и зафейлится. Понимаешь, "изящность" это ну очень мутное преимущество. Я например не перевариваю snake-case и табуляцию как часть синтаксиса.
>Еще руби есть, он например тоже заточен только под веб.
Руби ВСЁ, официально.
Аноним 04/03/17 Суб 13:28:34 #78 №946023 
>>946013
зато для веба надо выучить питон,а потом еще и фраймворк и дрочить его.а на пыхе сразу в бой
Аноним 04/03/17 Суб 13:29:30 #79 №946024 
>>945987
джанго говно каждый школьник в своем тех.пту учит, а потом эти толпы после выпуска со знаниями одной джанги валят на рынок труда и переполняют его.
Аноним 04/03/17 Суб 13:29:52 #80 №946025 

аноны, как мне подключится к
ssh://git@sport.testdev.ru:22111/dev.git
Аноним 04/03/17 Суб 13:31:41 #81 №946027 
>>946024
пиздеж,так сразу в него не вкатишься
Аноним 04/03/17 Суб 13:32:03 #82 №946028 
>>946023
>зато для веба надо выучить питон,а потом еще и фраймворк и дрочить его
Пыха:
Учишь пыху, учишь фреймворк, дрочишь его. ЧЯДНТ?
Аноним 04/03/17 Суб 13:32:08 #83 №946029 
>>945997
Я сам учился кодить в этом треде и сейчас уже джуном работаю, но даже я на начальных этапах начинал с верстки и таких ошибок в мвц не делал. он даже мвц толком не написал, а создал какого-то монстра, мог просто погуглить статьи о мвц и ПОВТОРИТЬ простенький апп-бутсрап.
Аноним 04/03/17 Суб 13:32:49 #84 №946031 
>>946028
можно сразу на пхп
Аноним 04/03/17 Суб 13:33:15 #85 №946032 
>>946001
а зачем в гет запросе, который передается в урл эскапировать html тэги? Это приведет только к искажению урла, который ты получаешь гетом.
Аноним 04/03/17 Суб 13:33:16 #86 №946033 
>>946031
Ты дебил?
Аноним 04/03/17 Суб 13:33:32 #87 №946034 
>>946025
bump
Аноним 04/03/17 Суб 13:34:15 #88 №946035 
>>946033
почему?
Аноним 04/03/17 Суб 13:35:03 #89 №946038 
Что надо использовать на яваскрипте, чтобы при наведении мышки на ссылку показывалась одна из картинок, которая находится по этому адресу?

1. Если это ссылка на другую страницу этого же сайта, но адрес на картинку недоступен на этой страницы из запроса к базе данных.
2. Если это ссылка на другой сайт.

Я так понял тут нужны какие-то парсеры чтоли, но как их делать на яваскрипте?
Аноним 04/03/17 Суб 13:39:35 #90 №946042 
у нас на работе кстати работает джунша с вышкой тех.вуза, которая не знает, как делать мвц и не может во фреймворки. до сих пор все ручками пишет и ведь ее говноподелия с уродской админкой впариваются заказчикам. у меня просто глаза вытекли, когда она данные в форме на пустоту не проверила, даже элементарный required в инпуты не поставила. И такой-то шок у меня был после пхп треда, где учили делать самостоятельно мвц и дрочили за отсутствие валидации форм.
Зато любит матан и создает рандомные многоугольники через синусы всякие. Еще один пруф, что матанобляди не могут в кодинг
Аноним 04/03/17 Суб 13:40:53 #91 №946046 
>>946027
поэтому и не вкатишься, что его каждый школьник с нейросетями в вузах типа бауманки учит, а потом со 2ого курса идет работать.
Аноним 04/03/17 Суб 13:42:31 #92 №946048 
>>946046
на них работы мало
Аноним 04/03/17 Суб 13:44:57 #93 №946053 
>>946048
на всем, чему учат в вузах, нет работы, потому что там программа устарела лет на 50. еще спроси, почему нет работы для паяльщиков микроконтроллеров, хотя этому учат в вузах.
Аноним 04/03/17 Суб 13:45:11 #94 №946054 
>>946042
Лол. Зато если тебе когда-нибудь поставят задачу написать граф, ну там поиск пути - ты соснешь, а она на повышение пойдет.
Аноним 04/03/17 Суб 13:48:31 #95 №946062 
>>946043
Все, кто учился на спецухе - тупо проебал 4 года впустую.
Аноним 04/03/17 Суб 13:50:02 #96 №946065 
>>946058
Пруфов нет, иди нахуй.
Аноним 04/03/17 Суб 13:50:21 #97 №946067 
14886246216470.png 14787106241360.png
>>946062
там могут преподавать полную ересь-но без бумашки,ты какашка.а с бумашкой-человек
Аноним 04/03/17 Суб 13:51:16 #98 №946069 
>>946067
Прогнулся под мамкин форс?
Аноним 04/03/17 Суб 13:51:29 #99 №946070 
>>946065
как и у вас в обратку.весь этот хайп,о том что кодинг последний вагон уходящего поезда возможностейЮмиф для быдла
Аноним 04/03/17 Суб 13:52:56 #100 №946076 
Блять, да выкатывайтесь вы из этого треда, у нас тут изучанеие похапе а не платиноые срачи. Пожаловался моче на уебков короч.
Аноним 04/03/17 Суб 13:53:18 #101 №946077 
ОП, может лучше на Доброчане тред создавать? Или создавать 2 PHP-треда, в одном - задачки и ответы, во втором пусть люди обсуждают важность ВО, а управленцы будут унижать кодеров. До 500-го поста в треде один трём ни о чём.
Аноним 04/03/17 Суб 13:53:20 #102 №946078 
>>946069
еще раз,нет диплома,тебя не возьмут,особенно по джаве и плюсам,может макакой пхпешной и то маловероятно
Аноним 04/03/17 Суб 13:53:42 #103 №946079 
>>946070
>кодинг последний вагон уходящего поезда возможностей
Щито? У тебя какой-то неправильный манямирок.
Кодинг это сознательный выбор, никакого хайпа.
Короче, не вижу смысла дальше общаться с тобой, укатывайся на софтач траллировать.
Аноним 04/03/17 Суб 13:54:26 #104 №946082 
>>946077
Доброчан давно мертв, а доброчановские аноны - гнилье анимешное.
Аноним 04/03/17 Суб 13:54:42 #105 №946083 
>>946079
еще как хайп,миллионы говно сайтов с азами как бы намекают и книги изучим говно за 21 день
Аноним 04/03/17 Суб 13:56:44 #106 №946088 
14886250049240.jpg 14687984213850.jpg
>>946083
поэтому в программаче я предлагаю создать тред о РЕАЛИЯХ кодинга в плане менеджмента,финансов и требованиях
Аноним 04/03/17 Суб 13:57:07 #107 №946089 
Ого сколько зелени в треде! Какой лучше изучать фреймворк первым? Склоняюсь к симфони и yii 2. Посоветуйте мануалы по симфони.
Аноним 04/03/17 Суб 13:59:07 #108 №946095 
>>946089
Ии2 самый поплуярный. Или ларавель, хуй знает. Симфони и зенд это для илитки уже, не влезай пока не будет хотя бы года кодинга.
Аноним 04/03/17 Суб 13:59:28 #109 №946097 
14886251690000.jpg 980x.jpg
>>946078
но меня уже взяли.
Аноним 04/03/17 Суб 14:00:04 #110 №946098 
14886252045460.png 14846769968690.png
>>946089
мониторь сайты с работой отсюда и делай вывод
реалист кун
Аноним 04/03/17 Суб 14:00:32 #111 №946099 
>>946097
пруфов как всегда не будет
Аноним 04/03/17 Суб 14:00:52 #112 №946101 
>>946054
>веб
>написание графов
вылези из своих маняфантазий. она разве что синус у треугольника посчитает и ребро у ромба найдет.
Аноним 04/03/17 Суб 14:01:29 #113 №946106 
УХОДИТИ! ТУТ ЛАМПОВЫЙ ПХП ТРЕНДЖ!
Аноним 04/03/17 Суб 14:02:57 #114 №946108 
14886253774010.jpg 14777588802290.jpg
>>946106
нахуя ты его учишь?пополнишь ряды говнокодеров
Аноним 04/03/17 Суб 14:03:46 #115 №946110 
Сириусли единственная причина проебать 5 лет в вузе - это если у тебя родоки богатые, они готовы тебя кормить пять лет и еще и за вуз доплачивать. А также ты хочешь 5 лет пропинать хуи, поебывая однокурсниц и ходя на общажные вписки. Все. Т.е. это просто такая дыра, куда ты должен убить 5 лет своей жизни только потому, что работодатели не любят нанимать малолеток до 23 лет ибо они нестабильны из-за гормонов и амбиции через край.
Аноним 04/03/17 Суб 14:04:24 #116 №946112 
>>946076
как будто это не правда
Аноним 04/03/17 Суб 14:05:54 #117 №946114 
>>946110
вот.образование полное дно без практики.но без диплома ты говно
Аноним 04/03/17 Суб 14:06:37 #118 №946118 
>>946110
Но ведь работодатели любят нанимать малолеток. Сейчас придешь в контору 22+ - сразу начнутся подозрительные взгляды - а где вы до этого хуи пинали?
Аноним 04/03/17 Суб 14:08:07 #119 №946121 
14886256875600.png 14698752529090.png
>>946118
потому что малолеток можно ебать в хвост и гриву,за маленькую зп
Аноним 04/03/17 Суб 14:09:20 #120 №946124 
>>946118
>>946114
>>946110

Нытики, выкатывайтесь в свой нытик-тред и перестаньте оффтопить. Это тред изучения PHP
Аноним 04/03/17 Суб 14:10:31 #121 №946125 
>>946118
Любят, но только в днищеконторы на мелкую зп, где дикая потребность в кадрах.
Давайте лучше перекатимся с этим обсуждением в перезвони тред.
Аноним 04/03/17 Суб 14:10:54 #122 №946126 
14886258549320.jpg 14813929648000.jpg
>>946124
зато как оживился тред!
Аноним 04/03/17 Суб 14:17:57 #123 №946130 
>>946018
Работаю на yii и phalcon. Я у мамы хипстер.
Аноним 04/03/17 Суб 14:18:36 #124 №946132 
>>946130
для хипстеров есть НОДа
Аноним 04/03/17 Суб 14:19:44 #125 №946134 
>>946132
На ней тоже работаю кстати. Правда в меньшей степени гораздо.
Аноним 04/03/17 Суб 14:22:04 #126 №946138 
как правильно организовать передачу аргументов в функцию?
Аноним 04/03/17 Суб 14:25:24 #127 №946146 
Почему на ОП-пиках котики? Здесь есть какая-то логическая связь?
Аноним 04/03/17 Суб 14:26:57 #128 №946151 
>>946146
ну мы же котаны
Аноним 04/03/17 Суб 14:32:05 #129 №946156 
>>946146
потому что мы тяночки-анимешницы с доброчана.
Аноним 04/03/17 Суб 14:37:06 #130 №946161 
на чем работает двач?
Аноним 04/03/17 Суб 14:41:54 #131 №946163 
14886277150240.png blob

Аноним 04/03/17 Суб 14:43:27 #132 №946167 
>>946161
Пёрл + нгинкс.
Аноним 04/03/17 Суб 14:44:36 #133 №946169 
>>946167
толсто
Аноним 04/03/17 Суб 14:48:22 #134 №946173 
объясните,как работает return?
Аноним 04/03/17 Суб 14:53:33 #135 №946178 
>>945979
>>945963
>>945997

Спасибо. Вообще, я с MVC столкнулся в первый раз, фактически. До этого говнокодил как попало, сейчас пытаюсь исправляться.
Аноним 04/03/17 Суб 14:58:52 #136 №946181 
>>946178
Если тебе тяжело понять это, советую потратить денек на http://nnmclub.to/forum/viewtopic.php?t=1046622 второй курс, 1-4 уроки. Только я например так и не понял зачем он там синглтоны пихает, но MVC поясняет очень хорошо. Да, я знаю что смотреть курсы - тупиковый путь, но там просто лектор реално хороший.
Аноним 04/03/17 Суб 14:59:27 #137 №946183 
14886287674780.png blob
Аноним 04/03/17 Суб 15:00:09 #138 №946184 
Если я правильно понимаю хабростатью про MVC, то:

1) Весь код содержится в контроллере.
2) В view содержится только html с выводом необходимых переменных.
3) Вызывать view через include(файл) в контроллере - это нормально.

Где я не прав, поправьте.

>>946178 -кун
Аноним 04/03/17 Суб 15:03:31 #139 №946185 
>>946184
В моделях содержится вся работа с данными. Вьюхи, понятно, чисто для рендера. Контроллер как связующее звено между всем этим выступает. Вьюха дергает контроллер - контроллер дергает модели (а может и не дергать) - контроллер дергает вьюху какую-то, чтоб та отрендарилась и так до усеру.
Стоит заметить, что это вебовское mvc, каноничное вообще не так работает, а тут это скорее mvp напоминает.
Аноним 04/03/17 Суб 15:05:50 #140 №946187 
> контроллер дергает модели (а может и не дергать)

Это понял.

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

>Вьюха дергает контроллер
А вот это - не совсем. Вью же отвечает только за отображение информации, райт? Она не должна трогать контроллер, разве что в плане получения из него каких-то данных для рендера.
Аноним 04/03/17 Суб 15:11:53 #141 №946190 
>>946184
Ты совсем не понял. MVC не значит, что у тебя должен быть определенный набор файлов, скриптов, это логическое разделение кода. Контроллер - это часть кода, куда попадает запрос пользователя. Он обрабатывает запрос и передает необходимые данные модели. Модель - это код отвечающий за всю логику приложения считай. Вычисления, сущности, операция с БД - это все модели. Сама по себе данные для работы она получает только из контроллера(запомни, это важно). Получив необходимые данные модель отправляет их контроллеру, тот уже подключает шаблон(через include например). Как-то так.
>>946187
Котнроллеры должны дергать всякие методы. Модель и вьюха живут отдельно и не знают о существовании друг друга.
Аноним 04/03/17 Суб 15:17:49 #142 №946192 
14886298694020.jpg vovka.v.tridev.tsarstve.avi.image2.jpg
>>945059 (OP)
Покритикуйте мою авторизацию плиз

https://github.com/grigoryMovchan/auth
Аноним 04/03/17 Суб 15:19:45 #143 №946193 
>>946190
Да нет же, я понимаю это. Наверное, просто не совсем ясно выразился.

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



Аноним 04/03/17 Суб 15:20:04 #144 №946194 
>>946187
Ну это я образно, типа жизненный цикл запроса описал с учетом, что страница в браузере это уже отданная клиенту вьюха. Ну да, технически это не вью, я выразился так просто. Давай по новому, клиент делает запрос откуда то, твое приложение его роутит и он приходит на контроллер, контроллепр работает с моделями и сам чет делает, что считает нужным (логику работу с данными, однако, ты инкапсулируешь в модели), в конце концов контроллер отдает какие-то данные вьюхе, та их использует для рендера статики, ну а статика уже выплевывается обратно клиенту.
Аноним 04/03/17 Суб 15:21:08 #145 №946196 
Есть альтернативы мануалу по YII2 на русском языке? На рутркере в топе Сафронов М. - Разработка веб-приложений в Yii 2, но ее не очень хвалят в комментариях.
Аноним 04/03/17 Суб 15:22:06 #146 №946197 
>>946194
Вот, теперь понятно, спасибо.
Аноним 04/03/17 Суб 15:22:16 #147 №946198 
14886301368580.png 2017-03-0415-27-16.png
>>946192
фронт
Аноним 04/03/17 Суб 15:22:41 #148 №946199 
>>946196

Помню еще в треде упоминался видеокурс https://www.youtube.com/watch?v=R-yQux1S63w , стоит его смотреть вместо книг?
Аноним 04/03/17 Суб 15:49:50 #149 №946217 
Я с довольно дурацкой проблемой пришел, прямо затупил в этот раз.
Есть уже большое приложение с рест апи, все как всегда. Но один из маршрутов возвращает кириллицу в виде "????". Весь проект на utf-8, вся база в utf8-general-ci. Откуда по совершенно такому же гет запросу, как и остальные, вдруг меняется кодировка ума не приложу. (жизненный цикл абсолютно одинаков для каждого гет запроса) Во время выполнения самого приложения вплоть до отдачи из контроллера данные в нужной кодировке находятся. Вот такие дела. С учетом этого можно все это обойти просто сделав эхо прямо из контроллера, но хотелось бы все же понять в чем дело то может быть.
Аноним 04/03/17 Суб 16:08:52 #150 №946230 
>>946184
>>946181
>>946178

Гляньте тогда и мой урок по MVC: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

>>946184

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

> Вызывать view через include(файл) в контроллере - это нормально.
В общем, да.

>>946185

>Вьюха дергает контроллер - контроллер дергает модели (а может и не дергать)

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

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

Контроллер просто принимает данные от браузера (например, анализирует GET/POST) и затем вызывает модель и вью.

>>946190

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

Условно говоря, модель содержит всю логику приложения, кроме вывода данных (это задача вью) и приема HTTP запросов от браузера (это работа контроллера). То есть любое действие в приложении можно сделать программно, вызывая методы модели. Хочешь получить список студентов? есть такой метод. Хочешь найти студентов по ключевому слову? Есть такой метод. Хочешь добавить нового студента? Есть и такой метод. То есть имея только модель, ты можешь программно (вызывая функции) делать все действия, которые доступны в приложении. Или, если перефразировать, для любых действий, которые доступны в приложении (просмотр, поиск, регистрация), есть методы модели, которые их выполняют.
Аноним 04/03/17 Суб 16:28:43 #151 №946240 
14886341236900.jpg vovka.v.tridev.tsarstve.avi.image2.jpg
>>946230
Рейтаните контроллер плиз. Слишком толстый?
https://github.com/grigoryMovchan/zuihitsu/blob/master/app/Http/Controllers/PostController.php
Аноним 04/03/17 Суб 16:32:59 #152 №946246 
>>946240
Мне кажется, ты зря прямо в контроллер передаешь посты. Хотя я так понял у тебя там ларавель, может там так и надо.
Аноним 04/03/17 Суб 16:38:09 #153 №946249 
>>946246
А ты про что именно?
Если про переменные с постами, то они для шаблонизатора, который их потом раскидывает по виду. Сами посты я получаю из модели, контроллер только отправляет их шаблонизатору.
Аноним 04/03/17 Суб 16:41:11 #154 №946250 
>>946240
алсо, можете еще порейтить стиль кода, тоже будет кстати
Аноним 04/03/17 Суб 17:01:43 #155 №946270 
>>946249
Я про вот это.
>public function __construct(Post $posts, Tag $tags, Attitude $attitude)
Я конечно не знаю что ты хочешь там вообще сделать, но по идее ты должен внутри контроллера получать из модели посты, не? А так ты выходит получаешь где-то посты, потом передаешь их в контроллер. Со стороны выглядит как грубое нарушение принципов MVC.
Аноним 04/03/17 Суб 17:04:02 #156 №946271 
Напомню себе, что надо проверить из старого треда:

https://github.com/someApprentice/maintaskforlayout/ >>919288
https://github.com/someApprentice/Students/ >>926219
https://github.com/sylenien/php-news-site/ >>927983
https://github.com/grigoryMovchan/zuihitsu >>932473
https://github.com/greenTea242/MinesweeperMVC >>938223
https://github.com/anotherCodeMunkey/fileshare >>938323
Аноним 04/03/17 Суб 17:11:35 #157 №946278 
14886366958970.jpg 5dJD2tK2QgY.jpg
>>946270
Не, это какая-то ларавелевская хуйня, так уже было из коробки
Я так понял, она получает класс модели, чтобы создать из него объект, который присваивается свойству внутри контроллера, чтобы потом получать доступ к методам модели через это приватное свойства конструктора.
Можно в конструктор ничего не передавать, тогда в модели методы должны быть статичными, чтобы обращаться к ним без создания нового объекта из класса модели.
Аноним 04/03/17 Суб 17:12:31 #158 №946280 
14886367516990.jpg 14831331277010.jpg
>>946271
>https://github.com/grigoryMovchan/zuihitsu
Уже проверил >>946240
Аноним 04/03/17 Суб 17:16:34 #159 №946284 
14886369946320.jpg sIUUC3s0XqQ.jpg
>>946278
я потом хуй забил и просто нагородил статичных методов в модели, о чем теперь жалею, потому что дошло, что надо выбирать что-то одно
Аноним 04/03/17 Суб 17:20:29 #160 №946286 
>>946284
Тебе наверное надо побольше документации читать, или там советы какие в интернете ищи. Тут вроде не объявлялись знатоки ларавели.
Аноним 04/03/17 Суб 17:21:31 #161 №946290 
14886372919580.jpg 850117563eb10f6cfb4a980573d0167a002e3ed15800.jpg
>>946286
Я думал это топ фреймворх эва
Аноним 04/03/17 Суб 17:26:05 #162 №946293 
>>946290
Топ по популярности. Но я вот например его не люблю.
Аноним 04/03/17 Суб 17:34:34 #163 №946301 
Почему бы в студентах валидацию не запилить прямо в модель студента?
Аноним 04/03/17 Суб 17:45:47 #164 №946308 
>>946270

Это кривой код, он толком сам не понимает что представляет собой объект Post и что надо передавать в контроллер. Просто где-то что-то похожее видел и бездумно написал по аналогии.

>>946284

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

Вот мануал по моделям в Eloquent - ты читал? https://laravel.com/docs/5.4/eloquent#introduction

Если ты не знаком с Active Record то опять же, прочти сначала теорию прежде чем писать код: https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

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

В Eloquent объект Post представляет собой один пост, а для работы с таблицей постов в целом используются статические методы. Найти пост - статический метод. Изменить заголовок поста, проверить пост - обычный.

> return $this::where

Так не пишут. для вызова статических методов используют self::

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

> public function getPost($id)

Это не статический метод. Чтобы его вызвать, нам надо иметь объект класса Post, который соответствует одному посту в БД. То есть чтобы вызвать getPost (и найти пост в БД), мы должны сначала загрузить из БД объект поста. Ну бред же, как ни смотри.

Та же проблема с нестатическим методом forUser. Получается чтобы найти все посты пользователя, мы должны сначала загрузить какой-нибудь другой пост. Ну и вообще, этот метод наверно логичнее бы смотрелся в классе User. $user->findPosts(...)

> public static function getPageCount(User $user)
Неправильное название функции, она считает не число страниц, а число постов. Опять же, возможно ее логичнее в класс юзера поместить. Я не знаю, как в ларавел принято это делать.

> public function setPost($request, $post)
Почему у тебя модель работает с запросом? Это задача контроллера.

> public function countPages($request, $posts_on_page, $this_page)
Эта функция вообще непонятно, что делает в этом классе. Вот смотри, простой пример: допустим ты захочешь сделать пагинацию для еще каких-то сущностей, тебе придется скопировать в тот класс весь этот код. Очевидно, что его надо вынести в отдельный универсальный класс, а не копировать в каждую модель.

Далее, про класс Attitude. Во-первых, у него неправильное название, не Attitude, а Relation. Во-вторых, Relation тоже неправильное название, так как не говорит, связь чего с чем представляет это класс, правильно PostToTag или PostTagRelation, как-то так.

Но нужно ли писать этот класс? В документации по Eloquent написано что есть поддержка отношений многие-ко-многим: https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

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

Вот там был выше анон, который написал глупый комментарий вроде "зачем тратить время на написание задачи про студентов с нуля, бери фреймворк". Вот когда сразу берут фреймворк, получается такой результат.
Аноним 04/03/17 Суб 17:47:45 #165 №946309 
>>946301

Потому, что для проверки уникальности email надо обращение к БД (через объект StudentDataGateway). В модели такого объекта нет. Также может потребоваться обращение к каким-то другим сервисам. Поэтому валидатор логично сделать внешним по отношению к модели сервисом.
Аноним 04/03/17 Суб 17:58:07 #166 №946312 
>>946192
Я не ОП, но вот основные, на мой взгляд, проблемы:

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

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

Обработка ошибок сделана неправильно, ты поставил PDO в режим исключений, но потом при запросе ты все равно почему-то делаешь проверку
https://github.com/grigoryMovchan/auth/blob/master/php/module.php#L18 Если у тебя PDO стоит в режиме исключений, этого делать не нужно, при любой ошибке БД PDO выбросит исключение, которое ты потом сможешь обработать как хочешь.

https://github.com/grigoryMovchan/auth/blob/master/php/mysql.php#L21 И тут сразу же бросается в глаза неправильная работа с исключениями. Почитай урок ОПа https://github.com/codedokode/pasta/blob/master/php/exceptions.md

>TODO: вынести валидацию формы на фронт с помощью AJAX
Это сделано очень неудачно. Мало того что у тебя в коде две разные валидации (одна обычная, другая для аякса), так ты еще хочешь оставить только аякс, чтобы у пользователей без JS совсем ничего не работало. На мой взгляд это неправильный подход. Я бы сделал отдельный класс или метод для валидации данных которые пришли, этот метод возвращал бы массив с ошибками типа ['имяПоля' => 'текст ошибки'] (или пустой массив если все хорошо). Затем использовать один и тот же метод при аяксе и при обычной отправке формы сабмитом. В случае если запрос пришел аяксом, отдаешь JSON с массивом ошибок, если при обычном сабмите формы - показываешь пользователю ту же форму с ошибками.

https://github.com/grigoryMovchan/auth/blob/master/php/module.php#L179 Не совсем понятно зачем ты используешь сессии и куки одновременно. Ты же понимаешь как работают сессии и в чем их отличие от кук?

https://github.com/grigoryMovchan/auth/blob/master/php/module.php#L120 Не работает с кириллицей, почта вида иван@пример.рф валидацию не пройдет.

Это только что бросилось в глаза при беглом просмотре, основная проблема в том что код плохо разделен и читать его трудновато.
Аноним 04/03/17 Суб 17:59:30 #167 №946313 
>>946284

> Attitude::getTags($post->id, 'name'))
Почему не $post->getTags()->pluck('name')->all() ? Изучи какие есть методы у коллекций: https://laravel.com/docs/5.4/collections#method-pluck

Но правильнее передавать в вью не склеенную строку, а коллекцию тегов, а оно пусть делает с ней что хочет.

Дальше, редактирование у тебя сделано в виде 2 методов:

> public function edit(Request $request, Post $post)
> public function save(Request $request, Post $post)

При таком подходе, как ты сделаешь обработку ошибок? Вот пользователь заполнил форму неправильно, мы должны показать ему эту форму и сообщение об ошибке. Но в твоем варианте с редиректами введенные в форму данные просто потеряются. Тебе надо почитать про алгоритм обработки форм: https://github.com/codedokode/pasta/blob/master/forms.md

У тебя даже валидации нет. У тебя можно отправить форму с пустыми полями.

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

Вообще, тебе надо сделать задачу про студентов и почитать комментарии к ней (в ОП посте). Ты взялся за фреймворк, не изучив много более базовых вещей вроде валидации или работы с формами.
Аноним 04/03/17 Суб 18:01:42 #168 №946314 
>>946312

Насчет валидации, в Юи можно прописывать правила валидации в модели и там один и тот же код обеспечивает валидацию и обычного POST-запроса и аякс-валидацию для отдельных полей. Я подозреваю, в Laravel тоже есть какое-то готовое решение для работы с формами и валидацией и надо использовать его.
Аноним 04/03/17 Суб 18:03:35 #169 №946315 
>>945059 (OP)
Первый раз вижу чтобы фреймворк из коробки не работал по гайду, это я об Slim v3, всегда 404 ошибка, /hello/lorem не отрабатывает вообще, об htaccess вообще речи не идет в их официальном installation guide.
Полазив в инете единственное, что понял - популярность этого фреймворка довольно низкая, так как нет абсолютно ничего, ни рабочего примера нигде, ни гайдов нормальных, комьюнити нет совсем. Зачем на нем писать fileshare ?
Аноним 04/03/17 Суб 18:07:01 #170 №946317 
>>946315
Слим это микрофреймворк, конечно у него будет ниже популярность чем у серьезных вещей вроде Symfony или Yii.

>всегда 404 ошибка, /hello/lorem не отрабатывает вообще
Это потому что у тебя на веб-сервере не настроен URL Rewrite.

>об htaccess вообще речи не идет в их официальном installation guide
Плохо искал.
https://www.slimframework.com/docs/start/web-servers.html
Аноним 04/03/17 Суб 18:08:45 #171 №946318 
>>946317
https://github.com/slimphp/Slim
и
https://www.slimframework.com/docs/start/installation.html
Аноним 04/03/17 Суб 18:10:41 #172 №946319 
>>946315
Попробуй фалкон, еще захочешь.
Аноним 04/03/17 Суб 18:11:09 #173 №946320 
>>946318
https://github.com/slimphp/Slim#usage
Вот же есть раздел про использование, там пример с встроенным в PHP веб-сервером (на котором URL Rewrite работает из коробки), а про другие веб сервера написано
>For more information on how to configure your web server, see the Documentation.
С ссылкой на нужный тебе раздел в документации.
Аноним 04/03/17 Суб 18:29:27 #174 №946334 
>>946309
Спасибо. А как вообще делать валидацию? Тупо регулярками, или есть какие-то хитрости там, средства php для этого?
Аноним 04/03/17 Суб 19:28:20 #175 №946362 
>>945059 (OP)
Почему у тебя Гахара на пике? Это намёк, что мы (программисты на PHP) все крабы?
Аноним 04/03/17 Суб 19:48:44 #176 №946373 
на зло всем троллям
приятно, что пхп не тонет и не умирает как язык.
За год я овладел пхп, нодой, питоном и сейчас учу руби, но пыха всегда будет в моем сердце как что-то простое, понятное, но от этого ничуть не менее эффективное.
Аноним 04/03/17 Суб 20:09:45 #177 №946377 
14886473852360.jpg 14831331277010.jpg
>>946308
Спасибо, очень отрезвляет, много ценных замечаний. Понял, что работу мне еще рано искать, буду дальше учиться.

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

Вот тут я не верю что есть человек который может сесть и не разбираясь что-то написать на нем. Там же свой уровень абстракции. Я месяц делал эту поделку, до нее сделал похожую на чистом MVC https://github.com/grigoryMovchan/blog_mvc Старался внимательно читать официальную документацию, видео уроки обхожу стороной. Да, месяца мало, но вот чтоб говорить что я не пытался разобраться и не читал документацию, тут у меня бомбит.

>>946312
Спасибо. Да, это не MVC, скорее просто поделка в процедурном стиле с использованием классов, чтобы потом использовать в другой поделке, которая уже будет в MVC. Поэтому сори что запутал. Про PDO ценные замечания.

>Это сделано очень неудачно. Мало того что у тебя в коде две разные валидации (одна обычная, другая для аякса), так ты еще хочешь оставить только аякс, чтобы у пользователей без JS совсем ничего не работало. Стандарты PSR-1 и PSR-2 почитаю.

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

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

>>946313
Спасибо. Почитаю про коллекции. Валидация там есть https://github.com/grigoryMovchan/zuihitsu/blob/master/app/Http/Controllers/PostController.php#L113-L116 но текст и правда не сохраняется, были планы этим заняться.

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

Тут не понял, ведь все методы для работы с тегами в моделях Attitude и Tag.

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

P.S. Еще раз спасибо, господа. Все замечания взял на заметку. Впереди предстоит объемная работа. Исправлять эту поделку на ларавел я уже не буду, но в будущем, постараюсь сделать лучше.
Аноним 04/03/17 Суб 20:31:23 #178 №946390 
>>946377
>Вот тут я не верю что есть человек который может сесть и не разбираясь что-то написать на нем. Там же свой уровень абстракции. Я месяц делал эту поделку,
пиздец, я уже и забыл, как сложно первое время вкатываться. код плох на уровне смешения хтмл и кода. посмешила папочка с названием пхп.
Аноним 04/03/17 Суб 21:19:41 #179 №946416 
>>946390
Несколько минут думал как ее назвать, просто хотел хоть как-то разделить. Как обычно называют?
Аноним 04/03/17 Суб 21:21:35 #180 №946419 
>>946416
Обычно называют app или src, если у тебя там скрипты твоего приложения.
Аноним 04/03/17 Суб 21:21:47 #181 №946421 
>>946416
Хотя, я догадываюсь, что такой папочки быть не должно, когда есть божеcтвенный MVC
Аноним 04/03/17 Суб 21:26:30 #182 №946423 
>>946421
В том смысле что файлы сортируются не по расширению, а по их функции
Аноним 04/03/17 Суб 21:27:55 #183 №946425 
>>946416
public
Аноним 04/03/17 Суб 21:39:24 #184 №946433 
>>946425
public не подойдет дял когда приложения.
Аноним 04/03/17 Суб 21:45:36 #185 №946438 
>>946433
>для кода
Аноним 04/03/17 Суб 22:03:54 #186 №946448 
няши, а почему у меня, например, по ссылке localhost/admin/blabla грузит блабла.пхп в потом снизу нее еще догружает после футера, типа две страницы на одной и индекс для адреса localhost/admin?
в роутах:
'admin/blabla'=> 'admin/blabla',
'admin'=> 'admin/index'

это проблема роутера или htaccess?
sageАноним 04/03/17 Суб 22:12:19 #187 №946455 
>>946077
Предлагаю топить тред сразу сажей на дно. Заметили, что активность долбоёбов критически возрастает в начале каждого треда, а далее идет на спад, после бамплимита? Если бы у нас был доступ к модератору, то можно прикрепить для новичков тред в шапку и обновлять ссылку с каждым перекатом.

А то сидит завсегдатай такой, ковыряет в носу, рефрешит - "о бля! свеженький анимешный пэхэпэ тред, зайду ка посру..."
Аноним 04/03/17 Суб 22:55:14 #188 №946475 
>>946448

сам разобрался.
когда проверяю на совпадения урл с роутами нужно проверть как ~^путь$~, а я забыл $
Аноним 04/03/17 Суб 23:22:06 #189 №946488 
14886589269300.jpg 2bdfecf28dcf2c3e1f4fc208d1d86caf.jpg
анимедауны - не люди.
Аноним 04/03/17 Суб 23:24:43 #190 №946490 
Аноны, нужна помощь. Делаю свой первый сайт, вот встал вопрос насчёт корзины, можете, пожалуйста, подкинуть линк на годный гайд/видео как мне это реализовать и с помощью чего(PHP или JS, или то и то), не могу определиться, спасибо.
Аноним 04/03/17 Суб 23:39:45 #191 №946491 
Есть ли большая разница между PHP 5 и PHP 7?можно ли читать литературу по пхп 5 информация там актуальная сейчас или нет?
Аноним 04/03/17 Суб 23:43:43 #192 №946492 
>>946491
Читай спокойно. Насколько я знаю список выпиленного там не очень большой и проблем особых не должно быть.
Аноним 04/03/17 Суб 23:47:11 #193 №946493 
>>946455
Если ты не заметил, то /pr/ это одна из самых токсичных тематических досок на всей борде, такое поведение вполне нормально.
Аноним 04/03/17 Суб 23:48:24 #194 №946495 
>>946490

я для своего сделал через запись в сессию масива с товарами(айди->кол-во). Ну и можно в бд еще писать для залогиненых юзеров, тип чтоб не проебать.
Аноним 04/03/17 Суб 23:49:04 #195 №946496 
14886605443810.gif 14374821461150.gif
>>946493
А ты попробуй усвоить столько инфы и при этом не стать токсичным тщеславным снобом. Это мишен импосибл.
Аноним 04/03/17 Суб 23:50:55 #196 №946497 
>>946495
мб лучше генерить уникальный код, писать его в куки и в бд, в бд хранить товары
сессии быстро умирают
Аноним 05/03/17 Вск 00:09:38 #197 №946499 
>>946495
Не подкинешь инфы, если не тяжело? В PHP я полный 0, JS хоть как-то понимаю и то начал относительно недавно изучать его. Если всё это дело лучше написать будет на PHP, то буду значит разбираться. Спасибо за ответ.
Аноним 05/03/17 Вск 00:23:21 #198 №946501 
Скорее всего наивный вопрос, но, где можно посмотреть исходник больших проектов(коммерческих желательно), чтоб узнать как там у них работают всякие функции и прочее
Аноним 05/03/17 Вск 02:44:25 #199 №946567 
Что быстрее выучить JS или PHP?
Аноним 05/03/17 Вск 03:08:42 #200 №946574 
>>946501
git clone https://github.com/PrestaShop/PrestaShop.git

Этот достаточно большой и весь код соответствует PSRам, юзает инверсию зависимостей и разные современные практики.
Аноним 05/03/17 Вск 03:11:55 #201 №946575 
>>946567
Php, в нем ООП стандартный и нет callback hellа. В JS без опыта в нормальном ООП языке ты увязнешь и не будет понимания в голове, что и как работает, не будет понимания паттернов, наследования, разделения ответственности. JS лучше учи после, будут отличия от нормальных языков понятны.
Аноним 05/03/17 Вск 08:41:17 #202 №946625 
>>946501

Magento - CMS для интернет-магазинов.
Аноним 05/03/17 Вск 09:39:26 #203 №946643 
>>946625
Она даже без товаров тормозит по минуте. Там явно говнокод на говнокоде.
Аноним 05/03/17 Вск 09:52:06 #204 №946646 
>>946643

Но она вроде относительно популярна и даже продается.

Ты бы мог обратить проблему ("тормозит") себе на пользу - учиться на примере этой CMS оптимизации и профайлингу, выяснить источник тормозов, понять, это принципиально неустранимая вещь или просто где-то кеширование не настроено.
Аноним 05/03/17 Вск 11:50:39 #205 №946697 
Я правильно понимаю, что трейт в php - аналог интерфейсов в С - языках?
Скидки Аноним 05/03/17 Вск 11:59:20 #206 №946704 
>>937439
> Тут не исправлена проблема модификации переданной коллекции:
Там было исправлено, метод removeProduct возвращал новую коллекцию, потому CountDiscount исходную коллекцию не модифицировал. Мне кажется есть смысл сделать её неизменяемой, а не надеяться, что пользователь вспомнит вызвать clone (вот я как раз забыл).
Сейчас ошибки нет: https://bitbucket.org/learning_acc/discounts/src/be3e1a13fda16af5b5397c94428c4d9b25632d29/combination_discount_test.php?at=master&fileviewer=file-view-default

ProductCollection на основе SplObjectStorage: https://bitbucket.org/learning_acc/discounts/src/be3e1a13fda16af5b5397c94428c4d9b25632d29/src/Collection/ProductCollection.php?at=master&fileviewer=file-view-default

> в языках вроде Ява эта проверка делается одним тайп-хинтом вроде Map<int, DepreciationInterface>.
Ещё классы DiscountCollection и DiscountResult служат только ради тайп-хинтов.

> http://floating-point-gui.de/errors/comparison/
> if( Math.abs(a-b) < 0.00001) // wrong - don't do this
Посмотрел, PHPUnit как раз так и сравнивает, если исключить проверки is_nan и is_infinite: https://github.com/sebastianbergmann/comparator/blob/master/src/NumericComparator.php#L46
И тут так советуют: https://secure.php.net/manual/en/language.types.float.php#language.types.float.comparison
Настораживает, что функция автора статьи при epsilon 0.00001 считает, что 1000000 и 1000001 равны: http://floating-point-gui.de/errors/NearlyEqualsTest.java
Строки 46-47

Ну и конечно же, задачку было решить очень полезно, спасибо за объяснения и исправления!

Аноним 05/03/17 Вск 12:08:45 #207 №946706 
>>946697
Трейт это инструмент для реализации множественного наследования. Чтобы ты мог два класса унаследовать от разных классов, но при этом в обеих классах реюзать один и тот же код.
Аноним 05/03/17 Вск 12:24:07 #208 №946711 
>>946697
В PHP есть интерфейсы: https://github.com/codedokode/pasta/blob/master/php/interfaces.md

Интерфейсы и трейты - абсолютно разные вещи. Первое - это контракт, не содержащий никакой реализации. Трейты (миксины) удобны когда нужно добавить классу какое-то поведение. Например, поведение объекта, который может генерировать события и оповещать слушателей: https://learn.javascript.ru/mixins

ИМХО, по возможности стоит предпочитать внедрение зависимости трейтам, так как зависимости можно подменить, а вот трейты вбиты в класс намертво.
Аноним 05/03/17 Вск 12:32:54 #209 №946720 
Ребята, что посоветуете почитать по Symfony 3, кроме доков на официальном сайте, ессесно?
Аноним 05/03/17 Вск 13:25:22 #210 №946764 
14887095227250.jpg 14837235216680.jpg
ОП или аноны, выручайте.
Скачал книгу по PHP 7 Дмитрия Котерова (2016 год).
И в учебнике выводят на этот сайт http://windows.php.net/download
Это так называемая "установка" Php определенной версии скачал седьмую. Что она дает вообще? и нужна ли она мне на этапе изучения? так как там вообще не особо об этом расписывают
Как редактор скачал sublime text 3. Этого достаточно или еще что-то нужно?
Аноним 05/03/17 Вск 13:27:17 #211 №946765 
>>945059 (OP)
Посаны, а в фильтрах для uBlock пхп или нет?
Мне, короче, надо знать как в них поставить вместо символа переменнную, чтобы там был диапазон значений. То есть вот есть у меня 10 строк, которые отличаются только одной циферкой - хочу вместо 10 сделать одну. Звёздочка почему-то не работает. Может её в какие-нибудь сраные скобки надо заключить или типа того? Причём в строках, когда меняется целое... слово (наверное, хуй знает как это называется) она работает, например -
||yastatic.net/morda-logo/i/cards/8march2017/enter/
.png$image
А когда надо поменять только его часть
yandex.ru##.b-cards__enter_bg_*.b-cards__enter_8march2017.b-cards__enter
уже нет.
Аноним 05/03/17 Вск 13:30:28 #212 №946768 
год работал на чистом пхп люблю содомию
задумался об изучении фреймворков и смене рабочего места. На русском рынке сейчас самый популярный - симфони? просто мне больше нравится йи.
Аноним 05/03/17 Вск 13:30:55 #213 №946769 
>>946765
Блять, ебучая макаба, посчитала звёздочки элементами разметки.
Первая строка должна выглядеть так - ||yastatic.net/morda-logo/i/cards/8march2017/enter/*.png$image
Аноним 05/03/17 Вск 13:33:00 #214 №946772 
>>946768
На русском как раз самый популярный ЙИ. Если смотреть глобально, то наверное топ 1 по популярности - ларавел. Симфони вряд-ли где-то в топе, слишком навороченный фреймворк.
Аноним 05/03/17 Вск 13:33:26 #215 №946774 
>>946768
Смотришь на требования в вакансиях - учишь. Можно учить и два и три фреймворка.
Аноним 05/03/17 Вск 13:37:20 #216 №946777 
>>946720
я вот эти туториалы читаю (платные там только видосы, текст из них продублирован внизу)
Аноним 05/03/17 Вск 13:39:21 #217 №946779 
>>946777
Палю годноту по платным видосам: https://coursehunters.net/
test !SG1T/i/weY 05/03/17 Вск 13:44:12 #218 №946786 
Просто тест
Аноним 05/03/17 Вск 13:47:59 #219 №946787 
>>946496
"Столько инфы" усваивают только бородачи-профессор. А на уровень тутошних знатоков можно выйти за пару лет. Просто у нас кодеры получают сравнительно дохуя, вот они себя илитой и считают. Смотрел на западных кодеров - там разница в зарплатах не такая значительная, от того эти ребята в среднем менее упоротые, и комунити там гораздо более добродушное, серьезно. Просто если почитать наши ресурсы типа хабры и доу - складывается впечатление, будто погромисты все поголовно озлобленные, чсвшные мудаки, еще и делают все возможное что бы затопить новичков потому, т.к. боятся что наплодится конкурентов и начнется демпинг зарплат, а кроме как кодить они нихуя не умеют. Даже тот же стековерфлоу как ресурс для неофитов гораздо более дружелюбный, чем бОльшая часть ру-комунити. А проблема этого ИТТ треда скорее в мочерации, точнее ее отсутствие.
>>946764
>Скачал книгу по PHP 7 Дмитрия Котерова (2016 год).
Выбрось это, лол. Котеров и Костарев это просто легенды говнокодинга. Лучше по учебнику ОПа занимайся.
Аноним 05/03/17 Вск 13:51:52 #220 №946792 
>>946787
Нужно ли сразу вкатываться на фреймворки? Есть ли вообще какая-то работа на чистом пхп?
Аноним 05/03/17 Вск 14:04:52 #221 №946799 
>>945059 (OP)
Может быть тут кто то шарит и может рассказать. Сложно ли выучить php для того, чтобы начать фрилансить и сложно ли это?
Аноним 05/03/17 Вск 14:05:05 #222 №946800 
>>946792
Что значит чистый пхп? Фреймворки не на чистом пхп написаны? Фишка в том, что для того, чтобы решить более-менее определенную задачу, то тебе надо либо использовать либо фреймворк, либо cms, либо писать свой велосипед, который по сути будет таким же фреймворком. Естественно, пилить свой велосипед, когда все уже давно сделано до тебя очень глупо. Поэтому использовать фреймворк это умное решение - вопрос лишь только в том какой тебе подходит для твоей задачи.
Если под чистым пхп ты подразумеваешь работу вообще без какого-либо паттерна, архитектуры и прочего, то максимум для чего такой "чистый пхп" подходит - это написать файлик-скриптик для генерации капчи или гостевой книги. В 2017 это нафиг никому не нужно.
Аноним 05/03/17 Вск 14:06:44 #223 №946802 
>>946792
>Нужно ли сразу вкатываться на фреймворки?
Лол. Это просто такой платиновый вопрос, что ОПу давно пора его жирный курсивом в ОП-посте добавить. Даже в этом треде уже было это. Поясню по хардкору - нив коем случае блять. Да, на чистом пхп чаще всего не пишут. Однако если ты хочешь именно стать разработчиком, тебе надо знать и уметь применять все принципы, которые лежат в основе пхп-фреймворков. А именно, помимо синтаксиса пхп тебе надо хорошо, именно что хорошо понимать ООП - зачем оно надо, основные фишки и плюсы которые оно дает. А так же MVC, ORM, и PSR желательно - а то увидишь, допустим, в документации фреймворка что такой-то класс реализует интерфейс из PSR-7, и начнется тупняк у тебя, пока не полезешь в гугл и не узнаешь что за PSR-7 такой. Вот когда хорошо разберешься в этом, напигешь пару MVC-бложиков, тогда уже можно и за фреймворки браться.
Аноним 05/03/17 Вск 14:10:13 #224 №946806 
>>946779
шикарно
Аноним 05/03/17 Вск 14:14:56 #225 №946810 
>>946787
Так что все-таки дает этот сайт http://windows.php.net/download
Вроде как на пхп.нет что-то важное должно быть
Я распаковал архивы и ничего полезного там не вижу как новичок
Аноним 05/03/17 Вск 14:18:47 #226 №946817 
>>946810
На офсайт иди, там тебя научат.
Аноним 05/03/17 Вск 14:25:59 #227 №946830 
>>946810
какая у тебя задача-то? если установить локальный сервер на винде, то есть либо openserver, либо xampp.com, либо если хочется установить самому, есть урок от ОПа в шапке.

учебник Котерова определенно надо сжечь, намного лучше учиться хотя бы по тем же урокам в шапке.
Аноним 05/03/17 Вск 14:30:41 #228 №946835 
>>946830
>учебник Котерова определенно надо сжечь, намного лучше учиться хотя бы по тем же урокам в шапке.
Двачую. Там в предисловии указано на то, что учебник не для самых новичков, а для тех кто хотя бы поверхностно знаком с алгоритмизацией. Хотя я паскаль изучал давно и основы помню, но ничего не понимаю по его учебнику
Аноним 05/03/17 Вск 14:30:48 #229 №946837 
>>946575
Хорошо, а можно ли учить параллельно это?или каша будет в голове
Аноним 05/03/17 Вск 14:32:13 #230 №946840 
Если я хочу сделать на сайте авторизацию через соц сети через API, функцию авторизации лучше закинуть в класс пользователя, или выделить отдельный класс, который управляет пользователями?
Аноним 05/03/17 Вск 14:35:07 #231 №946844 
>>946787
А Колисиченко "Php и MySQL"?
Аноним 05/03/17 Вск 14:42:39 #232 №946853 
Есть абстрактный класс Controller, в нем метод render() (ну понятно, что там шаблон включается с переданными параметрами). Есть унаследованный от него контроллер страницы, где я вывожу <?=Student::GENDER_MALE?>. Так вот, интерпретатор говорит, не видит класса Student, хотя я использовал use для него в дочернем контроллере. Думал, так как метод родительский, то и импортированные пространства имен тоже от родителя – там прописал use ...\Student; все равно не работает, а если в шаблоне абсолютный путь (имя с неймспейсом) до класса, то все прекрасно. В чем проблема?
я так понимаю, require_once просто включает содержание файла шаблона, как будто он там и был, и следовательно у шаблона должен быть доступ к импортированным пространствам дочернего контроллера и все должно быть ОК. Где я не прав?
Аноним 05/03/17 Вск 15:11:07 #233 №946901 
>>946853
У меня кстати похожий вопрос. Есть у меня класс View(), который зависимость для контроллера. Однако там только метод display который просто передает параметры и инклюдит шаблон. Что бы еще такого в эту вьюху добавить? Что обычно в фреймворках там есть? Просто не хочется пока фреймворки вообще трогать.
Аноним 05/03/17 Вск 15:31:48 #234 №946924 
У меня в линуксе нет пхп. Как его установить? apt-get install php?
А модули как подключать, как подключить фреймворки, как запустить чтобы это всё работало на внешнем айпи или локалохосте?
Аноним 05/03/17 Вск 15:33:28 #235 №946925 
>>946924
>У меня в линуксе
Сочувствую.
>нет пхп. Как его установить? ap
У ОП-а в шапке все есть.
Аноним 05/03/17 Вск 15:35:07 #236 №946927 
>>946924
Как именно дистрибутив линупса?
Аноним 05/03/17 Вск 15:43:44 #237 №946938 
Анон, как работает preg_replace? В некоторых случаях он вычленяет что-то из третьего аргумента и вставляет во второй, а в некоторых вычленяет что-то в третьем и заменяет это вторым аргументом. Когда что он делает?
Аноним 05/03/17 Вск 15:44:44 #238 №946940 
>>946927
Убунту сервер.
Извините, я не прочитал всю шапку.
Аноним 05/03/17 Вск 17:12:52 #239 №946982 
>>946768
как можно работать на чистом (!) пхп еще и год. откуда вы такие беретесь? тут с тремя яп и 10 фреймворками хуй устроишься, а они ни чистом пхп работают. ахуеть
Аноним 05/03/17 Вск 19:40:21 #240 №947064 
>>946772

Странно, в моем кругу общения, почему то, симфони. Спасибо.

>>946774

лучше один хорошо, чем десять плохо.

>>946982

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

Аноним 05/03/17 Вск 19:45:03 #241 №947069 
>>947064
там хоть мвц или тоже код вперемешку с хтмл?
Аноним 05/03/17 Вск 20:20:30 #242 №947103 
14887344304480.png 2017-03-0520-24-37.png
Зачем юзать DIR?
Ведь и без него будет работать

Отсюда https://github.com/codedokode/pasta/blob/master/arch/mvc.md
Аноним 05/03/17 Вск 20:23:47 #243 №947109 
>>946982
На больших фирмах как раз выкидывают эти твои фреймворки и пишут на чистом php. Фреймворк - зависимость от разрабов фреймворка и тормоза, большим фирмам не нравится. А вот мелким как раз.
Аноним 05/03/17 Вск 20:25:54 #244 №947113 
>>947064
А ты богатенький? Не дороха платить 4к за простую возможность оставлять заявки?
Аноним 05/03/17 Вск 20:36:48 #245 №947122 
>>947064
За год нормальный фреймворк не написать? Ну ты герой. Учи ООП, паттерны и SOLID принципы, это максимум за пару месяцев делается.
Аноним 05/03/17 Вск 20:38:17 #246 №947123 
>>946853
вновь
Аноним 05/03/17 Вск 22:19:54 #247 №947203 
Понимаю, что не там пишу, но все же есть вероятность, что кто-то из вас юзает Linux. С чего начать изучение Linux?если я его никогда не юзал, все жизнь пользовался виндой,
Аноним 05/03/17 Вск 22:28:07 #248 №947206 
>>947203
по счастливой случайности я скроллил /pr и заметил твой пост. Ну, вообще в идеале, попробуй запилить виртуалбокс и в нём эмулировать Убунту. Самая хорошая для изучения линукса. Плюс, неплохо бы комбинировать с знаием Си. Хотя там и неплохая поддержка Питона есть. Вообще-то я не помню, что именно можно спокойно компилировать из терминала в Убунте. Но вот потом с помощью "help" изучай утилиты терминала. Поиграйся с файлами. Почитай пару гайдов по Bash. Ну и пиком будет установка стороннего приложения, например шиндосовского. Особенно с помощтю Wine.
Аноним 05/03/17 Вск 22:41:22 #249 №947212 
14887428821910.jpg 14757830840390.jpg
>>947203
install gentoo
Аноним 05/03/17 Вск 22:48:33 #250 №947216 
>>947203
Самое главное -никогда не юзай десктопный линупс. А учить его легко, учишь ls, cd и прочее по мере надобности.
Аноним 05/03/17 Вск 22:49:43 #251 №947219 
>>947216
Я так довольно хорошо освоился с линуксом, постоянно работая с серваками через ссх.
Аноним 05/03/17 Вск 22:58:34 #252 №947230 
>>947216
>никогда не юзай десктопный линупс
Это почему? Я с 2010 юзаю генту, все ок. Оче легко создать среду для погромирования, будь то пыха, руби, да что угодно. Кресты вообще по умолчанию встроены, благодаря особенностям генты.
Аноним 06/03/17 Пнд 00:39:25 #253 №947292 
>>947069

мвц-мвц, я ж не совсем аутист. ну если только немножко

>>947113

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

>>947122

А зачем? В смысле, нормальный фреймворк писать. Я сделал то, что помогло мне сократить время разработки без лишних танцев с бубном вокруг компа, чтоб было лишнее время на изучение английского языка. Теперь вот.
Аноним 06/03/17 Пнд 01:06:33 #254 №947309 
>>947203
Ставишь эмулятор vmware или virtual box, накатываешь mint linux или другой популярный дистриб, проходишь всю инсталляцию. Потом гуглишь как ставить там php, apache, виртуальные хосты, все настраивать. Гуглишь руководство по основным командам bash. Запускаешь апачу с пыхой, делаешь так чтоб сервак из винды видно было по ip. SSH еще с FTP осваиваешь до линукса из винды, cron для запуска скриптов. Можно еще какой-нибудь Docker попробовать. В принципе все, больше тебе обычно ничего не требуются при типичной разработке. Усилий не так много, за пару недель легко осваивается.
Аноним 06/03/17 Пнд 01:14:18 #255 №947318 
>>947292
>А зачем? В смысле, нормальный фреймворк писать.
Нормальный не значит, что там фич овердохуя, просто что нормально написан - все разделено на отвечающие за свои роли классы, везде зависимости через dependency injection, юзается наследование и соблаюдаются SOLID принципы. Зачем надо? Просто потом ты этот фреймворк уже понимать будешь и в любом новом проекте просто его заюзывать. А если нормально написан, то и код сразу везде чистый станет без проблем с расширением и поддержкой. Сейчас это тебе неочевидно, но время действительно экономится будет, особенно когда требования заказчика на ходу меняются. Если у тебя кривой плохо расширяемый фреймворк с говнокодом, то ты и дальше в нем будешь не пойми что городить, проблем будет только прибавляться с увеличением сложности проектов, а с ними и временных затрат на любые изменения.
Аноним 06/03/17 Пнд 02:35:59 #256 №947357 
Как заблокировать айпи или сайт для компьютера?помню, в рашке некоторые работодатели блокируют вк/ютуб(без посторонних программ)
Аноним 06/03/17 Пнд 03:01:31 #257 №947363 
>>947357
C:\Windows\System32\drivers\etc\hosts отредактируй, добавь 127.0.0.1 vk.com
Аноним 06/03/17 Пнд 03:13:20 #258 №947367 
>>945059 (OP)
Хочу быстро вкатится в погромирование, до этого писал хелло ворлды с циклами на крестах всего-лишь, и немного долбился в ассемблер с флагами там и регистрами.
Хочу на галерку, грести, хоть за копейки и погонщика за спиной, чтоб мотировал. Я в тот тред зашел?
Аноним 06/03/17 Пнд 03:14:23 #259 №947368 
>>947367
В тот, шапку читай и вперед.
Аноним 06/03/17 Пнд 03:16:29 #260 №947371 
>>947367
Мы здесь учим PHP. Твои вопросы больше для "мы вам перезвоним" тредов.
Аноним 06/03/17 Пнд 03:17:37 #261 №947372 
>>947371
Учим для галер же, чтоб потом в них работать, так что тред все равно тот.
Аноним 06/03/17 Пнд 03:41:24 #262 №947376 
>>945059 (OP)
У Godaddy толи цены сменились, толи меркетинговый ход с ценами. Сегодня посмотрел выставленный счёт на оплату. И получилось овер 16к рублей. Это за продление 1 домена на 12 месяцев и эконом хостинг на линуксе. Учитывая что за весь прошлый год я заплатил тыщь 6, то тут прямо таки странная картина.
Если в треде есть кто может подсказать по вопросам буду рад.
Можно ли домен перенести на нового хостера и как это сделать?
Будут ли с этим проблемы?
Как поступать с оплатой? Тоесть сейчас я плачу за продление Godaddy и не парюсь, а дальше платить новому хостеру? Как платить если у меня ещё пол года осталось и я боюсь что после того как домен закончится, его перехватят сквоттеры?
Аноним 06/03/17 Пнд 05:45:59 #263 №947387 
>>947376
Перенеси его в Ру-центр, оплатить можно в любом платёжном терминале (а тж. заранее положить на счёт X денег на N лет вперёд).
Аноним 06/03/17 Пнд 06:24:36 #264 №947390 
>>947363
Спасибо!
Аноним 06/03/17 Пнд 06:50:17 #265 №947392 
>>947387
А не будет конфликта? За пол года оплачено у GoDaddy за год оплачено у reg.ru?
Аноним 06/03/17 Пнд 08:31:38 #266 №947405 
>>947367
Закрывай двач -> смотри нище вакансии -> учи что написано в вакансиях

Аноним 06/03/17 Пнд 08:32:41 #267 №947406 
>>947392
Так ты при переносе днс-записи меняешь, лол.
Аноним 06/03/17 Пнд 09:00:32 #268 №947411 
Что делать, если у меня в городе вакансии пхп-жуниора выглядят как-то так?
Приглашаем на работу программиста.

Требования:

Опыт работы из 1С; РНР, MySQL, JS,HTML, CSS, Yii;

Базовые навыки системного администрирования;

Обязанности:

Написание с ноля интернет-магазинов;

Написание сайтов с ноля, внесенние изменений.

Админ.сети;

Настройка и контроль за работой ПК в офисах;

Условия Труда:

6-дневный рабочий день;

8:00−18:00.
Как найти работу?
Аноним 06/03/17 Пнд 09:01:36 #269 №947412 
>>947411
Ещё есть вариант с удаленной работой.
Аноним 06/03/17 Пнд 09:04:25 #270 №947414 
>>947411
>6-дневный рабочий день;
Ебанутые совсем? Пять дней пинать хуи недостаточно?
Аноним 06/03/17 Пнд 09:07:54 #271 №947416 
>>947411
Чота дохуя долгий рабдень. Плюс будешь как собачка-эникейщик бегать. У тебя только одна вакансия штоле?
Аноним 06/03/17 Пнд 09:09:04 #272 №947419 
>>947412
Да все тоже самое. Може попробовать фриланс за еду и опыт? Но как-то совсем страшно, тем более я так понял там везде надо CMS-ки, а я ни одной не знаю.
>>947414
Меня больше порадает набор технологий. Я раньше думал, что пхп-разработчик кодит только пхп, а судя по всему еще и жс надо знать хорошо, и верстать клево.
Аноним 06/03/17 Пнд 09:12:39 #273 №947421 
Или вот еще вакансия. Чисто интересно, кого они блять вообще ищут?
приглашает кандидатов на должность ВЕБ — ПРОГРАММИСТ

Требования:

о/р от 3 лет;
желательно высшее техническое образование;
знание языков html, php, css;
умение работать с Mysql, Apache;
навыки работы с CMSWordpress, Joomla, OpenCart (создание сайтов, настройка);
кроссбраузерная, адаптивная верстка;
умение работать с графическими редакторами (Photoshop, CorelDRAW, Illustrator);
понимание и навыки в SEO и SMM продвижении сайта;
работас Google analytics, Google AdWords;
предоставление портфолио.
Преимуществом будет:

знаниеJava Script/JQuery/AJax, ASP.NET;
навыки копирайтинга;
опыт работы с облачными платформами (WIX, WEEBLYи др.);
опыт работы с торговыми площадками (prom.uaи др.);
работа с системой Moodle;
системное мышление, опыт работы с системами мониторинга и сбора данных;
умение пользоваться поисковыми системами для нахождения решений.
Обязанности:

Обновление дизайна, верстка отдельных страниц сайта.

Разработка графических элементов, баннеров.

Использование рекламных каналов. Продвижение сайта в поисковых системах. Сопровождение сайтов на платформе WordPress.

Техническая поддержка и администрирование сайтов.

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

Обеспечение интеграции сайтов с внешними системами (CRM, 1С, мобильные приложения).

Выполнение задач по модернизации и развитию сайтов своими силами и с помощью подрядчика.

Усовершенствовать и поддерживать ecommerce.

Просьба ВНИМАТЕЛЬНО читать требованияи присылать резюме только при соответствии ВАШИХ практических навыков указанным требованиям минимум на 80%.

конт.тел.: 067−776−38−86
Аноним 06/03/17 Пнд 09:16:01 #274 №947422 
>>947419
Верстать вообще не сложно. Вот как раз изучи вёрстку, хтмл сначала, может и понравится. Вкатиться во фреймворки и кмс тоже не сложно. Главное не лезть в жс с вебпаками. И обычно только в мухосрансках такие охуевшие, где нужно быть фулстеком. На фрилансе тебя никто не будет просить верстать или делать жс плюхи, для этого есть фронтотяночки
Аноним 06/03/17 Пнд 09:17:11 #275 №947423 
>>947421
Вангую что эти дауны 90% технологий вообще использовать на практике не будут, а просто так упомянули их.
Аноним 06/03/17 Пнд 09:19:34 #276 №947425 
>>947421
Это охуевшие мрази, которые не шарят и хотят всё и сразу. Можешь прийти к ним на собеседование и прямо сказать - вы охуевшие мрази, идите нахуй.
Аноним 06/03/17 Пнд 09:20:20 #277 №947427 
>>947421
Забыли хаскель со скалой упомянуть, лол.
Аноним 06/03/17 Пнд 09:20:25 #278 №947429 
>>947422
Да я то верстать кое-как умею, но без каких-либо хитростей вообще.
>>947423
Меня вот интересует, а зачем они вообще столько всего пишут в требованиях? Даже моих скилов хватает, что бы понять - вакансия говно. При том что для мидлов-сеньоров вакансии нормально у меня выглядят.
Аноним 06/03/17 Пнд 09:25:02 #279 №947431 
>>947411
Короче, твой путь - учишь пхп, учишь хтмл, учишь парочку фреймворков -> пишешь пару своих сайтов с пользователями, борду, чатик, магазин, набиваешь первичный опыт -> идешь на фриланс, ищешь простые типовые задачи, типа сделать несложный магаз на всяких уиихах и ларавелях -> получаешь свою копеечку и радуешься жизни. Конечно, сразу это не придет, придется хотя бы полгода хорошо все изучить, и не лениться, тратить на это все не меньше пяти часов в день, а не полчасика на туториалы и дальше в дотку. Так не пойдет. Нужно работать. А когда ты дома и тебя никто не гонит, это совсем не сложно. Все получится, няша.
Аноним 06/03/17 Пнд 09:39:29 #280 №947444 
>>947431
Да я как-то так и думал. Щас где-то на середине студентов. Алсо поясните еще такую фишку - часто говорят, что не стоит начинать карьеру с CMSок, типа это тупиковый путь и все такое, надо искать работу на фреймворках. В чем суть? Неужели все цмс-ки дерьмо такое?
Аноним 06/03/17 Пнд 09:43:45 #281 №947445 
>>947444
Кмски это не программирование, это говно уровня админов на винде в шаражкиных конторах, ты этим заниматься не должен.
В пидорахии вообще популярно делать сайты без программирования - берешь вордпресс, ебашишь плагины, натягиваешь на кмс.
Аноним 06/03/17 Пнд 09:51:13 #282 №947449 
>>947445
Я смотрел вакансии с опытом >3 лет, там много работы на ЦМСках. Правда там чаще не вордпресс, а всякие мадженты. И я так понял, там они скорее занимаются разработкой плагинов.
Аноним 06/03/17 Пнд 09:52:26 #283 №947450 
>>947449
Моей первой работой была работа на цмске. Не магента, а блядов вебасист шопскрипт, чтоб он в аду горел сука. Да, плагины хуярил.
Аноним 06/03/17 Пнд 09:57:07 #284 №947452 
>>914237
Этот пост почему-то удалили, поэтому ещё раз запощу.
https://github.com/kubk/students

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

> поиск по фамилии зависит от регистра букв
Этого бы не произошло, если был бы написан тест: https://github.com/kubk/students/blob/master/tests/StudentGatewayTest.php

Насчёт теста функции экранирования:
> - передаем строку с тегом и проверяем, что на выходе тега нет
> - вызываем html_entity_decode на результате и проверяем, что получилась исходная строка
> - аналогично можно проверить кавычки, а также отдельные угловые скобки, что их нет в результирующей строке
Если правильно понимаю, то второй пункт работает, только если искомая строка не будет найдена. В противном случае результат будет содержать тег b или mark, и исходную строку от такого результата не получим. В общем, сам тест: https://github.com/kubk/students/blob/master/tests/StudentTwigExtensionTest.php#L71

> тут https://github.com/kubk/students/blob/master/src/LinkGenerator.php#L54 HTML в коде, и ссылка не экранируется как положено.
> Лучше было бы использовать для HTML кода макрос твига, а генерировать в PHP только сам URL.
Теперь html в php нет https://github.com/kubk/students/blob/master/src/LinkGenerator.php#L47
, но как мне кажется, тут https://github.com/kubk/students/blob/master/templates/student-list.twig#L14+L15
какой-то низкоуровневый код в шаблоне. Ну и ссылка генерируется только в одном месте, нужен ли макрос, который будет использоваться лишь один раз?

> Насчет авторизации по паролю - лучше в куке (и в БД) хранить не пароль, а его соленый хеш. Чуть безопасней, а так у тебя пароль в открытом виде на каждый запрос шлется. И в базе лежит. Украли базу/куки - и можно идти проверять, подойдет ли этот пароль к почте, к соцсетям итд.
В базе был только хеш, а насчёт кук - да, сглупил.

> я бы назвал класс не UniqueEmail, а StudentEmailUnique, так как это ограничение работает только для одного класса - студента.
Насчёт универсального решения понятно, но вряд ли оно мне где-либо ещё пригодится, раз доктрина в симфони почти что стандарт и там уже есть UniqueEntity.

Впредь постараюсь быть внимательнее и лучше тестировать то, что отдаю на проверку.
Аноним 06/03/17 Пнд 09:57:46 #285 №947453 
14887834666170.png Безымянный.png
>>947449
Вот тебе пример двух вакансий. Как видишь, ничего заоблачного и нет никакой еботни с кмсками.
Аноним 06/03/17 Пнд 10:00:07 #286 №947454 
14887836078790.jpg Untitled.jpg
Можно ли как-нибудь в PHP интегрировать ffmpeg? Жутко заёбывает писать там руками в cmd консоли всё, одна опечаточка и радуйся если скажет "ошибка", а не закораптит исходный файл к хуям (такое было, да да я криворук ещё тот).

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

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

Так вот, получится ли как-то динамически из маленьких таких кусочков составлять привычную команду для консоли и запускать ее из PHP?

ИНБИФО: еще одна макак — НЕТ, "ПРОГРАММИРОВАНИЕМ" ЗАРАБАТЫВАТЬ НЕ СОБИРАЮСЬ, так что если хотите, можете гнать.
Аноним 06/03/17 Пнд 10:02:44 #287 №947455 
>>947454
Это и есть настоящий веб-сервер.
Да, в пхп есть shell_exec для отправки команд в консоль или как-то похоже называется.

Аноним 06/03/17 Пнд 10:04:47 #288 №947458 
>>947454
Ты еще не научился биндить консоль в пхп?
Ну, можешь попробовать https://github.com/PHP-FFMpeg/PHP-FFMpeg, например.
Аноним 06/03/17 Пнд 10:05:35 #289 №947460 
Я тут замечаю, что все поголовно ставят апач.
Мой вопрос - зачем, когда есть божественный nginx? Его даже развернуть проще намного, чем монструозный апач.
Аноним 06/03/17 Пнд 10:09:31 #290 №947463 
>>947460
Наследие социализма
Аноним 06/03/17 Пнд 10:19:01 #291 №947466 
14887847418750.jpg с.jpg
Реально сделать за две недели? Задание на пхп-стажера, 15к.
Мимо-вкатывальщик из фронт-енд тредов, до этого верстал и учил JS. За вчера сделал вроде бы на Zend вывод и хранение альбомов, но как делать 4-5 пункт пока неебу совершенно.
Аноним 06/03/17 Пнд 10:21:28 #292 №947467 
>>947458
На вскидку выглядит очень сложно. (Ну то есть из примера Basic usage я не понял ничего).
>>947455
>$cmd = "ffmpeg -codecs 2>&1";
>print shell_exec($cmd);

выводит ошибку:
>'ffmpeg' is not recognized as an internal or external command, operable program or batch file.

хотя уже давно добавил ffmpeg в PATH и запускаю из любой локации, очевидно для PHP другие правила, нужно где-то зарегистрировать путь к экзешнику? Винда 7 если что.

>>947460
Не знаю, с этим апачем довольно быстро разобрался. А чем именно отличается для тебя nginx? Советуешь на него поменяться?
Аноним 06/03/17 Пнд 10:24:47 #293 №947468 
>>947466
Купи инстанс с центосью и накати энжинкс, в чем проблема? Деплоить не могешь штоле? Обычные линуксы же.
Правда не ебу, что такое php-fpm, но гугл подсказывает что это кэширующий сервер, так что поебешься с часок и настроишь из мануалов, ничего сверхъестественного.
Аноним 06/03/17 Пнд 10:25:36 #294 №947469 
>>947466
Это задание нихуя не на стажера. В зависимости от качества реализации на джуна/мидла. Стажеры поидее вообще беспомощные и нихуя сделать не могут. В любом случае не на 15к уж точно.
>>947468
>Правда не ебу, что такое php-fpm, но гугл подсказывает что это кэширующий сервер
Это менеджер процессов пхп.
Аноним 06/03/17 Пнд 10:25:58 #295 №947470 
>>947467
Попробуй питон. Там это вообще изи делается.
Аноним 06/03/17 Пнд 10:36:42 #296 №947478 
>>947470
А что с графической частью?
HTML и CSS каждый школьник уже знает, и любую информацию найти легко. Да и нет у меня цели учить какой-то ёба язык. Мне нужно с нуля за пару вечеров то что я хочу получить, и с PHP это симс риал.
Аноним 06/03/17 Пнд 10:41:22 #297 №947482 
>>947467
С абсолютным путем все работает. Всем спасибо за ответы!
Аноним 06/03/17 Пнд 10:43:36 #298 №947483 
>>947478
Так ты делаешь свой локальный сайтек или что? На питоне можно в пару строк поднять фласк-сайтик и тыкать через него биндинги в ffmpeg-консоль.
Или тебе нужна консольная приблуда без гуев? Тогда на питоне еще проще и любой школьник сможет написать.
Аноним 06/03/17 Пнд 10:43:55 #299 №947484 
>>947482
Ну и ладно.
Аноним 06/03/17 Пнд 10:57:08 #300 №947492 
>>947466
Достаточно простенькое. В зенде ебашишь контроллер, вьюхи и редирект на урл, потом чтение из бд и вывод. Настройка nginx c php-fpm в гугле везде описана, тоже ничего сложного. За 2 недели управишься.
Аноним 06/03/17 Пнд 11:12:30 #301 №947497 
>>947483
Поясню окончательно:
>тебе нужна консольная приблуда без гуев?
я сам заебался в cmd писать все руками, от консоли тошнит уже
>На питоне можно в пару строк поднять фласк-сайтик и тыкать через него биндинги
Если эти биндинги можно динамически составлять, и весь процесс вкатывания и написания подобного займет не более двух вечеров, и есть хоть одна причина почему это будет лучше PHP, то я хочу быть твоим падаваном, мастер.
(а то я вчера задумался, а сегодня уже реализую на PHP первые фичи, и если мне придется начинать заново и ебать очко змеей еще неделю... а нахуя оно мне вообще?)
>ты делаешь свой локальный сайтек или что?
хочу так: приду я на работу, и в свободное время прямо с телефона зайду, щелкну пару кнопочек, найду нужные фреймы в видео, обрежу, склею, оно сохранится у меня на компе там где я хочу! Быстро. Дешево. Охуенно.
Аноним 06/03/17 Пнд 11:17:00 #302 №947499 
>>947497
Ип на домашней машине белый? А то ниоткуда ты свою радость не увидишь.
Аноним 06/03/17 Пнд 11:18:09 #303 №947500 
Блядь, какой ответ в первой задаче? Не могу че-то написать.
http://dkab.github.io/jasmine-tests/
Аноним 06/03/17 Пнд 11:21:12 #304 №947501 
>>947499
> >>947454 по IP зашел к себе с телефона, офигеть
утром включил, посмотрел IP, у меня не меняется до конца сессии, так что пока всё нормально с этим.
Аноним 06/03/17 Пнд 11:24:17 #305 №947502 
>>947497
>найду нужные фреймы
Вот тут не знаю. Ты собрался вываливать все видео на сайт или как ты вообще представляешь находить нужные кадры?
Ну вообще задачи похоже можно даже через телеграм-бота забиндить.

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

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

https://gist.github.com/anonymous/a9f7376d140e82ab1cc85ac90c812f96
Аноним 06/03/17 Пнд 11:44:43 #306 №947512 
>>947502
Поясни, как это всё работает у тебя?

>Ты собрался вываливать все видео на сайт
ну наверное 2 пути:
1) выбираю файл
2) конвертирую в webm с низким качеством
3) через HTML5 <video> смотрю, отмечаю (на бумажке) нужные секунды
или:
1) выбираю файл
2) тут придется подшаманить, сделать виджет который позволит конкретный фрейм в виде картинки рипать, то есть как бы все в браузере просчитывается, а потом одна команда отправляется которая покажет где ты сейчас, на каком фрейме. А дальше режу по этим координатам.

Нужно пробовать.
Аноним 06/03/17 Пнд 11:53:11 #307 №947513 
>>947500
Бамп вопросу. Подскажите, пожалуйста, застрял на этой хуйне.
Аноним 06/03/17 Пнд 11:54:27 #308 №947515 
14887904677650.png blob
>>947513
Аноним 06/03/17 Пнд 11:55:26 #309 №947518 
>>947515
Только там параметры лишку напередавал, но тесты пройдет, похуй.
Аноним 06/03/17 Пнд 11:58:30 #310 №947519 
>>947512
>Поясни, как это всё работает у тебя?
Говноскрипт?
Подключаю либы, телеграм-бота.
Функция Camera() - делает скриншот, посылая прямую команду в ос через os.system(), на всякий случай обрабатываю возможные ошибки, т.к. если попытаться сохранить через ffmpeg c этим же именем, вылезет бесконечный цикл ффмпега, поэтому предыдущий файл нужно удалить.
def echo(bot, update): - стандартная функция обработки сообщений телеграма.
if update.message.text == "screenshot' - проверяю текст, если сообщение содержит в себе нужный текст то далее выполняется функция Camera, которая сохраняет скриншот на диске, затем bot.sendPhoto - отправляю скриншот в телеграм. Можно также отправить видео, документы, что угодно.
def main():- тут думать не надо, стандартный обработчик бота, который будет крутиться в фоне и обрабатывать входящие сообщения.

Первый путь легко реализовать через sendVideo, отправляешь видео, смотришь, затем пишешь боту что тебе нужно и он выполняет любую команду.
Насчет второго пути и быстродействия ffmpeg не знаю, по сути разбить на картинки и выбирать из них удаленно может быть даже медленней чем залить и смотреть тупо видеофайл на странице.
Аноним 06/03/17 Пнд 12:01:27 #311 №947523 
>>947515
Огромное спасибо, правда я нихуя не понял, пойду читать про генераторы.
Аноним 06/03/17 Пнд 12:11:36 #312 №947528 
>>947519
Вот статья: https://habrahabr.ru/sandbox/80371/
>Литература
>Курсы обучения за деньги
>Бесплатные курсы
>Через месяц, я смогу написать первое приложение
Ну ты понял.


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

Нет, ты не понял, я уже знаю какой фрейм мне нужен (например начинаем с ss 00:00:00.000), поэтому только его присылаю в виде "картинка + тайминг", а дальше средствами PHP делаю определенный шаг назад или вперед, получаю другой фрейм. Так пока не подберется идеальный. В принципе я и сейчас так примерно делаю, только в Free Video Editor, только он сук работает не так как надо, я там смотрю только тайминги и потом руками через консоль вырезаю и т.п.
Аноним 06/03/17 Пнд 12:21:50 #313 №947535 
>>947528
>Вот статья:
К чему это?
> я уже знаю какой фрейм мне нужен
Ну ок, отправляешь картинки определенного тайминга боту.
Для более сложной обработки сообщений тебе нужно будет выучить только строки и регулярочки, чтобы вычленять оттуда логические цепочки типа "обрежь от и до", "сделай главной вторую дорожку" и т.д. Это совсем не сложно и будет быстрее, чем писать целый сайт на пхп и в итоге заниматься тем же самым биндингом команд.

Просто бери, разбирайся, делай, в чем проблема вообще. Все предельно ясно.

Аноним 06/03/17 Пнд 12:35:20 #314 №947539 
>>947535
>>947528

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

Питон не то что бы сложнее, но вся информация по Питону в основном на английском, а по PHP например в ОП посте и в интернете куча информации на русском.

>>947454

Можно, но это в общем не очень праивльный подход, по нескольким причинам.

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

Даже если тебе надо просто перекодировать файл - есть куча оберток над ffmpeg, в том числе open source и бесплатные.

Наконец, если делать самому, то на мой взгляд архитектура получается неэффективная. Ты предлагаешь ради GUI поднять веб-сервер и гонять запросы из браузера, чтобы этот сервер что-то делал с видеофайлом. Это очень неэффективно, тут явно нужно десктопное приложение, без всяких серверов. Но его написание это конечно намного более сложная задача чем вызвать ffmpeg. Если под винду то удобнее всего писать на C# и .NET. Есть еще варинант писать HTML/CSS/JS приложение и упаковать его в десктопное приложение с помощью Electron, но не уверен что это все эффективно и надежно будет работать.

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

В общем мой совет - найти нормальный готовый видеоредактор.
Аноним 06/03/17 Пнд 12:37:51 #315 №947541 
У меня вопрос по архитектуре веб-приложений.

Вот живой пример: сайт, на котором размещена таблица. Каждую ячейку в ней можно редактировать прямо на странице. Нажимать кнопки, выбирать радиобаттоны и всё такое. При этом на странице (без перезагрузки) происходят какие-то изменения.
Технически я сейчас это реализовал так:
- На странице ловится событие (например, onclick или onchange) по которому срабатывает жабаскрипт.
- Он собирает введённые данные (id элемента, value инпута и т.п.) и передаёт их через аякс в пхп-скрипт.
- Этот скрипт - отдельный файл, например url:"refresh_cell.php", . В нём первым делом из $_POST извлекаются переменные и по ним что-то там обсчитывается.
- Причём, большей частью в функциях, которые записаны где-то в другом файле (у меня они сведены в один function.php).
- В итоге, пхп-скрипт выдаёт сгенерированную разметку через echo.
- Он завершается, и в js через аякс возвращается эта выдача success: function (data) {.
- Ну и дальше эта data куда-то встраивается на странице.

Это так и должно быть, или я набыдлокодил слишком много костылей?
Как быть, если нужно извлечь не один кусок данных, а несколько? Например, при изменении одной из трёх ячеек, обновить в БД не только её саму, но и их сумму в четвёртой?
Аноним 06/03/17 Пнд 12:46:42 #316 №947545 
>>947541
В целом все правильно. Конкретно архитектура на фронте и беке вызывает много сомнений, типа почему у тебя там не мвс, а какойто дикий файлик с функциями, но это ты с опытом нагородишь. Сам процесс верно протекает. Ну а для того, чтобы решить твой вопрос просто дописывай и на фронт и на бек необходимый функционал.
Аноним 06/03/17 Пнд 12:54:36 #317 №947550 
>>947541

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

С сервера удобнее присылать не HTML, а JSON, а то непонятно как сообщать об ошибках например.

> Как быть, если нужно извлечь не один кусок данных, а несколько? Например, при изменении одной из трёх ячеек, обновить в БД не только её саму, но и их сумму в четвёртой?
Реши, где будут делаться изменения. Если на сервере - то пусть тот присылает содержимое не одной, а всех изменившихся ячеек, если на клиенте - пусть см их пересчитывает.
Аноним 06/03/17 Пнд 13:10:58 #318 №947560 
>>947539
Он хочет это делать удаленно с работы
Аноним 06/03/17 Пнд 13:54:39 #319 №947593 
>>947545
>почему у тебя там не мвс, а какойто дикий файлик с функциями
Я пока не умею в паттерны. Почитал про MVC, офигел от того, что большинство объясняющих даже не могут внятно объяснить, что такое "модель" и в основном срутся по этому поводу друг с другом. А когда попробовал разобраться, получилось какое-то описание идеального программирования в стране эльфов. Типа вот волшебный идеальный пользователь, который волшебным идеальным способом контактирует через волшебного обозревателя с волшебными данными. А на деле получается что-то вроде "модель - это данные на сервере, но на самом деле в 2017 году это уже не совсем данные, а данные, плюс логика работы с ними, поэтому все серверные скрипты - это тоже данные, но только модель, правда собирать их в одну модель некорректно, потому что тогда контроллер размазывается между клиентом и сервером, а это а-та-та и ой-ёй-ёй, поэтому вот тут мы нарисуем стрелочку, этот блок на рисунке расположим чуть ближе - и теперь всё в порядке. Данные, которые не модель, видятся контроллером через вид, затрагиваемый моделью контроллера пользователя. Модель. Данные."

Пока что для себя я сделал вывод, что вид страницы настраивается только через css и рулится чере id и классы элементов, а активность пользователя отслеживается только через js. Данные лежат только в БД и все операции с ними проходят только на стороне сервера.

>просто дописывай и на фронт и на бек необходимый функционал
>С сервера удобнее присылать не HTML, а JSON, а то непонятно как сообщать об ошибках например.
Тоже о нём думал, не хотел с ним морочиться, но видно придётся.

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

>Я бы сделал отдельно на яваскрипте виджет таблицы, который генерирует события изменения.
А чем стандартные onchange и onclick не устраивают?
Аноним 06/03/17 Пнд 14:02:56 #320 №947603 
>>947593
Ты читал про классическое мвс, раз там обсервер фигурирует. В связи со спецификой бекенда обсервер между вьюхой и моделью быть в принципе не может.
Тут значит схема такая.
Модель - данные и логика работы с этими данными. Самый распространенный пример, который тебе в большинстве фреймворков встретистя - одна модель на одну сущность в бд.
Вьюха - в данном конкретном контексте просто создает статичный хтмл.
Контроллер - это в принципе центральная точка работы всего этого говна. Запрос с браузера маршрутизуется приложением так, что в конечном счете он приходит на какой-то контроллер. Контроллер его обрабатывает, вызывает методы моделей, какие требуется. В конечном счете контроллер какие-то данные отдает вьюхе, чтобы та отредерилась. И после этого статичный хтмл, полученный с вьюхи, отдается клиенту обратно.
Ну вот такая сама стандартная схемка в двух словах.
Аноним 06/03/17 Пнд 14:27:44 #321 №947612 
>>947593

Почитай еще мой урок про MVC тогда https://github.com/codedokode/pasta/blob/master/js/minesweeper-mvc.md

>>Я бы сделал отдельно на яваскрипте виджет таблицы, который генерирует события изменения.
> А чем стандартные onchange и onclick не устраивают?
Может в твоей ситуации они и подойдут, так трудно сказать.

>>947515

Переусложнено. Во-первых, это элементарно решается без генераторов, кода будет намного меньше. Во-вторых, тут: return function(start, step) - не должно быть аргументов. В третьих, вместо 2 yield можно использовать один.

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

>>947513

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

>>947468

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

php-fpm это менеджер процессов PHP и FCGI сервер, с твоим гуглом какие-то проблемы.

>>947466

Если ZF знаешь, то делать недолго, несколько дней максимум.

>>947460

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

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

Ты случайно не из тех, кто считает что новая модная технология X всегда лучше чем старая Y? Нгинкс ориентирован на производительность, а Апач на число фич и модулей.

>>947458

Что за термины? "биндить"? Bind значит привязывать, и смысл твоего предложения понять трудно.

И не надо вкидывать ссылки на вещи, которые ты берешь из гугла, не разобравшись. Гуглить любой может. А ты расскажи про свой опыт и подводные камни.

Аноним 06/03/17 Пнд 14:40:29 #322 №947617 
14888004292400.png blob
>>947612
>То есть тебе стоит разобраться в теории, в каких именно ситуациях стоит использовать генераторы.
Типа такого? А вообще я не жсер, увидел что там генераторы просят, полез юзать генераторы.
Аноним 06/03/17 Пнд 14:56:39 #323 №947627 
Ребят, а можете подсказать какой нибудь литературы по зенду для новичка?
Аноним 06/03/17 Пнд 15:03:07 #324 №947635 
>>947612
>Апач проще наверно
Мне он напротив перегруженным кажется. Кому как. А вот энжинкс прост и прозрачен для меня, работаю с ним и прямо душа радуется. С пхпфпм так же сложностей не имею. Все это даже на винде легко разворачивается (в несколько урезанном виде) для быстрой разработки.
>Ты случайно не из тех, кто считает что новая модная технология X всегда лучше чем старая Y?
Нет, дело не в новом. Да и о чем новом может идти речь, если для меня энжинкс и апач на первой же работе в связке попались
>Нгинкс ориентирован на производительность, а Апач на число фич и модулей.
Мне приятно осознавать, что он быстр, это тоже плюсом идет.
Аноним 06/03/17 Пнд 15:14:30 #325 №947642 
>>947593

Ой, не ту ссылку про MVC дал, вот правильная: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

>>947501

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

Проблема будет для тех, кто сидит за NAT (большинство пользователей интернета по кабелю). Там надо покупать белый IP у провайдера.

>>947470

PHP ничем не сложнее.

>>947467

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

>>947445

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

Это во всем мире так делают.

Хотя конечно программистам лучше от этого подальше держаться.

>>947444

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

>>947431

Зачем сомнительные задания с фриланса и конкуренция за еду? Это для тех, кто учиться не любит или не способен, а хочет поскорее зарабатывать. Я вижу другой вариант: в нашем треде всерьез изучить ООП, MVC, фреймворки вроде Симфони, тестирование, с таким набором знаний анон будет выглядеть лучше 90% вкатывальщиков, учившихся по видеокурсам, и его возьмут в любую нормальную компанию стажером.

Аноним 06/03/17 Пнд 16:09:07 #326 №947680 
>>947203

С виртуальной машины и дебиана (потому что меньше всего места занимает в сравнении с другими дистрибутивами). Есть кое-какие инструкции: https://gist.github.com/codedokode/420c8c12a1edae25f0ec

>>947230

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

>>947109

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

Ну и тот же гитхаб, он вообще на Руби (и рельсах по моему: https://github.com/showcases/projects-that-power-github ) написан, не самый быстрый язык, но они просто наставили серверов побольше, где-то что-то подкрутили и проблема тормозов решилась. Хорошо, когда есть инвесторы и много денег!

>>947103

Без DIR, если ты пишешь относительный путь вроде

require 'something.php';

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

"у меня работает" - это вообще ничего не значит. Сегодня работает, а завтра нет. Надо смотреть документацию.

>>946938

Открой документацию: http://php.net/manual/ru/function.preg-replace.php

preg_replace находит все фрагменты текста, соответствующие регулярке (первому аргументу) и заменяет их на второй аргумент. При этом при замене можно использовать подстановки из исходного текста вида $0, $1 и тд.

Аноним 06/03/17 Пнд 16:11:01 #327 №947683 
>>947109
В таких случаях все равно пишут корпоративную хуйню. Или же можно использовать микро-фрейморвки тпа FT, какие у них могут быть тормоза?
Аноним 06/03/17 Пнд 16:12:15 #328 №947686 
>>946853

use работает только в пределах файла и не распространяется на файлы, которые ты вызываешь из него.

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

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

>>946901

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


Аноним 06/03/17 Пнд 16:18:13 #329 №947691 
>>946924

Скорее

apt-get install php5 или как там этот пакет называется. Ну и расширения надо ставить отдельно, вроде php5-gd или php5-curl.

Модули ставятся через apt-get и обычно настраивать их не надо, но если что, конфиги в /etc/php/ есть.

Вот инфа на англ для старой убунты: https://www.digitalocean.com/community/tutorials/how-to-change-your-php-settings-on-ubuntu-14-04

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

> как запустить чтобы это всё работало на внешнем айпи или локалохосте?
Если линукс твоя основная система, то тебе нужно еще Апач или нгинкс, в качестве веб-сервера, который будет принимать запросы от браузера. Ставится опять же через ept-get install, конфиги в /etc/ как всегда, логи в /var/log/

В браузере вводишь http://localhost/, если хочется использовать свое доменное имя вроде example.local, пропиши его в /etc/hosts

>>946840

Надо делать отдельный класс, и может, не один. Потому что там довольно сложная схема с генерацией ссылок, обработкой ответов итд. Посмотри на сущестующие библиотеки для авторизации через соцсети и увидишь что там все не просто: https://packagist.org/search/?search_query%5Bquery%5D=auth

Аноним 06/03/17 Пнд 16:20:08 #330 №947695 
14888064083470.png 1.png
Объясните кое-что, пожалуйста. Вот есть массив объектов. Как получить доступ к свойству объекта? Гугл не помог.
Аноним 06/03/17 Пнд 16:26:30 #331 №947701 
>>946837

Можно, и даже полезно, чтобы сравнить разные подходы.

>>946810

Урок по установке PHP читал? https://github.com/codedokode/pasta/blob/master/soft/php-install.md

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

В ОП посте еще есть урок по командной строке и Апачу, тоже пригодятся.

>>946799

PHP выучить не очень сложно, но фрилансер ведь не будет писать абстрактные программы на чистом PHP. Тебе надо знать верстку, может CMS, может фреймворки, ООП, MVC, базы данных и при всем этом конкурировать с толпой людей. Зайди на фл.ру и сам почитай какие там задачи.

>>946792

Есть, но плохая. Сразу не получится, надо сначала ООП, DI, MVC и некоторые паттерны изучить. В ОП посте есть задача на студентов, почитай комментарии к ней, а это ведь задача без фреймворков, а сколько всего надо учитывать.

>>946772

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

Хотя изучить можно, вредно не будет.

>>946768

Симфони самый сложный.

>>946765

Нет. Там свой синтаксис. Наверняка есть документация где-то.

Аноним 06/03/17 Пнд 16:27:10 #332 №947704 
>>947695
$array[0][$someClass]->someProperty; как-то так вроде.
Аноним 06/03/17 Пнд 16:29:33 #333 №947707 
>>947704
Помоему просто $array[0]->someProperty
Аноним 06/03/17 Пнд 16:31:12 #334 №947710 
Гайс, есть некая идея(но рассказывать офк не буду). В общем, суть заработка: 2 чела скидывают в общак, победитель забирает 80% от всей суммы, а 20% нам. Что вообще нужно знать и иметь для такого перевода?
Аноним 06/03/17 Пнд 16:31:56 #335 №947711 
>>947707
Undefined variable, бла-бла. Не получается.

>>947704
Так тоже.
Аноним 06/03/17 Пнд 16:32:32 #336 №947712 
>>946764

Компьютер и ОС Windows не понимают язык PHP и не могут выполнить твою программу. Тебе надо скачать интерпретатор PHP и запускать его, чтобы он выполнил твою программу, которую ты написал.

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

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

>>946711

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

>>946706

Множественное наследование это странная и неоднозначная вещь.

>>946697

Трейт это трейт.

>>946499

Какую инфу ты ждешь? В ОП посте есть инфа по PHP в общем, или тебе надо, чтобы тебе корзину написали?

Аноним 06/03/17 Пнд 16:33:48 #337 №947715 
>>947711
Может у тебя там протектед или прайват свойства?
Аноним 06/03/17 Пнд 16:34:05 #338 №947716 
>>947711
У тебя там свойства protected, не?
Аноним 06/03/17 Пнд 16:34:27 #339 №947717 
>>947715
>>947716
Паблик.

Аноним 06/03/17 Пнд 16:35:39 #340 №947718 
>>947717
Скинь код полностью.
Аноним 06/03/17 Пнд 16:36:09 #341 №947719 
>>947712
>Вообще, мало где они полезны
Я их время от времени юзаю для реализации поведений. Конечно так, чтобы конфликтов не было. дешево и сердито, скажем так. Нормальные поведения заходят лучше, но не всегда стоят того, чтобы их пилить попросту.
Аноним 06/03/17 Пнд 16:40:31 #342 №947720 
>>947712
>Множественное наследование это странная и неоднозначная вещь.
Если везде(вроде как) применяется принцип единственной обязанности, то зачем надо множественное наследование?
Аноним 06/03/17 Пнд 16:45:50 #343 №947723 
>>946495

Сессии быстро умирают, зашел на сайт через час, а товаров нет.

>>946493

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

>>946491

В мануале есть страница, даже на русском: http://php.net/manual/ru/migration70.new-features.php

Читать можно, но потом прочти что нового. Так-то PHP5 код будет работать в PHP7.

>>946455

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

>>946448

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

>>946416

src - исходники
Можно еще по названию приложения, например StudentList

>>946377

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

> Да, это не MVC, скорее просто поделка в процедурном стиле
А MVC не требует наличия ООП кстати. Это независимые вещи.

> Тут я косноязычно выразился. Я хотел не вместо, а дополнительно ее сделать. Про один класс для валидации ценное замечание.
В ларавель есть своя валидация, тебе надо просто разобраться, как ее приспособить для твоей задачи.

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

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

> Тут не понял, ведь все методы для работы с тегами в моделях Attitude и Tag.

Вот у тебя код в контроллере: https://github.com/grigoryMovchan/zuihitsu/blob/master/app/Http/Controllers/PostController.php#L270

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

И посмотри мой урок по MVC: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

Я там даже дописал:

> Весь функционал приложения содержится в модели....К примеру, если мы делаем сайт объявлений, с такими функциями, как "добавить объявление", "удалить объявление", "найти объявления по критериям", то для каждого действия где-то в модели должна быть функция, которую можно вызвать. Если выкинуть все контроллеры и вью, то мы все равно можем добавлять объявления, вызывая методы модели.

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

А у тебя получился толстый контроллер.

Аноним 06/03/17 Пнд 16:48:56 #344 №947726 
14888081362560.webm 14887232165590.webm
>>947411
>>Как найти работу?
Вон Ванечка Ерохин уже работает похрамистом, функционал на кассе тестирует, баги шваброй убирает. А все свои книжки читаешь.
Аноним 06/03/17 Пнд 16:51:33 #345 №947730 
>>947695
>>947717
На твоей картинке черным по белому написано protected? Или ты тут тонко затролить решил?

https://ideone.com/EFEACD
Аноним 06/03/17 Пнд 16:51:40 #346 №947732 
>>947723
>В мануале есть страница, даже на русском: http://php.net/manual/ru/migration70.new-features.php
>Оператор объединения с null
>$username = $_GET['user'] ?? 'nobody';
Ух ты как удобно оказывается
Даже так можно:
>$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
Аноним 06/03/17 Пнд 16:51:45 #347 №947733 
>>947695
>>947717
У тебя прямо в массиве написано, что поля объекта протектед. Кого ты тут наебыть пытаешься? МММ?
Аноним 06/03/17 Пнд 16:58:02 #348 №947742 
>>946362

Просто выражение лица нравится. Какого-то тайного смысла я не закладывал.

>>946334

Есть функции вроде filter_var ( http://php.net/manual/ru/filter.examples.validation.php ) , но в общем-то да, регулярками, проверкой на заполненность, длину строки итд.

В плане архитектуры иногда делают отдельные классы-валидаторы и из них комбинируют правила валидации:

$v = new Validator;
$v->addRule('name', new NotEmptyRule());
$v->addRule('name', new MaxLengthRule(100));
..

$errors = $v->validate($data);

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

>>946315

Ты на русскомискал информацию? В приципе, не обязательно именно этот, можно Silex, тем более что он на компонентах Симфони.Можно и большой фреймворк, вроде Yii.

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

>>946278

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

>>946217

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

Можешь через командную строку напрмер программой curl или wget запросить ответ с сервера, или браузером?

Аноним 06/03/17 Пнд 17:09:38 #349 №947748 
>>946173

Скопирую с прошлого треда:

>>939966
>>938135
>>938130

Почитай посты по этим ссылкам.

>>946138

Не очень понял вопрос. Уточни, что именно непонятно.

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

>>946077

Для управленцев и депресснутых есть перезвоним-тред. зачем нам второй тред? Надо просто модерировать тред нормально.

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

>>946038

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

>>946025

Почитай документацию по гиту, git book например или мануал. Это URL репозитория,а не адреса для входа через ssh.

https://git-scm.com/book/be/v2/Git-on-the-Server-The-Protocols (англ)
https://git-scm.com/book/ru/v1/Git-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5-%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B
https://git-scm.com/book/ru/v1/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-Git-%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D1%83%D0%B4%D0%B0%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F%D0%BC%D0%B8
Аноним 06/03/17 Пнд 17:19:19 #350 №947754 
>>946012

1) верно
2) верно (хотя ты не учел что бордер добавляет к ширине 2 px)
3) верно
4) цвета вырвиглазные. Почему-то у тебя стоит margin-right 5px, но в задаче требуется 10, почитай, как избавиться от пробелов и вызванных ими отступов
5) верно

>>946011

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

>>946009

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

>>945979

Возьмите лучше мой MVC, он проще: https://github.com/codedokode/pasta/blob/master/arch/mvc.md


Аноним 06/03/17 Пнд 17:25:11 #351 №947757 
>>945839

> Вывести информацию о пользователе, сколько лайков поставил/получил, сколько взаимных лайков

Решено пока неэффективно, с лишними подзапросами. Это можно сделать с 2 джойнами без подзапросов. Если непонятно, как, попроси подсказку.

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

- джойним нужные нам таблицы
- условиями ON/WHERE отсекаем ненужное
- группируем, если надо
- отсеиваем сгруппированные данные по условию HAVING
- сортируем
- отбираем нужные колонки из сгруппированных данных

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

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

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

> Все пользователи, которые поставили лайк 1,2 но не поставили 3
И тут то же самое.


Попробуй все это сделать через джойны.
Аноним 06/03/17 Пнд 17:30:39 #352 №947761 
>>945676

Посмотрел код попапа.

https://github.com/greenTea242/MinesweeperMVC/blob/master/src/views/PopupView.js#L33
> PopupView.prototype.addButton = function(option, title) {
> if (!this._buttons) {
> throw new PopupViewException("Необходимо создать контейнер кнопок.");
> }
Вот это по моему неудачное ограничение. Обычно сначала добавляют кнопки, а только потом отображают попап, а не наоборот.

> var template = document.querySelector(".template-popup");
Тут логичнее использовать id так как шаблон может быть только один. Но это так, мелочь незначительная.

Аноним 06/03/17 Пнд 17:40:54 #353 №947768 
Аноны, кто-нибудь, выделите колобков галочкой и зарепортите их как троллинг и оффтопик, мне не позволяет, пишет, я уже жаловался.

>>947683

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

>>947635

Да я тоже против нгинкс ничего не имею. Хороший сервер, тем более что сделан нашим человеком.

>>947627

В документации вроде есть туториал, но на англ.

>>947617

Да, так, только я бы previous переместил во внутреннюю функцию.

CSS Аноним 06/03/17 Пнд 20:27:55 #354 №947862 
>>947754

>> 2: https://jsfiddle.net/Lq1fgjde/
> верно (хотя ты не учел что бордер добавляет к ширине 2 px)
Насколько знаю, есть 2 пути:
- вычесть эти 2 пикселя из ширины элемента. Получится width: 578px, выглядит как магическое число: https://jsfiddle.net/Lq1fgjde/1/
- выставить ширину с учётом паддингов и использовать box-sizing: border-box: https://jsfiddle.net/Lq1fgjde/2/
Оба подхода дали одинаковые результаты, какой лучше?

4: https://jsfiddle.net/zvcemf1n/1/
6: https://jsfiddle.net/ba2qgzt6/1/

Вывод списка смежности в виде дерева без рекурсии: https://jsfiddle.net/wkL0ka7u/
На PHP вышло многословно: https://ideone.com/YKik59
Аноним 06/03/17 Пнд 20:34:33 #355 №947867 
>>945059 (OP)
В вебаче все тухло, поэтому спрошу здесь - когда верстаешь, то просто прикручиваешь ксс и хтмл, всякие жс-штуки не надо прикручивать? А если надо, то какие? Можно верстать просто так или все заказы обычно на верстку на какую-то платформу, типа бутстрапа?
Аноним 06/03/17 Пнд 20:37:06 #356 №947870 
>>947867
Если ты делаешь чисто хтмл + цсс - это верстка. Если еще и жс, или только жс - это уже фронтендом называется.
Аноним 06/03/17 Пнд 20:40:18 #357 №947873 
>>947870
А существуют заказы где просто собираешь хтмл+цсс?
Чем тогда фронтенд отличается? Фронт это когда добавляешь анимацию или что?
Аноним 06/03/17 Пнд 20:48:54 #358 №947887 
14888225348070.jpg 123213123.jpg
>>947761

А что на счет остального кода?
Аноним 06/03/17 Пнд 20:59:59 #359 №947896 
Как с помощью регекспа найти в строке пробел?
Аноним 06/03/17 Пнд 21:00:35 #360 №947898 
>>947873
>А существуют заказы где просто собираешь хтмл+цсс?
Да, но это уже лучше к дизайну отнести. Сейчас время такое, что верстал наплодилось пиздец. Фронтенд - это любая логика, вычисления, которая делается на стороне клиента. Если короче - вся жаваскрипт хуйня.
Аноним 06/03/17 Пнд 21:28:17 #361 №947939 
Вот по функциям вопрос. Если я в функции укажу переменные, вроде function fun(one, two, three), а после введу иные переменные, допустим oneThing, а после вызову функцию, но вставив новую переменную, вот some = fun (oneThing, ...), то будет ли сия функция работать? oneThing будет приниматься за one?
Аноним 06/03/17 Пнд 21:35:14 #362 №947949 
>>947939

Ты вообще при вызове не обязан указывать переменные, можно указать любое выражение.

func(1, 3, "hello") например
Аноним 06/03/17 Пнд 21:45:24 #363 №947966 
>>947949
Чего-то я не понимаю. Ведь функции выполнены действия с переменными, указанными уже. В эти переменные я после подставляю то, что нужно. А если я укажу любое выражение, которое не было указано, то как она будет выполняться, если в самой функции таковых нет?
Аноним 06/03/17 Пнд 22:05:36 #364 №947982 
Почему считает неправильно? Дело в функции? http://ideone.com/2ZSMhp
Аноним 06/03/17 Пнд 22:09:51 #365 №947987 
>>947982
А тут иначе. Хотя, вроде, значения не менялись. http://ideone.com/XzHvDg
Аноним 06/03/17 Пнд 22:51:53 #366 №948034 
>>947966

Переменные, которые при описании функции указаны в скобках, называются аргументы.

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

Допустим, мы создадим такую функцию:
function something($x, $y) { ...

И позже ее вызовем так:
something(1, 3);

тут внутри функции $x получит значение 1, а $y значение 3.

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

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

И если ты еще не видел, в прошлом треде были посты про функции: >>939966 >>938135 >>938130

Аноним 06/03/17 Пнд 23:02:49 #367 №948039 
14888305693520.jpg vovka.v.tridev.tsarstve.avi.image2.jpg
Господа, следуя вашим советам попробовал переделать скрипт согласно MVC

Стало https://github.com/grigoryMovchan/auth/tree/auth_mvc

Было https://github.com/grigoryMovchan/auth

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

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

Покритикуйте плиз

>>946192-кун
Аноним 06/03/17 Пнд 23:10:35 #368 №948041 
14888310357660.png 2017-03-0623-12-15.png
>>947742
>Не, это не нужно, это просто ты не разобрался скопировал откуда-то.

Отсюда скопировал https://laravel.ru/docs/v5/quickstart-intermediate

Да, не разобрался, для меня до сих пор там какая-то магия происходит, хоть и получилось написать блог-поделку.
Аноним 06/03/17 Пнд 23:18:56 #369 №948046 
>>948041
Ну да, лярва выскоабстрактный кусок блевотины. Так сходу въехать во все происходящее именно в этом фреймворке и у опытного человека не сразу получится (например пришедшего с юи), попробуй доки почитать очень внимательно, хз че тут еще сказать.
Аноним 06/03/17 Пнд 23:24:23 #370 №948048 
>>948046
Да мне доки бесполезно просто так читать. Стал въезжать только когда начал пилить свою поделку, с этими уровнями абстракции как будто новый язык учу.
Но это так, лирическое отступление
Аноним 07/03/17 Втр 02:38:52 #371 №948197 
Поясните разницу между роутером, диспатчером и фронт контроллером? Чем отличаются, все сразу делать надо или какое-то одно выбирают, какая разница вообще что использовать?
Аноним 07/03/17 Втр 03:29:50 #372 №948202 
Поясните за MVC по пхп, кто как его учил?скинь материал как вы его осваивали, пожалуйста.
Аноним 07/03/17 Втр 03:33:00 #373 №948203 
>>948202
В шапке вся информация есть.
Аноним 07/03/17 Втр 03:36:49 #374 №948205 
14888470095130.jpg 14767489085960.jpg
Простите за глупый вопрос, но как вы учите, усваиваете пхп, я сначала читаю учебник и конспектирую в тетрадке, а потом смотрю видео уроки, вебинары по пхп и повторяю их в редакторе. Правильно ли я делаю?
Аноним 07/03/17 Втр 03:39:00 #375 №948206 
>>948205
да
Аноним 07/03/17 Втр 08:22:23 #376 №948257 
>>948205
Нет, не совсем правильно. Нужно делать что-то своё, а не просто повторять. Напиши что-нибудь по аналогии, похожее, но не тупо переписывай с туториалов.
Аноним 07/03/17 Втр 11:01:38 #377 №948322 
>>948205
Неправильно. Видео уроки и вебинары ничего не дают, бездумное повторение в основном тоже. Делать надо задачки как у ОПа, читать книги и документации. Прочел о какой-то новой фишке - пилишь под нее мини проектик. Когда достаточно много разных фишек освоил - пилишь проектик, где все их сразу используешь, тут-то сложности и возникают. Решаешь их, приходит понимание что и зачем, и в голове откладываются знания.
Аноним 07/03/17 Втр 11:33:34 #378 №948327 
>>948322
А я не гнушаюсь видео уроками. Такой же источник инфы, как и остальные. Доки/статьи/книги могут быть перегружены либо некритичной инфой, либо попросту водой. Видеоуроки напротив кучу инфы не досказывают, но для беглого взгляда на какие-то вещи очень хорошо подходят иногда.
Аноним 07/03/17 Втр 11:57:52 #379 №948338 
>>948322
Я так напили поделок в процедурном стиле, теперь хуй разгребешь, при этом некоторые используются в поле. Так что тоже не серебряная пуля. Необходимости в ООП и MVC может долго не появляться, пока не придется что-то поддерживать или расширять, а когда для себя пишешь может и не придется.
Аноним 07/03/17 Втр 17:58:29 #380 №948531 
>>947730
>>947718
Просто был невнимателен. Спасибо за помощь.
Аноним 07/03/17 Втр 23:38:35 #381 №948821 
>Учи SQL, PDO, хотя бы основы

Собственно, есть что-нибудь годное по этому? Пасту читал. По идее сейчас должен делать список студентов, но по sql и pdo нихуя не знаю.
Аноним 07/03/17 Втр 23:51:47 #382 №948825 
>>948821
Кевин Янк - PHP и MySQL. От новичка к профессионалу - 2013

Даст базовые знания как засунуть-вынуть данные с таблиц, соединить их и тому подобное.
Аноним 08/03/17 Срд 00:38:52 #383 №948843 
>>947203
О! Я как раз около недели назад решил, что пора переходить на линукс. До этого всю жизнь сидел на винде тоже. Делал вот что:

1. Сначала почитал какой дистр выбрать, так как они все кажутся одинаковыми, первым выбрал дебиан, поставил на виртуальную машину и не проперся, но подумал "по описанию Дебиан вроде заебись, буду привыкать".

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

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

Минусы, которые отмечаю в убунте по сравнению с виндой:
жесткий диск греется сильнее на несколько градусов (я в этом параноик), хотя можно поебаться и выключить всякие индексации;

флеш тормозит, мультики в браузере не посмотришь, хотя на ютубе все норм работает;

многих программ нет, например пунто свитчера, для других какие-то ебаные версии (флукс), но для флукса хотя бы есть альтернативы;

драйвера для графических и звуковых карт тоже вроде какие-то ебаные, периодически все рывками двигается, хотя драйверов около 10 версий на выбор;

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

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

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

И еще, 90% всех вопросов-ответов в гугле связаны с убунтой, а не с другими дистрами.
Аноним 08/03/17 Срд 01:01:35 #384 №948857 
14889240954720.png 2017-02-2614-25-37.png
>>948843
>Понял, что работать в виртуальной машине невозможно, все тормозит и нет стимула глубоко лезть в настройки.
Ну как сказать... Стоит в виртуалке, не тормозит и в настройки лезть приходится. Причем убунта
Аноним 08/03/17 Срд 01:13:18 #385 №948868 
>>948857

У тебя консоль показана, а как насчет GUI приложений, анимаций, видео, тяжелых интернет-страниц?
Аноним 08/03/17 Срд 01:14:08 #386 №948869 
>>948843
Зачем же убунта-то для повседневного юзания? Это ж самый тормоз, скатившийся до уровня винды, щас в моде linux mint и elementary os.
Аноним 08/03/17 Срд 01:14:54 #387 №948870 
>>948857

Пару лет назад ставил убунту с GUI в виртуалку - на экране логина времяреакции на клик мышью было около минуты. Тогда Убунта что-то поменяла в интерфейсе так, что он должен был рассчитываться на GPU (использовался OpenGL, я так думаю), а в случае его недоступности GPU эмулировался на CPU и работало это сверхмедленно.
Аноним 08/03/17 Срд 01:25:31 #388 №948877 
>>948868
А зачем? Мне от линукса для разработки только сервер нужен. А как выше кун писал, в винде обычные программы лучше работают и выбор больше.

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

>>948870
Это проблема виртуалбокса, убунту ради гуи (хз зачем) надо ставить в vmware
Аноним 08/03/17 Срд 01:30:21 #389 №948879 
>>948843
>Понял, что работать в виртуальной машине невозможно, все тормозит и нет стимула глубоко лезть в настройки. От опыта системы воодушевился настолько, что подчистил место на диске и сделал логический диск для убунты, поставил ее туда вместе с виндой
Виртуальную машину небось virtual box какой-нибудь юзал. Ставь Xen, он намного быстрее.
Аноним 08/03/17 Срд 01:38:05 #390 №948882 
>>948843
>90% всех вопросов-ответов в гугле связаны с убунтой, а не с другими дистрами.
А знаешь почему? Потому что убунта - днище. Есть 3 дистра, где ничего не надо спрашивать, ибо все описано в мануале либо в виках - гента, арч и дебиан.
Аноним 08/03/17 Срд 01:39:24 #391 №948883 
>>948868
Для этого xen c vga passthrough ставят. Из под линукса запускаешь винду, а в ней игры и анимации твои.
Вот видос, 60fps:
https://www.youtube.com/watch?feature=player_detailpage&v=iBaetUjsr7s
Аноним 08/03/17 Срд 02:09:40 #392 №948897 
>>948883

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

Вот, что пишут:

- нужно 2 видеокарты
- You need a CPU that supports IOMMU which is VT-D (Intel) and AMD-Vi. This allows Virtual Machines to interface directly with peripheral devices.

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

https://blogs.oracle.com/fatbloke/entry/3d_acceleration_with_ubuntu_guests

Аноним 08/03/17 Срд 03:01:35 #393 №948911 
>>948882
>Есть 1 дистра, где ничего не надо спрашивать, ибо все описано в мануале либо в виках - Windows 10
Не благодари
Аноним 08/03/17 Срд 03:41:55 #394 №948919 
14889337153030.gif 14784576169813.gif
>>948911
Нахуй пошел.
Аноним 08/03/17 Срд 05:49:18 #395 №948946 
>>948897
>You need a CPU that supports IOMMU which is VT-D (Intel) and AMD-Vi
и хуй найдешь сейчас такой процессор
Аноним 08/03/17 Срд 08:14:50 #396 №948966 
>>948843
Это pr или софтач? Если ты хотел научиться кодить на линуксах, достаточно было поставить серверную версию или купить нищевпску, десктоп для кодинга не нужен.
Истории успеха Аноним 08/03/17 Срд 10:27:36 #397 №948993 
Настало время поделиться.

Где-то в апреле прошлого года понял, что хватит пинать хуи и пора таки становится нормальным программистом. Мой опыт - это работки в колледже, сами понимаете, не серьезно и не достаточно чтоб работу найти. Начал с нулевых задач этого треда, потом студенты, потом файлообменник. До конца они у меня так и не доделаны - функционал весь, но ОП еще присылал правки, то есть было, что улучшать. Параллельно работал курьером, то за 10к по полдня, потом за ~30к за месяц (да, очень хорошо платили). В ноябре заболел и пока сидел дома подумал, а дай-ка размещу резюме на hh, вдруг выйдет чего. В итоге на меня сами откликнулись. Больной бегал на собеседования. Их было целых три. Еще и тестовое дома делал. В итоге взяли на техподдержку. Современная веб-студия, пилящая на Битриксе (ба-дум-ц). Первые три месяца - 32к, потом 40. Вот жду-не дождусь повышения.

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

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

Не могу вот решить с чего начать, Laravel или Symphony, кто что думает? На hh у них доли примерно равные
Аноним 08/03/17 Срд 10:58:07 #398 №949009 
>>948993
Время проебываешь не битриксе только. Мне за год зарплату до 120к повысили, при чем я пишу даже без фреймворков на чистом php. Ну я правда в ДС, в других городах думаю вряд ли столько дали бы. Учи паттерны, mysql, юнит тестинг, архитектуру и написание нормального кода, а не конкретные фреймворки. Фреймворки имеет смысл смотреть только, чтоб понять как они написаны, зубрить сам фреймворк тоже смысла мало, они на разных фирмах разные все.
Аноним 08/03/17 Срд 11:23:56 #399 №949029 
>>949009
120 за год? Круто, вдохновляет? Ну а разве фреймворк не является хорошим примером и способом изучения хорошего кода, паттернов и прочего?
Так-то да, понятно, что хороший уровень, это когда смена фреймворка - дело пары месяцев
Аноним 08/03/17 Срд 11:37:42 #400 №949037 
>>949009
>я пишу даже без фреймворков на чистом php
быдло
Аноним 08/03/17 Срд 11:52:21 #401 №949045 
>>949009
> при чем я пишу даже без фреймворков на чистом php
Ты по отдельности компоненты ставишь или свои изобретаешь? Ведь не дано другого + ты пишешь про тесты и архитектуру, значит у тебя там просто свой фреймворк велосипедный? Можно глянуть твои компоненты?

>>948869
Тормознутость определяется не дистром, а окружением рабочего стола (Desktop Environment). Они все почти одинаково тормозят, за исключением LXDE/Xfce. Из убунты можно выкинуть Unity и поставить что-нибудь полегче или вообще изначально собирать всё самому из Ubuntu Minimal: https://help.ubuntu.com/community/Installation/MinimalCD
Аноним 08/03/17 Срд 12:02:39 #402 №949054 
я без линукса теперь даже уии накатить не могу на винду. установка композера превращается в целую эпопею. и все это ради возможность юзать фотошоп в винде без всяких костылей.
Аноним 08/03/17 Срд 12:07:18 #403 №949058 
>>949054
А у питона пип и джанги-фласки работают как часы на винде.
Аноним 08/03/17 Срд 12:16:34 #404 №949061 
14889645950540.png изображение.png
>>949054
Ну не знаю.
Я вот в Линуксе не разобрался вообще.
Тут всё делается легко и просто, там надо было пердолиться со всем на свете.
Аноним 08/03/17 Срд 12:17:57 #405 №949063 
>>949061
Это потому что ты в линуксе не сидел. там установка любого модуля или фреймворка или даже скачка верстки делается в одну команду в консоли.
Аноним 08/03/17 Срд 12:18:42 #406 №949064 
>>949061
кстати, экзешник композера тоже не устанавливается. кеке
Аноним 08/03/17 Срд 12:22:47 #407 №949066 
>>949063
Так в Windows то же самое.
Нужно просто знать эту команду.
Вот же у меня в курсе команда для установки плагина Asset и самого фреймворка.

>>949064
Нужно в папке правильной быть, оттуда запустить cmd.exe - Shift и ПКМ - выбрать "Открыть окно команд".
Аноним 08/03/17 Срд 12:40:52 #408 №949086 
Прогаю верстку под битрикс и чувствую что тупею, все задачи одинаковые, мест где надо применить изящные решения минимум, посоветуйте блогов или сайтов с снипетами по php/bitrix. Прогал на phalcon а бывало и на haskell хочется той же изящности
Аноним 08/03/17 Срд 13:30:24 #409 №949122 
с домашнего компа ща запустил комозер экзешник на винду, а вот с рабочего там какой-то путь не прописывался. странно все это. я же просто хотел сделать проектик на уии, но так как он не установился на раб. компе, пришлось брать кодеигнитер.
Аноним 08/03/17 Срд 13:50:56 #410 №949131 
14889702569740.gif 14889337153030.gif
>>949122
Аноним 08/03/17 Срд 14:06:25 #411 №949148 
14889711851630.jpg Saten.Ruiko.full.942153.jpg
Охайо, пыхеры. Тупая макака-формошлеп на связи. Хочу уметь в симфони. Бложик писать не хочу, подкиньте идею для проекта. Спасибо.
Аноним 08/03/17 Срд 14:12:31 #412 №949156 
Почемуу ООП так сложнааа??? Зачем его придумали?
Аноним 08/03/17 Срд 14:41:26 #413 №949189 
>>949156
Всё сложное придумано для того, чтобы стало легче.
А что сложного? Как раз просто в проектах: объявлен класс, пользуешься методами в любом файле, лишь указав namespace.
Если судишь по задачам ОПа, то не надо.
Они как олимпиадные задачки, такое тебе никогда в жизни не понадобится.
В проектах и фреймворках такого не бывает, чтобы в одном файле столько всего было наверчено.
Аноним 08/03/17 Срд 14:50:09 #414 №949192 
>>945059 (OP)
Проверь плз задачу про айфон и кредит
http://codepad.org/lIrhPaUj

Все работает (проверял с разными суммами), но подозреваю что в плане элегантности это не самое лучшее решение. Есть какой-то образцовый вариант, на который можно равняться?
Аноним 08/03/17 Срд 14:54:22 #415 №949197 
14889740621630.webm 14875978549490.webm
>>949148
Подкинул.
Аноним 08/03/17 Срд 14:57:16 #416 №949200 
>>949148
Задачки в ОП-посте, думаю, заебись подойдут.

Плюс вот, например https://toster.ru/q/384556#answer_943242
Аноним 08/03/17 Срд 15:16:09 #417 №949211 
>>949192
>>945059 (OP)

фикс, поудалял лишние строки http://codepad.org/Rc9dIXNt
Аноним 08/03/17 Срд 15:32:07 #418 №949224 
>>948993
Не иди туда. Битрикс это смерть. Если ты человек с позитивным уровнем icq то больше года не выдержишь, а потом еще и оказывается что за год ты приобрел бесполезный, и даже вредный опыт.
Аноним 08/03/17 Срд 16:05:39 #419 №949243 
Аноны, mysqli::set_charset('utf8'), то вылетает "Invalid characterset or character set not supported". Как это починить?
Аноним 08/03/17 Срд 16:14:30 #420 №949251 
>>949243
Потому что utf-8
Аноним 08/03/17 Срд 16:16:23 #421 №949255 
>>949251
Нет, так тоже не работает. И на php.net именно "utf8".
Аноним 08/03/17 Срд 16:25:16 #422 №949264 
>>949243
ПОдсоединись к mysql из консоли или другой программы и сделай запрос SHOW CHARACTER SET как тут:

https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html

Какая ОС, откуда MySQL брал?

>>949251

В mysql она без дефиса пишется.
Аноним 08/03/17 Срд 16:31:10 #423 №949267 
>>949264
Ubuntu 16.04, из репов ставил.
Есть строка utf8 UTF-8 Unicode utf8_general_ci. Возможно ли ошибка из-за того, что при создании базы я указал uft8_unicode_ci?
Аноним 08/03/17 Срд 16:34:39 #424 №949272 
>>949267

Попробуй задать кодировку с помощью запроса SET NAMES utf8 вместо set_charset.

И кстати, ты с БД-то соединился перед тем, как set_charset вызывать? И правильно ли вызываешь, как в мануале?
Аноним 08/03/17 Срд 16:37:43 #425 №949274 
>>949272
C SET NAMES все работает. Но смущает, что в мануале так не рекомендуют делать.
Создал еще одну базу с utf8_general_ci, таже самая ошибка.
Аноним 08/03/17 Срд 16:48:24 #426 №949276 
>>949272
Попробуй что-то вроде charset-set-server = utf8 в конфигуе мускл прописать, и ресни базу.
Аноним 08/03/17 Срд 17:15:15 #427 №949301 
Пхп-фреймворки легче чем питоновские фреймворки?
Есть ли отличия, что сложнее, ларавел, уи и т.д?
Есть ли там непонятная магия, сложно ли их изучить?
Аноним 08/03/17 Срд 18:40:37 #428 №949349 
>>949301
Не знаю че там у пиздона, но вроде как шо там шо там по идее фичи должны не сильно различаться, не? Ну с учетом разницы в реализации ООП.
Аноним 08/03/17 Срд 20:06:31 #429 №949412 
Дайте годную книжку пхп по ооп. Чтоб не только теория была, но и практика.
Аноним 08/03/17 Срд 20:18:35 #430 №949423 
>>948993
Зачёт.

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

Учи Symfony и перекатывайся в какую нибудь серьёзную контору, пишущую что то сложное на нём (CMS-ки, какие нибудь внутренние корпоративные порталы для автоматизации бумагоперекладывания, или в подобную фигню - такие есть, сам в такой работаю). Через 3-4 года, если голова светлая, будешь получать не меньше, чем синьёр на какой нибудь джаве-хуяве.
Аноним 08/03/17 Срд 20:21:49 #431 №949427 
14889937100330.jpg vovka.v.tridev.tsarstve.avi.image2.jpg
>>948039
Добавил роутер, переписал на классы с наследованием.

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

Аноним 08/03/17 Срд 20:50:50 #432 №949445 
>>949301
Не знаю на счёт питона, но думаю что примерно такие же.
Там вся фишка в том, что подавляющее большинство современных пехапешных фреймворков (yii, laravel, zend) созданы под сильным влиянием ruby on rails и сильно на него похожи. Соответственно и друг на друга они очень похожи. Считай - если знаешь один - знаешь их все. В изучении довольно простые, особой магии нет.

Особняком только Symfony стоит. Он делался под влиянием java-вских spring mvc + hibernate, соответственно довольно сильно от них отличается. И область применения у него та же - всякая энтерпрайз фигня. Вот тут уже и магия присутствует (в виде кодогенерации и прочей фигни), и, самое главное, он предназначен для программистов, которые хорошо представляют себе, что такое ООП и как им пользоваться для того, чтобы не получилось такой ситуации, что на середине написания проекта код превращается в такие дикие макароны, что проще проект выкинуть, чем дальше развивать.
но это всего лишь инструмент - сам посебе фреймворк качества кода воообще никак не гарантирует.
Аноним 08/03/17 Срд 20:52:56 #433 №949446 
>>949445
> довольно сильно от них отличается
довольно сильно отличается от других php-фреймворков, я хотел сказать.
На spring mvc + hibernate он как раз сильно похож (по крайней мере на их раниие версии, пока те в монстров современных не разрослись)
Аноним 08/03/17 Срд 20:58:12 #434 №949448 
Все тут сифони, ларавел и юи в целом обсуждают.
А почему не фалкон?
Да, он не популярен так, как вышеозвученные, но он быстр, как шайтан. В целом по возможностям он предоставляет все, что нужно для комфортной разработки, разве что возникает желание обертку другую нагородить поверх не самого привлекательного апи.
Почему бы его не переместить в шапку? А то эта технология, очень даже привлекательная в плане потребления ресурсов сервера, остается практически неизвестной. Добавлю, что в нагрузку идет зефир, который позволит вынести в сишные расширения большую часть рутинной блевотины.
Аноним 08/03/17 Срд 21:03:52 #435 №949455 
>>949448
Потому что идея, заложенная в основу phalcon - абсолютно бредовая.

ПХП выбирают из-за скриптовой природы и, как следствие, предельной простоты разработки на нём. Естественно, в ущерб быстродействию потом. ничего бесплатно не бывает.

Если тебе нужно быстродействие .... то нафига тогда вообще php брать?? Для этого есть java, c++, go наконец.

А проект на phalcon - это какая то дикая менашиша из кода на PHP и C - ну пиздец. В итоге ни удобства разработки на PHP, ни быстродействия полностью компилируемых языков.
Аноним 08/03/17 Срд 21:04:38 #436 №949458 
>>949448
в жопу тибя поебали, а ты питухом завизжал, хехе.
Аноним 08/03/17 Срд 21:07:19 #437 №949461 
>>949455
Ну вот есть у меня проект на фалкон. Я в сишный и зефирный код не залезал даже, все на пхп. Немного неудобное апи в сравнении с остальными обдроченными абстракциями фреймфорвками, но востальном все точно то же самое, только пашет намного быстрее. Фалкон не минифреймворк, он решает своим сраным сишным расширением 80% рутинных задач, я не вижу причин его не использовать и не развивать.
Аноним 08/03/17 Срд 21:20:45 #438 №949475 
>>949455
На работе фалькон, никакой мешанины из Си там нет, обычный PHP. Не знаю откуда ты взял что там какая-то мешанина будет, фалькон в использовании ничем от других фреймворков не отличается.
Аноним 08/03/17 Срд 21:50:01 #439 №949525 
14889990017320.jpg 14851850177011.jpg
Рыбята, я прошел курс молодого тельца и решил взяться за задачу про студентов. Начал читать и охуел, начал кричать "Слажнаааа", а где же работа с базой данных, создание страниц из данных вытянутых с базы? Тут циферки слаживали , а тут хуяк , посчитай остаточную массу электрона при распаде радия за 15 миллионов лет при условии что Маша и Миша не давали интервью в Лондоне.
Аноним 08/03/17 Срд 22:14:14 #440 №949539 
>>949525
На самом деле, все довольно просто. Я тоже сначала охуевал. Почитай пару статеек про MVC сначала.
Аноним 08/03/17 Срд 22:21:35 #441 №949544 
>>949461
http://suyati.com/about-us/management-team/
Лол, оказывается его индусы разрабатывают. А еще говорят индусский код то, индусский код се.
Аноним 08/03/17 Срд 22:26:13 #442 №949546 
14890011737090.jpg 14757830840390.jpg
>>949525
Посмотри в книжке из разряда пхп для даунов как работают с бд для начала, освоишь взаимодействие бд и пыхи, навертишь верстку и вот студенты и готовы. А потом ОП тебе разъяснит что ты лалка, пойдет процесс и ты все поймешь.
Аноним 08/03/17 Срд 22:28:29 #443 №949548 
>>949525

Ночь через ночь - это 15 дней в месяц надо работать за 8000 р? Я боюсь считать даже сколько там в час выходит. 1 доллар?
Аноним 08/03/17 Срд 22:30:14 #444 №949549 
>>949525

А ты комментарии к задаче и статьи по ссылкам из комментариев прочел? А задания отсюда https://github.com/codedokode/pasta/blob/master/soft/web-server.md решил? А туториал из офиц. мануала прочел?

И не бойся, в видеокурсах сразу с этого начинают, без задач на циферки.
Аноним 08/03/17 Срд 22:45:29 #445 №949567 
14890023295650.jpg 14627334761873.jpg
>>949549
Я таки считаю, что переход к студентам несколько резковат. Но может это и к лучшему, ибо отсеет даунито, которые не могут даже в гугл.
Аноним 08/03/17 Срд 22:52:13 #446 №949573 
14890027340840.png изображение.png
сегодня осознал, что можно делать вот так и подумал, что после того, как перешел с js, немного отупел в плане всяких фишек, укрощающих код, зато поумнел в качестве "хуяк хуяк и в продакшн"
Аноним 08/03/17 Срд 22:54:31 #447 №949577 
>>949573
Ещё можно писать <?= $variable ?>
Аноним 08/03/17 Срд 22:55:56 #448 №949580 
14890029568790.gif awUKO62.gif
>>949573
Ты освоил тернарный оператор? Ну охуеть теперь.
Аноним 08/03/17 Срд 23:01:21 #449 №949585 
14890032813100.jpg forma.jpeg
>>949548 Лол, работаю по такому графику, зарплата 37$, 31 год. Когда в тредах ржут над фрилансерами которые зарабатывают по 100 баксов, я не смеюсь, я им завидую
Аноним 08/03/17 Срд 23:04:05 #450 №949589 
14890034454470.png изображение.png
>>949585
Что мешает не работать так?
Любым копирайтером ты заработаешь тысяч десять в месяц без особого напряга.
Аноним 08/03/17 Срд 23:06:13 #451 №949591 
>>949567
Да если так подумать то и тред тогда нинужен, гугол есть, хули сноб ебаный
Аноним 08/03/17 Срд 23:07:59 #452 №949592 
>>949573
можно, если только тебе на свjих коллег насрать. И на себя тоже.
1) $status = '0'; echo $status == 1 ? 'yes' : 'no' выведет 'yes'. Это раз.
2) статус = 1. Ну заебись. Это что за статус такой? а если там 2 будет - это что значит?
Правильно хотя бы так
<?php echo CategoryStatusConverter::statusToString($category) ?>
где:
class CategoryStatusConverter {
const STATUS_ENABLED = 1;
const STATUS_DISABLED = 2;
public static function statusToString(array $category)
{
if (array_key_exist('status', $category)) {

if ($category['status'] === self::STATUS_ENABLED) {
return 'yes';
} elseif ($category['status'] === self::STATUS_DISABLED) {
return 'no';
}
}
return 'unknown';
}
}
а ещё лучше djj,ot без статических методов обойтись.
Аноним 08/03/17 Срд 23:10:03 #453 №949594 
>>949592
>$status = '0'; echo $status == 1 ? 'yes' : 'no' выведет 'yes'.
обосрался, будет 'no', но остального это не отменяет
Аноним 08/03/17 Срд 23:11:07 #454 №949596 
>>949589
Вся ппроблема работы в сети , что надо пару месяцев сосать хуи без соли, пока набьешь клиентуру.
Аноним 08/03/17 Срд 23:11:15 #455 №949597 
>>949573
>укрощающих код
Это усложняет его восприятие
Аноним 08/03/17 Срд 23:14:42 #456 №949600 
Допустим есть запрос user?id=123 .
Где лучше выполнить ридерект если запрос не валиден? В самой функции проверки на валидность или в контроллере?

function getID()
{

if (isset($_GET['id']) and is_numeric($_GET['id'])) {
return $_GET['id']
}

????
}


function runUser()
{

$id = getID();

//Правильно?
if (!$id) {
redirect...
}

}
Аноним 08/03/17 Срд 23:16:09 #457 №949602 
>>949600
При проверке на валидность.
Аноним 08/03/17 Срд 23:16:25 #458 №949604 
>>949592

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

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

Аноним 08/03/17 Срд 23:18:35 #459 №949605 
>>949602
>При проверке на валидность.
Объясни в двух словах почему, если несложно пожалуйста?
Аноним 08/03/17 Срд 23:21:34 #460 №949607 
>>949602
схрена ли?
задача валидатора - проверить валидность и ответить, валидно ли значение или нет. Но ни в коем случае не редиректить.
Задача контроллера - принять запрос, проверить с помошью валидатора и вернуть ответ. Или вернуть ошибку, если запрос невалиден.
Так что редиректить тут вообще не нужно. Нужно юзеру ошибку вернуть и показать в браузере.
Аноним 08/03/17 Срд 23:26:54 #461 №949612 
>>949607
Проверка на валидность более комплексное действие в общем случае, чем проверка одно айдишника. В целом моя позиция в том, что валидатор должен вернуть тру или фалс в зависимости от результата, + сообщение читаемое.Результат работы обрабатывается в коде, например, контроллера, и при фалсе редиректит куда-илбо. Но сама проверка должна осуществляться валидатором, контроллер, или кто там выше валидатора стоит, должны лишь отрегировать на валидацию.
Аноним 08/03/17 Срд 23:27:01 #462 №949613 
>>949577

ohuet'
я совсем забыл, спасибо.

>>949592

ты совсем поехал?
во первых, работает абсолютно корректно, во вторых, вариантов статуса всего 2. 1 и 0. Ты что, надграфу не можешь почитать? IS VISIBLE. Да и нет. Какие еще варианты? на пол шишечки?

>>949597

в сложных вариантах - да, а тут почти человеческая речь. Статус равняется единице? напечатай да, или нет. Не знаю, все лучше, чем писать огромные if ($qwe == 1) echo '1'; else echo '2';
Аноним 08/03/17 Срд 23:28:05 #463 №949614 
Объясните, пожалуйста, про CMS, типа Joomla и Drupal, что это за зверь такой, и чем они отличаются от обычных веб-фреймворков?

Я всегда писал сайты на фреймворках - CodeIgniter, Yii, Django, ASP.NET MVC, Spring и Play - а сейчас вот предложили работу на Joomla.

Это что ли такой визуальный конструктор типа Delphi?
Аноним 08/03/17 Срд 23:30:24 #464 №949617 
>>949612
Добавлю, что своим опытом выстраданные проекты привели меня к следующей схеме: любое несоответсвие отплевывается в виде жэксепшена, принимаего одни или несколькими обработчиками (чаще всего все же одним), и в связи с этим до контроллера вообще не доходит ничего в случае провала валидации.
Аноним 08/03/17 Срд 23:33:47 #465 №949618 
>>949614
Это способ работатьб слесарем в чужой системе. Когда мы работаем на фреймворках мы и есть творцы системы в целом (бизнес логики). Когджа ты работаешь внутри какой-нибудь цмс ты лишь можешь рядом с этой системой (уже заранее заданной бизнес логкиой) возвести костыль, фиксящий то-то и то-то в самой системе. Но свобода твоя очень сильно ограничена. Вот в этом и разница.
Аноним 08/03/17 Срд 23:34:54 #466 №949621 
>>949614
На вопрос о визуальном контрукторе типа делфи: и да, и нет. Ограничения примерно те же на самом деле, но все же свободы у тебя чуть больше.
Аноним 08/03/17 Срд 23:36:01 #467 №949624 
>>949607
>любое несоответсвие
Зачем вбрасывать исключение при проверке данных введенных пользователем? Исключения нужны только для программистов, чтобы в случае если вся программа по какой-то исключительной причине не может продолжать или выполнить работу.
Аноним 08/03/17 Срд 23:38:10 #468 №949626 
>>949624
Зависит от того, как ты исключения обрабатываешь. У меня большая часть исключений выбрасывается клиенту в виде удобочитаемого сообщения че там и не так. Но я в основном апишник, мне этот момент очень важен.
Аноним 08/03/17 Срд 23:40:46 #469 №949628 
>>949626
А можно посмотреть пример твоих исключений? Для личного опыта.
Аноним 08/03/17 Срд 23:49:40 #470 №949632 
>>9496
Писать легче, но «огромные» условные операторы читать легче. Поймешь, когда начнёшь поддерживать чей то код
Аноним 08/03/17 Срд 23:53:46 #471 №949636 
>>949626
Ну, сорян, мои апи репы закрыты. Если на словах, то суть исключений апишных в том, чтобы в коцне сформировать короткой и понятное сообщение для клиента. притом для меня. Адово помогает в отладке. клиентов много ,апи одно, ты и сам знаешь наверно.
Если его не сформировать, то я и сам не буду знать че там такое произошло прямо. Случаи подобного очень часты. Апи призвано отдавать либо ошибку подробную, либо валидные данные. Тут мимо идут сразу верстка и фронт, а потом эксепшены с моей стороны обязательны, иначе хуй отдебажишь вообще что-либо.
Аноним 08/03/17 Срд 23:55:00 #472 №949639 
>>949636
Ну а с точки зрения клиентов мои ошибки обрабатываются как валидные ответ с отличным от 200 кода.
Аноним 09/03/17 Чтв 00:03:50 #473 №949644 
>>949636
Да я новичок вообще! Мне интересно как правильно должны писаться исключения.
Я обычно пишу так:

if (something wrong) {
throw new Exception("error");
}

Но мне хотелось бы знать как получить с помощью исключений максимально информации! Пока именно даже не знаю какой.

Думаю что нужно наследовать и писать своё исключение, и потом в конструкторе писать все нужные подробности. Но почему-то мне кажется что в конструкторе плохо писать логику исключения.
Аноним 09/03/17 Чтв 00:10:02 #474 №949648 
>>949644
Максимум информации ты получаешь уже в конструкторе исключения. Стак и прочее у тебя дступны силами разрабов самого языка, твое дело отдать наилучшее сообщение при new Exception, корторое ты только можешь, + определить форматирование в завимимости от способа отлдачи (я предпочитаю джейсон апи).
Аноним 09/03/17 Чтв 00:12:21 #475 №949650 
Чето гуглил, не могу найти как настроить роутер, только что бы работало на апаче.
Аноним 09/03/17 Чтв 00:14:51 #476 №949652 
14890076918640.png 14511556474840.png
>>949591
На хуй присядь. ОП очень много объясняет того, чего ты нигде не прочтешь. Но для того, чтобы добраться до кладезя его знаний, гуглом нужно уметь пользоваться. На кой ты вообще нужен, если общедосьупную информацию получить не можешь?
Аноним 09/03/17 Чтв 01:04:41 #477 №949681 
Я как понимаю, мануал пхп для бывалых написан? Я сколько его читаю, понимаю меньше половины.
Аноним 09/03/17 Чтв 01:06:14 #478 №949682 
>>945059 (OP)
Сап, доброкун, а ты не думал перезалить на более качественный хостинг свой проект и сделать там генератор .pdf, .doc, .epub, .fb2 слепка сайта. Ты же вроде еще не бросил учить анонов, а так бы было всем желающим удобно получать все в одном месте, я вот читаю с андроида, оно вроде бы удобно, но иллюстрации распидорашивает и если изначально у тебя была задумка с пошаговым изучением, то затем все меню сайта расползлось куда-то в ебеня, а материал все равно прибывает. Вот если бы ты сделал в более читабельном виде и автоматическую генерацию, то тебе бы не надо было бы каждый раз обновлять весь набор работ, а пользователи бы просто догружали файлы по завершенным "аркам" уроков.
Инб4: сделай сам
Я бы и рад, да пока знаний на этот счет не особо, но если вообще тебе нравится идея, то я бы покопался на этот счет и как найду в себе силы, то готов сделать это вместо тебя.
Аноним 09/03/17 Чтв 01:19:43 #479 №949691 
>>949682
О чём ты говоришь? В мобильном браузере всё прекрасно видно.
Аноним 09/03/17 Чтв 05:41:34 #480 №949761 
Аноны, молю о помощи!

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

http://dushuo.ru

^ Сам сайт. И я так и не смог понять, как сделать отображние материалов, как это обычно идет на всех сайтах - прикрепленное фото с кратким описанием либо началом материала, которое можно увидеть, непосредственно открыв этот материал. У меня почему-то всегда получается простой список заголовков материалов. Пытался читать туторы, решения моей проблемы так и не нашел. Извините, если ошибся тредом, но не мог бы кто-нибудь тезисно объяснить мне, как это сделать? Всем добра.
Аноним 09/03/17 Чтв 08:54:04 #481 №949783 
>>949761
Сделаю вам сайт за 60 штук вместе с дизайном с тем функционалом, что уже есть те без доработок. Предоплата - половина.
Аноним 09/03/17 Чтв 09:06:40 #482 №949786 
Анон, у меня установлена ubuntu 16.04 с apache сервером. Когда пытаюсь зайти через localhost - то все нормально. Но когда ip, то у меня просят логин и пароль. Так вот, отчего это чего этот логин и пароль должен быть? Что ни пробовал - не подходит.
Аноним 09/03/17 Чтв 09:43:43 #483 №949791 
>>949301
Все скриптовые языки похожи, выучил пхп и делать перекат в рельсы или питон уже легко.

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


Для старта, посоветовал бы выбирать что по сложнее и правильнее с точки зрения языка и его патернов. В пхп это Symfony, вроде как.
Аноним 09/03/17 Чтв 10:03:42 #484 №949799 
>>949783
Нашей школе за последние лет 5 учредитель столько денег не дал, откуда такие деньги?
Аноним 09/03/17 Чтв 10:57:00 #485 №949828 
>>949761

сделай условие: если длина материала выше n символов, то проверить, есть ли краткое описание материала и отобоазить его, если такошо нет, то отобразить первые первые n символов материала. И в конце добавь строку с ссылкой на страницу материала, или на расширение статьи. Во втором случае обрезать материал будешь через js и jquery.
Аноним 09/03/17 Чтв 10:58:59 #486 №949829 
>>949761
>>949828

вообще, пиши мне на мыло, если что. Я не заебись спец, но помочь-проконсультировать всегда рад.
sylenien@gmail.com
Аноним 09/03/17 Чтв 11:36:41 #487 №949847 
>>949828
>>949829
Спасибо, анон, сейчас разгребусь с соревнованиями и отчётами и напишу тебе чуть позже. Спасибо за помощь.
Аноним 09/03/17 Чтв 12:21:51 #488 №949875 
>>949761
Сразу видно, что учитель из тебя не очень. Запрягаешь ученика 9 - 11 класса за пятёрку в четверти сделать сайт и всё, проблем нету. Ещё потом и хвастаетесь другим школам, что у вас вот такие ПРОГРАММИСТЫ умные в школе есть. А вообще гугли создание блога на джумле, хотя там всё должно работать хорошо из коробки, но я уверен что весь нужный функционал для сайта будет в таких статьях.
Аноним 09/03/17 Чтв 12:21:59 #489 №949876 
>>949847
а там контента много? Не проще поставить блогодвижок типа postleaf/wordpress?
Ставить жумлу в 2017 это какой-то зашквар
Аноним 09/03/17 Чтв 12:47:33 #490 №949885 
Блин, вот все гонят на пехопешников, а у вас реально самый толковый faq и трэд.
Аноним 09/03/17 Чтв 13:18:23 #491 №949893 
>>949885
Тут всяко интересней сидеть, чем на пхп кодить. Что бы не делать, лишь бы не работать.
Аноним 09/03/17 Чтв 14:01:07 #492 №949906 
Помогите плез, вот у меня есть массив, и я хочу сделать ещё один массив с определённого номера (?)
Например есть ['a','b','c','d','e','f']
И я хочу отсечь всё с номера 3 включительно, так чтобы новый массив выглядел так - ['d','e','f']
Как мне это сделать?
Аноним 09/03/17 Чтв 14:03:08 #493 №949909 
>>949906
https://secure.php.net/manual/ru/function.array-slice.php
Аноним 09/03/17 Чтв 14:04:08 #494 №949910 
>>949909
Спасибо
Аноним 09/03/17 Чтв 14:19:41 #495 №949918 
>>949652
Хуясе ты агресивный. Курс евгеники закнчивал?
Аноним 09/03/17 Чтв 14:25:22 #496 №949921 
>>947642
>Ой, не ту ссылку про MVC дал, вот правильная: https://github.com/codedokode/pasta/blob/master/arch/mvc.md
Спасибо, уже читаю.

Вот ещё вопрос по архитектуре (или чему-то подобному).
На сайте есть таблица в некими полями. Одно из полей предназначено для миниатюр фотографий, которые загружают пользователи. Но как эти файлы лучше хранить? Помещать в БД, вроде, не стоит. Просто хранить в отдельной папке, а в БД сделать таблицу соответствий (Фото164542.jpg - это вторая миниатюра для записи №476)? Или сразу переименовывать (Фото164542.jpg -> Фото164542-2-476.jpg), а потом парсить всю папку силами пхп?
Аноним 09/03/17 Чтв 14:29:08 #497 №949924 
Читаю этот php.net и просто охуеваю, все написано через пень колоду, никакой структуры, никаких мануалов по работе и взаимодействию php mysql apache,спрашиваешь где лучше почитать , что бы не распыляться на миллиард мануалов, сразу прибежал оберштурмбанвахтер с криками "В печь полезай унтерменш!"
Аноним 09/03/17 Чтв 14:31:27 #498 №949926 
>>949893

а на каком языке копить интересно?
Аноним 09/03/17 Чтв 14:31:41 #499 №949927 
>>949921
Я часто работал с такой схемой, что миниатюры и прочие пресеты (у нас их штук 100 на сайте одном было) хранятся по разным путям. То есть например оригиналы по адресу /originals/image-name.png, а к примеру миниатюра 100х100 для этого же лежит в /100x100/image-name.png. Довольно наглядно выходит. Там конечно структура на реальном проекте будет сложнее, но ничего сверхъестественного.
Вариант с названием самих файлов тоже нормальный. В бд, конечно же, изображение лучше не хранить.
Аноним 09/03/17 Чтв 14:40:31 #500 №949930 
>>949927
>миниатюры и прочие пресеты (у нас их штук 100 на сайте одном было) хранятся по разным путям
Это понятно.
>Вариант с названием самих файлов тоже нормальный.
То есть, оптимально будет при загрузке файла добавлять в его название информацию, к чему он относится, а когда нужно прикрепить изображение к странице, парсить имена файлов? А если файлов будет несколько десятков тысяч? У меня ожидается добавление примерно 30-40 тысяч картинок в год и сайт с этим должен работать хотя бы лет пять.
Аноним 09/03/17 Чтв 14:48:44 #501 №949933 
>>949930
Я видимо не понял, какую ты задачу решить пытаешься, ибо при любой схеме с составлением пути или имени файла по каким-то определенным тобой правилам ничего тебе парсить не нужно будет в поисках нужной картинки. Опиши тогда саму задачу подробнее.
Аноним 09/03/17 Чтв 14:56:25 #502 №949935 
Вкатываюсь в кодигнитер
какие подводные?
Аноним 09/03/17 Чтв 15:05:44 #503 №949938 
>>949933
Задача такая:
Для контроля выполнения работы, работнику нужно сделать фото до, в процессе (возможно, несколько) и в конце. Кроме того, проставить время выполнения и некоторую другую информацию. Для этого, сначала менеджер забивает заказ в таблицу заказов и выбирает исполнителя (через интерфейс менеджера). Исполнитель заходит под своим логином на сайт (через интерфейс исполнителя) и видит, что у него образовался заказ, а так же его параметры. В ходе выполнения, он делает фотографии и загружает их на сайт. У них автоматически проставляется время. А менеджер в офисе видит в строке заказа миниатюры. Ну или хотя бы текст типа "2 фото прикреплено", кликнув по котором, можно эти фотографии просмотреть.

На сервере фотографии скорее всего будут сразу ужиматься до некоторого стандартного разрешения и делаться миниатюры. А вот с тем, как потом быстро и удобно прикреплять их к страницам, пока не разобрался.
Аноним 09/03/17 Чтв 15:59:26 #504 №949950 
Да, я ебанутый . Вот создал я такие настройки в апаче.
<VirtualHost *:80>
DocumentRoot /home/lpkn/bogdan-footer
ServerName www.koloda.org
<Directory "/home/lpkn/bogdan-footer">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Как нужно обратится к www.koloda.org в браузере что бы оно показало мои файлы , а не ресурс в интернете?
Аноним 09/03/17 Чтв 16:22:26 #505 №949959 
>>949950
Пропиши в /etc/hosts
127.0.0.1 www.koloda.org
Аноним 09/03/17 Чтв 16:41:37 #506 №949968 
Есть кусок задачи:
"Создайте две страницы сайта, используя технику шаблонов и класс View из предыдущего ДЗ:
1.news.php - отображает список всех новостей. Заголовок у каждой - ссылка на страницу этой новости, под заголовком - краткий текст
2.article.php?id=NNN - отображает новость номер NNN с полным текстом"
Объясните, пожалуйста, как именно должен передаваться get запрос. Переход на article.php ведь осуществляется по ссылке на страницу, а не через <form> с кнопкой.
Аноним 09/03/17 Чтв 16:51:32 #507 №949975 
>>949968
Я даже знаю откуда эта задачка, сам проходил два курса (первый скачал, второй оплачивал).

Гет-запрос передается по умолчанию, когда ты запрашиваешь URL.
article.php?id=<?php echo $article['id']; ?>

Почитай урок по http из шапки, у методов гет и пост применение шире, чем отправка форм.
Аноним 09/03/17 Чтв 17:10:15 #508 №949986 
14890686153090.jpg 85447.jpg
Друзья, помогите 27-летнему вкатывальщику. Я только начал изучать PHP.
Задача стоит следующая, после PDO::FETCH_CLASS, из базы я получаю массив объектов своего класса (длина массива неизвестна). Допустим $clients. У объектов есть несколько свойств включая, допустим $clients->state (бинарная false || true). Теперь мне необходимо создать два цикла, которые позволят мне обработать все свойства объекта. Но дело в том, что в одном цикле должны быть только объекты со значением state == true, а во втором только с фолсами. Проблему можно решить, просто составив два SQL запроса в БД, (вроде SELECT хуй FROM игрушки WHERE state = false). Но мне нутром кажется, что можно не дергать лишний раз базу, а как-то раскидать по двум циклам массив объектов исходя из свойства state. Мальчиков налево, девочек направо. Внимание, как это сделать? http://php.net/manual/ru/language.oop5.iterations.php тут читал, нихуя не понял. Похоже это даже не то что мне нужно.
Аноним 09/03/17 Чтв 17:11:06 #509 №949987 
>>949875
>ДЮСШ
>пятёрку в четверти
Чета обзмеился.
>хвастаетесь другим школам, что у вас вот такие ПРОГРАММИСТЫ умные в школе есть
А потом его заставляют за бесплатно поднимать и обслуживать сайты всем этим другим.

Вообще, >>949761 выглядит неплохо, но тебе с нулевыми знаниями тяжело будет, пиши >>949829 анону полюбасу.

Аноним 09/03/17 Чтв 17:17:49 #510 №949991 
>>949968
Просто прописываешь в ссылке на файл после названия и расширения это ?id='number', это и передает GET запрос. т.е, на новой странице ты уже можешь получить 'number' через $_GET['id]. Мимо несчастный с циклами
Аноним 09/03/17 Чтв 17:30:37 #511 №949995 
>>949986
Смотри внимательно:
https://ideone.com/8ayiln

И иди изучать ОП-пост.
Аноним 09/03/17 Чтв 17:34:38 #512 №949997 
>>949995
Благодарю, то - что нужно.
Аноним 09/03/17 Чтв 17:36:34 #513 №950000 
>>949997
Нет, ты не понял. Ты лезешь в ООП, не зная толком циклы. Советую прорешать задачки из ОП-поста. С самой первой.
Аноним 09/03/17 Чтв 17:45:06 #514 №950003 
>>950000
'к. Порешаю обязательно. Циклы и ветвления я немного знаю, просто похоже действительно сегодня переработал. А ООП сразу, потому что в конторе, сказали приходи через месяц с PDO и ООП и возьмем тебя за еду. В любом случае больше чем есть сейчас.
Аноним 09/03/17 Чтв 21:33:41 #515 №950119 
>>949617
Потом удаляешь все файлы через unlink, подключаешься через сокет к апишке сервера и запускаешь детонатор, чтобы взорвать сервак к чертям. А все потому что пользователь ввел невалидный email.
Аноним 09/03/17 Чтв 21:36:46 #516 №950123 
>>949935
Упереться в его потолок и начать писать к нему костыли.
Аноним 09/03/17 Чтв 22:40:48 #517 №950178 
https://m.hh.ru/vacancy/19804043 налетай.
Аноним 09/03/17 Чтв 22:44:47 #518 №950183 
>>950178
>Умение играть на гитаре и курить план;
Зарепортил в ФСКН.
Аноним 09/03/17 Чтв 22:56:34 #519 №950201 
14890893947870.jpg vovka.v.tridev.tsarstve.avi.image2.jpg
>>949427
Подключил автозагрузчик композера, прописал неймспейсы, орнул когда схватил "class pdo not found", но быстро вдуплил почему.

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

Аноним 09/03/17 Чтв 23:24:27 #520 №950215 
>>950178
https://fastvps.ru/t4u
Накидал за 5 минут, обоссываем:

1)
function count_smileys($arr): int {
$count = 0;
foreach($arr as $smile){
if(preg_match('^[:;][-~]{0,1}[)D]', $smile)){
$count++;
}
}
return $count;
}

2)
function get_volume_of_cuboid($length, $width, $height) {
if (
gettype($length) !== 'integer') ||
gettype($width) !== 'integer') ||
gettype($height) !== 'integer')
) {
return;
}

return $length $width $height;
}

3)
function solution($str) {
$length = mb_strlen($str);

if (($length / 2) == 1) {
$str .= "_";
}

$array = [];

for($i=0; $i<$length; $i++) {
$array[$i] = mb_substr($str, $i, 2);
}

return $array;
}

Гуглил только что такое кубоид, лол.
Аноним 09/03/17 Чтв 23:51:47 #521 №950232 
14890927073340.jpg 14881455484220.jpg
>>950215
Блять , сука, рыгать хочу от вида кода php. Язык как язык, но выглядит просто пиздец.
Аноним 10/03/17 Птн 00:05:27 #522 №950235 
14890935279290.jpg 14879797974833.jpg
Так взялся за студентов, начал читать за роутинг.
"делать роутинг средствами сервера. Для каждой страницы в папке public создается отдельный скрипт (index.php, register.php) и из него либо вызывается соответствующий контроллер, либо прямо там же и пишется код контроллера"
Что за папка public? Это типо public_html на убунте? Что за контроллеры? Их надо писать средствами php? Я нихуя не понял, простите, я туповат, да , на пальцах , примерах только понимаю.
Аноним 10/03/17 Птн 00:18:53 #523 №950244 
14890943338280.jpg 14878019841940.jpg
>>950235
Тут нет другого варианта, кроме как прочитать кучу статей и уроков по теме, попутно пытаясь сначала повторить, а потом сделать свою поделку. У меня на это действительно много времени ушло.

Я учил не по ОП-посту, но там в принципе тоже все есть и объясняется проще чем на хабре.

Удачи.

>>948039-кун
Аноним 10/03/17 Птн 00:33:37 #524 №950260 
>>949935

Старый фрейморк, учит неудачным решениям.

>>949986

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

>>949968

GET-запрос это когда браузер запрашивает страницу с определенным URL с сервера. GET-параметры пишутся после знака вопроса в этом URL. Форма не обязательна.

>>949950

Браузер преобразует имя узла (www.koloda.org) в Ip-адрес этого узла с помощью системы DNS, отправляя запрос на DNs-сервер. Однако, с помощью файла hosts можно указать соответствие имени и IP явно, и в качестве IP прописать адрес твоей машины (127.0.0.1). Тогда браузер будет соединяться с запущенным на ней веб-сервером (Апачом).

>>950215

Это лучше отправить на проверку в ту компанию.
https://github.com/grigoryMovchan/auth/ Аноним 10/03/17 Птн 00:34:04 #525 №950261 
>>950201

Раз у тебя есть папка public, надо бы в нее перенести index.php и сделать ее корневой папкой веб-сервера, а то у тебя весь код наружу выставлен получается.

https://github.com/grigoryMovchan/auth/blob/auth_mvc/db.sql#L25
> ENGINE=MyISAM
Прочитай в интернете различия между движками MyISAM и InnoDB, особенно про поддержку внешних ключей и транзакций

nbproject возможно стоит внести в gitignore целиком. Это же конфиги конкретной IDE, а не часть проекта.

https://github.com/grigoryMovchan/auth/blob/auth_mvc/index.php
> require 'app/bootstrap.php';

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

В твоем варианте bootstrap тут никак не помогает и вообще его правильнее было бы назвать index.php, а не bootstrap.php.

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/models/AuthModel.php
тут все смешано в кучу, все компоненты MVC в одном классе. Да и даже если рассматривать одну функцию, там все перемешано, потому что ты не смог разделить стену кода на отдельные действия-функции.

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

Ну и название - "модель" тоже очень неудачное. Что такое модель, в твоем понимании?

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/core/Model.php
Тут все неправильно с начала и до конца.

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

Далее, у тебя смешано много задач. У тебя базовый клсс модели занимается:

- чтением конфигов
- установкой соединения с БД
- выполнением SQL запросов

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/core/Model.php#L69
> } catch (PDOException $e) {
> //TODO: убрать при переносе на сервер, строка только для отладки
> echo '<p>' . $query . '</p>';
Ты собрался catch и echo ставить после любой функции, которая может выкинуть исключение? Это ведь будет почти каждая функция в программе. И зачем ты выводишь сообщения? Какая польза посетителю твоего сайта от непонятных сообщений на английском?

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

Тебе надо разобраться с исключениями.

https://github.com/grigoryMovchan/auth/blob/auth_mvc/app/core/Model.php#L43
> switch ($type) {
Свитч сделан не очень правильно. Если передать в качестве type неправильное значение (например, из-за опечатки), то твой код притворятся что все в порядке, вместо того, чтобы сообщить тебе что ты передал неправильное значение. Так ошибку в коде придется искать намного дольше.

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

https://github.com/grigoryMovchan/auth/blob/auth_mvc/views/auth/authForm.php
В шаблонах лучше использовать версии операторов с двоеточием, а не фигурными скобками.

> if (isset($error)) {
Это плохой подход. Если у тебя переменная может быть, а может не быть, то очень неудобно писать код.

https://github.com/grigoryMovchan/auth/blob/auth_mvc/views/auth/authForm.php#L12
> @$_POST['login']
@ неправильно тут использовать (и вообще неправильно использовать). Оно подавляет вообще любые ошибки, например, если ты опечатаешься в названии $_POST.

Также, тут XSS.

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

- получить данные из POST
- сделать с ними что-ниудь
- проверить их
- ...
- вывести форму

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

Тебе бы стоило сделать задачу на Вектор, если ты ее не делал. Она в том числе пытается научить этому разделению на части.
Аноним 10/03/17 Птн 00:34:25 #526 №950263 
>>949975

В твоем коде XSS. Почитай урок https://github.com/codedokode/pasta/blob/master/security/xss.md

>>949921

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

Всегда надо сначала сохранять файлы, а только потом записывать в БД, чтобы не было такого, что запись в Бд есть, а файла нет. Удалять в обратном порядке.

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

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

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

>>949786

Скорее всего ты заходишь не на свой сервер. Если у тебя серый IP (10.xxx, 192.168.xxx, 172.16.xxx), то он действует только в пределах локальной сети.

>>949682

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

Насчет переноса, я тоже все хочу перенести сайт хотя бы на github pages, но руки не доходят.

Насчет архивов - в ОП посте есть ссылка на rghost, там какой-то старый архив есть.

>>949681

Мануал это больше справочник, а не учебник.

>>949650

Файл .htaccess нужно настроить. Напиш, что именно тебе нужно. Скорее всего перенаправлять все запросы на index.php
Аноним 10/03/17 Птн 00:34:43 #527 №950264 
>>949644

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

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

>>949636

Для отладки можно использовать логгирование. Или показывать подробности ошибки только на локальном сервере.

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

>>949618

Это (CMS/фрйемворки) просто разные вещи. В бизнесе кстати тоже что-то похожее есть - франшиза называется.


>>949614

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

>>949613

Для 2 вариантов вообще логично true/false использовать.

>>949612

тут есть варианты, что возвращать:

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

>>950235

Папка public это корневая папка сервера, в которой он ищет файлы при обращении к нему.
Аноним 10/03/17 Птн 00:44:49 #528 №950270 
>>950235
Бля, это ОООЧЕНЬ смешная картинка. В голос ржал

>>950215
Можешь скинуть остальные задания? У меня фейковый пдф не хочет грузиться, а интересно проешать.
Аноним 10/03/17 Птн 01:09:40 #529 №950283 
>>950263
>В твоем коде XSS. Почитай урок https://github.com/codedokode/pasta/blob/master/security/xss.md
>
Понял, спасибо. Тогда так
article.php?id=<?php echo htmlspecialchars($article['id'], ENT_QUOTES); ?>

Не знал, что надо фильтровать любые данные, думал только те, которые можно подставить через get или через формы. И сейчас честно говоря пока не понимаю зачем. Если у меня допустим эта переменная лежит в базе (и у этого поля тип INT), то это только чтобы перестраховаться на случай, если злоумышленник влезет в базу или есть еще какие-то способы подменить значение таких переменных?
Аноним 10/03/17 Птн 01:21:15 #530 №950289 
14890980756590.jpg hint.jpg
>>950270
МММ... какие остальные? Если ты имеешь в виду что тебе мешает эта тупая форма на экране, то вот тебе хинт.

Естественно проверить их нельзя никак, увы.
Аноним 10/03/17 Птн 03:13:22 #531 №950318 
14891048027320.png 2.PNG
14891048027331.png Снимок.PNG
PHPч, ПАМАГИ! Я заебался. Использую XAMPP для функций апача и MySQL, у него для работы с БД (MySQL) встроенный phpMyAdmin. Как нужно корректно определять кодировку при создании БД в phpMyAdmin в браузере, чтобы непосредственно на моём сайте, который вытаскивает данные из MySQL кириллица отображалась нормально, а не "??????"?
Нужно указывать сравнение или выбирать какую то конкретную кодировку?
Алсо, я видел в интернете на десятках источников предлагают непосредственно в PHP при каждом соединении с БД устанавливать кодировку на сессию, но разве это выход? Это ж накладные расходы по времени при каждом соединении.
Аноним 10/03/17 Птн 04:34:21 #532 №950328 
>>949829
Прости, анон, что не написал вчера и, скорее, всего, не напишу сегодня. Просто Я ДОЛЖЕН ПРОИЗВЕСТИ ИНВЕНТАРИЗАЦИЮ ВЫБРОСОВ ВРЕДНЫХ ВЕЩЕСТВ В АТМОСФЕРНЫЙ ВОЗДУХ.
>>949875
У нас школа другого плана.
>>949876
Да я вообще хотел сделать сайт на укозе каком-нибудь, кому какая разница? Но нет, директор хочет сайт на домене второго уровня, и сам сайт заказал у каких-то левых типов.
Аноним 10/03/17 Птн 07:30:32 #533 №950356 
>>950328

да ничего, пиши когда время будет. Я тоже тут увяз в лаборатории.
Аноним 10/03/17 Птн 10:17:01 #534 №950407 
14891302210980.jpg 1.jpg
14891302211011.jpg 2.jpg
>>950318
Аноним 10/03/17 Птн 11:00:38 #535 №950424 
>>950244
Можешь немножко отсыпать статей?
Аноним 10/03/17 Птн 12:30:00 #536 №950458 
>>950263
>Файл помещаем на диск, после этого в таблицу - относительный путь к нему. Для уменьшенной картинки можно либо формировать путь из пути к основной, либо хранить в базе оба пути.
>Всегда надо сначала сохранять файлы, а только потом записывать в БД, чтобы не было такого, что запись в Бд есть, а файла нет. Удалять в обратном порядке.
>Так как у тебя к записи можно приложить несколько картинок, нужна отдельная таблица для них.
>Еще какие-то полезные вещи могут быть в комемнтариях к задаче про файлообменник в ОП посте.
В общем, понятно. Буду делать таблицу.
Аноним 10/03/17 Птн 14:24:05 #537 №950542 
>>950263
>Файл .htaccess нужно настроить. Напиш, что именно тебе нужно. Скорее всего перенаправлять все запросы на index.php
Задачка про студентов.
Аноним 10/03/17 Птн 14:30:17 #538 №950550 
>>950215
Вот ты не вбросил текст заданий и зря - мне попались другие. Твоё 3-е на JS в одну строку:
let third = (str) => str.concat('_').match(/.{2}/g);
https://jsfiddle.net/ans4w1q1/
По второму: непонятно почему ты запрещаешь использовать float/double - в PHP есть функция is_numeric. Твоё первое задание не понял.

>>950270
В исходном коде страницы (Ctrl+u в Firefox) можно найти задания.
Но я посоветую зайти хотя бы на codewars - там задания в меру сложные, но без олимпиадного задротства как на codeforces.
Аноним 10/03/17 Птн 14:31:40 #539 №950551 
Кстати, я недавно видел статью адепта реакта, так он пел что MVC - все , пойте отходную, что веб эволиционировал на новую ветвь и что mvc - крик неондертальца которого словили кроманьельцы и режут его на ремни.
Аноним 10/03/17 Птн 14:33:01 #540 №950553 
>>950551
Хуле фронточервь может о вебе в целом знать?
Аноним 10/03/17 Птн 14:54:29 #541 №950571 
>>950551
И что он там взамен предлагает? MVC в вебе штука настолько удобная, что я вот никак не пойму какие там альтернативы могут быть.
Аноним 10/03/17 Птн 14:55:11 #542 №950574 
fetchAll(PDO::FETCH_CLASS, 'Student') – ругается на конструктор, так как все свойства, кроме id обязательны (он не нужен при регистрации), так вот как этого избежать? конструктор нужен в других случаях, если все поля на = null, то появляется уязвимость в других случаях. Знаю про | PDO::FETCH_PROPS_LATE и третий парапетр у fetch (можно как-то туда сами поля из БД передать?), но как тут это может помочь? Пока сделал все параметры конструктора необязательными
Аноним 10/03/17 Птн 14:56:31 #543 №950577 
>>950571
Он, небось, намекает на ивент драйвен в духе ноды (аналоги уже повсюду есть). Но тут такое. Где-то будет лучше, где-то будет хуже такой подход. Поидее фронт это не должно беспокоить, просто жсеры обязательно играются с нодой, и вот результат.
Аноним 10/03/17 Птн 14:57:08 #544 №950579 
>>950571
Flux, xuяx. Ебать, я думал тут никого нет, а вам просто западло отвечать.
Аноним 10/03/17 Птн 15:01:47 #545 №950583 
>>950577
Лет 10 назад все ржали над жс, теперь просто достают елду и начинают молча, мрачно и сосредоточенно дрочить на его достижения и возможности.
Аноним 10/03/17 Птн 15:01:49 #546 №950584 
Какие плагины юзаете для хрома?
Устарели ли сейчас сессии?
Аноним 10/03/17 Птн 15:07:10 #547 №950587 
>>950579
>Flux
Ой, ебал. Прямо вся суть жспетушни - "выучи стопицот фреймворков и еще по десятку в месяц учи и получи работу за еду".
Аноним 10/03/17 Птн 15:07:51 #548 №950588 
>>950583
Лет 10 назад я еще не знал, что в эту тему залезу.
Пописываю на ноде микросервисы, выполнить на ней здоровущий проект с жесткой бизнес логикой желания не возникает, во всяком случае сейчас. Продроченным жсерам либо похуй, либо они идейно сопротивляются присутствующим неудобствам. Редуксы ваши тут тоже не серебряная пуля нихуя, да и не ново это ниразу.
Аноним 10/03/17 Птн 15:22:12 #549 №950595 
>>95058
Хе-хе, самое смешно что я так и не получил удобоваримого объяснения что такое flux. Идея MVC зато проста как лопата. >>950588 А что было раньше.
Срачи разводить вы горазды, зато вопрос задашь - как хуев в рот набрали , хоть бы одна жопа пернула.
Аноним 10/03/17 Птн 15:41:15 #550 №950601 
Начинаю вкат в PHP, как записать в переменную результат работы массива? Голову изломал уже.
Аноним 10/03/17 Птн 15:44:27 #551 №950605 
>>950601
> как записать в переменную результат работы массива?
Это как вообще?
Аноним 10/03/17 Птн 15:44:50 #552 №950606 
>>950550

> let third = (str) => str.concat('_').match(/.{2}/g);
чем это лучше чем

funcion third(str) { ... }

Аноним 10/03/17 Птн 15:46:15 #553 №950607 
>>950601
>результат работы массива
Как это?
Аноним 10/03/17 Птн 15:46:33 #554 №950608 
>>950605
Блин, не то написал, результат работы цикла, в голове просто вертелся вариант решения через массив
Аноним 10/03/17 Птн 15:51:12 #555 №950610 
>>950595

Вообще, если погуглить, можно найти описание: https://facebook.github.io/flux/docs/in-depth-overview.html#content

Сначала конечно надо изучить реакт, так как эта система под него заточна. Реакт, как известно, это библиотека, реализующая view, а flux видимо должен помочь реализовать остальные части.

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

Я особо в нее не вникал и что-то прокомментирвоать трудно. Если кто-то хочет на флуксе и реакте сделать задачу на SPA из Оп-поста - всегда пожалуйста.
Аноним 10/03/17 Птн 15:54:05 #556 №950612 
>>950608
В смысле как записать? Берешь и записываешь. Покажи лучше задачу что ты хочешь реализовать.
Аноним 10/03/17 Птн 15:55:35 #557 №950613 
>>950612
http://ideone.com/Dxi4VP
Аноним 10/03/17 Птн 16:06:36 #558 №950626 
14891511965790.jpg 14851841526352.jpg
Бляяяять, а классы, классы где?! Полез блять читать пасту про MVC, а там с ходу классы пошли. Все мое терпение лопнуло, дайте мне просто ссылок на нормальные книги где все струтурировано, я знаю что я тупой и немогу в гугол, и можно было все найти , но я так не могу.
Аноним 10/03/17 Птн 16:16:18 #559 №950631 
>>950606
Cуть не в стрелочных функциях, они там только ради читабельности. Суть в том, что для решения той задачи не нужны цикл+иф как у того анона, достаточно коротенького регулярного выражения.

>>950626
Ну а чего ты пропускаешь темы, вот паста про ООП и задачи: http://archive-ipq-co.narod.ru/l1/pasta.html
Аноним 10/03/17 Птн 16:21:52 #560 №950636 
>>950613
Короче, решил вот так запилить, есть другие варианты решения?
http://ideone.com/Dxi4VP
Аноним 10/03/17 Птн 16:34:30 #561 №950647 
>>950595
Работать закончил, покормлю.
А нахуй тебе нужно спрашивать про флукс, если ты сам знаешь что это?
В двух словах способ управления данными, основанный на хранилище (хранит модели и работает с ними), диспетчере (регистрирует и дергает ивенты между хранилищем и вьюхой), ну и вьюха, которая без задней мысли в любой непонятной ситуации перерендеривается по причине изначальной ориентации на реакт.
Пойдем дальше. Этот инновационный паттерн родился по той причине, что некоторые фронты чувствовали потребность в решении извечной проблемы "МЫ ЗАПУТАЛИСЬ В СВОЕЙ ЛАПШЕ, СПАСИТЕ". Проебываем и еле находим состояния во всяких ангулярах, нокаутах и прчоем, скопы все перемешались и ебут друг друга в жопу и уже нет архитектуры, просто каша, да ко всему нормального паттерна для работы с новой мокрой писечкой реактом нет, а без гайда мы удобную архитектуру выстроить не в состоянии - и тут снизошло откровение от фейсбучных гуру "а давайте все данные держать в куче и изолируем их нахуй".
На самом деле ничего плохого, удобство присутствует, и фронт пилить в этом стиле очень даже неплохо, но и новизны тут особой нет, просто фанатичные жсеры снова подхватили велосипед с неуемной энергий и в лучших традициях баранов пытаются притащить свою моду в каждый чужой монастырь. А идея, тем временем, не нова, и встречалась во множестве проектов, где оказывалась к месту. У меня на работе в одном из приложений на андроид реализована практически такая же архитектура для некоторых целей. Все просто и наглядно, притом о флуксе вообще никто не думал, когда пилили. Была задача - нашлось ее решение. И все же это не спасительная таблетка.
Теперь к изначальному тезису - мвс в вебе качается не только фронта. Переходим к беку - там у нас, во первых, есть самые настоящие хранилища в виде бд и слоя с моделями на любом фреймворке, не в дикие времена ведь живем. А вот нахуя изобретать диспетчер событий, когда у нас в целом исполнение приложения линейное? В реализациях схожих с нодой (а этого добра уже прилично) это тоже нахуй не уперлось, т.к. в беке вьюха не занимается тем, что судорожно перерисовывается на каждый чих, и отдельно взятый запрос все равно остается линеен, не говоря уже о том, что значимая часть бекенда это различные апи и им в принципе нихуя рендерить не нужно. Вебсокеты всякие и без того сильно отличаются от обычного бекенда, так и там хранилищем выступает какой-нибудь редис, у которого и так под любой изврат из коробки находится решение, и вьюх тут вообще не существует. Впрочем тут еще концепция флукса сама собой хорошо проявляет себя. В целом в беке как было удобно мвс, так и осталось. Флукс сюда тащить попросту не за чем, это наркомания самая настоящая.
Аноним 10/03/17 Птн 16:53:16 #562 №950658 
>>950595
Жабогосподин в треде, приходилось недавно в проекте работать с React+Redux+TypeScript, как же заебала эта параша.

Суть там в SPA, т.е. вместо нескольких страниц существует одна, которая динамически меняется (т.е. ее DOM). Например, убирается окно логина (в виде <div> компонента), отображается другое окно, с профилем пользователя. Плюс у каждого компонента хранится состояние, ну типа чтобы реже обращаться к базе.

На MVC с шаблонами все это реализуется намного проще, а данные из базы можно кэшировать. Но хуесосы весь фронтенд перевели на этот Flux (Redux - одна из его реализаций). Ебал я в рот это говно.
Аноним 10/03/17 Птн 17:00:15 #563 №950660 
Подскажите сайт на котором сравниваются репозитории на гитхабе по количеству коммитов, старту разработки и т.д.
Натыкался на него, когда набирал в гугле КОСТЫЛЬ1 vs КОСТЫЛЬ2, а сейчас не могу найти.
Аноним 10/03/17 Птн 17:01:40 #564 №950661 
>>950583
JS как был недоязыком уровня бейсика, так и остался. Еще лет через 10 в каждом браузере будет WASM, и от него наконец-то избавятся.
Аноним 10/03/17 Птн 17:04:07 #565 №950663 
>>950658

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

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

Вообще, у меня такое ощущение, что реакт делался не для полноценных SPA приложений, а для мини-приложений, интерактивных интерфейсов в рамках страницы. Чтобы там можно было нажимать кнопки, и менялись какие-то циферки.
Аноним 10/03/17 Птн 17:06:07 #566 №950664 
>>950661

Я тут вижу кучу недостатков:

- у wasm кода нет доступа к DOM, значит JS-прослойка нужна
- wasm код это результат компиляции, неудобно при разработке, после любой правки надо перекомпилировать код, в то время как с JS таких проблем нет

Так что я за то, чтобы не заменять JS, а не использовать его без надобности, а если использовать, то писать правильный код, а не брать вкатывальщика, который до этого работал менеджером по продажам и единственный его талант - врать не краснея.
Аноним 10/03/17 Птн 17:10:47 #567 №950667 
>>950647
>В двух словах способ управления данными, основанный на хранилище (хранит модели и работает с ними), диспетчере (регистрирует и дергает ивенты между хранилищем и вьюхой), ну и вьюха, которая без задней мысли в любой непонятной ситуации перерендеривается по причине изначальной ориентации на реакт.
Нихуя не понял, а чем оно от мвц отличается?
Аноним 10/03/17 Птн 17:15:15 #568 №950669 
>>950664
> у wasm кода нет доступа к DOM
Это допилят, JS ведь тоже хотят запускать через WASM. Значит, будут все возможности.
>wasm код это результат компиляции, неудобно при разработке, после любой правки надо перекомпилировать код
Пакетный менеджер будет компилить и запускать. Как сейчас TypeScript, по одной команде npm start выполняется пересборка и запуск.
Аноним 10/03/17 Птн 17:23:10 #569 №950676 
=> Это что для создания клюей в массивах?
Аноним 10/03/17 Птн 17:29:44 #570 №950677 
>>950661
Лол чем хуев JS? Обычный язык, проблема то в вебе. Натаскали хворосту , хуев собачих, говен кошачих, и все шо было в доме и давай кашу из топора варить. Кто шо хочет, то и кидает в каструлю.
Аноним 10/03/17 Птн 17:30:23 #571 №950678 
>>950667
У тебя нет контроллера. У тебя есть вью, есть модель и хранилище. А еще есть диспетчер, принимает события от вьюхи и регистрирует события на изменения хранилища. Вьюха (обычно через фабрику называемую action creator) отправляет события диспетчеру, тот на них реагирует, харнилище чего-то там с моделями творит, по итогу зарегистрированные на изменения события вызываются, и по канону связанному с реактом вьюха без всяких подумать просто перерендеривается целиком (типа так можно, потому что реакт на виртуальном доме работает, там оверхеда нет для реального дома при рендере)
Аноним 10/03/17 Птн 17:33:49 #572 №950683 
>>950678
>отправляет события диспетчеру
Правильнее даже сказать команду.
И да, это во многом очень похоже на мвс.
Аноним 10/03/17 Птн 17:38:57 #573 №950686 
>>950667

Она похожа, но там есть разница. В MVC контроллер может дергать любые методы модели, получать данные, менять данные. А тут у нас есть диспетчер, и у него N методов для изменения данных в модели. То есть диспетчер + хранилище примерно соответствуют модели из MVC. Через диспетчер ее можно менять, с другой стороны view ее может читать.

И важный момент в том, что сторы подписываются на события в диспетчере.

Вообще, я плохо это все представляю, как например там делаются формы и валидация. Где хранятся данные формы, как валидируются, как выводятся ошибки, и тд.

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

Аноним 10/03/17 Птн 17:40:41 #574 №950687 
>>950677
Python намного продуманнее. Например, там нет автоматического преобразования типов.
Аноним 10/03/17 Птн 17:42:33 #575 №950690 
>>950669

Так это и есть неудобно. Смотри сам:

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

В случае с wasm отлаживать вообще придется ассемблер.

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

А может какой-нибудь маньяк додумается сделать фреймворк, чтобы вместо HTML сделать канвас на весь экран и на нем рисовать сайт с помощью wasm. Преимущества: нельзя масштабировать, прокрутка работает так как решил автор кода, нельзя выделять текст, сохранять картинки, блокировать рекламные баннеры.

О, а еще можно скопилировать вебкит в wasm чтобы избавиться от разницы в поддержке технологий браузерами.
Аноним 10/03/17 Птн 17:48:40 #576 №950694 
>>950687

И тайп хинтов нет. Там вообще статической типизации нет.

Вот мне интересно, а как работают с большими проектами на Питоне? Можно ли в IDE кликнуть по методу и перейти к его определению?

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

$doctrine = $container->get('doctrine');
$doctrine->method();

Она не знает класс объекта $doctrine и не может перейти к method. ПРиходится копировать имя метода, и вызвать диалог "Search method", где он и ищется.

Для сравнения, Sublime text 3 не анализирует код, а лишь индексирует имена методов и классов. И он умеет переходить к определению, ища метод по имени. Правда, если там распространенный метод вроде get, он вываливает список всех классов, где он определен, что минус.

В общем, я плохо представляю как с большими проектами на Питоне работать. А как понять, данные каких типов нужны функции?

Плюс, там меня напрягает необходимость писать self в методах. что за атавизм?

Из тех языков, которые хорошо реализованы - это наверно C#. Вижуал студио делает полноценное автодоплнение, умеет переименовывать методы, и перед каждым методом даже пишет, сколько раз он используется.
Аноним 10/03/17 Птн 17:48:54 #577 №950695 
>>950678
> А еще есть диспетчер, принимает события от вьюхи и регистрирует события на изменения хранилища.
Короче, это когда бородые хипстеры объебались перебродишим смузи и решили переименовать MVC.
Аноним 10/03/17 Птн 17:50:09 #578 №950698 
>>950695
Примерно. Потому что с mvc в том же ангуляре справиться было непосильной задачей.
Аноним 10/03/17 Птн 19:01:56 #579 №950753 
>>950698
>с mvc в том же ангуляре справиться было непосильной задачей.
Это еще почему?
Аноним 10/03/17 Птн 19:03:03 #580 №950756 
>>950264
Я откуда знаю, у повернутых фронтов спроси. Мне норм все было.
Аноним 10/03/17 Птн 19:03:23 #581 №950757 
>>950756
->
>>950753
Аноним 10/03/17 Птн 19:08:00 #582 №950765 
>>950550
спасибо! не знал про codewars
Аноним 10/03/17 Птн 19:12:57 #583 №950771 
>>950574
прошу помочь
Аноним 10/03/17 Птн 19:40:47 #584 №950799 
>>949624
>Зачем вбрасывать исключение при проверке данных введенных пользователем?
Низачем. Не слушай наркомана. Кидать исключение при неправильном заполнении пользователем формы это bad practice. Суть исключений в том, чтобы выбрасывать их, когда ход программы пошел не так, как было задумано - т.е. против твоего изначального замысла. А ввод пользователем неправильного имейла или формата телефона не должен выбрасывать исключений, это абсолютно регулярное и постоянно происходящее, нормально, адекватное событие. То что кто-то оформляет таким образом обычные сообщения о неправильно заполненной формы очень и очень дебилистичностранно. Можно таким же образом вообще без вьюшек обойтись и бросать исключения тут и там. Но исключения предназначены не для этого.
Аноним 10/03/17 Птн 19:49:37 #585 №950801 
>>950799
Хз, мне охуенно удобно. До этого было без исключений, был ад. Речь о внешнем рест апи, вьюхи я хз нахуя ты приплел.
Аноним 10/03/17 Птн 20:09:51 #586 №950807 
14891657920250.jpg 145769997816967466.jpg
>>950687
Lisp тоже продуманый и че? Тут же как в той пасте про перфициониста выдрачивающий продукт и васян четкий который выбросил продукт самый первый. Продукт выброисл на рынок корявый и забаженый, но первый. И пока перфик выдрачивал свой продукт еще, вася четкий патчил свое поделие и выпускал обновления. И пока перфикцтонист доедал хуи без соли, васян разбил второй лексус.
Бля сука, ну я пишу откровеную хуйню, а вы блять на обычный вопрос не отвечаете.>>950676
Аноним 10/03/17 Птн 20:10:25 #587 №950808 
существуют ли в природе удобные редакторы для похапе?
phpstorm клевый, но пока он запустится, пропадает желание кодить.
Пользуюсь brackets что на линуксе, что на виндовсе, и вроде бы все неплохо, но он ориентирован на фронт + недостает автоподставлений имен функций итд.
Аноним 10/03/17 Птн 20:13:01 #588 №950810 
>>950807
Да.
Аноним 10/03/17 Птн 20:26:13 #589 №950822 
Vim, Emacs. Только прийдется "немножко" повозиться))
Аноним 10/03/17 Птн 20:54:58 #590 №950845 
>>950808
PHP storm IDE а не редактор.
Там можно не только набирать код, но и подключить те же базы данных, композер, в нем есть консоль. Автодополнение переменных с баз данных, опять же. Там встроен GIT, и UI к нему оформлен просто отлично. Можно коммиты на гитхаб отправлять, прямо из редактора. Да много чего, проще сказать что он не делает.
Аноним 10/03/17 Птн 21:03:24 #591 №950854 
>>950845

тормозит
прям ужасно. Пока запустится - я умру. У меня атом, обмазанный тем же функционалом, запускается быстрее и работает идеально, но я от него отошел, т.к пересел за бракетс. В нем идеально все, кроме автозаполнения я по невнимательности иногда допускаю мелкие ошибки и в итоге все ломается к чертям
Аноним 10/03/17 Птн 21:04:59 #592 №950855 
>>950822

пропустил твой ответ.
Вим не очень хочу, т.к он довольно-таки своеобразный и надо выделять пару дней на его изучение, чтоб нормально в нем работать, а потом еще пару, чтоб дополнения, а потом я еще свое захочу написать, в итоге забуду зачем он мне.
Аноним 10/03/17 Птн 21:17:46 #593 №950859 
>>950854
Нетбинс попробуй, только качай только пакет где хтмл/цсс+пхп+жс что бы не тормозило. По части всяких автодополнений годнота не хуже шторма, но всякие фишки типа встроенного гита и композера похуже, естественно. Зато швабодно и шустро работает.
Аноним 10/03/17 Птн 21:46:11 #594 №950878 
>>950574
>>950771
решил все PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE и массив с null-значениями третьим параметром
Аноним 10/03/17 Птн 23:37:28 #595 №950947 
14891782482800.jpg 14838017803793.jpg
Я вот чего понять не могу. Вот есть у тебя класс, охуеный такой класс, здоровый сука, на странице MySweatPussy.php и тебе например нужно в другом файле YouBigCock.php унаследовать етот класс или как нибудь с ним взаимодействовать, как происходит это соитие? И вообще эта раскиданость по разным страницам программы просто сбивает с пантелыку, как вы с этим спраляетесь?
Аноним 11/03/17 Суб 00:17:19 #596 №950955 
>>950947
https://github.com/codedokode/pasta/blob/master/php/autoload.md
Аноним 11/03/17 Суб 00:34:49 #597 №950959 
Кто нибудь может подсказать мануал по функции header()? Интересует, что интересного с ней можно сделать, помимо написанного на php.net и w3schools
Аноним 11/03/17 Суб 00:53:01 #598 №950963 
>>950959

А ты знаком с протоколом HTTP и таким понятием как "заголовки ответа"? header просто добавляет заголовок к HTTP-ответу. Также она может задавать код статуса (404, 503, 302 и тд).
Аноним 11/03/17 Суб 01:18:57 #599 №950972 
Привет, анон. Не могу понять, RewriteBase нужен только при внешнем редиректе? Почему вне зависимости от того указываю я его или внутренний редикт работает правильно?
Аноним 11/03/17 Суб 01:24:34 #600 №950975 
>>950972

Он был нужен в Apache 2.2, если реврайт делается не в корне сайта, а в папке в нем. Ну например если мы хотим реврайтить /folder/x на /folder/x.php и htaccess находится в /folder.

В Apache2.4 не нужен.
Аноним 11/03/17 Суб 03:13:12 #601 №951000 
>>950845
Попробовал в нетбинсе подключится у БД, охуенно удобно. Даже не знал о такой функции.
Аноним 11/03/17 Суб 03:17:48 #602 №951002 
>>951000
А как ты это сделал? Гит да, композер да, но бд как? А то я mysqlworkbench юзаю.
Аноним 11/03/17 Суб 03:44:11 #603 №951007 
Разделители в виде скобок не нужно экранировать, если они также используются как метасимволы в шаблоне, но как и с другими разделителями их нужно экранировать, если они используются непосредственно как символы.
>экранировать
Это как? Что значит экранировать? Ещё одни скобки поставить?
Аноним 11/03/17 Суб 03:46:04 #604 №951009 
>>951007
>квантификатора
И это что?
Аноним 11/03/17 Суб 03:47:39 #605 №951010 
>>951009
Извиняюсь за несколько сообщений сразу, просто пока я читал эти слова, вызвал сатану.
>квантификатор, означающий 1 или более вхождений
Вхождений чего и куда?
Аноним 11/03/17 Суб 03:51:03 #606 №951011 
>>951007
>>951009
>>951010
Все, Сатана мне всё разъяснил.
Аноним 11/03/17 Суб 03:52:32 #607 №951012 
Погромисты, как html c css в формат libre office или еще какого опен офиса перегнать? Дали задание веб-сервис продокументировать и в pdf загнать, а там только html/css экспорт. Импортил его в libre office, чтоб дальше редактировать, весь css по дороге теряется, остается один html. Его естественно в pdf не заэкспортишь, ибо все вкривь и вкось. Может кто сталкивался?
Аноним 11/03/17 Суб 10:36:50 #608 №951054 
14892178105600.jpg 14223036241641161384.jpg
Лол, а я думал я один такой уникальный что повелся на МОЩНОСТЬ и ПРОСТОТУ python, только никто не пишет что он ниразу не востребован.
Аноним 11/03/17 Суб 10:39:45 #609 №951055 
>>951002
Вкладка Service в окне, где ты смотришь файлы проекта
Аноним 11/03/17 Суб 11:34:23 #610 №951076 
14892212636510.jpg 14838024928270.jpg
Читаю вот эту пасту https://github.com/codedokode/pasta/blob/master/arch/mvc.md
и вот там есть такая функция
public function addPost(Post $post)
{
// Проверим, что объявления еще нет в списке
if (null !== array_search($this->posts, $post, true)) {
throw new \Exception("Post already added");
}
Что обозначает (Post $post) ? Из переменой зразу лепят обьет класса Post?
Аноним 11/03/17 Суб 12:41:56 #611 №951097 
>>951012
открой свою залупу в хроме, нажми ctrl+p, выбери печать в пдф и не еби себе мозги
Аноним 11/03/17 Суб 13:16:27 #612 №951128 
>>951076
Означает, что аргументом может быть только объект класса Post
Аноним 11/03/17 Суб 13:42:33 #613 №951153 
>>951076

Это тайп-хинт: http://php.net/manual/ru/functions.arguments.php#functions.arguments.type-declaration

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

Он делает код понятнее и защищает от ошибок.

>>951054

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

Ну а оценить востребованность по моему нетрудно поиском на сайте с вакансиями.

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

>>951012

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

>>951010

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

Это слово используется примерно так: "в строке abcabc найдено 2 вхождения подстроки bc". "Подстрока" - значит часть строки.

Квантификатор - это символ, указывающий на то, что предыдущее выражение может повторяться. Например, плюс, звездочка: a+ значит "1 или более повторений буквы a".

Аноним 11/03/17 Суб 13:46:40 #614 №951159 
14892292005950.jpg xfd361c03.jpg
>>951055
Спасибо, нашел. Действительно прикольная штука, все необходимые действия с базой легко доступны. Не вижу только где делать экспорт/импорт, ну да и хуй с ним.
Аноним 11/03/17 Суб 13:52:28 #615 №951166 
>>951007

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

a+ - значит должно быть 1 или больше повторений буквы a
a\+ - значит искать символы a и плюс, без какого-то специального смысла

При экранировании надо учесть, что бекслеш имеет специальное значение в строках в одинарных и двойных кавычках: http://php.net/manual/ru/language.types.string.php

Ну например, \$ вставляет в строку просто знак доллара:

echo "\$"; // выводит $

Допустим мы хотим в регулярке искать знак доллара. Так как это спецсимвол, мы должны его экранировать как \$. Но если мы напишем "\$" то PHP создаст строку из символа доллара, без слеша. Потому мы должны дополнительно заэкранировать бекслеш, чтобы он передался как есть:

echo "\\$"; // выводит \$

Эти сложности из-за того, что бекслеш используется для экранирования на 2 уровнях:

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

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

\\

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

echo "\\\\"; выведет \\

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

echo <<<'EOF'
\\
EOF;

выведет \\

Аноним 11/03/17 Суб 14:28:40 #616 №951190 
>>950855
>>950808

Sublime Text 3 не тормозит, но это просто редактор, не IDE.

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

Он умеет переходить к определению класса или функции.

Автодополнение только по словам из текущего файла.

>>950807

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

>>950801

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

list($error, $result)= $service->doSomething($data);

if ($error) {
вернуть ответ с ошибкой
} else {
вернуть $result;
}

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

>>950799

Еще эта система с исключениями не работает, если тебе надо вернуть информацию о нескольких ошибках.

Аноним 11/03/17 Суб 14:55:09 #617 №951209 
14892333095170.jpg 1461701138121037347.jpg
>>951159

Я еще у себя включил синхронизацию с ФТП, тоже очень удобно, сохранил файл и он сразу обновился на сервере. Также недавно начал коммитить в гит прямо из нетбинса без юзанья командной строки.
Аноним 11/03/17 Суб 15:37:45 #618 №951228 
>>951190
Было тоже самое, что ты с возвратом описал. Попросту менее читаемо и все равно требуется обработчик исключений для перехвата говна, прилетевшего с чужого кода. Насчет качественно не качественно - работает стабильно, занимаюсь только поддержкой и пробросом новых маршрутов, на все уходит по несколько минут, в правках не нуждается, создание нового маршрута в среднем занимает строк 10 (в минимальном виде всего одну вообще).
Я тут еще много написал про внутреннюю работу, потому что критика (множество ошибок, логирование и тд) хз с какой колокольни берется, но стер. У меня исключения обеспечивают самую гибкую и при этом простую работу с ошибками из всех, что я видел. Но я не смогу в этом убедить авторитетов этого треда, так что впизду простынями тут расшаркиваться еще.
Пускай я буду говнокодером и закроем эту тему, потому что от выстраданного за 1.5 года опыта работы над такими задачами я от исключений в этом контексте не откажусь, как от наиболее прозрачного механизма возврата ответов с отличным от 200 кода. Сириусли, не убедите, просто останемся при своем. Новичкам тогда не советую, раз людям так моя система не нравится. Уточню еще, что говорил я об апи, для сайтов самих я такую схему не использую.
Аноним 11/03/17 Суб 15:56:39 #619 №951236 
>>951228

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

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

Аноним 11/03/17 Суб 15:58:39 #620 №951238 
Тут всё нормально? http://ideone.com/KJNmR1
Как-то ОП заскакал: это просто, а потом начинается адовый трэш, угар, содомия, вектор, вектор, пидор.
Аноним 11/03/17 Суб 17:10:10 #621 №951322 
>>951238
Я еще эту залупу не проходил, но почему у тебя 15 из 45 баллов
Аноним 11/03/17 Суб 17:16:33 #622 №951326 
Добро пожаловать в нашу Telegram-конференцию!:
https://t.me/joinchat/AAAAAAlT02py0soe6xnbMw
Сотни талантливых программистов легко помогут вам в освоении РНР!
Аноним 11/03/17 Суб 18:03:06 #623 №951360 
>>951322
Потому что за первый ответ даётся 10 баллов, за второй 5, а за третий 30.
Ошибка в третьем ответе, поэтому всего 15 баллов.
Аноним 11/03/17 Суб 18:50:16 #624 №951408 
>>951238

Все верно.

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

Аноним 11/03/17 Суб 19:09:44 #625 №951424 
>If an object is converted to an array, the result is an array whose elements are the object's properties. The keys are the member variable names, with a few notable exceptions: integer properties are unaccessible; private variables have the class name prepended to the variable name; protected variables have a '' prepended to the variable name. These prepended values have null bytes on either side.*

Божечки, во что я ввязался...
Аноним 11/03/17 Суб 20:12:42 #626 №951457 
Что будет, если a="skjd"; a[999]="h"? Не нахожу ответ в англоязычном мануале.
Аноним 11/03/17 Суб 20:21:05 #627 №951465 
>>951457

Ты пропустил знак доллара, и проще всего запустить код и проверить.

>>951424

Это преобразование лучше бы вообще не использовать, как мне кажется.
Аноним 11/03/17 Суб 20:46:52 #628 №951482 
http://ideone.com/Rhv7hZ

А-а-а-а-а-а-а-а!

>>951465
>и проще всего запустить код и проверить.

Так и сделал. Строка не расширяется.
Аноним 11/03/17 Суб 21:00:49 #629 №951492 
>>951128
Мне редактировать же еще его надо, хотя тоже вариант, да.

>>951153
>Кроме печати в PDF, есть еще утилиты для командной строки, преобразующие HTML в PDF.
Попробовал популярный pandoc + miktex, при первой же попытке вывалился с критическими ошибками. Причем если просто от руки создаешь html + css, то нормально конвертит. Но чуть что более сложное, и он падает. Похоже в 2017 в мире так и не тула, чтобы html+css перегнать в любой подходящий для редактирования в редакторе формат. В итоге 5 часов писал свой скрипт для open office на office basic, который недостающую css разметку сам генерит уже в формате офиса, благо там немного разметки было.
Аноним 11/03/17 Суб 21:06:31 #630 №951499 
14892555919250.png 14876496721290.png
>>951326
Мне кажется это пиздеж.
Аноним 11/03/17 Суб 21:22:36 #631 №951508 
>>951457

Ой, нихрена, строка забилась пробелами между концом и большим индексом.
Аноним 11/03/17 Суб 21:27:54 #632 №951514 
>>951408
Спасибо!
А вот тут: var_dump(strlen($employee->name)); выводит int(21), но ведь там Иван Иванов!
Какого, спрашивается? Там же должно быть int(11)?
Аноним 11/03/17 Суб 21:33:29 #633 №951517 
>>951499
Элитные программисты!
https://t.me/joinchat/AAAAAAlT02py0soe6xnbMw
Аноним 11/03/17 Суб 21:40:52 #634 №951522 
>>951514
Короче, я не понял, что такое с идеоне, но с латиницей всё работает: http://ideone.com/9UQfxt
mb_internal_encoding("UTF-8"); почему-то перестало работать, я не понял.
Что по задаче, верно?
Аноним 11/03/17 Суб 21:48:52 #635 №951532 
Как сделать класс пагинации? Ну сами функции я понимаю с запросами LIMIT и OFFSET, а как лучше организовать? В контроллере класс Pagination или Pager вызывает методы маппера, он же и ссылки формирует? как-то много передачи аргументов из $_GET (из контроллера в пагинатор, потом в маппер). Мне кажется, GRASP паттерны нарушаются.
Аноним 11/03/17 Суб 22:16:03 #636 №951551 
Друзья, подскажите, есть ли в регулярке изящный способ поставить такое условие: "подстрока, от двух до трех символов которой должны быть цифрами, а остальные могут быть произвольным количеством пробелов и дефисов"?

типа 123
1 2
1-2-3 и тд
Аноним 11/03/17 Суб 22:34:19 #637 №951566 
>>951551
разобрался сам, может кому пригодится

(\s(.{0}|(\(\)\s-\s))\s*[0-9]){2,3}
Аноним 11/03/17 Суб 23:03:36 #638 №951585 
>>951514

Почитай урок https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

>>951532

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

>>951522

На ideone сейчас вроде проблема с mb-функциями, они расширение mbstring не включили.

Аноним 11/03/17 Суб 23:25:22 #639 №951604 
>>951585
Ну вот в чём дело!
Спасибо, ОП. А то я помню же, что всё работало отлично с mb_strlen, а сейчас выдаёт ошибку.
Ну а так по задаче вроде нормально всё, следующий пункт делаю.
Аноним 11/03/17 Суб 23:30:28 #640 №951611 
14892642290180.jpg BlSIgXdtEDw.jpg
Yii2. Не получается сделать хэлловорлд. Проблема: не могу передать параметр в action контрллера. Включил urlManager, apache настроил, rules прописал как в мануале, результат пикрелейтед.

http://ideone.com/BN1WN0
Аноним 12/03/17 Вск 00:03:34 #641 №951626 
>Constants do not have a dollar sign ($) before them;
>$this is a special variable that can't be assigned.

Ааааааааа! Нахрен там доллар, если ей нельзя присвоить значение?
Аноним 12/03/17 Вск 00:15:04 #642 №951628 
>>951626
А зачем тебе зис присваивать значение? Чем упоролся?
Аноним 12/03/17 Вск 00:22:39 #643 №951633 
>>951628
$that = 10;
for ($this=1;$this < $that; $this++) {
echo $this;
}

Ну так например. $this же идеально для текущей переменной подходит.
Аноним 12/03/17 Вск 00:25:50 #644 №951635 
>>951633
Ну, увы тебе тогда. $this считай то же, как ключевое слово, зарезервировано языком. Оно хранит ссылку на текущий объект, этакое Я.
Аноним 12/03/17 Вск 00:28:54 #645 №951637 
>>951633
Ну и так исторчиески сложилось, что для простых счетчиков цикла используется i.
Аноним 12/03/17 Вск 00:34:16 #646 №951640 
>>951633

Потому что это зарезервированное слово. Точно так же ты не можешь назвать свою функцию for или echo.
Аноним 12/03/17 Вск 00:39:42 #647 №951643 
вот я сделал роутинг, и, вопрос вот:
в файле есть функция получения ссылки, объявленная приватный. Далее идет метод run, который собственно определяет нужный контроллер и экшен.

Квк мне вызывать получение ссылки?
$this->getURI();
self::getURI();
обе строки работают и вроде бы даже одинаково по скорости. Вкусовщина?
Аноним 12/03/17 Вск 00:47:50 #648 №951647 
Шапку бы вам добавить, ато тут муси-пуси, вот пременая мы ее тут можем сложить и тут хуяк классы, ни слова про шаблонизанию, сегодня увидел в пасте расширение файла phtml, подумал что опечатка. Как отлавливать ошибки уже сервере, Да и вообще очень мало практики, только основы языка, как работать на реальном апаче ничего нет.
Аноним 12/03/17 Вск 01:08:02 #649 №951652 
>>951647

При работе с Апачом ошибки пишутся по умолчанию в лог ошибок Апача (под windows это обычно папка logs в папке Апача, под линукс это /var/log). Но все, конечно, зависит от настроек Апача и PHP.

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

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


Аноним 12/03/17 Вск 01:20:44 #650 №951655 
>>951647
Шаблонизация не нужна, она тормозная. В php уже встроен краткий синтаксис циклов, он для шаблонов и подходит как раз.
Аноним 12/03/17 Вск 01:31:00 #651 №951656 
>>951643
$this вызывает через экземпляр класса, self только статические методы на самом классе. Php позволяет вызывать так же статический метод через $this, но это криво. Статические методы лучше не использовать, они ведут к созданию кривой архитектуры, т.к. с ними ты создаешь всякие синглтоны и не используешь инверсию зависимостей, что ведет к созданию тесной связи между классами. Их стоит использовать, когда тебе действительно нужен синглтон, например если предполагается одно соединение с БД на весь проект.
Аноним 12/03/17 Вск 01:42:08 #652 №951658 
>>951656

т.е в моем случае лучше зыс?
я, если честно, совершенно не вижу разницы. Так и так работает одинаково, так зачем трогать лишний раз?
Аноним 12/03/17 Вск 01:53:04 #653 №951661 
>>951658
Ознакомься с докой по статическим методам:
http://php.net/manual/ru/language.oop5.static.php
По скорости разницы нет конечно, только по структуре твоего кода. В нормальном коде не должно быть статических методов, они используются лишь в исключительных случаях, когда без них не обойтись. Если будешь городить статические методы везде, то быстро придешь к проблемам с архитектурой.
Аноним 12/03/17 Вск 09:45:06 #654 №951751 
>>951655
Ну вот, о чем я и говорю, вот челоек что то пытается посоветовать, но о чем он говорит не понятно....
Аноним 12/03/17 Вск 11:32:48 #655 №951809 
>>951655

Глупости пишешь. МНогие шаблонизаторы умеют компилировать шаблоны в PHP код.

И насчет "тормозная" - расскажи, какие ты тесты и измерения делал. Интуиция подскаызвает мне, что никаких не делал, а просто выдумал это все.

Мне лень тут расписывать преимущества шаблонизаторов, открой документацию по твигу, там есть сравнение с простыми php шаблонами.

>>951656

Не совсем так. Статические методы используются, если метод не привязан к конкретному объекту. Обычно это всякие вспомогательные методы.

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

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

>>951658

Оба неправильно. Зачем вообще в роутере метод getURI? URL передается в роутер снаружи.
Аноним 12/03/17 Вск 11:37:45 #656 №951810 
http://php.net/manual/en/language.variables.predefined.php
>Superglobals cannot be used as variable variables inside functions or class methods.

Чот не врубился, объясните.
Аноним 12/03/17 Вск 12:36:51 #657 №951839 
>>951810

Внутри функции или метода нельзя писать так

$name = '_POST';
var_dump($$name_);

Я бы советовал вообще никогда не использовать variable variables. Это плохо спроектированная и ненужная особенность языка.
Аноним 12/03/17 Вск 14:03:39 #658 №951871 
14893166196070.png изображение.png
Так, помощи прошу.
Правильно ли я сделал то, что на скрине?
http://ideone.com/Zjk63v
Не пойму, для чего мы будем применять метод класса к $employee в цикле, когда проще сделать
$totalHours += $employee->getTotalHoursWorked();
$totalSalary += $employee->getSalary();
$totalOvertime += $employee->overtimeHours;
Это всё в цикле же сложится и посчитается.
Чую, не то делаю, но не пойму, объясните!
Или в том же методе getNormalHours($variable) нам и нужно было указать
return $variable += $this->hours;
И потом просто делать в цикле $totalHours = $employee->getNormalHours($variable)
?
Что-то такое?
Аноним 12/03/17 Вск 14:06:06 #659 №951874 
>>951871
>$totalHours = $employee->getNormalHours($variable)
То есть там будет так, наверное:
$totalHours = $employee->getNormalHours($employee->hours);
Ну а смысл?
Аноним 12/03/17 Вск 14:14:34 #660 №951880 
>>951871

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

Соответственно ты вручную занимаешься теми подсчетами, которые нужно было переложить на компьютер. overtimeHours не надо вводить руками, надо просто взять hours и все, что больше 40 часов в неделю - это овертайм. А normalHours это соответственно все, что в пределах 40 часов в неделю.

Потому свойство overtimeHours не нужно, так как переработку всегда можно вычислить из значений в hours.
Аноним 12/03/17 Вск 16:13:44 #661 №951975 
>>951880
Спасибо за помощь!
Ну а как сейчас, всё верно: http://ideone.com/n2qlzR
?
Чувствую, что начинаю немного нащупывать суть ООП :3
Но пока боюсь дальше заглядывать.
Аноним 12/03/17 Вск 17:03:57 #662 №951999 
>>951975

Сложную конструкцию в getNormalHours() можно упростить с помощью функций min/max. А можно упростить еще сильнее, если вспомнить что normalHours + overtimeHours= TotalHours.
Аноним 12/03/17 Вск 17:57:43 #663 №952035 
Анон, помоги!

Попытался решить задачку из http://archive-ipq-co.narod.ru/l1/strings.html (задача "На словах ты Лев Толстой"), но вместо аккуратного результата получился мусор.
1.Как сделать перенос по строкам в рамках одной переменной?
2.Как исправить ошибку рендома, из-за которой получается одинаковый результат при генерации?

https://ideone.com/pf6Rn8
Аноним 12/03/17 Вск 18:35:51 #664 №952053 
>>951839

Я тоже так думал, но оно работает (гляди в конец).

http://ideone.com/BdrtBo
Аноним 12/03/17 Вск 18:37:53 #665 №952055 
>>952053

Это не внутри функции.

Попробуй код

function x() {
$n = "_POST";
return $$n;
};
x();
Аноним 12/03/17 Вск 18:53:28 #666 №952070 
>>951999
>Сложную конструкцию в getNormalHours() можно упростить с помощью функций min/max.
Хм, не понял, как это сделать. Ведь в min/max возвращается единственное большее или единственное меньшее значение в массиве? А у нас в массиве с часами может быть как угодно: [40, 50, 60, 45, 35].
>А можно упростить еще сильнее, если вспомнить что normalHours + overtimeHours= TotalHours.
Точно, спасибо: http://ideone.com/Tly7EQ
Аноним 12/03/17 Вск 18:57:39 #667 №952073 
14893342594110.jpg 14877595755170.jpg
вкатился
Аноним 12/03/17 Вск 18:58:01 #668 №952075 
>>952035
Первые две строчки однотипные, поэтому могут быть в цикле с for, где $i < 2.
Я впервые вижу, что такой текст на идеоне работает, раньше только с EOF работали переносы строк.
Аноним 12/03/17 Вск 19:17:01 #669 №952092 
>>952055

О, теперь понял, спасибо.
Аноним 12/03/17 Вск 19:48:32 #670 №952112 
>>952075
Т.е. если мне нужен "разный" результат при рендоме, то нужно юзать циклы?
Аноним 12/03/17 Вск 19:55:38 #671 №952115 
>>952112
Конечно. При выводе строки в новой итерации цикла будет новый и рандом.
Аноним 12/03/17 Вск 20:03:13 #672 №952119 
>>952073
Сколько потратил?
Аноним 12/03/17 Вск 20:11:50 #673 №952125 
ОП, пидарас, в теме ООП, нахуячил кашу, что я аж сбился с пути истинного.
Аноним 12/03/17 Вск 20:20:38 #674 №952132 
>>952125
Что непонятно, давай вместе обсираться, я только вот доделал задачу и подошёл к копированию и клонированию объектов.
Аноним 12/03/17 Вск 20:53:50 #675 №952156 
>>952115
Домо аригато, сенсей!
Аноним 12/03/17 Вск 21:47:18 #676 №952187 
>>952119
каждая книжка 700-1500 рублей, хуй знает
Аноним 12/03/17 Вск 21:50:18 #677 №952190 
>>952187
И почти каждая - бесполезна.
Аноним 12/03/17 Вск 22:38:37 #678 №952219 
>>952132
Дай телегу чтоль
Аноним 12/03/17 Вск 22:43:44 #679 №952220 
http://archive-ipq-co.narod.ru/l1/pasta.htm
Что это за конструкция ?
foreach ($question->answers as $letter => $answer)
Что за $letter => $answer, это что для того что бы letter воспринимался как массив? Больше никаких задач конструкция не несет?
Аноним 12/03/17 Вск 22:47:39 #680 №952222 
>>952220
А ты проверь, сделай вардамп внутри цикла и засунь туда обе переменные.
Аноним 12/03/17 Вск 23:45:02 #681 №952248 
>>952220

Прочитай мануал по foreach.
Аноним 12/03/17 Вск 23:53:45 #682 №952259 
>>952219
У меня палево в нике, давай свою или присоединись к нашей конфе новичков: https://t.me/joinchat/AAAAAAlT02py0soe6xnbMw
Аноним 13/03/17 Пнд 09:47:54 #683 №952480 
>>950550
>let third = (str) => str.concat('_').match(/.{2}/g);
Вся суть, некоторым просто не дано быть программистами мне
Аноним 13/03/17 Пнд 10:34:44 #684 №952501 
>>950550
>let third = (str) => str.concat('_').match(/.{2}/g);

Че то не работает, давай еще.
Аноним 13/03/17 Пнд 12:54:35 #685 №952633 
>>952073
Ты разносторонняя личность.

Присоединяйтесь к нашей группе!:
https://t.me/joinchat/AAAAAAlT02py0soe6xnbMw

Множество талантливых программистов, победителей олимпиад по математике, а также просто замечательных людей легко решат любую вашу задачу бесплатно!
Аноним 13/03/17 Пнд 13:52:14 #686 №952741 
Я так и не понял. А возможно ли с помощью регулярных выражений проверять длинну строки?
Аноним 13/03/17 Пнд 14:33:20 #687 №952779 
>>952741
Что ты имеешь в виду под "проверять"? Если ты хочешь проверить равна ли вся длинна строки, скажем, 15 - регулярка тут нахуй не нужна, используй встроенные средства языка для этой хуйни.
Если же количество символов это только часть того, что ты ищешь, то хуле нет-то?
^.{3,12}$ - найти любой символ (.) от 3 до 12 раз
Ну или там ^[a-z]{20}$ - найти строку ловеркейсных латинских букв ровно в 20 символов
Аноним 13/03/17 Пнд 14:50:27 #688 №952792 
>>952779
Да я уже разобрался, просто мне эти регулярки напоминают черное колдовство. Например, не могу понять почему нельзя сделать диапазон типа a-Z, а надо обизательно писать a-zA-Z, уебство какое-то.
Алсо
/^[а-яА-Яa-zA-Z-']{1,10}$/u
Норм регулярка для валидации имени? Тире и апостроф для экзотических двойных имен, или там О'Коннелы всякие.
Аноним 13/03/17 Пнд 15:01:27 #689 №952801 
>>952792
Если как упражнение, то наверно норм, хуй знает. Если в реальном ирл мире™ то валидировать номера телефонов, имена, имейлы и подобную хуйню регулярками - говно полнейшее, если меня родители уебанским именем на дохуя букв назвали, что мне, уже твоим сервисом нельзя воспользоваться?
>а надо обизательно писать a-zA-Z
потому что "-" это оператор диапазона, если посмотришь в таблицу символов юникода, ловеркейс и аперкейс символы сгрупированы отдельно друг от друга, так что диапазон a-Z нихуя в себя не включит то, чего ты ожидаешь.
Аноним 13/03/17 Пнд 15:41:16 #690 №952841 
>>952801
> Если в реальном ирл мире™
А как еще можно валидировать? Без учета длинны что ли? Вообще расскажи в кратце как это в крутых фреймворках делается, что бы самому не лезть поперед батька в пекло.
Аноним 13/03/17 Пнд 16:25:26 #691 №952860 
14894115262520.gif 8608cf9800e1d82ce25ca224013b6ebb.gif
>>952841
Ну можно ебануться на отличненько как ютуб и позволить вообще всё, что угодно. Крутые фреймворки не думают за тебя, та же симфони позволяет указать разные требования к полям при валидации, типа "Не должно быть пустым" или "Может содержать только цифры", или кастомное какое угодно условие, тут вопрос не в регулярках, а в общей идее. Отсыпь юзеру символов двести по длинне и не ограничивай диапазон, если тебе норм с тем, что какой-то один из тысячи хипстер засунет туда залго и эмодзи. Если не норм, то всё равно, нету никакой причины вводить бессмысленные анальные ограничения на 10 символов в имени, или невозможности напечатать там какую-то польско-чешскую диакритику с точечками и хвостиками, или ещё что. Если же такая причина у тебя есть, и она хорошая - тогда ограничивай, хуле
Аноним 13/03/17 Пнд 16:55:48 #692 №952874 
Чуть больше недели изучаю php. Сегодня после пяти часов мучений сдался и пришел за помощью.

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

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

Помогите, молю!
Аноним 13/03/17 Пнд 17:36:50 #693 №952888 
>>952874
В чем проблема цикл написать?
Аноним 13/03/17 Пнд 17:41:46 #694 №952891 
>>952888
Не проблема абсолютно, но как мне в цикле реализовать возможность ожидания ввода значения которое впоследствии окажется в массиве?
Аноним 13/03/17 Пнд 17:47:51 #695 №952896 
>>952891
$array[$value] = $value прямо в цикле, будет тебе ассоциативный массив.
array_push($array, $value) - просто добавит значение в конец массива. Наверное ты вообще плохо усвоил основы работы с массивами.
Аноним 13/03/17 Пнд 17:55:24 #696 №952900 
>>952896
Спасибо. Криво до жути, но получилось.

if (!isset ($_SESSION ['mass']))
{
$_SESSION ['mass'] = array (1,2,3,4,5);
$_SESSION ['attempts'] = 0;
}

$_SESSION ['mass'] [$_SESSION ['attempts']] = $_POST['arr'];
if ($_SESSION ['attempts'] < 4)
{
$_SESSION ['attempts']++;
}
else
{
session_destroy();
}

echo '<pre>';
print_r($_SESSION ['mass']);
print_r($_SESSION ['attempts']);
echo '</pre>';
Аноним 13/03/17 Пнд 18:50:41 #697 №952924 
Тут кто-то юзает Drupal?Лучше начать с 7 версии изучать или с 8?там большая разница между ними?
Аноним 13/03/17 Пнд 18:59:11 #698 №952928 
14894207517000.png blindsight.png
>>952900
Это не сишка, зачем массив сразу заполнять чем-то. А ещё твое условие считает от 0 до 3, это не 5 элементов, есичо.
Аноним 13/03/17 Пнд 19:13:55 #699 №952936 
У меня одного не пашет этот сайт?https://www.adminer.org/
Аноним 13/03/17 Пнд 19:15:52 #700 №952940 
14894217528130.png изображение.png
>>952936
Всё работает.
Аноним 13/03/17 Пнд 19:22:50 #701 №952944 
>>952936
Поставь через композер, хуле ты
Аноним 13/03/17 Пнд 20:31:46 #702 №952971 
>>952936
>>952940
>>952944
Спасибо за ответы, в чем проблема?не могу установить Drupal
Аноним 13/03/17 Пнд 20:32:13 #703 №952972 
14894263332360.png E1.png
>>952971
Аноним 13/03/17 Пнд 20:58:57 #704 №953000 
14894279373890.jpg 12626251396191.jpg
>>952971
Вангую что у тебя ssl в конфиге пхп не включен, эта залупа пытается по https сконектиться с своим сервером, жрет говно и, естественно, не показывает сообщение об ошибке, обходясь стандартным "что-то пошло не так". Ну или чего-то другого у тебя в системе не хватает, curl выключен, хуй знает,
Аноним 13/03/17 Пнд 21:45:55 #705 №953035 
14894307556130.png Снимок экрана2017-03-1320-44-54.png
Юляь куда жмать что бы это говно работало?
Важный вопросик Аноним 13/03/17 Пнд 22:09:04 #706 №953069 
Приветик, может кто подсказать, как мне решить мою задачу:
Мне необходимо, чтобы со стороны сервера постоянно выполнялась определенная функция класса, которая будет выполняться, допустим, каждые 10 минут или в определенный момент времени (В 12:00 в субботу)? Функция должна выполняться с определенного класса, язык обязательно PHP.

В laravel можно как-то забиндить команды на таймеры, но ларавел мне сейчас не надо, я хочу решить эту проблему на чистом PHP. Может кто-то подсказать? Предлагайте решения, где гуглить, куда смотреть.
Аноним 13/03/17 Пнд 22:10:17 #707 №953071 
>>953069
И еще, функция должна выполняться со стороны сервера. Уточняю: она не должна зависеть от того, что кто-то посещает сайт.
Аноним 13/03/17 Пнд 22:19:51 #708 №953079 
>>953069
Пилишь на лярве консольную команду, в cron ее добавляешь как тебе нужно.
Аноним 13/03/17 Пнд 22:20:25 #709 №953080 
>>953069
А, не дочитал, без лярвы. Все то же самое, просто пилишь голый пхп скрипт, добавляешь его в крон на запуск.
Аноним 13/03/17 Пнд 22:32:47 #710 №953088 
>>953079
Спасибочки, дружище
Аноним 13/03/17 Пнд 22:54:12 #711 №953099 
14894348523350.png 1438037799034.png
>>953035
ideone любит ломаться, палю годноту
https://3v4l.org/ хоть и немного не для того предназначен, но ваши скрипты в десять строк похуй где исполнять, а для чего-то поинтереснее придется поднимать сервер (учитывая что блядь в пхп уже встроен веб сервер который в одну строку поднимается, не вижу смысла возиться с онлайн хуитой вообще)
Аноним 13/03/17 Пнд 23:30:01 #712 №953135 
>>953099
Годно! Спасибо! Удобнее идеоне раза в три.
Аноним 13/03/17 Пнд 23:48:57 #713 №953146 
>>953069
Ставишь jenkins и выставляешь в нем по расписанию хоть 100500 php функций. Вывод сохраняется в истории дженкинса весь автоматом.
Аноним 14/03/17 Втр 01:01:51 #714 №953189 
14894425118980.png изображение.png
https://3v4l.org/fd5qV - вот эта задача на ООП.
Что здесь у меня не так?
Что-то почва из-под ног ушла, не пойму, в чём обосрался.
Методы непонятные в классах с вопросами дублируются - вроде так нормик.
Не пойму, в чём дело.
Аноним 14/03/17 Втр 01:37:41 #715 №953203 
>>953189

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

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

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

Третья ошибка: класс Question представляет один вопрос в тесте. Но метод checkAnswers работает не с одним вопросом, а с массивом вопросов, и наверно, в этом классе ему не место.

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

Ну например, вот это:

> if (count($questions) != count($answers)) {
> die("Число ответов и вопросов не совпадает\n");
> }
Одинаково для всех видов вопросов.

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

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

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

Аноним 14/03/17 Втр 01:56:40 #716 №953211 
>>953203
Спасибо за разбор, бро, завтра уже постараюсь вдуплить и советы учту.
>Также, еще одна вещь. Допустим мы хотим добавить новый тип вопроса. Для этого мы должны создать класс, наследующийся от Question. А в нем сделать метод проверки ответа. Но это нигде не описано. Глядя только на класс Question, об этом никак не догадаться. Тут могут помочь абстрактные методы. Если все наследники класса обязаны реализовать какой-то метод, то надо объявить его как абстрактный метод в базовом классе. Тогда унаследоваться, не описав этот метод, будет нельзя. Ну и будет сразу видно, что мы обязаны добавить такой метод в класс-наследник.
А ведь у меня там так и есть:

abstract class Question
{
...
abstract function checkAnswers($questions, $answers);
}
Аноним 14/03/17 Втр 02:01:50 #717 №953216 
>>953211

По этой ссылке https://3v4l.org/fd5qV в классе Question абстрактных методов нет. Наверно ты уже позже там это дописал.
Аноним 14/03/17 Втр 02:16:47 #718 №953234 
>>953211
Наркоман штоле сука, у тебя в >https://3v4l.org/fd5qV у квесчена ни одного метода нету
Ну и если мы тут дрочим на правильное ооп, то тут вообще творится какой-то форменный пиздец.
В конце один из вопросов принимает в себя массив всех вопросов, одним и тем же методом проводит санити чек, сверяет ответы, печатает, играет на балалайке и вышивает крестиком.
По хорошему, у тебя должен быть класс, грубо говоря, игры, который и будет делать то, что сейчас делает checkAnswers, а один отдельно взятый вопрос должен только говорить, правильный ли ему вариант ответа предложили, или нет. Баллы-хуялы тоже должна играть менеджить, а не один ответ.
Аноним 14/03/17 Втр 02:17:39 #719 №953235 
>>953099

Сайт отличный, у него даже есть вкладка "VLD opcodes", которая показывает, в какие опкоды компилируется программа. Опкоды - это низкоуровневые инструкции (вида "взять число из переменной и прибавить к числу на стеке") в которые преобразуется программа, перед тем как ее выполнять.

Аноним 14/03/17 Втр 12:13:29 #720 №953459 
>>953216
>>953234
Ой, ребята, извините, я не разобрался с тем увалом просто.
Почему-то он при сохранении выдал другую ссылку: https://3v4l.org/bIDqI
Или я что-то напутал, извините.
Советы учту ваши, сейчас пока не менял то, что было вчера сделано.
Аноним 14/03/17 Втр 12:13:59 #721 №953460 
>>953459
*eval
Евалом то есть.
Аноним 14/03/17 Втр 13:16:40 #722 №953484 
Где можно прочитать, как работает SteamAPI, чтобы я мог управлять аккаунтом: смотреть свой инвентарь, принимать и передавать предметы на другие аккаунты?

SteamAPI только JS или на пыхе тоже можно писать?
Аноним 14/03/17 Втр 13:16:58 #723 №953485 
>>953484
Еще авторизация
Аноним 14/03/17 Втр 14:00:38 #724 №953517 
14894892383910.png 12831144998826.png
>>953484
Для работы с стим апи тебе в первую очередь нужен ключ, который получается тута http://steamcommunity.com/dev/apikey
Авторизация работает как обычный OpenID провайдер, так что найди библиотеку, которая работает с OpenID, если лень разбираться, и хоть на си, хоть на пыхе, хоть на аллахе пиши, получай свой токен, и делай хттп реквесты.
А вообще ты хуесосина очередную ебливую РУЛЕТОЧКУ КСГО ИЗИ ДЕНЬГИ пилишь, так что желаю тебе рака яиц и больше помогать не хочу.
Аноним 14/03/17 Втр 14:40:00 #725 №953544 
14894916010410.jpg 14627492604710.jpg
Сука, накидал пару методов в некий класс за 5 минут, потом джва часа искал почему не работает некая хуйня, оказалось в конфиге закомментил то что нужно для ее работы зачем-то и забыл нахуй, потом искал еще джва часа почему из запрос не проходит, прогуглил полинтернетов, оказалось что вместо INSERT было INSER. В итоге полдня проебано и ничего не сделано. Блять.
Аноним 14/03/17 Втр 14:46:31 #726 №953550 
>>953517
Почему не любишь рулеточки-то? Спасибо за помощь
Аноним 14/03/17 Втр 14:48:11 #727 №953551 
>>953544

А у тебя выводятся сообщения об ошибках от БД? Если нет, сделай (и проверь), чтобы выводились, а то вслепую можно долго искать причину.
Аноним 14/03/17 Втр 14:49:05 #728 №953552 
>>953544
Ты пишешь в блокноте, поэтому иде тебе не могла подсказать насчет синтаксической ошибки и отключил сообщения об ошибках, поэтому реакция бд на твой запрос в стиле "что такое INSER нахуй начальник выпустите меня я не буду с этим запросом сидеть" тоже до тебя не дошла?
Аноним 14/03/17 Втр 15:05:44 #729 №953560 
14894931443400.png Снимок.PNG
14894931443401.png Снимок2.PNG
14894931443402.png Снимок3.PNG
Здоровенько вам в хату. Излагаю суть проблемы:
скачал PHP Version 5.6.30. Дошёл до уроков про ООП. Но у меня никак не работают функции mb_internal_encoding() и mb_strlen(). На всем форумах говорят скачать php_mbstring.dll
и в файле php.ini разкомментировать extension. .dll у меня уже было в папке ext, с .ini тоже разобрался (кстати, почему их два?). А всё равно ничего не запускается.
Аноним 14/03/17 Втр 15:16:52 #730 №953568 
Приглашаем в наш клуб!:
https://t.me/joinchat/AAAAAAlT02py0soe6xnbMw

Лучше программисты России помогут Вам своить РНР легко и непринужденно!
Аноним 14/03/17 Втр 15:20:35 #731 №953569 
>>953560
Раскомментировать нужно 2 строки:

extension_dir = "ext"
extension=php_mbstring.dll

После этого следует перезагрузить сервер, чтобы он перечитал конфигурацию.
Аноним 14/03/17 Втр 15:31:37 #732 №953581 
14894946973440.png 14494316878270.png
>>953569
сделано. и опять нихуя
Аноним 14/03/17 Втр 16:02:02 #733 №953601 
14894965225290.png 1347461788753.png
>>953581
Учимся дебажить пхп для самых маленьких, ебанарот.
Хуяришь файлик в котором написано
<?php
phpinfo();

исполняешь его, ищешь во-первых mbstring и смотришь, что про него сказано, во-вторых ищешь loaded configuration file и смотришь из какого именно пхп.ини твое пхп берет настройки (да, оно проверяет в нескольких местах, дил виз ит)
> (кстати, почему их два?)
production и прочие версии, это пресеты более безопасных настроек для продакшена, в отличии от разработки, и тп.
Аноним 14/03/17 Втр 16:16:57 #734 №953610 
>>953601
Да и там я уже искал. mbstring там вообще нет.
А loaded configuration file - (none)
Аноним 14/03/17 Втр 16:26:55 #735 №953616 
>>953610
Ну вот, в этом твоя проблема. Ты вносишь изменения в конфиг файл, который пхп даже не читает. Почему оно его не читает, это уже другой вопрос. Начнем с тупого:
Ты уверен что у тебя файл называется php.ini, а не php.ini-dist, например?
Аноним 14/03/17 Втр 16:26:57 #736 №953617 
>>953610

Возможно в этом и проблема, что там none

Если ты запускаешь PHP скрипты через сервер и Апач, то в конфиге Апача надо указать путь к PHP файлу.

Вот есть такая большая статья в мануале: http://php.net/manual/ru/install.windows.legacy.index.php

Все, что относится к IIS, можно игнорировать, так как у нас Апач.

Там есть раздел "Установка PHP как обработчика под Apache"

В нем то, что надо вписать в конфиг Апача, и там:

> # конфигурирование пути к php.ini
> PHPIniDir "C:/php"
Тебе разумеется надо указать свой путь к папке с php.ini
Аноним 14/03/17 Втр 16:31:46 #737 №953620 
Для чего нужны классы? Я их выучил, но понятия не имею, когда их можно использовать.
Аноним 14/03/17 Втр 16:34:30 #738 №953626 
>>953616
У меня их 2: php.ini-development и .ini-production,
я разкомментировал всё что нужно в обоих файлах
Аноним 14/03/17 Втр 16:35:00 #739 №953628 
>>953616
У меня их 2: php.ini-development и .ini-production,
я разкомментировал всё что нужно в обоих файлах
Аноним 14/03/17 Втр 16:36:27 #740 №953630 
14894985872330.png 3f38kca8.png
>>953610
Алсо апач на винде это вообще адов спермоцирк
В том же пхпинфо выше у тебя будет Configuration File (php.ini) Path, это путь, где система сейчас ожидает увидеть инишник, если там C:\Windows, значит пришло время ебаться с конфигом апача, который настолько охуевший, что PHPIniDir может хотеть чтоб ты написал "C:\php\zalupa", а может хотеть "C:\php\zalupa\"с трейлинг слешем в конце, а может хотеть слеши "/" вместо "\". У меня уже пичот от этой хуйни, как вспоминаю.
Аноним 14/03/17 Втр 16:37:25 #741 №953633 
>>953617
Вообще Апача нет. Просто запускаю встроенный сервер через командную строку
Аноним 14/03/17 Втр 16:37:47 #742 №953634 
>>953628
>>953626
Оно не так работает, бака.
Пхп хочет увидеть файл который называется php.ini, поэтому если ты хочешь использовать девелопмент конфиг, ты берешь файл -development и ПЕРЕИМЕНОВЫВАЕШЬ в php.ini
Аноним 14/03/17 Втр 16:39:06 #743 №953638 
14894987464380.jpg 14494317650230.jpg
>>953630
Да с чего вы все взяли, что у меня Апач?
Аноним 14/03/17 Втр 16:42:01 #744 №953639 
14894989215580.png Снимок4.PNG
>>953634
Ок. А пикрелейтед сам тогда исправится?
Аноним 14/03/17 Втр 16:42:02 #745 №953640 
14894989230980.png argon.png
>>953638
А хуй знает
Аноним 14/03/17 Втр 16:46:28 #746 №953646 
>>953638
Кто знает, ты при установке пхп должен был указать директорию, где она ищет инишник. Может исправится, может нет, на крайний случай можешь засунуть инишник в то место, которое в пхпинфо указано как Configuration File (php.ini) Path
Аноним 14/03/17 Втр 16:57:10 #747 №953653 
>>953646
Оп в своём мануале писал https://github.com/codedokode/pasta/blob/master/soft/php-install.md
что надо просто скачать архив и распаковать. Я так и сделал.
А это нормально, что
Configuration File (php.ini) Path - C:\Windows.
Хотя само PHP я скачал на D?
Аноним 14/03/17 Втр 17:06:27 #748 №953670 
14895003879660.jpg 14494316531250.jpg
Ребят, может это просто такая версия глюченая и проще другую установить?
А вообще, всем спасибо за вашу отзывчивость
Аноним 14/03/17 Втр 17:06:36 #749 №953671 
14895003962640.jpg 53624593p0.jpg
>>953653
Спермовеселье на спермовинде, хуле.
Сам на ней сижу
Да, это нормально, если ты скачал архив, значит кто-то другой скомпилировал его за тебя и указал эти настройки за тебя. Ну и переменные среды в винде тоже не прописаны, очевидно. Если у тебя не хочет читать инишник из дефолтной директории, можешь поебаться с реджистри ключами http://php.net/manual/en/configuration.file.php
Аноним 14/03/17 Втр 17:08:19 #750 №953673 
>>953670
Не понимаю зачем ньюфагам этот пердолинг, бери и качай готовую сборку ептыть типа ксамп или опен сервер.
Аноним 14/03/17 Втр 17:09:18 #751 №953675 
>>953673
А еще хуже совета не будет?
Аноним 14/03/17 Втр 17:15:35 #752 №953684 
>>953670
Так ты эцсамое, у тебя по пути D:\sperma\php5\php.ini есть теперь? В той же папке, где php.exe и прочая куча файлов, без продакшенов-хуякшенов в имени, просто пхп.ини? И дальше Loaded Configuration File (none) ?
Аноним 14/03/17 Втр 17:19:53 #753 №953689 
>>953620
Бамп
Аноним 14/03/17 Втр 17:28:48 #754 №953705 
>>953675
И чем тебе не нравится? Просто пока ты нуфаг у тебя куча времени на это уйдет, а потом оно само собой все придет. Или почитай уроки ОПа, я уж не знаю куда проще чем у него разжевано.
Аноним 14/03/17 Втр 17:30:58 #755 №953711 
>>953705
Я не нуфаг. И я против этих бичпакетов, ничему хорошему они не учат.
Аноним 14/03/17 Втр 17:33:10 #756 №953717 
>>953689
Хуямп. Если ты их, как говоришь, выучил, то примеры того, зачем они нужны, должен был видеть в учебниках. Они нужны, чтоб разбивать твою систему на логические компоненты, если ты в теории понимаешь, что это, но все эти примеры с котиками и собачками, наследующими класс животное, и менеджерами и уборщиками, наследующими класс сотрудник это какая-то невнятная хуйня для тебя, то никто тебе не скажет магические слова, которые ВНЕЗАПНО обьяснят тебе, что такое классы и зачем они нужны. Гугли любые задачки по ООП и решай их, пока не почувствуешь сам, зачем.
Аноним 14/03/17 Втр 17:37:46 #757 №953726 
>>953705
Тут у человека с одним конфигом проблема, а ты предлагаешь ему целый стак из технологий навернуть, которые непонятно как работают, и вообще хер знает с какой стороны к ним подойти, если что-то сломается. Нюфане надо не только язык изучить, но и среду, в которой он вариться будет, тоже, даже если придется лишнюю неделю угробить на возню с конфигами и вырывание волос из жопы с воплями да почему ты не работаешь сука не могли всё проще сделать, в будущем окупится.
Аноним 14/03/17 Втр 17:39:11 #758 №953731 
>>953711
Если не ньюфаг, то почему элементарно не можешь проверить наличие расширения или хотя нагуглить как это делается?
>>953717
На примерах типа $котик->рычи() и правда тяжело разобраться в ООП.
Аноним 14/03/17 Втр 17:42:42 #759 №953736 
>>953731
Я вообще не он, я на твой совет отреагировал. Он же ничему не научится и не поймет вообще сути работы вебсерверов, если подсядет на игру ксампов и опенсерверов. Там развертка руками простейшая 10 минут всего, без изощренной ебли с конфигами, обо всем почитать можно, хоть на винде, хоть на линухе, хоть на аллахе.
А да хуй с ним, зря влез только.
Аноним 14/03/17 Втр 17:51:04 #760 №953742 
>>953620

Ты решал задачу про ООО Вектор отсюда: http://archive-ipq-co.narod.ru/l1/pasta.html ?

Без классов ее решать будет неудобно например (можешь попробовать и сравнить).

>>953626

Это лишь образцы файлов. Ты должен из них сделать php.ini

>>953630

Слеши должны быть прямые. Это написано в самом конфиге английскими буквами.

>>953633

А, тогда другой случай. Опять же, открываем мануал, главу "Установка" ( http://php.net/manual/ru/install.php ) и смотрим, как определяется путь к php.ini при запуске в командной строке:

http://php.net/manual/ru/configuration.file.php

> Директория веб сервера (для SAPI модулей), или директория PHP (иначе в директории Windows).

Звучит немного странно, потому я для верности посмотрел английскую версию:

> The web server's directory (for SAPI modules), or directory of PHP (otherwise in Windows).

Соответственно вопрос, куда ты положил php.ini? В ту же папку, что и php.exe? И он точно называется php.ini? Если редактировать файл блокнотом винды, то он может добавлять .txt


Аноним 14/03/17 Втр 17:54:59 #761 №953745 
>>953653

Тут описан порядок поиска файла: http://php.net/manual/ru/configuration.file.php

В c:\Windows он ищет только если не нашел в других местах. Я советую просто положить рядом с php.exe.

>>953671

Все описано в мануале, надо просто открыть и прочесть. Ключи не нужны.

>>953711

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



Аноним 14/03/17 Втр 17:55:15 #762 №953746 
>>953742
>Слеши должны быть прямые. Это написано в самом конфиге английскими буквами.
Угумс~, и в всем конфиге стоят прямые слеши. Кроме ссаной PHPIniDir, где у меня стоят обратные. Если я сейчас пойду и поставлю там прямые, она перестанет работать. В LoadModule стоят прямые, в PHPIniDir обратные, иначе нихуя не работает. Почему - я до сих пор не знаю.
Аноним 14/03/17 Втр 17:57:13 #763 №953748 
>>953736
> Он же ничему не научится и не поймет вообще сути работы вебсерверов, если подсядет на игру ксампов и опенсерверов.
С тобой можно согласиться. Да только вот все равно дальше чем "браузер отправляет запрос на сервер - сервер возвращает ответ" он не разберется, лол. И смысла в начале глубоко копать я считаю нет, без какого-либо опыта в разработке оно будет мертвым грузом ему. Давайте еще учить ньюфагов конфигурировать апач, лол.
Аноним 14/03/17 Втр 19:22:00 #764 №953787 
14895085203500.jpg OlIgenN.jpg
Няши, у меня к вам вопрос.
Сам я в php не умею пока что, могу немного в плюсыООП, STL, Win32 API, и совсем чуть-чуть во всякое другоенастолько чуть-чуть что нет смысла называть.

Но недавно мне предложили заказ, запилить биржу фриланса на студенческую тему. Типо такого:
https://studwork.org/
https://vbaze.com.ua/ua
https://megauniver.ru/author

Подскажите, реально ли запилить такое за месяц-другой, с учётом того, что свободное время у меня есть. Стоит ли писать движок с нуля, или использовать CMSесть ли для них годные реализации фриланс биржи? В общем, направьте на путь истинный, если не трудно.
Аноним 14/03/17 Втр 19:48:05 #765 №953798 
Планирую запилить небольшой магазин чтоб хвастаться работодателям и заказчикам. Бекенд будет на yii, причем в виде REST api, а фронт будет на реакте и будет выполнятся еще на сервере (изоморфизм и все дела). У меня в голове это все выглядит вроде как вполне круто (всякие мобильные приложения будет легко подключать к бекенду и т.д), но как оно будет на самом деле абу его знает. Собственно как вам такая идея, стоит ли тратить на нее время?
Аноним 14/03/17 Втр 19:50:05 #766 №953801 
14895102059970.png 38846c43b70431b750e5b7294870d44b.png
14895102059971.png 74562ff8e1a018f13b93068d776bc4fc.png
Добрый вечер, такой вопрос: собирай данные с клиентской стороны через serializeArray(), потом формирую объект через .reduce и отправяю кусками аяксом, проблема в том, что прилетают побитые ключи как на пике 1. Код функции отправки на пике 2. serialize() не подходит так как возвращает строкове представление, formData поддерживается не всеми браузерами. Подскажите как пофиксить ключи либо как можно ещё собрать данные из формы в массив-объект.
Аноним 14/03/17 Втр 19:55:15 #767 №953804 
>>953551
>>953552
Я пишу в иде и внутри кавычек, где текст запроса, иде ничего не предлагает. Сообщения вкл, было что-то вроде sphinxql: unexpected IDENT near blalala. Естественно я полез в доки сфинкса что за идент и вообще, потом полез в консоль, и только потом случайно увидел что буковки то не хватает. Вобщем смысл рейджа в том что я просто в глаза продолбился полдня.
Аноним 14/03/17 Втр 20:02:05 #768 №953809 
>>953787
Дефайн "тебе предложили запилить". Верстка и дизайн тоже на тебе? Хуярить будешь в одиночку, а спрашивать будут как с высокобюджетной команды.
И самое главное - есть ли тех заказ и насколько он четкий и дерзкий. Если быстро новые технологии осваиваешь и не будешь тупить с понятиями роутинга, контроллера и прочей хуйни, ну за два месяца биржу сможешь сделать, эз ин там можно будет размещать обьявления, создавать аккаунты, писать заказчикам и оставлять отзывы. Если же весь заказ звучит как "сделай как вон там ёпт, ну ты ж компуторщик", то нахуй и впизду, просто завалят деталями, прикрути посредников, логи, рефанды, комиссии, десять разных апи оплаты, небо и аллаха. И всё за два месяца, да. Насчет готовых решений для такой хуйни ничего не скажу, увы.
Аноним 14/03/17 Втр 20:13:46 #769 №953821 
>>953787
С твоим опытом, мне кажется, если ты чего и сделаешь то это все равно дерьмо какое-то будет. CMS-ки тут вряд ли подойдут, лучше уже фреймворк какой взять
Аноним 14/03/17 Втр 20:17:00 #770 №953823 
>>953801
var dataToSend = {}
$.each(mySerializedArray, function(k, fieldData){
dataToSend[fieldData.name] = fieldData.value
});
отправляешь серверу JSON.stringify(dataToSend)
на сервере соответственно json_decode'ишь то, что получил
Аноним 14/03/17 Втр 20:41:52 #771 №953839 
14895133122640.png 27e1696dcd44f8c2f946bcfc662ada80.png
>>953823
В этом случае получаю пикрелейтед.
Аноним 14/03/17 Втр 20:48:23 #772 №953845 
>>947411
>6-дневный рабочий день;
>8:00−18:00.

Ебал. Жалуйся в трудинспекцию.
Аноним 14/03/17 Втр 20:49:02 #773 №953846 
>>953684
Да. Именно
Аноним 14/03/17 Втр 20:49:39 #774 №953847 
>>953839
Что у тебя до serializeArray происходит, ты уверен что данные до отправки на сервер это красивые пачки key value пар? Логируй данные на каждом этапе трансформации, хуй знает, что тут ещё сказать.
Ну и ещё
>serialize() не подходит так как возвращает строкове представление
как что-то плохое,
$meow = array();
parse_str($_POST, $meow);
Аноним 14/03/17 Втр 21:00:58 #775 №953864 
Прямо сейчас читаю мануал для PHP, в жизни ничего на нём не писал.

Есть вакансия, которую я хочу занять, требования: "C++, Perl, PHP". Пишу на плюсах, с Перлом знаком. Не совсем понятно, что имеют ввиду, когда говорят PHP, так как без HTML или фреймворка это ничего не значит.

Перед тем, как буду откликаться и рубить правду матку и просить тестовое, спрашиваю у вас: что имеют ввиду, когда говорят "PHP"? Zend Framework кокойнить?
Аноним 14/03/17 Втр 21:04:32 #776 №953866 
>>953864
PHP имеют в виду PHP. Это как спросить что имеют в виду, когда говорят "С++"? QT кокойнить? Хуй знает, может фреймворк, может инхаус решение, может мейнтейн легаси говна, может всё вместе.
Аноним 14/03/17 Втр 21:35:30 #777 №953895 
>>953847
Да, структуру я не менял, до этого данные отправлялись обычным постом без ajax и на бэкенде был многомерный массив, сейчас мне надо разбить отправку на мелкие порции.
>как что-то плохое,
>$meow = array();
>parse_str($_POST, $meow);
Изначально форма была не особо большой, сейчас модуль вырос и передается единомоментно 1200 переменных, после serialize() я не смогу разбить строку таким образом, чтобы потом собрать целостные данные на PHP, поэтому я разбил массив на куски и отправляю их порционно по порядку (порядок тоже важен)
Аноним 14/03/17 Втр 21:35:33 #778 №953896 
>>953798

> Бекенд будет на yii, причем в виде REST api, а фронт будет на реакте и будет выполнятся еще на сервере (изоморфизм и все дела)

Изоморфизм подразумевает, что на сервере код будет на Node.JS и Yii тогда не подходит. Как ты это себе представляешь?

Мое личное мнение - выделение REST API это лишнее усложнение кода, так как во многих случаях проще написать 1 кусок кода на сервере, генерирующий страницу, чем 2 куска (генерирующий данные + код для фронтенда, интепретирующий эти данные).

>>953801

Что делает splice(0, 105)? ты просто выкидываешь част данных?

Насчет битых данных на сервере - может это какая-то проблема с отображением? Проверь:

- что возвращает serializeArray(), какие там данные
- как выглядит POST запрос (на вкладке Network), какие там данные

У тебя не обрабатываются ошибки при отправке AJAX или при декодировании ответа. Советую глянут мой урок про то как надо делать аякс-запросы: https://github.com/codedokode/pasta/blob/master/js/ajax.md

Я бы советовал не использовать $.post, а использовать $.ajax. Она возвращает джейквериевский аналог промиза так что тебе не надо будет создавать свой.
Аноним 14/03/17 Втр 21:42:17 #779 №953899 
>>953804

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

>>953809

На фреймворке наверно делать недолго.

>>953823

Ты как-то все переусложнил. Во-первых твой код не позволяет слать массивы с именами вида name[], во-вторых, какой смысл добавлять дополнительное перекодирование в JSON и обратно, если данные можно отправить напрямую?

Усложнение кода ради усложнения и модного 5 лет назад слова JSON.

>>953847

То представление, которое возвращает seialize(), по моему можно передать в $.ajax и оно придет как обычные POST-данные на сервер.

Вы бы изучили сначала multipart/form-data и apllication/x-www-form-encoded прежде чем JSON советовать.

>>953864

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

>>953895

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

Аноним 14/03/17 Втр 21:42:30 #780 №953900 
14895169504590.png 40317fd22c0961ebffc066962e808aa0.png
14895169504631.png 4b06884f87a0e890e41322eb1c67434b.png
>>953896
>Что делает splice(0, 105)? ты просто выкидываешь част данных?
Не выкидываю, я из переданного массива беру 105 первых элементов и передаю их в пост, дальше рекурсивном через промисы передаю остаток первоначального массива обрезая по 105 элементов за каждый виток рекурсии.
>как выглядит POST запрос (на вкладке Network), какие там данные
Пик 1
- что возвращает serializeArray()
Пик 2
Аноним 14/03/17 Втр 21:44:18 #781 №953902 
>>953899
>но тебе лучше бы подумать, как слать меньше данных за раз.
Минимум затрат по времени это просто слать данные кусками. Если менять способ сохранения - мне придется как минимум менять не только способ сохранения но и всю логику модуля, на что уйдет намного больше времени.
Аноним 14/03/17 Втр 21:47:15 #782 №953904 
>>953896
С php-v8 можно ебашить изоморфизм на пхп, но ящитаю слишком сыро и экспериментально, так что нахуй не нужно. Разбить на фронтенд и рест апи в принципе норм тема, если у тебя интерактивности дохуя на странице, магазины как раз из этой оперы.
Аноним 14/03/17 Втр 21:47:39 #783 №953905 
>>953900
Вангую проблему в строке
>obj[item.name] = item.value;
Аноним 14/03/17 Втр 21:48:45 #784 №953906 
Аноны, здесь же явно косяк?

if ($createAbsoluteURI && !substr($url, 0, 4 ) != "http") {
Аноним 14/03/17 Втр 21:51:20 #785 №953908 
14895174809600.png 756a96ddb851402273d0021805b52a9c.png
>>953905
Нет, проблема была не в этом, проблема в обертке была { data : chunk_data, ... } почему это при отправке оборачивало часть ключей в [], отправил просто как chunk_data и прилетела нормальная структура: пик
>>953906
parse_url
Аноним 14/03/17 Втр 21:53:50 #786 №953910 
14895176310720.jpg MacacanigrainC396landsZoo[1].jpg
>>953906
Нет, вовсе нет.
Аноним 14/03/17 Втр 21:59:25 #787 №953912 
>>953908
Тогда уже я ничего не понимаю...
А можешь перед отправкой законсолить тип перменной chunk_data ?
Аноним 14/03/17 Втр 22:05:57 #788 №953919 
14895183571800.png 6bcf99c10dc906ae7e8fc920d0866308.png
>>953912
Массив объектов
Аноним 14/03/17 Втр 22:06:39 #789 №953920 
14895183993060.png f35daa82ee80e3ef02c8443e3e248b5b.png
>>953919
Аноним 14/03/17 Втр 22:07:31 #790 №953922 
Бамплимит, кстати.
Аноним 14/03/17 Втр 22:08:08 #791 №953924 
14895184887580.png 37508f3cca5f10555b3f81f006ce1930.png
>>953920
>>953919
Стоп, не там законсолил, ассоциативный массив
Аноним 14/03/17 Втр 22:11:59 #792 №953927 
>>950824

Код дерьмо.

http://stackoverflow.com/questions/5092563/how-to-fake-serverremote-addr-variable
http://stackoverflow.com/questions/5835093/can-serverremote-addr-be-trusted
sageАноним 14/03/17 Втр 22:13:16 #793 №953930 
Я понял почему меня так бесит ваш учебник из шапки. Там все наисано для вывода в эмуляторе? Я все через браузер делаю, и вот возик вопрос как разделять эти выводы, вот сейчас чита про ооп классы и там есть такая хуйня padRight, padLift вот они для браузера или для эмулятора? Гуггл хуйню рыгает, и как вообще проверят куда можно выводить результаты программы?
Аноним 14/03/17 Втр 22:14:08 #794 №953931 
14895188482480.png 14514672188360.png
>>953899
ОПчик, не выебывайся. JSON был "модным" лет пять назад, сейчас это нативно поддерживаемый стандарт. В жкверивском аякс методе много подводных камней с отправкой урлэнкодед массивов из массивов, особенно если оставить dataType и contentType по умолчанию, так что если мне надо заниматься диагностикой по снипету кода из трех с половиной строк, я его пережму в жсон и не буду заниматься микрооптимизациями.
Какое отношение имеет
>Вы бы изучили сначала multipart/form-data и apllication/x-www-form-encoded прежде чем JSON советовать.
к посту >>953847 я вообще не понимаю.
Аноним 14/03/17 Втр 22:16:37 #795 №953936 
>>953924
Почему такая хуйня блять???!
Почему одна и та же переменная ведет себя по-разному?
Аноним 14/03/17 Втр 22:20:44 #796 №953940 
>>953910
>Нет, вовсе нет.
признавайся, ты писал?
Аноним 14/03/17 Втр 22:23:22 #797 №953943 
>>953930
"смеющаяся над долбоебом Саша Грей*
Эмулятор-хуятор, там всё можно на Ideone.com делать, можно на Apache+PHP+IDE/Блокнот/какое дерьмо по вкусу.
Аноним 14/03/17 Втр 22:29:00 #798 №953948 
>>953930

Не "эмулятор", а "интерпретатор".
Аноним 14/03/17 Втр 22:29:01 #799 №953949 
14895197416020.jpg desert-story-fallout-movie-from-lastescapeprod-a-post-apoca[...].jpg
>>953940
Разберем по частям тобою написанное, складывается впечатление..:

>if ($createAbsoluteURI(1) && !substr($url, 0, 4 ) !=(2) "http") {

1) Это тебе не JS, с $createAbsoluteURI нужно что-то сделать (проверить на пустоту, сравнить с чем-то), иначе будет хуйня.

2) У тебя PHP !умер !от рака
Аноним 14/03/17 Втр 22:31:10 #800 №953951 
>>953930
Какой эмулятор, чего вообще?
Хоть бы где ты запускал, echo и подобные будут куда-то печатать, в документ для браузера, в stdout, в твой эмулятор, что бы это не было.
Аноним 14/03/17 Втр 22:44:40 #801 №953954 
>>953949
>2) У тебя PHP !умер !от рака
Спрошу даже так. Это может быть не косяком?
Аноним 14/03/17 Втр 22:48:45 #802 №953960 
>>953930
Браузеру можно сказать что бы выводил ввиде обычного текста. Для этого нужно отправить http заголовок. Добавь в начале скрипта ДО любого вывода строку:
header('Content-Type: text/html; charset=utf-8');
Правда я не уверен, что кто-нибудь понял что ты хочешь.
Аноним 14/03/17 Втр 23:02:39 #803 №953973 
>>953954
Увы. Это не может не быть не косяком.
Аноним 14/03/17 Втр 23:31:51 #804 №953987 
Dom который построил Jack пятая.
https://jsfiddle.net/svdgn8tm/
Аноним 14/03/17 Втр 23:42:21 #805 №953994 
14895241415250.jpg 1248778885298.jpg
>>953949
>ebaloSnositelXX
Аноним 14/03/17 Втр 23:46:32 #806 №953997 
14895243925880.png 14712154632050.png
>>953994

А где ты увидел.. Я специально кидаю ссылку без ника, потому что неудобно перед опом.
Аноним 14/03/17 Втр 23:54:29 #807 №954005 
14895248697840.jpg 35979801.jpg
>>953997
В ивентах написано по какому урлу находится скрипт, который их обрабатывает, ф12 твой лучший друг и всё такое.
А по теме могу отметить, что ты используешь event.target в обработчиках, и в этом случае ничего плохого в этом нету, но когда ты начнешь создавать элементы динамически и биндить к ним ивент хендлеры, незнание разницы между event.target и event.currentTarget укусит тебя за жопу.
Аноним 14/03/17 Втр 23:57:23 #808 №954006 
>>954005

Хорошо, ознакомлюсь и возьму на заметку.
Аноним 14/03/17 Втр 23:57:45 #809 №954007 
>>953931

Вообще, JSON тут имеет смысл передавать, так как у него 1200 полей, а у PHP есть ограничение на число элементов в POST, и подозреваю, онопо умолчанию ниже.

Еще есть ограничение на длину URL, 1000-2000 байт, если используется метод GET.

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

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

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

> так что если мне надо заниматься диагностикой по снипету кода из трех с половиной строк, я его пережму в жсон и не буду заниматься микрооптимизациями.
Это не оптимизация, а отладка и исправление ошибок. Данные из serialize() и serializeArray() можно передавать в $.ajax в поле data, ничего сложного в них нет, и content-type для них по идее $.ajac должен выставлять атоматически (либо multipart/form-data, либо application/x-www-form-encoded)


Аноним 15/03/17 Срд 00:10:24 #810 №954012 
>>954007
Дело не в большом числе полей, дело в урлэнкодинге рекурсивных структур (массивов из массивов)
>Это называется "лень читать документацию"
А вы таки не повегите, но оффициальная тм документация жквеги гекомендует использовать json во избежание всякой хуйни как газ в таких случаях
>Это не оптимизация, а отладка и исправление ошибок.
Нет, как раз рекомендация запаковать в джейсон это поиск ошибки, исключим хуйню при передаче, будем искать хуйню при создании, а аргументы уровня "зачем тут кодировать чтоб на сервере ещё раз раскодировать", это как раз микрооптимизации. Вас что, хипстеры макбуками избили, с таким джихадом против джейсона?
Аноним 15/03/17 Срд 00:16:00 #811 №954014 
>>954005

иерархические структуры прекрасно передаются ии принимаются обычным POST, даже вообще без яваскрипта. JSON для них не требуется.
Аноним 15/03/17 Срд 00:47:55 #812 №954028 
>>954012
На самом деле проблема уже давно решена, зря спорите.
Аноним 15/03/17 Срд 00:52:34 #813 №954029 
>>948197
Бамп вопросу, что в коде юзать и когда? Фронтенд контроллер паттерн, диспатчер или роутер?
Аноним 15/03/17 Срд 00:55:23 #814 №954031 
14895285235710.jpg 56935309p0.jpg
>>954014
Да и хуй с ним, джейсон вс урлэнкод при передаче это настолько платиновая и обсосаная тема, что хуже только про табы против пробелов сраться.
Аноним 15/03/17 Срд 01:19:26 #815 №954037 
>>954029
Если совсем примитивно - фронт контроллер это единственная точка входа в твою программу, какой бы урл у тебя не запросили, он придет к фронт контроллеру.
Вот приходит тебе на сервер реквест mypage.com/images/nigra.jpg
Фронт контролер создает диспетчера и передает ему этот запрос.
Диспетчер вызывает роутер, передает ему этот реквест и спрашивает, что он о нем думает.
Роутер сравнивает его с списком роутов, находит роут "/images/*.jpg" и говорит обратно диспетчеру "да у нас же картинку запросили, ебать"
Диспетчер говорит "понял, вызываю спеца по картинкам" и вызывает отвечающий за картинки метод контроллера (не путать с фронт контроллером) сайта
Тот уже в свою очередь что-то делает, ищет, существует ли в базе данных запись о такой картинке, хуемое, создает респонс, куда пакует картинку, выставляет хедеры, и вся эта ссань отдается обратно фронт контроллеру, который и отдает респонс в твой браузер.
Аноним 15/03/17 Срд 09:15:26 #816 №954150 
14895585265030.jpg 7bc8700daefc393b93be7b11b1fd69fa.jpg
Может перекатите тред, не?
Аноним 15/03/17 Срд 15:16:08 #817 №954376 
почему часто вижу, как аноны оценивают сроки выполнения всяких заказов месяцами?
я для себя написал интернет-магаин резиновых хуев категориями, описаниями, корзиной, регистрацией и всем осталтным с админской панелью за две недели, а дизайн еще неделю делал. И это я кодил часа по 3 в день.
Чем коммерческие проекты такие сложные и большие?
Аноним 15/03/17 Срд 15:19:07 #818 №954379 
>>954376
Не все заказы - магазины.
А магазинчики в большинстве своем покрываются функционалом готовых цмсок, их хоть жопой жуй, это уж твое или заказчика желание писать самому так то.
Аноним 15/03/17 Срд 15:24:31 #819 №954389 
>>954379

ну, ту же фриланс биржу выше в неск.месяцев оценили, хотя принцип, на мой взгляд, примерно тот же. Только каждый юзер-заказчик добавляет товар(заказ), и прочие мелкости
Аноним 15/03/17 Срд 15:25:01 #820 №954391 
>>954376
Ну покажи свой магазин, а я покосплею заказчика и подоебываюсь.
Аноним 15/03/17 Срд 15:37:56 #821 №954398 
>>954389
>прочие мелкости
Дьявол в мелочах кроется, большая часть функционала запиливается быстрее, чем отдельные микрописечки в нем, с которыми возникают проблемы.
Потом качество кода это не шутки. Можно нахуярить быстро, и даже самому нормально им пользоваться, в том числе не замечая очевидных косяков, а как только в руках юзера окажется, который немного по другому мыслит так сразу и пойдет отваливаться все к хуям.
Заказчик без правок не обойдется никогда, даже если ты с ним кровью скрепишь договор, что при первой же просьбе о правке он должен будет зарезать всю свою семью и скормить свой хуй собаке. Правки будут все равно, когда он уже глазами, а не умозрительно, на проект посмотрит.
Есть такая тема, как работа со сторонними сервисами. Не всегда это впиливается быстро и прозрачно.
На цмске можно брать не ссыкуя большую часть заказов с магазинами, и то понимая, что скорее всего придется плагинами своими докидываться, кроме как верстку натянуть.
Аноним 15/03/17 Срд 15:46:15 #822 №954407 
>>954389
>>954398
Качество кода это особенно не шутки, если тебе придется потом сопровождать этот код, когда от тебя потребуют впилить фичу потом через полгода, а ты во-первых нихуя не понимаешь как эта ссань вообще работает, во-вторых у всех компонентов настолько tight coupling, что tighter только писечка у лолей из хентая. Зато в свое время за две недели по три часа в день справился, да.
Аноним 15/03/17 Срд 16:27:34 #823 №954433 
https://3v4l.org/GE6vo - ну и как мне теперь вызвать этот паблик метод у этих классов - checkAnswers($questions, $answers);?
Пробую форычем, пробую просто $questions[0] - это не то.
Упустил суть, блин, помогите!

С eval вот какая проблема - при смене ip он меняет ссылку и при простом запуске кода. В тот момент, когда я обкакунькался, то же было, походу.
Аноним 15/03/17 Срд 16:55:45 #824 №954460 
>>954433

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

По поводу твоего вопроса:

> ну и как мне теперь вызвать этот паблик метод у этих классов -

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

$result = $object->checkAnswers(...);

Но у тебя пока не исправлены замечания, что я писал выше, тут >>953203

Аноним 15/03/17 Срд 17:04:41 #825 №954465 
>>954433
Да забей ты на эти онлайн иде, срсли.
Ставишь пхп, кидаешь свой код в файлик index.php, в папке с ним в консоль делаешь
php -S localhost:8000 и всё, рефрешь http://localhost:8000/ в браузере и смотри на изменения.
По коду - может ты опять что-то не то отправил, но у тебя тот же пиздец остался, что и в прошлый раз - checkAnswers это метод одного отдельно взятого вопроса, а должен быть отдельной функцией, как и printQuestions. Ты не заставляешь один вопрос печатать все вопросы, но почему-то заставляешь один вопрос проверять все ответы.
Отдельная функция проверки ответов будет обходить список из всех вопросов и список из всех ответов и предлагать одному вопросу один вариант ответа, а тот должен всего лишь ответить за себя, правильный этот вопрос или нет.
Аноним 15/03/17 Срд 17:06:07 #826 №954468 
Теперь я трижды сертифицированный битриксом говноед.
Аноним 15/03/17 Срд 17:11:09 #827 №954472 
14895870697960.webm 1419372197403.webm
>>954468
И как оно на вкус, братишка?
Аноним 15/03/17 Срд 17:14:38 #828 №954473 
>>954472
Как земля.
Аноним 15/03/17 Срд 17:33:24 #829 №954484 
Анон, подскажи.
Есть ли смысл в header,article,section?
Аноним 15/03/17 Срд 17:44:26 #830 №954497 
>>954484
Подсказываю: есть.
Аноним 15/03/17 Срд 18:05:29 #831 №954511 
В бд хранится формулы (администратор может их редактировать). Данные для них я получаю из $_POST и валидирую их так: $а = (int) $_POST["a"]; затем использую eval. возможно ли злоумышленникам обойти сию валидацию?
Аноним 15/03/17 Срд 18:11:04 #832 №954517 
>>954497
Просто есть ведь div. Смотрел исходники разных сайтов, там только через div и строится все. Так как быть?
Аноним 15/03/17 Срд 18:25:50 #833 №954525 
>>954511
Если после этого ты будешь работать исключительно с $a, то всё хорошо. Если же ты решишь что если intval($_POST['var']) вернул ненулевое значение, то значит с $_POST['var'] всё хорошо, то тут тебя ждет приятный сюрприз.
https://3v4l.org/iSovA
>>954517
У них разное применение. div это, ну как сказать, технический элемент. Твой документ состоит из частей, у которых есть стили, классы, к ним прикручены какие-то данные и обработчики событий.
article, header, footer, section, nav и подобное - это семантические элементы, когда поисковик индексирует твою страницу, ему похуй из каких дивов она состоит, но если ты ему подскажешь, что вот это заголовок, это главная статья, ради которой эта страница создавалась, а вон там список глав в твоей статье, ему это (по идее) будет полезно. Суть семантик элементов - предоставить другим программам, которые будут смотреть на твою страницу всякие полезные метаданные. Это не значит что вместо дивов надо верстать секшенами теперь, если чо.
Аноним 15/03/17 Срд 18:28:12 #834 №954526 
>>954525
Я так и делал. Через header итд, а пару дней назад наткнулся на комент что "онли див, а все остальное фигня" Вот и решил обратится. Спасибо
Аноним 15/03/17 Срд 18:41:11 #835 №954540 
>>954526
Это потому что, во-первых, хер знает что они точно делают. Если бы гугл наебашил заявление, что мол так и так, если ваш документ семантически разбит на части, то мы будем индексировать его намного выше, то адопшн пошёл бы быстрее и веселее. А во-вторых, человеческой спецификации тоже нету, описания в стиле "элемент предназначен для группирования контента по темам", ну охуеть теперь, у всех немного свои идеи насчет того, что это значит.
Аноним 15/03/17 Срд 20:26:20 #836 №954650 
>>954150
Бамп риторическому вопросу.
Аноним 15/03/17 Срд 21:10:56 #837 №954678 
>>954540
>мол так и так, если ваш документ семантически разбит на части, то мы будем индексировать его намного выше, то адопшн пошёл бы быстрее и веселее.
Поговаривают, что в будущем так оно и будет.
Аноним 15/03/17 Срд 21:57:27 #838 №954693 
>$a <=> $b
>Spaceship
>An integer less than, equal to, or greater than zero when $a is respectively less than, equal to, or greater than $b. Available as of PHP 7.

'b-a' не подходит из-за краевых случаев?
Аноним 15/03/17 Срд 22:05:05 #839 №954698 
>>954693

А, стоп, он же и для строк подходит.
Аноним 15/03/17 Срд 22:08:44 #840 №954701 
>>945059 (OP)
Господа, кто-нибудь работал с CodeIgniter?
Я не пойму, почему при отправке аяксом мне не возвращается строчный ответ, а только цифры. НА стаке пишут, что этот фреймворк пинимает только данные в виде джейсон строки. Мне нужно через аякс динамически подгрузить данные из бд без перезагрузки страницы.
Пример.
var url = window.location.href;
$.ajax({
url: url,
type: "POST",
dataType:"json",
data: {"gender":"m"},
success: function(data){
console.log(data);
}
});

В контроллере пишу
echo $_POST["gender"]; (причем если использую кодеигнитовский $this->input->post("gender") - тоже ничего)
и в консоли у меня ничего не выводится.