«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.

Клуб изучающих PHP #74 Аноним 2016/03/30 06:54:22  №702800 [Просмотреть]
14593100629480.png (33, 500x500)
500x500
14593100629491.jpg (157, 1024x683)
683x1024
14593100629522.jpg (194, 1024x768)
768x1024
14593100629563.jpg (202, 1024x768)
768x1024
Добро пожаловать в наш уютный тред. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>689537 (OP) (1000 постов!)

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

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

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

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

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

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

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

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

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

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

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

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2016/04/12 22:51:43  №715026
>>713959

> $lettersRus[0] = '/A/';
> $lettersRus[1] = '/a/';
> $lettersRus[2] = '/B/';
> $lettersRus[3] = '/C/';
это слишком горомоздко, и надо следить за номерами. Очень неудобно. Лучше записать так:

'...' => '...',
'...' => '...',
...

Более того, тут не нужна мощь регулярок и хватит просто strtr.

> [а-я]+([a-z]+[а-я]*)+
Можно было чуть проще: русские буквы, за ними латинская, за ними любые.

Там у тебя явная копипаста для русских и латинских слов. Избавься от нее с помощью функций.

>>714337

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

> for ($x; $x < $numberOfEmployees;
Это не будет правильно работать, второй цикл будет отсчитываться не с нуля. И какой смысл вообще писать

$x

Это выражение ничего не делает, его можно вообще пропустить.

>>714423

А почему он должен работать? Почитай внимательно как работает ~.

>>714823

Не знаю. Если в PSR не написано то можно как угодно делать. Я не пишу обычно.


переход Аноним 2016/04/12 22:52:55  №715029
Аноны, переходите в новый тред >>715010 (OP)

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

Этот тред закрыт. не пишите здесь больше.
Аноним 2016/04/13 01:50:42  №715225
b

Клуб изучающих PHP 73 Аноним 2016/03/16 08:47:14  №689537 [Просмотреть]
14581072347800.png (33, 500x500)
500x500
14581072347811.jpg (157, 1024x683)
683x1024
14581072347842.jpg (194, 1024x768)
768x1024
14581072347883.png (3449, 1920x1080)
1080x1920
Добро пожаловать в наш уютный тред. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>678185 (OP) (1000 постов!)

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

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

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

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

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

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

- Для начала установи Апач + PHP (советы ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Ответы 30 марта - ООП Аноним 2016/03/31 20:28:15  №704370
>>702614

Ой-ой, это совсем не ООП. Массивы на массивах и массивами погоняют. Вот тебе паста:

--------

Когда ты решаешь задачу на ООП, ты должен ответить на вопросы:

— какие есть сущности, для которых мы сделаем классы? (Сотрудник и Департамент, может быть еще Компания?)
— какие у них есть свойства (у Сотрудника есть ранг, базовая ставка, профессия, является ли боссом). Потребление кофе или зарплата не являются свойствами так как они вычисляются из других свойств и хранить их не надо.
— что мы хотим от них получить (какие у них должны быть методы). Например мы хотим узнать сколько сотрудник заработал или сколько он пьет кофе. От департамента мы наверно хотим получить сколько всего выпито кофе и заплачено денег.
— как сущности связаны? Очевидно, Сотрудник работает в каком-то Департаменте.

Также, сразу скажу еще один совет: гораздо удобнее сделать не один класс Сотрудник, а 4 класса: Инженер, Менеджер, и т.д. Тогда мы можем легко менять например правила расчет зарплаты или кофе для каждой профессии. Естественно, копипастить одинаковый код в 4 класса не надо — создай базовый абстрактный класс Сотрудник и унаследуй от него 4 класса-профессии. Правда в этом случае мы не можем поменять профессию сотрудника.

Наследование позволяет создавать класс не с нуля. а расширяя сущетсвующий класс: http://php.net/manual/ru/language.oop5.inheritance.php

«Абстрактный» — это класс, объект которого нельзя создать. Он предназначен для наследования от него других классов: http://php.net/manual/ru/language.oop5.abstract.php

Также, ты должен для всех полей и методов расставить модификаторы доступа (pubic, private, protected - они определяют, откуда можно обращаться к полю или методу). Ты должен подумать логически и для каждого поля/метода определить: это часть кода, которая относится к внутренней логике класса и не должна быть доступна снаружи, или же это часть кода, которая должна быть доступна. Ну к примеру, в Департаменте метод посчитатьОбщиеЗатратыНаЗарплату() должен быть публичным - для этого мы и пишем класс, чтобы считать затраты.

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

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

--------

Теперь пройдемся по коду.

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

Вот у тебя класс Employees. Он видимо представляет группу однотипных работников. Первый недостаток виден сразу: а что если нам надо наградить или повысить зарплату части группы? Как ты это будешь делать? А если нам надо уволить пару человек и добавить пару новых?

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

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

$employee = new Employee(...);
$marketing->addEmployee($employee);

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

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

> 'Me'=>500,
Для обозначения вещей вроде профессий надо использовать константы классов, а не текстовые строки. А то опечатаешься и никто не заметит.

> $this->boss['position'] = $position;
> $this->boss['rank'] = $rank;
Непонятно зачем тут массив. Что тебе мешает напрямую значения в полях объекта хранить, а не усложнять все?

Более того, у тебя там куча аргументов в конструкторе и даже непонятно какого они типа и что хранят. Например что такое rates? Это понять невозможно.

Далее, класс EmployeeOrder. Посмотрим на его конструктор:

construct($workers, $coffe)

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

Далее, ты зачем-то копируешь данные:

> $this->employees[] = $worker->employee;
Это плохая идея. Когда у тебя 2 копии данных, непонятно как их обновлять и какая из них правильная.

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

Далее,

> $this->department = $worker->department;
Эта строчка стоит в цикле и получается у нас сохранится толбко последнее значение. Зачем это?

> $this->rates = $worker->rates;
А это строчка после цикла и опять же непонятно почему мы копируем rates только из последнего объекта.

> function crysis()
Имена функций начинаются с глагола.

> if (!function_exists('multisort')) {
> function multisort($array, $index)
Что это за ерунда? Почему ты внутри класса создаешь динамически новые функции? Как такой код отлаживать когда функции в нем появляютяс когда хотят? И вообще, разве это задача класса EmployeeOrder создавать функции сортировки? Уверен он не для этого делался.

Далее, тут видна ошибка:

> new Department((new EmployeeOrder($workers1, $coffe)), $documentation),
Почему мы в конструткто Департамента передаем АнтикризисныйКомитет? А в Комитет передаем работников и какое-то кофе? Это же странно.

АнтикризисныйКомитет это отдельная сторонняя сущность. Ты даешь ему Компанию (или Департамент) и он выполянет над ней антикризисные действия:

$comittee = new AntiCrisisComittee;
$comittee->applyPlan1($company);

Вот и все. Не надо усложнять. Заметь что в моем варианте Комитет способен обработать аж несколько компаний по очереди.

Не надо 3 раза создавать все департемаенты. Изучи оператор clone и сделай чтобы компанию можно было клонировать со всеми департаментами и работниками:

$company2 = clone $company;

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

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

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

Я вижу ты там еще одну задачу на ООП запостил - сначала надо ее сделать идеально тогда.
Ответы 30 марта - ООП Аноним 2016/03/31 20:28:38  №704373
>>702661

> public function getSalary()
не учитывается повышенная оплата овертайма

> construct($name, $rate)
Он обычно пишется первым среди методов

> if ($hoursAWeek <= 40) {
> $normalHours += $hoursAWeek;
Используй min/max

Число 40 там повторяется много раз, вынеси его в константу класса.

> function getNormalSalary($normalHours, $rate)
Это должно быть методом класса. Идея ООП в том что мы в классе заключаем, инкапсулируем данные и методы для работы с ними. Объект это такая самостоятельная часть программы, которая умеет что-то делать сама по себе. Нет причин выносить этот метод из класса.

> function padRight($x, $y){
Слишком сложно, тут хватит mb_strlen и str_repeat.

> // Цикл для удаления части имени работника
Это должно быть сделано методом в классе

> $employee->name = preg_replace('/( )([А-ЯЁ])([а-яё]+)/u', ' $2.', $employee->name);
Ты безвозвратно перезаписываешь полное имя. Как его достать обратно? Менять поле name можно только в случае если работник поменял свое имя.

> for ($i = 0; $i < count($allHours); $i++) {
тут нужен foreach

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

Тред закрыт Аноним 2016/03/31 20:32:29  №704379
Это тред закрыт. Не пишите здесь больше. если вас забыли или пропустили - напишите о себе в новом треде: >>702800 (OP)


Клуб изучающих PHP 72 Аноним 2016/03/06 14:54:50  №678185 [Просмотреть]
14572652905850.png (33, 500x500)
500x500
14572652905861.jpg (157, 1024x683)
683x1024
14572652905892.jpg (194, 1024x768)
768x1024
14572652905933.jpg (435, 600x900)
900x600
Добро пожаловать в наш уютный тред. Тут мы не флудим, а изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>664784 (OP) (почти 1000 постов!)

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

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

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

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

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

- Для начала установи Апач + PHP (советы ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Ответы 14-15 марта Аноним 2016/03/18 04:59:34  №691328
>>688177

> $splitText = mb_split("\n", $text);
тут не нужны регулярки, хватит и explode. И кстати раз ты используешь эту функцию, ты в курсе чем регулярки в ней отличаются от регулярок в preg_split? там ведь другой синтаксис.

> if ($maxLength < mb_strlen(trim($str))){
> $maxLength = mb_strlen(trim($str));
Макс. длину можно посчитать одной строчкой с использованием array_map. Хотя твое решение с вычислением длины на каждом шаге довольно оригинальное, но стоит как минимум добавить комментарий, иначе можно не заметить это. ну и в общем не очень хлрошо менять условие цикла по ходу его выполнгения, труднее предсказать как будет работать код.

> trim($str)
Это скопировано 3 раза, надо выносить в переменную.

>>688417

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

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

>>688422

гугли

Алсо можешь рещить наши задачи про вектор и кошки-мышки.

>>689065

Теперь верно.
Ответы 15-16 марта Аноним 2016/03/18 04:59:53  №691329
>>689080

Можно функцию написать, там немного наверно.

>>689161

А где вариант с антикризисными мерами?

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

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

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

То же самое с департаментом. Вот у тебя есть публичное свойтсво personelAmount. Если я добавлю или удалю работника - оно обновится?

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

>>689217

Хорошо, только выучись сначала.

>>689320

Решено верно.

>>689422

Правильно.

>>689487

> Регулярка получилась конечно длинная и нечитабельная, но таков уж синтаксис. Наверное все-таки удобнее было бы перенести часть логики в js или php.
Именно так и надо делать. Виноват не синтаксис, а тот кто написал слишком сложнео выражение.

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

Аноним 2016/03/18 05:07:59  №691332
Этот тред закрыт. Новый тред >>689537 (OP)

Чат изучающих PHP 71 Аноним 2016/02/24 07:41:29  №664784 [Просмотреть]
14562888895270.png (33, 500x500)
500x500
14562888895281.jpg (157, 1024x683)
683x1024
14562888895312.jpg (194, 1024x768)
768x1024
14562888895353.png (364, 1920x1080)
1080x1920
Добро пожаловать в наш уютный чатик. Тут мы не флудим, а изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>649329 (OP) (больше 1000 постов!)

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

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

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

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

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

- Для начала установи Апач + PHP (советы ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Ответы Аноним 2016/03/10 19:01:20  №682839
>>678250

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

Также, цвета хорошо бы сделать как на картинке.

>>678255

> span {
> display: inline-block;
Вообще-то это неправильно. Вот смотри что будет если выделенный текст занимает несколько строк: https://jsfiddle.net/smpwuf8k/1/ - этот текст вырывается в отдельный блок. Изучи как ведет себя свойство display: inline, чем инлайн-элементы отличаются от инлайн блоков - это важно. И конечно читай учебник на сайте softwaremaniacs если ты его еще не читал.

>>678285

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

Отступы между пунктами меню надо сделать больше.

Шрифт не тот - там требушет. Цвет заголовка не тот.

Почему заголовок сделан тегом h3? Почему ты именно его выбрал? Что значит цифра 3 тут?

> div {
> padding: 5px 10px;
Это неправильный селектор. Вот захочет кто-то доабвить на страницу новый блок, а к нему твои паддинги применятся. Надо применять правила только к своим элементам, а не ко всему подряд.

> <div class="title">
> <h3>ООО АГРОСЕРВИС</h3>
Зачем тут div.title?

Если текста много, он заваливается на меню: https://jsfiddle.net/t03a2v4q/3/

Если в тексте есть цветной див, он проваливается под меню: https://jsfiddle.net/t03a2v4q/4/

Если убрать меню, текст уедет влево.

Нужно исправить все эти недостатки и сделать более надежную и прочную верстку.

>>678439

Да, я мог перепутать.
Ответы Аноним 2016/03/10 19:02:36  №682842
>>679502

1) не пишу. Если курсы серьезные то можно указать.
2) не пишу, бред же.
3) скриншот + краткое пояснение что я делал

>>680264

Тебе надо разобраться в обработке ошибок и исключениях. Как по твоему надо обрабатывать ошибки? Читай урок про исключения, https://gist.github.com/codedokode/65d43ca5ac95c762bc1a

>>680581

### переносы строк и br

Чтобы переносы строк нормально работали и в браузере и в ideone (и в консоли), можно использовать для этого \n, а в начале программы поставить

header("Content-Type: text/plain; charset=utf-8");

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

Иначе перенос строки будет в исходном коде страницы (его можно увидеть нажав Ctrl + U), но на самой странице его не будет.

> Зачем в еcho переменные пишутся в скобках:
мануал http://php.net/manual/ru/language.types.string.php#language.types.string.parsing
Тред закрыт Аноним 2016/03/10 19:03:41  №682844
Не пишите больше тут, переходите в новый >>678185 (OP)

Если я вас пропустил, напомните о себе в новом треде.

Чат изучающих PHP #70 Аноним 2016/02/10 19:59:42  №649329 [Просмотреть]
14551235823870.png (33, 500x500)
500x500
14551235823881.jpg (157, 1024x683)
683x1024
14551235823912.jpg (34, 650x384)
384x650
14551235823923.jpg (118, 1024x768)
768x1024
Добро пожаловать в наш уютный чатик. Тут мы ~~флудим~~ изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>639138 (OP) (больше 1000 постов!)

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

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

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

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

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

- Для начала установи Апач + PHP (советы ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, хотя бы основы
- Далее простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Ответы 22 февр Аноним 2016/02/24 07:29:12  №664780
>>663444

> $returnText = "";
лишняя строчка

> $pattern = array(
> "/^\w/u",
> "/\.\s*\w/u"
Можно объединить в одну регулярку

>>663720

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

> $splitSentence
$sentences

> $wordsSentence
$words

> $result = $result.
.=

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

>>663742

> https://jsfiddle.net/kxh8b4pm/
Верно

> 5. https://jsfiddle.net/qpcrgpyk/

> var innerArguments = [].concat(outerArguments);
Можно просто outerArguemtns.slice().

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

> 6. https://jsfiddle.net/92kh90af/
> var fn = arguments[0];
Лучше прописать fn в заголовке функции в скобках

> } else {
> innerArguments.push(outerArguments);
> } else {
> innerArguments.push(outerArguments);
Попробуй убрать повтор кода.

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

> 8. https://jsfiddle.net/p0bsypcw/
Верно
Ответы 23 февр Аноним 2016/02/24 07:29:33  №664781
>>663790

Через командную строку

>>664386

> ^([а-яё]|[a-z]|\\s){1,}.$
У нее привязка к началу и концу строки. То есть она может либо захватить всю строку целиком либо ничего. Ну и квантификаторы жадные то есть {1,} стремиться получить как можно больше повторений.

>>664493

Откуда ты знаешь что не пригодится?


>>664498

Ты на ideone в stdin что-нибудь написал?
Миграция - тред закрыт Аноним 2016/02/24 07:44:25  №664786
Аноны, переходите в новый тред >>664784 (OP)

Этот тред закрыт. Если вам не ответили, пропустили вас - напомните о себе в новом треде.

Не пишите здесь больше.

Клуб изучающих PHP с нуля 69 Аноним 2016/01/31 09:40:30  №639138 [Просмотреть]
14542224305260.png (33, 500x500)
500x500
14542224305261.jpg (157, 1024x683)
683x1024
14542224305302.png (187, 853x480)
480x853
14542224305343.jpg (194, 1024x768)
768x1024
Добро пожаловать в наш уютный тредик. Потеплело ли у вас? Тает ли снег? А тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>629822 (OP) (почти 1000 постов!)

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

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

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

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

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

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2016/02/13 13:26:51  №652222
>>647805

Я написал выше, надо проверить на большом списке телефонов.

>>648440

Мой недописанный урок по HTTP, может что полезное найдешь https://github.com/codedokode/pasta/blob/master/network/http.md
Урок по ссылкам: https://github.com/codedokode/pasta/blob/master/network/urls.md

>>648554
>>648543

Найти макс. длину строки можно проще. Допустим у нас есть массив строк. Функцией array_map + mb_strlen ты можешь получить из него массив длин строк. После чего остается найти максимальное число в массиве стандартной функцией.

> array_push($countedLetters, $count);
короче писать $countedLetters[] = $count;

> for ($i = 0; $i <= count($letters); $i++) {
Для обхода массива удобнее исплоьзовать foreach. Также, если тебе надо обработать массив функцией count, то можно вместо цикла использовать array_map.


>>648581

Не бойся, разберешься.

>>648635

> Если бы сейчас сам начинал учить, пошел бы в PHP или в питон/ноду, скажем? Думаю, туда ли направил стопы.
Вполне возможно, Питон хороший язык, рекомендую, а вот ноду для больших приложений не посоветую - там же ни классов ни тайп хинтов ни ООП нормального. Разве что использовать расширения вроде TypeScript, добавляющие строгости.

> И вообще, меня ужасно бесит внешне этот язык, я совсем его хуево понимаю со всеми этими бесконечными цепочками анонимных функций и прочим.
Потому что ты его плохо знаешь. Пройди наш курс задач на JS/DOM.

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

>>648647
>>648648

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

Обговаривать стоимость и условия оплаты работы (по часам, по дням, за все) надо до ее выполнения.
Аноним 2016/02/13 13:27:45  №652223
>>648735

> foreach($pieces as $key => $piece) {
> $symbols[$key] = ...
Тут $key не нужен, можно писать $symbols[] = ...

> Считаем количество символов во всех вложенных массивах
Используй array_map вместо цикла.

> @$symbols[$i];
Это быдлокодинг. Надо проверять есть ли символ в массиве, а не делать ошибки, а потом глушить их.

> $count = count($count);
Неправильно использовать одну переменную для разных вещей: массива символов и числа

> array_push($countedSymbols, $count);
можно как $countedSymbols[] = $count

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

> Выводим построчно первые и последующие символы в массиве
Тут незачем писать результат в переменную, можно сразу выводить через echo

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

> Потом нашёл непонятное решение в Сети: $count = @$symbols[$i]; - ставим "собаку" перед массивом,определяем его таким вот образом именно как массив
Нет, не так, @ подавляет вывод сообщений об ошибках в выражении: http://php.net/manual/ru/language.operators.errorcontrol.php (я нагуглил по слову "php at operator")

Не используй его.

>>648835

> а что такое неявный сброс буфера?
Когда ты что-то выводишь через echo,для повышения производительности PHP копит данные в буфере, а например по символу перевода строки или по превышению размера буфера отдает данные на вывод (в консоль или апачу для передачи в браузер). Это помогает повысить производительность так как вывести/передать 1 раз 100 символов выгоднее чем 100 раз отдать по 1 символу.

Это не совсем особенность PHP, буферизация работает и в стандартных функциях языка Си, а интерпретатор PHP тоже ведь на нем написан.

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

http://php.net/manual/ru/function.ob-implicit-flush.php

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

В твоем примере кода, мне кажется ob_implicit_flush(false); не нужна, так как там с помощью ob_start() включено сохранение всех выводимых данных в другой, вышестоящий буфер - ты можешь поменять false на true и скорее всего ничего не изменится.

>>648966

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

>>648982

Погугли.

>>648997

Заходит иногда

>>649122

Для начала неплохо, но надо доработать. Твоя программа ищет латинские буквы в русских словах, а как насчет русских букв в латинских словах? Вроде hеllо где E и O - русские.




Аноним 2016/02/13 13:30:40  №652227
Ну все, я всех проверил, всем дал ответы. Если вас забыли или пропустили - напомните о себе в новом треде >>649329 (OP)

Этот тред закрыт окончательно.

Клуб любителей изучать PHP 68 Аноним 2016/01/20 06:43:59  №629822 [Просмотреть]
14532614398610.png (33, 500x500)
500x500
14532614398621.jpg (157, 1024x683)
683x1024
14532614398652.png (364, 1920x1080)
1080x1920
14532614398733.jpg (135, 1280x720)
720x1280
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>619873 (OP) (почти 1000 постов!)

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

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

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

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

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

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.

Нажмите Просмотреть, чтобы открыть.
ответы 27-31 Аноним 2016/02/03 01:40:26  №641541
>>638432

> throw new Error("Аргумент "+ arguments+" не является элементом сети");
Подставлять объект в строку не стоит, так как если его не удастся преобразовать к строке, то будет ошибка. Лучше указывать номер аргумента.

> if (this._elements.getPowerProduction) {
Что-то мне не очень нравится, что функция может быть, может не быть. Не проще ли в базовом классе сделать эту функцию и возвращать ей ноль? Ну или если у тебя все завязано на классы Generator/Consumer то сделать проверку что объект является их наследником. Хотя мне кажется проще функции сделать в базовом классе.

>>638457

Пруфы?

>>638469

> Его нужно применять чтобы классы как бы не пересекались с друг другом, а как бы первый класс передавался на вход другого,
Это называется зависимости - одному объекту для работы нужен другой. Вполне обычная ситуация. Идея DI в том что объект не должен сам искать или создавать свои зависимости, а в том что ему передает их снаружи тот кто его создал. Обязательные зависимости через конструктор, необязательные через метод-сеттер (необязательные - это например объект-логгер - работать можно и без него, только логи никуда не пишутся).

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

> В этом классе делать метод setRegistrationHelper(RegistrationHelper $reghelper) и вызывать его далее:
> Мне все равно придется писать где-то в начале $reghelper = new RegistrationHelper()
Верно, где-то нам все равно надо создать объекты. Тут есть такие варианты:

1) создавать их в скрипте инициализации, bootstrap или init, если их немного
2) сделать контейнер или сервис локатор, который умеет их создавать. Создать контейнер в скрипте инициализации и передавать в контроллер. А контролллер из контейнера получает нужные ему объекты-сервисы. Только не злоупотребляй этим - не надо контейнер передавать везде, иначе мы опять получаем что неясно от чего зависит класс.

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

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

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

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

Смотри как статические методы отравляют код. Если тебе в RegisterHelper нужен например маппер, тебе придется его создавать там внутри. А тому нужен ПДО - надо опять же его создавтаь. Вот так все получается намертво спутано - мы не можем взять и вместо PDO передать какой-нибудь объект который например логгирует все походящие через него запросы.

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

Я же писал в уроке, DI позволяет нам разделить классы, это как устройства с разъемами, которые соединены проводами и которые можно переподключать. А статические методы это когда все намертво припаяно друг у другу.

> будут ли от них избавляться(или уже избавились)?
Нет. Избавляться мы будем от засилия статических методов и спутанного кода.

> Извиняюсь что так много вопросов, просто я совсем не понимаю это.
Задавай еще. Важно разобраться.

>>638474
> Здесь мне тоже нужно будет пользоваться инъекциями зависимостей?
> public function addStudent(Student $student, Container $container) {
Это какая-то странная зависимостей. Ты пока не понял принцип. Какой смысл в addStudent передавать какие-то лишние объекты? Контейнер всегда один и тот же, значит незачем его передавать каждый раз, можно один раз его передать при создании объекта.

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

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

То есть давай я попробую повторить принципы хорошего кода:

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

Часть этих принципов не относится к контроллеру. Например, в контроллер можно передавать конейтнер и не обозначать четко его зависимости (хотя есть и те кто считает что это плохо).
Ответы 27-31 Аноним 2016/02/03 01:41:11  №641542
>>638595

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

>>638647

Хорошо, а теперь убери еще строчки которые повтряются 2 раза:

> $paymentTotal = $paymentTotal + $creditBalance;
> $creditBalance = $creditBalance - $creditBalance;

>>638700

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

>>638849

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

>>639092

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

>>639114

> PHP Notice: Undefined variable: paymentTotal in /home/LwUcTo/prog.php on line 9
> PHP Notice: Undefined variable: paymentTotal in /home/LwUcTo/prog.php on line 9
Ошибка из-за обращения к еще не существующей переменной. Надо исправить.

Выражение ($credit * $percent) + $commission повторяется 3 раза, надо бы избавиться от повтора.

Если поставить сумму в 1000 р то считает неправильно - во втором банке должно быть 2030 р, а не 2940: http://ideone.com/kzHxKh

Пока не годится.
Тред закрыт Аноним 2016/02/03 01:43:42  №641543
Все, тред закрыт. На все вопросы даны ответы. Если кого-то пропустиили или забыли - напомните о себе в новом треде >>639138 (OP)

Не пишите здесь. Никто вам не ответит. Идите в новый тред.

Клуб изучающих PHP 67 Аноним 2016/01/06 08:09:59  №619873 [Просмотреть]
14520569993670.png (91, 500x500)
500x500
14520569993691.png (979, 1024x683)
683x1024
14520569993722.png (333, 1920x1080)
1080x1920
14520569993793.png (718, 843x1200)
1200x843
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>612122 (OP)

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

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

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

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

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

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- 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://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2016/01/20 06:37:57  №629821
>>628112

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

>>628119

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

>>628125

На идеоне неудобно писать больше 20 строк. В ОП посте есть уроки по установке апача и пхп, и поставь себе редактор или ИДЕ. Саблайм текст и нотепад++ оба очень легкие и работают даже на слабом железе.

>>628281

> var fn = [].shift.apply(arguments);
arguments это не настоящий массив и не переменная, а псевдопеременная. Не стоит ее менять, только читай из нее. fn лучше указать в скобках.

Ошибки у тебя есть. Например если в arguments много аргуменитов, а в args мало (названия кстати не очень удачные, лучше inner/outer наверно) то лиишние аргументы из arguments должны идти в конец списка, а у тебя не идут:

partialAny(fn, 1)(2, 3, 4, 5) -> fn(1, 2, 3, 4, 5)
Тред закрыт Аноним 2016/01/20 06:48:32  №629827
Этот тред закрыт. Переходите в новый >>629822 (OP)

Не пишите здесь больше.

Ответы на посты с 18 по 20 января будут здесь сегодня или завтра. ответы на посты по 17 января идут выше. Если вас пропустили - напомните о себе в новом треде.

Этот тред закрыт.
Аноним 2016/01/23 08:39:41  №632587

Клуб изучающих PHP 66. Предновогодний часть три. Аноним 2015/12/25 16:35:20  №612122 [Просмотреть]
14510505203380.jpg (113, 360x352)
352x360
14510505203391.jpg (1816, 1800x768)
768x1800
14510505203532.jpg (220, 604x396)
396x604
14510505203543.png (431, 800x500)
500x800
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>597909 (OP) (OP)

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

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

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

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

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

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
http://integer64.github.io/ Аноним 2016/01/08 12:27:14  №621519
>>619554

>>>Почему width 100%?
> Гугль дал такое решение для адаптивности картинок
Мне не нравится то что с width 100% мы в теории можем получить ситуацию когда картинка будет увеличена. Надо бы посмотреть нельзя ли заменить это на max-width: 100%;

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

> Задача 11:
>>>перемещаться с клавиатуры, клавишами Tab, Shift + Tab, стрелками, пробелом.
> Реализовал, добавил для checkbox на :focus бордер тень,что бы было видно.
Это хорошо, я вижу тень на нижнем переключателе. А на верхнем - нет. Нужен скриншот/гифка?

Также, я заметил что при клике по нижнему переключателю он обводится рамкой. А вот если сделать обычные чекбоксы https://jsfiddle.net/n6f37jna/1/ - то они обводятся рамкой только при навигации с клавиатуры, при клике не обводятся. Почему так? я решил сам разобраться, сделав такой пример:

https://jsfiddle.net/n6f37jna/3/

Тут в Хроме как при клике, так и при клавиатурной навигации чекбокс становится большим (то есть получает фокус). Но только в случае клавиатурной навигации появляется синяя рамка. Видимо дело в свойстве

:focus {
outline: -webkit-focus-ring-color auto 5px;
}

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

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

Задача 12
> Переделал, совсем без id у меня не получилось, надо было как то input с label связать. Может быть есть другое решение.
Можно через классы, можно через атрибуты. Без них можно таким интересным способом: http://chikuyonok.ru/2009/04/dl-tabs/ но он не поддерживает вывод заголовков вкладок в несколько рядов.

http://integer64.github.io/site-layout/exercise/exercise12.2/index.html
Это выглядит хорошо. Только с фоном страницы косяк - если сильно уменьшить масштаб или взять большой монитор то фон плохо стыкуется. Советую заменить фоновую картинку на CSS3 градиент, а то жалко хорошую работу таким багом портить.

> data-header="Tab 1"
Лучше наверно просто data-tab="1", зачем тут слово Tab?

Ну и если делать совсем идеально, я бы еще для имен классов применил БЭМ. Ну это не обязательно, меня и в нынешнем виде устраивает, хорошее решение. Старайся и дальше при верстке продумывать такие вещи как: независимость блоков (стили не должны конфликтовать с другими блоками страницы, блоки должны иметь возможность вкладываться друг в друга), слишком длинные или слишком короткие заголвоки, отображение на маленьких экранах.
Аноним 2016/01/08 12:28:04  №621520
>>619583

> Первая http://pastebin.com/Q5CLkzck
Все правильно.

> Вторая http://pastebin.com/6w0GqbW
Тоже верно.

> Третья http://pastebin.com/G4kUKzeL

> if ($anonSum > $compSum) {
> if ($anonSum < $compSum) {
> If ($anonSum == $compSum) {
Тут лучше все ифы в программе объединить в один блок if ... elseif ... elseif .. .else чтобы было видно что возможен только один из 4 вариантов. А exit убрать за ненадобностью.

> Стоило ли их вообще тут постить,
Ну видишь, совет получил полезный.

>>619650

Код бы запостил.

>>619651

Отвечал вроде в новом треде - давай конкретные примеры.

>>619742

undefined index значит что ты пытаешься получить индекс массива котрого там нет, то есть не передан id. Надо переделать, чтобы обращаться к этому индексу только если он там есть.

Насчет 502 ошибки - не знаю, это что-то другое.

>>619807

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

[^\\s] значит «один любой символ кроме пробела». Это наверно не то что требуется.

>>619816

Вроде в новом треде прокомментировал? Если нет, запости в новый тред.


Аноним 2016/01/08 12:29:17  №621522
Все задачи проверены. Если я кого-то не проверил - пишите в новом треде >>619873 (OP)


Клуб изучающих PHP 66. Предновогодний часть два. Аноним 2015/12/17 03:04:08  №605630 [Просмотреть]
14503106484290.jpg (430, 1024x768)
768x1024
14503106484311.jpg (1238, 1680x1050)
1050x1680
14503106484442.png (518, 800x500)
500x800
14503106484463.png (388, 800x600)
600x800
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

Предыдущий тред был тут: >>597909 (OP)

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

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

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

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

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

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

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

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

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

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по 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

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2015/12/27 01:50:30  №613296
>>612071

По коду в таблице utf-8 либо вставив символ.

if ($char == '-'_) ...
if ($char == "\x12\x34") ... где 12 34 - шестнадцатеричный код тире в кодитровке utf-8. Коды можно глянуть тут http://unicode-table.com/ru/
Аноним 2015/12/27 01:51:05  №613297
>>612099

Можно, смотри пост выше.
Аноним 2015/12/27 01:52:30  №613298
Этот тред закрыт Не пишите в нем. Если вас не проверили, не ответили, не заметили - переходите в новый тред и напомните о себе там: >>612122 (OP)

Все в новый тред >>612122 (OP)