М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 6 октября 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

Клуб изучающих PHP и webdev #93 23 авг, 20:11 #1049651 В конец треда | Веб

33 Кб, 500x500

157 Кб, 1024x683

194 Кб, 1024x768

156 Кб, 787x830

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

Ответы50040562505662256858570225776857786585495907459082595876151362707

56 Кб, 500x644

Важно 23 авг, 20:12 #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

Важно 23 авг, 20:12 #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, то рассказать об этом стоит в каком-нибудь другом треде.

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

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

Показать весь текст

23 авг, 21:56 #3 #1049741

Имеется многомерный массив(получен путём декода из json). Если я сделаю в него array_push() массива, который будет дублировать уже существующий в многомерном - он заменится или вставится и будут два идентичных массива? Или, может, вообще ничего не произойдёт?

Ответы49746

23 авг, 22:04 #4 #1049746

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

23 авг, 23:47 #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

Чому?

Ответы49835

24 авг, 00:20 #6 #1049835

>>1049799
Предлагаешь нам угадывать без кода? Функцию json_decode с параметром true вызываешь? Не думал просто var_dump'ом вывести $_POST и посмотреть что там приходит?

24 авг, 00:43 #7 #1049858

Подскажите годную проекты(можно на гитхабе) по laravel

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

Ответы49861

24 авг, 00:48 #8 #1049861

>>1049858
Двигайся на fl.ru

Ответы49870

24 авг, 01:06 #9 #1049870

>>1049861
Маловато знаний, там все хотят хайлоад и работу с миллиардом апи

Ответы56246

24 авг, 05:45 #10 #1049933

Перекатываюсь. Сделал главное задание на HTML&CSS вертску. Результаты работ тут:
https://theknacker.github.io/TheKnacker/default.html
Адаптивный пока не делал, но могу. Делал сайт почти без подглядываний, которые были в общем случае бесполезны. У гитхаба слетают шрифты, странно что верхний у лого не слетел.

нубсишник

Ответы49942503885038950398

24 авг, 08:35 #11 #1049942

>>1049933
На мобилках выглядит хуево

Ответы49968

24 авг, 09:52 #12 #1049956

Работаю на работке, на которой часов 5-6 в день нихуя не делаю.
Пк нет, а принести планшет/ноут нельзя.
Можно ли со смарта учиться?
Какой лучше подойдет?
Программки какие надо установить?
Клаву может какую скачать поудобнее?
Понимаю, что если захотеть, то можно без всего этого обойтись, но все же, может есть какие ахуительные/платиновые перделки о которых я просто не знаю?

Ответы4995756246

24 авг, 09:53 #13 #1049957

>>1049956
Книгу купи, лол.
Со смарта можно что угодно делать, накачай на карту памяти видосов и смотри.

24 авг, 10:08 #14 #1049968

>>1049942
И на Айпаде, я же сказал
>Адаптивный пока не делал, но могу.

24 авг, 12:08 #15 #1050018

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

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

Ответы50206

24 авг, 12:47 #16 #1050040

>>1049651 (OP)
здравствуйте, я гей

Ответы50090

24 авг, 14:35 #17 #1050090

>>1050040
Ну и что ты делаешь в PHP треде? Это район для четких поцанчиков в шапках-гандонках.

24 авг, 16:59 #18 #1050189

как создать аккаунт на сайте?

Ответы50206

24 авг, 17:38 #19 #1050206

>>1050018

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

>>1050189

На каком?

Ответы5020750621

24 авг, 17:40 #20 #1050207

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

Ответы50621

24 авг, 18:06 #21 #1050220

>>1049759
Решил для себя сначала потратить месяц на html/css. Мне почему-то кажется, что лучше это выучить перед php. Зато больше уже не придется к этому возвращаться.
Потом уже пройду все задачи из шапки и просмотрю этот курс.

Ответы50258

24 авг, 18:41 #22 #1050258

>>1050220

А у нас в шапке есть и на HTML/CSS задачи (только задачи, но зато хорошо проверяют понимание HTML).

24 авг, 19:31 #23 #1050301

в жопу ваш пхп,перекатился на питон

https://theknacker.github.io/TheKnacker/default.html 24 авг, 21:19 #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 авг, 21:19 #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 превращается в свалку, возникают конфликты (один разработчик пишет правило, ломающее блок другого разработчика), становится трудно что-то править. Потому важно учиться организоывать код, и БЭМ тут хороший и продуманный вариант (в плане разбиения верстки страницы на независимые блоки).

Показать весь текст
Ответы50600

https://theknacker.github.io/TheKnacker/default.html 24 авг, 21:19 #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 24 авг, 21:19 #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.

Показать весь текст
Ответы50600

24 авг, 21:29 #26 #1050398

>>1049933

Если вдруг интересно, у меня был урок про верстку под ИЕ: https://gist.github.com/codedokode/855e3970124687b26a1c

Ответы50600

14 Кб, 383x459

24 авг, 21:34 #27 #1050402

Какой-то кадр зачем-то сделал редирект со своего домена на мой проект. Причём по поисковым запросам почему-то его домен выскакивает значительно раньше моего.

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

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

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

Ответы50430

24 авг, 22:13 #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

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

Также, стоит подключить вебмастер, если он не подключен.

Ответы5043450435

24 авг, 22:30 #29 #1050434

>>1050430
Сенкс. Есть версия что редирект вешают на время чтобы разбанить домен.

24 авг, 22:39 #30 #1050435

>>1050430
>А у тебя стоит 302
Как ты узнал?

Ответы50538

24 авг, 23:59 #31 #1050470

Двач, как средствами пыхи задетектить такой масстив array(1) { [0]=> string(0) "" } и зачистить его, чтобы было array(0) {}? С меня кружка чая.

Ответы504885049150548

25 авг, 00:20 #32 #1050488

>>1050470
А в кружке точно чай? Не врешь?

25 авг, 00:22 #33 #1050491

>>1050470
https://3v4l.org/DhFR4

Ответы504945049850548

15 Кб, 320x270

25 авг, 00:24 #34 #1050494

>>1050491
Базиба.

Ответы50496

25 авг, 00:26 #35 #1050496

>>1050494
Это горшок с "чаем"?

Ответы50498

25 авг, 00:27 #36 #1050498

>>1050496
Годная кружка, прекращай флудить.

>>1050491 -анон

25 авг, 01:18 #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ая книга автора вообще не задана в БД, ХЕЛП, постарался объяснить максимально понятно как смог.

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

Ответы5053852471

25 авг, 01:36 #38 #1050538

>>1050435

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

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

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

>>1050533

Ты не дал ссылку на твой код, как мы поймем, в чем ошибка?

Ответы50540

25 авг, 01:41 #39 #1050540

>>1050538
Я прошу только подсказать в логике, мб какую-то проверку надо делать? Ну если надо код могу дать.

Ответы52461

25 авг, 01:57 #40 #1050548

>>1050470
>>1050491
array_filter без колбека удаляет пустые (которые приводятся к false) элементы

25 авг, 05:28 #41 #1050584

Задача про Вектор. Доделал вторую часть задачи про оптимизацию затрат. Оп, посмотри, пожалуйста.
https://github.com/telepok/php-test/blob/master/oop4.php

Ответы56246

25 авг, 07:14 #42 #1050600

>>1050388
>>1050389
>>1050398
Ого, схоронил, спасибо ОП.
Я верстку делал за 16 часов, спать упал часов в 4 утра. Так нельзя делать. Решил попробовать узкие знания. Я ведь даже с этими тонкостями шрифтов не знаком. Все делал как читал спецификации. Тащемта нужно бы поискать ресурсов, где всякие полезности написаны, чтобы улучшить верстку. Алсо в точку ты про псевдо-классы подметил, но с ними нужна практика я думаю, поэкспериментировать для себя хотя бы.
>Ты просто как-то неправильно опубликовал сайт на gh-pages
Я вообще GitHub первый раз использую на самом деле. Буду вики читать.
Ну, я думаю тут и так все понятно, я даже с коллонами не знаком. Наверну литературы, продолжу читать спецификации. Ну и сайтик доделаю, потом сюды кину. А за инфу большое спасибо ОПчик.
Алсо, верстку прям попиксельно делать как на макете? И еще я там нахреначил em, даже писал 0.345em лол, чего навернуть по верстке для утят как я можно? И еще, не можешь подсказать, где такие задания на верстку еще можно взять? Я неправильно гуглю, только вот это нашел -
https://thesiteslinger.com/blog/psd-to-html-slicing-tutorials
Ну и тутор твой изучу конеш, алсо пройду те ссылки в уроках что ты оставил.

Ответы56248

25 авг, 10:02 #43 #1050621

>>1050207
1. Создаешь таблицу пользователей со столбцами id, логин и пароль, это минимум.
2. Создаешь на сайте страницу авторизации с полями ввода логина и пароля и кнопкой отправки данных.
3. На кнопку вешаешь обработчик который берет логин, введенный пользователем и создает запрос к базе к таблице пользователей. Если находит такого пользователя, то берет пароль из базы и сравнивает с паролем, введенным пользователем. Если все совпадает, то создаешь сессию на сервере с этими данными, ну и в куки пользователю пишешь логин.
4. На определенных страницах, прежде чем отрисовать ее клиенту, лезешь в куки и смотришь есть там что или нет. Если там есть данные о том, что клиент авторизован - отрисовываешь страницу с возможностью комментирования и т.д.

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

>>1050206
Спасибо, почитаю.

Ответы50687

46 Кб, 404x299

25 авг, 11:54 #44 #1050660

Тред одного Бонифация

Ответы56218

25 авг, 12:46 #45 #1050687

>>1050621
>>1050621
если юзер новый и хочет зарегаться?

Ответы50694

25 авг, 12:57 #46 #1050694

>>1050687
Так а разница-то в чем?
1. Создаешь страницу регистрации юзера с теми же полями.
2. Юзер вводит логин и пароль и клацает по кнопке регистрации.
3. Введенные данные отправляются постом на сервер, где твой код создает запрос к базе и записывает в столбец логина логин, который на сервер отправила форма и в столбец пароля записывает хэш пароля, который так же отправила форма.

А потом редирект на страницу авторизации с сообщением о том что регистрация прошла успешно.

Ответы50697

25 авг, 13:00 #47 #1050697

>>1050694
а че лучше создать базу-пхп админом или консолью?

Ответы50784

25 авг, 15:49 #48 #1050784

>>1050697
Чем больше нравится.

90 Кб, 437x598

26 авг, 01:32 #49 #1051069

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

Ответы510785121051369

26 авг, 01:53 #50 #1051078

>>1051069
>выглядить

Ответы51079

26 авг, 01:57 #51 #1051079

>>1051078
>выглядить
лол. не перечитывал текст

26 авг, 12:30 #52 #1051210

>>1051069
нахуй вы такой хуйней занимаетесь,нужно дрочить реальные задачи

Ответы51369

26 авг, 12:47 #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>

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

Ответы5136956248

26 авг, 18:12 #54 #1051369

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

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

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

>>1051210
Ну так описывай сразу, что есть "реальные задачи", а то толку от твоего поста ноль. ИМХО вполне реальная задача у того анона.

26 авг, 23:23 #55 #1051622

Сап, программач!
Недавно начал изучать ЖС и понадобился компилятор на шиндовс семь.Какие можете посоветовать?

Ответы52206

27 авг, 19:51 #56 #1052206

>>1051622

Интерпретатор JS встроен в браузер, а если ты любишь запускать JS код в консоли (что хорошо) и хочешь отдельный интепретатор, то установи Node.JS.

28 авг, 03:03 #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

Ответы5244056248

28 авг, 06:06 #58 #1052440

>>1052377
О хуя, у вас нельзя ширину переменной назначать?

Ответы52441

28 авг, 06:49 #59 #1052441

>>1052440
Толстовато.
Попробуйте тоньше.

Ответы52444

28 авг, 07:19 #60 #1052444

>>1052441
>.31722768997
Куда тоньше?

Ответы52445

79 Кб, 937x358

28 авг, 07:22 #61 #1052445

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

Ответы52446

28 авг, 07:32 #62 #1052446

>>1052445
А от чего у тебя горит? Я думал нуфаков нужно учить таким основам в первую очередь.

Ответы5244852454

28 авг, 07:34 #63 #1052448

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

Ответы52450

28 авг, 07:40 #64 #1052450

>>1052448
А че он эти значения не включил?

28 авг, 07:50 #65 #1052454

>>1052446
ну не захотел видимо.

28 авг, 09:11 #66 #1052461

>>1050540
В методе, который отрабатывает по твоему роуту, второй параметр вообще хоть как-нибудь в работе участвует? Такое ощущение что айди книги в него передается, но из базы происходит выборка без его участия. Посмотри модели и запросы. Возможно у тебя в них просто что-нибудь вроде min(book_id) или min(book_year). Как-то так.

28 авг, 09:56 #67 #1052471

>>1050533
А как ты собираешься селектить первую вторую и тд книги у каждого автора?

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

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

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

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

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

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

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

28 авг, 14:55 #68 #1052612

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

Ответы526165281952832

28 авг, 14:58 #69 #1052616

>>1052612
Через месяца 4 если не кинут.

28 авг, 15:47 #70 #1052644

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

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

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

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

Ответы5282052832

28 авг, 20:03 #71 #1052819

>>1052612
Полгода

28 авг, 20:05 #72 #1052820

>>1052644
> "поменять цвет кнопки" и "изменить текст"
Лучше скажи, где найти такую компанию

28 авг, 20:09 #73 #1052828

Как подключить mbstring в свой скрипт? Гугл говорит, что нужно в php.ini прописать что-то. Но у меня не проект, а просто скрипт. Как быть ос - винда если что ?

Ответы52832528345283852857

28 авг, 20:18 #74 #1052832

>>1052612
Нет, вкатываться в программирование ради денег - дурацкая затея, навеянная тебе рекламой различных сомнительных курсов. ЗП у начинающих обычно на уровне кассиров из пятёрочки, только до уровня начинающего тебе потребуется 6-12 месяцев. И всё это время по-хорошему нужно уделять 4-5 часов в день минимум на обучение.

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

>>1052644
Пробуй. Меня затянуло так, что дропнул вышку.

Ответы52838

28 авг, 20:20 #75 #1052834

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

18 Кб, 538x111

28 авг, 20:24 #76 #1052838

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

>>1052828
> копируешь файл php.ini-production в php.ini
Спасибо няш, помогло.

Ответы52859

28 авг, 20:53 #77 #1052857

>>1052828

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

Ответы52862

28 авг, 20:54 #78 #1052859

>>1052838

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

Ответы52862

28 авг, 20:59 #79 #1052862

>>1052859
>display_errors = On
Включил.
>error_reporting = E_ALL
Стоит error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Стоит поменять?

>>1052857
Спасибо, буду знать.

Ответы52899

2,1 Мб, 1914x971

28 авг, 21:20 #80 #1052891

Помогите пожалуйста, нужно список с бордами вниз страницы разместить.
HTML - https://pastebin.com/Zm0Z2AEc
CSS - https://pastebin.com/urNpQuYn

28 авг, 21:23 #81 #1052899

>>1052862

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

Вопрос по ларавель 28 авг, 22:05 #82 #1052933

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

Ответы5293752939529405294252953

28 авг, 22:07 #83 #1052937

>>1052933

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

28 авг, 22:10 #84 #1052939

>>1052933
забыл напомнить, что я нулина в англ лэнгвич

28 авг, 22:10 #85 #1052940

>>1052933
забыл напомнить, что я нулина в англ лэнгвич>>1052933

28 авг, 22:12 #86 #1052942

>>1052933

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

Без знания английского конечно твои возможности сильно ограничены.

Ответы52950

Vim 28 авг, 22:17 #87 #1052945

Добрый день, хотел использовать vim в дополнение к своему phpstorm'у, как легкий редактор, но не нашел автодополнение к php. Кто знает, подскажите, пожалуйста.

28 авг, 22:20 #88 #1052950

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

Ответы56248

28 авг, 22:21 #89 #1052953

>>1052933
Как можно изучать laravel без курсов на laracast и знания английского? ты даун?

Ответы52956

28 авг, 22:23 #90 #1052956

>>1052953
русская документация и слитые курсы 5.2

28 авг, 23:10 #91 #1052996

$link = $link + 2;

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

Ответы53057

28 авг, 23:54 #92 #1053019

Помогите с регулярками:
>сначала идет +7 или 8, за ними ровно 10 цифр, между которыми может быть любое число скобок, минусов, пробелов
Первую часть я могу сделать. А вот
>между которыми может быть любое число скобок, минусов, пробелов
не могу придумать как сделать. Похоже что мне нужна регулярка, которая может встречаться где угодно от 0 раз и больше.

Ответы53081

29 авг, 02:25 #93 #1053057

>>1052996

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

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

Почитать про этот формат можно в моем посте >>1048758 подробно.

29 авг, 05:12 #94 #1053081

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

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

Двойные обратные слеши экранируют символы скобки.

29 авг, 05:52 #95 #1053085

Я наверное погорячился выше с советом копировать в php.ini файл php.ini-production. Для разработки и отладки наверное наоборот имеет смысл взять содержимое php.ini-development. Там как раз и логирование более широко включено.

29 авг, 13:16 #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

Ответы53240

29 авг, 13:22 #97 #1053240

>>1053235
Странно очень

var_dump($link_melodious);

string(17) "4.55576239566E+19"

Ответы53255

29 авг, 13:44 #98 #1053255

>>1053240
Тобi пизда.

29 авг, 22:09 #99 #1053600

Где можно посмотреть решения на задачи отсюда - archive-ipq-co.narod.ru ?

Ответы56248

30 авг, 03:48 #100 #1053846

Нахуй Ютуб такой шакальный дизайн сделал?

30 авг, 04:49 #101 #1053865

Котаны, мне пришла в голову интересная затея. Мы прекрасно знаем, что существуют браузерные игры разного типа. С помощью современных инструментов даже можно создавать ММО всякие.
Можно ли создать браузерную MMO RTS используя современные инструменты?

Ответы53915

30 авг, 10:10 #102 #1053915

>>1053865
в вопросе есть ответ

30 авг, 13:03 #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) { // }])

Ответы53963

30 авг, 13:12 #104 #1053963

>>1053955
Нашел: вместо \yii\widget\ActiveForm использовал \yii\bootstrap\ActiveForm, в первом почему то функция item не отрабатывала

30 авг, 18:30 #105 #1054241

Вопрос: Почему при использовании checkbox и checkboxList внутри создается скрытый инпут с таким же именем?

Ответы54331

30 авг, 19:49 #106 #1054303

База данных Postgre sql выдает результат вот такими вот буковками:
Ђ«ҐЄбҐ©Љ®§«®ў

в базе данных указана UTF8
При подключении '--client_encoding=UTF8'
что не так?

Ответы56248

30 авг, 20:17 #107 #1054331

>>1054241
Читаю Котерова сейчас, в пиратском скане, но денег на книгу нет, к сожалению.
Так вот, скрытые чекбоксы делают по той причине, что браузер передает данные о чекбоксе только в том случае, если он нажат. Если не нажат, то совсем ничего не передается. Это может быть неудобным. Скрытый чекбокс передает ноль в любом случае, который перебивается единицей в случае активирования чекбокса.

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

Ответы54405

30 авг, 21:53 #108 #1054405

>>1054331

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

Ответы54581

31 авг, 04:43 #109 #1054581

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

Ответы5458754603

31 авг, 05:29 #110 #1054587

>>1054581
Двачую этого. Если не можешь предложить альтернативу - Лучше молчи.

31 авг, 08:01 #111 #1054603

>>1054581

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

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

31 авг, 12:28 #112 #1054669

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

31 авг, 14:34 #113 #1054765

Запощу здесь, вдруг есть желающие, итак:
Москва, требуется PHP разработчик в одну крупную компанию.
Проект объемный и долгосрочный, расскажу по скайпу.
По стеку: PHP7, MySql, Redis, RabbitMQ, разумная верстка на Bootstrap + js
По деньгам: 100к+
Коллектив небольшой, зп белая и стабильная(требуется диплом о законченной вышке, увы, но таковы требования).
Нужно хоть что-то уметь на PHP и иметь желание работать и обучаться.
Почта для связи: php-dev-$,DrequiredANUSyL{AandexPUNCTUMr^[-u

Ответы5477154783550025501855268

31 авг, 14:44 #114 #1054771

>>1054765
На полную ставку?

Ответы54776

31 авг, 14:50 #115 #1054776

>>1054771
Да, полный день, в офисе.

31 авг, 14:57 #116 #1054783

>>1054765
фальшивый диплом о законченной вышки пойдет?
все равно ж нет никаких мифических баз

31 авг, 18:35 #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

Не понимаю просто :(

Ответы5499455012

31 авг, 19:23 #118 #1054994

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

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

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

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

Ответы55132

31 авг, 19:38 #119 #1055002

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

Ответы5501356248

31 авг, 19:54 #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 символы, но полезно будет хоть раз поковыряться в байтах.

31 авг, 19:54 #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 символы, но полезно будет хоть раз поковыряться в байтах.

Показать весь текст

31 авг, 19:55 #121 #1055013

>>1055002

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

31 авг, 20:00 #122 #1055018

>>1054765
>требуется PHP разработчик
>По стеку: PHP7, MySql, Redis, RabbitMQ, разумная верстка на Bootstrap + js
А ещё с++, java, python и опыт в заправке картриджей.

Ответы55023

31 авг, 20:01 #123 #1055020

Тут нужна картинка про php и js. Там ещё хипстеры.

Ответы55023

356 Кб, 1280x1417

31 авг, 20:06 #124 #1055023

>>1055020
Прилепил.

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

Ответы5502855184

31 авг, 20:12 #125 #1055028

>>1055023
>требования абсолютно нормальные.
Для чего идти к вам если вон в соседнем офисе ерохин юзает только Bootstrap + js.

31 авг, 22:35 #126 #1055132

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

Ну некорректный источник - это когда ставишь кароче японскую раскладку на шинду и можешь писать: あいうえお　かきくけこ　さしすせそ　たちつてと　ща попробую с сосаки скопировать

80 Кб, 1032x534

31 авг, 23:10 #127 #1055184

>>1055023
Кокая хорошая картинка, прям соответствует реальности

Ответы552465527455275

1 сен, 01:38 #128 #1055246

>>1055184
Откуда такие вакансии берутся? Даже грузчики больше получают ведь.
Неужели на них кто-то откликается?

Ответы5527055281

1 сен, 03:04 #129 #1055268

>>1054765
Есть диплом о вышке (МГУ), но гуманитарный. Такой сойдет?

sage 1 сен, 03:45 #130 #1055270

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

Ответы55285

1 сен, 04:18 #131 #1055274

>>1055184
На пике вброс. Не обращайте внимание.

Ответы55344

1 сен, 04:19 #132 #1055275

>>1055184
http://www.job.ru/it-telecom/8534295/

1 сен, 06:32 #133 #1055281

>>1055246
А почему грузчики должны меньше получать? Что там, что тут четырех высших не требуется.

Ответы5528755326

1 сен, 06:50 #134 #1055285

>>1055270
Директор Лидер-М, плиз.
Вакансия больше похожа на поиск дешевой рабочей силы незнающих нюфагов.

1 сен, 06:57 #135 #1055287

>>1055281
толстота

Ответы55302

1 сен, 08:20 #136 #1055293

Не знаю, куда написать, поэтому спрошу здесь: везде сказано, что html5 обратно совместима с html4, а как быть с теми тегами, которые поддерживаются в 4 версии и удалены в 5?

Ответы55295

1 сен, 08:28 #137 #1055295

>>1055293

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

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

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

Ответы55425

1 сен, 08:46 #138 #1055302

>>1055287
Где толстота? Им требуется племянник бухгалтерши который будет обновлять новости на сайте.

Ответы55303

1 сен, 08:48 #139 #1055303

>>1055302
Съеби зелень. Речь про грузчиков.

Ответы55325

1 сен, 09:12 #140 #1055325

>>1055303
Где у тебя речь про грузчиков?

Ответы55326

1 сен, 09:13 #141 #1055326

>>1055325
>>1055281

Ответы55328

1 сен, 09:14 #142 #1055328

>>1055326
С чего вдруг физический труд должен стоить копейки?

Ответы55330

1 сен, 09:15 #143 #1055330

>>1055328
С того, что иди нахуй зелёный пидор.

Ответы55332

1 сен, 09:17 #144 #1055332

>>1055330
Аргументно.

1 сен, 09:24 #145 #1055333

Хватит флудить

1 сен, 09:34 #146 #1055336

почему в CSS до сих пор нет нормальной системы позицирования элементов?

Ответы55340

1 сен, 09:36 #147 #1055340

>>1055336

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

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

Ответы55342

1 сен, 09:39 #148 #1055342

>>1055340
а что насчет flexbox?норм тема?

1 сен, 09:39 #149 #1055344

>>1055274
пфф
https://career.ru/vacancy/22394049?query=php

Ответы55353

1 сен, 09:46 #150 #1055353

>>1055344
Это в итоге вакансия для какого-нибудь студента с 4-6 часами занятости в день. В итоге на самом деле чему-то научишься и можно сказать что для чела без опыта будет неплохой старт.

Ответы55354

1 сен, 09:48 #151 #1055354

>>1055353
>Иметь опыт веб-разработок от 1-го года;
>Режим работы 5 дней в неделю с 09-00 до 18-00
Это точно не для студента

Ответы5535655364

1 сен, 09:50 #152 #1055356

>>1055354
Ребзя, предлагаю вам пройти в https://2ch.hk/pr/res/1055242.html#1055312 (М)
Ма вым перезвоним тред. Тут это как-то неуместно.

1 сен, 09:59 #153 #1055364

>>1055354
Давайте туда проще кто-то позвонит и спросит, рили ли эта вакансия подразумевает опыт работы в 2 года, все вышеперечисленные знания на высоком левеле и полный рабочий день при этом с зп в 15к? Или нужны поверхностные знания в требуемых системах и в итоге неполный день?

Ответы55407

1 сен, 11:21 #154 #1055407

>>1055364
https://vocaroo.com/i/s1tR3LHVKaJ7

Ответы554665564155643

1 сен, 11:35 #155 #1055419

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

Ответы5542855432

1 сен, 11:42 #156 #1055425

>>1055295
Тогда ещё вопрос, возможно, глупый - почему стандарты новых тегов вроде <article> определены 1999 годом (версией 4.01)?

Ответы55455

1 сен, 11:44 #157 #1055428

>>1055419
Что именно у тебя не получается?

1 сен, 11:49 #158 #1055432

>>1055419
Возьми и приведи в порядок мысли, у всех такое бывает, когда не можешь додуматься до продуктивного кода.
Почитай: https://geektimes.ru/post/292373/

Ответы5543355440

1 сен, 11:51 #159 #1055433

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

1 сен, 11:58 #160 #1055440

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

Ответы55445

1 сен, 12:03 #161 #1055445

>>1055440
но теперь встал вопрос,как функция вывода текста в скрипте action приймет этот текст с формы?

1 сен, 12:20 #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

1 сен, 12:45 #163 #1055466

>>1055407
>С ЛЕНДИНГАМИ МЫ И САМИ ЧАСТИЧНО СПРАВЛЯЕМСЯ
>ХУЯРЬТЕ БИТРИКС
>ОТ ВАС НАДО ПОРТФОЛИО

Ну хоть сказали что нагрузка 4-5 часов в неделю, это рили не напряжно. Хотя может быть рили пиздеж и будут наваливать на тебя всю хуйню которую остальным лень делать и будешь по 50 часов в неделю хуярить и еще и обучаться битриксу повыходным))) Пиздец как же всё плохо иногда :(

Ответы5550055644

sage 1 сен, 14:09 #164 #1055500

>>1055466
На работе надо работать, вот пиздец, да?

Ответы55575

1 сен, 15:48 #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." но не сказали как. Анонас помогай прошу!

Ответы55933

1 сен, 16:20 #166 #1055575

>>1055500
Когда на тебя вешают 10 сайтов, два из которых на битриксе, два на джумле, остальные на магенто, модх и прочей залупе. И ты должен копаться во ВСЕМ этом говне по 10 часов в день за 15к, то это немного выходит за рамки адекватности вообще. Твоя язвительность сосет хуй кароче.

1 сен, 18:00 #167 #1055641

>>1055407
обоже неужели кто-то тральнул? XDD

1 сен, 18:03 #168 #1055643

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

Ответы56038

1 сен, 18:06 #169 #1055644

>>1055466
>4-5 часов в неделю
4-5 часов в ДЕНЬ, мань, в уши не долбись. почти полный рабочий день.

Ответы55775

1 сен, 19:48 #170 #1055720

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

Ответы55730

1 сен, 20:03 #171 #1055730

>>1055720
Прорешай сначала "примитивные". Вот же:http://archive-ipq-co.narod.ru/

Ответы55743

1 сен, 20:13 #172 #1055743

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

Ответы55755

1 сен, 20:26 #173 #1055755

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

Ответы55759

1 сен, 20:28 #174 #1055759

>>1055755
Я то понимаю, некоторые из них решал несколько раз, переделывал иначе, на что фантазии хватило.

1 сен, 20:40 #175 #1055775

>>1055644
Ты тупенький? Ну очевидно же что опечатка. И между полным рабочим днем и 5 часовым кстати огромная блядь разница. Я проходил работу и по 4 и по 6 часов. 4х часовой рабочий день вообще не замечаешь в плане нагрузки. Тупо как сходить прогуляться до обеда или на курсы. в 2 свободен и в 3 дома - очень изи.
6 почти тоже самое. Ключевое тут что не нужен считай обед, можно поесть тупо до и после работы. А когда ты работаешь по 8, то внезапно уже оказывается что есть еще и час обеда, который якобы твой, но по факту бывает что и нихуя. В итоге 9 часов минимум на работе. Учитывая дорогу то бывает что между выходом из дома и возвращением уже и 11 часов проходит в худшем случае. А это с учетом сна означает что на всю оставшуюся жизнь включая ужины, завтраки, готовки, стирки, уборки и мытье посуды со своей тушкой у тебя остается 4 часа.

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

Ответы55795

1 сен, 20:51 #176 #1055795

>>1055775
ой да ладно огромная, я со всеми обедами и дорогой до работы от силы часов 6 работаю. А тут прям аж целых 5 часов за 15ку и незвестно еще сколько тебя грузить будут. обычно такие жадины грузят на 10часовой день и еще выходные.
я не понимаю, зачем ты их оправдываешь? таких уебков нужно гнать ссанной тряпкой с хх

1 сен, 23:31 #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 используешь, там наверняка опция есть.

1 сен, 23:31 #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 используешь, там наверняка опция есть.

Показать весь текст
Ответы5624856838

2 сен, 00:30 #178 #1055958

Вкатываюсь, к вам, после 3х лет хуипинания, надеюсь мозг окончательно не окостенел, из базы 2курса на примате, параллельно постараюсь изменить еще некоторые стороны своей жизни, но сейчас не об этом, больше всего боюсь потерять остатки мотивации и интереса к проге, наверное, поэтому и отписуюсь в треде. Планирую уделять по 5 часов, в день, пока позволяет нынешняя работа и надеюсь, при таком ритме, через полгода, смогу вползти джуном за еду или, хотя бы, на курсы для отсталых при норм конторах, алсо почти 24лвл. Спасибо, что прочитал этот поток сознания, подбодри или обоссы.

2 сен, 08:41 #179 #1056000

как работает глобалка $_SERVER?

Ответы56036

2 сен, 11:56 #180 #1056036

>>1056000

Тут ответа нет? http://php.net/manual/ru/reserved.variables.server.php

Ответы56058

2 сен, 12:04 #181 #1056038

>>1055643
>нужен даун
Блять с третьего раза проиграл чот.

2 сен, 12:39 #182 #1056055

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

Ответы56065

2 сен, 12:44 #183 #1056058

>>1056036
я не понимаю как это работает на практике

2 сен, 13:05 #184 #1056065

>>1056055
Зачем?!!! Чем микроконтроллеры не устроили, как вариант, или всякие контесты типа http://russianaicup.ru. Звучит, как: стал подметать улицы как хобби, денежного интереса нет, никуда не спешу.

Ответы56067

2 сен, 13:13 #185 #1056067

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

Ответы56070

2 сен, 13:17 #186 #1056070

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

Ответы56075

2 сен, 13:29 #187 #1056075

>>1056070

Ты зря по себе о других судишь. Алсо, не надо тут разводить флуд, для этого есть другие треды.

Ответы56080

2 сен, 13:29 #188 #1056076

Можно ли с помощью include вставить не только код php, но и html?

Ответы56109

2 сен, 13:33 #189 #1056080

>>1056075
>Начал оффтоп не по теме
>Начал флудить в ответку
>Не надо флудить тут
Хуя ты жирный.

мимокрок

Ответы56273

2 сен, 14:34 #190 #1056109

>>1056076

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

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

Соответственно если в подключаемом файле не ставить теги <?php, то его содержимое просто выведется как есть, что наверно тебе и нужно. Но для этой цели лучше использовать readfile, который просто выводит файл и не пытается ничего выполнять.

Ответы56138

2 сен, 15:26 #191 #1056135

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

[1] - http://php.net/manual/en/language.types.resource.php

Ответы56162

2 сен, 15:30 #192 #1056138

>>1056109
Спасибо, просто не могу понять один момент: вчера начал изучать на специалисте, задание было вырезать из блоков html и php код, вынес все в отдельные файлы, использовал include, получилось некорректное отображение сайта

Ответы56162

2 сен, 16:16 #193 #1056162

>>1056135

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

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

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

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

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

>>1056138

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

Ответы56316

2 сен, 16:20 #194 #1056163

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

Ответы56190

2 сен, 17:27 #195 #1056190

напомню, что в старом треде проверил задачи:

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

>>1056163

Добавить несколько букв наверно? Вообще, она на изучение функции strtr, если ты ее знаешь, можно не делать.

2 сен, 18:13 #196 #1056218

>>1050660
Годно.

2 сен, 18:54 #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

2 сен, 18:54 #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

Показать весь текст

2 сен, 18:55 #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

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

2 сен, 18:55 #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

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

Показать весь текст
Ответы56258

sage 2 сен, 18:57 #199 #1056250

>>1049651 (OP)
Пацаны, что правильнее всего делать со строками кода, которые нельзя покрыть тестами?
1. codeCoverageIgnore
2. Оставлять непокрытыми и тем самым уменьшать % коверейджа

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

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

Ответы562635626659878

2 сен, 19:06 #200 #1056258

>>1056248
>free psd templates
В блоге htmlacademy.ru в свободном доступе

Ответы57304

2 сен, 19:18 #201 #1056263

>>1056250

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

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

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

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

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

Ответы56370

2 сен, 19:22 #202 #1056266

>>1056250

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

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

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

2 сен, 19:48 #203 #1056273

>>1056080
Это другой кун ему отвечал.

2 сен, 23:14 #204 #1056316

>>1056162
> А как ты получишь дескрипто файла для файла в удаленном хранилище?
Через fopen('url', 'r'), а что не так? Мне только читать надо.

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

Ответы59878

sage 3 сен, 05:18 #205 #1056370

>>1056263
> А такое вообще часто бывает?
Это не важно. Вообще это крайне редкая ситуация, но рано или поздно она встретится.
> переписать код так, чтобы это было невозможно
Это как бэ невозможно

Ответы59878

3 сен, 14:40 #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 не выполняться. Что я делать не так?

Ответы56520

3 сен, 14:53 #207 #1056520

>>1056506
ой, я - еблан, session_start() проебал же

287 Кб, 911x760

3 сен, 17:11 #208 #1056622

>>1049651 (OP)

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

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

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

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

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

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

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

Пикрелейтед - тот самый говнокод
Гугление в т.ч. на пиндосском языке ни к чему не привело

Ответы5667056676

3 сен, 19:06 #209 #1056670

>>1056622
http://php.net/manual/ru/function.mb-convert-variables.php
Попробуй прогонять.

Ответы56695

3 сен, 19:10 #210 #1056676

>>1056622
https://stackoverflow.com/questions/12351776/character-encoding-issue-with-php-simple-html-dom-parser

Ответы56695

314 Кб, 1097x760

3 сен, 19:43 #211 #1056695

>>1056670
Уже пробовал, не помогло

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

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

Ответы5674656785

98 Кб, 1080x1080

3 сен, 20:29 #212 #1056725

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

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

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

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

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

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

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

Больше посоветоваться не с кем, вы моя единственная надежда.

Ответы56867

3 сен, 21:02 #213 #1056746

>>1056695
bump

3 сен, 21:43 #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 и это преобразование вообще ничего не меняет)

Ответы5684556856

3 сен, 22:40 #215 #1056823

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

Ответы58316

3 сен, 23:05 #216 #1056838

>>1055933
Огромное спасибо! Все получилось!

3 сен, 23:35 #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 могу?

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

3 сен, 23:35 #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 могу?

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

Показать весь текст
Ответы56903

159 Кб, 912x462

4 сен, 00:17 #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 не заносятся

Ответы56904

4 сен, 00:25 #219 #1056858

>>1049651 (OP)
Вкатываюсь, задачу на айфон не осилил, потому что еще со школки были проблемы с этими задачами экономическими, боюсь страшно подобных штук! С массивами попроще будет.

Ответы56869

4 сен, 01:21 #220 #1056867

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

4 сен, 01:38 #221 #1056869

>>1056858
Порешал задачи на массивы, есть вопрос.
>Создать переменную, поместить в нее пустой массив. На каждом шаге добавлять в массив новый слог. В конце склеить слоги в массиве в одну строку с помощью implode.
Зачем implode? $name .= $some склеивает без проблем или я что-то не так понял.
https://ideone.com/Zb4lgu

Ответы59877

4 сен, 01:42 #222 #1056871

Я наверное у мамки дурачек, но не понял почему задача про стихи находится в разделе стрингов, а не масивов и хотя решил ее не через них, твой метод уловил.
ideone.com/1E9PMW
А вот со следующей испытал знатный батхерт, потому, как мой скрипт всегда говорит, что это палендром, хотя, это не так. Пытался отловить баг, но без дебагера, так и не смог это сделать, хотя логику понял, может флажки работают не так, как в паскале или я просто хочу спать, буду благодарен, если кто-то найдет.
ideone.com/jsaDRp

Ответы5726559877

4 сен, 05:18 #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.

4 сен, 05:18 #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.

Показать весь текст

4 сен, 05:19 #224 #1056904

>>1056856

Также, выведи на экран свои SQL запросы до выполнения.

4 сен, 13:20 #225 #1056991

>>1056989
Как по мне, самопал всегда лучше, ибо он покрывает 100% запросов магазинчика, а стандартный только и может что предложить наборчик из витрины с корзиной. Ну и советовать тут особо нечего, OpenCart.

Ответы56994

4 сен, 13:39 #226 #1056994

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

Ответы57090

4 сен, 15:22 #227 #1057022

>>1049651 (OP)
Чето вообще не понял условие задачи на шифровку текста, что от меня требуется сделать?

Ответы57045

4 сен, 16:17 #228 #1057045

>>1057022

1) шифровать текст лучше, чтобы в нем явно не были видны куски исходного текста
2) сделать расшифровку зашифрованного текста

4 сен, 17:55 #229 #1057090

>>1056994
Вот http://yiipowered.com/ru/top-100
Выбирай по тэгу CMS что тебе ближе.
Думаю тебе проще найти CMS на Yii чем перепиливать всё на Symfony, хотя там свои плюсы.

4 сен, 21:25 #230 #1057184

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

Ответы59877

4 сен, 21:54 #231 #1057199

https://ideone.com/59nMpj
Я тупой, не знаю как решать. Вот так линейной и в тупую могу сделать, по другому не выходит.
Пробовал так:
foreach ($word1 as $key) {
$randomWord1 = array_rand($word1);
$sentense .= $word1[$randomWord1];
}
echo $sentense;

Короче я тупой и не одупляю вообще этих погромистических задач.

Ответы57265

5 сен, 00:29 #232 #1057265

>>1057199
А нет, я не тупой, подсмотрел решение анона выше, я так делал изначально только echo вызывал вне цикла и в этом заключалась вся трудность, пол дня думал над этой задачей, множество разных штук перепробовал, ну да ладно.
Вопрос анону >>1056871 зачем ты использовал array_flip?

Ответы64073

2,6 Мб, 2419x1157

5 сен, 06:52 #233 #1057302

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

Ответы5730757308

5 сен, 07:05 #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;
?>

Ответы5730757310

5 сен, 07:09 #235 #1057304

>>1056258
Есть получше, всякие авторы на Behance делают PSD бесплатные. Вот по ним можно верстать. Алсо верно про Скриншот сказал.

5 сен, 07:22 #236 #1057307

>>1057302
Погугли "минификация CSS"

>>1057303

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

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

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

Мануал http://php.net/manual/ru/outcontrol.configuration.php

Ответы5730957313

5 сен, 07:23 #237 #1057308

>>1057302
Вась, гугли обфускацию в целом и обфускацию/оптимизацию css для ускорения загрузки в частности.

Ответы57313

5 сен, 07:27 #238 #1057309

>>1057307
Спасибо анонче

5 сен, 07:30 #239 #1057310

>>1057303

Ссылку на урок про HTTP дать забыл: https://github.com/codedokode/pasta/blob/master/network/http.md

5 сен, 08:18 #240 #1057313

>>1057308
>>1057307
Ого какие тонкости. Не знал, спс.

Не Вася

Ответы57323

5 сен, 09:16 #241 #1057323

>>1057313
>Не Вася
Да сори, прост настроение было плохое с утра

Ответы57327

5 сен, 09:36 #242 #1057327

>>1057323
Оно бывает.

5 сен, 15:37 #243 #1057459

Как в yii2 проще всего реализовать отдачу либо JSON либо отрендеренной страницы в зависимости от параметров в реквесте и чтобы не лезть в каждый контроллер, может afteraction какой то или ивент?

Ответы59877

6 сен, 02:25 #244 #1057768

>>1049651 (OP)
Как учить пхп, если уже немного умеешь программировать, базовые принципы понимаешь, либо если php не первый твой язык? Книжки из ОП-поста или из прикрепленного поста в разделе? Или сразу по документации на php.net? Или php.ru/su? Или по оп-сайту? Как правильнее. быстрее, эффективнее, лучше?
А
>а также JS/CSS/HTML
В3школа? хтмлкнига.ру? КодеАкадемия? Мозилловский проект?
>SQL
Тут вообще пиздец какой-то, либо голые референсы, либо только самые основы, либо под какую-нибудь залупу (специфичную) типа МС или Постгре.

Ответы5777057776577785784059120

35 Кб, 512x317

6 сен, 02:28 #245 #1057770

>>1057768

Ответы59881

6 сен, 02:34 #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 и там есть какие-то ссылки и задачи для проверки знаний.

Ответы57793

6 сен, 02:35 #247 #1057778

>>1057768

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

Ответы57793

6 сен, 03:11 #248 #1057786

>>1049651 (OP)
Анон, как зациклить скрипт, допустим, какого-нибудь чат-бота для втентакля? Например, чтобы он запускался каждые 5-10 секунд %в кроне минимум — минута, к настройкам крона доступа нет%.

Ответы5778857789

178 Кб, 750x864

6 сен, 03:12 #249 #1057788

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

6 сен, 03:14 #250 #1057789

>>1057786

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

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

В современных ОС проще может быть ничего не ставить, а просто добавить твой скрипт как сервис в systemd.

Ответы57790

6 сен, 03:16 #251 #1057790

>>1057789
Выглядит неплохо. Спасибо.

6 сен, 03:37 #252 #1057793

>>1057776
>А ты попробуй разные варианты и сравни.
Эхехе, так я состарюсь, прежде чем решу, что лучше, а что хуже. Ну вот мозилловский проект, в3скулс, хтмлкнига - что из этого лучше и почему?
>Учебник из Оп-поста совсем для начинающих
После этого всего сразу переходить к пхпзерайтвей или идти зубрить документацию?
>>1057778
Я больше про такую хуйню, как функции, операции, создание представлений, триггеры (или как их там), про использование всего вот этого в SQL. Про нормализацию и внешние ключи знаю, да и базы пилил, но все взаимодействие с ними у меня ограничивалось простенькими обращениями, а ведь все можно делать эффективнее, не расходуя время на передачу данных...

Ответы5912059876

6 сен, 08:12 #253 #1057840

>>1057768
У мозиллы учебник не закончен.

6 сен, 21:36 #254 #1058316

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

Не проще взять Wordpress/Джумлу, найти и поставить какой-нибудь шаблончик для блога и наполнять его чем захочешь?
Просто с самого нуля сложновато будет такое делать, ты охуеешь, тем более если хочешь чтобы это всё было полноценно работающее, с RSS, комментариями и капчей к ним и т.д., и чтобы красиво выглядело при этом.
Я вот тоже загорелся идеей сайта куда буду писать свои статьи, и тоже ебал рот отдавать за это деньги и поэтому решил что возьму просто wordpress и всё, шаблончик красивый уже нашёл.

6 сен, 22:07 #255 #1058334

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

Ответы58370

6 сен, 22:55 #256 #1058370

>>1058334
Парсер, SPA, собственную биржу криптовалют, соцсеть, поисковик.

Ответы59876

400 Кб, 1220x760

7 сен, 12:31 #257 #1058530

Sup, /pr/

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

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

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

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

Ответы585525875559876

7 сен, 13:11 #258 #1058549

>>1049651 (OP)
Хз куда податься с этим вопросом. Нада запилить сайт-копию дугого сайта (интернет-магазина). Пиздить у них товары/названия/описание и вставлять в свой. Погуглил веб-скрапперы - нихуя удовлетворительного не нашел. Как массово пиздить контент с сайта и заливать на свой юзая csv или ексель? Не гоните ссаными тряпками, если не по теме.
мимо нихуя кроме сайтов-визиток не делал

Ответы58552

7 сен, 13:12 #259 #1058552

>>1058530
>>1058549
Бинго.

7 сен, 15:44 #260 #1058629

Кто-нибудь может объяснить простыми словами, что такое scrum?
Википедию читал, но "методология гибкой разработки ПО" мне ни о чем не говорит.
Как это выглядит на практике?
Я так понимаю, это просто повышенное внимание планированию и контроль над выполнением сроков. Ну то есть когда команда совещается, как выполнить определенную задачу и в какие сроки.

Ответы59876

7 сен, 16:35 #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

Ответы58734

7 сен, 17:06 #262 #1058661

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

Ответы58668

7 сен, 17:16 #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

Ответы58673588585891859875

7 сен, 17:17 #264 #1058673

>>1058668
По вступлению в книге поймешь в каком порядке учить. Но я упрощу задачу:
CSS3: Visual QuickStart Guide - 1
Stunning CSS3 - 2
HTML Up and running - 1
Introducing HTML5 (Voices That Matter) - 2 (Книжка кстати винрарная)

7 сен, 18:59 #265 #1058734

>>1058648

Скорее всего у тебя синтаксическая ошибка в файле с классом.

Ответы58781

7 сен, 19:29 #266 #1058755

>>1058530
http://simplehtmldom.sourceforge.net тебе в помощь.

Ответы58764

7 сен, 19:45 #267 #1058764

>>1058755
Еще раз - здесь все работает, как раз с использованием данной библиотеки
Но я постоянно вижу и слышу разговоры о важности красоты кода, при этом я плохо понимаю, в чем конкретно она заключается
И на примере данного кода я хотел, чтобы аноны пояснили, как все грамотно структурировать

Ответы59876

someApprentice 7 сен, 20:10 #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 7 сен, 20:10 #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.

Показать весь текст
Ответы5922859875

7 сен, 20:24 #269 #1058781

>>1058734
Ошибка была в бэкслеше в неймспейсе класса.
Теперь возникла следующая проблема. ПХП ищет класс пдо в моем Неймспейсе.

Ответы58790

7 сен, 20:47 #270 #1058790

>>1058781
Ставь корневой неймспейс при создании пдо.
$dbh = new \PDO(...

Ответы58793

7 сен, 20:51 #271 #1058793

>>1058790
Спасибо

8 сен, 00:12 #272 #1058858

>>1058668
Эх, вот бы на русском эти книги.

Ответы58908

8 сен, 03:33 #273 #1058908

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

8 сен, 07:23 #274 #1058918

>>1058668
>htmlacademy
>Бросай это дело, бро, пожалеешь.
А что не так с htmlacademy?

Ответы58994

8 сен, 12:30 #275 #1058989

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

Ответы5899159246

8 сен, 12:33 #276 #1058991

>>1058989
Так не выйдет, либо ты идешь пошагово, от написания маленьких скриптов постепенно переходя в создание одностраничных сайтов, постепенно усложняя и изучая MVC, либо ты открываешь гайд по какому-то фреймворку и сидишь прокрастинируешь 100% времени и занимаешься самокопанием, потому что ничего не поймешь.

Ответы5899258993

8 сен, 12:41 #277 #1058992

>>1058991
Запал пропадает, под конец пердолиния пхп меня уже заебало и усваивал язык я через силу. Хтмл был как глоток свежего воздуха: все эти кнопочки, черточки, таблички, все наглядно и вообще красотища.
Хочется красотище динамики придать, для понимания. Не всё же сраные таблички костылями на пхп ебать, которые к тому же по разному отображаются в сосноле и в браузере

Ответы58996

8 сен, 12:44 #278 #1058993

>>1058991
Как некоторые анонычи из /веб нихуя не знают и умудряются делать говносайты?

Ответы58997

8 сен, 12:45 #279 #1058994

>>1058918
там самые базовые вещи
>верстку учат на полевых условиях
вот это правильно тебе написали

Ответы5900959875

8 сен, 12:46 #280 #1058996

>>1058992
так вкатись во фронтэнд

Ответы59000

8 сен, 12:48 #281 #1058997

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

Ответы59000

8 сен, 12:49 #282 #1059000

>>1058996
Верстальщиком чтоли? я во всем этом пока не разбираюсь
>>1058997
Такая хуйня мне не подходит
Нужно отвлечься просто, наверное

Ответы59005

8 сен, 12:51 #283 #1059002

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

Ответы5902459875

8 сен, 12:55 #284 #1059005

>>1059000
почитай чем занимается фронтэнд-разраб

8 сен, 13:00 #285 #1059009

>>1058994
Я другой анон.
И там как раз их курс основан на практике. Прошёл их курс, потом уже читал Пилигрима. Могу сказать, что они друг друга очень хорошо дополнили.

Ответы5901159012

8 сен, 13:03 #286 #1059011

>>1059009
спутал с codecademy
да и не изучал особо html
что нужно было на практике, то и разбирал
больше программирование и бэкэнд интересует

Ответы59019

8 сен, 13:05 #287 #1059012

>>1059009
Увы, но Codeacademy тоже не очень полезный опыт, конечно там можно черпнуть базу, но с учебником это не сравнится.

Ответы59019

8 сен, 13:14 #288 #1059015

Поясните за эту книгу?

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

Ответы59020

8 сен, 13:26 #289 #1059019

>>1059011
>>1059012
Codeacademy я тоже проходил.
> с учебником это не сравнится.
В том и дело, что нужно совмещать.

8 сен, 13:30 #290 #1059020

>>1059015
Все
>Бестселлеры O'Reilly
годные

Ответы5902159029

8 сен, 13:30 #291 #1059021

>>1059020
Просто там MySQL, а в мурзилках ОПа говорят что она устарела и использовать нужно PDO

Ответы5902659028

8 сен, 13:34 #292 #1059024

>>1059002
Что это? Почитай, для чего нужен php.

8 сен, 13:35 #293 #1059026

>>1059021
Выучи SQL в общем, а потом уже выберешь СУБД.

Ответы59029

8 сен, 13:42 #294 #1059028

>>1059021

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

http://php.net/manual/ru/function.mysql-query.php

Ответы59029

8 сен, 13:44 #295 #1059029

>>1059026
>>1059028
>>1059020
Понял, спасибо. Сел за учебник

28 Кб, 700x541

8 сен, 15:35 #296 #1059074

>>1049651 (OP)
Доброго времени суток. Пишет тебе хуй, учащийся на первом курсе информационных систем, который до этого проебал три года на информатике и вычислительной технике, но был отчислен из-за того, что устроился на работу не по специальности, чтобы было что пожрат. Это для того, чтобы вы понимали, что матан я знаю, опыт программирования (Qt'шные курсачи, немного Java, в основном лабы) имею, но лишь в рамках студпрограммы.
Вообще я в своей жизни хотел быть системщиком, т.е. писать ядро линя, прошивки ковырять под конкретные микроконтроллеры, асм знаю, правда диззасемблировал лишь две программы за всю свою жизнь, и в целом - в веб меня не тянуло. Ибо слишком абстрактно, отдаленно от железа, хотя и дает потенциал для творчества. Ну да похуй, не в этом суть. В определенный момент я понял, что работать надо по специальности, хоть за еду, ибо опыта программирования я хуй наберусь на подработках, и посмотрел на стак, который требуется работодателям (без опыта, офк) в моей специальности - везде 1с и сраный битрикс, кроме двух компаний, куда требуется php jQuery AJAX джун, и понял, что нужно идти туда.
В связи с этим нужно в кратчайшие сроки выучить php + js на достаточном уровне, чтобы взяли на работу, на зп похуй, главное начать уже работать. Вот так я и пришел к вам, сейчас усиленно читаю материал по ссылкам, надеюсь все будет хорошо. Спасибо опу за сбор материала и поддержку начинающих, добра тебе.

Ответы5931959873

62 Кб, 522x604

8 сен, 15:57 #297 #1059082

>>1049651 (OP)
Блядь, ребят, решил вкатываться в кодинг, сейчас пытаюсь осилить html и css. Всё как-то туго идёт. Нихуя не интересно в этом разбираться. Насколько мне будут в изучении и в работе на php знания от верстки?
На каком уровне я должен эту ебучую верстку понимать? Когда понять, что хватит?

Ответы59085591025910459152593475987259873

8 сен, 16:08 #298 #1059085

>>1059082
Изучи jQuery, модель DOM (из чего состоит страница) и AJAX (динамическое обновление страницы). Напиши на HTML5 какую-нибудь простенькую игрушку, типа змейки, тетриса или пятнашек.

Ответы59346

8 сен, 17:32 #299 #1059102

>>1059082
1. Нельзя так просто взять и решить. Тебе точно нравится кодить?
2. Вёрстка и правда скукота, но знать желательно. Но странно. При первом изучении должно быть забавно, что ты можешь всякую хуйню лепить. Например, выводить то, что там php посылает.

Ответы59246

8 сен, 17:36 #300 #1059104

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

Ответы59152

8 сен, 18:19 #301 #1059120

>>1057793
>>1057768
Типа бамп.

Ответы59266

8 сен, 19:11 #302 #1059152

>>1059104
Ну бля, я вот роботов мечтаю писать, но я тупенький, с матаном для инжиниринга тоже по разному, скорее всего не осилю и времени выяснить это у меня нет. Светлое время вузов проебано. А пыха норм идет и даст возможность заработать свой кусок хлеба даже в мухосранске, не смотря на то что процесс верстки совсем не доставляет. Хули делать? Следовать мечтам?
Я не он >>1059082

Ответы5915359873

8 сен, 19:16 #303 #1059153

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

Ответы59155

8 сен, 19:19 #304 #1059155

>>1059153
Я наткнулся на статейку в хабре и там все охуенно пояснили. Питон - для отцов с опытом. Джунов на питоне не бывает. Но вообще - да, я на питон тоже смотрел.
Хотя один хуй я великовозрастный довен и место мне, наверное, только на заводе.

Ответы591575917559873

8 сен, 19:22 #305 #1059157

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

8 сен, 19:55 #306 #1059175

>>1059155
>Питон - для отцов с опытом. Джунов на питоне не бывает.
Охвоу
В мите сразу на питоне учат, в гарварде сразу после С и срача

8 сен, 19:58 #307 #1059177

Хочу вкатиться в веб, с чего начать? Знаю HTML5, а остальное (a Js+CSS) поверхам. Хочу добиться уровня работоспособности на фрилансе.

Ответы5923059872

8 сен, 21:10 #308 #1059197

Двач, а будет ли быстрее, если я запихну мой большой json-файл в PostgreSQL и буду делать выборку вместо того, чтобы проходиться циклом по нему и сравнивать каждое значение? А то что-то file_get_contents + json_decode двух ~10-мегабайтных .json-файликов происходит 2-3 секунды.

Ответы5960859867

8 сен, 21:58 #309 #1059218

Вторая задачка с кубиками. Сойдёт?
https://ideone.com/TQox0K

Ответы5923959872

8 сен, 22:21 #310 #1059228

>>1058775
Господи, открой для себя oauth2 и не изобретай кривой велосипед.

Ответы59351

8 сен, 22:28 #311 #1059230

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

Ответы59344

8 сен, 22:46 #312 #1059239

>>1059218
if ($anonSum > $compSum) {
echo "Анон победил!";
}

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

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

8 сен, 22:55 #313 #1059246

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

8 сен, 23:15 #314 #1059266

>>1059120
Анончики, ну же.

Ответы59872

9 сен, 01:57 #315 #1059319

>>1059074
И сразу же вопрос по регуляркам. Разбиение текста по предложениям. Дело в том, что точкой обозначаются не только конец предложения, но так же и сокращения типа "Dr. Dre", "И т.д.", соответсвенно программа, построенная на подсчете точек, восклицательных знаков и вопросов будет работать некоректно. (Да и восклицания могут означать эмоциональный оттенок, или имена собственные, врожде Yahoo!).
Как сделать корректно?

Ответы5937059872

9 сен, 05:06 #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 списка номеров (правильные и нет), добавь их в программу и напиши цикл, который их по очереди прогоняет через регулярку и проверяет, что они определяются как надо (если нет — надо вывести, какой именно номер не распознается правильно).

Ответы593705949359869

9 сен, 06:02 #317 #1059344

>>1059230
Как специалистом то стать?

9 сен, 06:16 #318 #1059346

>>1059085
Не знаешь, чем AJAX отличается от прагма-директив?

9 сен, 06:20 #319 #1059347

>>1059082
Я например, чтобы хотя бы к ПхП приступить параллельно изучаю Си, а там еще более сложнее. И верстку постепенно улучшаю и на стороне беру курсы по дизайну страниц. Но HTML и CSS я изучаю до сих пор, делая главное задание по верстке от ОПа. И мне интересно, это самое важное, интерес.

нубсишник

Ответы59493

someApprentice 9 сен, 07:08 #320 #1059351

>>1059228
И как мне получение токена поможет передать пароль в gpg процесс? Ты думал, что у меня не получается просто аутентифицировать пользователя?

9 сен, 09:42 #321 #1059370

>>1059319
>>1059339
Как же меня эта дичь заебала в свое время. Наслаждайся

Ответы59493

9 сен, 18:04 #322 #1059479

Правильно ли делаю, что перед PHP начал изучать HTML и CSS
т.е. PHP еще не изучаю?

Ответы59533

9 сен, 18:59 #323 #1059492

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

Ответы59533

9 сен, 19:04 #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)---", что, видимо по мнению опа, норм запись. Как сделать регулярку короче, но при этом чтобы она учитывала вот такой треш - я не знаю.

Ответы59494594955986860084

9 сен, 19:05 #325 #1059494

>>1059493
>для россии можно заменить на 9 или +7
На 8 или +7, офк.

9 сен, 19:09 #326 #1059495

>>1059493
Блджад, я тут недавно, подобосрался с разметкой.
Смысл в том, что всего в регулярке десять блоков, вида [0-9][-()]*, где сначала должа встретиться одна из цифр [0-9], затем любое число раз или ни разу символ, выбранный из [-()], причем там важно добавить после квадратной скобки квантификатор - звездочку, который как раз и сьела разметка, превратив некоторые строки в курсив.

Ответы59868

9 сен, 19:31 #327 #1059504

Чому не считает?((
https://ideone.com/lZKDS1

Ответы5952259868

9 сен, 20:02 #328 #1059522

>>1059504
У тебя неправильно использован оператор присваивания "=", у него та преременная, куда мы записываем значения, записывается слева, а что мы записываем - справа.
Вот правильный вариант: https://ideone.com/Y0qobq

Ответы59528

9 сен, 20:11 #329 #1059523

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

Ответы5952959583

9 сен, 20:24 #330 #1059528

>>1059522
Спасибо.
Сложно. Пожалуй, программирование не моё, я слишком даун, пойду дальше просто скроллить двач

9 сен, 20:27 #331 #1059529

>>1059523
C 5.0 по текущую. В оф доках текщей версии почти для всех фич указывается номер версии, в которой они появились.

9 сен, 20:34 #332 #1059533

>>1059479
Всё верно.
>>1059492
> Какую версию учить? 5ую или 7ую?
7ую.

9 сен, 22:28 #333 #1059583

>>1059523
>Какую версию учить?
Любую, перейти с 5.3 на 7.0 - дело 15мин чтения мануала с изменениями..
Из наиболее глобального mysql_query - выпилили к хуям.

Ответы59868

9 сен, 22:37 #334 #1059587

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

Ответы5960459868

9 сен, 22:59 #335 #1059604

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

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

Ответы596085960959720

9 сен, 23:08 #336 #1059608

>>1059604
>конкретные задачи которые PHP тупо не тянет
Как, например, у меня >>1059197, где json_decode происходит 1,5-2 секунды.

Ответы59867

9 сен, 23:12 #337 #1059609

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

Ответы59867

9 сен, 23:14 #338 #1059612

Что я не так сделал?
https://ideone.com/DD3zlJ

Ответы59616

9 сен, 23:17 #339 #1059616

>>1059612
https://ideone.com/Q6GDF2

Так ближе к истине, но, опять таки, неверно.

Ответы5961759867

9 сен, 23:18 #340 #1059617

>>1059616
https://ideone.com/Q6GDF2

10 сен, 06:35 #341 #1059693

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

https://3v4l.org/LdYmZ

Ответы59867

10 сен, 09:54 #342 #1059720

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

Ответы59808

10 сен, 14:17 #343 #1059808

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

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

10 сен, 16:42 #344 #1059867

>>1059693

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

>>1059616

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

>>1059609

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

>>1059197

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

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

>>1059608

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

10 сен, 16:42 #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)---", что, видимо по мнению опа, норм запись
А ты попробуй сформулировать правила, отличающие "правильный" номер от неправильного. Я просто поймал себя на мысли, что нужно где-то остановиться и выгоднее сделать простую регулярку. Наша цель - ловить опечатки, а не каких-то пользователей-злодеев, решивших заполнить ншу базу данных минусами.

10 сен, 16:42 #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)---", что, видимо по мнению опа, норм запись
А ты попробуй сформулировать правила, отличающие "правильный" номер от неправильного. Я просто поймал себя на мысли, что нужно где-то остановиться и выгоднее сделать простую регулярку. Наша цель - ловить опечатки, а не каких-то пользователей-злодеев, решивших заполнить ншу базу данных минусами.

Показать весь текст
Ответы5988260084

10 сен, 16:45 #346 #1059869

>>1059339

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

> [7-8+\\s]
Это значит "ровно один любой из символов: 7, минус, 8, плюс, или пробел"

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

> [0-9-\\s\\(\\)]{10}
Это значит ровно 10 символов, но не обязательно 10 цифр, а например 6 цифр и 4 других символа.

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

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

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

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

Ответы59882

10 сен, 16:50 #347 #1059872

>>1059319

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

>>1059266

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

>>1059082

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

>>1059218

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

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

>>1059177

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

Ответы5988260084

10 сен, 16:50 #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, позволяющие выполнять код на ассемблере из браузера.

Я думаю, в вебе немало интересного.

10 сен, 16:50 #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, позволяющие выполнять код на ассемблере из браузера.

Я думаю, в вебе немало интересного.

Показать весь текст
Ответы59882

10 сен, 16:51 #349 #1059875

>>1059002

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

>>1058668

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

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

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

>>1058994

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

>>1058775

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

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

> function login() {
> $password = $_GET['password'];
Так точно делать не надо, лезть в глобальные переменные и создавать побочные эффекты. Пароль можно и явно через аргументы передать.

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

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

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

10 сен, 16:51 #349 #1059875

>>1059002

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

>>1058668

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

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

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

>>1058994

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

>>1058775

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

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

> function login() {
> $password = $_GET['password'];
Так точно делать не надо, лезть в глобальные переменные и создавать побочные эффекты. Пароль можно и явно через аргументы передать.

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

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

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

Показать весь текст
Ответы59882

10 сен, 16:51 #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.

10 сен, 16:51 #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.

Показать весь текст
Ответы59882

10 сен, 16:52 #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

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

10 сен, 16:52 #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

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

Показать весь текст
Ответы59882

10 сен, 16:52 #352 #1059878

>>1056250
>>1056370

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

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

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

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

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

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

>>1056316

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

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

10 сен, 16:52 #352 #1059878

>>1056250
>>1056370

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

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

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

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

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

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

>>1056316

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

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

Показать весь текст
Ответы59882

10 сен, 16:52 #353 #1059881

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

10 сен, 16:55 #354 #1059882

>>1059878
>>1059877
>>1059876
>>1059875
>>1059873
>>1059872
>>1059869
>>1059868
Ты бог?

Ответы59886

10 сен, 16:58 #355 #1059886

>>1059882

Я набираю текст в редакторе и потом пощу, так как в браузере это делать неудобно и легко потерять, нажав Ctrl + R вместо Ctrl + T. Ну и эта борда при наборе больших объемов текста начинает тормозить.

1 Кб, 165x29

10 сен, 17:28 #356 #1059909

Что ето? Для чего используется в целом? Почему не просто кавычки, почему точки?

Ответы5995259963

512x512

10 сен, 18:21 #357 #1059939

Сап пыхепач, если начну сейчас дрочить php с нуля, то примерно через сколько смогу в простой онлайн-магазин? думаю взять дипломную на эту темус html и css хорошо знаком

Ответы599586001960028

10 сен, 18:45 #358 #1059952

>>1059909
потому что ты соединяешь строки

"строка ". _переменная ."конец строки";
Это не всегда удобно.
Точка работает в качестве соединителя всех строк в одну

Ответы59954

10 сен, 18:49 #359 #1059954

>>1059952
Хмммммммм, я более-менее понял, спасибо.

10 сен, 18:53 #360 #1059958

>>1059939
Дипломная в ПТУ?

Ответы59959

10 сен, 18:55 #361 #1059959

>>1059958
не пту, а колледж!!1

Ответы59962

10 сен, 19:20 #362 #1059962

>>1059959
Прикинь, в советское время даже к диплому пту предъявлялось требование, чтобы он содержал элементы исследовательской работы. Вот дураки были!

10 сен, 19:24 #363 #1059963

>>1059909
Конкатенация.

10 сен, 21:37 #364 #1060019

>>1059939
В интернете куча шаблонов магазинов.

10 сен, 22:06 #365 #1060028

>>1059939
>- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
Если хочешь понимать каждую деталь кода.
Ну а если тупо копипастить, то гораздо быстрее.

11 сен, 00:09 #366 #1060056

327 Кб, 1920x1080

355 Кб, 1920x1080

Зандстра за 3 месяца не сдвинулся с мертвой точки. Поэтому на выходных запили скромный скрипт ради зеленых квадратиков.

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

Вопросов нет, просто отметился.

Ответы6006763150

11 сен, 01:07 #367 #1060063

Вот завтра точно врываюсь в php

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

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

Алсо, почему нет конфочки в тг?

Ответы60070

11 сен, 01:30 #368 #1060066

https://ideone.com/Ek7ACC

Теперь задача на айфон верна?

Ответы6006865225

11 сен, 01:34 #369 #1060067

>>1060056
Гриша, а я по тебе уже соскучился!

11 сен, 01:34 #370 #1060068

>>1060066
Становится
Самофикс

11 сен, 01:42 #371 #1060070

>>1060063
Потому что конфочки для недосоциовыблядков.

Ответы60071

11 сен, 01:45 #372 #1060071

>>1060070
https://t.me/PHP_club
Не, мы там все хикканы, чего ты.

Ответы600796027460353

11 сен, 02:20 #373 #1060079

>>1060071
>Голые чешки
>Йобаватарки
Удачи сгнить заживо.

Ответы60080

122 Кб, 507x381

11 сен, 02:21 #374 #1060080

>>1060079
>зашли 2 ньюфага
>Запостили всякой фигни
>чот конфа не нравится
Поделил на ноль.

Ответы60081

11 сен, 02:27 #375 #1060081

>>1060080
>2 Ньюфага
>На ноль
На два поделил

11 сен, 03:05 #376 #1060084

>>1059868
>Нужно использовать квантификатор, задающий 10 повторений.
Ну т.е. /([0-9][-()]*){10}/, правильно? Хм, а ведь элегантно же.

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

>А ты попробуй сформулировать правила, отличающие "правильный" номер от неправильного.
В том-то и дело, что я не знаю, какой номер правильный, а какой - нет. Я таким образом и намекаю на то, что мне тз не ясен. Хотя, почитав условие задачи, становится очевидно, что любой номер, который возможно адекватно прочитать - правильный. Но тогда я бы просто вырезал из строки все цифры, и затем смотрел бы, являются они номером, или нет - а есть там приписка про Люду, иль нет... При этом регулярка да, оказалась гораздо компактнее и симпатичнее.

>>1059872
>Ответил тут
Я так и понял, >>1059493
За ссылки спасибо, позже почитаю.

Ответы60331

11 сен, 14:52 #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

Ответы60265

11 сен, 14:54 #378 #1060265

>>1060262
hexlet.io
/thread

sage 11 сен, 15:07 #379 #1060274

>>1060071
ОП одобрил?

11 сен, 16:58 #380 #1060331

>>1060084
Регулярка пропускает через себя номера большей, чем нужно длины. Как это исправить? В примере - восьмой номер, он должен был быть отфильтрован.
https://ideone.com/dkTZYO

Ответы6033968357

11 сен, 17:29 #381 #1060339

>>1060331
А, собственно, можно же после группы символов с квантификатором {11} просто добавить еще одну группу символов [-()/s]*, и тогда должно норм работать.

11 сен, 18:12 #382 #1060353

>>1060071
>PHP_club
Говно без задач, реклама платных курсов, школие.

11 сен, 19:05 #383 #1060384

Ребят, какой файл в apache2 нужно редактировать для того чтобы другие пользователи из интернета могли смотреть мой test/www/?

Ответы6038660395

11 сен, 19:06 #384 #1060386

>>1060384
ОС debian

11 сен, 19:22 #385 #1060395

>>1060384

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

Ответы60399

11 сен, 19:27 #386 #1060399

>>1060395
Вроде белый если верить https://192-168-1-1.ru/ip-address-classify/, динамический.
Домашний компьютер.

Ответы6041860421

11 сен, 19:54 #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.

11 сен, 19:55 #388 #1060421

>>1060399

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

11 сен, 20:16 #389 #1060434

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

Ответы60482

11 сен, 23:04 #390 #1060482

>>1060434
в оп-посте все написано. листай вверх

Ответы60888

12 сен, 04:50 #391 #1060562

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

Ответы605646056560569

12 сен, 05:35 #392 #1060564

>>1060562
Нюфаня ничего не знает, должен знать
Студент писать паскаль, студента не учить ничему
Стажор не знать, знать стажер
Джун знать основа, точно говоря CSS, HTML, JS маленький
Мидл не знать
Тимлид не обязательно знать, но уметь управлять
Синьор знать все в своем CSS, HTML, JS, PHP знать сделать форум и хост

sage 12 сен, 06:03 #393 #1060565

>>1060562
Я все понимаю, но зачем?

Ответы60566

12 сен, 06:26 #394 #1060566

>>1060565
Чтобы знать свой уровень и расчитывать что изучить для развития например.

Ответы60568

12 сен, 06:37 #395 #1060568

>>1060566
Для знать уровень нужен работа

12 сен, 06:48 #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 сертификат. дальше пока не придумал.
Тимлид
Синьор

Ответы60570

12 сен, 06:53 #397 #1060570

>>1060569
Это можно уместить в
Джуниор
Сеньор

98 Кб, 557x316

12 сен, 15:09 #398 #1060785

Насколько всякие SEO/SMM/LSI-копирайтинг и верстка относится к этим вашим web-IT? Какое у этого будущее?
В целом какие перспективы ожидают web и цифровую коммерцию?
Как долго ещё для того, чтобы вкатиться в web будет достаточно такого низкого входного порога уровня "веб-макака"?

Ответы608916115161229

12 сен, 17:31 #399 #1060888

>>1060482
> Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP, этого недостаточно. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL
Где? Как?

Ответы6205365698

12 сен, 17:36 #400 #1060891

>>1060785
Ты реферат пишешь?

Ответы60892

12 сен, 17:38 #401 #1060892

>>1060891
Пытаюсь для себя обозначить перспективы

Ответы60894

12 сен, 17:40 #402 #1060894

>>1060892
Я тоже соломку хочу постелть, да не знаю куда...

13 сен, 02:25 #403 #1061151

>>1060785
>Как долго ещё для того, чтобы вкатиться в web будет достаточно такого низкого входного порога уровня "веб-макака"?
5 лет назад. Уже всякие JS дауны считают себя прогроммистами. Ходя взять 2007 года, JS, HTML, CSS - знал вообще любой школьник у которого бл компьютер.

Ответы61267

13 сен, 11:07 #404 #1061229

>>1060785
>Как долго ещё для того, чтобы вкатиться в web будет достаточно такого низкого входного порога уровня "веб-макака"
Лол. Для того, что бы вкатиться ранга "веб-макака" недостаточно уже сейчас.

13 сен, 13:00 #405 #1061267

>>1061151
>Ходя взять 2007 года Уже всякие PHP дауны считают себя прогроммистами.

Пофиксил на полном серьезе.

13 сен, 20:56 #406 #1061501

Куда в TDG поместить общие для всех таблиц методы: eraseEntry(), addEntry(), getDataInRange() и т.п. Копипастить в каждый класс? Или сделать один класс с этими методами и передавать в каждый метод название таблицы? Помимо этих есть много специфических методов для каждой конкретной таблицы.

Ответы68357

13 сен, 21:13 #407 #1061513

>>1049651 (OP)
сап, может кто шарит помогите!
короч есть сервак win server 2012r2 подняты iis+php+mysql как создать сайт локальный для изучения сайтостроения и прогать прям видя результат

21 Кб, 400x324

13 сен, 21:27 #408 #1061523

Ребят, уже спрашивал вроде, но чёт мне не ответили.
Собираюсь брать ноутбук, чтобы учиться кодить на основной работе. Бюджет как всегда ограничен, само собой. Поэтому, нужно взять максимально недорого, но не в ущерб производительности. То есть, нужен ноутбук, за которым я смогу комфортно работать в верстке и в php.
Напишите, пожалуйста, минимальные характеристики.
Заранее спасибо, ребят.

Ответы615256161761693

13 сен, 21:29 #409 #1061525

>>1061523
любой

Ответы61543

13 сен, 21:49 #410 #1061543

>>1061525
Шутки шутишь?
В гугле пишут что 8 гб оперативы миниму и так далее.
А я вообще не могу понять, нахуй она там нужна, если ты верстаешь сайты и кодишь в php

Ответы61546

13 сен, 21:52 #411 #1061546

>>1061543
Сначала кодить начни, а потом решайся.

Ответы61556

13 сен, 21:57 #412 #1061556

>>1061546
Блядь, вот я спросил конкретный вопрос про ноут. Нечего сказать - не засоряй тред.

Ответы61606

13 сен, 22:20 #413 #1061577

В /web совсем тишина, спрошу здесь.

Как парсить не валидный html? PHP Simple HTML DOM Parser не переваривает кривой html.
К примеру <img alt="Заглушка 1" VALTEC угловая уп.532/16шт." src="img.jpg">

Дюймы 1" обозначены кавычкой, получается alt="Заглушка 1" всё остальное не понятно к чему относится. Браузеры такое переваривает, а Simple ломается при попытке вытянуть src. Может есть какой валидатор, который фиксит такую херню.

Ответы61595

13 сен, 22:50 #414 #1061595

11 Кб, 559x89

14 Кб, 504x72

12 Кб, 521x69

>>1061577
У меня были похожие случаи, когда пытался парсить старые треды с этой борды (примеры на пике). Использовал symfony/dom-crawler, работает отлично.
Это тонкая надстройка над расширением DOM в PHP, предоставляет более лаконичный API, чем нативное расширение. Для составления запросов можно взять symfony/css-selector (не вижу смысла использовать XPath без специфичных нужд).

Советую вообще дропать PHP Simple DOM, это древняя библиотека в исходниках которой чёрт ногу сломит, работает на регулярках, не умеет бросать ошибки, старьё в общем.

Ответы61991

13 сен, 23:07 #415 #1061606

>>1061556
Я на ведре с болтами работаю, мне норм.

Ответы61617

13 сен, 23:27 #416 #1061617

>>1061523
Ща я тебе раскидаю
Есть три основных подводных камня:
Планшеты - притворяющиеся ноутами. Очень слабый проц + мелкий экран + мелкий ссд ни понятного качества. Это шлак. Не бери никогда.
Просто очень слабый проц. Все будет медленно и со скрипом. phpstorm и ему подобные будут год открываться и страдать на больших проектах.
Медленный винт. Винт 10гб ссд + 500гб 5400 оборотов тоже медленный. Тут все понятно. Все будет медленно.

Итак тебе нужно стремиться:
Оперативки 4-6+ для Линукса (почти наверняка нужно будет накатывать пакет для регулировки вентилятора), 8+ для Вин10 (другие винды не нужны, 10-ка лучше расходует батарею и крутит охлаждение, но жрет время винта и процессора своими постоянными копошениями, что можно вырубить сторонними тулзами).
Либо предустановленный ссд (что дорого) либо возможность его туда впереть. Впирается или вместо сидюка если он есть (есть специальные переходники, как правило с алиэкспессов за 7-30 уе) или вместо оригинального винта. В первом случае я бы целился в 128 гб ссд во втором хотелось бы 250+ но и 120+ тоже пойдет. Т.е. нужно при выборе модели гуглить кто и как туда вставил ссд.
Разъем для подрубания монитора + пачка юсб для мышей и клавиатур, если есть куда воткнуться на работе.
Я бы прикидывал так:
Ноут с максимально жирным процессором и 8 гб оперативы за бюджет - ~$120. И $120 на оССДение.
Не стесняйся спрашивать про конкретные модели

>>1061606
Этот вообще прав. Линукс + ЛАМП + сублаймтекст работают практически на чем угодно.

Ответы61618

13 сен, 23:30 #417 #1061618

>>1061617
>Не стесняйся спрашивать про конкретные модели
в ноутбуко-треде в /hw/. Там конечно унизят, но советов дадут. Не будем дальше разводить оффтоп.

14 сен, 01:25 #418 #1061652

Рулетка имён верна?
https://ideone.com/6k4j73

Ответы61654

14 сен, 01:29 #419 #1061654

>>1061652
$rand = rand(0,16);
сразу фейл, откуда ты знаешь сколько у тебя в массиве слогов?

>ШахиНелШахиЗулЗел
Что за КамелКейсИмя такое, сделай что бы генерило Шахинелшахизулзел

Ответы6166961808

14 сен, 03:16 #420 #1061666

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

Проект: складской учет.
Сейчас лист такой:
-Закупки
-Продажи
-товары (кол-во на складе, цена отпуска и закупки)

Вопрос вот в чем: Мне это делать в MySql? Или нет? Может есть какието нароботки по этому поводу? что стоит посмотреть в исходниках?

Спасибо

Ответы6175761825

14 сен, 03:20 #421 #1061669

>>1061654
>сразу фейл, откуда ты знаешь сколько у тебя в массиве слогов?
Как откуда? Посчитал.

Ответы6168561687

14 сен, 05:15 #422 #1061685

>>1061669
Ответ из базы данных тоже в ручную будешь считать? Или на юзера возложишь мб?

Ответы61798

14 сен, 05:18 #423 #1061687

>>1061669
https://ideone.com/UF5yJb
на удаленном сервере изменился словарь. Что будешь делать? Каждый день будешь бегать слова пересчитывать? Найс собачка, а не программист растет, сразу видно.

Ответы616886179861803

14 сен, 05:21 #424 #1061688

>>1061687
Там вроде модно поставить что-то типа array.lenght
мимокрок

43 Кб, 619x742

14 сен, 05:55 #425 #1061691

Ответы6169661727

14 сен, 06:19 #426 #1061693

>>1061523
В hw с такими вопросами. Но так как я сам оттуда, то скажу: Ориентируйся на быстрый твердотельник, тебе хватит ну 64гб по горло, потом накопишь вставишь еще если нужно будет. Потом процессор, 2 ядерный с 4 3ггц тредами, и про 8гб это если серьезные проекты типа видеоигр, для веб хватит по горло 4гб, для начала учебы тебе пойдет. Советую заморочиться с линуксом, тот работает на чем угодно и платить за пиратку шинды не надо будет. В общем кодить можно и на Нокии, не нужны там характеристики чтобы прям тянуло. Сейчас оборудование оптимизировано под железо ну очень хорошо, а современные процессоры имеют сказочную архитектуру которая оснащена ну волшебными инструкциями. И вообще, кодили же как то раньше, думаешь в прошлом технологии лучше были? В общем учись думать, меньше спрашивать будешь, такое ощущение что ты и кодить не сможешь, раз такие глупые вопросы задаешь. Для программиста очень плохо когда за него думают.

14 сен, 06:21 #427 #1061694

Я вообще кодил на 1.2Ггц с 2гб оперативкой на старом пеньке с HDD на 250гб змейки на С++ и даже датабазы на гиг, ну вот никогда не лагало, чесслово.

14 сен, 06:22 #428 #1061696

>>1061691
И?

Ответы6169761702

14 сен, 06:23 #429 #1061697

>>1061696
Хрюша ищет рабов на дваче.

14 сен, 07:07 #430 #1061702

>>1061696
Сначала охуел от того насколько всратой смотрится вакансия. Потом понял, что наверное это контора ищет себе php разраба который будет у них ПЕРВЫМ, поэтому описать нихуя не могут что толком нужно. Присматривать будешь за говносайтом, который васяны на фрилансе захуярили и теперь нужно поддерживать. И вообще вакансию похоже hr　составляла, не зная нихуя о вебе.
>MySgl
Кароче просто забей.

Ответы61752

14 сен, 08:49 #431 #1061727

>>1061691
>MySgl
Проиграл.
Впрочем, это не самое смешное в этой анкете.

Ответы61755

14 сен, 09:39 #432 #1061752

>>1061702
А я только заметил MySgl, проиграл. Я еще просто подумал, ну мол HTML верстальщик, значит у них уже есть CSS верстальщик, но не подумал, что это смешно. Смешнее вот это:
>Пл.Карла Маркса

Ответы61753

14 сен, 09:40 #433 #1061753

>>1061752
Они телефон оставили? Могу разведать.

Ответы61755

14 сен, 09:46 #434 #1061755

>>1061753
>Они телефон оставили? Могу разведать.
https://nsk.zarplata.ru/vacancy/card/135623031
+7 (905) 937-77-56
>>1061727
>Впрочем, это не самое смешное в этой анкете.
>А что тебе показалось самым смешным?

Ответы6176261892

14 сен, 09:59 #435 #1061757

>>1061666
Битрикс

Ответы61820

14 сен, 10:18 #436 #1061762

>>1061755
Я обосрался в общем, на запись не поставил. Но цитирую
Нам ПиЭйчПи нужен, вы работали с чем нибудь? Да у нас там разработка датабазы, ну как сказать, все уже готово как бы, просто нужно там все настроить, вот

Ответы61767

14 сен, 10:27 #437 #1061767

>>1061762
Представил как приходишь к ним такой, поднимаешь сайт, тестируешь работоспособность, учишь кого-то из манагеров пользоваться админкой всё запускаешь кароче и после этого тебя пидорят сразу: извините тестовый период бла бла, вы нам не подходите)))

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

Ответы61774

14 сен, 10:44 #438 #1061774

>>1061767
Мужику было все равно даже на образование, сразу скидывал на то, что мол давайте встретимся.

14 сен, 12:03 #439 #1061798

>>1061685
Тогда count(;array)

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

Ответы61800

14 сен, 12:03 #440 #1061800

>>1061798
count($array)

14 сен, 12:11 #441 #1061803

>>1061687
https://ideone.com/ntBMor

ideone полетел. Там по ссылке должно быть верно.

14 сен, 12:26 #442 #1061808

>>1061654
https://ideone.com/oLdjFJ
Почему не переводит в регистр?
Я пытался и к кускам $randText применять.
Почему оно кривиться, сказано же, нормальный код будет ближе к выходным.

Ответы61810

14 сен, 12:29 #443 #1061810

>>1061808
>кривиться
кривится

14 сен, 12:49 #444 #1061820

>>1061757
Дядь, я свое по хочу сделать

Ответы61883

14 сен, 13:02 #445 #1061825

>>1061666

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

14 сен, 15:07 #446 #1061871

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

Ответы6201365698

14 сен, 15:37 #447 #1061883

>>1061820
2к17
Городить велосипед из костылей с кучей багов и дырищь.

Ответы61888

14 сен, 15:46 #448 #1061888

>>1061883

Спаведливости ради, Битрикс по качеству не лучше того, что начинающий сам сделает, я помню там была проблема например с тем что он требовал какую-то настройку (register_globals? не помню), которую в новом PHP удалили.

Надо уж тогда нормальные варианты предлагать, Юи или Симфони или Ларавель.

14 сен, 15:50 #449 #1061892

>>1061755
>А что тебе показалось самым смешным?

>договорная
>высшее образование && знание HTML - верстки
>Сложные, интересные задачи

24 Кб, 375x500

14 сен, 17:56 #450 #1061927

Как вы вообще всему этому учились? Вот сел я читать, читал читал и пиздец, и пиздец. Вся мотивация отпала, ничего не запоминается, ничего не откладывается. Хочется всё закрыть и пойти плакать/кушать/играть/фапать/двачевать. Ну не могу я, не могу просто не могу всё это выучить и всё это запомнить. Я даже заставить себя не могу начать.
Как итт люди с этим справлялись? ПРОСТО САДИЛСЯ И ЧИТАЛ-УЧИЛ по десять часов в день? Или как всё происходило?

Ответы619296195662042621466267265699

14 сен, 18:03 #451 #1061929

>>1061927
Нет. Просто садился и делал свои программы на <языкнейм>. Мне не хватает терпения долго читать теорию, а книги по программированию номинальным объемом от 1000 страниц осилить за пару вечеров нереально.

Ответы61945

14 сен, 18:30 #452 #1061945

>>1061929
А я вот очень хочу хотя б базово html изучить, как я на нём что-то писать буду. Слишком тяжелая необходимая основа получается.

Ответы6194961956

14 сен, 18:38 #453 #1061949

>>1061945
Секи фишку: специализуйся на бэке. Фронтэнд макаки по рупь за пучок.

Ответы61970

14 сен, 18:49 #454 #1061956

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

>>1061945
Так хтмл не ЯП, а язык разметки. Чего его учить-то? Что сложного? Если даже учитывать цсс, там логики минимум. Указываешь, что тебе нужно -- оно выводится на экран. Вот охуеть как сложно.

Ответы61965

14 сен, 18:57 #455 #1061965

>>1061956
Дополню анона.

Когда выбрал <языкнейм>, идешь на апворк и ищешь задачи. Затем приступаешь к выполнению. После пишешь заказчику: есть готовый концепт, обсудим? Рейт такой-то.

Ответы61970

14 сен, 19:02 #456 #1061970

>>1061965
>>1061949
Все равно буду и дальше жалеть себя и искать отговорки. Но спасибо.

14 сен, 19:23 #457 #1061987

Здрасте

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

Ответы6208365697

14 сен, 19:33 #458 #1061991

>>1061595
Короче с помощью PHP Tidy получилось сделать валидный html, Simple нормально теперь переваривает его.
Д, надо попробовать переписать свой говнокод с использованием symfony. Может он из коробки переварит корявый html.

Ответы65699

8 Кб, 512x512

14 сен, 19:43 #459 #1061997

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

Ответы6201065698

14 сен, 20:04 #460 #1062010

>>1061997
В тырпрайзе минимум IE10. Все мамонты идут нахуй.

14 сен, 20:06 #461 #1062011

Здесь есть люди шарящие в Битриксе? Если я элемент привязак к новому разделу, а потом этот раздел удалил, то удалится ли вместе с ним сам элемент?

14 сен, 20:09 #462 #1062013

>>1061871
То есть скачка файла?
1 вариант - прямая ссылка на файл
2 вариант - средствами пхп отдаешь нужный файл с соответствующим хттп заголовком

14 сен, 21:01 #463 #1062042

>>1061927
> Как итт люди с этим справлялись?
Просто им было интересно.
Не обманывай себя, тебе это не интересно и не нужно.
Ты начитался про мамкиных погромистов 300к$/нс и думаешь, что и иы станешь таким успешным. Хуй там плавал, займись тем, что тебе действительно интересно.

Ответы62077

14 сен, 21:20 #464 #1062053

>>1060888
Реквест

Ответы65698

14 сен, 22:11 #465 #1062077

>>1062042
Мне вот мет варить интересно, например. Честный труд мало интересен. Хули делать?

Ответы65698

14 сен, 22:22 #466 #1062083

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

14 сен, 22:42 #467 #1062094

Фулстак должен знать html,css,php,js + пару фреймворков?

Ответы65697

15 сен, 05:43 #468 #1062146

>>1061927
Быть долбоёбом сложно. По возможности постарайтесь этого избежать.

380 Кб, 1600x900

15 сен, 08:38 #469 #1062173

Приветики.
Хелпаните перфекционист-куну в задаче! Последний пункт никак не могу осилить, вопрос вот в чем, требуется вывести количество людишек которые проживают в каждом отдельном штате. Проделав нехитрую манипуляцию $sumOfTex += $state["Texas"]; мы получаем непонятную ошибку, но в итоге таки когда принтим $sumOfTex на выходе получаем число 50, что равно собственно количеству жителей данного штата.
https://ideone.com/0qfHMq
???

Ответы6218665696

15 сен, 09:12 #470 #1062186

>>1062173
Какой-то ты маня-перфекционист.

Ты сам не видишь того пиздеца которого ты наворотил?

Допустим твой первый цикл нырнул в Лос Анжелес. Второй цикл в это время обращается к несуществующему Техасу и спрашивает сколько там людей блядь лол.

Ответы62192

15 сен, 09:16 #471 #1062192

>>1062186
Да я не понимаю что я там натворил, поэтому и обратился в тред.
Вижу только одно решение, по другому организовать массив.
"Texas" => {"Moscow" = 1111, "Kiev" = 1111, "Minsk" => 111], например так.

Ответы62194

15 сен, 09:23 #472 #1062194

>>1062192
Какой ты тогда перфекционист если не понимаешь дурашка.

Ответы62200

15 сен, 09:30 #473 #1062200

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

Ответы62201

15 сен, 09:32 #474 #1062201

>>1062200
>Несовершенный результат работы не имеет права на существование
Почему ты еще не выпилился?

Ответы62203

15 сен, 09:36 #475 #1062203

>>1062201
Зачем же ты его так жестко приложил? Блядь глядишь выпилится рили после осознания.

15 сен, 10:24 #476 #1062217

https://youtu.be/u319Rxm8UUw
Сложно ли сделать подобное по типу этого говна?
Имею нулевые знания в PHP со всеми вытекающими, до этого кодил только на плюсах и питоне.

11 Кб, 288x233

15 сен, 11:44 #477 #1062257

Данный код работает, но мне интересно как. Погуглив, я узнал, что flush() отправляет системный Output Buffer, а ob_flush() сбрасывает мой буфер (созданный с ob_start()) в системный буфер. Но в коде я не создавал никаких кастомных буферов, и по идее я должен каждую 1 секунду видеть по одной цифре даже без ob_flush(), но дело в том, что убирая flush() или ob_flush(), эффект остается прежним (он просто ждет 10 секунд, а потом отдает готовую страничку со всеми выведенными цифрами). Когда они прописаны вместе, он одновременно прогружает страничку, и одновременно еще отправляет из буфера по цифре (во время прогрузки странички). Вопрос: Почему мне нужно писать ob_flush() и flush() вместе?

Ответы6231162552

15 сен, 14:29 #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. Медленная отдача страницы это наверно самый неэффективный и ненадежный метод.

15 сен, 14:29 #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. Медленная отдача страницы это наверно самый неэффективный и ненадежный метод.

Показать весь текст
Ответы62464

15 сен, 17:17 #479 #1062390

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

Ответы624106244062447

15 сен, 18:16 #480 #1062410

>>1062390
Не неси хуйню, для ошибок определи контейнеры, а затем JSом подставляй туда текст

Ответы62423

15 сен, 18:37 #481 #1062423

>>1062410
Я не могу в жс! Расскажи подробнее чтобы понимать, что гуглить.

15 сен, 18:59 #482 #1062440

>>1062390

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

Ответы62443

15 сен, 19:02 #483 #1062443

>>1062440
спасибочки

15 сен, 19:07 #484 #1062447

>>1062390

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

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

Ответы62452

15 сен, 19:37 #485 #1062452

>>1062447
Поле цвет уже меняет. И хтмл5 валидацию я тоже почитал.

15 сен, 20:21 #486 #1062464

>>1062311>>1062311

>то есть порядок наверно должен быть обратный - ob_flush, за ним flush
Я тоже об этом задумался, но написал так как нашел в интернете. Спасибо за такой развернутый ответ, анон.

35 Кб, 469x283

15 сен, 21:46 #487 #1062530

Что писать в php, чтобы получить вот эти данные и отправить по почте? Алсо, что надо писать в mail(From: )?

Ответы62533625376256162687

15 сен, 21:47 #488 #1062533

>>1062530
Datatype раскоменчен, если что.

15 сен, 22:01 #489 #1062537

>>1062530
За что люблб пхп макак: за транслитерацию переменных. В JAVA-коде никогда не встретишь переменную 'visota'.

Ответы6254162559

15 сен, 22:09 #490 #1062541

>>1062537
Код спиздил.

25 Кб, 916x582

15 сен, 22:23 #491 #1062552

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

А в браузере всё работает как-то так: сначала у тебя ПОЛНОСТЬЮ отрабатывает скрипт, до завершения, и после этого только отдается страничка с результатами. Что бы что-то изменилось, то нужно полностью перезагружать страничку. Если ты натыкаешь sleep(); у себя в коде, то ты только отложишь выполнение скрипта.

Если хочешь что бы у тебя в браузере динамически всё менялось. То тут надо хуярить на js.

Ответы6258662650

15 сен, 22:35 #492 #1062559

>>1062537
>за транслитерацию переменных
Как что-то плохое

15 сен, 22:38 #493 #1062561

>>1062530

файл send.php
<?

if (isset($_POST)) {
$userInput = $_POST;
}

Потом в коде обращаешься за данными через этот массив

echo $userInput['name'];
$userPloshad = $userInput['dlina'] * $userInput['visota'];
и т.д.

Ответы62582

15 сен, 23:07 #494 #1062582

>>1062561
Так мне расчёты делать не нужно. Просто нужно взять переменные и отправить по почте. Вот этот .ajax передаёт данные в пхп, а как их расшифровать на стороне пхп и передать по почте, я не знаю. Я так понял, что для отправки почты нужен свой smtp сервер или smtp какого-нибудь гугла. Но в примерах отправки почты просто пишут mail(from: u ~QsernameANUSmaivo5lPUNCTUMc3LOom). Но как может отправляться почта без логина и прочего? Как через пхп соединиться с моей почтой гугла и отправить письмо с данными с сайта?

Ответы625966261862639

15 сен, 23:16 #495 #1062586

>>1062552
>А в браузере всё работает как-то так: сначала у тебя ПОЛНОСТЬЮ отрабатывает ...
Зависит от НАСТРОЕК веб-сервера. Техническая возможность форсировать отправку данных клиенту до завершения скрипта в php есть. Другой вопрос зачем.

15 сен, 23:38 #496 #1062596

>>1062582
>Вот этот .ajax
Json то есть.

16 сен, 02:07 #497 #1062618

>>1062582

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

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

Ответы62653

16 сен, 04:23 #498 #1062639

>>1062582
Ну возьми вот эти данные которые у тебя уже есть, и попробуй себе их отправить с помощью банального
http://php.net/manual/ru/function.mail.php

Ты же там чей-то сайт ковыряешь? Вдруг на нем ИЗ_КОРОБКИ уже всё работает.
https://ideone.com/9sVFuy

Но сильно сомневаюсь, пару лет назад я касался темы рассылок, и там надо было дохуя всего сделать и соблюсти что бы твои письма вообще хотя бы доходили куда-то. Начиная от dkim подписи и прочих хедеров, до обязательной кнопки "отписка". Чет не могу сейчас найти официальный гайд от яндекса по этой теме, и от гугла тоже раньше был. Видимо гребут под себя, хули. Что бы пользовались люди чем-то вроде https://yandex.ru/support/pdd/about.html
Хуй знает лень сильно гуглить кароче.

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

Ответы62653

16 сен, 04:24 #499 #1062640

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

Ответы626546268565696

16 сен, 05:54 #500 #1062650

>>1062552
Ну это понятно. Мне было просто интересно как это работает.

36 Кб, 350x371

16 сен, 07:06 #501 #1062653

>>1062618
Сайт находится на beget.com, не знаю, что там у них с отправкой почты. С хостингом со своего компа было бы меньше проблем. Нашёл такой код для захода в свою почту. Про спам похуй, отправлять нужно самому себе.
>>1062639
Я банально не знаю, как взять эти данные.

Ответы62658

16 сен, 07:16 #502 #1062654

>>1062640
webref.ru
learn.javascript.ru

16 сен, 07:49 #503 #1062658

>>1062653
блядь ну я же тебе написал.

Ты когда своим аяксом шлешь на сервер массив, то он лежит в глобальном массиве $_POST

Из него это всё и собираешь. Ну ебана врот я же тебе написал всё.

Ответы62663

16 сен, 08:32 #504 #1062663

>>1062658
Я просто думал, что этот json как-то в другой тип данных нужно переводить. Попробую твой код, когда дома буду.

Ответы62687

16 сен, 08:50 #505 #1062672

>>1061927
Ты напомнил мне моего знакомого, который хотел стать сисадмином, читая мануалы по консольным командам, он сказал мне "бля, пиздец, ничего не понимаю". Мб ты не так учишь?

Ответы62674

16 сен, 08:54 #506 #1062674

>>1062672
Как на сисадмина учиться?

Ответы6267762680

16 сен, 09:02 #507 #1062677

>>1062674
Я хз, ведь я недоверстальщик

16 сен, 09:17 #508 #1062680

>>1062674
На сисадмина надо учиться? Яебал...

Ответы62684

16 сен, 09:37 #509 #1062684

>>1062680
А что вообще делают сисадмины?

Ответы62688

16 сен, 09:39 #510 #1062685

>>1062640

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

Есть задания и на JS.

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

16 сен, 09:43 #511 #1062687

>>1062663
Нет у тебя там >>1062530 всё на картинке есть же.
type: "post"

Значит на сервере отлавливаешь в массиве $_POST всю инфу

По структуре в $_POST будет лежать тоже самое, что у тебя в data: {} навалено

Например в $_POST['dlina'] будет лежать то говно что тебе js подставил в переменную user_dlina, которую он в свою очередь сджикверил из инпута с name'ом dlina. Х

Ответы62842

16 сен, 09:44 #512 #1062688

>>1062684
Админят системы.

16 сен, 10:49 #513 #1062707

>>1049651 (OP)
Сап, res! Решил вплотную взяться за программирование, так как в 24 года внезапно осознал, что учусь по профессии которая мне не доставляет никакого удовольствия. Выбор мой пал на язык PHP и я начал искать какие-то курсы, нашёл cfqn c видеоуроками где челик довольно подробно всё рассказывает не только про язык PHP, но и про сами принципы программирования, однако его курс основан на версии 5.5, а сейчас как я понимаю в ходу версия 7.0. Так вот насколько актуален такой курс сейчас и стоит ли дальше по нему учиться?

Ответы627166287863036

16 сен, 11:17 #514 #1062716

>>1062707
Для вкатывальщика нет никакой разницы между 5.4+ и 7 версиями. Да даже если бы и более ранние курсы учил, то писали бы там
$a = array();
вместо
$a = [];

Это всё вообще пофиг, примитивы неизменны считай. Так что херач.

Ответы62861

28 Кб, 362x440

16 сен, 15:29 #515 #1062842

>>1062687
Через твой код сервер принимает данные с js, но письмо всё равно не отправляется. Нужно как-то войти в гугловскую почту и отправить оттуда. С кодом с пика сервер не принимает данные. Нужно как-то через этот Mail::factory отправить, но с ним ошибка.

Ответы62905

16 сен, 16:02 #516 #1062861

>>1062716
Спасибо за ответ. Значит буду дальше продолжать осваивать тот курс. И ещё вопрос. С чем связан хейт на PHP? Когда я спрашивал у своего знакомого (который пишет на Java) за этот язык то он просто обоссал его тугой струёй, сказав при этом, что он ненужен и на других языках можно делать тоже самое не ебя себе мозг.

16 сен, 16:33 #517 #1062878

>>1062707
поделись ссылкой на сайт плиз. Интересно посмотретью

Ответы62885

16 сен, 16:55 #518 #1062885

>>1062878
Держи
https://php-start.com/course/php-start-theory

Ответы62900

16 сен, 17:23 #519 #1062900

>>1062885
псип )

16 сен, 17:33 #520 #1062905

>>1062842
Анонимус, просто молю. Подскажите, что делать с этой хуйнёй.

Ответы63032

16 сен, 23:57 #521 #1063032

>>1062905
ну чувак,
решение #0 -- найми настоящего программера

а так,
тебе нужен https://github.com/PHPMailer/PHPMailer

Ответы63084

16 сен, 23:59 #522 #1063036

>>1062707
вкатывальщики, конечно, не нужны и будут в современном мире гнобимы и гонимы, но топчик на русском -- курсы от "специалист"

Ответы6308763133

17 сен, 03:36 #523 #1063075

https://ideone.com/FXUqQ2

Задача на шифр нормальная?

Ответы6307665696

17 сен, 03:38 #524 #1063076

>>1063075
А че пробел не зашифровал в другой символ? Тупо по пробелам можно догадаться, что 6 это И, ну а дальше понеслось.

Ответы63077

17 сен, 03:40 #525 #1063077

>>1063076
https://ideone.com/rZmoVR

17 сен, 05:07 #526 #1063084

>>1063032
Позвонил в техподдержку. На бесплатных аккаунтах заблокирована функция отправки почты.

17 сен, 05:56 #527 #1063087

>>1063036
Были бы ещё деньги на эти курсы.

17 сен, 12:27 #528 #1063133

>>1063036
> вкатывальщики
Кто это?

17 сен, 12:49 #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.
Или нет?
Я проверил, получается действительно так, но в каком порядке это всё происходит?

Ответы6314165696

17 сен, 12:56 #530 #1063141

>>1063139
Прочитал сам. Неправильно я предположил.
Операции сложения слева и справа от "равно" имеют одинаковый приоритет и выполняются слева направо. То есть сначала складываются пустые переменные, потом уже числа. Операция присваивания выполняется справа налево, поэтому результат сложения записывается в переменную, стоящую слева от "равно". Всё, оказывается, очень просто.

159 Кб, 1920x1080

17 сен, 13:31 #531 #1063150

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

Ответы63151633206364465695

17 сен, 13:32 #532 #1063151

>>1063150
походу через вебсокет надо делать статусбар

17 сен, 15:26 #533 #1063178

Шарящие анончики, что лучше изучить:
Laravel или yii?
Что лично вам больше импонирует и чем?

Ответы63208

17 сен, 17:36 #534 #1063208

>>1063178
ООП, Паттерны, архитектуру изучай. А потом уже хоть любой фреймворк будет как родной.

17 сен, 20:47 #535 #1063247

Такс, юзаю нетбинс и решил я в отладку с помощью xdebug. Провозился с настрйокой целый вечер - в итоге работает, но есть одно но - при отладке строка запроса засоряется хуитой вида XDEBUG_SESSION_START=netbeans-xdebug, из-за чего впизду летит отладка приложений с роутингом. Что делать, как мне быть?

Ответы632526484264844

17 сен, 21:40 #536 #1063252

>>1063247
Ставить куку для xdebug. Можно аддоном по типу: Xdebug Helper для Chrome

Ответы63263

17 сен, 22:10 #537 #1063263

>>1063252
Я наверное вообще не шарю как этим хдебагом пользоваться. Можешь поподробней? Как этот аддон уберет XDEBUG_SESSION_START=netbeans-xdebug из строки запроса?

Ответы63274

17 сен, 22:42 #538 #1063274

>>1063263
Отладка запускается из Chrome.
Включаем Xdebug Helper в режим Debug.
Он ставит куку вида XDEBUG_SESSION="PHPSTORM" (PHPSTORM прописываем в настройках аддона).
Перезагружаем страницу, кликаем по ссылке кнопке и т. п.
Если в php пришла кука, то xdebug попытается соединится с IDE по указанному в конфиге xdebug адресу.
Если IDE слушало порт, то мы увидим окно отладки, со скриптом выполненным до первого брейкпоинта (точки останова).

Ответы63413

17 сен, 23:29 #539 #1063287

Где почитать, что такое и как писать unit тесты для проектов на symfony?

Ответы6330364619

18 сен, 00:40 #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

18 сен, 01:26 #541 #1063313

https://ideone.com/IYLIIE

Задача на стих правильная?

Ответы64619

151 Кб, 1920x1080

18 сен, 02:03 #542 #1063320

>>1063150
Походу только я могу запилить основную логику за 2 дня, и еще 4 дня переписывать фронт и бэк на AJAX, чтоб во время выполнения было видно сколько файлов уже скачано. Сделал слава богу.

inb4 сделаю за 300 наночек

Ответы636446372065695

436 Кб, 1356x759

18 сен, 02:38 #543 #1063328

рейтаните код моего сенсея

Ответы633306336464619

18 сен, 02:45 #544 #1063330

>>1063328
Ты восьмичасовые опусы этого матюгальника смотришь?!?

Ответы63350

18 сен, 07:48 #545 #1063350

>>1063330
ну да, посмотрел

Ответы63422

18 сен, 08:58 #546 #1063364

>>1063328
Про sql-иньекции в курсе, не? Нечитаемое процедурное говно/10.

Ответы63424

18 сен, 11:27 #547 #1063413

>>1063274
Спасибо, вроде разобрался. Только из браузера наверное не получится отладку запускать.

18 сен, 11:45 #548 #1063422

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

18 сен, 11:49 #549 #1063424

>>1063364
а охуенные имена переменных и отсутствие отступов тебя не смутили? Сам факт отсутствия ООП не делает код плохим

Ответы6343163738

18 сен, 12:02 #550 #1063431

>>1063424
Честно говоря, если где-то в коде идет обращение через модуль mysq - то это уже говнокод. Алсо проиграл с нотпад++, его еще кто использует оказывается, лол.l

Ответы6343763731

18 сен, 12:19 #551 #1063437

>>1063431
>проиграл с нотпад++
А зря

18 сен, 16:21 #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.

Передаваемая сущность вардампится и там все норм тот самый объект. Если вызывать методы объекта не в СиКвеЛ запросе, то они тоже работают. Что я делаю не так?

Ответы63644

18 сен, 20:10 #553 #1063641

А как объяснить то, что скрипт с единственной строкой echo "helloworld"; интерпретируется 9 секунд (7.1 версия пыхи, мак ос), аналогичный на перле 5 за 0.1 секунды.

Ответы63744637846414664618

18 сен, 20:41 #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
Хватит тред засорять, вниманиеблядина.

18 сен, 21:22 #555 #1063659

Призываются экстрасенсы в тред. Может ли PHP приводить к тому, что апач выходит из строя? Ситуация - при ошибке (например выбросилось исключение) страница "зависает" (индикатор загрузки крутится, но страница не обновляется), пытаюсь в другой вкладке обратиться к другим страницам сайта - тоже не грузятся. Помогает только перезапуск апача. На Yii2, хотя уверен, что это от фреймворка не зависит.

Ответы6367764619

18 сен, 22:26 #556 #1063677

>>1063659
У меня бывали подобные глюки, но зависала только одна страница когда я пытался вызывать метод объекта в коде по типу
$obj = new $obj;
$obj->$myMethod();
Но то давно было, я так и не разобрался от чего такая хуйня может происходить.

217 Кб, 476x346

18 сен, 22:50 #557 #1063685

Не знаю туда ли, но спрошу все равно. На github pages можно только it-ориентированные сайты постить или всякие визитки (не по айти специальности) тоже?

Ответы65695

18 сен, 23:28 #558 #1063690

https://ideone.com/EQIGzM

Почему он ругается на mb_internal_encoding('utf-8')?

Ответы63695

60 Кб, 1014x832

18 сен, 23:36 #559 #1063695

>>1063690
Что не так?

Ответы63722

57 Кб, 952x860

19 сен, 01:58 #560 #1063720

>>1063320
Результат пяти дней кодинга. Я доволен.

Ответы63728

19 сен, 02:02 #561 #1063722

>>1063695
на ideone забыли поставить модуль с mb_ функциями при обновлении php. пользуйся чем-нибудь другим

19 сен, 02:49 #562 #1063728

>>1063720
А где посмотреть твой код?

Ответы63730

19 сен, 03:16 #563 #1063730

>>1063728
https://github.com/grigoryMovchan/2ch_get_img

Как пример хорошего кода не годится - работает и ладно

Ответы63739

19 сен, 03:20 #564 #1063731

>>1063431
Всем так важно твое мнение.

19 сен, 05:42 #565 #1063738

>>1063424
Вот этого двачну.

19 сен, 05:47 #566 #1063739

>>1063730
Успешен уже в плане работы? Я ни одной своей задумки не реализовал, некоторые из них при этом и так уже устарели. Да и что говорить. Я даже заставить себя сесть решать задачи от ОП-а не могу уже пару месяцев. При этом полагаю, что наличие такого вот гита, сделало бы меня немного более ценным на рынке труда.

Ответы63757

19 сен, 06:55 #567 #1063744

>>1063641
бамп вопросу

19 сен, 08:33 #568 #1063757

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

Ответы6376464619

19 сен, 09:09 #569 #1063764

>>1063757
>работодатель бы охуел от такого количества упоминаний двача в репозитории
У меня челик знакомый который в яндексе работал, посылал резюме в контору, которая занимается разработкой ИИ вроде. Ему дали тестовое с тем что бы написал бота, который учится за счет лексикона двачеров. Прямо треды ему кормить для обучения, так что ничего нормально всё. Я считаю, что если потенциальный веб-разраб не знает о дваче, то это скорее минус чем плюс. Двач же не делает тебя долбоебом, ты не путай.

>там проекты - детский сад, фреймворков не знаю.
Ну я работал на фреймворке одном, хуета для макак по сути. Тупо блядь за тебя уже всё сделано. Те задачи оповские по типу студентов, на которые дается 3-10 дней, набыдлокодил бы на нем за 4 часа. А как сам хочу сесть с 0 написать, то охереваю от того что не могу в ооп и самостоятельно архитектуру и всякие зависимости и вообще не понимаю как должны объекты между собой общаться :(

И прочие дыры с автолоадерами и роутингом и так далее.

Ответы6378964150

19 сен, 12:10 #570 #1063784

>>1063641
бамп вопросу

19 сен, 12:41 #571 #1063789

>>1063764
Интересно, как так вышло, что ты понимаешь архитектуру фреймворка но не можешь повторить ее хотя бы в простеньком варианте?

Ответы637996381364619

19 сен, 13:33 #572 #1063799

>>1063789
Очевидно, что его "понимаю" отличается от твоего в худшую сторону.

19 сен, 14:10 #573 #1063813

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

Фреймворк это как...
Когда знаешь в какое место какую лапшу вписать, разбавив встроенными возможностями фреймворка, что бы всё это приняло вид красивого стройного эМВиСи.

17,7 Мб, 960x540

19 сен, 14:27 #574 #1063822

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

Ответы63826

19 сен, 14:35 #575 #1063826

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

19 сен, 18:18 #576 #1063906

Странная тема. Список студентов. Логика приложения. В index.php создается роутер, который разбивает полученную ури и запускает в завсимости от нее нужный контроллер с нужным эшкеном. При регистрации он запускает МейнКонтроллер с экшеном Регистер тот проверяет данные и если все хорошо записывает данные и редиректит на index.php/edit дальше его обрабатывает роутер и отправляет на МейнКонтроллер с эшеном Эдит и вот там какого-то хуя $_SERVER['REQUEST_METHOD'] становится ГЕТ!!! Почему? Я не хочу! Что делать???

Ответы64619

19 сен, 19:48 #577 #1063969

http://simtech.ru/wp-content/themes/simtechrutheme/book/Brett McLaughlin.PHP and MySQL.- 2013.pdf

Книга 2013 года. СтоиХт ли читать или уже все устарело? Что можете посоветовать почитать по php и mysql новичку

Ответы639816414964442

19 сен, 20:09 #578 #1063981

>>1063969
Если только вкатываешься, то стоит читать и делать все подряд.

Ответы63984

19 сен, 20:14 #579 #1063984

>>1063981
Сейчас изучаю уже HTML, CSS. Вот еще хочу изучать, поэтому и спрашиваю. Но совет хороший, правда.

19 сен, 22:30 #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 или я чего-то не понимаю?
Алсо спасибо за советы и проверку.

Ответы64618

20 сен, 08:19 #581 #1064146

>>1063641
Перл и похапэ по докерам раскидай и проведи свои тесты еще раз.

20 сен, 08:22 #582 #1064149

>>1063969
Если книга от О'Рейли, то вопрос читать или нет не стоит совсем. Конечно читать.

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

Ответы64222

20 сен, 08:25 #583 #1064150

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

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

Ответы6422364618

20 сен, 14:51 #584 #1064222

>>1064149
Спасибо большое.

20 сен, 14:54 #585 #1064223

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

Ответы64488

67 Кб, 1542x794

20 сен, 20:01 #586 #1064336

Что не так?

Ответы6441164618

20 сен, 22:36 #587 #1064411

>>1064336
выведи символы попарно

21 сен, 00:30 #588 #1064442

Помогите. Я уже писал тут.>>1063969
В книге написано "В главе 1 будут рассмотрены несколько хороших редакторов, причем некоторые
из них имеют встроенный FTP нуть програм-
му Cyberduck . Вы можете написать сценарий, отправить его по сети и все протестировать всего лишь несколькими щелчками кнопкой мыши. Итак,
загрузите эту FTP-программу, настройте свой веб-сервер и приступайте к работе.
Данная программа вам несомненно пригодится."

Стоит ли качать его? На нем сейчас работают? Я просто до этого слышал про фаерзиллу. Давйте совет, пожалуйста ;3

Ответы64444644566456764617

21 сен, 00:31 #589 #1064444

>>1064442
файелзилу*

21 сен, 01:51 #590 #1064454

Ладно, не отвечайте. Я по учебнику опа пойду. Извините за то, что наспамил.

21 сен, 02:04 #591 #1064456

>>1064442
Если ты только вкатываешься - берешь качаешь и пробуешь все подряд.

21 сен, 08:29 #592 #1064488

>>1064223
>решить задачу в процедурщине
>в процедурщине
Выбери что-то одно, ну да ладно.

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

Ответы6449564617

21 сен, 08:54 #593 #1064495

>>1064488
>енном ооп
Но рекрутерам не нравится что ты не шаришь в этом говне. И вообще ты с этого треда или нет? Ты не думал что всё изменилось за последние 5-10 лет и твой маня-мир относительно реалий пхп немного устарел что ли.

Ответы64617

21 сен, 13:12 #594 #1064567

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

21 сен, 15:19 #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 в похожем на реальное приложении.

21 сен, 15:19 #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 в похожем на реальное приложении.

Показать весь текст
Ответы65899

21 сен, 15:19 #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 или я чего-то не понимаю?
Нет, длина найденной подстроки и подставляемой не имеет значения и все должно работать корректно. Ошибка где-то в другом месте.

21 сен, 15:19 #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 или я чего-то не понимаю?
Нет, длина найденной подстроки и подставляемой не имеет значения и все должно работать корректно. Ошибка где-то в другом месте.

Показать весь текст
Ответы65900

21 сен, 15:20 #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

Начни с него, потом документацию Симфони (на нее вроде анон дал ссылку).

21 сен, 15:20 #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

Начни с него, потом документацию Симфони (на нее вроде анон дал ссылку).

Показать весь текст

21 сен, 17:25 #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-]+)$, ну ты понел. Собственно, можно как-то пофиксить проблему, или я изначально тупиковый путь выбрал?

Ответы6467064824

21 сен, 17:36 #599 #1064670

>>1064662
Может стоит url дробить по слешу на элементы массива?

Ответы64678

21 сен, 17:57 #600 #1064678

>>1064670
Да хочется уже сделать по людски с помощью регулярок. Так то оно кроме описанного случая работает нормально.

21 сен, 22:29 #601 #1064771

Доллары в рубли: https://ideone.com/fKTZIx

Бросаем кубик: https://ideone.com/BMDIL3

Анон против компьютера: https://ideone.com/Hspscg

Ответы64842

22 сен, 01:07 #602 #1064824

>>1064662
Это известная проблема, и есть 2 варианта решения:
1 вручную переставить роуты местами
2 сделать автоматическую сортировку роутов, чтобы более специфичные (без плейсхолдеров) шли первыми

22 сен, 01:10 #603 #1064828

Циклы таблица умножения: https://ideone.com/jtvNDb

Анон и банк: https://ideone.com/Vsl4w0

Ответы65695

22 сен, 02:15 #604 #1064842

>>1064771>>1063247

> Доллары в рубли: https://ideone.com/fKTZIx
Все верно

> Бросаем кубик: https://ideone.com/BMDIL3
Верно

> Анон против компьютера: https://ideone.com/Hspscg
Верно, хотя можно было сделать один большой блок ифов, а не 2 отдельных.

Ответы64849

22 сен, 02:21 #605 #1064844

>>1063247

Нужно в роутере проверять только путь, без query string. Используй parse_URL().

22 сен, 02:55 #606 #1064848

Аноны, есть довольно обширный опыт говнокодинга, но хочу стать полноценным человеком и вкатиться в ООП.
Насколько хороша книга указанная в оп-посте? Которая авторства Мэтта Зандстры. Будет ли ее достаточно?
Хочу купить её бумажную и лампово читать под пледиком.

Ответы65695

22 сен, 03:02 #607 #1064849

Неправильно решил задачу про айфон и кредит. Чувствую себя бакой. https://ideone.com/JvH0sP

Ссылку оставил для себя эту, завтра попробую переделать, когда не будет сонливости.
>>1064842
Спасибо большое за проверку! ;3

Ответы65694

Аноним 22 сен, 12:20 #608 #1064942

Народ скиньтесь мне на глазные капли или тыкнити носом. Не могу понять хоть убей что ему не нравится в этом задании про "кубики" https://ideone.com/fork/vxlE6J

Ответы6495464959

22 сен, 12:55 #609 #1064954

>>1064942
С сажей никто не ответит, сорь.

22 сен, 13:13 #610 #1064959

>>1064942
В ифе = на == замени

22 сен, 13:49 #611 #1064965

Объясните пжта. Зачем автор учебника все переменные в echo включает в фигурные скобки ? Это просто дело привычки ? ) Почитал мануал. Может не до конца понял. В фигурные кавычки включают переменные, если после них идет какой-то текст, чтобы переменная сработала. А в учебнике часто после переменной никакого текста нет. Хочу разобраться, как делать лучше )

Ответы649826498665694

22 сен, 15:27 #612 #1064982

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

Ответы6498665012

22 сен, 15:39 #613 #1064986

>>1064965
Скорее что бы ты знал о такой возможности экранирования переменных в строках, а вообще >>1064982 - да, когда-то столкнешься с таким вот https://ideone.com/GpcB8N и будешь во вьюхах на изи выводить. А в задачах не парься просто и пиши:
echo "Рост $name - $heigh см.\n";
Никакой разницы по сравнению с:
echo "Рост {$name} - {$heigh} см.\n";
не будет.

Ответы65012

22 сен, 16:57 #614 #1065012

>>1064982
>>1064986
Спасибо за ответы ;-)

22 сен, 20:09 #615 #1065098

Ебать, это нормально что у яндекса с мейлру индексация 3+ часа. Гугл за 5 минут все сделал

22 сен, 23:34 #616 #1065225

https://ideone.com/HOlsuB

Так, почему функцию на айпад нельзя решить тем же, что я использовал при кредите на айфон >>1060066
? Должно же подходить. А оно не подходит.

Ответы65694

23 сен, 21:44 #617 #1065656

Не могу въехать в суть поддержки Юникода в PHP. Какой чарсет у строки? (inb4 wchar) За чем конкретно нужны mb_ методы? (nb4 legacy)

Мануал скурил.

Ответы656616566465693

23 сен, 21:49 #618 #1065661

>>1065656
Вернулся в мануал:
http://php.net/manual/en/language.types.string.php#language.types.string.details
То есть, если я хочу написать динамическую страницу с юникодом без любви, мне нужен фреймворк?

Ответы65693

23 сен, 22:04 #619 #1065664

>>1065656
Самый простой вопрос, который приходит мне в голову:
будет ли работать $a === "китайские иероглифы"?

Ответы65693

23 сен, 23:21 #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.

23 сен, 23:21 #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.

Показать весь текст
Ответы65744

23 сен, 23:23 #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 раза повторяются.

23 сен, 23:23 #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 раза повторяются.

Показать весь текст

23 сен, 23:23 #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 разных стилях.

23 сен, 23:23 #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 разных стилях.

Показать весь текст

23 сен, 23:23 #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 ...) {
...

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

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

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

23 сен, 23:23 #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 ...) {
...

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

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

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

Показать весь текст

23 сен, 23:24 #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/

23 сен, 23:24 #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/

Показать весь текст

23 сен, 23:24 #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 ведь проектировался с расчетом на совместимость в обе стороны: новые браузеры могут смотреть старые страницы, и наоборот. И надо придерживаться этого принципа.

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

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

23 сен, 23:24 #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 ведь проектировался с расчетом на совместимость в обе стороны: новые браузеры могут смотреть старые страницы, и наоборот. И надо придерживаться этого принципа.

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

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

Показать весь текст

23 сен, 23:25 #626 #1065699

>>1061991

Симфониевский код по моему использует DOMDocument, потому ты можешь проверить, переварит ли твой код это расширение.

>>1061927

Ты не только читай, ты еще пиши код, пробуй что-то делать.

24 сен, 01:35 #627 #1065726

Оп проверь студентов пожалуйста!
https://github.com/radiodog/studentlist

627 Кб, 1920x1080

24 сен, 02:06 #628 #1065729

Все еще пилю качалку, фишку баги, осталось чуть-чуть

24 сен, 02:11 #629 #1065730

Айфон.https://ideone.com/UsHYCw#stdin

Ответы657316573667733

24 сен, 02:14 #630 #1065731

>>1065730
Стыдно, что изначально наговнокодил, а потом подглядел у других решения и понял, что так намного проще. D:

24 сен, 02:23 #631 #1065736

>>1065730
давай теперь в ООП стиле с инкапсуляцией и полиморфизмом

24 сен, 03:35 #632 #1065744

>>1065693
>
>- https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
>$s = "щ";
Что означает эта строка? "Присвоить s UTF8-строку"?

Ответы65915

35 Кб, 786x548

24 сен, 11:17 #633 #1065776

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

https://ideone.com/kiJeu8

Ответы6579065844

24 сен, 12:15 #634 #1065790

>>1065776
Все норм, просто сравнивал одну переменную саму с собой, а не с другой.

24 сен, 14:11 #635 #1065844

>>1065776
16 строка $nonD1

24 сен, 17:02 #636 #1065899

>>1064617
Это где у меня негативное отношение к ООП? И о чем ты вообще пишешь, ты мое сообщение хотя бы прочитал, перед тем как катать простыню про ООП, паттерны, мвц и симфони?

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

И это основная идея похапэ. И то, что гонит похапэ в могилу.

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

Ответы65914

24 сен, 17:04 #637 #1065900

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

24 сен, 18:05 #638 #1065914

>>1065899

Что не так в реализации ООП от PHP и какое отношение к этому имеет Ларавель? Ларавель, насколько я знаю, вдохновлен Руби он Рейлс и видимо пытается поворять архитектуру этого фреймворка.

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

Ответы66093

24 сен, 18:07 #639 #1065915

>>1065744

Скопировать строку "щ" (для PHP это просто набор байт) в переменную $s. Какие именно байты скопируются - зависит от кодировки, в которой написан PHP скрипт.

То есть для PHP "щ" это просто 2 каких-то байта.

Ответы65920

24 сен, 18:34 #640 #1065920

>>1065915
Ооооооо, наконец-то тайна открылась. То есть, в $s окажется набор байт, который PHP считает заключёнными между двойными кавычками, если парсер не поперхнётся.

Тогда вопрос: какие кодировки поддерживает парсер и чем он не поперхнётся? Нужно ли задавать кодировку исходника явно в начале исходника?

Ответы65928

24 сен, 18:50 #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 или чем-то подобном, то придется заморачиваться с настройками.

Ответы65929

24 сен, 18:51 #642 #1065929

>>1065928

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

25 сен, 00:53 #643 #1066052

Как в пхп считывать переменные?
В питоне например можно это сделать так:
apples = int(input())

Ответы66054

25 сен, 00:54 #644 #1066054

>>1066052

http://php.net/manual/ru/features.commandline.io-streams.php

Ответы66057

25 сен, 01:06 #645 #1066057

>>1066054
Спасибо. Буду от этого теперь гуглить.
Какой же я бака ;c

25 сен, 02:49 #646 #1066069

Первая задача на массивы: https://ideone.com/wXoRmp
Вторая задача на массивы: https://ideone.com/zBOSPk
Третья задача на массивы: https://ideone.com/XvM5eM

Ответы665026773067733

25 сен, 09:02 #647 #1066093

>>1065914
>Что не так в реализации ООП от PHP
>Компилировать не требуется
>динамические возможности
>писать приходится меньше
Если говорить не только об ООП, то вот это все большие минусы языка для веб-приложений PHP для 2017 года.

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

>какое отношение к этому имеет Ларавель?
Как бы самый популярный фреймворк на данный момент для малый/средних проектов и он написан на PHP. И, очень показательно, архитектуру он имеет очень так себе. Интерфейсы нормально из коробки не подрубишь, всюду фасады, некоторые фичи просто прибиты гвоздями, словно тебе говорят: "бери что дают и пиши".

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

Ответы66277

25 сен, 12:27 #648 #1066173

Оп проверь студентов пожалуйста!
https://github.com/radiodog/studentlist

25 сен, 15:06 #649 #1066252

Тред в отпуске?

25 сен, 16:48 #650 #1066277

>>1066093

2 поста написал про то, какой плохой в PHP ООП, а как до дела дошло, ничего конкретного сказать не можешь. Да и про ruby on rails толком ничего не знаешь. Наверно, все таки тут проблема не в PHP.

> Ларавель?
> Как бы самый популярный фреймворк на данный момент для малый/средних проектов
Популярный на Хабре или популярный в вакансиях/на фрилансе? Не путай.

Ответы66577

25 сен, 20:01 #651 #1066363

https://jsfiddle.net/nmk4aeqh/

Это можно назвать инкапсуляцией?

Ответы66453

25 сен, 22:44 #652 #1066453

>>1066363

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

-----

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

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

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

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

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

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

-----

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

Инкапсуляция в функциональных ЯП возможна за счет замыкания:

function createCounter() {
var x = 0;
return function () {
x++;
return x;
};
}

var counter = createCounter();

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

25 сен, 22:44 #652 #1066453

>>1066363

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

-----

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

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

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

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

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

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

-----

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

Инкапсуляция в функциональных ЯП возможна за счет замыкания:

function createCounter() {
var x = 0;
return function () {
x++;
return x;
};
}

var counter = createCounter();

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

Показать весь текст
Ответы66645

26 сен, 00:46 #653 #1066502

>>1066069
Дополняю.

Четвертая задача на массивы: https://ideone.com/dNl1au

Шифровка: Сделал но похерачил случайно все полностью два раза. Заново уже третий раз писать нет никакого желния. Но каждый символ был уникальный и использовался один раз.

Ответы6773067733

26 сен, 01:29 #654 #1066512

Мои студенты – https://github.com/vadimyen/students. Знаю, что много косяков с проверкой-перепроверкой параметров , значений куки и прочего (в контролере и в самих вспомогательных классах есть дублирование что ли, каша), вот. буду рад услышать замечания. И еще вопрос: не правильнее ли для авторизации хранить не просто сгенерированную строку что на клиенте, что в БД, а на клиенте обычную строку, а в БД ее хеш с солью (password_hash/password_verify), так как если кто-то получит доступ к базе, то получит любого пользователя. Еще думаю, класс Security за слишком многое ответственен, а функции подсветки и экранирования html-сущностей в отдельные классы надо раскидать

Ответы6655167552

26 сен, 07:21 #655 #1066551

>>1066512
https://github.com/vadimyen/students

Ответы67552

26 сен, 09:04 #656 #1066577

>>1066277
>2 поста написал про то, какой плохой в PHP ООП, а как до дела дошло, ничего конкретного сказать не можешь.
Так а что тут сказать? Стдлиб и самые популярные инструменты для PHP (разве что кроме некоторых компонентов симфони) не рассчитаны для использования в ООП архитектуре, либо их нужно оборачивать в бесконечные проверки и подменять вывод, либо перепиливать и заставлять исполнять паттерны. Более подробно в гугле по запросу "чем плох php", копипастить не вижу смысла.

>Да и про ruby on rails толком ничего не знаешь.
Я и не говорил, что большой специалист. Просто когда говорят ror-подобный фреймворк, то имеют ввиду стандартное разбиение компонентов mvc. Тот же симфони, прямая противоположность Laravel, тоже ror-подобный. Странно, что это приходится объяснять, ну да ладно.

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

>Популярный на Хабре или популярный в вакансиях/на фрилансе? Не путай.
Так и не путаю. А что популярнее? Битрикс? В вакансиях по ДС/ДС2 в основном laravel/symfony/lumen/silex, либо нечто на компонентах symfony, что сути не меняет. На фрилансе либо дают самому выбрать на чем решать задачу, либо работать с легаси. Тут уже кто что когда-то давно выбрал, что тоже особо не показатель.

Ответы66631

26 сен, 10:53 #657 #1066631

>>1066577
>чем плох php
Большинство из них примерно 2010-го года написания. Да и там доебки к синтаксису в основном. Ну да, он в пыхе довольно архаичен - Си для тупых же. Но что в этом такого я не понимаю, на сишке же хуярят до сих пор и не ноют даже. И я так и не понял чем тебе там ООП не нравится - вот что такого жутко важного нет в реализации пхпшного ООП?

26 сен, 11:02 #658 #1066645

>>1066453
Понял.

(Пример с числами это самое простое, что пришло в голову. Реальный код позволяет мне не дублировать простейшие функции внутри объекта, и отдавать наружу только публичное так сказать АПИ. Вот я и подумал, что получилась настояшая инкапсуляция + ДИ, а оно вона как. Ох, забей.)

4 Кб, 521x109

26 сен, 11:35 #659 #1066654

Такой вопрос, в yii2 использую бутстрап для изменения pageSize в пагинации (пик).
Такой предефайн работает только в случае если я получаю пагинацию путем Yii::$container->get('yii\data\Pagination'), и не работает если я как обычно создаю экземпляр класса через new yii\data\Pagination(), так и задумано? Теперь придется получение класса делать только через геттер контейнера?

Ответы67729

26 сен, 14:09 #660 #1066698

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

Ответы6670366704

26 сен, 14:26 #661 #1066703

>>1066698

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

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

Ответы66706

26 сен, 14:27 #662 #1066704

>>1066698

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

Ответы66706

26 сен, 14:33 #663 #1066706

>>1066703
>Нужно обязательно проверять значения от пользователя
Я не совсем это имею ввиду. Про проверку это понятно.
>>1066704
Допустим, я хочу позволить сортировать по name, secondName и summary(это у меня так общий бал называется). А пользователь хуяк и в ссылке введет не students.loc/name/1 (поле сортировки и страница), а /email/1 - и у меня будет сортировка по имейлу, хули, есть же такая колонка. В принципе ничего страшного в любом случае, но меня скорее интересует вопрос хранения каких-либо параметров, которые можно было бы отдать пользователю для свободного изменения, но при этом слишком мелочных что бы для них делать таблицы в БД, как-то так.

Ответы66720

26 сен, 15:04 #664 #1066720

>>1066706

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

26 сен, 16:29 #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?
Если я изменю название поля и напишу то же название в правилах валидации, то этого будет достаточно, или это поле упоминается где-нибудь ещё?
Другой вопрос, а кому этот метод что-то возвращает? Дожен ли я где-то его вызывать, или это делается "под капотом"?

Ответы6676567729

26 сен, 16:33 #666 #1066765

>>1066762
>Если я изменю название поля и напишу то же название в правилах валидации, то этого будет достаточно, или это поле упоминается где-нибудь ещё?
Немного не так, да это название поля, но в то же время в
><?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
это ещё и название атрибута в модели, то-есть обычно если ты пользуешься gii он создает модель на основе таблицы в базе. Если ты просто поменяешь название в rules и в <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> - этого будет недостаточно, тебе выбросит ошибку, что такого атрибута нет в твоей модели. Тебе нужно ещё будет добавить нужный атрибут в модель и в таблицу

Ответы66774

26 сен, 16:53 #667 #1066773

Анон, подскажи самый годный туториал, как запилить свой MVC-фреймворк с нуля. Чтобы был роутинг через index.php, автозагрузка классов, подобие Active Record из Yii2, layout'ы для фронта и бэка. Чтобы прям разжевали по шагам, как и что делать.

Ответы6720267729

26 сен, 16:57 #668 #1066774

>>1066765
То есть, если заменить во вью username на nameuser, то в моделе нужно изменить
public $nameuser;
в объявлении атрибутов и
[['nameuser', 'password'], 'required'],
в методе rules()

И получается, что мы передаём в метод field() модель $model (берётся из контроллера) и атрибут модели nameuser. Метод создаёт поле формы с тем же именем(username), а значение этого атрибута установит пользователь, введя туда что-то. Так?

>Тебе нужно ещё будет добавить нужный атрибут в модель и в таблицу
То есть, nameuser - это ещё и название поля в таблице?

Ответы67729

26 сен, 17:47 #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?) и успешно ли прошёл метод валидации, которому передан один параметр (введённый пароль, полагаю). Но этот метод принимает два параметра. И... Ну хорошо, второй раз его запустили, снова проверили на ошибки и создали новый компонент, снова проверка, и так до бесконечности. Я не понимаю, как это рабоает.

Ответы67729

27 сен, 03:42 #670 #1066991

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

Ответы67729

27 сен, 16:45 #671 #1067202

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

27 сен, 18:31 #672 #1067257

На словах ты Лев Толстой: https://ideone.com/WmBkGy

Ответы67729

27 сен, 23:07 #673 #1067401

http://sandbox.onlinephpfunctions.com/code/ff8aae35729153b07b5aac4c744c9d6ca682f90b Почему после unset() значение свойства сохраняется?

Ответы6740267729

27 сен, 23:10 #674 #1067402

>>1067401
ахахах, перечитал и дошло: так как это ссылка на приватное статическое свойство и удаляется лишь ссылка

28 сен, 00:07 #675 #1067419

А почему тред стал умирать, где все?

Ответы67429

28 сен, 00:22 #676 #1067428

Оп в отпуске наверное. Никто задачи не проверяет. Вот и получается хуетень!

Ответы67465

28 сен, 00:24 #677 #1067429

>>1067419
> ОП заходит редко, где-то раз в 2-3 дня, у него мало времени, не жди его, решай задачки дальше

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

Ответы67436

28 сен, 00:37 #678 #1067436

>>1067429 Я Опа жду уже неделю. А задачки конечно пилю. Просто не очень понятно правильно ли я с ООП работаю. Сейчас делаю задачку про файлообменник и как бы в легком ахуе пребываю сколько всего непонятного. Ищу ответы в интернетах, хули еще остается.

Ответы6743967465

28 сен, 00:40 #679 #1067439

>>1067436
Спрашивай, может помогу

28 сен, 01:53 #680 #1067465

>>1067436
>>1067428

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

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

Ответы67552

28 сен, 11:19 #681 #1067552

>>1067465
Еще, конечно, не неделю, но на всякий случай оставлю
>>1066512
>>1066551

28 сен, 16:01 #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 выдаёт "у меня в недрах случилась какая-то хуйня". Или это я тупой и не способен понять его месседжи?

Ответы67715

28 сен, 17:44 #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. Где-то в мануале это должно быть описано.

> Или это я тупой и не способен понять его месседжи?
Ты не умеешь читать стектрейсы и понимать, что привело к ошибке. Подробностей там обычно более чем достаточно.

28 сен, 17:44 #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. Где-то в мануале это должно быть описано.

> Или это я тупой и не способен понять его месседжи?
Ты не умеешь читать стектрейсы и понимать, что привело к ошибке. Подробностей там обычно более чем достаточно.

Показать весь текст
Ответы67722

28 сен, 17:59 #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/
Посмотрю.

Ответы67728

28 сен, 18:22 #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() вызывает?

28 сен, 18:22 #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

Наверно, надо смотреть код.

28 сен, 18:22 #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

Наверно, надо смотреть код.

Показать весь текст
Ответы67770

someApprentice 28 сен, 18:31 #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 28 сен, 18:31 #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;

Показать весь текст
Ответы67731

someApprentice 28 сен, 18:36 #688 #1067731

>>1067730
>https://3v4l.org/3t6Wi
Случайно не то решение скинул. В callback-функции должна быть конструкция use($anonHeight) и использование этого параметра в условии:

function($classmate) use ($anonHeight) {
if ($classmate > $anonHeight) {
return true;
} else {
return false;
}
}

Ответы67734

28 сен, 18:41 #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 = тут лишнее. А так, верно.

28 сен, 18:42 #690 #1067734

>>1067731

Или просто return $x > $y так как оператор > возвращает boolean (true/false).

28 сен, 18:45 #691 #1067735

Как правильно произносится Yii?

Ответы67741677426774967758

28 сен, 18:53 #692 #1067741

>>1067735

https://www.google.ru/search?q=how+to+pronounce+yii&newwindow=1&dcr=0&gbv=1&sei=shrNWajzOcXX6ASMkLDYCA

Но я конечно говорю "Юи".

40 Кб, 387x480

28 сен, 18:54 #693 #1067742

>>1067735
уии

28 сен, 19:17 #694 #1067749

>>1067735
Юи.

28 сен, 19:19 #695 #1067752

Помогач, выручай. Есть один сайт, который выдает 503 Service Temporarily Unavailable. Задача - пофиксить это говно.
Я знаю что это поиск иголки в стоге сена, но любая инфа приветствуется.
Проблема не в хостинге - значит у меня.
Из остальных вариантов я слышал только о 2: дудос или медленного говно мамонта в медленном говнокоде который писал не я.
Условия: есть доступ к контрольной панели хостинга и много живительных пиздюлей.
Вопрос: как узнать каким говном этот сайт захлебнулся?

Ответы6781067860

28 сен, 19:26 #696 #1067758

>>1067735
Йи(и)

28 сен, 19:47 #697 #1067770

>>1067729
Спасибо, сразу вспомнил эту статью – https://habrahabr.ru/post/162713/

28 сен, 21:17 #698 #1067810

>>1067752
Сэмулируй у себя на локалке, посмотри, что будет. Почкму ты думаешь проблема не в хостинге?

Ответы67860

28 сен, 22:52 #699 #1067860

>>1067752

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

А ты начинаешь вместо этого гадать, в чем дело.

>>1067810

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

28 сен, 23:58 #700 #1067885

Зачем нужна команда return и зачем возвращать значение, которое хранилось в переменной?
http://archive-ipq-co.narod.ru/l1/functions.html

Ответы678936789468058

29 сен, 00:04 #701 #1067888

https://jsfiddle.net/tketds4n/

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

Почему так может быть?

Ответы67903

29 сен, 00:26 #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 используется, чтобы вернуть одно значение из функции назад в место вызова.

29 сен, 00:26 #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 используется, чтобы вернуть одно значение из функции назад в место вызова.

Показать весь текст
Ответы67901

29 сен, 00:26 #703 #1067894

>>1067885
https://ideone.com/0dAmrv

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

Ответы67917

29 сен, 00:30 #704 #1067901

>>1067893
Спасибо!

29 сен, 00:30 #705 #1067903

>>1067888

У тебя показ меню сделан по условию :focus на кнопке. Это неправильно, так как если в меню есть ссылка и на нее нажмут, или если можно выделить текст, то кнопка потеряет фокус (фокус может быть только у одного элемента; фокус определяет, кто получает события с клавиатуры). Нужно сделать чекбокс, и привязать открытие меню к активности (наличию галочки) в чекбоксе.

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

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

Ответы67905

29 сен, 00:44 #706 #1067905

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

Ответы67908

29 сен, 00:51 #707 #1067908

>>1067905

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

Ответы67914

29 сен, 00:58 #708 #1067914

>>1067908
Я к этому пришел в попытке избавиться от лишнего жаваскрипта, ну окей че :3

29 сен, 01:07 #709 #1067917

>>1067894
Спасибо тоже!. Смешно и понятно.

29 сен, 02:48 #710 #1067951

Аноны, новый тред тут >>1067944 (OP)

Этот уже тонет, перебирайтесь. Если я кому-то не ответил, напомните о себе в новом треде. Анонов со студентами постараюсь в ближайшее время проверить.

Ответы68267

29 сен, 14:12 #711 #1068058

>>1067885
еще в методах класса можно вернуть обьект, чтобы совершать с ним различные манипуляции типа
$govno->save()->execute() и так далее

Ответы68117

29 сен, 17:00 #712 #1068117

>>1068058
Охуел когда впервые такое увидел, причем это было что-то в контексте блядь:
$this->db->get('*')->from('users')->where('keke>1')->order_by('yourmom');

29 сен, 18:20 #713 #1068153

Вопрос.
Исходные данные: Yii2 advanced.
Суть вопроса: можно ли сделать чтобы обычная аутентификация и к примеру любая другая аутентификация вроде HttpBasicAuth работали независимо друг от друга?

29 сен, 20:20 #714 #1068249

Нуб не может настроить связку php и apache.
В конфиге апача прописываю LoadModule php7_module "c:/php/php7apache2_2.dll"
AddType application/x-httpd-php .php .htm .html

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

Ответы6826768323

29 сен, 20:49 #715 #1068267

>>1067951
>>1068249

29 сен, 22:38 #716 #1068323

>>1068249

В логах ошибок веб-сервера что-нибудь есть? Алсо, для html не надо указывать PHP в качестве обработчика.

30 сен, 00:10 #717 #1068357

Напомню, что новый тред тут >>1067944 (OP) . Этот тред закрыт, если вам не ответили, напомните о себе в новом треде.

>>1061501

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

>>1060331

Нужно использовать привязку к краям строки (^ и $), без нее регулярка проверяет на соответствие только часть строки, а не всю ее целиком.

30 сен, 11:56 #718 #1068489

Есть ли разница и имеют ли различия кавычки одинарные '' и двойные ""?

Ответы69686

2 окт, 19:50 #719 #1069686

>>1068489

Новый тред уже в другом месте, а на твой вопрос могу дать ссылку на мануал где описана разница: http://php.net/manual/ru/language.types.string.php

Тред утонул или удален.
Это копия, сохраненная 6 октября 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion