Двач.hk не отвечает.
Вы видите копию треда, сохраненную 6 октября 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Клуб изучающих PHP и webdev #93 #1049651 В конец треда | Веб
Добро пожаловать в наш уютный тред. Тут мы изучаем веб-разработку на языке PHP (а также JS/CSS/HTML/SQL), решаем задачки и делаем простые сайты! Зачем? Кто-то хочет сделать себе блог, кто-то приобрести новую профессию, кому-то просто нечего делать.

Пожалуйста, не устраивайте чат и не постите оффтопик.

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

Предыдущий тред был тут: >>1033564 (OP) . Еще предыдущие треды ищутся в гугле по словам "клуб php" или в архиваче. Еще есть такой архив тредов: phpclub.rf.gd (в процессе разработки).

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

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

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

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

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

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP, этого недостаточно. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL, PDO, работа с таблицами в БД, работа с формами, MVC, git, composer, JS, фреймворки, автоматизированное тестирование.

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

- для начала прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- установи Апач + PHP (советы выше и ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, PDO, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony 3/Doctrine 2
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://github.com/codedokode/pasta/blob/master/soft/php-install.md
https://github.com/codedokode/pasta/blob/master/soft/apache-install.md

Может тебе понадобится пользоваться командной строкой, вот гайд https://github.com/codedokode/pasta/blob/master/soft/cli.md

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания 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. У нас в треде были люди, которые практически с нуля учились и смогли найти работу.
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /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) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
56 Кб, 500x644
Важно #2 #1049653
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.

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

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

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
56 Кб, 500x644
Важно #2 #1049653
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.

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

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

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
#3 #1049741
Имеется многомерный массив(получен путём декода из json). Если я сделаю в него array_push() массива, который будет дублировать уже существующий в многомерном - он заменится или вставится и будут два идентичных массива? Или, может, вообще ничего не произойдёт?
#4 #1049746
>>1049741
array_push только добавляет новый элемент в массив, не заменяя и не удаляя ничего. Так что добавится новый элемент, в котором будет то, что ты укажешь.
#5 #1049799
Отправляю AJAX-запросом данные к PHP:
let data = {
id: id,
search_data: {
props: proposals,
airports: airports,
airlines: airlines,
gates: gates_info
}
};

Доступ к id я могу получить через $_POST['data']['id'];
Доступ к props я не могу получить через $_POST['data']['search_data']['props'] ровно как не могу его получить и к 'search_data' - Undefined index: search_data

Чому?
#6 #1049835
>>1049799
Предлагаешь нам угадывать без кода? Функцию json_decode с параметром true вызываешь? Не думал просто var_dump'ом вывести $_POST и посмотреть что там приходит?
#7 #1049858
Подскажите годную проекты(можно на гитхабе) по laravel

laracast весь прошел, в том числе и платные видеокурсы за подписку, сделал свой каталог а куда дальшедвигаться хз.
#8 #1049861
>>1049858
Двигайся на fl.ru
#9 #1049870
>>1049861
Маловато знаний, там все хотят хайлоад и работу с миллиардом апи
#10 #1049933
Перекатываюсь. Сделал главное задание на HTML&CSS вертску. Результаты работ тут:
https://theknacker.github.io/TheKnacker/default.html
Адаптивный пока не делал, но могу. Делал сайт почти без подглядываний, которые были в общем случае бесполезны. У гитхаба слетают шрифты, странно что верхний у лого не слетел.

нубсишник
#11 #1049942
>>1049933
На мобилках выглядит хуево
#12 #1049956
Работаю на работке, на которой часов 5-6 в день нихуя не делаю.
Пк нет, а принести планшет/ноут нельзя.
Можно ли со смарта учиться?
Какой лучше подойдет?
Программки какие надо установить?
Клаву может какую скачать поудобнее?
Понимаю, что если захотеть, то можно без всего этого обойтись, но все же, может есть какие ахуительные/платиновые перделки о которых я просто не знаю?
#13 #1049957
>>1049956
Книгу купи, лол.
Со смарта можно что угодно делать, накачай на карту памяти видосов и смотри.
#14 #1049968
>>1049942
И на Айпаде, я же сказал

>Адаптивный пока не делал, но могу.

#15 #1050018
Нужно было подключить одну библиотеку, а она состоит из нескольких папок и нескольких пхп-файлов. Так вот, подключаю я ее с помощью include, указывая полный путь до нужного файла, а этот файл пытается подключить еще своего друга, но это у него не получается. Ибо я подключаю файл по абсолютному пути, а файл библиотеки по относительному. В итоге я вижу ошибку что файл отсутствует в директории. Приходится подключать таким макаром:
set_include_path('C://wamp64/www/application/third_party/library');
include('fld/lib.php');

На время выполнения скрипта путь для подключения будет полным для этой библиотеки и все замечательно работает.
Но я много где читал что таким способом уже давно никто не подключает и все используют неймспейсы. Так вот, котоны, покажите пожалуйста на простом примере как мне заменить мою конструкцию на модные неймспейсы.
#16 #1050040
>>1049651 (OP)
здравствуйте, я гей
#17 #1050090
>>1050040
Ну и что ты делаешь в PHP треде? Это район для четких поцанчиков в шапках-гандонках.
#18 #1050189
как создать аккаунт на сайте?
#19 #1050206
>>1050018

Это баг в библиотеке, не надо использовать относительные пути при include. А вообще, сейчас используют автозагрузку, PSR-4 и композер, урок https://github.com/codedokode/pasta/blob/master/php/autoload.md

>>1050189

На каком?
#20 #1050207
>>1050206
на своем.как создать систему для авторизации на сайте,к примеру на форуме,чтобы оставлять комменты
#21 #1050220
>>1049759
Решил для себя сначала потратить месяц на html/css. Мне почему-то кажется, что лучше это выучить перед php. Зато больше уже не придется к этому возвращаться.
Потом уже пройду все задачи из шапки и просмотрю этот курс.
#22 #1050258
>>1050220

А у нас в шапке есть и на HTML/CSS задачи (только задачи, но зато хорошо проверяют понимание HTML).
#23 #1050301
в жопу ваш пхп,перекатился на питон
https://theknacker.github.io/TheKnacker/default.html #24 #1050388
>>1049933

> Адаптивный пока не делал, но могу.


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

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

Вот например, работа, которую делал другой анон, и которую я в свое время хорошо оценил: http://nsdvw.github.io/template.html - но в ней адптивная версия слабая. Это конечно мой косяк, что тогда не обратил на это внимание и не сделал соответствующие замечания. Я сам на смартфоне сайты почти никогда не просматриваю и потому в адаптивности не очень хорошо разбирался.

Насчет шрифтов - ты просто как-то неправильно опубликовал сайт на gh-pages. Судя по файлам _config.yml, ты используешь генератор статических сайтов Jekyll. Вообще, можно и без этого обойтись - сделать в гите ветку gh-pages на основе master и файлы из нее будут видны на сайте. А судя по https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/ можно даже обойтись без этого и просто сделать содержимое ветки master публично доступным.

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

По сайту:

- надпись see portfloio на кнопке надо средствами CSS сделать заглавными буквами
- иконки соцсетей внизу надо центрировать горизонтально
- кнопку see portfolio можно сделать ссылкой к блоку с картинками внизу
- нужно средствами CSS (+ можно добавить JS для не поддерживающих CSS3 браузеров) сделать, чтобы кнопки выбора категории (All/Graphic/Illustration) работали. То есть надо назначить картинкам категории и скрывать/показывать их при нажатии кнопок с помощью CSS3. Можно с анимацией. Картинка может относиться к нескольким категориям. Нужно сделать привязку картинки к категориями с помощью HTML-разметки (например, атрибутов или классов) как можно логичнее и удобнее.
- картинки портфолио должны быть ссылками на работы
- логотип не соответствует макету
- логотип не реагирует на наведение мыши
- размер текста в меню меньше, чем на макете
- размеры шрифта, отступы в шапке не соответствуют макету. Попробуй рядом открыть макет и скриншот сайта и сравни. Например, отступ под кнопкой не соответствет макету, размеры шрифта в 'We are' и 'Webpaint' разные.
- размер шрифта в Consectetur неправильный
- мне кажется, что размер заголовка "Our Featured Works" не соответствует макету. Или это только у меня?
- отступ между абзацем "Curabitur blandit tempus porttitor. Maecenas faucibus mollis interdum." и кнопками под ним неправильный
- размеры кнопок категорий не соответствуют макету
- надпись "Vestibulum id ligula porta felis euismod semper, malesuada euismod." возможно должна быть блоее бледной (или это просто так шрифты рендерятся? не уверен)
- телефон надо сделать ссылкой с префиксом tel:, адрес - ссылкой на какой-нибудь сервис карт (гугл, яндекс, openstreetmap - любой)

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

По HTML:

- в заголовке не хватает тега, отключающего совместимость со старыми версиями ИЕ (IE=edge)

> <area href="webpaint.html"> - опечатка?


- в HTML коде у тебя ссылка на логотипе сделана как <a href="webpaint.html">ebpaint</a> - значит, боты проиндексируют слово ebpaint, и его же будут читать программы, озвучивающие текст страницы. Плохо, нужно сделать нормальное название в коде
- <section class="section_one"> - лучше давать более осмысленные названия
- <h1>We are <span>Webpaint</span></h1> - тут наверно стоило применить тег strong для выделения названия
- & - знак & лучше кодировать с помощью HTML-мнемоник
- <div class="service_i">, <div class="service_ii"> - незачем делать классы с номерами, всем им можно назначить один класс. Более того, тут можно вообще было не ставить классы, а просто применить правила ко всем детям контейнера
- <div class="monitor_image"></div> - этот тег не нужен, картинку можно сделать с помощью фоновой картинки либо псевдоэлементов
- <h1>Our Featured Works</h1> - тег h1 не должен встречаться более одного раза
- ALL</a> - заглавные буквы надо делать средствами CSS, а в коде писать нормально
- тег address обозначает блок контактной информации, а не строчку с адресом
- контактную информацию о компании нужно оформить с помощью микроразметки vCard: http://microformats.org/wiki/hcard https://yandex.ru/support/webmaster/hcard/general.html?lang=ru (там есть новая версия формата, можно использовать ее)
- <span href - тут должен быть тег <a>
- <p for="cite"> - что тут делает атрибут for? Ну и тег <p> тут не нужен

В общем обрати внимание на то, что не надо городить лишние элементы, если без них легко обойтись. Также, хорошо бы давать адекватные имена классам. Советую ознакомиться с системой именования классов БЭМ:

- https://ru.bem.info/methodology/naming-convention/

Конечно на одностраничных сайтах это не так принципиально, но на больших сайтах без организации CSS превращается в свалку, возникают конфликты (один разработчик пишет правило, ломающее блок другого разработчика), становится трудно что-то править. Потому важно учиться организоывать код, и БЭМ тут хороший и продуманный вариант (в плане разбиения верстки страницы на независимые блоки).
https://theknacker.github.io/TheKnacker/default.html #24 #1050388
>>1049933

> Адаптивный пока не делал, но могу.


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

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

Вот например, работа, которую делал другой анон, и которую я в свое время хорошо оценил: http://nsdvw.github.io/template.html - но в ней адптивная версия слабая. Это конечно мой косяк, что тогда не обратил на это внимание и не сделал соответствующие замечания. Я сам на смартфоне сайты почти никогда не просматриваю и потому в адаптивности не очень хорошо разбирался.

Насчет шрифтов - ты просто как-то неправильно опубликовал сайт на gh-pages. Судя по файлам _config.yml, ты используешь генератор статических сайтов Jekyll. Вообще, можно и без этого обойтись - сделать в гите ветку gh-pages на основе master и файлы из нее будут видны на сайте. А судя по https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/ можно даже обойтись без этого и просто сделать содержимое ветки master публично доступным.

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

По сайту:

- надпись see portfloio на кнопке надо средствами CSS сделать заглавными буквами
- иконки соцсетей внизу надо центрировать горизонтально
- кнопку see portfolio можно сделать ссылкой к блоку с картинками внизу
- нужно средствами CSS (+ можно добавить JS для не поддерживающих CSS3 браузеров) сделать, чтобы кнопки выбора категории (All/Graphic/Illustration) работали. То есть надо назначить картинкам категории и скрывать/показывать их при нажатии кнопок с помощью CSS3. Можно с анимацией. Картинка может относиться к нескольким категориям. Нужно сделать привязку картинки к категориями с помощью HTML-разметки (например, атрибутов или классов) как можно логичнее и удобнее.
- картинки портфолио должны быть ссылками на работы
- логотип не соответствует макету
- логотип не реагирует на наведение мыши
- размер текста в меню меньше, чем на макете
- размеры шрифта, отступы в шапке не соответствуют макету. Попробуй рядом открыть макет и скриншот сайта и сравни. Например, отступ под кнопкой не соответствет макету, размеры шрифта в 'We are' и 'Webpaint' разные.
- размер шрифта в Consectetur неправильный
- мне кажется, что размер заголовка "Our Featured Works" не соответствует макету. Или это только у меня?
- отступ между абзацем "Curabitur blandit tempus porttitor. Maecenas faucibus mollis interdum." и кнопками под ним неправильный
- размеры кнопок категорий не соответствуют макету
- надпись "Vestibulum id ligula porta felis euismod semper, malesuada euismod." возможно должна быть блоее бледной (или это просто так шрифты рендерятся? не уверен)
- телефон надо сделать ссылкой с префиксом tel:, адрес - ссылкой на какой-нибудь сервис карт (гугл, яндекс, openstreetmap - любой)

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

По HTML:

- в заголовке не хватает тега, отключающего совместимость со старыми версиями ИЕ (IE=edge)

> <area href="webpaint.html"> - опечатка?


- в HTML коде у тебя ссылка на логотипе сделана как <a href="webpaint.html">ebpaint</a> - значит, боты проиндексируют слово ebpaint, и его же будут читать программы, озвучивающие текст страницы. Плохо, нужно сделать нормальное название в коде
- <section class="section_one"> - лучше давать более осмысленные названия
- <h1>We are <span>Webpaint</span></h1> - тут наверно стоило применить тег strong для выделения названия
- & - знак & лучше кодировать с помощью HTML-мнемоник
- <div class="service_i">, <div class="service_ii"> - незачем делать классы с номерами, всем им можно назначить один класс. Более того, тут можно вообще было не ставить классы, а просто применить правила ко всем детям контейнера
- <div class="monitor_image"></div> - этот тег не нужен, картинку можно сделать с помощью фоновой картинки либо псевдоэлементов
- <h1>Our Featured Works</h1> - тег h1 не должен встречаться более одного раза
- ALL</a> - заглавные буквы надо делать средствами CSS, а в коде писать нормально
- тег address обозначает блок контактной информации, а не строчку с адресом
- контактную информацию о компании нужно оформить с помощью микроразметки vCard: http://microformats.org/wiki/hcard https://yandex.ru/support/webmaster/hcard/general.html?lang=ru (там есть новая версия формата, можно использовать ее)
- <span href - тут должен быть тег <a>
- <p for="cite"> - что тут делает атрибут for? Ну и тег <p> тут не нужен

В общем обрати внимание на то, что не надо городить лишние элементы, если без них легко обойтись. Также, хорошо бы давать адекватные имена классам. Советую ознакомиться с системой именования классов БЭМ:

- https://ru.bem.info/methodology/naming-convention/

Конечно на одностраничных сайтах это не так принципиально, но на больших сайтах без организации CSS превращается в свалку, возникают конфликты (один разработчик пишет правило, ломающее блок другого разработчика), становится трудно что-то править. Потому важно учиться организоывать код, и БЭМ тут хороший и продуманный вариант (в плане разбиения верстки страницы на независимые блоки).
https://theknacker.github.io/TheKnacker/default.html #25 #1050389
>>1049933

По CSS:

> @font-face {


> font-family: Lato-Black;


> @font-face {


> font-family: Lato-Light;


Неправильно. Это не разные шрифты, а разные начертания одного шрифта (с разным весом). То есть они должны быть объявлены например как Lato, но с разным font-weight/style.

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

- https://transfonter.org/formats
- http://caniuse.com/#feat=ttf

Так, TTF поддерживается довольно широко, но ты бы мог захотеть добавить еще EOT версию для совсем старых ИЕ (вроде 8). Также, ты бы мог захотеть добавить WOFF2 версию, которая современная и дает хорошее сжатие, но работает только в новых браузерах. Конвертировать шрифты можно на fontsquirrel, однако желательно глазами потом проверить результат.

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

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

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

Для подключения шрифта есть так называемый "Mo Bulletproof Syntax" который с помощью разных хаков пытается обеспечить совместимость с максимальным числом браузеров: http://blog.fontspring.com/2011/02/the-new-bulletproof-font-face-syntax/ Также, можно еще подсмотреть,какой синтаксис использует Google Fonts и сделать аналогично.

Шрифт MyriadPro по моему, принадлежит Adobe. У тебя есть лицензия на его использование?

Также, стоит ли подключать целый шрифт ради логотипа? Ты не мог бы сконвертировать его в кривые и сохранить как SVG например? Либо оптимизировать шрифт логотипа, вырезав из него все лишние символы?

То, что ты смог вытащить из макета SVG - это хорошо. Но адоб в них написал мусора (SVG это текстовый формат, посмотри сам). Нужно посмотреть, есть ли возможность сохранить их без адобовских расширений, либо вырезать их. Обычно там есть опция вроде "Save for Web", которая сохраняет картинки в оптимизированном виде. Гугление показывает что в том же иллюстраторе есть опция Export например.

Тут тоже что-то упомянуто: https://commons.wikimedia.org/wiki/User:Quibik/Cleaning_up_SVG_files_manually#Adobe_Illustrator

> header.main_header


Не нужно тут указвыать название тега, это излишне.

> font-family: Lato-Black;


Нужно указывать стандартный шрифт через запятую (sans, sans-serif, cursive итд) в таких случаях.

> a.portfolio_button {


> display: flex;


Я думаю, что не стоит тут использовать flex. Зачем? У тебя же внутри кнопки ничего нету. Также, flex не везде поддерживается ( http://caniuse.com/#search=flexbox ). Мне кажется, его стоит использовать там, где обычные свойства не справляются.

> div.service_i {


> margin: 6% 0.56em 0 0.5em;


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

> display: inline-block;


> justify-content: center;


Эти свойства вообще совместимы? тут написано: https://developer.mozilla.org/ru/docs/Web/CSS/justify-content

> Применяется к: flex-контейнеры



Что-то у меня ощущение, что ты и документацию по flex толком не читал.

> div.service_i {


> max-width: 23%;


Тут должно быть width, а не max-width. Или у тебя колонки могут быть разной ширины?

div.service_i, div.service_ii - тут почти одно и то же, надо избавиться от копипасты

> div.service_i p


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

Вообще, старайся не применять стили именно к p. Так как это просто часть текста, и логичней задавать правила для текста вообще, а не для отдельного абзаца в нем.

> div.service_i p


> width: 100%;


Для блочных элементов это писать не надо. Ты ведь знаешь, как по умолчанию определяется ширина блочных элементов вроде <p>? Если нет - https://github.com/codedokode/pasta/blob/master/html/positioning.md

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

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

Я обычно выбираю браузеры так: новые версии Chrome, Firefox, Edge, древние версии Firefox/Chrome, все версии IE (8, 9, 10, 11), пара смартфонов постарше.

Вот результат: https://www.browserstack.com/screenshots/a0b41a07928e9c8010b4c58f85a3af4f85a80eb3

- FF3.6 и IE8 конечно древние, но они поддерживают CSS2 и что-то минимально работающее в них должно быть сделать нетрудно. Хотя бы чтобы шапка была не белой, а темной, и картинки не вытсраивались вертикально.

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

В некоторых других браузерах все разваливается и разъезжается. Это верный признак того, что верстка сама по себе не очень хорошо продумана, а может ты даже подбирал свойства, не понимая, как они работают. Потому что надо пострататься, чтобы сломать верстку в относительно новом Chrome 14 или IE10.
https://theknacker.github.io/TheKnacker/default.html #25 #1050389
>>1049933

По CSS:

> @font-face {


> font-family: Lato-Black;


> @font-face {


> font-family: Lato-Light;


Неправильно. Это не разные шрифты, а разные начертания одного шрифта (с разным весом). То есть они должны быть объявлены например как Lato, но с разным font-weight/style.

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

- https://transfonter.org/formats
- http://caniuse.com/#feat=ttf

Так, TTF поддерживается довольно широко, но ты бы мог захотеть добавить еще EOT версию для совсем старых ИЕ (вроде 8). Также, ты бы мог захотеть добавить WOFF2 версию, которая современная и дает хорошее сжатие, но работает только в новых браузерах. Конвертировать шрифты можно на fontsquirrel, однако желательно глазами потом проверить результат.

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

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

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

Для подключения шрифта есть так называемый "Mo Bulletproof Syntax" который с помощью разных хаков пытается обеспечить совместимость с максимальным числом браузеров: http://blog.fontspring.com/2011/02/the-new-bulletproof-font-face-syntax/ Также, можно еще подсмотреть,какой синтаксис использует Google Fonts и сделать аналогично.

Шрифт MyriadPro по моему, принадлежит Adobe. У тебя есть лицензия на его использование?

Также, стоит ли подключать целый шрифт ради логотипа? Ты не мог бы сконвертировать его в кривые и сохранить как SVG например? Либо оптимизировать шрифт логотипа, вырезав из него все лишние символы?

То, что ты смог вытащить из макета SVG - это хорошо. Но адоб в них написал мусора (SVG это текстовый формат, посмотри сам). Нужно посмотреть, есть ли возможность сохранить их без адобовских расширений, либо вырезать их. Обычно там есть опция вроде "Save for Web", которая сохраняет картинки в оптимизированном виде. Гугление показывает что в том же иллюстраторе есть опция Export например.

Тут тоже что-то упомянуто: https://commons.wikimedia.org/wiki/User:Quibik/Cleaning_up_SVG_files_manually#Adobe_Illustrator

> header.main_header


Не нужно тут указвыать название тега, это излишне.

> font-family: Lato-Black;


Нужно указывать стандартный шрифт через запятую (sans, sans-serif, cursive итд) в таких случаях.

> a.portfolio_button {


> display: flex;


Я думаю, что не стоит тут использовать flex. Зачем? У тебя же внутри кнопки ничего нету. Также, flex не везде поддерживается ( http://caniuse.com/#search=flexbox ). Мне кажется, его стоит использовать там, где обычные свойства не справляются.

> div.service_i {


> margin: 6% 0.56em 0 0.5em;


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

> display: inline-block;


> justify-content: center;


Эти свойства вообще совместимы? тут написано: https://developer.mozilla.org/ru/docs/Web/CSS/justify-content

> Применяется к: flex-контейнеры



Что-то у меня ощущение, что ты и документацию по flex толком не читал.

> div.service_i {


> max-width: 23%;


Тут должно быть width, а не max-width. Или у тебя колонки могут быть разной ширины?

div.service_i, div.service_ii - тут почти одно и то же, надо избавиться от копипасты

> div.service_i p


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

Вообще, старайся не применять стили именно к p. Так как это просто часть текста, и логичней задавать правила для текста вообще, а не для отдельного абзаца в нем.

> div.service_i p


> width: 100%;


Для блочных элементов это писать не надо. Ты ведь знаешь, как по умолчанию определяется ширина блочных элементов вроде <p>? Если нет - https://github.com/codedokode/pasta/blob/master/html/positioning.md

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

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

Я обычно выбираю браузеры так: новые версии Chrome, Firefox, Edge, древние версии Firefox/Chrome, все версии IE (8, 9, 10, 11), пара смартфонов постарше.

Вот результат: https://www.browserstack.com/screenshots/a0b41a07928e9c8010b4c58f85a3af4f85a80eb3

- FF3.6 и IE8 конечно древние, но они поддерживают CSS2 и что-то минимально работающее в них должно быть сделать нетрудно. Хотя бы чтобы шапка была не белой, а темной, и картинки не вытсраивались вертикально.

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

В некоторых других браузерах все разваливается и разъезжается. Это верный признак того, что верстка сама по себе не очень хорошо продумана, а может ты даже подбирал свойства, не понимая, как они работают. Потому что надо пострататься, чтобы сломать верстку в относительно новом Chrome 14 или IE10.
#26 #1050398
>>1049933

Если вдруг интересно, у меня был урок про верстку под ИЕ: https://gist.github.com/codedokode/855e3970124687b26a1c
14 Кб, 383x459
#27 #1050402
Какой-то кадр зачем-то сделал редирект со своего домена на мой проект. Причём по поисковым запросам почему-то его домен выскакивает значительно раньше моего.

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

Теперь думаю, не лучше было бы чтобы в этом случае скрипт выкидывал 404 или еще какую ошибку?

https://menote.ru - домен воришка уже с моим редиретком
#28 #1050430
>>1050402

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

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

Однако, ты мог бы явно указать поисковикам основной домен в robots.txt: https://yandex.ru/support/webmaster/controlling-robot/robots-txt.html#host?lang=ru

Если ты делаешь редирект, убедись что он идет с кодом HTTP 301 (permanent redirect). А у тебя стоит 302, иди почитай мануалы яндекса.

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

Судя по этой статье, они знают про это: https://yandex.ru/support/webmaster-troubleshooting-info/mirrors/mirror-of-another-site.html

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

Также, стоит подключить вебмастер, если он не подключен.
#29 #1050434
>>1050430
Сенкс. Есть версия что редирект вешают на время чтобы разбанить домен.
#30 #1050435
>>1050430

>А у тебя стоит 302


Как ты узнал?
#31 #1050470
Двач, как средствами пыхи задетектить такой масстив array(1) { [0]=> string(0) "" } и зачистить его, чтобы было array(0) {}? С меня кружка чая.
#32 #1050488
>>1050470
А в кружке точно чай? Не врешь?
15 Кб, 320x270
#34 #1050494
>>1050491
Базиба.
#35 #1050496
>>1050494
Это горшок с "чаем"?
#36 #1050498
>>1050496
Годная кружка, прекращай флудить.

>>1050491 -анон
#37 #1050533
Вообщем придумал себе таск, нужна ваша помощь, так как не могу реализовать понять 3ую часть(php/laravel)
Есть 3 роута:

1) /catalog/authors и метод контроллера который просто выводит список всех авторов из бд

2)/catalog/authors/{author} метод контроллера который выводит имя автора если я передаю его айди соответственно.

С этими 2мя я справился, но вот с 3им

3)/catalog/authors/{author}/{book} не получается
Суть в том что я хочу вывести первую книгу заданного автора

Отношения между моделями соответственно:

Автор-Книга 1:М

методы books() и author() соответсвенно.

Маршрут вида
/catalog/authors/1/1 Работает, НО на /catalog/authors/1/2 Он выдаёт точной такой же результат(тайтл книги к примеру, как и к /catalog/authors/1/1) Хотя 2ая книга автора вообще не задана в БД, ХЕЛП, постарался объяснить максимально понятно как смог.

Все доки русско и англоязычные уже изучил, но все равно не пойму в чем трабл.
#38 #1050538
>>1050435

curl -v 'http://другой домен/'

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

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

>>1050533

Ты не дал ссылку на твой код, как мы поймем, в чем ошибка?
#39 #1050540
>>1050538
Я прошу только подсказать в логике, мб какую-то проверку надо делать? Ну если надо код могу дать.
#40 #1050548
>>1050470
>>1050491
array_filter без колбека удаляет пустые (которые приводятся к false) элементы
#41 #1050584
Задача про Вектор. Доделал вторую часть задачи про оптимизацию затрат. Оп, посмотри, пожалуйста.
https://github.com/telepok/php-test/blob/master/oop4.php
#42 #1050600
>>1050388
>>1050389
>>1050398
Ого, схоронил, спасибо ОП.
Я верстку делал за 16 часов, спать упал часов в 4 утра. Так нельзя делать. Решил попробовать узкие знания. Я ведь даже с этими тонкостями шрифтов не знаком. Все делал как читал спецификации. Тащемта нужно бы поискать ресурсов, где всякие полезности написаны, чтобы улучшить верстку. Алсо в точку ты про псевдо-классы подметил, но с ними нужна практика я думаю, поэкспериментировать для себя хотя бы.

>Ты просто как-то неправильно опубликовал сайт на gh-pages


Я вообще GitHub первый раз использую на самом деле. Буду вики читать.
Ну, я думаю тут и так все понятно, я даже с коллонами не знаком. Наверну литературы, продолжу читать спецификации. Ну и сайтик доделаю, потом сюды кину. А за инфу большое спасибо ОПчик.
Алсо, верстку прям попиксельно делать как на макете? И еще я там нахреначил em, даже писал 0.345em лол, чего навернуть по верстке для утят как я можно? И еще, не можешь подсказать, где такие задания на верстку еще можно взять? Я неправильно гуглю, только вот это нашел -
https://thesiteslinger.com/blog/psd-to-html-slicing-tutorials
Ну и тутор твой изучу конеш, алсо пройду те ссылки в уроках что ты оставил.
#43 #1050621
>>1050207
1. Создаешь таблицу пользователей со столбцами id, логин и пароль, это минимум.
2. Создаешь на сайте страницу авторизации с полями ввода логина и пароля и кнопкой отправки данных.
3. На кнопку вешаешь обработчик который берет логин, введенный пользователем и создает запрос к базе к таблице пользователей. Если находит такого пользователя, то берет пароль из базы и сравнивает с паролем, введенным пользователем. Если все совпадает, то создаешь сессию на сервере с этими данными, ну и в куки пользователю пишешь логин.
4. На определенных страницах, прежде чем отрисовать ее клиенту, лезешь в куки и смотришь есть там что или нет. Если там есть данные о том, что клиент авторизован - отрисовываешь страницу с возможностью комментирования и т.д.

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

>>1050206
Спасибо, почитаю.
46 Кб, 404x299
#44 #1050660
Тред одного Бонифация
#45 #1050687
>>1050621
>>1050621
если юзер новый и хочет зарегаться?
#46 #1050694
>>1050687
Так а разница-то в чем?
1. Создаешь страницу регистрации юзера с теми же полями.
2. Юзер вводит логин и пароль и клацает по кнопке регистрации.
3. Введенные данные отправляются постом на сервер, где твой код создает запрос к базе и записывает в столбец логина логин, который на сервер отправила форма и в столбец пароля записывает хэш пароля, который так же отправила форма.

А потом редирект на страницу авторизации с сообщением о том что регистрация прошла успешно.
#47 #1050697
>>1050694
а че лучше создать базу-пхп админом или консолью?
#48 #1050784
>>1050697
Чем больше нравится.
90 Кб, 437x598
#49 #1051069
Вкатываюсь в php. Вот интересно как сделать счетчик времени вперед. счетчик обратного полно в инете. то есть нужно задать дату когда фапал последний раз и счетчик отсчитывал сколько дней часов и тд прошло от этой даты, stopwach типа.
Вроде задача тривиальная. Можете накидать примерно как это будет выглядить?
#50 #1051078
>>1051069

>выглядить

#51 #1051079
>>1051078

>выглядить


лол. не перечитывал текст
#52 #1051210
>>1051069
нахуй вы такой хуйней занимаетесь,нужно дрочить реальные задачи
#53 #1051215
Есть очень длинное регулярное выражение для preg_match_all

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

<p class=\"genres\">жанр <a data=\"($complex)\" data-tag=\"[0-9]\" href=\"/genres/($complex)\" class=\"audio-track\" itemprop=\"genre\">$complex</a></p>

Так вот как правильно записать, что этого выражения может не быть? [кусоквыражения]? и [кусоквыражения]*? не работают, удаляю кусок - регулярка работает. Помогите кушать хочется
#54 #1051369
>>1051215

> А есть маленький кусок выражения из этого длинного, который может быть, а может и не быть


https://regex101.com/r/QyKvVX/1
И ты пользуйся этим сервисом, а то без регулярки сложно понять, что там у тебя не работает.

Алсо парсить HTML регулярками ненадёжно и сложно, лучше взять пакет вроде этого: https://github.com/FriendsOfPHP/Goutte

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

>>1051210
Ну так описывай сразу, что есть "реальные задачи", а то толку от твоего поста ноль. ИМХО вполне реальная задача у того анона.
#55 #1051622
Сап, программач!
Недавно начал изучать ЖС и понадобился компилятор на шиндовс семь.Какие можете посоветовать?
#56 #1052206
>>1051622

Интерпретатор JS встроен в браузер, а если ты любишь запускать JS код в консоли (что хорошо) и хочешь отдельный интепретатор, то установи Node.JS.
#57 #1052377
Проверьте задачи плз:
-курс валют
https://ideone.com/WRyecp
-первая задача про кубик
https://ideone.com/eEgl2a
-вторая задача про кубик
https://ideone.com/CIhPPM
-таблица умножения
https://ideone.com/cHU78n
-задача про банк и кредит
https://ideone.com/Jriuhk
-айфон
https://ideone.com/xPwyQ0
#58 #1052440
>>1052377
О хуя, у вас нельзя ширину переменной назначать?
#59 #1052441
>>1052440
Толстовато.
Попробуйте тоньше.
#60 #1052444
>>1052441

>.31722768997


Куда тоньше?
79 Кб, 937x358
#61 #1052445
>>1052444

>делает какие-то выводы основываясь на задачках для ньюфагов.


Всё-равно толсто.
#62 #1052446
>>1052445
А от чего у тебя горит? Я думал нуфаков нужно учить таким основам в первую очередь.
#63 #1052448
>>1052446

>это Скриншот с сайта с шапки где мануал для ньюфагов.

#64 #1052450
>>1052448
А че он эти значения не включил?
#65 #1052454
>>1052446
ну не захотел видимо.
#66 #1052461
>>1050540
В методе, который отрабатывает по твоему роуту, второй параметр вообще хоть как-нибудь в работе участвует? Такое ощущение что айди книги в него передается, но из базы происходит выборка без его участия. Посмотри модели и запросы. Возможно у тебя в них просто что-нибудь вроде min(book_id) или min(book_year). Как-то так.
#67 #1052471
>>1050533
А как ты собираешься селектить первую вторую и тд книги у каждого автора?

У книг есть отдельное общее для книг айди, как и отдельное айди для автора?

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

Ну а вообще берешь и дампишь то, что у тебя влетает в метод.

То есть вот у тебя /catalog/authors/{author}/{book}
пишешь
/catalog/authors/test/kek

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

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

Но я вангую что у тебя в логике ошибка какая-то. Ты написал запрос Селект книгу где id автора = 1 и id книги = 1 и это сработало, потому что у книги с id 1 автор действительно имеет id 1, а некс уже не совпало и попизде логика.
#68 #1052612
Сложилась сложная жизненная ситуация и нужны деньги. Через сколько времени после начала изучения я смогу получать деньги с создания сайтов?
#69 #1052616
>>1052612
Через месяца 4 если не кинут.
#70 #1052644
Привет, аноны. В другом треде не ответили, попробую здесь.

Я немного прогаю на PHP, имею понимание, что такое PHP, есть опыт разработки на WordPress, Laravel + несколько самописных систем.

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

Стоит ли устраиваться на постоянку, которая будет подразумевать 8 часов работы в день? Вопрос о том, насколько это сейчас полезное вложение сил и времени, с учетом того, что я буду полностью выкладываться с таким графиком жизни, насколько мне будет полезен этот опыт. В деньгах особо сильно не нуждаюсь (есть где жить, что кушать и на что гулять), но и лишними они не будут.
#71 #1052819
>>1052612
Полгода
#72 #1052820
>>1052644

> "поменять цвет кнопки" и "изменить текст"


Лучше скажи, где найти такую компанию
#73 #1052828
Как подключить mbstring в свой скрипт? Гугл говорит, что нужно в php.ini прописать что-то. Но у меня не проект, а просто скрипт. Как быть ос - винда если что ?
#74 #1052832
>>1052612
Нет, вкатываться в программирование ради денег - дурацкая затея, навеянная тебе рекламой различных сомнительных курсов. ЗП у начинающих обычно на уровне кассиров из пятёрочки, только до уровня начинающего тебе потребуется 6-12 месяцев. И всё это время по-хорошему нужно уделять 4-5 часов в день минимум на обучение.

>>1052828
Всунь phpinfo() в скрипт, на странице увидишь полный путь к php.ini, который используется. Его и редактируй.

> винда


Это мало о чём говорит, ты руками сервер ставил или какую-то сборку использовал?

>>1052644
Пробуй. Меня затянуло так, что дропнул вышку.
#75 #1052834
>>1052828
Очевидно, что для запуска php-скрипта у тебя должен быть установлен интерпретатор php. По умолчанию он устанавливается в c:\php, если у тебя винда.
Далее, копируешь файл php.ini-production в php.ini. И уже в этом php.ini находишь строчку extension=php_mbstring.dll и убираешь символ ; в ее начале.
18 Кб, 538x111
#76 #1052838
>>1052832

> ты руками сервер ставил или какую-то сборку использовал?


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

>>1052828

> копируешь файл php.ini-production в php.ini


Спасибо няш, помогло.
#77 #1052857
>>1052828

php.ini задает настройки глобально для PHP, и действует на все скрипты.
#78 #1052859
>>1052838

Сразу же включи там display_errors = On и error_reporting = E_ALL, а то ошибки не будут отображаться.
#79 #1052862
>>1052859

>display_errors = On


Включил.

>error_reporting = E_ALL


Стоит error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Стоит поменять?

>>1052857
Спасибо, буду знать.
2,1 Мб, 1914x971
#80 #1052891
Помогите пожалуйста, нужно список с бордами вниз страницы разместить.
HTML - https://pastebin.com/Zm0Z2AEc
CSS - https://pastebin.com/urNpQuYn
#81 #1052899
>>1052862

Да, стоит, так как сейчас у тебя отключены предупреждения об использовании устаревших функций и возможностей.
Вопрос по ларавель #82 #1052933
Братаны, как лучше разобраться в архитектуре лары? Изучил все основы для решения рядовых задач( бложики, интернет магазины, хотя там юзал библиотечку корзинки с гита, инф. порталы, админочки и подобный шлак круд запросов). Хочется писать более сложные и бОльшие проекты, чем есть на данный момент. Именно поэтому хочу изучить архитектуру. Почему лара?
Лень копаться в симфони, да и она меня устраивает(blade рулит!). Хочется изучить архитектуру, дабы в сложнейших ситуациях не быть связанным по рукам и ногам.
#83 #1052937
>>1052933

Не хочешь сделать задание на TestHub из ОП поста на ларавеле? Оно по уровню сложности напоминает реальные приложения.
#84 #1052939
>>1052933
забыл напомнить, что я нулина в англ лэнгвич
#85 #1052940
>>1052933
забыл напомнить, что я нулина в англ лэнгвич>>1052933
#86 #1052942
>>1052933

Вот само задание: https://gist.github.com/codedokode/8733007

Без знания английского конечно твои возможности сильно ограничены.
Vim #87 #1052945
Добрый день, хотел использовать vim в дополнение к своему phpstorm'у, как легкий редактор, но не нашел автодополнение к php. Кто знает, подскажите, пожалуйста.
#88 #1052950
>>1052942
я понял, а есть ли еще подобного рода проекты, заранее, так скажем, ибо энтузиазма хоть отбавляй
#89 #1052953
>>1052933
Как можно изучать laravel без курсов на laracast и знания английского? ты даун?
#90 #1052956
>>1052953
русская документация и слитые курсы 5.2
#91 #1052996
$link = $link + 2;

Выводит 2.19666239566E+19
Нужно вывести int
Преобразование через (int) дает ноль
Как решить?
#92 #1053019
Помогите с регулярками:

>сначала идет +7 или 8, за ними ровно 10 цифр, между которыми может быть любое число скобок, минусов, пробелов


Первую часть я могу сделать. А вот

>между которыми может быть любое число скобок, минусов, пробелов


не могу придумать как сделать. Похоже что мне нужна регулярка, которая может встречаться где угодно от 0 раз и больше.
#93 #1053057
>>1052996

printf('%d') не помогает?

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

Почитать про этот формат можно в моем посте >>1048758 подробно.
#94 #1053081
>>1053019
([- \\(\\)]*[0-9]){10}
Регулярное выражение, которое находит десять комбинаций вида цифра и перед ней пробел, минус, скобка. Это из первой задачи про номера.

[- \\(\\)]
Это из второй задачи, регулярка ищет все лишние символы и потом меняет их на пустую строку, по сути, выкидывает
$regexp1 = "/[- \\(\\)]/u";
$replace_result = preg_replace($regexp1, "", $number);

Двойные обратные слеши экранируют символы скобки.
#95 #1053085
Я наверное погорячился выше с советом копировать в php.ini файл php.ini-production. Для разработки и отладки наверное наоборот имеет смысл взять содержимое php.ini-development. Там как раз и логирование более широко включено.
#96 #1053235
Не помогает. Мне нужно передать get запрос числами. Но эти числа формируются арифметическими методами. Я пробовал перевести в строку, но не вышло

print "--------- $link_melodious --------------";
$link_melodious = strval($link_melodious);
print "=========== $link_melodious =============";
printf($link_melodious);

Итог:

--------- 4.55576239566E+19 --------------=========== 4.55576239566E+19 =============4.55576239566E+19
#97 #1053240
>>1053235
Странно очень

var_dump($link_melodious);

string(17) "4.55576239566E+19"
#98 #1053255
>>1053240
Тобi пизда.
#99 #1053600
Где можно посмотреть решения на задачи отсюда - archive-ipq-co.narod.ru ?
#100 #1053846
Нахуй Ютуб такой шакальный дизайн сделал?
#101 #1053865
Котаны, мне пришла в голову интересная затея. Мы прекрасно знаем, что существуют браузерные игры разного типа. С помощью современных инструментов даже можно создавать ММО всякие.
Можно ли создать браузерную MMO RTS используя современные инструменты?
#102 #1053915
>>1053865
в вопросе есть ответ
#103 #1053955
Как поменять template в checkBoxList yii2? пробовал: передавать в опциях $form->field($model, 'checkbox', ['template' => '{item}']), пробовал передавать в опциях самого checkboxlist : ->checkBoxList($items, ['template' => '{item}'])
Пробовал передавать items кастомную функцию - рендерится стандартный темплейт всегда
->checkBoxList($items, ['item' => function($a,$b,$c...$z) { // }])
#104 #1053963
>>1053955
Нашел: вместо \yii\widget\ActiveForm использовал \yii\bootstrap\ActiveForm, в первом почему то функция item не отрабатывала
#105 #1054241
Вопрос: Почему при использовании checkbox и checkboxList внутри создается скрытый инпут с таким же именем?
#106 #1054303
База данных Postgre sql выдает результат вот такими вот буковками:
Ђ«ҐЄбҐ©Љ®§«®ў

в базе данных указана UTF8
При подключении '--client_encoding=UTF8'
что не так?
#107 #1054331
>>1054241
Читаю Котерова сейчас, в пиратском скане, но денег на книгу нет, к сожалению.
Так вот, скрытые чекбоксы делают по той причине, что браузер передает данные о чекбоксе только в том случае, если он нажат. Если не нажат, то совсем ничего не передается. Это может быть неудобным. Скрытый чекбокс передает ноль в любом случае, который перебивается единицей в случае активирования чекбокса.

<input type="hidden" name="known[PHP]" value="0">
<input type="checkbox" name="known[PHP]" value="1">PHP
#108 #1054405
>>1054331

Если честно, выглядит как какой-то костыль - достаточно переставить местами инпуты (или поменяться алгоритму разбора URL в PHP) и все сломается. Не надо так.
#109 #1054581
>>1054405

>Не надо так.


Предложите свой вариант. Человек спросил, для чего это вообще делается, я ответил. Я сам занимаюсь изучением две недели от силы и не претендую на истину в последней инстанции, более того, я ссылаюсь на довольно авторитетный источник.
И в общем-то, как может поменяться порядок разбора, если ты знаешь, что перед каждым чекбоксом стоит скрытый чекбокс, стоят они парами, имена элементов у них совпадает, второй видимый элемент всегда переписывает значение невидимого.
#110 #1054587
>>1054581
Двачую этого. Если не можешь предложить альтернативу - Лучше молчи.
#111 #1054603
>>1054581

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

Если же речь не о фреймворке, то надо просто не ставить скрытые инпуты, а ставить только чекбоксы.
#112 #1054669
ActiveDataProvider может работать с двумя независимыми таблицами? есть 2 таблицы с равнозначными сущностями но которые между собой никак не связанны, нужно вывести сводную таблицу.
#113 #1054765
Запощу здесь, вдруг есть желающие, итак:
Москва, требуется PHP разработчик в одну крупную компанию.
Проект объемный и долгосрочный, расскажу по скайпу.
По стеку: PHP7, MySql, Redis, RabbitMQ, разумная верстка на Bootstrap + js
По деньгам: 100к+
Коллектив небольшой, зп белая и стабильная(требуется диплом о законченной вышке, увы, но таковы требования).
Нужно хоть что-то уметь на PHP и иметь желание работать и обучаться.
Почта для связи: php-dev-$,DrequiredANUSyL{AandexPUNCTUMr^[-u
#114 #1054771
>>1054765
На полную ставку?
#115 #1054776
>>1054771
Да, полный день, в офисе.
#116 #1054783
>>1054765
фальшивый диплом о законченной вышки пойдет?
все равно ж нет никаких мифических баз
#117 #1054967
Помогите понять в чем проблема.

Пхп не хочет понимать катакану, выдает эроры.

Как пример: https://ideone.com/d34lwi

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

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

Parse error: syntax error, unexpected ''こえ'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' in C:\OpenServer\domains\nech.voc\index.php on line 8

Не понимаю просто :(
#118 #1054994
>>1054967
Видимо сами символы, которые ты подставляешь из базы, или копируешь со страницы, пришли в другой кодировке.

Я взял те же символы с википедии, все норм.
https://ideone.com/b1vlPR

Что самое интересное, даже при удалении символов хираганы, ошибка остается.
https://ideone.com/QmoW9P
Видимо там остаются какие-то невидимые ошметки, спецсимволы или какая-нибудь другая нех.
Короче проблема в копировании из некорректного источника.

Почему так происходит не знаю, нужно суммонить опа.
#119 #1055002
>>1054765

> хоть что-то уметь на PHP


> обязательная вышка


Вместо того, чтобы брать человека, навыки которого будут приносить вам деньги, вы готовы брать кого попало, но с бумажкой. Я сам учился на программиста и львиная доля моих одногруппников с корочками ничего сложнее цикла написать не могут. Советую пересмотреть ваши странные требования, иначе адекватные разработчики будут обходить вас стороной.
#120 #1055012
>>1054967

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

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

- https://ru.wikipedia.org/wiki/Hex-редактор
- https://en.wikipedia.org/wiki/Comparison_of_hex_editors

Файл состоит из байтов, каждый байт состоит из 8 бит и может принимать 2 ^ 8 = 256 значений. Их обычно обозначают числами от 0 до 255. В hex-редакторах принято использовать 16-чные числа, так как одна 16-ричная цифра соответствует ровно 4 битам и байт можно записать в виде 2 цифр, от 00 до FF.

В случае utf-8, символы различить довольно просто:

00-1f - невидимые символы вроде перевода строки (0A в линуксе)
20 (=32 десятичное) пробел
21-7e символы ASCII - латинница, цифры, знаки препинания
7f-9f - невидимые и неиспользуемые символы
a0-fe - используются группами для кодирования остальных символов. Кирилица кодируется например парами таких символов. Ну например,
ff - вроде не используется

Если что, кодировки строк описаны в моем уроке https://github.com/codedokode/pasta/blob/master/cs/strings.md

Сам PHP ничего не знает про кодировки, а все специальные символы (знак доллара, кавычки, арифметические операции) располагаются в диапазоне ASCII. Символы с кодами выше 7f для него ничего не значат и могут встречаться только в определенных случаях: строках, именах переменных (да, можно писать переменные кирилицей, если ты любишь 1С) или комментариях.

Скачиваем и открываем твой код в hex-редакторе. Мне было лень искать на компьютере HxD который у меня где-то есть, и я просто взял первый попавшийся онлайн-редактор: https://hexed.it/ и открыл им скачанный с ideone файл. Вот ссылка для ленивых: https://hexed.it#base64:PD9waHAKbWJfaW50ZXJuYWxfZW5jb2RpbmcoInV0Zi04Iik7Cgokdm9jYWJ1bGFyeSA9IGFycmF5KAoJJ9C00L7QvCcgPT4gJ+OBhuOBoScsCgkn0LPQvtC70L7RgScgPT7jgIAn44GT44GIJywKKTsKCnZhcl9kdW1wKCR2b2NhYnVsYXJ5KTs= (содержимое файла закодировано в самой ссылке).

Он довольно удобный, показывает не только коды, но и соответствующие им символы, а также раскодирует выделенные байты в разных форматах.

Открыв файл, мы изучаем по очереди байты, сразу пропуская "обычные" байты с кодами меньше 7f. Смотрим только на байты с кодами старше 7f и проверяем, нет ли там чего странного.

Вот например как кодируется слово "дом": D0 B4 D0 BE D0 BC (проверить коды можно тут http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024 )

А вот строка うち: E3 81 86 E3 81 A1 (проверить: http://www.utf8-chartable.de/unicode-utf8-table.pl?start=12288&number=128 )

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

Также вместо hex-редактора можно использовать режим в текстовом редакторе, показывающий не-ascii символы, но полезно будет хоть раз поковыряться в байтах.
#120 #1055012
>>1054967

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

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

- https://ru.wikipedia.org/wiki/Hex-редактор
- https://en.wikipedia.org/wiki/Comparison_of_hex_editors

Файл состоит из байтов, каждый байт состоит из 8 бит и может принимать 2 ^ 8 = 256 значений. Их обычно обозначают числами от 0 до 255. В hex-редакторах принято использовать 16-чные числа, так как одна 16-ричная цифра соответствует ровно 4 битам и байт можно записать в виде 2 цифр, от 00 до FF.

В случае utf-8, символы различить довольно просто:

00-1f - невидимые символы вроде перевода строки (0A в линуксе)
20 (=32 десятичное) пробел
21-7e символы ASCII - латинница, цифры, знаки препинания
7f-9f - невидимые и неиспользуемые символы
a0-fe - используются группами для кодирования остальных символов. Кирилица кодируется например парами таких символов. Ну например,
ff - вроде не используется

Если что, кодировки строк описаны в моем уроке https://github.com/codedokode/pasta/blob/master/cs/strings.md

Сам PHP ничего не знает про кодировки, а все специальные символы (знак доллара, кавычки, арифметические операции) располагаются в диапазоне ASCII. Символы с кодами выше 7f для него ничего не значат и могут встречаться только в определенных случаях: строках, именах переменных (да, можно писать переменные кирилицей, если ты любишь 1С) или комментариях.

Скачиваем и открываем твой код в hex-редакторе. Мне было лень искать на компьютере HxD который у меня где-то есть, и я просто взял первый попавшийся онлайн-редактор: https://hexed.it/ и открыл им скачанный с ideone файл. Вот ссылка для ленивых: https://hexed.it#base64:PD9waHAKbWJfaW50ZXJuYWxfZW5jb2RpbmcoInV0Zi04Iik7Cgokdm9jYWJ1bGFyeSA9IGFycmF5KAoJJ9C00L7QvCcgPT4gJ+OBhuOBoScsCgkn0LPQvtC70L7RgScgPT7jgIAn44GT44GIJywKKTsKCnZhcl9kdW1wKCR2b2NhYnVsYXJ5KTs= (содержимое файла закодировано в самой ссылке).

Он довольно удобный, показывает не только коды, но и соответствующие им символы, а также раскодирует выделенные байты в разных форматах.

Открыв файл, мы изучаем по очереди байты, сразу пропуская "обычные" байты с кодами меньше 7f. Смотрим только на байты с кодами старше 7f и проверяем, нет ли там чего странного.

Вот например как кодируется слово "дом": D0 B4 D0 BE D0 BC (проверить коды можно тут http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024 )

А вот строка うち: E3 81 86 E3 81 A1 (проверить: http://www.utf8-chartable.de/unicode-utf8-table.pl?start=12288&number=128 )

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

Также вместо hex-редактора можно использовать режим в текстовом редакторе, показывающий не-ascii символы, но полезно будет хоть раз поковыряться в байтах.
#121 #1055013
>>1055002

Скорее всего это не IT-компания, а какая-то компания, где айтишники вспомогательный персонал, отсюда и требования.
#122 #1055018
>>1054765

>требуется PHP разработчик


>По стеку: PHP7, MySql, Redis, RabbitMQ, разумная верстка на Bootstrap + js


А ещё с++, java, python и опыт в заправке картриджей.
#123 #1055020
Тут нужна картинка про php и js. Там ещё хипстеры.
356 Кб, 1280x1417
#124 #1055023
>>1055020
Прилепил.

>>1055018
Ты не прав, требования абсолютно нормальные. У рубистов и C# разрабов тоже просят Bootstrap + JS. Вот если бы просили верстать из PSD и писать на Angular/React, то да.
#125 #1055028
>>1055023

>требования абсолютно нормальные.


Для чего идти к вам если вон в соседнем офисе ерохин юзает только Bootstrap + js.
#126 #1055132
>>1054994

>Короче проблема в копировании из некорректного источника.



Ну некорректный источник - это когда ставишь кароче японскую раскладку на шинду и можешь писать: あいうえお かきくけこ さしすせそ たちつてと ща попробую с сосаки скопировать
80 Кб, 1032x534
#127 #1055184
>>1055023
Кокая хорошая картинка, прям соответствует реальности
#128 #1055246
>>1055184
Откуда такие вакансии берутся? Даже грузчики больше получают ведь.
Неужели на них кто-то откликается?
#129 #1055268
>>1054765
Есть диплом о вышке (МГУ), но гуманитарный. Такой сойдет?
sage #130 #1055270
>>1055246
Вполне адекватная вакансия. Если ты хочешь зарабатывать больше, ты должен доказать, что ты этого достоин. Никто не будет тебе платить просто так.
#131 #1055274
>>1055184
На пике вброс. Не обращайте внимание.
#133 #1055281
>>1055246
А почему грузчики должны меньше получать? Что там, что тут четырех высших не требуется.
#134 #1055285
>>1055270
Директор Лидер-М, плиз.
Вакансия больше похожа на поиск дешевой рабочей силы незнающих нюфагов.
#135 #1055287
>>1055281
толстота
#136 #1055293
Не знаю, куда написать, поэтому спрошу здесь: везде сказано, что html5 обратно совместима с html4, а как быть с теми тегами, которые поддерживаются в 4 версии и удалены в 5?
#137 #1055295
>>1055293

"Удалены" - такого нет. Они просто помечены "устаревшими" и не рекомендуются к использованию.

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

Да и те теги, которые помечены устаревшими - справедливости ради, они нигде и не нужны.
#138 #1055302
>>1055287
Где толстота? Им требуется племянник бухгалтерши который будет обновлять новости на сайте.
#139 #1055303
>>1055302
Съеби зелень. Речь про грузчиков.
#140 #1055325
>>1055303
Где у тебя речь про грузчиков?
#142 #1055328
>>1055326
С чего вдруг физический труд должен стоить копейки?
#143 #1055330
>>1055328
С того, что иди нахуй зелёный пидор.
#144 #1055332
>>1055330
Аргументно.
#145 #1055333
Хватит флудить
#146 #1055336
почему в CSS до сих пор нет нормальной системы позицирования элементов?
#147 #1055340
>>1055336

Я там 8 способов позиционирования насчитал: https://github.com/codedokode/pasta/blob/master/html/positioning.md#Виды-позиционирования

Недостаточно? Чего тебе не хватает? Чтобы само собой все работало и угадывало желания, такое вряд ли будет.
#148 #1055342
>>1055340
а что насчет flexbox?норм тема?
#150 #1055353
>>1055344
Это в итоге вакансия для какого-нибудь студента с 4-6 часами занятости в день. В итоге на самом деле чему-то научишься и можно сказать что для чела без опыта будет неплохой старт.
#151 #1055354
>>1055353

>Иметь опыт веб-разработок от 1-го года;


>Режим работы 5 дней в неделю с 09-00 до 18-00


Это точно не для студента
#152 #1055356
>>1055354
Ребзя, предлагаю вам пройти в https://2ch.hk/pr/res/1055242.html#1055312 (М)
Ма вым перезвоним тред. Тут это как-то неуместно.
#153 #1055364
>>1055354
Давайте туда проще кто-то позвонит и спросит, рили ли эта вакансия подразумевает опыт работы в 2 года, все вышеперечисленные знания на высоком левеле и полный рабочий день при этом с зп в 15к? Или нужны поверхностные знания в требуемых системах и в итоге неполный день?
#155 #1055419
двач,я не могу создать формы для отправки данных,у меня в башке каша от количества аттрибутов
#156 #1055425
>>1055295
Тогда ещё вопрос, возможно, глупый - почему стандарты новых тегов вроде <article> определены 1999 годом (версией 4.01)?
#157 #1055428
>>1055419
Что именно у тебя не получается?
#158 #1055432
>>1055419
Возьми и приведи в порядок мысли, у всех такое бывает, когда не можешь додуматься до продуктивного кода.
Почитай: https://geektimes.ru/post/292373/
#159 #1055433
>>1055432
Да и еще, не принимай всерьез мнение автора, просто прими к сведению, что пойти попить чаек это не смертельно.
Попробуй упростить задачу, раздели на кусочки, нутыпонял.
#160 #1055440
>>1055432
я пока решил не заморачиваться и использую форму с руководства по пыхе.
#161 #1055445
>>1055440
но теперь встал вопрос,как функция вывода текста в скрипте action приймет этот текст с формы?
#162 #1055455
>>1055425

Тут https://developer.mozilla.org/ru/docs/Web/HTML/Element/article внизу стоит ссылка на HTML5

В HTML4.01 не было article. Убедись сам: https://www.w3.org/TR/html401/index/elements.html
#163 #1055466
>>1055407

>С ЛЕНДИНГАМИ МЫ И САМИ ЧАСТИЧНО СПРАВЛЯЕМСЯ


>ХУЯРЬТЕ БИТРИКС


>ОТ ВАС НАДО ПОРТФОЛИО



Ну хоть сказали что нагрузка 4-5 часов в неделю, это рили не напряжно. Хотя может быть рили пиздеж и будут наваливать на тебя всю хуйню которую остальным лень делать и будешь по 50 часов в неделю хуярить и еще и обучаться битриксу повыходным))) Пиздец как же всё плохо иногда :(
sage #164 #1055500
>>1055466
На работе надо работать, вот пиздец, да?
#165 #1055555
У меня проблема. Я начал очень медленно и печально делать студентлист. Установил postgreSQL, как советовал опчик в своих уроках, на виндовс 8.1 и тут же появилась первая проблемка. База данных создается только с кодировкой 1251 для русского или 1252 для ангельского в смыде collation character_type. Encoding стоит УТФ8. https://i.stack.imgur.com/6skDi.png
отображение в таблице выглядит как utf8->1251 ну и конечно при выгрузке таблице в пхп выглядит точно так же. При этом везде пишут что виндовс в постгре не поддерживает collation utf8 и что делать в этом случае я прям ума не приложу. Спросил в Едином баз данных тренде мне сказали "Collation и Character type выстави как UTF8." но не сказали как. Анонас помогай прошу!
#166 #1055575
>>1055500
Когда на тебя вешают 10 сайтов, два из которых на битриксе, два на джумле, остальные на магенто, модх и прочей залупе. И ты должен копаться во ВСЕМ этом говне по 10 часов в день за 15к, то это немного выходит за рамки адекватности вообще. Твоя язвительность сосет хуй кароче.
#167 #1055641
>>1055407
обоже неужели кто-то тральнул? XDD
#168 #1055643
>>1055407
я бы эти 15 штук завернул в трубочку и запихал ему в попу, а не портфолио.
сайты они переносят, ну так бы и писал - нужен даун заполняющий сайты и переносящих их с модХ на битрикс. Все.
#169 #1055644
>>1055466

>4-5 часов в неделю


4-5 часов в ДЕНЬ, мань, в уши не долбись. почти полный рабочий день.
#170 #1055720
Порекомендуйте задачник по пхп, в интернете натыкаюсь лишь на примитивные или те, что якобы будут на собеседовании, для меня они слишком сложны.
#171 #1055730
>>1055720
Прорешай сначала "примитивные". Вот же:http://archive-ipq-co.narod.ru/
#172 #1055743
>>1055730
Я их решал. Потом запнулся на регулярных выражениях, а через время стал замечать, что пройденное вылетает из головы. Нужно практиковаться на разных задачах.
#173 #1055755
>>1055743
А ты понимаешь почему код в данных задачах именно так работает? Нужно пытаться прежде всего понять почему, тогда и вспомнить легче будет.
возможно капитан
#174 #1055759
>>1055755
Я то понимаю, некоторые из них решал несколько раз, переделывал иначе, на что фантазии хватило.
#175 #1055775
>>1055644
Ты тупенький? Ну очевидно же что опечатка. И между полным рабочим днем и 5 часовым кстати огромная блядь разница. Я проходил работу и по 4 и по 6 часов. 4х часовой рабочий день вообще не замечаешь в плане нагрузки. Тупо как сходить прогуляться до обеда или на курсы. в 2 свободен и в 3 дома - очень изи.
6 почти тоже самое. Ключевое тут что не нужен считай обед, можно поесть тупо до и после работы. А когда ты работаешь по 8, то внезапно уже оказывается что есть еще и час обеда, который якобы твой, но по факту бывает что и нихуя. В итоге 9 часов минимум на работе. Учитывая дорогу то бывает что между выходом из дома и возвращением уже и 11 часов проходит в худшем случае. А это с учетом сна означает что на всю оставшуюся жизнь включая ужины, завтраки, готовки, стирки, уборки и мытье посуды со своей тушкой у тебя остается 4 часа.

Что бы ты правильно понял к чему я, привиду пример с выходными. Если ты работаешь 5 дней вместо 6, то ты хуяришь не "всего лишь" на 20% больше. Ты отдыхаешь В ДВА РАЗА МЕНЬШЕ ПО ФАКТУ. Чувствуешь разницу:? Так же и с рабочими часами. Каждый рабочий час после 6 в два раза ценнее в плане отнятого у тебя отдыха.
#176 #1055795
>>1055775
ой да ладно огромная, я со всеми обедами и дорогой до работы от силы часов 6 работаю. А тут прям аж целых 5 часов за 15ку и незвестно еще сколько тебя грузить будут. обычно такие жадины грузят на 10часовой день и еще выходные.
я не понимаю, зачем ты их оправдываешь? таких уебков нужно гнать ссанной тряпкой с хх
#177 #1055933
>>1055555

Я, пользуясь своими навыками гугления, нашел такие разделы документации постгрес:

https://postgrespro.ru/docs/postgresql/9.6/charset.html

и там

https://postgrespro.ru/docs/postgresql/9.6/multibyte.html

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

https://postgrespro.ru/docs/postgresql/9.6/locale.html
https://wiki.archlinux.org/index.php/Locale_(Русский)
https://www.shellhacks.com/ru/linux-define-locale-language-settings/
и про виндовые локали https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd318716(v=vs.85).aspx

Как я понимаю, чтобы выбрать utf-8 для БД, должна быть задана совместимая с ней локаль при инициализации базы. В линуксе это было бы например en_US.utf-8, но как правильно называется такая локаль в винде, я не уверен. Судя по MSDN https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd373814(v=vs.85).aspx это должно быть en-US.

После того, как ты проиницализировал БД с указанием локали, через initdb (как описано в документации), создай базу с указанием кодировки через createdb или SQL-запрос. Напиши, если что-то не получится.

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

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

Ну а потом только остается настроить кодировку на клиенте, если ты PDO используешь, там наверняка опция есть.
#177 #1055933
>>1055555

Я, пользуясь своими навыками гугления, нашел такие разделы документации постгрес:

https://postgrespro.ru/docs/postgresql/9.6/charset.html

и там

https://postgrespro.ru/docs/postgresql/9.6/multibyte.html

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

https://postgrespro.ru/docs/postgresql/9.6/locale.html
https://wiki.archlinux.org/index.php/Locale_(Русский)
https://www.shellhacks.com/ru/linux-define-locale-language-settings/
и про виндовые локали https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd318716(v=vs.85).aspx

Как я понимаю, чтобы выбрать utf-8 для БД, должна быть задана совместимая с ней локаль при инициализации базы. В линуксе это было бы например en_US.utf-8, но как правильно называется такая локаль в винде, я не уверен. Судя по MSDN https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd373814(v=vs.85).aspx это должно быть en-US.

После того, как ты проиницализировал БД с указанием локали, через initdb (как описано в документации), создай базу с указанием кодировки через createdb или SQL-запрос. Напиши, если что-то не получится.

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

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

Ну а потом только остается настроить кодировку на клиенте, если ты PDO используешь, там наверняка опция есть.
#178 #1055958
Вкатываюсь, к вам, после 3х лет хуипинания, надеюсь мозг окончательно не окостенел, из базы 2курса на примате, параллельно постараюсь изменить еще некоторые стороны своей жизни, но сейчас не об этом, больше всего боюсь потерять остатки мотивации и интереса к проге, наверное, поэтому и отписуюсь в треде. Планирую уделять по 5 часов, в день, пока позволяет нынешняя работа и надеюсь, при таком ритме, через полгода, смогу вползти джуном за еду или, хотя бы, на курсы для отсталых при норм конторах, алсо почти 24лвл. Спасибо, что прочитал этот поток сознания, подбодри или обоссы.
#179 #1056000
как работает глобалка $_SERVER?
#181 #1056038
>>1055643

>нужен даун


Блять с третьего раза проиграл чот.
#182 #1056055
Хороший тред, добра.
мимо начал заниматься этим как хобби, денежного интереса нет, никуда не спешу
#183 #1056058
>>1056036
я не понимаю как это работает на практике
#184 #1056065
>>1056055
Зачем?!!! Чем микроконтроллеры не устроили, как вариант, или всякие контесты типа http://russianaicup.ru. Звучит, как: стал подметать улицы как хобби, денежного интереса нет, никуда не спешу.
#185 #1056067
>>1056065
Не знаю о чем ты, я начал искать адекватные задачники по хтмл цсс, решил зайти сюда, а тут материал по полному веб стаку который в дальнейшем пригодится и расписанный очень качественно, и плюс то, что я искал. Хорошая шапка, хороший оп.
#186 #1056070
>>1056067
Ничего не имею против треда, шапки, опа, веба и т.д. Сюда идут зарабатывать деньги, делая веб странички для булочных. Это же рутина рутин!
#187 #1056075
>>1056070

Ты зря по себе о других судишь. Алсо, не надо тут разводить флуд, для этого есть другие треды.
#188 #1056076
Можно ли с помощью include вставить не только код php, но и html?
#189 #1056080
>>1056075

>Начал оффтоп не по теме


>Начал флудить в ответку


>Не надо флудить тут


Хуя ты жирный.

мимокрок
#190 #1056109
>>1056076

include ничего никуда не вставляет (у нас тут не Си). include делает 2 вещи:

- если требуемого файла нет, выдает предупреждение
- если есть, выполняет код в нем (выполняется код внутри <?php, остальное просто выводится).

Соответственно если в подключаемом файле не ставить теги <?php, то его содержимое просто выведется как есть, что наверно тебе и нужно. Но для этой цели лучше использовать readfile, который просто выводит файл и не пытается ничего выполнять.
#191 #1056135
ОП, подскажи пожалуйста. Если файл (сущность в приложении) может храниться как удалённо (на каком-нибудь хранилище), так и локально (в публичной папке), то целесообразно ли в сущность помещать ресурс [1] файла, чтобы код, работающий с этим файлом, не знал откуда этот файл извлекается. Это удобно, чтобы избежать дублирования if'ов по коду вроде такого:
if (файл удалённый) {
скачать;
переместить;
} else {
соединить путь к публичной папке с относительным путём файла;
переместить;
}

[1] - http://php.net/manual/en/language.types.resource.php
#192 #1056138
>>1056109
Спасибо, просто не могу понять один момент: вчера начал изучать на специалисте, задание было вырезать из блоков html и php код, вынес все в отдельные файлы, использовал include, получилось некорректное отображение сайта
#193 #1056162
>>1056135

А как ты получишь дескрипто файла для файла в удаленном хранилище?

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

Есть кстати класс SplFileInfo для локальных файлов, но мне он не нравится, там все как-то в кучу смешано.

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

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

>>1056138

трудно сказать где ошибка, не видя кода.
#194 #1056163
А что, собственно, нужно доделать в задачке l33tspeak, она вроде и так работает, а если нужно декодировать, чем она отличается от предыдущей?
#195 #1056190
напомню, что в старом треде проверил задачи:

про https://github.com/pricklynut/testhub >>1053064
про https://github.com/telepok/php-test/blob/master/oop4.php >>1056159
вопрос, где можно посмотреть исходники функций сортировки >>1056189

>>1056163

Добавить несколько букв наверно? Вообще, она на изучение функции strtr, если ты ее знаешь, можно не делать.
#196 #1056218
>>1050660
Годно.
#197 #1056246
>>1049870

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

>>1049956

Насколько я знаю, на Андроиде можно не только читать учебники и писать код, но и запускать PHP, использовать mysql (локально, без интернета). Понадобятся такие вещи:

- редактор для кода
- клавиатура со спецсимволами, на обычной замучаешься переключаться
- интерпретатор php
- БД mysql (если ты хочешь использовать БД)
- веб-сервер, например, Апач или встроенный в PHP
- возможно, консоль для работы с командной строкой

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

Что касается верстки, тут проблем быть не должно - правишь код, сохраняешь файл на карту (диск?) и открываешь в браузере через file://... или встроенным просмотрщиком.

У меня есть андроид-смартфон, я пока не пробовал настроить на нем все для кодинга. Надо будет как-нибудь потом попробовать.

В Google Play - я поискал, ищутся такие вещи:

1) https://play.google.com/store/apps/details?id=com.alfanla.android.pws&hl=en - тут вроде веб-сервер (lighttpd) + PHP/mysql , вроде бесплатно, но с рекламой.

2) Это не в Google Play, а отдельно. Можно установить Script Layer 4 Android - SL4A - https://ru.wikipedia.org/wiki/SL4A - по идее он предназначен для написания приложений используя скриптовые языки, но подойдет и для наших целей. К нему поставить PHP for Android: http://phpforandroid.net/doku.php - и если заработает, можно будет запускать PHP код и использовать встроенный в PHP веб-сервер (а если очень заморочиться, то можно даже писать андроид-приложения на PHP, но пожалуйста, не надо).

Может еще что-то есть, погугли. Поиск в Google Play вываливает кучу вариантов и устанешь каждый проверять.

Если постоянное использование интернета для тебя не проблема, можно арендовать виртуальный сервер (VPS), на него поставить все что нужно, заходить на него через ssh-клиент (я использовал ConnectBot, который есть в F-droid). Кстати, если в ConnectBot выбрать local, то он откроет локальную консоль в андроиде (андроид на ядре линукса и немного утилит для командной строки там есть).

>>1050584

тут проверил >>1056159
#197 #1056246
>>1049870

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

>>1049956

Насколько я знаю, на Андроиде можно не только читать учебники и писать код, но и запускать PHP, использовать mysql (локально, без интернета). Понадобятся такие вещи:

- редактор для кода
- клавиатура со спецсимволами, на обычной замучаешься переключаться
- интерпретатор php
- БД mysql (если ты хочешь использовать БД)
- веб-сервер, например, Апач или встроенный в PHP
- возможно, консоль для работы с командной строкой

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

Что касается верстки, тут проблем быть не должно - правишь код, сохраняешь файл на карту (диск?) и открываешь в браузере через file://... или встроенным просмотрщиком.

У меня есть андроид-смартфон, я пока не пробовал настроить на нем все для кодинга. Надо будет как-нибудь потом попробовать.

В Google Play - я поискал, ищутся такие вещи:

1) https://play.google.com/store/apps/details?id=com.alfanla.android.pws&hl=en - тут вроде веб-сервер (lighttpd) + PHP/mysql , вроде бесплатно, но с рекламой.

2) Это не в Google Play, а отдельно. Можно установить Script Layer 4 Android - SL4A - https://ru.wikipedia.org/wiki/SL4A - по идее он предназначен для написания приложений используя скриптовые языки, но подойдет и для наших целей. К нему поставить PHP for Android: http://phpforandroid.net/doku.php - и если заработает, можно будет запускать PHP код и использовать встроенный в PHP веб-сервер (а если очень заморочиться, то можно даже писать андроид-приложения на PHP, но пожалуйста, не надо).

Может еще что-то есть, погугли. Поиск в Google Play вываливает кучу вариантов и устанешь каждый проверять.

Если постоянное использование интернета для тебя не проблема, можно арендовать виртуальный сервер (VPS), на него поставить все что нужно, заходить на него через ssh-клиент (я использовал ConnectBot, который есть в F-droid). Кстати, если в ConnectBot выбрать local, то он откроет локальную консоль в андроиде (андроид на ядре линукса и немного утилит для командной строки там есть).

>>1050584

тут проверил >>1056159
#198 #1056248
>>1050600

> И еще, не можешь подсказать, где такие задания на верстку еще можно взять?


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

>>1051215

Я мимо проходил, но советовал бы использовать XML/Xpath или phpQuery для разбора HTML.

>>1052377

> -курс валют https://ideone.com/WRyecp


Верно

> -первая задача про кубик https://ideone.com/eEgl2a


Правильно

> -вторая задача про кубик https://ideone.com/CIhPPM


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

> -таблица умножения https://ideone.com/cHU78n


Верно

> -задача про банк и кредит https://ideone.com/Jriuhk


Верно решено.

> -айфон https://ideone.com/xPwyQ0


Верно, хотя можно было бы решить без копирования echo и $paymentTotal += два раза.

>>1052950

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

>>1053600

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

>>1054303

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

>>1055002

Требуя диплом, они видимо, экономят деньги на проведении тестирования кандидатов. Хотя конечно с нашими вузами смысл диплома чисто символический. Вот если есть сильный вуз, где без знаний просто экзамены не сдать, то да, диплом такого вуза наверно что-то значит.
#198 #1056248
>>1050600

> И еще, не можешь подсказать, где такие задания на верстку еще можно взять?


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

>>1051215

Я мимо проходил, но советовал бы использовать XML/Xpath или phpQuery для разбора HTML.

>>1052377

> -курс валют https://ideone.com/WRyecp


Верно

> -первая задача про кубик https://ideone.com/eEgl2a


Правильно

> -вторая задача про кубик https://ideone.com/CIhPPM


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

> -таблица умножения https://ideone.com/cHU78n


Верно

> -задача про банк и кредит https://ideone.com/Jriuhk


Верно решено.

> -айфон https://ideone.com/xPwyQ0


Верно, хотя можно было бы решить без копирования echo и $paymentTotal += два раза.

>>1052950

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

>>1053600

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

>>1054303

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

>>1055002

Требуя диплом, они видимо, экономят деньги на проведении тестирования кандидатов. Хотя конечно с нашими вузами смысл диплома чисто символический. Вот если есть сильный вуз, где без знаний просто экзамены не сдать, то да, диплом такого вуза наверно что-то значит.
sage #199 #1056250
>>1049651 (OP)
Пацаны, что правильнее всего делать со строками кода, которые нельзя покрыть тестами?
1. codeCoverageIgnore
2. Оставлять непокрытыми и тем самым уменьшать % коверейджа

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

Копия этого вопроса >>1056198 из общего треда
#200 #1056258
>>1056248

>free psd templates


В блоге htmlacademy.ru в свободном доступе
#201 #1056263
>>1056250

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

Я думаю, тестировать надо фичи приложения или API класса, а не строчки кода.

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

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



Ты имеешь в виду исчезновение файла между file_exists и fopen например? А такое вообще часто бывает? Если это очень редкая ситуация, можно и не тестировать. Или переписать код так, чтобы это было невозможно (увы, fopen тут не очень под это заточен, можно попробовать перехватывть ошибку при открытии).
#202 #1056266
>>1056250

Также, ты должен понимать, что тесты это не формальная верификация (доказательство правильности) программы. Даже со 100% покрытием твои тесты ведь не тестируют все возможные входные данные и ситуации. Потому относись прагматически: никакие тесты не гарантируют что приложение на 100% корректно.

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

Вместо этого тестируй фичи/API, например, "пользователь проходит регистрацию при вводе корректных данных" или "функция удаления пробелов действительно удаляет пробелы".
#203 #1056273
>>1056080
Это другой кун ему отвечал.
#204 #1056316
>>1056162

> А как ты получишь дескрипто файла для файла в удаленном хранилище?


Через fopen('url', 'r'), а что не так? Мне только читать надо.

> тут можно попробовать ООП - сделать например интерфейс и 2 класса, реализующих его


Проблема в том, что я не могу хранить в сущности полный путь к файлу в локальной ФС. Хорошей практикой считается хранить только относительный путь. Поэтому $file->moveTo($location) будет работать только для удалённых файлов (т.к. в сущности будет храниться URL файла). Подход с ресурсом избавит от этой проблемы.
sage #205 #1056370
>>1056263

> А такое вообще часто бывает?


Это не важно. Вообще это крайне редкая ситуация, но рано или поздно она встретится.

> переписать код так, чтобы это было невозможно


Это как бэ невозможно
#206 #1056506
Почаны, подскажите плиз:
https://pastebin.com/sWfGEkXf
почему у меня после каждой отправки формы счётчики обнуляются?
Я так понял, что это изза того что в начале скрипта я устанавливаю начальные значения в 0:
if(!isset($_SESSION['numeric']))
$_SESSION['numeric'] = 0;

if(!isset($_SESSION['not_numeric']))
$_SESSION['not_numeric'] = 0;


Но по идее после первого запуска они у меня уже не NULL, поэтому isset должны возвращать true и следовательно if не выполняться. Что я делать не так?
#207 #1056520
>>1056506
ой, я - еблан, session_start() проебал же
287 Кб, 911x760
#208 #1056622
>>1049651 (OP)

Вечер в хату, аноны

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

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

Для пиздинга товаров используется библиотека Simple HTML DOM, но я пробовал и другие, во всех случаях один и тот же трабл:

Когда мы берем какой-то элемент из DOM возможно я сейчас неправильно выразился он находится в кодировке UTF-8. Но когда мы пытаемся вычленить из него текст (->plaintext) или какой-то атрибут (->src) кодировка переменной преобразуется в ASCII. Та же хуйня происходит, даже если просто пытаться сделать то же самое с помощью регулярных выражений

При этом iconv() и другие функции для преобразования кодировки ничего не меняют

В БД стобцы, в которые планируется вносить данные, находятся в кодировке utf8_general_ci. И если отправлять в эту БД данные, которые берутся из этих переменных, то не отправляется нихуя, а если переменные в инсерте заменить на обычный текст в ковычках, то все работает

Пикрелейтед - тот самый говнокод
Гугление в т.ч. на пиндосском языке ни к чему не привело
314 Кб, 1097x760
#211 #1056695
>>1056670
Уже пробовал, не помогло

>>1056676
В header utf-8 добавлен
В БД utf8 установлен
mysql_set_charset есть
htmlentities есть
iconv есть

- и один хуй эта мразь выводит, что кодировка ASCII, и ничего в БД не добавляет. Может, я в иконв параметры функции как-то не так задал?
98 Кб, 1080x1080
#212 #1056725
Нужна помощь бывалых вэб-альфачей.
Ситуация такова: есть самописный интернет магазин, которому лет 8 уже. Писало его много разных говнокодеров, код в нем просто пиздец, даже слов нету, чтобы описать.

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

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

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

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

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

Сам смотрю в сторону prestashop, основанном на symfony2. Может есть тут кто-то, кто работал с ним?

Больше посоветоваться не с кем, вы моя единственная надежда.
#213 #1056746
#214 #1056785
>>1056695

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

По коду могу сказать следующее:

- mb_detect_encoding не умеет определять кодировку, не веришь мне - погугли или посмотри исходный код этой функции. Вообще, в общем случае кодировку текста определить невозможно.
- ты должен определить кодировку HTML вручную, используя описанные в стандарте правила https://www.w3.org/TR/html5/document-metadata.html#character-encoding-declaration (я согласен, они там немного мутно описаны, но кодировка либо задается в заголовке, либо в метатеге, либо используется кодировка по умолчанию)
- далее, ты используешь simple_html_dom. Откуда она узнает кодировку HTML который ты передаешь? Хорошо, если эта кодировка указана в самом коде через метатег и simple_html_dom умеет ее читать, а если нет? Нужно изучить мануал к библиотеке, посмотреть, как там задается кодировка и задать ее явно
- картинки я бы советовал раскладвыать по папкам, а также не создавать N копий одной и той же картинки
- в mysqli нет репорта ошибок. Ты обязан после любого действия сам проверять. не произошла ли ошибка, посмотри примеры кода в мануале php по mysqli. Я вижу, ты делаешь это при соединении, но надо ставить проверку вообще после любого вызова функций mysqli
- не подставляй переменные в SQL запрос, читай статью https://github.com/codedokode/pasta/blob/master/security/sql-injection.md
- не используй бессмысленные функции вроде htmlspecialchars. Зачем оан тут нужна?
- ты используешь iconv и видно что ты вообще не понимаешь, что такое кодировка. Почитай мой урок, где это подробно разъясняется: https://github.com/codedokode/pasta/blob/master/cs/strings.md (хинт: все символы ASCII имеют точно тот же код и то же представление в utf-8 и это преобразование вообще ничего не меняет)
#215 #1056823
Сап, я ебанный гуманитарий. Хочу запилить сайтик, куда буду размещать всякие статьи, но быдлокодеру платить не хочу, поэтому решил сам все изучить. Прорешал уже почти все задачки до регулярных выражений. Что дальше делать? Может фреймворк какой-нибудь или джаваскрипт параллельно учить?
#216 #1056838
>>1055933
Огромное спасибо! Все получилось!
#217 #1056845
>>1056785

>толком не изучил


>полез что-то делать


Да к для того и полез

>mb_detect_encoding не умеет определять кодировку


Вот такого поворота я не ожидал

>далее, ты используешь simple_html_dom. Откуда она узнает кодировку HTML который ты передаешь? Хорошо, если эта кодировка указана в самом коде через метатег и simple_html_dom умеет ее читать, а если нет? Нужно изучить мануал к библиотеке, посмотреть, как там задается кодировка и задать ее явно


По дефолту скрипт ищет на загруженной странице метатег с кодировкой и берет инфу из него. На конкретно моей странице метатег есть. На случай, если кодировку определить не удалось, там есть овер100500 условий когда и какую надо использовать, т.е. там условия вида if(...){ $charset = ' %CharsetName% '}. Я решил попробовать во всех условиях указать кодировку равную ЮТФ-8, ничего не поменялось

Но пусть даже библиотека возвращает ASCII, есть функция, которую ты же мне и посоветовал:

mb_convert_variables(string $to_encoding , mixed $from_encoding , mixed $vars),

где в $from_encoding задаются разделенные запятой все возможные кодировки, ИЗ которых нужно конвертировать. Я залил туда ВООБЩЕ ВСЕ возможные кодировки, список которых я взял из документации php. Но функция ничего не конвертирует, по крайней мере, если верить mb_detect_encoding(), и в БД ничего не подгружается.

Ну и как я уже писал:

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


Т.е. есть переменная, которая хранит в себе последовательности цифр, каждая из последовательностей соответствует какому-то символу согласно кодировке UTF-8. Далее мы прогоняем данные из этой переменной через тот же стандартный preg_replace(), и ВНЕЗАПНО там теперь уже другая последовательность цифр, раскодировать которую можно с помощью ASCII

Хотя учитывая, что

>все символы ASCII имеют точно тот же код и то же представление в utf-8


Написанное выше возможно, но почему тогда переменные с кодировкой ASCII я не могу залить в базу конкретно в этот столбец, а с кодировкой UTF-8 могу?

Обе статьи я читал буквально неделю назад, насчет кодировок не знаю, какую инфу из той статьи я не учел для решения этого вопроса, насчет инъекций и картиночек - само собой, но сначала нужно добиться добавления записей в базу данных сайта Б
#217 #1056845
>>1056785

>толком не изучил


>полез что-то делать


Да к для того и полез

>mb_detect_encoding не умеет определять кодировку


Вот такого поворота я не ожидал

>далее, ты используешь simple_html_dom. Откуда она узнает кодировку HTML который ты передаешь? Хорошо, если эта кодировка указана в самом коде через метатег и simple_html_dom умеет ее читать, а если нет? Нужно изучить мануал к библиотеке, посмотреть, как там задается кодировка и задать ее явно


По дефолту скрипт ищет на загруженной странице метатег с кодировкой и берет инфу из него. На конкретно моей странице метатег есть. На случай, если кодировку определить не удалось, там есть овер100500 условий когда и какую надо использовать, т.е. там условия вида if(...){ $charset = ' %CharsetName% '}. Я решил попробовать во всех условиях указать кодировку равную ЮТФ-8, ничего не поменялось

Но пусть даже библиотека возвращает ASCII, есть функция, которую ты же мне и посоветовал:

mb_convert_variables(string $to_encoding , mixed $from_encoding , mixed $vars),

где в $from_encoding задаются разделенные запятой все возможные кодировки, ИЗ которых нужно конвертировать. Я залил туда ВООБЩЕ ВСЕ возможные кодировки, список которых я взял из документации php. Но функция ничего не конвертирует, по крайней мере, если верить mb_detect_encoding(), и в БД ничего не подгружается.

Ну и как я уже писал:

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


Т.е. есть переменная, которая хранит в себе последовательности цифр, каждая из последовательностей соответствует какому-то символу согласно кодировке UTF-8. Далее мы прогоняем данные из этой переменной через тот же стандартный preg_replace(), и ВНЕЗАПНО там теперь уже другая последовательность цифр, раскодировать которую можно с помощью ASCII

Хотя учитывая, что

>все символы ASCII имеют точно тот же код и то же представление в utf-8


Написанное выше возможно, но почему тогда переменные с кодировкой ASCII я не могу залить в базу конкретно в этот столбец, а с кодировкой UTF-8 могу?

Обе статьи я читал буквально неделю назад, насчет кодировок не знаю, какую инфу из той статьи я не учел для решения этого вопроса, насчет инъекций и картиночек - само собой, но сначала нужно добиться добавления записей в базу данных сайта Б
159 Кб, 912x462
#218 #1056856
>>1056785

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


Это я упустил
Показывает ошибку: "You have an error in your SQL syntax; check the manual that corresponds to your server version for the right syntax"
Но я в упор не вижу здесь ошибки
При этом как и прежде отлично заносятся записи в столбцы типа int и decimal, varchar не заносятся
#219 #1056858
>>1049651 (OP)
Вкатываюсь, задачу на айфон не осилил, потому что еще со школки были проблемы с этими задачами экономическими, боюсь страшно подобных штук! С массивами попроще будет.
#220 #1056867
>>1056725

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


Тут уже ничего не поможет, если ты за 2 года не сделал ничео, то и дальше ничего не сделаешь.
#221 #1056869
>>1056858
Порешал задачи на массивы, есть вопрос.

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


Зачем implode? $name .= $some склеивает без проблем или я что-то не так понял.
https://ideone.com/Zb4lgu
#222 #1056871
Я наверное у мамки дурачек, но не понял почему задача про стихи находится в разделе стрингов, а не масивов и хотя решил ее не через них, твой метод уловил.
ideone.com/1E9PMW
А вот со следующей испытал знатный батхерт, потому, как мой скрипт всегда говорит, что это палендром, хотя, это не так. Пытался отловить баг, но без дебагера, так и не смог это сделать, хотя логику понял, может флажки работают не так, как в паскале или я просто хочу спать, буду благодарен, если кто-то найдет.
ideone.com/jsaDRp
#223 #1056903
>>1056845

Про mb_detect_encoding и как она не работает, и про определение кодировок, написано например тут https://habrahabr.ru/post/107945/

> По дефолту скрипт ищет на загруженной странице метатег с кодировкой и берет инфу из него. На конкретно моей странице метатег есть.


Значит, должно работать. Сделай для теста файл с HTML-кодом в utf-8 (можно с того сайта и скачать) и с метатегом и попробуй его загрузить в simple html dom и проверить, получается ли из него что-то получить или нет. Проверь что текст в самом файл именно в utf-8.

И не надо править сторонние библиотеки.

> Но пусть даже библиотека возвращает ASCII


Пусть, но в ASCII нет кирилицы. Ты мой урок почему не читаешь ? https://github.com/codedokode/pasta/blob/master/cs/strings.md

> есть функция, которую ты же мне и посоветовал:


Это не я, и я думаю что это бесполезный совет. Если mb_detect_encoding не работает, то и эта функция не поможет. Как она по твоему определит кодировку текста?

> Далее мы прогоняем данные из этой переменной через тот же стандартный preg_replace(), и ВНЕЗАПНО там теперь уже другая последовательность цифр, раскодировать которую можно с помощью ASCII


Не очень понял о чем речь, но ты не забыл флаг u в preg_replace для поддержки utf-8?

> Написанное выше возможно, но почему тогда переменные с кодировкой ASCII я не могу залить в базу конкретно в этот столбец, а с кодировкой UTF-8 могу?


Может они не в ACSII, может ты еще где-то накосячил.

> Показывает ошибку: "You have an error in your SQL syntax; check the manual that corresponds to your server version for the right syntax"


Это не весь текст ошибки. Там должно дальше идти before XXXXX.
#223 #1056903
>>1056845

Про mb_detect_encoding и как она не работает, и про определение кодировок, написано например тут https://habrahabr.ru/post/107945/

> По дефолту скрипт ищет на загруженной странице метатег с кодировкой и берет инфу из него. На конкретно моей странице метатег есть.


Значит, должно работать. Сделай для теста файл с HTML-кодом в utf-8 (можно с того сайта и скачать) и с метатегом и попробуй его загрузить в simple html dom и проверить, получается ли из него что-то получить или нет. Проверь что текст в самом файл именно в utf-8.

И не надо править сторонние библиотеки.

> Но пусть даже библиотека возвращает ASCII


Пусть, но в ASCII нет кирилицы. Ты мой урок почему не читаешь ? https://github.com/codedokode/pasta/blob/master/cs/strings.md

> есть функция, которую ты же мне и посоветовал:


Это не я, и я думаю что это бесполезный совет. Если mb_detect_encoding не работает, то и эта функция не поможет. Как она по твоему определит кодировку текста?

> Далее мы прогоняем данные из этой переменной через тот же стандартный preg_replace(), и ВНЕЗАПНО там теперь уже другая последовательность цифр, раскодировать которую можно с помощью ASCII


Не очень понял о чем речь, но ты не забыл флаг u в preg_replace для поддержки utf-8?

> Написанное выше возможно, но почему тогда переменные с кодировкой ASCII я не могу залить в базу конкретно в этот столбец, а с кодировкой UTF-8 могу?


Может они не в ACSII, может ты еще где-то накосячил.

> Показывает ошибку: "You have an error in your SQL syntax; check the manual that corresponds to your server version for the right syntax"


Это не весь текст ошибки. Там должно дальше идти before XXXXX.
#224 #1056904
>>1056856

Также, выведи на экран свои SQL запросы до выполнения.
#225 #1056991
>>1056989
Как по мне, самопал всегда лучше, ибо он покрывает 100% запросов магазинчика, а стандартный только и может что предложить наборчик из витрины с корзиной. Ну и советовать тут особо нечего, OpenCart.
#226 #1056994
>>1056991
Нет, есть уже готовые магазины, основанные на фрейморках, а не просто cms.
Я здесь лишь только для того, чтобы посоветоваться какой выбрать.
#227 #1057022
>>1049651 (OP)
Чето вообще не понял условие задачи на шифровку текста, что от меня требуется сделать?
#228 #1057045
>>1057022

1) шифровать текст лучше, чтобы в нем явно не были видны куски исходного текста
2) сделать расшифровку зашифрованного текста
#229 #1057090
>>1056994
Вот http://yiipowered.com/ru/top-100
Выбирай по тэгу CMS что тебе ближе.
Думаю тебе проще найти CMS на Yii чем перепиливать всё на Symfony, хотя там свои плюсы.
#230 #1057184
>>1056989
Анон, делай на Yii2 и его CMS, раз есть опыт. А у Symfony большой оверхед абстракций, взять тот же компонент аутентификации. Попробуй сделать какой-нибудь кастомный AccountConfirmator (например по СМС) - уверяю, его интеграция в компонент аутентификации Symfony с непривычки может занять очень много времени. Как в Yii2 не знаю, но в Laravel это сделать очень просто. Если тут сейчас симфонисты начнут говорить про архитектуру и хорошие практики, то открою секрет - доктрину подавляющее большинство симфонистов используют неправильно - репозитории как TableDataGateway, анемичные модели, бизнес логика в хендлерах событий сущности и прочее. Всё это и на Yii2 можно повторить, если выносить запросы к БД в репозитории (у нас используется такой подход для Eloquent).
#231 #1057199
https://ideone.com/59nMpj
Я тупой, не знаю как решать. Вот так линейной и в тупую могу сделать, по другому не выходит.
Пробовал так:
foreach ($word1 as $key) {
$randomWord1 = array_rand($word1);
$sentense .= $word1[$randomWord1];
}
echo $sentense;

Короче я тупой и не одупляю вообще этих погромистических задач.
#232 #1057265
>>1057199
А нет, я не тупой, подсмотрел решение анона выше, я так делал изначально только echo вызывал вне цикла и в этом заключалась вся трудность, пол дня думал над этой задачей, множество разных штук перепробовал, ну да ладно.
Вопрос анону >>1056871 зачем ты использовал array_flip?
2,6 Мб, 2419x1157
#233 #1057302
Попробовал скачать веб-страницу. Первый файл стиля слева, второй справа но у него хороший стиль. Вопрос: Это верстальщик справа такой мудень, или все же браузер в кашу превратил CSS? Почему тогда справа хорошо все?
#234 #1057303
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.

Почему тогда у меня этот код меня спокойно редиректит?:

<html>
<?php
header('Location: http://www.example.com/');
exit;
?>
#235 #1057304
>>1056258
Есть получше, всякие авторы на Behance делают PSD бесплатные. Вот по ним можно верстать. Алсо верно про Скриншот сказал.
#236 #1057307
>>1057302
Погугли "минификация CSS"

>>1057303

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

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

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

Мануал http://php.net/manual/ru/outcontrol.configuration.php
#237 #1057308
>>1057302
Вась, гугли обфускацию в целом и обфускацию/оптимизацию css для ускорения загрузки в частности.
#238 #1057309
>>1057307
Спасибо анонче
#239 #1057310
>>1057303

Ссылку на урок про HTTP дать забыл: https://github.com/codedokode/pasta/blob/master/network/http.md
#240 #1057313
>>1057308
>>1057307
Ого какие тонкости. Не знал, спс.

Не Вася
#241 #1057323
>>1057313

>Не Вася


Да сори, прост настроение было плохое с утра
#242 #1057327
>>1057323
Оно бывает.
#243 #1057459
Как в yii2 проще всего реализовать отдачу либо JSON либо отрендеренной страницы в зависимости от параметров в реквесте и чтобы не лезть в каждый контроллер, может afteraction какой то или ивент?
#244 #1057768
>>1049651 (OP)
Как учить пхп, если уже немного умеешь программировать, базовые принципы понимаешь, либо если php не первый твой язык? Книжки из ОП-поста или из прикрепленного поста в разделе? Или сразу по документации на php.net? Или php.ru/su? Или по оп-сайту? Как правильнее. быстрее, эффективнее, лучше?
А

>а также JS/CSS/HTML


В3школа? хтмлкнига.ру? КодеАкадемия? Мозилловский проект?

>SQL


Тут вообще пиздец какой-то, либо голые референсы, либо только самые основы, либо под какую-нибудь залупу (специфичную) типа МС или Постгре.
#246 #1057776
Интересная статья (англ) про то, как в Майкрософт во времена Висты целый год большая команда людей пыталась сделать новое меню для выключения компьютера: http://moishelettvin.blogspot.ru/2006/11/windows-shutdown-crapfest.html

>>1057768

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

> сразу по документации на php.net?


Можно, но это скорее документация чем учебник.

> Мозилловский проект?


Это документация (хорошая).

> хтмлкнига.ру? КодеАкадемия?


По ним да, можно учиться. Заметь, что у меня там есть задачи на HTML для проверки знаний, а в конце задача на верстку макета.

По SQL - у меня есть обзорный урочек: https://github.com/codedokode/pasta/blob/master/db/databases.md и там есть какие-то ссылки и задачи для проверки знаний.
#247 #1057778
>>1057768

При изучении баз данных после SQL надо обязательно изучить нормализацию, внешние ключи, транзакции и спроектировать хотя бы одну базу данных с разными сущностями и связями между ними.
#248 #1057786
>>1049651 (OP)
Анон, как зациклить скрипт, допустим, какого-нибудь чат-бота для втентакля? Например, чтобы он запускался каждые 5-10 секунд %в кроне минимум — минута, к настройкам крона доступа нет%.
178 Кб, 750x864
#249 #1057788
>>1057786
Блядь, разметку проебал. Ну вы поняли.
#250 #1057789
>>1057786

Сделать неумирающий скрипт с циклом и запускать из-под программы-супервизора, например supervisord

https://ruhighload.com/post/Запуск+процессов+в+supervisor

В современных ОС проще может быть ничего не ставить, а просто добавить твой скрипт как сервис в systemd.
#251 #1057790
>>1057789
Выглядит неплохо. Спасибо.
#252 #1057793
>>1057776

>А ты попробуй разные варианты и сравни.


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

>Учебник из Оп-поста совсем для начинающих


После этого всего сразу переходить к пхпзерайтвей или идти зубрить документацию?
>>1057778
Я больше про такую хуйню, как функции, операции, создание представлений, триггеры (или как их там), про использование всего вот этого в SQL. Про нормализацию и внешние ключи знаю, да и базы пилил, но все взаимодействие с ними у меня ограничивалось простенькими обращениями, а ведь все можно делать эффективнее, не расходуя время на передачу данных...
#253 #1057840
>>1057768
У мозиллы учебник не закончен.
#254 #1058316
>>1056823

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



Не проще взять Wordpress/Джумлу, найти и поставить какой-нибудь шаблончик для блога и наполнять его чем захочешь?
Просто с самого нуля сложновато будет такое делать, ты охуеешь, тем более если хочешь чтобы это всё было полноценно работающее, с RSS, комментариями и капчей к ним и т.д., и чтобы красиво выглядело при этом.
Я вот тоже загорелся идеей сайта куда буду писать свои статьи, и тоже ебал рот отдавать за это деньги и поэтому решил что возьму просто wordpress и всё, шаблончик красивый уже нашёл.
#255 #1058334
Почоны, что нужно впихнуть в пет-прожект чтобы максимально приблизиться к реальным проектам на фрилунсе?
Свой магаз на фреймворке с mysql, может что-то еще?
#256 #1058370
>>1058334
Парсер, SPA, собственную биржу криптовалют, соцсеть, поисковик.
400 Кб, 1220x760
#257 #1058530
Sup, /pr/

Есть один скрипт пикрелейтед

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

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

К примеру, 5 раз используется конструкция вида INSERT INTO, с этим нужно что-то делать?
#258 #1058549
>>1049651 (OP)
Хз куда податься с этим вопросом. Нада запилить сайт-копию дугого сайта (интернет-магазина). Пиздить у них товары/названия/описание и вставлять в свой. Погуглил веб-скрапперы - нихуя удовлетворительного не нашел. Как массово пиздить контент с сайта и заливать на свой юзая csv или ексель? Не гоните ссаными тряпками, если не по теме.
мимо нихуя кроме сайтов-визиток не делал
#259 #1058552
#260 #1058629
Кто-нибудь может объяснить простыми словами, что такое scrum?
Википедию читал, но "методология гибкой разработки ПО" мне ни о чем не говорит.
Как это выглядит на практике?
Я так понимаю, это просто повышенное внимание планированию и контроль над выполнением сроков. Ну то есть когда команда совещается, как выполнить определенную задачу и в какие сроки.
#261 #1058648
Помогите пожалуйста разобраться. Есть папка проекта в ней есть папка src в ней лежит файл Test.php у него есть namespace \Student;
Так же в папке проекта есть файл index.php в котором есть
реквайр автозагрузчика композера и строчка $test = new Student\Test()
А еще в папке проекта есть composer с вот такими незамысловатыми настройками:
"autoload": {
"psr-4": {
"Student\\": "src/"
}
}
То есть по логике вещей получается что автозагрузчик композера смотрит в папке src классы с неймспейсами Student
Так вот в результате он мне выдает следующий перл:
Fatal error: Uncaught Error: Undefined constant 'Student' in C:\work\web\Student\src\Test.php:2 Stack trace: #0 C:\work\web\Student\vendor\composer\ClassLoader.php(444): include() #1 C:\work\web\Student\vendor\composer\ClassLoader.php(322): Composer\Autoload\includeFile('C:\\work\\web\\Stu...') #2 [internal function]: Composer\Autoload\ClassLoader->loadClass('Student\\Test') #3 C:\work\web\Student\public\index.php(14): spl_autoload_call('Student\\Test') #4 {main} thrown in C:\work\web\Student\src\Test.php on line 2
#262 #1058661
Как правильно, сначала верстку выучить или сначала php?
Пока сижу учу верстку в htmlacademy, дальше думаю между продолжением углубленного изучения там же (адаптивная верстка и т.д) или уже вкатыванием в пхп.
#263 #1058668
>>1058661

>сначала верстку выучить или сначала php?


Одновременно и то и это.

>учу верстку в htmlacademy


Неправда, верстку учат на полевых условиях.

>htmlacademy


Бросай это дело, бро, пожалеешь.

>продолжением углубленного изучения там же (адаптивная верстка и т.д)


Это учится на первых этапах ознакомления с CSS.

>вкатыванием в пхп.


В PHP можно вкатываться без знания HTML, реализовать правда потом трудно.
Учи по учебникам -
Stunning CSS3
CSS3: Visual QuickStart Guide
Introducing HTML5 (Voices That Matter) (После того, как сам HTML поймешь)
HTML Up and running (Для старта самое то)
И потом просто 2 рефа берешь -
CSS Pocket reference
HTML Pocket reference
#264 #1058673
>>1058668
По вступлению в книге поймешь в каком порядке учить. Но я упрощу задачу:
CSS3: Visual QuickStart Guide - 1
Stunning CSS3 - 2
HTML Up and running - 1
Introducing HTML5 (Voices That Matter) - 2 (Книжка кстати винрарная)
#265 #1058734
>>1058648

Скорее всего у тебя синтаксическая ошибка в файле с классом.
#266 #1058755
#267 #1058764
>>1058755
Еще раз - здесь все работает, как раз с использованием данной библиотеки
Но я постоянно вижу и слышу разговоры о важности красоты кода, при этом я плохо понимаю, в чем конкретно она заключается
И на примере данного кода я хотел, чтобы аноны пояснили, как все грамотно структурировать
someApprentice #268 #1058775
Думал что сейчас напишу класс с шифрованием, но когда начал обдумывать, столкнулся с проблемой, как передать в него пароль?

class Authorizer {

function login() {
$password = $_GET['password'];
...
}

}

class Crypter {

//password = passphrase
function decrypt($encrypted, $privateKey, $password) {
...
}

}

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

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

До того как я узнал, что у самого ключа может быть свой passphrase, я планировал шифровать сам ключ, и при залогинивании расшифровывать и сохранять его в кукисы/localStorage/IndexedDB. Но такой подход усложнит код, нужно будет писать алгоритм шифрования ключей и постоянно удалять/добавлять ключи из keyring'а. Так же, я не знаю насколько это надёжно использовать приватные ключи без пароля.

Кстати, я решил не пользоваться библиотекой Pear Crypt_GPG, потому что, как вы упомянули, он только запускает процесс gpg - я вполне могу сделать это самостоятельно с помощью Symfony Process.
someApprentice #268 #1058775
Думал что сейчас напишу класс с шифрованием, но когда начал обдумывать, столкнулся с проблемой, как передать в него пароль?

class Authorizer {

function login() {
$password = $_GET['password'];
...
}

}

class Crypter {

//password = passphrase
function decrypt($encrypted, $privateKey, $password) {
...
}

}

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

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

До того как я узнал, что у самого ключа может быть свой passphrase, я планировал шифровать сам ключ, и при залогинивании расшифровывать и сохранять его в кукисы/localStorage/IndexedDB. Но такой подход усложнит код, нужно будет писать алгоритм шифрования ключей и постоянно удалять/добавлять ключи из keyring'а. Так же, я не знаю насколько это надёжно использовать приватные ключи без пароля.

Кстати, я решил не пользоваться библиотекой Pear Crypt_GPG, потому что, как вы упомянули, он только запускает процесс gpg - я вполне могу сделать это самостоятельно с помощью Symfony Process.
#269 #1058781
>>1058734
Ошибка была в бэкслеше в неймспейсе класса.
Теперь возникла следующая проблема. ПХП ищет класс пдо в моем Неймспейсе.
#270 #1058790
>>1058781
Ставь корневой неймспейс при создании пдо.
$dbh = new \PDO(...
#271 #1058793
>>1058790
Спасибо
#272 #1058858
>>1058668
Эх, вот бы на русском эти книги.
#273 #1058908
>>1058858
Не чувак на английском пишут очень сжато и очень годно. Там мало лишних слов, все понятно на раз. Советую учить.
#274 #1058918
>>1058668

>htmlacademy


>Бросай это дело, бро, пожалеешь.


А что не так с htmlacademy?
#275 #1058989
Вот допустим я знаю немного хтмл, основы пхп и немножечко ооп Большое спасибо автору мурзилок, серьено, и мне нужно склепать небольшой говносайтик, но я не могу найти гайдов для дибилов таких как у ОПа о том как все это совместить, какую архитектуру пилить и вообще как все это делается.
Отправлять меня учить ксс, яваскрипт и базы не нужно - хочется побыстрей уже наговнокодить говна чтобы все одноклассники охуели.
#276 #1058991
>>1058989
Так не выйдет, либо ты идешь пошагово, от написания маленьких скриптов постепенно переходя в создание одностраничных сайтов, постепенно усложняя и изучая MVC, либо ты открываешь гайд по какому-то фреймворку и сидишь прокрастинируешь 100% времени и занимаешься самокопанием, потому что ничего не поймешь.
#277 #1058992
>>1058991
Запал пропадает, под конец пердолиния пхп меня уже заебало и усваивал язык я через силу. Хтмл был как глоток свежего воздуха: все эти кнопочки, черточки, таблички, все наглядно и вообще красотища.
Хочется красотище динамики придать, для понимания. Не всё же сраные таблички костылями на пхп ебать, которые к тому же по разному отображаются в сосноле и в браузере
#278 #1058993
>>1058991
Как некоторые анонычи из /веб нихуя не знают и умудряются делать говносайты?
#279 #1058994
>>1058918
там самые базовые вещи

>верстку учат на полевых условиях


вот это правильно тебе написали
#280 #1058996
>>1058992
так вкатись во фронтэнд
#281 #1058997
>>1058993
Берут вордпресс/любой цмс, качают тему, настраивают через админку менюшки и добавляют виджеты. Что-то уровня макаки короче. Если что-то пойдет не так - будет гуглить, дрочить форумы и плакать
#282 #1059000
>>1058996
Верстальщиком чтоли? я во всем этом пока не разбираюсь
>>1058997
Такая хуйня мне не подходит
Нужно отвлечься просто, наверное
#283 #1059002
Ладно, буду дальше по ОПу вкатываться. Надеюсь со временем понимание как все это происходит придет само
#284 #1059005
>>1059000
почитай чем занимается фронтэнд-разраб
#285 #1059009
>>1058994
Я другой анон.
И там как раз их курс основан на практике. Прошёл их курс, потом уже читал Пилигрима. Могу сказать, что они друг друга очень хорошо дополнили.
#286 #1059011
>>1059009
спутал с codecademy
да и не изучал особо html
что нужно было на практике, то и разбирал
больше программирование и бэкэнд интересует
#287 #1059012
>>1059009
Увы, но Codeacademy тоже не очень полезный опыт, конечно там можно черпнуть базу, но с учебником это не сравнится.
#288 #1059015
Поясните за эту книгу?

Робин Никсон - Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 4-е издание(Бестселлеры O'Reilly) - 2016
#289 #1059019
>>1059011
>>1059012
Codeacademy я тоже проходил.

> с учебником это не сравнится.


В том и дело, что нужно совмещать.
#290 #1059020
>>1059015
Все

>Бестселлеры O'Reilly


годные
#291 #1059021
>>1059020
Просто там MySQL, а в мурзилках ОПа говорят что она устарела и использовать нужно PDO
#292 #1059024
>>1059002
Что это? Почитай, для чего нужен php.
#293 #1059026
>>1059021
Выучи SQL в общем, а потом уже выберешь СУБД.
#294 #1059028
>>1059021

Устарела не СУБД MySQL, а расширение mysql в PHP, которое используется как клиент для доступа к этой СУБД. Написано об этом в мануале, открой и прочти

http://php.net/manual/ru/function.mysql-query.php
#295 #1059029
>>1059026
>>1059028
>>1059020
Понял, спасибо. Сел за учебник
28 Кб, 700x541
#296 #1059074
>>1049651 (OP)
Доброго времени суток. Пишет тебе хуй, учащийся на первом курсе информационных систем, который до этого проебал три года на информатике и вычислительной технике, но был отчислен из-за того, что устроился на работу не по специальности, чтобы было что пожрат. Это для того, чтобы вы понимали, что матан я знаю, опыт программирования (Qt'шные курсачи, немного Java, в основном лабы) имею, но лишь в рамках студпрограммы.
Вообще я в своей жизни хотел быть системщиком, т.е. писать ядро линя, прошивки ковырять под конкретные микроконтроллеры, асм знаю, правда диззасемблировал лишь две программы за всю свою жизнь, и в целом - в веб меня не тянуло. Ибо слишком абстрактно, отдаленно от железа, хотя и дает потенциал для творчества. Ну да похуй, не в этом суть. В определенный момент я понял, что работать надо по специальности, хоть за еду, ибо опыта программирования я хуй наберусь на подработках, и посмотрел на стак, который требуется работодателям (без опыта, офк) в моей специальности - везде 1с и сраный битрикс, кроме двух компаний, куда требуется php jQuery AJAX джун, и понял, что нужно идти туда.
В связи с этим нужно в кратчайшие сроки выучить php + js на достаточном уровне, чтобы взяли на работу, на зп похуй, главное начать уже работать. Вот так я и пришел к вам, сейчас усиленно читаю материал по ссылкам, надеюсь все будет хорошо. Спасибо опу за сбор материала и поддержку начинающих, добра тебе.
62 Кб, 522x604
#297 #1059082
>>1049651 (OP)
Блядь, ребят, решил вкатываться в кодинг, сейчас пытаюсь осилить html и css. Всё как-то туго идёт. Нихуя не интересно в этом разбираться. Насколько мне будут в изучении и в работе на php знания от верстки?
На каком уровне я должен эту ебучую верстку понимать? Когда понять, что хватит?
#298 #1059085
>>1059082
Изучи jQuery, модель DOM (из чего состоит страница) и AJAX (динамическое обновление страницы). Напиши на HTML5 какую-нибудь простенькую игрушку, типа змейки, тетриса или пятнашек.
#299 #1059102
>>1059082
1. Нельзя так просто взять и решить. Тебе точно нравится кодить?
2. Вёрстка и правда скукота, но знать желательно. Но странно. При первом изучении должно быть забавно, что ты можешь всякую хуйню лепить. Например, выводить то, что там php посылает.
#300 #1059104
>>1059082

>решил вкатываться в кодинг


а нужно ли тебе именно веб-программирование?
может и не с пхп тогда начинать?
синк эбаут ит
#301 #1059120
>>1057793
>>1057768
Типа бамп.
#302 #1059152
>>1059104
Ну бля, я вот роботов мечтаю писать, но я тупенький, с матаном для инжиниринга тоже по разному, скорее всего не осилю и времени выяснить это у меня нет. Светлое время вузов проебано. А пыха норм идет и даст возможность заработать свой кусок хлеба даже в мухосранске, не смотря на то что процесс верстки совсем не доставляет. Хули делать? Следовать мечтам?
Я не он >>1059082
#303 #1059153
>>1059152
согласен, аналогичная ситуация
тот анон вкатывается в кодинг
говорят, что лучше начинать с яп общего назначения
я например с пайтона начинал
#304 #1059155
>>1059153
Я наткнулся на статейку в хабре и там все охуенно пояснили. Питон - для отцов с опытом. Джунов на питоне не бывает. Но вообще - да, я на питон тоже смотрел.
Хотя один хуй я великовозрастный довен и место мне, наверное, только на заводе.
#305 #1059157
>>1059155

>Джунов на питоне не бывает


к сожалению, хороший язык так-то
алсо в эликсир хочу научиться
а ум понятие широкое и субъективное, так что не надо так думать
#306 #1059175
>>1059155

>Питон - для отцов с опытом. Джунов на питоне не бывает.


Охвоу
В мите сразу на питоне учат, в гарварде сразу после С и срача
#307 #1059177
Хочу вкатиться в веб, с чего начать? Знаю HTML5, а остальное (a Js+CSS) поверхам. Хочу добиться уровня работоспособности на фрилансе.
#308 #1059197
Двач, а будет ли быстрее, если я запихну мой большой json-файл в PostgreSQL и буду делать выборку вместо того, чтобы проходиться циклом по нему и сравнивать каждое значение? А то что-то file_get_contents + json_decode двух ~10-мегабайтных .json-файликов происходит 2-3 секунды.
#309 #1059218
Вторая задачка с кубиками. Сойдёт?
https://ideone.com/TQox0K
#310 #1059228
>>1058775
Господи, открой для себя oauth2 и не изобретай кривой велосипед.
#311 #1059230
>>1059177

>Хочу добиться уровня работоспособности на фрилансе.


Становись специалистом во фронтенде/бэкенде, поработай года 3-4 над большими проектами в жирной фирме, наработай потенциальных заказчиков. Потом уходи, принимай заказы от бывших заказчиков, набирай команду, зарабатывай деньги.
#312 #1059239
>>1059218
if ($anonSum > $compSum) {
echo "Анон победил!";
}

if ($compSum > $anonSum) {
echo "Компьютер победил!";
}

>читабельность

#313 #1059246
>>1059102

>Например, выводить то, что там php посылает.


THIS
>>1058989
#314 #1059266
>>1059120
Анончики, ну же.
#315 #1059319
>>1059074
И сразу же вопрос по регуляркам. Разбиение текста по предложениям. Дело в том, что точкой обозначаются не только конец предложения, но так же и сокращения типа "Dr. Dre", "И т.д.", соответсвенно программа, построенная на подсчете точек, восклицательных знаков и вопросов будет работать некоректно. (Да и восклицания могут означать эмоциональный оттенок, или имена собственные, врожде Yahoo!).
Как сделать корректно?
#316 #1059339
https://ideone.com/mK3P0C
Помогите разобраться с выводом неправильных номеров.
Да и в целом я обосрался и не смог правильно составить регулярное выражение.

Задачка на проверку телефонов

Дан текст, который по идее должен быть номером телефона в виде 8-(911)-506 56 56 (т.е. человек может ввести не только цифры, но и скобки, минусы, может что-то еще). Но в реальности, пользователь может вместо номера написать что угодно. Напиши скрипт для проверки правильности введенного номера («8(911)-506 56 56» — правильный номер, «8-911-50-656-56» — правильный, «89115065656» — правильный, «02» — неправильный, «89115065656 позвать Люду» — неправильный).
Задачу надо проверить на большом числе телефонов, чтобы убедиться что твой код правильный. Для этого давай добавим в программу тесты, чтобы сразу было видно, верно все работает или нет. Сделай 2 списка номеров (правильные и нет), добавь их в программу и напиши цикл, который их по очереди прогоняет через регулярку и проверяет, что они определяются как надо (если нет — надо вывести, какой именно номер не распознается правильно).
#317 #1059344
>>1059230
Как специалистом то стать?
#318 #1059346
>>1059085
Не знаешь, чем AJAX отличается от прагма-директив?
#319 #1059347
>>1059082
Я например, чтобы хотя бы к ПхП приступить параллельно изучаю Си, а там еще более сложнее. И верстку постепенно улучшаю и на стороне беру курсы по дизайну страниц. Но HTML и CSS я изучаю до сих пор, делая главное задание по верстке от ОПа. И мне интересно, это самое важное, интерес.

нубсишник
someApprentice #320 #1059351
>>1059228
И как мне получение токена поможет передать пароль в gpg процесс? Ты думал, что у меня не получается просто аутентифицировать пользователя?
#321 #1059370
>>1059319
>>1059339
Как же меня эта дичь заебала в свое время. Наслаждайся
#322 #1059479
Правильно ли делаю, что перед PHP начал изучать HTML и CSS
т.е. PHP еще не изучаю?
#323 #1059492
Какую версию учить? 5ую или 7ую?
#324 #1059493
>>1059347
Многие, конечно, сейчас будут смеяться, но для меня пока php - это сишка без прямого доступа к памяти и без типизации. Но я только закончил учебник опа, сейчас пойду лопатить официальную документацию.

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

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

[0-9][-()] // Первая цифра, вообще для россии можно заменить на 9 или +7
[0-9][-()]
// Вторая и
[0-9][-()] // третья, а так же
[0-9][-()]
// четверая, причем вокруг них может быть любое количество скобок и тире.
[0-9][-()] // пятая
[0-9][-()]
// шестая
[0-9][-()] // седьмая
[0-9][-()]
// восьмая
[0-9][-()]* // девятая
и, думаю, какая будет десятая, ты сам поймешь. Говнокод, не спорю, нужно будет его оптимизировать, но по крайней мере, эта регулярка пропустит телефон в виде
"---(8)---(8)(0)(0)---(5)(5)(5)---(3)(5)---(3)(5)---", что, видимо по мнению опа, норм запись. Как сделать регулярку короче, но при этом чтобы она учитывала вот такой треш - я не знаю.
#325 #1059494
>>1059493

>для россии можно заменить на 9 или +7


На 8 или +7, офк.
#326 #1059495
>>1059493
Блджад, я тут недавно, подобосрался с разметкой.
Смысл в том, что всего в регулярке десять блоков, вида [0-9][-()]*, где сначала должа встретиться одна из цифр [0-9], затем любое число раз или ни разу символ, выбранный из [-()], причем там важно добавить после квадратной скобки квантификатор - звездочку, который как раз и сьела разметка, превратив некоторые строки в курсив.
#327 #1059504
Чому не считает?((
https://ideone.com/lZKDS1
#328 #1059522
>>1059504
У тебя неправильно использован оператор присваивания "=", у него та преременная, куда мы записываем значения, записывается слева, а что мы записываем - справа.
Вот правильный вариант: https://ideone.com/Y0qobq
#329 #1059523
Какую версию учить? 5ую или 7ую?
#330 #1059528
>>1059522
Спасибо.
Сложно. Пожалуй, программирование не моё, я слишком даун, пойду дальше просто скроллить двач
#331 #1059529
>>1059523
C 5.0 по текущую. В оф доках текщей версии почти для всех фич указывается номер версии, в которой они появились.
#332 #1059533
>>1059479
Всё верно.
>>1059492

> Какую версию учить? 5ую или 7ую?


7ую.
#333 #1059583
>>1059523

>Какую версию учить?


Любую, перейти с 5.3 на 7.0 - дело 15мин чтения мануала с изменениями..
Из наиболее глобального mysql_query - выпилили к хуям.
#334 #1059587
>>1049651 (OP)
Почему у пхп такая плохая репутация и многие называют его плохим языком?
#335 #1059604
>>1059587

>Почему у пхп такая плохая репутация и многие называют его плохим языком?


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

Зная PHP вынужден был изучать C# для исполнения вполне тривиальных ресурсоёмких задач. Например тупо выкачать и распарсить в 1000 потоков какие-либо вебстранички. Оценив мощь сишарпа теперь половина моих проектов это франкинштейны из PHP с подключаемыми C# модулями под конкретные задачи которые PHP тупо не тянет.
#336 #1059608
>>1059604

>конкретные задачи которые PHP тупо не тянет


Как, например, у меня >>1059197, где json_decode происходит 1,5-2 секунды.
#337 #1059609
>>1059604
Я вот как раз думаю, пхп или асп нет изучать. На одной чаше весов большое количество вакансий, на другой - возможность изучить хороший язык программирования и научиться каким-то универсальным навыкам, я знаю только js но вакансий гораздо меньше.
#338 #1059612
Что я не так сделал?
https://ideone.com/DD3zlJ
#339 #1059616
>>1059612
https://ideone.com/Q6GDF2

Так ближе к истине, но, опять таки, неверно.
#341 #1059693
Аноны, посмотрите программу "По кругу". При меньшем/большем количестве букв неправильный вывод. Какие ошибки?

https://3v4l.org/LdYmZ
#342 #1059720
>>1059604

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


Только если ты застрял в 4 версии
#343 #1059808
>>1059720

>PHP


>застрял в 4 версии



Как можно в пыхе застрять на старой версии ?
#344 #1059867
>>1059693

Ты вычисляешь размер массива $screen из количества букв в фразе. Это неправильно. Он должен вычисляться из радиуса с запасом.

>>1059616

Попробуй вывести с помощью echo, сколько ты платишь в последний месяц (до и после добавления комиссии). Там остается, допустим, 4500 (4500 < 5000), но после добавления процентов и комиссий получается ~5600, которые заемщик не может выплатить сразу, он платит 5000, а 600 переходит на следующий месяц и к ним второй раз добавляется процент и комиссия. У тебя это не учтено, потому общая сумма примерно на 1000 меньше правильной.

>>1059609

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

>>1059197

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

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

>>1059608

А ты ведь даже зайти в гитхаб и посмотреть на код json_decode поленился, а уже бежишь писать про "задачи, которые php не тянет".
#345 #1059868
>>1059587

Спроси у тех, кто называет. Алсо, статья с аргументами в помощь https://habrahabr.ru/post/315152/

>>1059583

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

>>1059504

Вообще, плохо что PHP не сообщил об ошибке синтаксиса. Я изучил ситуацию, там в парсере есть какие-то хаки и они интепретируют $a + $b = $c как $a + ($b = $c) в нарушение приоритетов операторов. Плохо.Создал баг в PHP для обсуждения проблемы: https://bugs.php.net/bug.php?id=75179

>>1059495

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

>>1059493

> php - это сишка без прямого доступа к памяти и без типизации


Ты недооцениваешь, насколько PHP более высокоуровневый язык. Попробуй, например, в Си напиши функцию, возвращающую строку или массив (это не так просто, как ты думаешь. Я могу привести один факт: в процесс может быть загружено несколько динамических библиотек, использующих разные версии рантайма так, что выделенная одной библиотекой память не будет освобождаться другой или через free(). Или, что хуже, вместо освобождения будет повреждаться куча. Потому в Windows часто выделение памяти перекладывают на пользователя, но это добавляет проблем, когда размер получаемой строки заранее неизвестен). Также, отдельная проблема на Си - это отсутствие менеджера зависимостей и родной системы сборки, как следствие монстры вроде autotools с нечитаемым синтаксисом конфигов.

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

> эта регулярка пропустит телефон в виде


> "---(8)---(8)(0)(0)---(5)(5)(5)---(3)(5)---(3)(5)---", что, видимо по мнению опа, норм запись


А ты попробуй сформулировать правила, отличающие "правильный" номер от неправильного. Я просто поймал себя на мысли, что нужно где-то остановиться и выгоднее сделать простую регулярку. Наша цель - ловить опечатки, а не каких-то пользователей-злодеев, решивших заполнить ншу базу данных минусами.
#345 #1059868
>>1059587

Спроси у тех, кто называет. Алсо, статья с аргументами в помощь https://habrahabr.ru/post/315152/

>>1059583

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

>>1059504

Вообще, плохо что PHP не сообщил об ошибке синтаксиса. Я изучил ситуацию, там в парсере есть какие-то хаки и они интепретируют $a + $b = $c как $a + ($b = $c) в нарушение приоритетов операторов. Плохо.Создал баг в PHP для обсуждения проблемы: https://bugs.php.net/bug.php?id=75179

>>1059495

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

>>1059493

> php - это сишка без прямого доступа к памяти и без типизации


Ты недооцениваешь, насколько PHP более высокоуровневый язык. Попробуй, например, в Си напиши функцию, возвращающую строку или массив (это не так просто, как ты думаешь. Я могу привести один факт: в процесс может быть загружено несколько динамических библиотек, использующих разные версии рантайма так, что выделенная одной библиотекой память не будет освобождаться другой или через free(). Или, что хуже, вместо освобождения будет повреждаться куча. Потому в Windows часто выделение памяти перекладывают на пользователя, но это добавляет проблем, когда размер получаемой строки заранее неизвестен). Также, отдельная проблема на Си - это отсутствие менеджера зависимостей и родной системы сборки, как следствие монстры вроде autotools с нечитаемым синтаксисом конфигов.

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

> эта регулярка пропустит телефон в виде


> "---(8)---(8)(0)(0)---(5)(5)(5)---(3)(5)---(3)(5)---", что, видимо по мнению опа, норм запись


А ты попробуй сформулировать правила, отличающие "правильный" номер от неправильного. Я просто поймал себя на мысли, что нужно где-то остановиться и выгоднее сделать простую регулярку. Наша цель - ловить опечатки, а не каких-то пользователей-злодеев, решивших заполнить ншу базу данных минусами.
#346 #1059869
>>1059339

Ошибка на ошибке

> [7-8+\\s]


Это значит "ровно один любой из символов: 7, минус, 8, плюс, или пробел"

> {1}


Без этой конструкции будет то же самое

> [0-9-\\s\\(\\)]{10}


Это значит ровно 10 символов, но не обязательно 10 цифр, а например 6 цифр и 4 других символа.

> [^а-я]


Это значит любые символы (и цифры, и знаки, и латиница), или буква ё, кроме кирилицы.

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

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

(в начале +7 или 8), затем (ровно одна цифра, за ней любое число символов) x 10 раз
#347 #1059872
>>1059319

Ответил тут https://pastebin.com/h3gkvsnF из-за спам-фильтра.

>>1059266

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

>>1059082

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

>>1059218

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

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

>>1059177

Ну для верстальщика нужно хорошо знать и CSS, и JS (в ОП посте есть задачи и на то и на другое, чтобы оценить свои силы). Но надо иметь, что верстальщиков конечно очень много, и специалист, который может сделать сайт целиком, а не только верстку, более востребован.
#348 #1059873
>>1059155

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

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

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

>>1059152

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

>>1059082

В Оп-посте есть задачи на HTML, в конце задача на верстку макета, по ним можно оценить свои силы.

>>1059074

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

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

Раньше такие вещи часто писали на Си, сейчас, думаю, будут писать на Го (который все равно без знания Си толком не выучишь). Вот например сишные демоны, которые выкладывали разработчики ВК: https://github.com/vk-com/kphp-kdb/tree/master/docs/ru

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

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

Ну и кстати, сейчас появляется WebAssembly, Asm.js, позволяющие выполнять код на ассемблере из браузера.

Я думаю, в вебе немало интересного.
#348 #1059873
>>1059155

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

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

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

>>1059152

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

>>1059082

В Оп-посте есть задачи на HTML, в конце задача на верстку макета, по ним можно оценить свои силы.

>>1059074

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

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

Раньше такие вещи часто писали на Си, сейчас, думаю, будут писать на Го (который все равно без знания Си толком не выучишь). Вот например сишные демоны, которые выкладывали разработчики ВК: https://github.com/vk-com/kphp-kdb/tree/master/docs/ru

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

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

Ну и кстати, сейчас появляется WebAssembly, Asm.js, позволяющие выполнять код на ассемблере из браузера.

Я думаю, в вебе немало интересного.
#349 #1059875
>>1059002

Если тебе что-то непонятно, можно задавать вопросы, ОП рано или поздно ответит.

>>1058668

> Неправда, верстку учат на полевых условиях.


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

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

Я сам уже не помню, когда я последних раз хорошую верстку видел. Одни дауны какие-то верстают.

>>1058994

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

>>1058775

Я вижу такие варианты:

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

> function login() {


> $password = $_GET['password'];


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

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


Ну либо мы его сохраняем, либо не сохраняем, других вариантов нет.

> Так же, я не знаю насколько это надёжно использовать приватные ключи без пароля.


Это значит что получивший ключ сможет расшифровать все, что им зашифровано.

То есть тебе все же надо определиться, где ты что будешь хранить, передавать и как будет выстроена модель безопасности. А уже исходя из этого выбирать реализацию.
#349 #1059875
>>1059002

Если тебе что-то непонятно, можно задавать вопросы, ОП рано или поздно ответит.

>>1058668

> Неправда, верстку учат на полевых условиях.


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

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

Я сам уже не помню, когда я последних раз хорошую верстку видел. Одни дауны какие-то верстают.

>>1058994

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

>>1058775

Я вижу такие варианты:

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

> function login() {


> $password = $_GET['password'];


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

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


Ну либо мы его сохраняем, либо не сохраняем, других вариантов нет.

> Так же, я не знаю насколько это надёжно использовать приватные ключи без пароля.


Это значит что получивший ключ сможет расшифровать все, что им зашифровано.

То есть тебе все же надо определиться, где ты что будешь хранить, передавать и как будет выстроена модель безопасности. А уже исходя из этого выбирать реализацию.
#350 #1059876
>>1058629

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

>>1058530

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

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

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

> К примеру, 5 раз используется конструкция вида INSERT INTO, с этим нужно что-то делать?


нет

>>1058764

Красота кода заключается в том, что код легко читать, легко в нем разобраться другому человеку, легко поддерживать, в нем нет побочных эффектов, при исправлении в одном месте ничего не ломается в другом месте. Подробно это описано в книгах вроде "Совершенный код". Несколько простых советов есть у меня (это конечно не полный список): https://github.com/codedokode/pasta/blob/master/good-code.md

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

>>1058370

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

>>1057793

> как функции, операции, создание представлений, триггеры (или как их там)


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

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

Можешь сам погуглить про аргументы за/против.

Если хочешь разобраться, открывай мануалы, изучай SQL/PL.
#350 #1059876
>>1058629

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

>>1058530

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

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

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

> К примеру, 5 раз используется конструкция вида INSERT INTO, с этим нужно что-то делать?


нет

>>1058764

Красота кода заключается в том, что код легко читать, легко в нем разобраться другому человеку, легко поддерживать, в нем нет побочных эффектов, при исправлении в одном месте ничего не ломается в другом месте. Подробно это описано в книгах вроде "Совершенный код". Несколько простых советов есть у меня (это конечно не полный список): https://github.com/codedokode/pasta/blob/master/good-code.md

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

>>1058370

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

>>1057793

> как функции, операции, создание представлений, триггеры (или как их там)


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

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

Можешь сам погуглить про аргументы за/против.

Если хочешь разобраться, открывай мануалы, изучай SQL/PL.
#351 #1059877
>>1057459

Думаю, лучше явно - передавать параметр ?json=1 и проверять его ифом. То, что ты задумал - не лучшая идея, так как в отдаваемых данных может быть то, что пользователи видеть не должны. Когда-то на одном сайте умники так решили сделать, и по моему чуть ли не весь конфиг с паролями отдавали в JSON-ответе.

Явное лучше неявного. Не нужно никакой магии и не нужно пытаться автоматически превратить параметры шаблонизатора в JSON-ответ.

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

>>1057184

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

Но если ты хочешь разобраться - читай исходники.

> доктрину подавляющее большинство симфонистов используют неправильно - репозитории как TableDataGateway


Ну они примерно для этого и задумывались

> анемичные модели


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

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


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

> Всё это и на Yii2 можно повторить, если выносить запросы к БД в репозитории (у нас используется такой подход для Eloquent).


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

>>1056871

Вместо $i<=1 лучше $i < 2 чтобы явно было видно количество.

> array_rand(array_flip($word1), 1);


Не нужен тут array_flip, нужно просто писать $x[array_rand(...)]

> $symbol2 = mb_substr($text, $length, 1);


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

>>1056869

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

>>1056989

Убедись, что результат действительно будет лучше и что ты не получишь в итоге много потраченного времени и такую же кучу кода, только на фреймворке.
#351 #1059877
>>1057459

Думаю, лучше явно - передавать параметр ?json=1 и проверять его ифом. То, что ты задумал - не лучшая идея, так как в отдаваемых данных может быть то, что пользователи видеть не должны. Когда-то на одном сайте умники так решили сделать, и по моему чуть ли не весь конфиг с паролями отдавали в JSON-ответе.

Явное лучше неявного. Не нужно никакой магии и не нужно пытаться автоматически превратить параметры шаблонизатора в JSON-ответ.

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

>>1057184

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

Но если ты хочешь разобраться - читай исходники.

> доктрину подавляющее большинство симфонистов используют неправильно - репозитории как TableDataGateway


Ну они примерно для этого и задумывались

> анемичные модели


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

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


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

> Всё это и на Yii2 можно повторить, если выносить запросы к БД в репозитории (у нас используется такой подход для Eloquent).


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

>>1056871

Вместо $i<=1 лучше $i < 2 чтобы явно было видно количество.

> array_rand(array_flip($word1), 1);


Не нужен тут array_flip, нужно просто писать $x[array_rand(...)]

> $symbol2 = mb_substr($text, $length, 1);


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

>>1056869

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

>>1056989

Убедись, что результат действительно будет лучше и что ты не получишь в итоге много потраченного времени и такую же кучу кода, только на фреймворке.
#352 #1059878
>>1056250
>>1056370

> Вообще это крайне редкая ситуация, но рано или поздно она встретится.


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

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

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

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

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

>> переписать код так, чтобы это было невозможно


> Это как бэ невозможно


Может и возможно? Гонка между проверкой файла/открытием решается вызовом open() сразу и проверкой кода ошибки. Также, там есть флаг для открытия с взятием блокировки. Также, при удалении файла, который открыт другой программой, он не удаляется с диска до закрытия. Или у тебя дикая ситуация вроде выдергивания работающей флешки? Можно попробовать имитировать размонтированием tmpfs.

>>1056316

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

> я не могу хранить в сущности полный путь к файлу в локальной ФС. Хорошей практикой считается хранить только относительный путь


Это касается только базы данных. Во временном объекте ты можешь хранить что хочешь.
#352 #1059878
>>1056250
>>1056370

> Вообще это крайне редкая ситуация, но рано или поздно она встретится.


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

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

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

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

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

>> переписать код так, чтобы это было невозможно


> Это как бэ невозможно


Может и возможно? Гонка между проверкой файла/открытием решается вызовом open() сразу и проверкой кода ошибки. Также, там есть флаг для открытия с взятием блокировки. Также, при удалении файла, который открыт другой программой, он не удаляется с диска до закрытия. Или у тебя дикая ситуация вроде выдергивания работающей флешки? Можно попробовать имитировать размонтированием tmpfs.

>>1056316

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

> я не могу хранить в сущности полный путь к файлу в локальной ФС. Хорошей практикой считается хранить только относительный путь


Это касается только базы данных. Во временном объекте ты можешь хранить что хочешь.
#353 #1059881
>>1057770
Не пишется код, не могу уже 2 дня решить задачу с циклами и вкладом в банк, я гуманитарий даун тупой, в общем.
#355 #1059886
>>1059882

Я набираю текст в редакторе и потом пощу, так как в браузере это делать неудобно и легко потерять, нажав Ctrl + R вместо Ctrl + T. Ну и эта борда при наборе больших объемов текста начинает тормозить.
1 Кб, 165x29
#356 #1059909
Что ето? Для чего используется в целом? Почему не просто кавычки, почему точки?
512x512
#357 #1059939
Сап пыхепач, если начну сейчас дрочить php с нуля, то примерно через сколько смогу в простой онлайн-магазин? думаю взять дипломную на эту темус html и css хорошо знаком
#358 #1059952
>>1059909
потому что ты соединяешь строки

"строка ". _переменная ."конец строки";
Это не всегда удобно.
Точка работает в качестве соединителя всех строк в одну
#359 #1059954
>>1059952
Хмммммммм, я более-менее понял, спасибо.
#360 #1059958
>>1059939
Дипломная в ПТУ?
#361 #1059959
>>1059958
не пту, а колледж!!1
#362 #1059962
>>1059959
Прикинь, в советское время даже к диплому пту предъявлялось требование, чтобы он содержал элементы исследовательской работы. Вот дураки были!
#363 #1059963
>>1059909
Конкатенация.
#364 #1060019
>>1059939
В интернете куча шаблонов магазинов.
#365 #1060028
>>1059939

>- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев


Если хочешь понимать каждую деталь кода.
Ну а если тупо копипастить, то гораздо быстрее.
#366 #1060056
Зандстра за 3 месяца не сдвинулся с мертвой точки. Поэтому на выходных запили скромный скрипт ради зеленых квадратиков.

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

Вопросов нет, просто отметился.
#367 #1060063
Вот завтра точно врываюсь в php

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

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

Алсо, почему нет конфочки в тг?
#368 #1060066
https://ideone.com/Ek7ACC

Теперь задача на айфон верна?
#369 #1060067
>>1060056
Гриша, а я по тебе уже соскучился!
#370 #1060068
>>1060066
Становится
Самофикс
#371 #1060070
>>1060063
Потому что конфочки для недосоциовыблядков.
#372 #1060071
>>1060070
https://t.me/PHP_club
Не, мы там все хикканы, чего ты.
#373 #1060079
>>1060071

>Голые чешки


>Йобаватарки


Удачи сгнить заживо.
122 Кб, 507x381
#374 #1060080
>>1060079

>зашли 2 ньюфага


>Запостили всякой фигни


>чот конфа не нравится


Поделил на ноль.
#375 #1060081
>>1060080

>2 Ньюфага


>На ноль


На два поделил
#376 #1060084
>>1059868

>Нужно использовать квантификатор, задающий 10 повторений.


Ну т.е. /([0-9][-()]*){10}/, правильно? Хм, а ведь элегантно же.

>насколько PHP более высокоуровневый язык.


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

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



>А ты попробуй сформулировать правила, отличающие "правильный" номер от неправильного.


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

>>1059872

>Ответил тут


Я так и понял, >>1059493
За ссылки спасибо, позже почитаю.
#377 #1060262
Кто что думает об этих курсах ? Сейчас хорошая скидка )
https://www.udemy.com/php-for-complete-beginners-includes-msql-object-oriented/
------------------------
https://www.udemy.com/learn-php-programming-from-scratch/#instructor-1
#378 #1060265
>>1060262
hexlet.io
/thread
sage #379 #1060274
>>1060071
ОП одобрил?
#380 #1060331
>>1060084
Регулярка пропускает через себя номера большей, чем нужно длины. Как это исправить? В примере - восьмой номер, он должен был быть отфильтрован.
https://ideone.com/dkTZYO
#381 #1060339
>>1060331
А, собственно, можно же после группы символов с квантификатором {11} просто добавить еще одну группу символов [-()/s]*, и тогда должно норм работать.
#382 #1060353
>>1060071

>PHP_club


Говно без задач, реклама платных курсов, школие.
#383 #1060384
Ребят, какой файл в apache2 нужно редактировать для того чтобы другие пользователи из интернета могли смотреть мой test/www/?
#384 #1060386
>>1060384
ОС debian
#385 #1060395
>>1060384

Речь про сервер или про домашний компьютер? Если второе, то есть ли у тебя "внешний" или "белый" IP-адрес, к которому можно подключаться снаружи? (по умолчанию многие провайдера размещают абонентов за NAT, и за "белый" адрес надо доплачивать).
#386 #1060399
>>1060395
Вроде белый если верить https://192-168-1-1.ru/ip-address-classify/, динамический.
Домашний компьютер.
#387 #1060418
>>1060399

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

Также, "динамический IP" еще не значит, что к тебе можно подсоединиться снаружи - может, у твоего провайдера NAT. Советую посмотреть информацию на сайте провайдера или в личном кабинете.

Что касается настройки компьютера, то тут только 2 момента:

- в конфиге Апача должен быть указан 0.0.0.0 (слушать на всех интерфейсах), а не 127.0.0.1 в качестве интерфейса, на котором Апач слушает порт (проверить можно командой sudo netstat -lpn найдя в выводе Апач, порт 80 и посмотрев какой там стоит IP адрес)
- в фаерволле, если он включен, должен быть разрешен доступ снаружи к порту 80 и 443 для https.
#388 #1060421
>>1060399

Ну и помни про безопасность - если ты открываешь доступ снаружи, на твой сервер попытаются пролезть всякие боты, будут например подбирать пароль к ssh пытаться.
#389 #1060434

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


Как учить? Книги? Если да, то какие?
#390 #1060482
>>1060434
в оп-посте все написано. листай вверх
#391 #1060562
Сап тред, нужно чтобы вы меня сориентировали.
Есть градации знаний и уровни специалиста
Ньюфаг
Студент
Стажор
Джун
Мидл
Тимлид
Синьор
Какие знания должен иметь каждый из этих градаций по вашему?
#392 #1060564
>>1060562
Нюфаня ничего не знает, должен знать
Студент писать паскаль, студента не учить ничему
Стажор не знать, знать стажер
Джун знать основа, точно говоря CSS, HTML, JS маленький
Мидл не знать
Тимлид не обязательно знать, но уметь управлять
Синьор знать все в своем CSS, HTML, JS, PHP знать сделать форум и хост
sage #393 #1060565
>>1060562
Я все понимаю, но зачем?
#394 #1060566
>>1060565
Чтобы знать свой уровень и расчитывать что изучить для развития например.
#395 #1060568
>>1060566
Для знать уровень нужен работа
#396 #1060569
>>1060562
Моё мнение.
Ньюфаг
HTML, CSS, немного JS и возможно немного PHP уровня "На ютюбе посмотрел"
Студент
HTML5, CSS3, Основы JS, Основы PHP (циклы, алгоритмы, подключение к БД), SQL на уровне специалиста, уметь в 2-3 СУБД на уровне "Создал БД". Умение работать с гитом.
Стажор
PHP на уровне середнячка, уметь с нуля писать MVC, знать 1-2 фрэймворка, иметь опыт разработки пары тройки сайтов (не коммерческий), SQL знать на уровне очень крутого спеца. Иметь Github c 2 мини проектами. Знать основы проектирования БД. Иметь опыт работы с 3-5 субд. Иметь опыт работы с IDE.
Джун
Знание PHP и его подводных камней. иметь портфолио из 5-10 сайтов(можно некоммерч), знание 3-5 фрэймворков. Иметь маленький опыт коммерческой разработки. Хорошо знать JS, знать HTML и CSS на 9 из 10. Чтобы совсем уж тупыми вопросами не доставать. Уметь проектировать БД с нуля. Уметь управлять СУБД в авторежиме, бэкапить, пересоздавать, конвертить. Понимать что у тебя вылежла ха ошибка и иметь опыт эти ошибки исправлять. Уметь работать с JSON. Уметь работать с чужими API. Уметь в фулл стек фронта + бэка (да это не нужно, но ты обязан знать фронт чтобы писать более удобный бэк например ящитаю).
Мидл
Иметь ZEND сертификат. дальше пока не придумал.
Тимлид
Синьор
#397 #1060570
>>1060569
Это можно уместить в
Джуниор
Сеньор
98 Кб, 557x316
#398 #1060785
Насколько всякие SEO/SMM/LSI-копирайтинг и верстка относится к этим вашим web-IT? Какое у этого будущее?
В целом какие перспективы ожидают web и цифровую коммерцию?
Как долго ещё для того, чтобы вкатиться в web будет достаточно такого низкого входного порога уровня "веб-макака"?
#399 #1060888
>>1060482

> Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP, этого недостаточно. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL


Где? Как?
#400 #1060891
>>1060785
Ты реферат пишешь?
#401 #1060892
>>1060891
Пытаюсь для себя обозначить перспективы
#402 #1060894
>>1060892
Я тоже соломку хочу постелть, да не знаю куда...
#403 #1061151
>>1060785

>Как долго ещё для того, чтобы вкатиться в web будет достаточно такого низкого входного порога уровня "веб-макака"?


5 лет назад. Уже всякие JS дауны считают себя прогроммистами. Ходя взять 2007 года, JS, HTML, CSS - знал вообще любой школьник у которого бл компьютер.
#404 #1061229
>>1060785

>Как долго ещё для того, чтобы вкатиться в web будет достаточно такого низкого входного порога уровня "веб-макака"


Лол. Для того, что бы вкатиться ранга "веб-макака" недостаточно уже сейчас.
#405 #1061267
>>1061151

>Ходя взять 2007 года Уже всякие PHP дауны считают себя прогроммистами.



Пофиксил на полном серьезе.
#406 #1061501
Куда в TDG поместить общие для всех таблиц методы: eraseEntry(), addEntry(), getDataInRange() и т.п. Копипастить в каждый класс? Или сделать один класс с этими методами и передавать в каждый метод название таблицы? Помимо этих есть много специфических методов для каждой конкретной таблицы.
#407 #1061513
>>1049651 (OP)
сап, может кто шарит помогите!
короч есть сервак win server 2012r2 подняты iis+php+mysql как создать сайт локальный для изучения сайтостроения и прогать прям видя результат
21 Кб, 400x324
#408 #1061523
Ребят, уже спрашивал вроде, но чёт мне не ответили.
Собираюсь брать ноутбук, чтобы учиться кодить на основной работе. Бюджет как всегда ограничен, само собой. Поэтому, нужно взять максимально недорого, но не в ущерб производительности. То есть, нужен ноутбук, за которым я смогу комфортно работать в верстке и в php.
Напишите, пожалуйста, минимальные характеристики.
Заранее спасибо, ребят.
#409 #1061525
>>1061523
любой
#410 #1061543
>>1061525
Шутки шутишь?
В гугле пишут что 8 гб оперативы миниму и так далее.
А я вообще не могу понять, нахуй она там нужна, если ты верстаешь сайты и кодишь в php
#411 #1061546
>>1061543
Сначала кодить начни, а потом решайся.
#412 #1061556
>>1061546
Блядь, вот я спросил конкретный вопрос про ноут. Нечего сказать - не засоряй тред.
#413 #1061577
В /web совсем тишина, спрошу здесь.

Как парсить не валидный html? PHP Simple HTML DOM Parser не переваривает кривой html.
К примеру <img alt="Заглушка 1" VALTEC угловая уп.532/16шт." src="img.jpg">

Дюймы 1" обозначены кавычкой, получается alt="Заглушка 1" всё остальное не понятно к чему относится. Браузеры такое переваривает, а Simple ломается при попытке вытянуть src. Может есть какой валидатор, который фиксит такую херню.
#414 #1061595
>>1061577
У меня были похожие случаи, когда пытался парсить старые треды с этой борды (примеры на пике). Использовал symfony/dom-crawler, работает отлично.
Это тонкая надстройка над расширением DOM в PHP, предоставляет более лаконичный API, чем нативное расширение. Для составления запросов можно взять symfony/css-selector (не вижу смысла использовать XPath без специфичных нужд).

Советую вообще дропать PHP Simple DOM, это древняя библиотека в исходниках которой чёрт ногу сломит, работает на регулярках, не умеет бросать ошибки, старьё в общем.
#415 #1061606
>>1061556
Я на ведре с болтами работаю, мне норм.
#416 #1061617
>>1061523
Ща я тебе раскидаю
Есть три основных подводных камня:
Планшеты - притворяющиеся ноутами. Очень слабый проц + мелкий экран + мелкий ссд ни понятного качества. Это шлак. Не бери никогда.
Просто очень слабый проц. Все будет медленно и со скрипом. phpstorm и ему подобные будут год открываться и страдать на больших проектах.
Медленный винт. Винт 10гб ссд + 500гб 5400 оборотов тоже медленный. Тут все понятно. Все будет медленно.

Итак тебе нужно стремиться:
Оперативки 4-6+ для Линукса (почти наверняка нужно будет накатывать пакет для регулировки вентилятора), 8+ для Вин10 (другие винды не нужны, 10-ка лучше расходует батарею и крутит охлаждение, но жрет время винта и процессора своими постоянными копошениями, что можно вырубить сторонними тулзами).
Либо предустановленный ссд (что дорого) либо возможность его туда впереть. Впирается или вместо сидюка если он есть (есть специальные переходники, как правило с алиэкспессов за 7-30 уе) или вместо оригинального винта. В первом случае я бы целился в 128 гб ссд во втором хотелось бы 250+ но и 120+ тоже пойдет. Т.е. нужно при выборе модели гуглить кто и как туда вставил ссд.
Разъем для подрубания монитора + пачка юсб для мышей и клавиатур, если есть куда воткнуться на работе.
Я бы прикидывал так:
Ноут с максимально жирным процессором и 8 гб оперативы за бюджет - ~$120. И $120 на оССДение.
Не стесняйся спрашивать про конкретные модели

>>1061606
Этот вообще прав. Линукс + ЛАМП + сублаймтекст работают практически на чем угодно.
#417 #1061618
>>1061617

>Не стесняйся спрашивать про конкретные модели


в ноутбуко-треде в /hw/. Там конечно унизят, но советов дадут. Не будем дальше разводить оффтоп.
#418 #1061652
Рулетка имён верна?
https://ideone.com/6k4j73
#419 #1061654
>>1061652
$rand = rand(0,16);
сразу фейл, откуда ты знаешь сколько у тебя в массиве слогов?

>ШахиНелШахиЗулЗел


Что за КамелКейсИмя такое, сделай что бы генерило Шахинелшахизулзел
#420 #1061666
Доброй ночи, РНР господа.
Знаю азы прогграмирования на рнр.
Хочу изучить в полной мере. Решил, что буду изучать по мере создания своего проекта.

Проект: складской учет.
Сейчас лист такой:
-Закупки
-Продажи
-товары (кол-во на складе, цена отпуска и закупки)

Вопрос вот в чем: Мне это делать в MySql? Или нет? Может есть какието нароботки по этому поводу? что стоит посмотреть в исходниках?

Спасибо
#421 #1061669
>>1061654

>сразу фейл, откуда ты знаешь сколько у тебя в массиве слогов?


Как откуда? Посчитал.
#422 #1061685
>>1061669
Ответ из базы данных тоже в ручную будешь считать? Или на юзера возложишь мб?
#423 #1061687
>>1061669
https://ideone.com/UF5yJb
на удаленном сервере изменился словарь. Что будешь делать? Каждый день будешь бегать слова пересчитывать? Найс собачка, а не программист растет, сразу видно.
#424 #1061688
>>1061687
Там вроде модно поставить что-то типа array.lenght
мимокрок
#426 #1061693
>>1061523
В hw с такими вопросами. Но так как я сам оттуда, то скажу: Ориентируйся на быстрый твердотельник, тебе хватит ну 64гб по горло, потом накопишь вставишь еще если нужно будет. Потом процессор, 2 ядерный с 4 3ггц тредами, и про 8гб это если серьезные проекты типа видеоигр, для веб хватит по горло 4гб, для начала учебы тебе пойдет. Советую заморочиться с линуксом, тот работает на чем угодно и платить за пиратку шинды не надо будет. В общем кодить можно и на Нокии, не нужны там характеристики чтобы прям тянуло. Сейчас оборудование оптимизировано под железо ну очень хорошо, а современные процессоры имеют сказочную архитектуру которая оснащена ну волшебными инструкциями. И вообще, кодили же как то раньше, думаешь в прошлом технологии лучше были? В общем учись думать, меньше спрашивать будешь, такое ощущение что ты и кодить не сможешь, раз такие глупые вопросы задаешь. Для программиста очень плохо когда за него думают.
#427 #1061694
Я вообще кодил на 1.2Ггц с 2гб оперативкой на старом пеньке с HDD на 250гб змейки на С++ и даже датабазы на гиг, ну вот никогда не лагало, чесслово.
#429 #1061697
>>1061696
Хрюша ищет рабов на дваче.
#430 #1061702
>>1061696
Сначала охуел от того насколько всратой смотрится вакансия. Потом понял, что наверное это контора ищет себе php разраба который будет у них ПЕРВЫМ, поэтому описать нихуя не могут что толком нужно. Присматривать будешь за говносайтом, который васяны на фрилансе захуярили и теперь нужно поддерживать. И вообще вакансию похоже hr составляла, не зная нихуя о вебе.

>MySgl


Кароче просто забей.
#431 #1061727
>>1061691

>MySgl


Проиграл.
Впрочем, это не самое смешное в этой анкете.
#432 #1061752
>>1061702
А я только заметил MySgl, проиграл. Я еще просто подумал, ну мол HTML верстальщик, значит у них уже есть CSS верстальщик, но не подумал, что это смешно. Смешнее вот это:

>Пл.Карла Маркса

#433 #1061753
>>1061752
Они телефон оставили? Могу разведать.
#434 #1061755
>>1061753

>Они телефон оставили? Могу разведать.


https://nsk.zarplata.ru/vacancy/card/135623031
+7 (905) 937-77-56
>>1061727

>Впрочем, это не самое смешное в этой анкете.


>А что тебе показалось самым смешным?

#435 #1061757
>>1061666
Битрикс
#436 #1061762
>>1061755
Я обосрался в общем, на запись не поставил. Но цитирую
Нам ПиЭйчПи нужен, вы работали с чем нибудь? Да у нас там разработка датабазы, ну как сказать, все уже готово как бы, просто нужно там все настроить, вот
#437 #1061767
>>1061762
Представил как приходишь к ним такой, поднимаешь сайт, тестируешь работоспособность, учишь кого-то из манагеров пользоваться админкой всё запускаешь кароче и после этого тебя пидорят сразу: извините тестовый период бла бла, вы нам не подходите)))

Ну или в удачном случае сидишь пинаешь хуи на работе за 15к чисто числясь и вырезая иногда новые баннеры с помощью своего "Опыт работы в графических редакторах", а по факту припашут работать шлюхой бухгалтеров и прочих девочек, которым будешь ярлыки на рабочий стол выносить.
#438 #1061774
>>1061767
Мужику было все равно даже на образование, сразу скидывал на то, что мол давайте встретимся.
#439 #1061798
>>1061685
Тогда count(;array)

>>1061687
Ну я возьму и почувствую, примерно так узнаю. Ты не стукай, братишка.
#440 #1061800
>>1061798
count($array)
#441 #1061803
>>1061687
https://ideone.com/ntBMor

ideone полетел. Там по ссылке должно быть верно.
#442 #1061808
>>1061654
https://ideone.com/oLdjFJ
Почему не переводит в регистр?
Я пытался и к кускам $randText применять.
Почему оно кривиться, сказано же, нормальный код будет ближе к выходным.
#443 #1061810
>>1061808

>кривиться


кривится
#444 #1061820
>>1061757
Дядь, я свое по хочу сделать
#445 #1061825
>>1061666

У тебя типичное CRUD приложение, с таблицами и формами. В ОП посте есть задача про список студентов, с большим количеством комментариев и ссылок, и она как раз является примером простейшего CRUD приложения. Почитай ее. Там все как надо, с ООП и MVC.
#446 #1061871
Ребят, можете подсказать как организовать грамотную скачку файла в сервера в браузер клиенту? Я пытаюсь отправить AJAX запрос с именем файла, который подлежит скачке, а дальше нет идей. Все что я добился - файл в виде строки.
#447 #1061883
>>1061820
2к17
Городить велосипед из костылей с кучей багов и дырищь.
#448 #1061888
>>1061883

Спаведливости ради, Битрикс по качеству не лучше того, что начинающий сам сделает, я помню там была проблема например с тем что он требовал какую-то настройку (register_globals? не помню), которую в новом PHP удалили.

Надо уж тогда нормальные варианты предлагать, Юи или Симфони или Ларавель.
#449 #1061892
>>1061755

>А что тебе показалось самым смешным?



>договорная


>высшее образование && знание HTML - верстки


>Сложные, интересные задачи

24 Кб, 375x500
#450 #1061927
Как вы вообще всему этому учились? Вот сел я читать, читал читал и пиздец, и пиздец. Вся мотивация отпала, ничего не запоминается, ничего не откладывается. Хочется всё закрыть и пойти плакать/кушать/играть/фапать/двачевать. Ну не могу я, не могу просто не могу всё это выучить и всё это запомнить. Я даже заставить себя не могу начать.
Как итт люди с этим справлялись? ПРОСТО САДИЛСЯ И ЧИТАЛ-УЧИЛ по десять часов в день? Или как всё происходило?
#451 #1061929
>>1061927
Нет. Просто садился и делал свои программы на <языкнейм>. Мне не хватает терпения долго читать теорию, а книги по программированию номинальным объемом от 1000 страниц осилить за пару вечеров нереально.
#452 #1061945
>>1061929
А я вот очень хочу хотя б базово html изучить, как я на нём что-то писать буду. Слишком тяжелая необходимая основа получается.
#453 #1061949
>>1061945
Секи фишку: специализуйся на бэке. Фронтэнд макаки по рупь за пучок.
#454 #1061956
>>1061927
Да, просто садишься и учишь. Читаешь книжки, решаешь задачки, вникаешь в математику, алгоритмы и вот это вот все. Потом выбираешь язык и делаешь что тебе нужно. Тут одна важная вещь еще -- это должно нравится. Причем нравится настолько, что вполне нормально зачитываться всякой гиковской хуйней до пяти утра и не ложась пойти на работу просвещенным и просветленным.

>>1061945
Так хтмл не ЯП, а язык разметки. Чего его учить-то? Что сложного? Если даже учитывать цсс, там логики минимум. Указываешь, что тебе нужно -- оно выводится на экран. Вот охуеть как сложно.
#455 #1061965
>>1061956
Дополню анона.

Когда выбрал <языкнейм>, идешь на апворк и ищешь задачи. Затем приступаешь к выполнению. После пишешь заказчику: есть готовый концепт, обсудим? Рейт такой-то.
#456 #1061970
>>1061965
>>1061949
Все равно буду и дальше жалеть себя и искать отговорки. Но спасибо.
#457 #1061987
Здрасте

Правда ли, что апач создает новую копию, с полными инициализациями с нуля для каждого входящего запроса (или что-то в этом роде)? Это только апач так работает или все, что с php. Поясните, пожалуйста. Получается что много аякс запросов на апач серверы это не самая лучшая идея?
#458 #1061991
>>1061595
Короче с помощью PHP Tidy получилось сделать валидный html, Simple нормально теперь переваривает его.
Д, надо попробовать переписать свой говнокод с использованием symfony. Может он из коробки переварит корявый html.
8 Кб, 512x512
#459 #1061997
После изучения многих ресурсов у меня встал вопрос:
насколько сейчас нужно заботиться о совместимости браузеров и поддержке функций на стороне клиента? Нет, я, конечно, за правильный и хороший код, но очень уж не хочется в каждом проекте думать о тех, кто до сих пор сидит на каком-нибудь IE6.
#460 #1062010
>>1061997
В тырпрайзе минимум IE10. Все мамонты идут нахуй.
#461 #1062011
Здесь есть люди шарящие в Битриксе? Если я элемент привязак к новому разделу, а потом этот раздел удалил, то удалится ли вместе с ним сам элемент?
#462 #1062013
>>1061871
То есть скачка файла?
1 вариант - прямая ссылка на файл
2 вариант - средствами пхп отдаешь нужный файл с соответствующим хттп заголовком
#463 #1062042
>>1061927

> Как итт люди с этим справлялись?


Просто им было интересно.
Не обманывай себя, тебе это не интересно и не нужно.
Ты начитался про мамкиных погромистов 300к$/нс и думаешь, что и иы станешь таким успешным. Хуй там плавал, займись тем, что тебе действительно интересно.
#464 #1062053
>>1060888
Реквест
#465 #1062077
>>1062042
Мне вот мет варить интересно, например. Честный труд мало интересен. Хули делать?
#466 #1062083
>>1061987
Если ты имеешь ввиду, что при каждом запросе к php, он инициилизируется заново, то да. Другое дело, что большинство запросов кэшируется. Другое дело, что есть сервер сайд рендеринг, и если изменений в бд не было, то выплевываются кэшированные штмльки и любой бэкенд может не дергаться совсем.
#467 #1062094
Фулстак должен знать html,css,php,js + пару фреймворков?
#468 #1062146
>>1061927
Быть долбоёбом сложно. По возможности постарайтесь этого избежать.
380 Кб, 1600x900
#469 #1062173
Приветики.
Хелпаните перфекционист-куну в задаче! Последний пункт никак не могу осилить, вопрос вот в чем, требуется вывести количество людишек которые проживают в каждом отдельном штате. Проделав нехитрую манипуляцию $sumOfTex += $state["Texas"]; мы получаем непонятную ошибку, но в итоге таки когда принтим $sumOfTex на выходе получаем число 50, что равно собственно количеству жителей данного штата.
https://ideone.com/0qfHMq
???
#470 #1062186
>>1062173
Какой-то ты маня-перфекционист.

Ты сам не видишь того пиздеца которого ты наворотил?

Допустим твой первый цикл нырнул в Лос Анжелес. Второй цикл в это время обращается к несуществующему Техасу и спрашивает сколько там людей блядь лол.
#471 #1062192
>>1062186
Да я не понимаю что я там натворил, поэтому и обратился в тред.
Вижу только одно решение, по другому организовать массив.
"Texas" => {"Moscow" = 1111, "Kiev" = 1111, "Minsk" => 111], например так.
#472 #1062194
>>1062192
Какой ты тогда перфекционист если не понимаешь дурашка.
#473 #1062200
>>1062194
Убеждение, что несовершенный результат работы не имеет права на существование
Перфекционизм заключается в том, что бы решить задачу правильно.
А ты выродок какой-то если често, ирл ебало разнес бы в кровь, дрыщ ебаный.
#474 #1062201
>>1062200

>Несовершенный результат работы не имеет права на существование


Почему ты еще не выпилился?
#475 #1062203
>>1062201
Зачем же ты его так жестко приложил? Блядь глядишь выпилится рили после осознания.
#476 #1062217
https://youtu.be/u319Rxm8UUw
Сложно ли сделать подобное по типу этого говна?
Имею нулевые знания в PHP со всеми вытекающими, до этого кодил только на плюсах и питоне.
11 Кб, 288x233
#477 #1062257
Данный код работает, но мне интересно как. Погуглив, я узнал, что flush() отправляет системный Output Buffer, а ob_flush() сбрасывает мой буфер (созданный с ob_start()) в системный буфер. Но в коде я не создавал никаких кастомных буферов, и по идее я должен каждую 1 секунду видеть по одной цифре даже без ob_flush(), но дело в том, что убирая flush() или ob_flush(), эффект остается прежним (он просто ждет 10 секунд, а потом отдает готовую страничку со всеми выведенными цифрами). Когда они прописаны вместе, он одновременно прогружает страничку, и одновременно еще отправляет из буфера по цифре (во время прогрузки странички). Вопрос: Почему мне нужно писать ob_flush() и flush() вместе?
#478 #1062311
>>1062257

Да, это разные буферы. flush() - это сброс сишного буфера. Он работает примерно так: когда ты пишешь что-то в файл (вывод в консоль в линуксе это тоже запись в файл, насчет Windows не уверен) маленькими порциями, было бы не очень эффективно на каждые несколько байт делать системный вызов (обращение к ядру ОС). Аналогично, при посимвольном чтении неэффективно на каждый символ дергать ядро ОС. Потому сишная стандартная библиотека, которая содержит функции записи в файл вроде fwrite/fread, содержит алгоритм буферизации для этих функций - накапливать определенный блок данных и передавать его ОС при превышении определенного размера. А при чтении - запрашивать большой блок и читать небольшими порциями из этого блока.

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

Ну а для явного сброса буфера предусмотрена функция fflush(). По идее в большинстве случаев все должно работать хорошо и без нее.

Это чисто сишный механизм, ты бы мог напрямую вызывать функции ОС (в Линуксе это read/write без буквы f в начале), и передача данных шла бы напрямую.

Эта буферизация определена по моему в стандарте Си, и потому в теории может работать на разных платформах (на каждой немного по-своему). Вот описание из мануала к линуксовой libc: https://www.gnu.org/software/libc/manual/html_node/Stream-Buffering.html

Вот мануал из справки линукса: http://man7.org/linux/man-pages/man3/fflush.3.html

PHP написан на Си и видимо в нем используются стандартные функции сишной библиотеки, потому flush() в нем может вызывать сишную fflush (вроде так и есть в исходниках).

Что касается ob_flush(), то это чисто PHP-ный механизм с такими отличиями:

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

Ты в своем коде не создаешь буфер через ob_start(), но там может быть один буфер, который создается автоматически и управляется отдельными настройками: http://php.net/manual/ru/outcontrol.configuration.php . Проверить можно через ob_get_level.

Вообще, в случае сложностей, можно проверить, как данные передаются с сервера в браузер - большими пакетами или маленькими. Для этого можно перехватить трафик WireShark и посмотреть. Не забудь, что ловить пакеты на 127.0.0.1/localhost скорее всего нельзя и тебе надо браузером обращаться на IP сетевой карты (напрмиер, 10.x.x.x, посмотреть можно в ipconfig). Не забудь, что другие программы могут также использовать сеть и надо либо их отключить либо отсеять фильтром в WireShark.

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

Да, это разные буферы. flush() - это сброс сишного буфера. Он работает примерно так: когда ты пишешь что-то в файл (вывод в консоль в линуксе это тоже запись в файл, насчет Windows не уверен) маленькими порциями, было бы не очень эффективно на каждые несколько байт делать системный вызов (обращение к ядру ОС). Аналогично, при посимвольном чтении неэффективно на каждый символ дергать ядро ОС. Потому сишная стандартная библиотека, которая содержит функции записи в файл вроде fwrite/fread, содержит алгоритм буферизации для этих функций - накапливать определенный блок данных и передавать его ОС при превышении определенного размера. А при чтении - запрашивать большой блок и читать небольшими порциями из этого блока.

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

Ну а для явного сброса буфера предусмотрена функция fflush(). По идее в большинстве случаев все должно работать хорошо и без нее.

Это чисто сишный механизм, ты бы мог напрямую вызывать функции ОС (в Линуксе это read/write без буквы f в начале), и передача данных шла бы напрямую.

Эта буферизация определена по моему в стандарте Си, и потому в теории может работать на разных платформах (на каждой немного по-своему). Вот описание из мануала к линуксовой libc: https://www.gnu.org/software/libc/manual/html_node/Stream-Buffering.html

Вот мануал из справки линукса: http://man7.org/linux/man-pages/man3/fflush.3.html

PHP написан на Си и видимо в нем используются стандартные функции сишной библиотеки, потому flush() в нем может вызывать сишную fflush (вроде так и есть в исходниках).

Что касается ob_flush(), то это чисто PHP-ный механизм с такими отличиями:

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

Ты в своем коде не создаешь буфер через ob_start(), но там может быть один буфер, который создается автоматически и управляется отдельными настройками: http://php.net/manual/ru/outcontrol.configuration.php . Проверить можно через ob_get_level.

Вообще, в случае сложностей, можно проверить, как данные передаются с сервера в браузер - большими пакетами или маленькими. Для этого можно перехватить трафик WireShark и посмотреть. Не забудь, что ловить пакеты на 127.0.0.1/localhost скорее всего нельзя и тебе надо браузером обращаться на IP сетевой карты (напрмиер, 10.x.x.x, посмотреть можно в ipconfig). Не забудь, что другие программы могут также использовать сеть и надо либо их отключить либо отсеять фильтром в WireShark.

Ну и конечно, если тебе надо на практике выводить какой-тог лог в браузере, лучше использовать более надежные методы - вебсокеты или long polling. Медленная отдача страницы это наверно самый неэффективный и ненадежный метод.
#479 #1062390
Пацаны, задача студенты.
Для вывода ошибок я подумал использовать плейсхолдеры. Но если значение введено даже если оно не верно то оно отображается там вместо плейсхолдера. Как реализовать-то?
#480 #1062410
>>1062390
Не неси хуйню, для ошибок определи контейнеры, а затем JSом подставляй туда текст
#481 #1062423
>>1062410
Я не могу в жс! Расскажи подробнее чтобы понимать, что гуглить.
#482 #1062440
>>1062390

Ошибки лучше выводить в отдельном элементе, плейсхолдеры на эту роль не подходят. Причем средствами CSS ты можешь оформить и расположить элемент с ошибкой как угодно.
#483 #1062443
>>1062440
спасибочки
#484 #1062447
>>1062390

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

Также, обрати внимание, что есть еще HTML5 валидация, но конечно, там ты сильно повлиять на внешний вид сообщений не можешь.
#485 #1062452
>>1062447
Поле цвет уже меняет. И хтмл5 валидацию я тоже почитал.
#486 #1062464
>>1062311>>1062311

>то есть порядок наверно должен быть обратный - ob_flush, за ним flush


Я тоже об этом задумался, но написал так как нашел в интернете. Спасибо за такой развернутый ответ, анон.
35 Кб, 469x283
#487 #1062530
Что писать в php, чтобы получить вот эти данные и отправить по почте? Алсо, что надо писать в mail(From: )?
#488 #1062533
>>1062530
Datatype раскоменчен, если что.
#489 #1062537
>>1062530
За что люблб пхп макак: за транслитерацию переменных. В JAVA-коде никогда не встретишь переменную 'visota'.
#490 #1062541
>>1062537
Код спиздил.
25 Кб, 916x582
#491 #1062552
>>1062257
Лол, ты вкурсе что веб это немного другое чем десктопные приложения? Если ты в консоле запустишь пхп скрипт, то будет так как ты хочешь. По мере выполнения скрипта, у тебя будут выводиться данные динамически.

А в браузере всё работает как-то так: сначала у тебя ПОЛНОСТЬЮ отрабатывает скрипт, до завершения, и после этого только отдается страничка с результатами. Что бы что-то изменилось, то нужно полностью перезагружать страничку. Если ты натыкаешь sleep(); у себя в коде, то ты только отложишь выполнение скрипта.

Если хочешь что бы у тебя в браузере динамически всё менялось. То тут надо хуярить на js.
#492 #1062559
>>1062537

>за транслитерацию переменных


Как что-то плохое
#493 #1062561
>>1062530

файл send.php
<?

if (isset($_POST)) {
$userInput = $_POST;
}

Потом в коде обращаешься за данными через этот массив

echo $userInput['name'];
$userPloshad = $userInput['dlina'] * $userInput['visota'];
и т.д.
#494 #1062582
>>1062561
Так мне расчёты делать не нужно. Просто нужно взять переменные и отправить по почте. Вот этот .ajax передаёт данные в пхп, а как их расшифровать на стороне пхп и передать по почте, я не знаю. Я так понял, что для отправки почты нужен свой smtp сервер или smtp какого-нибудь гугла. Но в примерах отправки почты просто пишут mail(from: u ~QsernameANUSmaivo5lPUNCTUMc3LOom). Но как может отправляться почта без логина и прочего? Как через пхп соединиться с моей почтой гугла и отправить письмо с данными с сайта?
#495 #1062586
>>1062552

>А в браузере всё работает как-то так: сначала у тебя ПОЛНОСТЬЮ отрабатывает ...


Зависит от НАСТРОЕК веб-сервера. Техническая возможность форсировать отправку данных клиенту до завершения скрипта в php есть. Другой вопрос зачем.
#496 #1062596
>>1062582

>Вот этот .ajax


Json то есть.
#497 #1062618
>>1062582

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

Если ты хочешь использовать почтовые сервисы для отправки писем, имей в виду, что они могут заблокировать твой аккаунт или не доверять твоим письмам и отправлять их в спам.
#498 #1062639
>>1062582
Ну возьми вот эти данные которые у тебя уже есть, и попробуй себе их отправить с помощью банального
http://php.net/manual/ru/function.mail.php

Ты же там чей-то сайт ковыряешь? Вдруг на нем ИЗ_КОРОБКИ уже всё работает.
https://ideone.com/9sVFuy

Но сильно сомневаюсь, пару лет назад я касался темы рассылок, и там надо было дохуя всего сделать и соблюсти что бы твои письма вообще хотя бы доходили куда-то. Начиная от dkim подписи и прочих хедеров, до обязательной кнопки "отписка". Чет не могу сейчас найти официальный гайд от яндекса по этой теме, и от гугла тоже раньше был. Видимо гребут под себя, хули. Что бы пользовались люди чем-то вроде https://yandex.ru/support/pdd/about.html
Хуй знает лень сильно гуглить кароче.

Если совсем не сможешь разобраться, то гугли как через сторонние сервисы слать письма. Чисто пхп скриптом дергаешь их апишку например, а они шлют что тебе нужно, ну ты понял.
#499 #1062640
Прорешал все задачи для ньюфагов из оп-поста и теперь хочу попробовать запилить быдлоблог для тренировки, но в верстке и джаваскрипте совсем ничего не понимаю. Как вообще лучше всего освоить какой-нибуть бутстрап, например? Может есть какие-нибудь курсы, уроки?
#500 #1062650
>>1062552
Ну это понятно. Мне было просто интересно как это работает.
36 Кб, 350x371
#501 #1062653
>>1062618
Сайт находится на beget.com, не знаю, что там у них с отправкой почты. С хостингом со своего компа было бы меньше проблем. Нашёл такой код для захода в свою почту. Про спам похуй, отправлять нужно самому себе.
>>1062639
Я банально не знаю, как взять эти данные.
#502 #1062654
>>1062640
webref.ru
learn.javascript.ru
#503 #1062658
>>1062653
блядь ну я же тебе написал.

Ты когда своим аяксом шлешь на сервер массив, то он лежит в глобальном массиве $_POST

Из него это всё и собираешь. Ну ебана врот я же тебе написал всё.
#504 #1062663
>>1062658
Я просто думал, что этот json как-то в другой тип данных нужно переводить. Попробую твой код, когда дома буду.
#505 #1062672
>>1061927
Ты напомнил мне моего знакомого, который хотел стать сисадмином, читая мануалы по консольным командам, он сказал мне "бля, пиздец, ничего не понимаю". Мб ты не так учишь?
#506 #1062674
>>1062672
Как на сисадмина учиться?
#507 #1062677
>>1062674
Я хз, ведь я недоверстальщик
#508 #1062680
>>1062674
На сисадмина надо учиться? Яебал...
#509 #1062684
>>1062680
А что вообще делают сисадмины?
#510 #1062685
>>1062640

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

Есть задания и на JS.

А также, есть задача про список студентов с подробными комментариями - они скорее всего помогут и при написании блога.
#511 #1062687
>>1062663
Нет у тебя там >>1062530 всё на картинке есть же.
type: "post"

Значит на сервере отлавливаешь в массиве $_POST всю инфу

По структуре в $_POST будет лежать тоже самое, что у тебя в data: {} навалено

Например в $_POST['dlina'] будет лежать то говно что тебе js подставил в переменную user_dlina, которую он в свою очередь сджикверил из инпута с name'ом dlina. Х
#512 #1062688
>>1062684
Админят системы.
#513 #1062707
>>1049651 (OP)
Сап, res! Решил вплотную взяться за программирование, так как в 24 года внезапно осознал, что учусь по профессии которая мне не доставляет никакого удовольствия. Выбор мой пал на язык PHP и я начал искать какие-то курсы, нашёл cfqn c видеоуроками где челик довольно подробно всё рассказывает не только про язык PHP, но и про сами принципы программирования, однако его курс основан на версии 5.5, а сейчас как я понимаю в ходу версия 7.0. Так вот насколько актуален такой курс сейчас и стоит ли дальше по нему учиться?
#514 #1062716
>>1062707
Для вкатывальщика нет никакой разницы между 5.4+ и 7 версиями. Да даже если бы и более ранние курсы учил, то писали бы там
$a = array();
вместо
$a = [];

Это всё вообще пофиг, примитивы неизменны считай. Так что херач.
28 Кб, 362x440
#515 #1062842
>>1062687
Через твой код сервер принимает данные с js, но письмо всё равно не отправляется. Нужно как-то войти в гугловскую почту и отправить оттуда. С кодом с пика сервер не принимает данные. Нужно как-то через этот Mail::factory отправить, но с ним ошибка.
#516 #1062861
>>1062716
Спасибо за ответ. Значит буду дальше продолжать осваивать тот курс. И ещё вопрос. С чем связан хейт на PHP? Когда я спрашивал у своего знакомого (который пишет на Java) за этот язык то он просто обоссал его тугой струёй, сказав при этом, что он ненужен и на других языках можно делать тоже самое не ебя себе мозг.
#517 #1062878
>>1062707
поделись ссылкой на сайт плиз. Интересно посмотретью
#519 #1062900
>>1062885
псип )
#520 #1062905
>>1062842
Анонимус, просто молю. Подскажите, что делать с этой хуйнёй.
#521 #1063032
>>1062905
ну чувак,
решение #0 -- найми настоящего программера

а так,
тебе нужен https://github.com/PHPMailer/PHPMailer
#522 #1063036
>>1062707
вкатывальщики, конечно, не нужны и будут в современном мире гнобимы и гонимы, но топчик на русском -- курсы от "специалист"
#523 #1063075
https://ideone.com/FXUqQ2

Задача на шифр нормальная?
#524 #1063076
>>1063075
А че пробел не зашифровал в другой символ? Тупо по пробелам можно догадаться, что 6 это И, ну а дальше понеслось.
#526 #1063084
>>1063032
Позвонил в техподдержку. На бесплатных аккаунтах заблокирована функция отправки почты.
#527 #1063087
>>1063036
Были бы ещё деньги на эти курсы.
#528 #1063133
>>1063036

> вкатывальщики


Кто это?
#529 #1063139
Господа, вот смотрите. Наткнулся в одном из тестов на вопрос.
"Что чему будут равны $a и $b в результате операции: $a + $b = 5 + 6?"
Я правильно понимаю, что $a будет NULL, а $b = 11?
1. Сначала выполняется сложение 5 + 6.
2. Далее значение записывается в переменную $b.
3. Потом к $b прибавляется пустая переменная $a.
В итоге $a = null (переменная объявлена, но не инициализирована), $b + null = $b.
Или нет?
Я проверил, получается действительно так, но в каком порядке это всё происходит?
#530 #1063141
>>1063139
Прочитал сам. Неправильно я предположил.
Операции сложения слева и справа от "равно" имеют одинаковый приоритет и выполняются слева направо. То есть сначала складываются пустые переменные, потом уже числа. Операция присваивания выполняется справа налево, поэтому результат сложения записывается в переменную, стоящую слева от "равно". Всё, оказывается, очень просто.
159 Кб, 1920x1080
#531 #1063150
>>1060056
Продолжаю изображать имитацию полезной деятельности. Некоторые треды качаются больше пяти минут, сервер дропает из-за таймаута. Буду думать что делать.
#532 #1063151
>>1063150
походу через вебсокет надо делать статусбар
#533 #1063178
Шарящие анончики, что лучше изучить:
Laravel или yii?
Что лично вам больше импонирует и чем?
#534 #1063208
>>1063178
ООП, Паттерны, архитектуру изучай. А потом уже хоть любой фреймворк будет как родной.
#535 #1063247
Такс, юзаю нетбинс и решил я в отладку с помощью xdebug. Провозился с настрйокой целый вечер - в итоге работает, но есть одно но - при отладке строка запроса засоряется хуитой вида XDEBUG_SESSION_START=netbeans-xdebug, из-за чего впизду летит отладка приложений с роутингом. Что делать, как мне быть?
#536 #1063252
>>1063247
Ставить куку для xdebug. Можно аддоном по типу: Xdebug Helper для Chrome
#537 #1063263
>>1063252
Я наверное вообще не шарю как этим хдебагом пользоваться. Можешь поподробней? Как этот аддон уберет XDEBUG_SESSION_START=netbeans-xdebug из строки запроса?
#538 #1063274
>>1063263
Отладка запускается из Chrome.
Включаем Xdebug Helper в режим Debug.
Он ставит куку вида XDEBUG_SESSION="PHPSTORM" (PHPSTORM прописываем в настройках аддона).
Перезагружаем страницу, кликаем по ссылке кнопке и т. п.
Если в php пришла кука, то xdebug попытается соединится с IDE по указанному в конфиге xdebug адресу.
Если IDE слушало порт, то мы увидим окно отладки, со скриптом выполненным до первого брейкпоинта (точки останова).
#539 #1063287
Где почитать, что такое и как писать unit тесты для проектов на symfony?
#540 #1063303
>>1063287
Так же как и для остальных проектов, Symfony особенный что ли? Погугли для начала разницу между юнит и функциональными тестами (заодно почитай про пирамиду тестирования), потом можешь браться за доки PHPUnit и Symfony.
https://phpunit.de/manual/current/en/index.html
https://symfony.com/doc/current/testing.html
http://symfony.com/doc/current/best_practices/tests.html
#541 #1063313
https://ideone.com/IYLIIE

Задача на стих правильная?
151 Кб, 1920x1080
#542 #1063320
>>1063150
Походу только я могу запилить основную логику за 2 дня, и еще 4 дня переписывать фронт и бэк на AJAX, чтоб во время выполнения было видно сколько файлов уже скачано. Сделал слава богу.

inb4 сделаю за 300 наночек
436 Кб, 1356x759
#543 #1063328
рейтаните код моего сенсея
#544 #1063330
>>1063328
Ты восьмичасовые опусы этого матюгальника смотришь?!?
#545 #1063350
>>1063330
ну да, посмотрел
#546 #1063364
>>1063328
Про sql-иньекции в курсе, не? Нечитаемое процедурное говно/10.
#547 #1063413
>>1063274
Спасибо, вроде разобрался. Только из браузера наверное не получится отладку запускать.
#548 #1063422
>>1063350
Если коротко, то все плохо. Даже для самого начала нулевых, когда книги с таким стилем были на каждом прилавке, а ООП только завозили, а работало оно сильно медленней.
#549 #1063424
>>1063364
а охуенные имена переменных и отсутствие отступов тебя не смутили? Сам факт отсутствия ООП не делает код плохим
#550 #1063431
>>1063424
Честно говоря, если где-то в коде идет обращение через модуль mysq - то это уже говнокод. Алсо проиграл с нотпад++, его еще кто использует оказывается, лол.l
#551 #1063437
>>1063431

>проиграл с нотпад++


А зря
#552 #1063548
Есть одна функция
public function addStudent(Student $student, $hash)
{

$stmt = $this->dbn->prepare("INSERT INTO student VALUES ($student->getName(),$student->getSurname(),$student->getGender(),$student->getGroupNumber(),$student->getEmail(),$student->getScore(),$student->getDob(),$student->getLocality(),$student->getId(),$hash");
$stmt->execute();
}

И она выдает:
Notice: Undefined property: Student\Classes\Student::$getName in C:\work\web\Student\src\Classes\UserDataGateway.php on line 34

Notice: Undefined property: Student\Classes\Student::$getSurname in C:\work\web\Student\src\Classes\UserDataGateway.php on line 34
etc.

Передаваемая сущность вардампится и там все норм тот самый объект. Если вызывать методы объекта не в СиКвеЛ запросе, то они тоже работают. Что я делаю не так?
#553 #1063641
А как объяснить то, что скрипт с единственной строкой echo "helloworld"; интерпретируется 9 секунд (7.1 версия пыхи, мак ос), аналогичный на перле 5 за 0.1 секунды.
#554 #1063644
>>1063548
PHP думает, что скобки относятся к строке, а не к переменной: https://ideone.com/pQFLPH
Поэтому он обращается к свойству, а не к методу. То есть вместо $student->getName() используется $student->getName
Поэтому если используешь интерполяцию, нужно переменные оборачивать в фигурные скобки. Но ни в коем случае не делай так для SQL-запросов, так как это приводит к SQL-инъекциям: https://github.com/codedokode/pasta/blob/master/student-list.md#Работа-с-базой-данных-из-php/

>>1063150
>>1063320
Хватит тред засорять, вниманиеблядина.
#555 #1063659
Призываются экстрасенсы в тред. Может ли PHP приводить к тому, что апач выходит из строя? Ситуация - при ошибке (например выбросилось исключение) страница "зависает" (индикатор загрузки крутится, но страница не обновляется), пытаюсь в другой вкладке обратиться к другим страницам сайта - тоже не грузятся. Помогает только перезапуск апача. На Yii2, хотя уверен, что это от фреймворка не зависит.
#556 #1063677
>>1063659
У меня бывали подобные глюки, но зависала только одна страница когда я пытался вызывать метод объекта в коде по типу
$obj = new $obj;
$obj->$myMethod();
Но то давно было, я так и не разобрался от чего такая хуйня может происходить.
217 Кб, 476x346
#557 #1063685
Не знаю туда ли, но спрошу все равно. На github pages можно только it-ориентированные сайты постить или всякие визитки (не по айти специальности) тоже?
#558 #1063690
https://ideone.com/EQIGzM

Почему он ругается на mb_internal_encoding('utf-8')?
60 Кб, 1014x832
#559 #1063695
>>1063690
Что не так?
57 Кб, 952x860
#560 #1063720
>>1063320
Результат пяти дней кодинга. Я доволен.
#561 #1063722
>>1063695
на ideone забыли поставить модуль с mb_ функциями при обновлении php. пользуйся чем-нибудь другим
#562 #1063728
>>1063720
А где посмотреть твой код?
#563 #1063730
>>1063728
https://github.com/grigoryMovchan/2ch_get_img

Как пример хорошего кода не годится - работает и ладно
#564 #1063731
>>1063431
Всем так важно твое мнение.
#565 #1063738
>>1063424
Вот этого двачну.
#566 #1063739
>>1063730
Успешен уже в плане работы? Я ни одной своей задумки не реализовал, некоторые из них при этом и так уже устарели. Да и что говорить. Я даже заставить себя сесть решать задачи от ОП-а не могу уже пару месяцев. При этом полагаю, что наличие такого вот гита, сделало бы меня немного более ценным на рынке труда.
#567 #1063744
>>1063641
бамп вопросу
#568 #1063757
>>1063739
Потенциальный работодатель бы охуел от такого количества упоминаний двача в репозитории, да и не пробовал искать работу, там проекты - детский сад, фреймворков не знаю.
#569 #1063764
>>1063757

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


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

>там проекты - детский сад, фреймворков не знаю.


Ну я работал на фреймворке одном, хуета для макак по сути. Тупо блядь за тебя уже всё сделано. Те задачи оповские по типу студентов, на которые дается 3-10 дней, набыдлокодил бы на нем за 4 часа. А как сам хочу сесть с 0 написать, то охереваю от того что не могу в ооп и самостоятельно архитектуру и всякие зависимости и вообще не понимаю как должны объекты между собой общаться :(

И прочие дыры с автолоадерами и роутингом и так далее.
#570 #1063784
>>1063641
бамп вопросу
#571 #1063789
>>1063764
Интересно, как так вышло, что ты понимаешь архитектуру фреймворка но не можешь повторить ее хотя бы в простеньком варианте?
#572 #1063799
>>1063789
Очевидно, что его "понимаю" отличается от твоего в худшую сторону.
#573 #1063813
>>1063789
Ты понимаешь вообще как и что? При чем тут архитектура фреймворка? Фреймворк - это как автомобиль, тебе не нужно быть опытным автомехаником или конструктором, что бы ездить на нем.

Фреймворк это как...
Когда знаешь в какое место какую лапшу вписать, разбавив встроенными возможностями фреймворка, что бы всё это приняло вид красивого стройного эМВиСи.
17,7 Мб, 960x540
#574 #1063822
Сегодня я осознал, что язык программирования не сложный инструмент если его освоить (Даже один). Результат работы на пике.
#575 #1063826
>>1063822
Если кому будет интересно, проясню А то сегодня погода мне металопротеины вдавила гифка не имеет отношения к программированию. Я имел ввиду, что если освоить какой нибудь инструмент, даже очень сложный, то все что ты будешь делать с помощью него, будет делаться уже на автомате. И не даром люди говорят, что лучше не закреплять ошибки, потому что мозг будет выводить их автоматом в будущем. Поэтому лучше пострадать немного, но делать все без ошибок и работа будет качественнее. Так же стоит самому изобретать велосипеды, смотреть готовые решения но всегда фантазировать и думать. Все я выкатился.
#576 #1063906
Странная тема. Список студентов. Логика приложения. В index.php создается роутер, который разбивает полученную ури и запускает в завсимости от нее нужный контроллер с нужным эшкеном. При регистрации он запускает МейнКонтроллер с экшеном Регистер тот проверяет данные и если все хорошо записывает данные и редиректит на index.php/edit дальше его обрабатывает роутер и отправляет на МейнКонтроллер с эшеном Эдит и вот там какого-то хуя $_SERVER['REQUEST_METHOD'] становится ГЕТ!!! Почему? Я не хочу! Что делать???
#577 #1063969
http://simtech.ru/wp-content/themes/simtechrutheme/book/Brett McLaughlin.PHP and MySQL.- 2013.pdf

Книга 2013 года. СтоиХт ли читать или уже все устарело? Что можете посоветовать почитать по php и mysql новичку
#578 #1063981
>>1063969
Если только вкатываешься, то стоит читать и делать все подряд.
#579 #1063984
>>1063981
Сейчас изучаю уже HTML, CSS. Вот еще хочу изучать, поэтому и спрашиваю. Но совет хороший, правда.
#580 #1064073
>>1057265
Ну потому, что эрей_ренд дает тебе индекс элемента, а не сам элемент.

кредит2
https://ideone.com/beZE6Y

номер авто
https://ideone.com/lPsRrx

номер телефона1
https://ideone.com/dt17EH

номер телефона2
https://ideone.com/rRCNVe

'ты дурак'
https://ideone.com/fRuwI6

меил
https://ideone.com/zS7L5I

грамарнаци
https://ideone.com/c1r6mP
И вот тут у меня есть пару вопросов. Если, в регуляре, я задаю по 0-5 символов до и после ошибки(делаю я это для удобства вывода, фрагмента текста с ошибкой), а следующая ошибка находится в пределах 5 симоволов, то ее - скрипт не находит, отсюдого следует, что нужно изменить способ вывода фрагмента вокруг регуляра, но я не знаю как. Или можно что-то сделать в самом регуляре, но я ничего подобного не нашел, обьясните пожалуйста. А так же, в следующем задании на исправление ошибок, при прег_реплейсе, если выражение, на которое я меняю регуляр, имеет больше символов чем он(регуляр) сам, то функция не добавляет элементы в строку а просто заменяет следующий элемент, это ошибка ideone или я чего-то не понимаю?
Алсо спасибо за советы и проверку.
#581 #1064146
>>1063641
Перл и похапэ по докерам раскидай и проведи свои тесты еще раз.
#582 #1064149
>>1063969
Если книга от О'Рейли, то вопрос читать или нет не стоит совсем. Конечно читать.

Что касается книг, то лучше читай более общие для понимания, что тут происходит и как должно происходить. Паттерны фриманов, приемы mvc и чистый код для начала будет достаточно. Потом уже перекатывайся в php и применяй все, чему научился.
#583 #1064150
>>1063764

>Тупо блядь за тебя уже всё сделано


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

>А как сам хочу сесть с 0 написать


Если нет кучи опыта и прочитанных книг об архитектура приложений, ты не сеньор/тим лид с множеством рабочих реальных хайлоад проектов, свой велосипед начать строгать -- это самая плохая идея, которая только может прийти в голову.
#584 #1064222
>>1064149
Спасибо большое.
#585 #1064223
>>1064150
Ты понял вообще о чем я? Я решал эти твои чуть более сложные задачи в итоге. Просто одно дело решить задачу в процедурщине отдельно в вакууме - это легко. Точно так же легко встроить решение этой задачи в известную тебе систему, написанную на известном тебе фреймворке. А другое дело с 0 сесть и нахуярить свой микрофреймворк по сути на стройном и качественном ооп и нарешать на нем задачу паралельно, хэлоу :(
67 Кб, 1542x794
#586 #1064336
Что не так?
#587 #1064411
>>1064336
выведи символы попарно
#588 #1064442
Помогите. Я уже писал тут.>>1063969
В книге написано "В главе 1 будут рассмотрены несколько хороших редакторов, причем некоторые
из них имеют встроенный FTP нуть програм-
му Cyberduck . Вы можете написать сценарий, отправить его по сети и все протестировать всего лишь несколькими щелчками кнопкой мыши. Итак,
загрузите эту FTP-программу, настройте свой веб-сервер и приступайте к работе.
Данная программа вам несомненно пригодится."

Стоит ли качать его? На нем сейчас работают? Я просто до этого слышал про фаерзиллу. Давйте совет, пожалуйста ;3
#589 #1064444
>>1064442
файелзилу*
#590 #1064454
Ладно, не отвечайте. Я по учебнику опа пойду. Извините за то, что наспамил.
#591 #1064456
>>1064442
Если ты только вкатываешься - берешь качаешь и пробуешь все подряд.
#592 #1064488
>>1064223

>решить задачу в процедурщине


>в процедурщине


Выбери что-то одно, ну да ладно.

>качественном ооп


Это похапэ, какое там качественное ООП? С такими запросами тебе в джаву. Вот там заебись, обмазывайся стратегиями, абстрактными факторями и вот этими вот всеми обсерверами. А задача пыхи написать приложение в короткие сроки с минимальным количеством финансовых вложений. Так что жри, что дают.
#593 #1064495
>>1064488

>енном ооп


Но рекрутерам не нравится что ты не шаришь в этом говне. И вообще ты с этого треда или нет? Ты не думал что всё изменилось за последние 5-10 лет и твой маня-мир относительно реалий пхп немного устарел что ли.
#594 #1064567
>>1064442

>Стоит ли качать его? На нем сейчас работают?


Нет, судя по описанию какое-то некроговно. Бери или нетбинс - меньше функционала, зато швабодно и шустро работает, или пхпшторм - идеально заточен под пхп, но при этом требователен к железу и платный.
#595 #1064617
Аноны, на ideone есть в углу рожица, собирающая обратную связь, и вы наверно знаете, что у них в php почему-то нет mb-функций (вроде mb_strlen), что может быть неудобно для работы с нелатинскими текстами. Если вам это мешает пользоваться ideone, не поленитесь, нажмите рожицу и напишите им об этом. Думаю, особо знания английского тут не требуется.

>>1064442

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

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

Редакторы: Notepad++, Sublime Text, Atom, VS code, Brackets
IDE: Eclipse PDT, Netbeans, PhpStorm

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

>>1064495

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

> в этом говне.


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

>>1064488

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

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

В учебнике в ОП посте есть глава про ООП, начинающим можно начать с нее. Затем продолжить задачей про студентов из ОП поста, где рассматривается использование ООП и MVC в похожем на реальное приложении.
#595 #1064617
Аноны, на ideone есть в углу рожица, собирающая обратную связь, и вы наверно знаете, что у них в php почему-то нет mb-функций (вроде mb_strlen), что может быть неудобно для работы с нелатинскими текстами. Если вам это мешает пользоваться ideone, не поленитесь, нажмите рожицу и напишите им об этом. Думаю, особо знания английского тут не требуется.

>>1064442

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

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

Редакторы: Notepad++, Sublime Text, Atom, VS code, Brackets
IDE: Eclipse PDT, Netbeans, PhpStorm

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

>>1064495

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

> в этом говне.


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

>>1064488

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

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

В учебнике в ОП посте есть глава про ООП, начинающим можно начать с нее. Затем продолжить задачей про студентов из ОП поста, где рассматривается использование ООП и MVC в похожем на реальное приложении.
#596 #1064618
>>1064336

Выведи чему равны $firstHalf и $secondHalf на экран.

>>1064150

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

>>1063641

9 секунд это очень долго даже для древнего железа. Тут явно что-то не так. Можешь описать список модулей (php -m), как именно ты запускаешь скрипт (через браузер и веб-сервер, какой?, через консоль?), код скрипта.

У меня на старом ноуте команда time php -r "echo 'hello world';" выдает

real 0m0.563s
user 0m0.031s
sys 0m0.016s

>>1064073

> кредит2 https://ideone.com/beZE6Y


Считает некорректно, в softbank должно быть около 61270, попробуй поставить сумму кредита в 1000 и проверить вручную.

> номер авто https://ideone.com/lPsRrx


> ^ [а-яё]


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

> номер телефона1 https://ideone.com/dt17EH


Здесь в регулярке написано:

> *[(]? *-? *


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

> номер телефона2 https://ideone.com/rRCNVe


Тут правильно.

> 'ты дурак' https://ideone.com/fRuwI6


Верно.

> меил https://ideone.com/zS7L5I


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

> грамарнаци https://ideone.com/c1r6mP



> ([,]|[.]|[!]|[?]|[;]|[:])


тут нужны одни общие квадратные скобки, а не несколько отдельных.

> ([,]|[.]|[!]|[?]|[;]|[:])([^ ])


Это сработает на многоточие - лучше бы написать "буква" вместо "не пробел"

> зделал|зделаю|зделан


"зделаем" не подойдет

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


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

- есть "утверждения" ( http://php.net/manual/ru/regexp.reference.assertions.php ), которые не захватывают символы, а только проверяют их, тут они малополезны
- в preg_match_all есть режим, когда она возвращает не только найденные подстроки, но и их позицию относительно начала строки. Правда, позиция в байтах, а не в символах. Можно взять позицию, перевести ее из байт в символы (substr + mb_strlen), и по ней взять фрагмент перед найденной подстрокой. Мануал http://php.net/manual/ru/function.preg-match-all.php
- можно с помощью mb_strpos искать позицию найденной подстроки в строке и с помощью позиции получить фрагмент строки перед найденной подстрокой.

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


Нет, длина найденной подстроки и подставляемой не имеет значения и все должно работать корректно. Ошибка где-то в другом месте.
#596 #1064618
>>1064336

Выведи чему равны $firstHalf и $secondHalf на экран.

>>1064150

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

>>1063641

9 секунд это очень долго даже для древнего железа. Тут явно что-то не так. Можешь описать список модулей (php -m), как именно ты запускаешь скрипт (через браузер и веб-сервер, какой?, через консоль?), код скрипта.

У меня на старом ноуте команда time php -r "echo 'hello world';" выдает

real 0m0.563s
user 0m0.031s
sys 0m0.016s

>>1064073

> кредит2 https://ideone.com/beZE6Y


Считает некорректно, в softbank должно быть около 61270, попробуй поставить сумму кредита в 1000 и проверить вручную.

> номер авто https://ideone.com/lPsRrx


> ^ [а-яё]


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

> номер телефона1 https://ideone.com/dt17EH


Здесь в регулярке написано:

> *[(]? *-? *


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

> номер телефона2 https://ideone.com/rRCNVe


Тут правильно.

> 'ты дурак' https://ideone.com/fRuwI6


Верно.

> меил https://ideone.com/zS7L5I


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

> грамарнаци https://ideone.com/c1r6mP



> ([,]|[.]|[!]|[?]|[;]|[:])


тут нужны одни общие квадратные скобки, а не несколько отдельных.

> ([,]|[.]|[!]|[?]|[;]|[:])([^ ])


Это сработает на многоточие - лучше бы написать "буква" вместо "не пробел"

> зделал|зделаю|зделан


"зделаем" не подойдет

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


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

- есть "утверждения" ( http://php.net/manual/ru/regexp.reference.assertions.php ), которые не захватывают символы, а только проверяют их, тут они малополезны
- в preg_match_all есть режим, когда она возвращает не только найденные подстроки, но и их позицию относительно начала строки. Правда, позиция в байтах, а не в символах. Можно взять позицию, перевести ее из байт в символы (substr + mb_strlen), и по ней взять фрагмент перед найденной подстрокой. Мануал http://php.net/manual/ru/function.preg-match-all.php
- можно с помощью mb_strpos искать позицию найденной подстроки в строке и с помощью позиции получить фрагмент строки перед найденной подстрокой.

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


Нет, длина найденной подстроки и подставляемой не имеет значения и все должно работать корректно. Ошибка где-то в другом месте.
#597 #1064619
>>1063906

> При регистрации он запускает МейнКонтроллер с экшеном Регистер тот проверяет данные и если все хорошо записывает данные и редиректит на index.php/edit


А ты понимаешь, как вообще работает редирект, что происходит? Если нет, у меня есть описание (немного длинное, но что поделать) протокола HTTP и там упомянут редирект: https://github.com/codedokode/pasta/blob/master/network/http.md

Список кодов редиректа (3xx) был где-то в википедии, и наверно еще в других местах есть.

Получается так: сервер отдает ответ с редиректом, скрипт завершается. Браузер меняет URL и делает новый запрос. Новая копия скрипта запустится и обработает его. Что касается метода, то тут все зависит от кода редиректа: некоторые коды сохраняют метод, а некоторые меняют его на GET. Плюс, из соображений совместимости некоторые браузеры меняют метод на GET даже для тех кодов, где он должен оставаться POST.

А зачем тебе понадобилось делать второй запрос тоже методом POST? Второй запрос на index.php/edit ведь ничего не меняет на сервере, он только выводит форму (верно?) и значит POST тут использоваться не должен.

>>1063789

Видимо не совсем понимаешь.

>>1063757

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

>>1063659

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

>>1063328

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

>>1063313

Да, все верно.

>>1063287

У меня есть обзорный урок про автоматизированное тестирование: https://gist.github.com/codedokode/a455bde7d0748c0a351a

Начни с него, потом документацию Симфони (на нее вроде анон дал ссылку).
#597 #1064619
>>1063906

> При регистрации он запускает МейнКонтроллер с экшеном Регистер тот проверяет данные и если все хорошо записывает данные и редиректит на index.php/edit


А ты понимаешь, как вообще работает редирект, что происходит? Если нет, у меня есть описание (немного длинное, но что поделать) протокола HTTP и там упомянут редирект: https://github.com/codedokode/pasta/blob/master/network/http.md

Список кодов редиректа (3xx) был где-то в википедии, и наверно еще в других местах есть.

Получается так: сервер отдает ответ с редиректом, скрипт завершается. Браузер меняет URL и делает новый запрос. Новая копия скрипта запустится и обработает его. Что касается метода, то тут все зависит от кода редиректа: некоторые коды сохраняют метод, а некоторые меняют его на GET. Плюс, из соображений совместимости некоторые браузеры меняют метод на GET даже для тех кодов, где он должен оставаться POST.

А зачем тебе понадобилось делать второй запрос тоже методом POST? Второй запрос на index.php/edit ведь ничего не меняет на сервере, он только выводит форму (верно?) и значит POST тут использоваться не должен.

>>1063789

Видимо не совсем понимаешь.

>>1063757

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

>>1063659

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

>>1063328

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

>>1063313

Да, все верно.

>>1063287

У меня есть обзорный урок про автоматизированное тестирование: https://gist.github.com/codedokode/a455bde7d0748c0a351a

Начни с него, потом документацию Симфони (на нее вроде анон дал ссылку).
#598 #1064662
Суть такова - пилюс свой всратый роутер с помощью регулярок
https://ideone.com/kDuubO
Методов addRoute добавляется в массив новый роут, в скобках всякие атрибуты, в параметрах указывается контроллер и экшен. При добавление роуты переделываются в регулярку, потом в методе matchUri они сравниваются с юри.
Проблема в следующем - допустим, добавим такие роуты:
$router->addRoute('{sorte}/{page}', 'index', 'index');
$router->addRoute('search/{subject}', 'index', 'search');
Переходим в браузере по search/something, и вот тут проблема - запрос проходит сравнение и с регуляркой /^(?P<sorte>[\w\d-]+)\/(?P<page>[\w\d-]+)$/ так и /^search\/(?P<subject>[\w\d-]+)$, ну ты понел. Собственно, можно как-то пофиксить проблему, или я изначально тупиковый путь выбрал?
#599 #1064670
>>1064662
Может стоит url дробить по слешу на элементы массива?
#600 #1064678
>>1064670
Да хочется уже сделать по людски с помощью регулярок. Так то оно кроме описанного случая работает нормально.
#601 #1064771
Доллары в рубли: https://ideone.com/fKTZIx

Бросаем кубик: https://ideone.com/BMDIL3

Анон против компьютера: https://ideone.com/Hspscg
#602 #1064824
>>1064662
Это известная проблема, и есть 2 варианта решения:
1 вручную переставить роуты местами
2 сделать автоматическую сортировку роутов, чтобы более специфичные (без плейсхолдеров) шли первыми
#603 #1064828
Циклы таблица умножения: https://ideone.com/jtvNDb

Анон и банк: https://ideone.com/Vsl4w0
#604 #1064842
>>1064771>>1063247

> Доллары в рубли: https://ideone.com/fKTZIx


Все верно

> Бросаем кубик: https://ideone.com/BMDIL3


Верно

> Анон против компьютера: https://ideone.com/Hspscg


Верно, хотя можно было сделать один большой блок ифов, а не 2 отдельных.
#605 #1064844
>>1063247

Нужно в роутере проверять только путь, без query string. Используй parse_URL().
#606 #1064848
Аноны, есть довольно обширный опыт говнокодинга, но хочу стать полноценным человеком и вкатиться в ООП.
Насколько хороша книга указанная в оп-посте? Которая авторства Мэтта Зандстры. Будет ли ее достаточно?
Хочу купить её бумажную и лампово читать под пледиком.
#607 #1064849
Неправильно решил задачу про айфон и кредит. Чувствую себя бакой. https://ideone.com/JvH0sP

Ссылку оставил для себя эту, завтра попробую переделать, когда не будет сонливости.
>>1064842
Спасибо большое за проверку! ;3
Аноним #608 #1064942
Народ скиньтесь мне на глазные капли или тыкнити носом. Не могу понять хоть убей что ему не нравится в этом задании про "кубики" https://ideone.com/fork/vxlE6J
#609 #1064954
>>1064942
С сажей никто не ответит, сорь.
#610 #1064959
>>1064942
В ифе = на == замени
#611 #1064965
Объясните пжта. Зачем автор учебника все переменные в echo включает в фигурные скобки ? Это просто дело привычки ? ) Почитал мануал. Может не до конца понял. В фигурные кавычки включают переменные, если после них идет какой-то текст, чтобы переменная сработала. А в учебнике часто после переменной никакого текста нет. Хочу разобраться, как делать лучше )
#612 #1064982
>>1064965
попробуй метод объекта с аргументами без них вызвать - не получится, в учебнике автор вероятно по привычке ебашит их везде, чтоб наверняка исключить появление дурацких ошибок из-за их отсутствия
#613 #1064986
>>1064965
Скорее что бы ты знал о такой возможности экранирования переменных в строках, а вообще >>1064982 - да, когда-то столкнешься с таким вот https://ideone.com/GpcB8N и будешь во вьюхах на изи выводить. А в задачах не парься просто и пиши:
echo "Рост $name - $heigh см.\n";
Никакой разницы по сравнению с:
echo "Рост {$name} - {$heigh} см.\n";
не будет.
#614 #1065012
>>1064982
>>1064986
Спасибо за ответы ;-)
#615 #1065098
Ебать, это нормально что у яндекса с мейлру индексация 3+ часа. Гугл за 5 минут все сделал
#616 #1065225
https://ideone.com/HOlsuB

Так, почему функцию на айпад нельзя решить тем же, что я использовал при кредите на айфон >>1060066
? Должно же подходить. А оно не подходит.
#617 #1065656
Не могу въехать в суть поддержки Юникода в PHP. Какой чарсет у строки? (inb4 wchar) За чем конкретно нужны mb_ методы? (nb4 legacy)

Мануал скурил.
#618 #1065661
>>1065656
Вернулся в мануал:
http://php.net/manual/en/language.types.string.php#language.types.string.details
То есть, если я хочу написать динамическую страницу с юникодом без любви, мне нужен фреймворк?
#619 #1065664
>>1065656
Самый простой вопрос, который приходит мне в голову:
будет ли работать $a === "китайские иероглифы"?
#620 #1065693
>>1065656

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

- str* функции воспринимают строки в 8-битовой кодировке, определяемой локалью (utf не прокатит)
- mb* функции воспринимают строки в кодировке, которая задана в php.ini или через mb_internal_encoding или через аргументы

В случае с регулярками есть только 2 варианта - utf-8 или 8-битная кодировка из локали, utf-8 выбирается флагом /u в выражении.

Мой урок про строковые функции и кодировки, хотя ты наверно с ними знаком:

- https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
- https://github.com/codedokode/pasta/blob/master/cs/strings.md

> inb4 wchar


нет

> За чем конкретно нужны mb_ методы?


Это функции работы со строками в любых, а не только в 8-битных, кодировках. Встроенные в PHP str-функции это и есть настоящее легаси из stdlib в Си, которая не может в многобайтовые кодировки.

>>1065664

=== это побайтовое сравнение. То есть, как повезет.

Урок про правильное сравнение строк https://github.com/codedokode/pasta/blob/master/php/collation.md который кстати будет полезен и для других языков программирования.

>>1065661

Нет. Нужен mbstring.
#620 #1065693
>>1065656

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

- str* функции воспринимают строки в 8-битовой кодировке, определяемой локалью (utf не прокатит)
- mb* функции воспринимают строки в кодировке, которая задана в php.ini или через mb_internal_encoding или через аргументы

В случае с регулярками есть только 2 варианта - utf-8 или 8-битная кодировка из локали, utf-8 выбирается флагом /u в выражении.

Мой урок про строковые функции и кодировки, хотя ты наверно с ними знаком:

- https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
- https://github.com/codedokode/pasta/blob/master/cs/strings.md

> inb4 wchar


нет

> За чем конкретно нужны mb_ методы?


Это функции работы со строками в любых, а не только в 8-битных, кодировках. Встроенные в PHP str-функции это и есть настоящее легаси из stdlib в Си, которая не может в многобайтовые кодировки.

>>1065664

=== это побайтовое сравнение. То есть, как повезет.

Урок про правильное сравнение строк https://github.com/codedokode/pasta/blob/master/php/collation.md который кстати будет полезен и для других языков программирования.

>>1065661

Нет. Нужен mbstring.
#621 #1065694
>>1065225

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

Далее, код немного запутан. У тебя там идет:

$a = ....;
$b = $a - $monthlyPay;
$creditSum = $b;

Тут явно переменную $b можно выкинуть и писать сразу $creditSum = $a - $monthlyPay;

Вместо /n надо писать \n.

Также, там внизу ошибка

> PHP Notice: Undefined variable: paymentTotal in /home/nGyq6D/prog.php on line 26



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

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

Также, у тебя есть строчка

> $homoCreditTotal = Credit(1.04, 500, 40000, 5000, 0);


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

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

>>1064965

Можно и так и так, кому как нравится.

>>1064849

Там еще и кода многовато, и некоторые выражения по 2 раза повторяются.
#621 #1065694
>>1065225

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

Далее, код немного запутан. У тебя там идет:

$a = ....;
$b = $a - $monthlyPay;
$creditSum = $b;

Тут явно переменную $b можно выкинуть и писать сразу $creditSum = $a - $monthlyPay;

Вместо /n надо писать \n.

Также, там внизу ошибка

> PHP Notice: Undefined variable: paymentTotal in /home/nGyq6D/prog.php on line 26



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

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

Также, у тебя есть строчка

> $homoCreditTotal = Credit(1.04, 500, 40000, 5000, 0);


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

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

>>1064965

Можно и так и так, кому как нравится.

>>1064849

Там еще и кода многовато, и некоторые выражения по 2 раза повторяются.
#622 #1065695
>>1064848

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

>>1064828

> Циклы таблица умножения: https://ideone.com/jtvNDb


Верно

> Анон и банк: https://ideone.com/Vsl4w0


Тут ошибка: PHP Notice: Undefined variable: years in /home/KSnv9f/prog.php on line 7

Проверь правильность написания имен переменных.

>>1063685

Лучше посмотреть в хелпе или спросить у техподдержки.

>>1063320

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

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

>>1063150

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

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

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

Для работы с disabled нужно использовать prop(), изучи теорию.

Если ты уж используешь jQuery, зачем использовать свойтва dom вроде document.forms или innerHTML? Не стоит смешивать код в 2 разных стилях.
#622 #1065695
>>1064848

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

>>1064828

> Циклы таблица умножения: https://ideone.com/jtvNDb


Верно

> Анон и банк: https://ideone.com/Vsl4w0


Тут ошибка: PHP Notice: Undefined variable: years in /home/KSnv9f/prog.php on line 7

Проверь правильность написания имен переменных.

>>1063685

Лучше посмотреть в хелпе или спросить у техподдержки.

>>1063320

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

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

>>1063150

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

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

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

Для работы с disabled нужно использовать prop(), изучи теорию.

Если ты уж используешь jQuery, зачем использовать свойтва dom вроде document.forms или innerHTML? Не стоит смешивать код в 2 разных стилях.
#623 #1065696
>>1063139

Это очень интересный вопрос, и я по этому поводу даже создал тикет в баг-трекере PHP c предложением исправить проблему: https://bugs.php.net/bug.php?id=75179

На мой взгляд, выражение $a + $b = 1 не имеет смысла и должно выдавать ошибку. Так как приоритет опрерации + выше, чем у = и, следовательно, сначала выполняется сложение 2 несуществуюих переменных, и получившемуся результату (0 или null) присвоить ничего нельзя.

Но в PHP, как всегда, все не так. У них там парсер при обнаружении такой ситуации просто игнорирует приоритеты и воспринимает выражение как $a + ($b = 1). Причем если почитать комменты, некотлорые разработчики PHP считают такое поведение удобным и оправданным. Я считаю наоборот - это только запутывает разработчика и нужно выдавать ошибку, а не пытаться "додумать", что имел в виде программист.

Интересно, это где вопросы такого уровня задают? Я например про эту фичу не знал, до того как один анон выше указал, что его код ведет себя странно. Это же вопрос по сути про устройство парсера PHP.

В мануале это упомянуто вскользь: http://php.net/manual/ru/language.operators.precedence.php внизу:

> Несмотря на то, что = имеет более низкий приоритет чем большинство других операторов, PHP все же позволяет делать так: if (!$a = foo()), в этом примере результат выполнения foo() будет присвоен $a.



>>1063075

Да, хорошо.

>>1062640

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

>>1062173

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

1) упорядоченный список чего-то: [x, y, z, w, v]
2) информация о какой-то сущности: ['name' => 'Иван', 'height' => 170, 'weight' => 60]
3) маппинг (соответствие) между парами значений: ['январь' => 5, 'февраль' => 6,...]

Соответственно в твоем случае есть 2 варианта:

а) сделать список (пункт 1) городов (пункт 2):

[
['city' => x, 'state' => y, 'population' => z],
['city' => x, 'state' => y, 'population' => z],
...
]

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

[
'Москва' => ['state' => 'Россия', 'population' => ...],
'Екатеринбург' => ['state' => 'Россия', 'population' => ...]
]

Вариант a) кажется мне более аккуратным. Вариант б) впрочем дает быстрый поиск по названию без перебора.

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

Твой код неудачен. Посмотри сам на циклы:

foreach ($cities as ...) {
foreach ($state as ...) {
...

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

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

В перфекционизме во время обучения нет ничего плохого, но твоему коду пока далеко от совершенства.
#623 #1065696
>>1063139

Это очень интересный вопрос, и я по этому поводу даже создал тикет в баг-трекере PHP c предложением исправить проблему: https://bugs.php.net/bug.php?id=75179

На мой взгляд, выражение $a + $b = 1 не имеет смысла и должно выдавать ошибку. Так как приоритет опрерации + выше, чем у = и, следовательно, сначала выполняется сложение 2 несуществуюих переменных, и получившемуся результату (0 или null) присвоить ничего нельзя.

Но в PHP, как всегда, все не так. У них там парсер при обнаружении такой ситуации просто игнорирует приоритеты и воспринимает выражение как $a + ($b = 1). Причем если почитать комменты, некотлорые разработчики PHP считают такое поведение удобным и оправданным. Я считаю наоборот - это только запутывает разработчика и нужно выдавать ошибку, а не пытаться "додумать", что имел в виде программист.

Интересно, это где вопросы такого уровня задают? Я например про эту фичу не знал, до того как один анон выше указал, что его код ведет себя странно. Это же вопрос по сути про устройство парсера PHP.

В мануале это упомянуто вскользь: http://php.net/manual/ru/language.operators.precedence.php внизу:

> Несмотря на то, что = имеет более низкий приоритет чем большинство других операторов, PHP все же позволяет делать так: if (!$a = foo()), в этом примере результат выполнения foo() будет присвоен $a.



>>1063075

Да, хорошо.

>>1062640

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

>>1062173

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

1) упорядоченный список чего-то: [x, y, z, w, v]
2) информация о какой-то сущности: ['name' => 'Иван', 'height' => 170, 'weight' => 60]
3) маппинг (соответствие) между парами значений: ['январь' => 5, 'февраль' => 6,...]

Соответственно в твоем случае есть 2 варианта:

а) сделать список (пункт 1) городов (пункт 2):

[
['city' => x, 'state' => y, 'population' => z],
['city' => x, 'state' => y, 'population' => z],
...
]

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

[
'Москва' => ['state' => 'Россия', 'population' => ...],
'Екатеринбург' => ['state' => 'Россия', 'population' => ...]
]

Вариант a) кажется мне более аккуратным. Вариант б) впрочем дает быстрый поиск по названию без перебора.

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

Твой код неудачен. Посмотри сам на циклы:

foreach ($cities as ...) {
foreach ($state as ...) {
...

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

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

В перфекционизме во время обучения нет ничего плохого, но твоему коду пока далеко от совершенства.
#624 #1065697
>>1062094

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

>>1061987

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

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

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

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

Кстати, если тебе интересно, пинги примерно такие:

Москва - Спб: около 5 мс в одну сторону
Москва - Европа: порядка 20-30 мс в одну сторону
Москва - США: порядка 100 мс в одну сторону

Ты можешь сам их измерить командой ping или онлайн-инструментом вроде такого http://ping.eu/ping/
#624 #1065697
>>1062094

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

>>1061987

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

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

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

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

Кстати, если тебе интересно, пинги примерно такие:

Москва - Спб: около 5 мс в одну сторону
Москва - Европа: порядка 20-30 мс в одну сторону
Москва - США: порядка 100 мс в одну сторону

Ты можешь сам их измерить командой ping или онлайн-инструментом вроде такого http://ping.eu/ping/
#625 #1065698
>>1062077

Взрослеть

>>1060888
>>1062053

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

>>1061871

Можно перейти на URL, по которому отдастся файл. Или же, для новых браузеров, ты можешь сделать ссылку с атрибутом download и попросить пользователя нажать ее.

>>1061997

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

Также, можно анализировать долю популярности того или иного браузера. Например https://www.liveinternet.ru/stat/ru/browsers.html?period=month

Обрати внимание, что это статистика по десяткам миллионов пользователей и 1% там значит порядка миллиона пользователей.

По моему опыту, если делать все по стандартам (а не копипастя код со stackoverflow), если изучать CSS по моим урокам (а не тыкать свойства наугад), то работать будет сразу в большинстве стандартных браузеров, кроме старых IE. для старых IE у меня есть урок https://github.com/codedokode/pasta/blob/master/html/markup-for-ie.md

Также, есть полезный сайт, где можно увидеть поддержку той или иной технологии браузерами: http://caniuse.com/#search=background-size

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

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

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

Твоя задача - разбираться в этом и уметь оценить, насколько сложно сделать ту или иную вещь и какие браузеры ее будут поддерживать.
#625 #1065698
>>1062077

Взрослеть

>>1060888
>>1062053

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

>>1061871

Можно перейти на URL, по которому отдастся файл. Или же, для новых браузеров, ты можешь сделать ссылку с атрибутом download и попросить пользователя нажать ее.

>>1061997

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

Также, можно анализировать долю популярности того или иного браузера. Например https://www.liveinternet.ru/stat/ru/browsers.html?period=month

Обрати внимание, что это статистика по десяткам миллионов пользователей и 1% там значит порядка миллиона пользователей.

По моему опыту, если делать все по стандартам (а не копипастя код со stackoverflow), если изучать CSS по моим урокам (а не тыкать свойства наугад), то работать будет сразу в большинстве стандартных браузеров, кроме старых IE. для старых IE у меня есть урок https://github.com/codedokode/pasta/blob/master/html/markup-for-ie.md

Также, есть полезный сайт, где можно увидеть поддержку той или иной технологии браузерами: http://caniuse.com/#search=background-size

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

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

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

Твоя задача - разбираться в этом и уметь оценить, насколько сложно сделать ту или иную вещь и какие браузеры ее будут поддерживать.
#626 #1065699
>>1061991

Симфониевский код по моему использует DOMDocument, потому ты можешь проверить, переварит ли твой код это расширение.

>>1061927

Ты не только читай, ты еще пиши код, пробуй что-то делать.
#627 #1065726
Оп проверь студентов пожалуйста!
https://github.com/radiodog/studentlist
627 Кб, 1920x1080
#628 #1065729
Все еще пилю качалку, фишку баги, осталось чуть-чуть
#630 #1065731
>>1065730
Стыдно, что изначально наговнокодил, а потом подглядел у других решения и понял, что так намного проще. D:
#631 #1065736
>>1065730
давай теперь в ООП стиле с инкапсуляцией и полиморфизмом
#632 #1065744
>>1065693

>


>- https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md


>$s = "щ";


Что означает эта строка? "Присвоить s UTF8-строку"?
35 Кб, 786x548
#633 #1065776
Аноны, чому- то не могу понять, что у меня неправильно в задачке с игрой "Больше- меньше" из этого урока. Поясните, в чем я обосрался. Мне просто пишет результат из первого echo и все.

https://ideone.com/kiJeu8
#634 #1065790
>>1065776
Все норм, просто сравнивал одну переменную саму с собой, а не с другой.
#635 #1065844
>>1065776
16 строка $nonD1
#636 #1065899
>>1064617
Это где у меня негативное отношение к ООП? И о чем ты вообще пишешь, ты мое сообщение хотя бы прочитал, перед тем как катать простыню про ООП, паттерны, мвц и симфони?

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

И это основная идея похапэ. И то, что гонит похапэ в могилу.

Поэтому дрочить ООП здорово, конечно, но в рамках php-мирка достаточно бессмысленно. Тем более бессмысленно пилить свой фреймворк по всем канонам ООП. Знать пару паттернов, как реализовано все это в нужном фреймворке или даже цмс и вперед на галеру. За нормальным ООП программированием прошу пожаловать в более продвинутые языки.
#637 #1065900
>>1064618

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


Ты не можешь без кучи опыта и набитых шишек начать писать свой (микро)фреймворк. Это приведет лишь к куче нечитаемого говнокода. Вот изучив кучу существующих решений, поняв как они работают, можно попытаться на выходных что-то натыкать, но смысла в этом очень мало. Ну и не занятие это джунов/миддлов, в любом случае.
#638 #1065914
>>1065899

Что не так в реализации ООП от PHP и какое отношение к этому имеет Ларавель? Ларавель, насколько я знаю, вдохновлен Руби он Рейлс и видимо пытается поворять архитектуру этого фреймворка.

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


Ява хороший язык, но у PHP есть свои плюсы. Компилировать не требуется, есть иногда полезные динамические возможности, писать приходится меньше.
#639 #1065915
>>1065744

Скопировать строку "щ" (для PHP это просто набор байт) в переменную $s. Какие именно байты скопируются - зависит от кодировки, в которой написан PHP скрипт.

То есть для PHP "щ" это просто 2 каких-то байта.
#640 #1065920
>>1065915
Ооооооо, наконец-то тайна открылась. То есть, в $s окажется набор байт, который PHP считает заключёнными между двойными кавычками, если парсер не поперхнётся.

Тогда вопрос: какие кодировки поддерживает парсер и чем он не поперхнётся? Нужно ли задавать кодировку исходника явно в начале исходника?
#641 #1065928
>>1065920

Раньше все было очень просто. Парсер интерпретировал только байты меньше 0x80 (128), а те, что больше - это просто для него непонятные символы, которые он игнорировал (они могли быть частью строки или имени переменной). Соответсвенно, по факту работала любая 1-байтовая кодировка или utf-8. Utf-16 или utf-32 не работали.

Потом там кое-что подправили и стало вот так: https://stackoverflow.com/questions/17872046/php-source-code-in-utf-8-files-how-to-interpret-properly/18562859#18562859

Несовместимые с ASCII кодировки можно включить через опции zend.multibyte и zend.script_encoding: http://php.net/manual/en/ini.core.php#ini.zend.script-encoding

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

Если твой исходник ASCII-совместимый (включая utf-8) то ничего делать не надо. Если он в utf-16 или utf-32 или чем-то подобном, то придется заморачиваться с настройками.
#642 #1065929
>>1065928

Кстати, мне интересно, как проблема кодировок решена в других языках. В Питоне кодировку можно задать комментарием, но чтобы его прочитать, парсер должен знать кодировку файла.
#643 #1066052
Как в пхп считывать переменные?
В питоне например можно это сделать так:
apples = int(input())
#645 #1066057
>>1066054
Спасибо. Буду от этого теперь гуглить.
Какой же я бака ;c
#646 #1066069
Первая задача на массивы: https://ideone.com/wXoRmp
Вторая задача на массивы: https://ideone.com/zBOSPk
Третья задача на массивы: https://ideone.com/XvM5eM
#647 #1066093
>>1065914

>Что не так в реализации ООП от PHP


>Компилировать не требуется


>динамические возможности


>писать приходится меньше


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

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

>какое отношение к этому имеет Ларавель?


Как бы самый популярный фреймворк на данный момент для малый/средних проектов и он написан на PHP. И, очень показательно, архитектуру он имеет очень так себе. Интерфейсы нормально из коробки не подрубишь, всюду фасады, некоторые фичи просто прибиты гвоздями, словно тебе говорят: "бери что дают и пиши".

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


На роре нет вездесущих фасадов на каждый чих. Он повторяет mvc архитектуру, не более.
#648 #1066173
Оп проверь студентов пожалуйста!
https://github.com/radiodog/studentlist
#649 #1066252
Тред в отпуске?
#650 #1066277
>>1066093

2 поста написал про то, какой плохой в PHP ООП, а как до дела дошло, ничего конкретного сказать не можешь. Да и про ruby on rails толком ничего не знаешь. Наверно, все таки тут проблема не в PHP.

> Ларавель?


> Как бы самый популярный фреймворк на данный момент для малый/средних проектов


Популярный на Хабре или популярный в вакансиях/на фрилансе? Не путай.
#651 #1066363
https://jsfiddle.net/nmk4aeqh/

Это можно назвать инкапсуляцией?
#652 #1066453
>>1066363

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

-----

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

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

Это упрощает понимание кода: тебе не надо читать и разбирать код класса, достаточно прочитать название метода (и может быть комментарий к нему). Также, это упрощает изменение кода: если какое-то свойство имеет уровень private то доступ к нему возможен только из того же класса и тебе не надо бегать по всему коду и смотреть что там с этим свойством делается, тебе достаточно просмотреть один файл с этим классом.

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

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

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

-----

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

Инкапсуляция в функциональных ЯП возможна за счет замыкания:

function createCounter() {
var x = 0;
return function () {
x++;
return x;
};
}

var counter = createCounter();

В примере данные спрятаны в замыкании, а мы имеем возможность только получить следующее значение счетчика.
#652 #1066453
>>1066363

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

-----

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

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

Это упрощает понимание кода: тебе не надо читать и разбирать код класса, достаточно прочитать название метода (и может быть комментарий к нему). Также, это упрощает изменение кода: если какое-то свойство имеет уровень private то доступ к нему возможен только из того же класса и тебе не надо бегать по всему коду и смотреть что там с этим свойством делается, тебе достаточно просмотреть один файл с этим классом.

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

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

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

-----

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

Инкапсуляция в функциональных ЯП возможна за счет замыкания:

function createCounter() {
var x = 0;
return function () {
x++;
return x;
};
}

var counter = createCounter();

В примере данные спрятаны в замыкании, а мы имеем возможность только получить следующее значение счетчика.
#653 #1066502
>>1066069
Дополняю.

Четвертая задача на массивы: https://ideone.com/dNl1au

Шифровка: Сделал но похерачил случайно все полностью два раза. Заново уже третий раз писать нет никакого желния. Но каждый символ был уникальный и использовался один раз.
#654 #1066512
Мои студенты – https://github.com/vadimyen/students. Знаю, что много косяков с проверкой-перепроверкой параметров , значений куки и прочего (в контролере и в самих вспомогательных классах есть дублирование что ли, каша), вот. буду рад услышать замечания. И еще вопрос: не правильнее ли для авторизации хранить не просто сгенерированную строку что на клиенте, что в БД, а на клиенте обычную строку, а в БД ее хеш с солью (password_hash/password_verify), так как если кто-то получит доступ к базе, то получит любого пользователя. Еще думаю, класс Security за слишком многое ответственен, а функции подсветки и экранирования html-сущностей в отдельные классы надо раскидать
#656 #1066577
>>1066277

>2 поста написал про то, какой плохой в PHP ООП, а как до дела дошло, ничего конкретного сказать не можешь.


Так а что тут сказать? Стдлиб и самые популярные инструменты для PHP (разве что кроме некоторых компонентов симфони) не рассчитаны для использования в ООП архитектуре, либо их нужно оборачивать в бесконечные проверки и подменять вывод, либо перепиливать и заставлять исполнять паттерны. Более подробно в гугле по запросу "чем плох php", копипастить не вижу смысла.

>Да и про ruby on rails толком ничего не знаешь.


Я и не говорил, что большой специалист. Просто когда говорят ror-подобный фреймворк, то имеют ввиду стандартное разбиение компонентов mvc. Тот же симфони, прямая противоположность Laravel, тоже ror-подобный. Странно, что это приходится объяснять, ну да ладно.

>Наверно, все таки тут проблема не в PHP.


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

>Популярный на Хабре или популярный в вакансиях/на фрилансе? Не путай.


Так и не путаю. А что популярнее? Битрикс? В вакансиях по ДС/ДС2 в основном laravel/symfony/lumen/silex, либо нечто на компонентах symfony, что сути не меняет. На фрилансе либо дают самому выбрать на чем решать задачу, либо работать с легаси. Тут уже кто что когда-то давно выбрал, что тоже особо не показатель.
#657 #1066631
>>1066577

>чем плох php


Большинство из них примерно 2010-го года написания. Да и там доебки к синтаксису в основном. Ну да, он в пыхе довольно архаичен - Си для тупых же. Но что в этом такого я не понимаю, на сишке же хуярят до сих пор и не ноют даже. И я так и не понял чем тебе там ООП не нравится - вот что такого жутко важного нет в реализации пхпшного ООП?
#658 #1066645
>>1066453
Понял.

(Пример с числами это самое простое, что пришло в голову. Реальный код позволяет мне не дублировать простейшие функции внутри объекта, и отдавать наружу только публичное так сказать АПИ. Вот я и подумал, что получилась настояшая инкапсуляция + ДИ, а оно вона как. Ох, забей.)
4 Кб, 521x109
#659 #1066654
Такой вопрос, в yii2 использую бутстрап для изменения pageSize в пагинации (пик).
Такой предефайн работает только в случае если я получаю пагинацию путем Yii::$container->get('yii\data\Pagination'), и не работает если я как обычно создаю экземпляр класса через new yii\data\Pagination(), так и задумано? Теперь придется получение класса делать только через геттер контейнера?
#660 #1066698
Такая короче у меня дилема. Пилю я сортировку в запросе через order by, для задачки про студентов. В запрос колонка для сотрировки попадает от пользователя, и все бы хорошо, но что если пользователеь в ссылке введет хуиту? Т.е. колонку, которой нет. Думается мне, надо как-то отдельно хранить коллекцию колонок, по которым можно делать упорядочивание, но вот как это правильннй реализовать? Впилить где-то массив в контроллере и перед передачей параметра в запрос проверять на наличие такого значения в массиве? Но тогда, по идее, пользователь-админ не сможет самостоятельно добавлять новые колонки для возможной сортировки. Делать для этого специальную таблицу в БД? Но для такого мелкого чиха, и целая таблица, а потом еще обращаться к базе - слишком жирно мне кажется. Для задачки про студентов это наверное не критично, но вот как такие проблемы по идее надо решать?
#661 #1066703
>>1066698

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

В твоем случае проще всего сделать массив разрешенных значений и проверять по нему. Там ведь немного колонок.
#662 #1066704
>>1066698

В более общем случае можно этот массив не закладывать в коде, а получать из БД список колонок.
#663 #1066706
>>1066703

>Нужно обязательно проверять значения от пользователя


Я не совсем это имею ввиду. Про проверку это понятно.
>>1066704
Допустим, я хочу позволить сортировать по name, secondName и summary(это у меня так общий бал называется). А пользователь хуяк и в ссылке введет не students.loc/name/1 (поле сортировки и страница), а /email/1 - и у меня будет сортировка по имейлу, хули, есть же такая колонка. В принципе ничего страшного в любом случае, но меня скорее интересует вопрос хранения каких-либо параметров, которые можно было бы отдать пользователю для свободного изменения, но при этом слишком мелочных что бы для них делать таблицы в БД, как-то так.
#664 #1066720
>>1066706

Если ты не хочешь чтобы была возможность сортировать по email то надо сделать просто массив со списком разрешенных значений.
#665 #1066762
В Yii2, в модели LoginForm.php написано:
public function rules()
{
return [
// username and password are both required
[['username', 'password'], 'required'],
// rememberMe must be a boolean value
['rememberMe', 'boolean'],
// password is validated by validatePassword()
['password', 'validatePassword'],
];
}

rules() - это метод класса LoginForm. Окей. И он возвращает некие правила, состоящие из двух элементов: "что" и "каким оно должно быть". Например, username' и 'password' должны быть обязательно. Но что такое username? Я "примерно чувствую", что это вводимые пользователем в форму данные. Тогда, username - это имя поля? Вот это вот <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> во вью login.php?
Если я изменю название поля и напишу то же название в правилах валидации, то этого будет достаточно, или это поле упоминается где-нибудь ещё?
Другой вопрос, а кому этот метод что-то возвращает? Дожен ли я где-то его вызывать, или это делается "под капотом"?
#666 #1066765
>>1066762

>Если я изменю название поля и напишу то же название в правилах валидации, то этого будет достаточно, или это поле упоминается где-нибудь ещё?


Немного не так, да это название поля, но в то же время в

><?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>


это ещё и название атрибута в модели, то-есть обычно если ты пользуешься gii он создает модель на основе таблицы в базе. Если ты просто поменяешь название в rules и в <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> - этого будет недостаточно, тебе выбросит ошибку, что такого атрибута нет в твоей модели. Тебе нужно ещё будет добавить нужный атрибут в модель и в таблицу
#667 #1066773
Анон, подскажи самый годный туториал, как запилить свой MVC-фреймворк с нуля. Чтобы был роутинг через index.php, автозагрузка классов, подобие Active Record из Yii2, layout'ы для фронта и бэка. Чтобы прям разжевали по шагам, как и что делать.
#668 #1066774
>>1066765
То есть, если заменить во вью username на nameuser, то в моделе нужно изменить
public $nameuser;
в объявлении атрибутов и
[['nameuser', 'password'], 'required'],
в методе rules()

И получается, что мы передаём в метод field() модель $model (берётся из контроллера) и атрибут модели nameuser. Метод создаёт поле формы с тем же именем(username), а значение этого атрибута установит пользователь, введя туда что-то. Так?

>Тебе нужно ещё будет добавить нужный атрибут в модель и в таблицу


То есть, nameuser - это ещё и название поля в таблице?
#669 #1066789
И ещё вопрос. В той же модели есть ещё несколько методов, например:
public function validatePassword($attribute, $params)
{
//hasErrors() -Возвращает значение, указывающее, есть ли какая-либо ошибка проверки.
if (!$this->hasErrors()) {
//getUser() -Returns the user component.
$user = $this->getUser();
//Если $user нет ИЛИ валидация с введённым паролем не прошла
if (!$user || !$user->validatePassword($this->password)) {
//addError() -Добавляет ошибку к указанному атрибуту объекту модели.
$this->addError($attribute, 'Incorrect username or password.');
}
}
}

Как они работают? Они рекурсивные?
То есть, сначала hasErrors проверяет наличие ошибок (не понимаю, каких именно, и вообще, что на что проверяется, но ладно). Затем getUser создаёт компонент. А затем идёт проверка на две вещи: успешно ли создался компонент (wtf?) и успешно ли прошёл метод валидации, которому передан один параметр (введённый пароль, полагаю). Но этот метод принимает два параметра. И... Ну хорошо, второй раз его запустили, снова проверили на ошибки и создали новый компонент, снова проверка, и так до бесконечности. Я не понимаю, как это рабоает.
#670 #1066991
Пилю потихоньку свой говнокод, понадобилось скрывать и показывать блок в зависимости от того, правильно ли введен логин/пароль, а проверяю правильно я пыхой. Так вот, как по-человечески связать пыху и js? Единственное что я надумал это чтобы при клике на кнопку, после обработки логина, сервер посылал жсу результат проверки логина/пароля, а жс уже в зависимости от этого либо показывал блок либо нет. В общем подскажите как это правильно делают.
#671 #1067202
>>1066773
На ютубе этого говна навалом. А вообще, делай задачку про студентов, в конце ты и получишь нечто похожее на фреймворк.
#672 #1067257
На словах ты Лев Толстой: https://ideone.com/WmBkGy
#673 #1067401
http://sandbox.onlinephpfunctions.com/code/ff8aae35729153b07b5aac4c744c9d6ca682f90b Почему после unset() значение свойства сохраняется?
#674 #1067402
>>1067401
ахахах, перечитал и дошло: так как это ссылка на приватное статическое свойство и удаляется лишь ссылка
#675 #1067419
А почему тред стал умирать, где все?
#676 #1067428
Оп в отпуске наверное. Никто задачи не проверяет. Вот и получается хуетень!
#677 #1067429
>>1067419

> ОП заходит редко, где-то раз в 2-3 дня, у него мало времени, не жди его, решай задачки дальше



Господа, прошу проявить спокойствие и воспользоваться гуглом, пока Оп'а нету. А более опытные пока что могут помогать новичкам.
#678 #1067436
>>1067429 Я Опа жду уже неделю. А задачки конечно пилю. Просто не очень понятно правильно ли я с ООП работаю. Сейчас делаю задачку про файлообменник и как бы в легком ахуе пребываю сколько всего непонятного. Ищу ответы в интернетах, хули еще остается.
#679 #1067439
>>1067436
Спрашивай, может помогу
#680 #1067465
>>1067436
>>1067428

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

У меня тут бывают периоды когда нет времени проверять, и иногда - периоды, когда лень что-то делать. Но постараюсь всем ответить.
#681 #1067552
>>1067465
Еще, конечно, не неделю, но на всякий случай оставлю
>>1066512
>>1066551
#682 #1067660
Ещё вопрос про Yii2.
Что означает Yii::$app->user->isGuest ?
То есть, это метод проверки, не является ли юзер гостем. Но по отдельности? Что такое isGuest и user? Я искал isGuest поиском, нашёл только в недрах движка и там не особо понятно, что это и для чего.

Я сейчас пытаюсь повторить статью https://webformyself.com/registraciya-polzovatelya-v-yii2-chast-2/ с некоторыми изменениями. У меня таблица назвается не user с полями id, username, password, а users с полями user_id, user_login, user_password. И модель не SignupForm, а UserForm. До момента

>Уберем распечатку и вызовем метод save() модели.


всё работает (с соответствующими изменениями). Данные из формы загружаются в модель $model, а оттуда в модель $user. А вот дальше не понимаю. "Сохранить зарегистрированного пользователя" - это как? У меня валятся ошибки
Invalid Configuration – yii\base\InvalidConfigException
The table does not exist: {{%user}}

Вроде бы это означает, что yii пытается работать с базой user, которой нет. И как переориентировать его на users не понимаю.

Кстати, везде, где читал об этом движке, все аж от счастья писаются и нахваливают его великолепную систему отображения ошибок, по которой сразу понятно, что и где неправильно. Но я этой системы не вижу. Как правило Yii выдаёт "у меня в недрах случилась какая-то хуйня". Или это я тупой и не способен понять его месседжи?
#683 #1067715
>>1067660

Я набрал в поиске "Yii isGuest" и выпало вот это: http://www.yiiframework.com/doc-2.0/yii-web-user.html

Это описание класса User. Там есть свойство isGuest.

> Что такое isGuest и user?


user - объект класса yii\Web\User, isGuest - его публичное свойство.

Вот его код: https://github.com/yiisoft/yii2/blob/master/framework/web/User.php#L326

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

> Я сейчас пытаюсь повторить статью


Стоит параллельно читать код или документацию. Тем более, что сама статья почти ничего не объясняет и знаний не дает. Вот например что гуглится по авторизации:

http://www.yiiframework.com/doc-2.0/guide-security-authentication.html
https://yiiframework.com.ua/ru/doc/guide/2/security-authentication/

> "Сохранить зарегистрированного пользователя" - это как?


Наверно имеется в виду "сохранить объект пользователя в БД".

> Вроде бы это означает, что yii пытается работать с базой user, которой нет. И как переориентировать его на users не понимаю.



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

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

> Или это я тупой и не способен понять его месседжи?


Ты не умеешь читать стектрейсы и понимать, что привело к ошибке. Подробностей там обычно более чем достаточно.
#683 #1067715
>>1067660

Я набрал в поиске "Yii isGuest" и выпало вот это: http://www.yiiframework.com/doc-2.0/yii-web-user.html

Это описание класса User. Там есть свойство isGuest.

> Что такое isGuest и user?


user - объект класса yii\Web\User, isGuest - его публичное свойство.

Вот его код: https://github.com/yiisoft/yii2/blob/master/framework/web/User.php#L326

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

> Я сейчас пытаюсь повторить статью


Стоит параллельно читать код или документацию. Тем более, что сама статья почти ничего не объясняет и знаний не дает. Вот например что гуглится по авторизации:

http://www.yiiframework.com/doc-2.0/guide-security-authentication.html
https://yiiframework.com.ua/ru/doc/guide/2/security-authentication/

> "Сохранить зарегистрированного пользователя" - это как?


Наверно имеется в виду "сохранить объект пользователя в БД".

> Вроде бы это означает, что yii пытается работать с базой user, которой нет. И как переориентировать его на users не понимаю.



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

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

> Или это я тупой и не способен понять его месседжи?


Ты не умеешь читать стектрейсы и понимать, что привело к ошибке. Подробностей там обычно более чем достаточно.
#684 #1067722
>>1067715

>Ты не написал в сообщении ни стектрейс, ни место ошибки


Так мне их Yii не выдал же. Только
Invalid Configuration – yii\base\InvalidConfigException
The table does not exist: {{%user}}
И это ещё хорошо. Иногда просто после нажатия на кнопкку формы появляется пустая страница. Или происходит редирект на главную (без залогинивания). и понять, почему логин не прошёл сложно.

>забыл включить какую-нибудь опцию вроде debug или поменять окружение на dev


Возможно. Хотя, дев я вроде выбирал при установке.

>user - объект класса yii\Web\User, isGuest - его публичное свойство.


Окей.

>Наверно имеется в виду "сохранить объект пользователя в БД".


Это я понимаю. Но тут же сохраняется на моя модель UserForm, а встроенная User.

>http://www.yiiframework.com/doc-2.0/guide-security-authentication.html


>https://yiiframework.com.ua/ru/doc/guide/2/security-authentication/


Посмотрю.
#685 #1067728
>>1067722

А в документации написано что есть 2 режима - development и production, попробуй переключить в development: http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html#environment-constants

Так же в Юи есть лог, где могут быть подробности: http://www.yiiframework.com/doc-2.0/guide-runtime-logging.html

Также, подробности могут быть в стандартном логе ошибок Апача (если Windows, то в папке с Апачом, если linux то в /var/log).

> появляется пустая страница


Может у тебя display_errors в php.ini отключен? Или кто-то die() вызывает?
#686 #1067729
>>1067401

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

$a = new Class;
$b = $a;

Происходит такое: выделяется область памяти, и в этой области памяти создается новый объект. Указатель на объект кладется в переменную $a. Во второй строчке указатель (не сам объект) копируется из переменной $a в $b.

В твоем коде, который является примером паттерна Singleton:

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

Это важно понять, для объектов сохраняется в переменную и передается только их идентификатор, а не сам объект. Потому объекты передаются как будто по ссылке. Другие типы данных - массивы, строки, числа - копируются при передаче. В примере ниже создается вторая копия массива в переменной $b:

$a = [];
$b = $a;

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

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

> это ссылка на приватное статическое свойство


Неверно. Это идентификатор объекта, который сохранен в нескольких местах. Если бы $pref была ссылкой на статическое свойство, то при записи нового значения оно бы оказалось и в $pref, это это не так:

$a = new Class;
$b = $a;
$a = 1; // $b не меняется, указывает на объект, а если бы $b было ссылкой на $a
// то в $a бы тоже оказалось 1

>>1067257

> $i=0;$i<=1


Лучше было $i < 2, чтобы было видно что выполняется два раза.

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

>>1066991

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

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

>>1066789

> Как они работают? Они рекурсивные?


Нет. Это 2 метода с одинаковым названием, но в разных классах. Если ты обратишь внимание, то там идет:

> public function validatePassword($attribute, $params)


> {


> ....


> $user->validatePassword($this->password))



То есть это 2 разных метода. Ты знаешь ООП, знаешь что такое класс и объект? Метод одного класса вызывает метод с таким же названием, но из другого класса.

> То есть, сначала hasErrors проверяет наличие ошибок


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

> (не понимаю, каких именно, и вообще, что на что проверяется, но ладно).


Наверно это проверка свойств модели на соответствие заданным в этой же модели правилам валиадции, как описано в мануале. Ты к сожалению не указал, какой у тебя класс и от кого он унаследован, потому я могу только наугад дать ссылку на документацию, может подойдет: https://yiiframework.com.ua/ru/doc/guide/2/input-validation/

> Затем getUser создаёт компонент


Возвращает существующий наверно, а не создает новый.

> А затем идёт проверка на две вещи: успешно ли создался компонент (wtf?


Тут надо посмотреть метод getUser(), и понять в каких случаях он возвраащет пустое значение вроде null. И тогда будет понятно, что проверяет эта проверка.

> и успешно ли прошёл метод валидации, которому передан один параметр (введённый пароль, полагаю). Но этот метод принимает два параметра


Это другой метод с тем же названием.

>>1066773

Нет такого туториала, можно разобрать код фреймворка вроде Юи, можно решать задачу на студентов.

>>1066774

Тебе надо почитать документацию по Active Record, и по моделям в Юи: https://yiiframework.com.ua/ru/doc/guide/2/structure-models/

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

Если что, вот еще мой урок где описано что такое active record https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

>>1066762

> Но что такое username?


Это название поля модели. Почитай документацию Юи по моделям и по валидации. Посмотри код базового класса модели.

> Я "примерно чувствую", что это вводимые пользователем в форму данные.


Неверно. Модель по умолчанию ничего не знает про формы и конечно не пытается брать данные из POST/GET.

> Вот это вот <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> во вью login.php?


Там $form - это явно объект формы, а не сама модель. Не то.

> Другой вопрос, а кому этот метод что-то возвращает?


Я думаю, какому-то коду в классе-предке. Посмотри исходный код базового класса модели.

>>1066654

Наверно, надо смотреть код.
#686 #1067729
>>1067401

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

$a = new Class;
$b = $a;

Происходит такое: выделяется область памяти, и в этой области памяти создается новый объект. Указатель на объект кладется в переменную $a. Во второй строчке указатель (не сам объект) копируется из переменной $a в $b.

В твоем коде, который является примером паттерна Singleton:

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

Это важно понять, для объектов сохраняется в переменную и передается только их идентификатор, а не сам объект. Потому объекты передаются как будто по ссылке. Другие типы данных - массивы, строки, числа - копируются при передаче. В примере ниже создается вторая копия массива в переменной $b:

$a = [];
$b = $a;

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

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

> это ссылка на приватное статическое свойство


Неверно. Это идентификатор объекта, который сохранен в нескольких местах. Если бы $pref была ссылкой на статическое свойство, то при записи нового значения оно бы оказалось и в $pref, это это не так:

$a = new Class;
$b = $a;
$a = 1; // $b не меняется, указывает на объект, а если бы $b было ссылкой на $a
// то в $a бы тоже оказалось 1

>>1067257

> $i=0;$i<=1


Лучше было $i < 2, чтобы было видно что выполняется два раза.

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

>>1066991

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

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

>>1066789

> Как они работают? Они рекурсивные?


Нет. Это 2 метода с одинаковым названием, но в разных классах. Если ты обратишь внимание, то там идет:

> public function validatePassword($attribute, $params)


> {


> ....


> $user->validatePassword($this->password))



То есть это 2 разных метода. Ты знаешь ООП, знаешь что такое класс и объект? Метод одного класса вызывает метод с таким же названием, но из другого класса.

> То есть, сначала hasErrors проверяет наличие ошибок


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

> (не понимаю, каких именно, и вообще, что на что проверяется, но ладно).


Наверно это проверка свойств модели на соответствие заданным в этой же модели правилам валиадции, как описано в мануале. Ты к сожалению не указал, какой у тебя класс и от кого он унаследован, потому я могу только наугад дать ссылку на документацию, может подойдет: https://yiiframework.com.ua/ru/doc/guide/2/input-validation/

> Затем getUser создаёт компонент


Возвращает существующий наверно, а не создает новый.

> А затем идёт проверка на две вещи: успешно ли создался компонент (wtf?


Тут надо посмотреть метод getUser(), и понять в каких случаях он возвраащет пустое значение вроде null. И тогда будет понятно, что проверяет эта проверка.

> и успешно ли прошёл метод валидации, которому передан один параметр (введённый пароль, полагаю). Но этот метод принимает два параметра


Это другой метод с тем же названием.

>>1066773

Нет такого туториала, можно разобрать код фреймворка вроде Юи, можно решать задачу на студентов.

>>1066774

Тебе надо почитать документацию по Active Record, и по моделям в Юи: https://yiiframework.com.ua/ru/doc/guide/2/structure-models/

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

Если что, вот еще мой урок где описано что такое active record https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

>>1066762

> Но что такое username?


Это название поля модели. Почитай документацию Юи по моделям и по валидации. Посмотри код базового класса модели.

> Я "примерно чувствую", что это вводимые пользователем в форму данные.


Неверно. Модель по умолчанию ничего не знает про формы и конечно не пытается брать данные из POST/GET.

> Вот это вот <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> во вью login.php?


Там $form - это явно объект формы, а не сама модель. Не то.

> Другой вопрос, а кому этот метод что-то возвращает?


Я думаю, какому-то коду в классе-предке. Посмотри исходный код базового класса модели.

>>1066654

Наверно, надо смотреть код.
someApprentice #687 #1067730
>>1066069

>Первая задача на массивы: https://ideone.com/wXoRmp


Верно.

>$rates = [3,5,3,2,1,8,4,3,4,3,2,3];


С пробелом после запятых выглядит читабельное.

$rates = [3, 5, 3, 2, 1, 8, 4, 3, 4, 3, 2, 3];

>Вторая задача на массивы: https://ideone.com/zBOSPk


Верно.

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

Для этого понадобиться функция array_filter() и передача callback-функции

https://secure.php.net/manual/ru/function.array-filter.php
https://secure.php.net/manual/ru/language.types.callable.php

Решение:
https://ideone.com/ypZU1c
https://3v4l.org/3t6Wi

>Третья задача на массивы: https://ideone.com/XvM5eM


Верно.

>>1066502

>Четвертая задача на массивы: https://ideone.com/dNl1au


Верно. Но в >$name = $name .= $randomText; можно не делать лишнее присваивание в начале. Оператор .= и так означает - $a = $a . $b;
someApprentice #687 #1067730
>>1066069

>Первая задача на массивы: https://ideone.com/wXoRmp


Верно.

>$rates = [3,5,3,2,1,8,4,3,4,3,2,3];


С пробелом после запятых выглядит читабельное.

$rates = [3, 5, 3, 2, 1, 8, 4, 3, 4, 3, 2, 3];

>Вторая задача на массивы: https://ideone.com/zBOSPk


Верно.

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

Для этого понадобиться функция array_filter() и передача callback-функции

https://secure.php.net/manual/ru/function.array-filter.php
https://secure.php.net/manual/ru/language.types.callable.php

Решение:
https://ideone.com/ypZU1c
https://3v4l.org/3t6Wi

>Третья задача на массивы: https://ideone.com/XvM5eM


Верно.

>>1066502

>Четвертая задача на массивы: https://ideone.com/dNl1au


Верно. Но в >$name = $name .= $randomText; можно не делать лишнее присваивание в начале. Оператор .= и так означает - $a = $a . $b;
someApprentice #688 #1067731
>>1067730

>https://3v4l.org/3t6Wi


Случайно не то решение скинул. В callback-функции должна быть конструкция use($anonHeight) и использование этого параметра в условии:

function($classmate) use ($anonHeight) {
if ($classmate > $anonHeight) {
return true;
} else {
return false;
}
}
#689 #1067733
>>1065730

Ок, правильно.

>>1066069

> Первая задача на массивы: https://ideone.com/wXoRmp


Верно

> Вторая задача на массивы: https://ideone.com/zBOSPk


Правильно

> Третья задача на массивы: https://ideone.com/XvM5eM


Верно

>>1066502

> Четвертая задача на массивы: https://ideone.com/dNl1au



> $name = $name .= $randomText;


$name = тут лишнее. А так, верно.
#690 #1067734
>>1067731

Или просто return $x > $y так как оператор > возвращает boolean (true/false).
#691 #1067735
Как правильно произносится Yii?
40 Кб, 387x480
#693 #1067742
>>1067735
уии
#694 #1067749
#695 #1067752
Помогач, выручай. Есть один сайт, который выдает 503 Service Temporarily Unavailable. Задача - пофиксить это говно.
Я знаю что это поиск иголки в стоге сена, но любая инфа приветствуется.
Проблема не в хостинге - значит у меня.
Из остальных вариантов я слышал только о 2: дудос или медленного говно мамонта в медленном говнокоде который писал не я.
Условия: есть доступ к контрольной панели хостинга и много живительных пиздюлей.
Вопрос: как узнать каким говном этот сайт захлебнулся?
#696 #1067758
>>1067735
Йи(и)
#697 #1067770
>>1067729
Спасибо, сразу вспомнил эту статью – https://habrahabr.ru/post/162713/
#698 #1067810
>>1067752
Сэмулируй у себя на локалке, посмотри, что будет. Почкму ты думаешь проблема не в хостинге?
#699 #1067860
>>1067752

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

А ты начинаешь вместо этого гадать, в чем дело.

>>1067810

Проблема может не повториться из-за другой конфигурации.
#700 #1067885
Зачем нужна команда return и зачем возвращать значение, которое хранилось в переменной?
http://archive-ipq-co.narod.ru/l1/functions.html
#701 #1067888
https://jsfiddle.net/tketds4n/

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

Почему так может быть?
#702 #1067893
>>1067885

return используется для 2 целей:

1) она завершает выполнение функции и выходит из нее. Например:

if ($x < 0) {
return; // выходит из функции, функция дальше не выполняется
}

2) она позволяет вернуть из функции значение. Значение будет возвращено в месте вызова функции, и нужно его сохранить в переменную, чтобы не потерять:

В функции мы соответственно используем return, чтобы указать, какое значение мы хотим вернуть:

function someFunction ()
{
return 10;
}

$x = someFunction() ; // вызвать функцию и записать значение, которое она вернет, в $x
echo $x; // выведет 10

Можно конечно и без переменной, сразу вывести значение, которое вернет функция:

echo someFunction(); // выведет 10

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

return используется для 2 целей:

1) она завершает выполнение функции и выходит из нее. Например:

if ($x < 0) {
return; // выходит из функции, функция дальше не выполняется
}

2) она позволяет вернуть из функции значение. Значение будет возвращено в месте вызова функции, и нужно его сохранить в переменную, чтобы не потерять:

В функции мы соответственно используем return, чтобы указать, какое значение мы хотим вернуть:

function someFunction ()
{
return 10;
}

$x = someFunction() ; // вызвать функцию и записать значение, которое она вернет, в $x
echo $x; // выведет 10

Можно конечно и без переменной, сразу вывести значение, которое вернет функция:

echo someFunction(); // выведет 10

Не забывай, что переменные внутри функции изолированы от переменных снаружи (функция не видит внешние переменные и не может их менять). То есть аргументы функции в скобках используются, чтобы передать значения снаружи внутрь функции, а return используется, чтобы вернуть одно значение из функции назад в место вызова.
#703 #1067894
>>1067885
https://ideone.com/0dAmrv

максимально доступно объяснил как мне кажется, проилюстрировал всю соль функций прям тебе.
#704 #1067901
>>1067893
Спасибо!
#705 #1067903
>>1067888

У тебя показ меню сделан по условию :focus на кнопке. Это неправильно, так как если в меню есть ссылка и на нее нажмут, или если можно выделить текст, то кнопка потеряет фокус (фокус может быть только у одного элемента; фокус определяет, кто получает события с клавиатуры). Нужно сделать чекбокс, и привязать открытие меню к активности (наличию галочки) в чекбоксе.

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

Также, не используй звездочку, иначе твой виджет сломает остальные элементы на сайте.
#706 #1067905
>>1067903
А как тогда сделать что ты выбрал опцию, ушел с меню и оно закрылось. С чекбоксом так не прокатит.
#707 #1067908
>>1067905

Да, верно. Наверно, тут без яваскрипта трудно это реализовать.
#708 #1067914
>>1067908
Я к этому пришел в попытке избавиться от лишнего жаваскрипта, ну окей че :3
#709 #1067917
>>1067894
Спасибо тоже!. Смешно и понятно.
#710 #1067951
Аноны, новый тред тут >>1067944 (OP)

Этот уже тонет, перебирайтесь. Если я кому-то не ответил, напомните о себе в новом треде. Анонов со студентами постараюсь в ближайшее время проверить.
#711 #1068058
>>1067885
еще в методах класса можно вернуть обьект, чтобы совершать с ним различные манипуляции типа
$govno->save()->execute() и так далее
#712 #1068117
>>1068058
Охуел когда впервые такое увидел, причем это было что-то в контексте блядь:
$this->db->get('*')->from('users')->where('keke>1')->order_by('yourmom');
#713 #1068153
Вопрос.
Исходные данные: Yii2 advanced.
Суть вопроса: можно ли сделать чтобы обычная аутентификация и к примеру любая другая аутентификация вроде HttpBasicAuth работали независимо друг от друга?
#714 #1068249
Нуб не может настроить связку php и apache.
В конфиге апача прописываю LoadModule php7_module "c:/php/php7apache2_2.dll"
AddType application/x-httpd-php .php .htm .html

Апач запускается, не ругеается. Но когда пробую открывать страницы, он не обрабатывает php, а выдает просто его как обычный текст в браузер
#715 #1068267
#716 #1068323
>>1068249

В логах ошибок веб-сервера что-нибудь есть? Алсо, для html не надо указывать PHP в качестве обработчика.
#717 #1068357
Напомню, что новый тред тут >>1067944 (OP) . Этот тред закрыт, если вам не ответили, напомните о себе в новом треде.

>>1061501

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

>>1060331

Нужно использовать привязку к краям строки (^ и $), без нее регулярка проверяет на соответствие только часть строки, а не всю ее целиком.
#718 #1068489
Есть ли разница и имеют ли различия кавычки одинарные '' и двойные ""?
#719 #1069686
>>1068489

Новый тред уже в другом месте, а на твой вопрос могу дать ссылку на мануал где описана разница: http://php.net/manual/ru/language.types.string.php
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 6 октября 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски