Этого треда уже нет.
Это копия, сохраненная 14 февраля 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
33 Кб, 500x500
157 Кб, 1024x683
187 Кб, 853x480
194 Кб, 1024x768
Клуб изучающих PHP с нуля 69 #639138 В конец треда | Веб
Добро пожаловать в наш уютный тредик. Потеплело ли у вас? Тает ли снег? А тут мы изучаем язык 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) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
56 Кб, 500x644
93 Кб, 561x800
3449 Кб, 1920x1080
Как писать код и как помогать анонам #2 #639139
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.

Если тебе лень выравнивать код руками, закачай его на 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/php-fig/fig-standards/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/php-fig/fig-standards/blob/master/accepted/ru/PSR-2-coding-style-guide.md

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

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

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

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

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

Объясняй

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

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

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

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

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

Если тебе лень выравнивать код руками, закачай его на 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/php-fig/fig-standards/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/php-fig/fig-standards/blob/master/accepted/ru/PSR-2-coding-style-guide.md

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

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

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

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

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

Объясняй

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

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

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

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

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
#3 #639148
Перешел
#4 #639150
Мне не нравится синтаксис пхп с его $ хуитой.
Что мне делать?
#5 #639152
>>639150
Написать препроцессор, который будет вставлять $ за тебя.
#6 #639190
В пхп используют ТДД, как то ни разу не слышал.
#7 #639221
>>639190
Это вопрос?

Если коротко, то большинство не использует, потому что лень.
Но если стремишься попасть в хорошую контору, то таки используют активнейшим образом.
http://www.phpclasses.org/blog/post/237-7-Reasons-Why-TDD-Failed-to-become-Mainstream.html
Ну и дальше google.com:php test driven development
516 Кб, 1613x1657
2543 Кб, 3008x2000
157 Кб, 1280x918
#8 #639234
>>639139
Это же мой кот, лол.

Добрый день! Мое имя - Сергей, мне 26 лет. "Cижу" я на php, наверно, уже полтора-два года.

Сначала (в первый раз) меня уговорил попробовать php мой шеф. Мы были на работе, в офисе, и говорили о Web-технологиях, как вдруг он сказал, что нужно отредактировать простой php-скрипт: "Я знаю, у тебя получится!".

Сначала я, конечно, был против - "Это же PHP!", я, естественно, был в курсе о слухах, ходивших про него, ОЧЕНЬ МНОГО нехороших слухов. Я предлагал нанять программиста на стороне, но начальник был непреклонен.

Я знал, что php вызывает привыкание - зависимость, если хотите.

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

Ощущения от внесения правок в безвредный php-скрипт невозможно передать!

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

Такое ощущение, что тебе УЖЕ подвластен весь веб, а ведь ты даже еще толком не знаешь тонкостей употребления php...

После этого я сознательно пробовал php еще несколько раз... И с каждым разом мне становилось все хуже. Php затягивал меня. Я украдкой читал форумы про него. Сделал пару сайтов.
Через полгода я понял, что уже не могу остановиться.

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

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

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

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

И чуть не рассталась со мной. Я пообещал ей завязать.

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

А иногда... Мне стыдно об этом говорить....
Мы списываемся по скайпу и вместе программируем. На php.

Моя любимая женщина это видит. Мы много раз с ней говорили на эту тему. "Или я или PHP..." - говорит она.
Я пишу скрипты пока она спит. Я зависим от php...
Даже кот пытается побороть эту зависимость во мне...
Но я не могу... Это сильнее меня... Помогите...
516 Кб, 1613x1657
2543 Кб, 3008x2000
157 Кб, 1280x918
#8 #639234
>>639139
Это же мой кот, лол.

Добрый день! Мое имя - Сергей, мне 26 лет. "Cижу" я на php, наверно, уже полтора-два года.

Сначала (в первый раз) меня уговорил попробовать php мой шеф. Мы были на работе, в офисе, и говорили о Web-технологиях, как вдруг он сказал, что нужно отредактировать простой php-скрипт: "Я знаю, у тебя получится!".

Сначала я, конечно, был против - "Это же PHP!", я, естественно, был в курсе о слухах, ходивших про него, ОЧЕНЬ МНОГО нехороших слухов. Я предлагал нанять программиста на стороне, но начальник был непреклонен.

Я знал, что php вызывает привыкание - зависимость, если хотите.

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

Ощущения от внесения правок в безвредный php-скрипт невозможно передать!

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

Такое ощущение, что тебе УЖЕ подвластен весь веб, а ведь ты даже еще толком не знаешь тонкостей употребления php...

После этого я сознательно пробовал php еще несколько раз... И с каждым разом мне становилось все хуже. Php затягивал меня. Я украдкой читал форумы про него. Сделал пару сайтов.
Через полгода я понял, что уже не могу остановиться.

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

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

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

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

И чуть не рассталась со мной. Я пообещал ей завязать.

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

А иногда... Мне стыдно об этом говорить....
Мы списываемся по скайпу и вместе программируем. На php.

Моя любимая женщина это видит. Мы много раз с ней говорили на эту тему. "Или я или PHP..." - говорит она.
Я пишу скрипты пока она спит. Я зависим от php...
Даже кот пытается побороть эту зависимость во мне...
Но я не могу... Это сильнее меня... Помогите...
1507 Кб, 1199x1799
#9 #639243
ОП, проверь, пожалуйста, задачи на КСС. (не ругай за то, что цвета блоков сделал не как у тебя, а свои выбрал)

Задача 1: https://jsfiddle.net/5bzh0qbz/
Задача 2: https://jsfiddle.net/cc92hueh/
Задача 3: https://jsfiddle.net/2xkms9a5/
Задача 4: https://jsfiddle.net/09hbdraq/
Задача 5: https://jsfiddle.net/kqk41sea/
Задача 6: https://jsfiddle.net/m5yrao5k/
Задача 7: https://jsfiddle.net/xh763seo/
Задача 11: https://jsfiddle.net/0Lvxs3yu/
#10 #639244
Прошу проверить задачу 5.2:
http://ideone.com/EzCByL
#11 #639247
Обьясните пожалуйста за => в php.
#12 #639248
>>639247
Точнее поясните, => используется для того, чтобы обьявить значение ключа в массиве?
#14 #639250
>>639248
да. И не только.

1. когда ты самолично объявляешь ключи в массиве. (как ты и сказал)
2. когда ты в цикле foreach как аргумент хочешь использовать ключ массива наравне со значением.
#15 #639251
>>639249
Ок, спасибо.
>>639250

> хочешь использовать ключ массива наравне со значением


Имеется в виду значение ключа, верно?
#16 #639254
>>639251
ну дачьё ж ещё
#17 #639256
>>639254
Ну а вдруг просто рассматривается сам ключ, типо по имени. Ну хотя да, глупо предположил.
#18 #639260
Почему везде обсирают php?
Ну и отношение типо "пхпмакака" и прочее.
#19 #639261
>>639260
Сам недоумеваю, вместе с php идут JS, HTML, CSS, MySQL и это такой вагон информации, что я лично начинаю думать, что мне не осилить всего
#20 #639262
Хочу задать вопрос - как определять, стоит ли впихать php в html или создавать .php и внутри него писать html?
>>639261
К слову, html & css это разметка, не так уж и тяжело.
JavaScript да, но если собираешься быть backend-разработчиком то не думаю что надо прям все тонкости знать.

Ну и MySQL как я слышал не очень тяжел.
#21 #639264
>>639262

>Хочу задать вопрос - как определять, стоит ли впихать php в html или создавать .php и внутри него писать html?


Вообще желательно чтобы логика была в одном файле, а шаблоны в другом. Ну и очевидно что в таком случае логика работы будет подключать шаблоны по необходимости.
#22 #639268
>>639260
В /pr/, по моему, вообще все языки обсирают.
#23 #639269
Где можно почитать про Базы Данных и как вообще их использовать? Приступаю к задаче на студентов и понимаю, что даже не слышал про mysql
#24 #639270
>>639269
естественно, чтоб объясняли для самых даунов
#25 #639271
>>639270
Инглиш понимаешь?
#26 #639276
>>639221
Просто не встречал этого в вакансиях пхп
А вот для Руби почти всегда.
#27 #639280
#28 #639282
>>639269
И вообще чувствую большую дыру между учебником ОПа и задачей на студентов/файлообменник. Как вы через неё перешагиваете?
#29 #639293
>>639280
Ща скину
#31 #639296
>>639294
Спасибо
#32 #639300
Задача на лайки.
http://sqlfiddle.com/#!9/ee13f2/2
Полгода назад решал ее два дня, теперь справился "всего" за сорок минут.
#33 #639333
>>639300
Как сие запустить?
#34 #639339
Кто-нибудь, кто реально работает пхпистом, покажите свой гитхаб с кодом и всеми проектами, желательно указать локацию и з.п.
#36 #639346
>>639339
Ключ от квартиры сказать где лежит?
#37 #639347
>>639345
Опередил, содомит.
#38 #639360
При нажатии на определённую кнопку, при соблюдении определённых условий, в файле который её обрабатывает происходит удаление определённой записи, после чего при помощи header происходит переброс на страницу, где выводятся все записи из этой базы данных. Как только происходит перенаправленные, запись ещё выводится (при этом в базе данных её уже нет), если перезагрузить страницу, то она исчезает. Как сделать так, чтобы сразу после перенаправления она не выводилась.
#39 #639365
>>639360
Проверь настройки кеширования в своей определенной cms.
#40 #639370
Хочу задать вопрос по HTML. Я заметил, что многие теги как бы ни о чём - тот же <em> и <i>, те же <article> <span> <p> <div>, они не несут какой-то смысловой нагрузки и отличия, их только принято использовать для разных целей. Прав ли я?

Также заметил, что можно спокойно придумать свой тег типа <pidor> и спокойно использовать его, присваивая ему class или style. Если тестить в редакторе, то всё работает, но почему так никто не делает?
60 Кб, 757x334
41 Кб, 787x384
#41 #639392
Второе же задание по первой ссылке невыполнимо. Проплакал два часа.
#42 #639393
>>639127
Спасибо. Есть несколько непонятных моментов.

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


Но здесь http://php.net/manual/en/function.error-reporting.php написано

> error_reporting — Sets which PHP errors are reported


и ниже в примерах:

> // Report all PHP errors


> error_reporting(-1);


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

> Также, лучше не использовать при формировании URL конструкции вроде {$_SERVER['SCRIPT_NAME']} - надежнее просто прописать конкретное название скрипта. Ведь лучше когда результат вызова функции возвращает один и тот же URL, а не надеется на то, что скрипт называется определенным образом.


Ничего не понял. Кто на что надеется?
Что если нам понадобится переименовать наш index.php? Менять названия руками?
#43 #639401
>>639127
Ещё говорят в Postgres'е нет unsigned типов.
#44 #639407
>>638457
Бамп.
#45 #639410
>>639392
Ссылку на идеван вбрось и условие
#46 #639412
>>639410
Нужно сделать, чтобы 200 долларов можно было обменять на 6448 рублей. Не думаю, что ссылки на код тут помогут.
#47 #639413
>>639392
Закрывать пхп лучше не надо, если у тебя там только пхп код и хтмл нету. Жду этого >>639410
#48 #639419
>>639393
А зачем ты там вообще используешь error_reporting? Мне кажется легче было бы настроить интерпретатор так, чтобы он выводил все ошибки. А потом, кому надо смогут у себя выключить\включить ошибки в php.ini, без необходимости лезть в код.
#49 #639420
>>639412

>Нужно сделать, чтобы 200 долларов можно было обменять на 6448 рублей.


Ты что, дурак? Ну удачи тебе в поиске курса доллара на момент составления ОПом этой задачи.
#50 #639421
>>639412
У тебя математическая ошибка.
подсказка(сначала сам попробуй решить)Курс доллара не тот.
#51 #639423
>>639413
>>639420
You're no fun.
#52 #639426
>>639423
подсказкаДурак, подставь в екшченж рейт 32.24
#53 #639432
>>639426
Да уж, видимо из меня вышел бы совсем ужасный комик.
#54 #639434
>>639432
Да ты шутил?!
Ну лол, я даже открыл тот файл и сверял.
#55 #639436
После года в этом треде перестаешь воспринимать шутки вообще.
#56 #639437
>>639436
А сколько лет этому треду?
Многие по задачкам опа нашли работу?
#57 #639440
>>639437
Я помню когда-то похожие треды с похожими картинками в /b/ создавались. Это было года 3 - 4 назад.
#58 #639449
>>639419
Чтобы кому надо смогли у себя выключить\включить ошибки в config.php, без необходимости лезть в php.ini.
#59 #639462
>>639333
Нужно установить вишмастер.

>>639300
Какая-то странность с русской локализацией. Не удается добиться названия месяца в именительном падеже, упрямо возвращает родительный.
http://sqlfiddle.com/#!9/6a4b8c/1

update:
Таки удалось получить именительный, за счет установки украинской локали.
http://sqlfiddle.com/#!9/6a4b8c/2
Очень странно. Недоделанный перевод или перемога?
#60 #639467
>>639437
За последние месяцев 8 - человека четыре, наверное, включая меня.
#61 #639468
>>639467
Пили кулстори, сколько прошел, что учил сам, конкретно ты столько учил до того, как пошел работать.
#62 #639470
>>639468
Про зп и место проживания не забудь.
#63 #639472
>>639470
Ну и ссылочки на гитхаб, вконтакт и линкедин.
#64 #639476
>>639468
В 66-м треде пилил. Который уже утонул, азаза.
#65 #639477
>>639472
А еще размер члена, номер страховки и телефона.
#66 #639478
>>639476
Но сейчас из двач-браузера вытащу.
#67 #639483
>>639478
Или не надо?
#68 #639484
>>639483
Надо конечно.
#69 #639487
>>639476
Как тебя там искать?
#70 #639494
>>639462

>Нужно установить вишмастер.


Это не ты там шутил про курс доллара в одной из первых задач ОПа?

Двоих одним ударом
#72 #639499
>>639498
ДС не интересно, изи мод.
#73 #639503
>>639498
Почему отшил те компании?
Какое тестовое было?
Что было на собеседовании с дядьками в чОрных костюмах?
#74 #639504
>>639503
Ну и какая зп.
#75 #639505
>>639300
Я тоже полгода назад решал. В августе.
http://sqlfiddle.com/#!9/5da51/2
#76 #639507
>>639498
Какие у тебя были навыки кроме того, что выложил ОП?
#77 #639519
>>639503
Потому что битриксы.
Набросать архитектуру мини-приложения;
вытащить данные из таблицы с внешним ключом на собственное поле (которое является первичным ключом) и построить по ним древовидную иерархию в виде многомерного массива;
написать SQL-запрос.
Спрашивали, упарываю ли я вещества, есть ли судимость, есть ли тян и другие подобные вопросы.

>>639504
У php-джуниоров в ДС сейчас от 20 до 40 тысяч зарплаты.
#78 #639531
>>639519

>У php-джуниоров


Под джуниорами я подразумеваю стажеров.
#79 #639534
http://ideone.com/6qkMfN
Проверка номера телефона по пасте Опа.
#80 #639559
Нужно найти текст который начинается на 'flv-url=' и заканчивается на ';'. Не могу подобрать регулярку. Помогите, напишите за меня
#81 #639564
Нет, кулстори меня не интересуют, давайте свой оклад в долларах и ссылки на гитхаб, сайты. Я требую пруфов, кукаретники уже заебали.
#82 #639565
>>639346
>>639345

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


ясн
#83 #639568
>>639559
"/flv-url=.*;/Ui"
#84 #639569
Вопрос по CakePHP и Bootstrap. Из коробки формы имеют разную HTML-структуру. Как решается эта проблема?
мимо верстала, далек от PHP
#85 #639576
>>639568
Спасибо. Но как не включать в результат 'flv-url=' и ';'?
1751 Кб, Webm
#86 #639577
>>639564

>Я требую

#87 #639582
Ньюфаг в треде. Как мне выводить всякую хрень вроде "\n" или "$something", чтобы показывался не переход новую строку и значение переменной something, а именно "/n" и "$something",
#88 #639586
>>639576
http://php.net/manual/ru/regexp.reference.assertions.php
Скорее всего так, хотя я ни разу не пользовался данными фишками регулярных выражений:
"/(?<=flv-url=).*(?=;)/"
Либо просто используй подмаски.
#89 #639587
>>639586
Там модификаторы Ui на конце забыл, ну ты понел.
#90 #639606
>>639586
Не работает, братишь. Я с регулярками на Вы. Знаю самое простое ^[a-zA-Z]$ и т.п
#91 #639611
>>639606
Как не работает? У меня работает http://ideone.com/wrADO3
#92 #639612
>>639576
Что значит "не включать", там какой-то текст должен быть между ними и именно он нужен?
#93 #639621
>>639611
Что означает ?<= в регулярках? И почему далее работает ?= с точкой с запятой?
Не нашел ответа в Гугле, не сталкивался с такой конструкцией раньше.
#94 #639629
>>639621
Я же скинул выше http://php.net/manual/ru/regexp.reference.assertions.php
Символы, идущие после (?<= должны предшествовать выражению, которое мы ищем, а после (?= должны идти после него.
#95 #639699
Чому в примерах переменные в тексте выводятся так?
echo "что-то ($n) еще что-то";
У меня круглые скобочки в результате тоже выводятся, а если без них, то норм всё.
#96 #639703
У меня был один друг, вот он был тоже типичным пхпшником. Вечно твердил какое говно питон и что мне надо установить пхп и апач. Ну я не обращал внимание, вроде друг. Как лучше хочет. И подобная хуйта доходила до огромных размеров, вечные оскорбление, меня и моей ide. Его бугурт просто был велик. И вот в один день, этот хуй ночевал у меня и ночью поставил мне denwer.full.pack. Я думал убью его, но взял себя в руки и просто набил ему смачно ебло за всю эту хуйню на протяжении 1 года. И знаешь что Оп, он блядь заплакал, лол. Я его прогнал и стер к хуям денвер. Сейчас я с ним уже не общаюсь.
someApprentice #97 #639720
>>639582
Экранировать с помощью \

https://ideone.com/lOo6zf
#98 #639723
сап, погромисты
что выбрать – пхп или хтмл, дабы после выйти в веб разработку?
#99 #639725
>>639723
Опять ты вылез, шутник?
#100 #639726
#101 #639727
>>639629
Спасибо! Я упустил.

>>639699
Там фигурные скобки же должны быть?
echo "что-то {$n} еще что-то";
#102 #639729
Чем плоха Netbeans для пхп?
someApprentice #103 #639731
>>639727

>Там фигурные скобки же должны быть?


Тоже не понимаю. Раньше вроде когда писал без фигурных скобок "$var", то выводилось $var, а теперь значение переменной. Что-то поменялось?
#104 #639739
>>639531
Так кроме ОПовских задач ещё какой-нибудь опыт был? Может, сайт свой запилил или ещё чего
#105 #639741
Пхп без хтмл и цсс не нужно? объём нужного для старта в вебе пугает. И JS,и верстка, и фреймворки Js.
#106 #639744
>>639731
Вообще да, тоже как-то решал задачу - заработало только после того, как в двойных кавычках поставил переменную в фигурные скобки.
Сейчас смотрю - вроде бы всё работает и без фигурных скобок, выводит значение переменной именно.
#107 #639746
>>639741
Это все равно, что спрашивать нужна ли физику математика, а то чёто лень производные с интегралами учить.
someApprentice #108 #639750
>>639744

>Сейчас смотрю - вроде бы всё работает и без фигурных скобок, выводит значение переменной именно.


Тоже сейчас проверил на своем хосте и тоже самое! Мистика прям!
Версия 5.6.3
#109 #639753
>>639138 (OP)
Годный ОП. Годный тред. Всем добра!
#110 #639756
>>639753
И тебе добра!
#111 #639762
>>639138 (OP)
Господи, какой же уродливый язык, как вы на нем вообще пишете?
#112 #639764
>>639762
Tak luchshe?
#113 #639765
>>639762
А какой язык не уродливый?
#114 #639768
>>639764
Nein.

>>639762
Для веба — Python, например.
#115 #639770
>>639765
>>639768

> Для веба — Python, например.

#116 #639777
>>639762
Русский тоже не самый красивый язык, но ты же на нем говоришь. Зачем?
#117 #639779
АААААААААА Не отвечай просто иди нахуй с такой тупой логикой господи как же я взорвался сейчайс
27 Кб, 500x333
#118 #639780
>>639777
Потому что украинский здесь никто не понимает.
#119 #639783
>>639779
Чому ти так порвався, друже? Всі розмовляють як можуть.
#120 #639790
>>639783
Потому что это максимум тупо не любить язык потому что тебе не нравиться синтаксис!!! Каждый язык заточен под свои задачи!
#121 #639791
>>639790
Ну тут ти правий, звичайно.
#122 #639792
>>639790
Ничего против пхп не имею, но синтаксис у него действительно хуёвый
131 Кб, 1206x1024
#123 #639794
>>639790
Но не это не меняет уродливости синтаксиса, засраности глобального неймспейса и общей непродуманности внутренностей.
#124 #639796
У жаба скрипта синтаксис уродливей, но я не видел, чтобы кто-то жаловался.
#125 #639800
>>639796

> а в Америке негров линчуют!

442 Кб, 624x439
#126 #639828
Китайским программистам начальство в качестве бонуса выдало резиновых женщин.
Лучше бы настоящих, их там много же.
#127 #639832
>>639828
Но ведь настоящие тян не нужны!
#128 #639838
То чувство, когда сначала флудят в любимом треде, а потом кто-то верещит: СДЕЛАЙТЕ УЖЕ НАКОНЕЦ ПЕРЕКОТ!!1
#129 #639841
>>639838
Уже и поговорить нельзя, да? Ну и все равно на этой доске треды спокойно доживают до тысячи постов.
#130 #639842
>>639370
бамп вопросу
#131 #639843
>>639842
Я не про в вебе, но мне кажется, что другим людям будет тяжело поддерживать код со всякими <pidor>ами
#132 #639844
>>639370
Всмысле не несут никакой смысловой нагрузки? У каждого тега есть свое назначение, можешь почитать об этом тут http://www.w3schools.com/tags/
#133 #639845
>>639844
Да в том-то и дело, что браузером эти теги показываются одинаково. Что article что p, что span или div. Они не имеют как такового различия
#134 #639865
Айфон в кредит, день уже забыл какой - http://ideone.com/9GKUtw
#135 #639874
>>639865
Считает правильно, но копипастишь, можно сделать лучше, вот эти строки

>}else{


> $monthlyPayment = $gg;


> $creditBalance=$gg - $monthlyPayment;


> $paymentTotal = $paymentTotal+$monthlyPayment;


>\techo "{$month} месяц спустя: долг = {$creditBalance} руб, выплачено всего {$paymentTotal} руб. \n";


>}


можно сократить
#136 #639885
>>639874

>Считает правильно


Как же я рад это слышать. Как сократить подумаю завтра, 3 часа сегодня над ней просидел.
#137 #639888
>>639865
Ну молодец, домучил.
Но анон верно говорит про копипасту.

>$creditBalance = $creditBalance $percent+$servicePayment-$monthlyPayment;


>$gg=$creditBalance $percent + $servicePayment;


>$creditBalance=$gg - $monthlyPayment;


Вот это вообще везде повторяется, вполне можно вынести и поставить перед всеми условиями.
#138 #639889
>>639888
Звёздочки-звёздочки.
#139 #639896
substr_replace в utf-8 не работает что ли? Нужно каждый раз отдельную функцию для многобайтных строк писать? Это же пиздец. Или я ошибаюсь?
#140 #639898
>>639896
preg_replace
#141 #639899
>>639896
Ну что ты как маленький, заходишь на пхп.нет, смотришь есть ли такая функция, если нет значит кто-то по-любому её написал(а если нет, значит она нахуй не нужна) и выложил в комментарии
http://php.net/manual/ru/function.substr-replace.php#90146
#142 #639902
>>639899
Я об этом и говорю. Каждый раз нужно искать и вставлять эту функцию?
#143 #639904
>>639902

>каждый раз


Ты в каждом проекте собираешься её использовать? Я вообще только сейчас узнал о существовании substr_replace, настолько это важная и незаменимая функция.
#144 #639907
>>639904
Задачи сейчас решаю. Пришёл к тому, что понадобилась эта функция. Всё верно, косяк только в кодировке. По совету этого анона
>>639898 сейчас пытаюсь сделать
#145 #639915
>>639902
Да, действительно годная замена. Спасибо
#146 #639968
>>639370

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

За внешний вид отвечает CSS.

> <article> <span> <p> <div>, они не несут какой-то смысловой нагрузки и отличия, их только принято использовать для разных целей.


Несут.

<p> размечает абзац в тексте
<article> обозначает блок с текстом статьи или новости
span/div это теги общего назначения, конкретный смысл задается классами на них.

На русском про их смысл сложно что-то найти, вот я нашел:

http://html5book.ru/html5-semantic-elements/

Зато на англ. информации полно:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element
https://www.w3.org/TR/html-markup/elements.html

Там можно узнать разницу между em и i:

> The HTML <i> Element represents a range of text that is set off from the normal text for some reason, for example, technical terms, foreign language phrases, or fictional character thoughts.



Тег i помечает текст, который отделен от обычного текста, например, технический термин, фраза на ин. языке, мысли персонажа

Пример

<i>The ship sailed away on Thursday</i>, he
dreamt.

> The HTML element emphasis <em> marks text that has stress emphasis. The <em> element can be nested, with each level of nesting indicating a greater degree of emphasis.



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

Вот пример из спецификации:

<p>Cats are <em>cute</em> animals.</p>

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

Использовать неправильные теги конечно можно, страница будет отображаться, но код-то будет плохой. Понятно что вместо заголовка можно просто сделать див с увеличенным шрифтом, выглядеть будет так же, но тогда твой HTML код будет менее осмысленным, менее понятным.
#146 #639968
>>639370

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

За внешний вид отвечает CSS.

> <article> <span> <p> <div>, они не несут какой-то смысловой нагрузки и отличия, их только принято использовать для разных целей.


Несут.

<p> размечает абзац в тексте
<article> обозначает блок с текстом статьи или новости
span/div это теги общего назначения, конкретный смысл задается классами на них.

На русском про их смысл сложно что-то найти, вот я нашел:

http://html5book.ru/html5-semantic-elements/

Зато на англ. информации полно:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element
https://www.w3.org/TR/html-markup/elements.html

Там можно узнать разницу между em и i:

> The HTML <i> Element represents a range of text that is set off from the normal text for some reason, for example, technical terms, foreign language phrases, or fictional character thoughts.



Тег i помечает текст, который отделен от обычного текста, например, технический термин, фраза на ин. языке, мысли персонажа

Пример

<i>The ship sailed away on Thursday</i>, he
dreamt.

> The HTML element emphasis <em> marks text that has stress emphasis. The <em> element can be nested, with each level of nesting indicating a greater degree of emphasis.



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

Вот пример из спецификации:

<p>Cats are <em>cute</em> animals.</p>

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

Использовать неправильные теги конечно можно, страница будет отображаться, но код-то будет плохой. Понятно что вместо заголовка можно просто сделать див с увеличенным шрифтом, выглядеть будет так же, но тогда твой HTML код будет менее осмысленным, менее понятным.
#147 #639969
>>639393

Ты плохо понял смысл настройки. За вывод сообщений на экран отвечает display_errors. Если его отключить, ошибки будут писаться только в логи, а на экран не выведутся. Его ты должен отключать, но лучше наверно это делать в php.ini а не в коде.

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

Фраза в мануале "Sets which PHP errors are reported" наверно сбила тебя с толку. Имеется в виду именно полное игнорирование определенных видов ошибок.

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

> Что если нам понадобится переименовать наш index.php? Менять названия руками?


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

Переименуешь файл - поменяешь руками. Это ведь всего в одной функции надо сделать, так? Да и я не представляю когда это может понадобиться.

Поэтому кстати и хорошо генерацию ссылок выносить в отдельный класс, чтобы если что было легко менять.
#148 #639971
Кстати, прочел сегодня что в Швейцарии обсуждают возможность выдавать безусловный доход около 2000 евро в месяц. Но мне эта идея не нравится. Почему бездельники должны получать деньги от трудолюбивых людей?

Я считаю, можно улучшить жизнь людей другим способом, например сократить рабочий день с 8 до 4-5-6 часов - мне всегда сколько я помню, времени свободного не хватало. Я только завтракаю часа два.
#149 #639981
>>639971
Что бы можно было учить пхп не думая о деньгах
#150 #640012
>>639971
По идее, такое должно подстегнуть инфляцию, общий рост цен. Чем больше денег у народа, тем они менее цениться начинают и тем дороже становятся вещи и услуги.
Как говорил богатый папа у Кийосаки, помогать надо богатым, а не бедным. Уменьшать налоги, чтобы богатые выходили из тени и тех же бедных обеспечивали.
В Германии вот пособие по безработице около 1к евро, но хорошая биржа труда, где человеку действительно ищут работу по специальности. Безусловный доход - это что-то неясное, не понимаю этого.
#151 #640013
>>640012

> Уменьшать налоги, чтобы богатые выходили из тени и тех же бедных обеспечивали.


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

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

Пособие по безработице тоже не одобряю, это неправильно. Нет работы - иди тележки в супермаркете катай хотя бы.
#152 #640042
>>639971
В европе сейчас идёт тенденция к переходу на 6-ти часовой день. В швеции уже приняли такое, в других странах пока 7 часов.

Ну там и не дураки сидят, они, наверное, просчитали последствия. Читал, что одно из таковых: люди раюотают там, где нравится, а не где много платят
#153 #640063
>>640013
Там логика не прямая, а опосредованная. Больше налогов - больше вливаний в социальные сферы, благоустройство, работу инициативных групп, развитие муниципальной инфраструктуры и тому подобного.
Больше денег в бюджете - больше возможностей создавать муниципальные же рабочие места.
Помогать ведь надо тому, кто стремится. Был бы, например, толк для самих стремящихся изучить РНР, если бы ОП или кто-то из анонов сразу выкладывал решение задач, той же с кредитом на Айфон?
Нет ведь, человек должен заработать сам - знания или деньги.
Бедность же не порок, бедным и стремящимся таким вот образом и помогают: становишься на биржу труда, показываешь своё желание и стремление.
А просто так раздавать деньги - это глушить здравые побуждения в человеке.

>Нет работы - иди тележки в супермаркете катай хотя бы.


К счастью, такого в развитых странах не хотят и стараются не допускать. Это же прямой путь к деградации общества. Это только у нас зимой ездовые академики встречаются - и всем нормально.
#154 #640215
>>629809
Исправил замечания.
http://integer64.github.io/site-layout/exercise/mainTask/index.html

>На кнопках ALL GRAPHIC ... правильный ли размер шрифта и паддинги? Что-то они у меня пикселя на 4 выше чем на макете.


Перемерил в ФШ с боков у всех кнопок разный паддинг, поставил 20px. сверху и снизу поставил 12px, шрифт брал из ФШ.

> & # 64 ;


>есть же & copy ;


В макете стоит @ , а не значок копирайта.

>Спрайты соц иконок вроде бы в PNG8, а не в PNG24 - почему?


Потому что в PNG8 появляется белая обводка , хз почему, может быть у меня такой фотошоп.
#155 #640228
Всем хорошего всего.
Два вопроса:

1. Как себя правильно оценить в столь сложное кризисное время, мне скоро говорить о повышение зарплаты с уровня дна, до...не известно какого уровня. Есть какой нибудь тест или что такое, что покажет вырос ли я уже из джину и стал мидл-джуном или типо того? И сколько сейчас такому, как я уместно платить, потому что сейчас я уже ниже 500$

2. Слышал что у сайтов на бутстрапе, какие то проблемы с СЕО и выдачей в поиске? Это так? Если да, то почему?
#156 #640232
>>640228

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


Джим Кэмп, «Сначала скажите “Нет”»
Сергей Филиппов, «Продажи вверх!»
Стивен Шиффман, «Техники холодных звонков»
Зиг Зиглар, «Секреты заключения сделок»
#157 #640238
>>640232
эм, мне скорее интересно сколько действительно мои навыки стоят сейчас на рынке, а не как выбить зп по выше.
#158 #640241
>>640238

>сколько действительно мои навыки стоят сейчас на рынке


Это случайная величина, у изд-ва O'Reilly была книга по этому поводу... кажется, «Statistics in a Nutshell».
#159 #640245
Да тут по четыре человека в год работу находит, о как. Учитывая, что раздел посещает человек 10, то все за три года на пхпистов устроились.
А есть кто-нибудь, кто как я 3 года учил пхп, сделал 3 небольших проекта на разных фреймворках, нихрена не устроился и сейчас даже продаваном работу найти не может?
#160 #640246
>>640238

>по выше.


А по учиться писать по-русски не желаешь?
#161 #640247
>>640245
Ну я 2 с половиной "учу", но я еще даже не искал.
#162 #640254
>>640246
Мне за это не пла тят.
#163 #640256
>>640245
Предпринимаю попытки, даже на вакансии верстальщика резюмеху отсылаю. Пока что все мимо.=(
#164 #640268
Может кто-то скинет ссылку на файлообменник, который уже проверял ОП. Или кто-то поделится с мыслью как лучше реализовать вывод информации о файле в зависимости от его типа (аудио, изображение, видео)
#165 #640270
>>640215

> Потому что в PNG8 появляется белая обводка


Это потому что в этом формате нет полупрозрачности (с альфа-каналом), а только полная прозрачность. Потому полупрозрачные пиксели превращаются в непрозрачные. Почитай википедию например про PNG или еще что-нибудь.
#166 #640271
Есть тут любители рефакторинга? Я уверен, что говнокода понаписал, и решение можно написать намного красивее и короче. http://ideone.com/Y9WTpo
#167 #640272
>>640268

Можно сделать как на rghost. Информацию о файле получить с помощью библиотеки id3 и закешировать в базе.
#168 #640273
>>640272

точнее библиотека называется getId3
#169 #640280
>>640245
>>640256
какой город? лвл?
#170 #640281
>>640268
Cколько ты занимаешься, раз до файлообменника дошёл?
#171 #640283
>>640268
Если (файл->являетсяКартинкой) { подключить шаблон с выводом информации по изображению }
иначе если (файл->являетсяВидео) { подключить шаблон с выводом информации по видеофайлу }
и т.д.

У класса файл методы для проверки типа файла вида
if (in_array($this->mime_type, $imageTypes)) return true;
return false;

Медиа информацию (разрешение картинки, длительность видео, битрейт и т.д.) определять при помощи getId3 или другой библиотеки.
Ну или если нужен только mime type, то сойдет встроенный в php finfo.

>>640280
>>640256
>>640245
Съебите в лузер-тред. Нам неинтересно читать вашу нытье.
#172 #640287
>>639569
бамп вопросу
#173 #640293
>>640273
Всю нужную инфу о файле я уже получил и добавил в БД. Интересовал именно вывод инфы оттуда

>>640281
Давно занимаюсь. Файлообменник решил делать чтоб освоить работу с другими библиотеками и Silex

>>640283

>Если (файл->являетсяКартинкой) { подключить шаблон с выводом информации по изображению }


иначе если (файл->являетсяВидео) { подключить шаблон с выводом информации по видеофайлу }
и т.д.

Тоже так думал, точнее единственный вариант к которому пришел. Просто думал может можно это замутить как-то по-другому
#174 #640312
>>639138 (OP)

Ребятки, задача про айфон и кредит теперь правильно решена?

http://ideone.com/oi92pI
#175 #640313
Как защитить скрипт на PHP и Javascript от тупого копирования с помощью ScrapBook, аналогичных программ для копирования веб-страниц или даже с помощью простого сохранения веб-страницы в виде отдельного файла?
#176 #640314
>>640312
Полагаю, переменная $sum лишняя. Я же.
#177 #640316
>>640312
Считает всё верно, молодец!
Но ОП не одобрит из-за копипасты:

>$creditBalance = $sum - $monthlyPayment;


Это повторяется в нескольких местах и может быть выведено в цикл до всех условий.
#178 #640317
>>640314
В какой-то момент введение лишней переменной помогает понять, как надо действовать. Я именно поэтому советовал так делать.
Попробуй сейчас от неё избавиться, это вроде бы несложно.
#179 #640318
Я тут новичок и вообще сука-дебил. Раньше писал много на питоне и не понял следующее:
1. В пхп всё еще море вакансий?
2. Фреймворки тоже нужны?
3. Почему вы форматируете код как в питоне?
#180 #640323
>>640316
Я просто тот анон, который ебётся с этой задачей с той недели. Это просто пиздец, что я только не перепробовал... И проценты отдельно считал, и отдельно платёж за сервис, и сначала вычитал платёж за сервис, а потом процент... Вчера вечером пришла идея, что одну и ту же переменную можно подсчитать в одном цикле несколько раз, например:
Например:
A = 2
B = 5
C = 9
A = A + B
A = A + B * C

Из-за чего я так долго ебался - if можно вставить между действиями, а не только в конце. Из-за этого, я думаю, все долго сидят на этой задаче. Где ты вставишь If, там он и сработает (между строчками).

Так вот, я могу привести код в порядок теперь, просто когда заливал - подумал: работает - не трожь!
#181 #640326
>>640323
Ахаха, ты - это я чуть больше месяца назад, я уже говорил как-то. Я сейчас насквозь вижу ошибки в этой задаче, могу даже по словесному описанию происходящего понять, что там в коде происходит.
Просто я это всё попробовал с этой задачей. И не один раз.
Вообще иногда на верное решение наталкивает и то, без чего вполне можно обойтись. Без подсчёта в одном условии переменных там вполне себе можно обойтись.
if можно ставить где угодно, это да.
Но вообще у тебя там недочёт и в том, что не стоят действия в else - которые выполняются при условии, когда не сработал if.
Ещё одна загвоздка - ОП предлагает выводить "С меня хватит!" в самом конце. Попробуй и этого добиться.
Это крайне полезно - так долго ковыряться с задачами, я базарю.
#182 #640332
>>640318
1. Да, но зависит от дислокации.
2. Да, обязательно. А ещё и Wordpress или другие популярные CMS.
3. Я хз.
#183 #640333
>>640256

а я прикинь линукс установил, а тут фотошопа нет, и как мне теперь верстать? пиздец. сейчас пытаюсь через вайн открыть. а еще флешку надо iso винды записать, а ее нет. сплошная боль. вот а еще среди вакансий одно разводилово.
#184 #640336
>>640333
Ставь виртуалку и не мучайся
#185 #640340
>>640333
GIMP уже попробовал? Я долго плевался от него на Ubuntu.
Там единственные два плюса - возможность вкладки передвигать в удобное место и возможность обдуманно растягивать квадратик для копирования/вырезания изображения (там можно дополнительно стороны переместить). Остальное - сплошные минусы.
7 Кб, 243x207
#186 #640349
Завтра иду собеседоваться в официанты. Ну ничего, останется ведь время покодить для этой самой мистической рузкой души.
#187 #640351
>>640340
гимп на винде пробовал, до сих пор плююсь. да не винду надо поверх линукса ставить, если влезет.
#188 #640352
>>640326
Я долго с нулём парился, чтоб 0 выводилось по долгу в конце. Собственно, из-за этого первый раз и застрял в этой задаче. Сейчас с основной работой разберусь (я юрист) и исправлю свой код. А у тебя какой код получился?
#189 #640374
>>640349
какой город-то? Где так не нужны кодеры на ПХП?
#190 #640377
Без ит вышки в кодерстве будущего нет?020611
#191 #640388
>>640377
Я такой же как ты, уже гуглил и тоже провёл исслеование данного вопроса. Для пхп вышка не нужна, можешь спокойно начать учить и вкатываться на джуна. Не переживай
#192 #640391
>>640326

То же самое через if - elseif
http://ideone.com/oi92pI

>ОП предлагает выводить "С меня хватит!" в самом конце. Попробуй и этого добиться.


Просто дописал после нуля.
#193 #640393
>>640349
А я в грузаны.
#194 #640399
>>640391
А со второй задачей по циклам всё верно?
http://ideone.com/cF0mXL
#195 #640401
Стоит ли писать агрегатор новостей? И если стоит, то как это делается? Берётся xml разных сайтов и парсится, а потом сортируется по категориям? И пишется функционал для его вывода?
#196 #640418
>>640391
Неплохо, но всё равно копипаста остаётся, можно ещё сократить.
>>640399
Хм, нет, считает неверно. Там должно получиться 10600000 с лишним за 49 лет, Анончику должно быть 65 к тому моменту.
Ориентир для работы цикла выбран неверно: мы не знаем, за сколько лет соберётся нужная сумма.
Подумай, какие у нас есть несомненные ориентиры для остановки цикла?
Также он просто положил в банк 10к, он не кладёт ещё каждый год по столько же - вот поэтому и неверно считает, на второй год уже в два раза больше 10к - 23.1к.
Я с телефона сейчас, чуть позже покажу задачу про Айфон и далее подскажу.
#197 #640420
>>640374
Пятигорск.
#198 #640425
>>640418
Ааа, а я думал, что он каждый год подкидывает 10 косых.

> какие у нас есть несомненные ориентиры для остановки цикла?


Ээээ... только один - достижение 1 млн руб на счету или больше. Годы - это переменная, от которой ничего не зависит, а больше ничего в задаче и нет. Я думаю, что зацикливаем на годах до тех пор, пока не перепрыгнет миллион.
#199 #640431
>>640425
Всё верно, достижение миллиона или больше - несомненный ориентир. Вот такие и желательно использовать всегда.
Я когда уже решил задачу про Айфон, всё не мог угомониться: там ориентир для работы цикла мы же с потолка берём ($month < 20).
А потом один братишка решил через проверку состояния $creditBalance: если он становится равным нулю - завершаем цикл.
И вот тут-то я окончательно успокоился с этой задачей, ахаха!
#200 #640441
>>640431
Да, я по такой логике тоже пробовал решить на той неделе) Косяк только в других строчках был, лол.
#201 #640530
посоветуйте что почитать на эту тему
#202 #640532
>>640530
Вот эту книгу
#203 #640534
>>640532
спс
#204 #640535
>>640532
Хорошая книга, рекомендую.
#205 #640591
>>639739
Нет, только ОПовские задачи.
132 Кб, 1024x683
#206 #640610
Нахуя азиаты на пикче бреют некоторым котам хвосты?
132 Кб, 1024x683
#207 #640612
>>640610
Особенно "эстетично" получился черный кот на полу.
#208 #640621
>>640610
Чтобы пыль не собирали.
54 Кб, 1280x720
#209 #640636
>>640621
ОРУ НА ВЕСЬ ПАДИК.
#210 #640665
>>640441
Вот поправленный твой вариант: http://ideone.com/rSeWRZ
Вроде бы сокращать дальше некуда.

Я вот точно помню, что не менял условие для цикла - вроде как ОП сразу дал ориентир, я по нему и шёл. А вариантов у меня была куча просто.
#211 #640674
>>640665
Аа, да, это вариант без дополнительной переменной, которую я сам же советовал ввести.
Эта переменная помогает понять, чего надо добиться, но без неё легко можно обойтись, как видишь.
Ещё помогает доведение до максимума: поставить небольшой баланс и добиться выплаты сразу же в первом цикле - а дальше уже многое становится совсем очевидным.
#212 #640676
>>640665
Все равно копипастишь,

>if ($creditBalance <= $monthlyPayment)


условие можно сократить до одной строчки.
#213 #640691
>>640676
Чтобы в условии с if была только одна строчка с одним действием?
И как же?

>$monthlyPayment = $monthlyPayment - ($monthlyPayment - $creditBalance);


Не поменялось сразу на $monthlyPayment = $creditBalance;, сейчас увидел.
#214 #640694
>>640691
В условии проверяешь если $monthlyPayment больше чем $creditBalance. Затем, если условие выполняется, подставляешь значение $creditBalance в $monthlyPayment, после этого выплачиваешь кредит и выводишь всю информацию. И никаких тебе else и копипаст одного echo два раза.
#215 #640726
>>640694
Не представляю, как тогда будут выплачиваться промежуточные $paymentTotal?
Просто один раз выплатить окончательную сумму - и всё?
#216 #640734
>>640726

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


Всмысле промежуточные $paymentTotal? $paymentTotal это сколько всего отдал банку анон.

>Просто один раз выплатить окончательную сумму - и всё?


Ну да. Правда в таком случае, с твоим циклом не выйдет вывести "С меня хватит" в конце, но это тоже можно исправить.
#217 #640735
>>640694
Продемонстрируй кодом, например.
#219 #640740
>>640734
>>640736
Ух ты, хорошее решение, а я всё забываю, что можно многое засовывать в скобки при сравнении, целые выражения.
Только вот ведь тоже копипаста:

>$creditBalance * $percent) + $servicePayment


Там же это три раза повторяется в разных местах?
#220 #640743
>>640740

>Там же это три раза повторяется в разных местах?


Да, это можно вынести в отдельную переменную при желании, я этого делать не стал.
#221 #640747
>>640743
>>640740
http://ideone.com/W5PcDY
Вот такой укороченный вариант будет, если вынести в отдельную переменную.
#222 #640777
>>640747
Да, это самое короткое решение, пожалуй.
Я и не думал, что там можно правильно обойтись одним echo.
А если условием для работы цикла поставить $creditBalance > 0 - идеал будет.
#223 #640788
>>640777

>А если условием для работы цикла поставить $creditBalance > 0 - идеал будет.


Тогда не выйдет вывести "С меня хватит" после завершения оплаты. Хотя конечно эту строку можно выводить после цикла, но я не знаю правильно ли так делать.
#224 #640801
>>640665

$creditBalance = 0;

А чего бы не высчитать ноль? Тут он прямо назначен, а не машина считает.
#225 #640816
>>640418
Чего за ошибка в задаче с процентами на вклад? Ошибка выполнения\ttime: 0.02 memory: 61592 signal:25

Это тип комп захлёбывается или я криворукий?

поставил цикл for ($balance = 10000; $balance <= 1000000; $balance * $percent)
#226 #640827
>>640788
Вряд ли правильно. А вдруг цикл не будет работать, потому что условие для его работы не выполняется - а echo "С меня хватит!" всё равно вылезет.

>>640801
Можно высчитать, конечно.
Я вообще просто слегка сократил код анончика, даже особо не вдумывался.
Там ещё и $paymentTotal = $paymentTotal + $monthlyPayment; у меня повторяется в разных условиях.
>>640816
Скорее всего, цикл не может остановиться в принципе.
А дальше что в цикле, какое тело?

>for ($balance = 10000; $balance <= 1000000; $balance * $percent)


Да можно было и в предыдущий подставить только условие насчёт миллиона.
Вроде бы и так должно работать, покажи код на Идеоне.
#227 #640830
>>640418
Сделал, но очень примитивно http://ideone.com/m2rUad

в данном случае, как и в предыдущей задаче, обязательно ставить elseif? Для чего вообще нужно elseif, если цикл и так будет выполняться до тех пор, пока if не сработает?
#228 #640835
>>640830
Там лишнюю фигурную скобку убери - ошибка вылезает.
#229 #640837
>>640827
Эээ... сработало, только как-то по-еблански http://ideone.com/mktMgC
#230 #640838
>>640835
От души, брат!
#231 #640841
>>640837

>for ($balance = 10000; $balance <= 1000000; $balance * $percent)


Тут понятно: зациклить, пока меньше миллиона

>$anonOld = $anonOld ++;


Плюсовать Анону год каждый цикл

Что я делаю не так?
#232 #640843
>>640830
Вообще желательно вписываться в elseif, чтобы можно было понять большой код. Сейчас ты не запутаешься, а когда много условий - уже сложнее ориентироваться.
Вообще конкретно в этой задаче elseif не нужен, без него можно обойтись, даже просто else там ни к чему - одно ведь условие всего.
>>640837
Да всё нормально, в принципе. Наверное, только привязка к 100 годам не вполне корректна. Как и с 20 месяцами в задаче про Айфон.
Тут всё-таки лучше 1 миллион использовать для ориентира, мне так кажется.
>>640838
А в чём ты запускаешь? На Идеоне же конкретно указывается, что там не нравится интерпретатору.
#233 #640844
>>640841
А что не так?
Не получается с $balance добиться правильной работы?
#234 #640847
>>640844
>>640843
А, код! http://ideone.com/mktMgC
Он в бесконечность уходит и не плюсует. Запускаю всё через ideone
#235 #640849
http://ideone.com/mktMgC
и
http://ideone.com/iDMQOh
разные братишки делали?
Я что-то запутался.

>for ($balance = 10000; $balance <= 1000000; $balance * $percent)


У тебя там при каждом прохождении цикла $balance = 10000, ахаха, отжёг!
#236 #640850
>>640847
Каждый цикл возвращается к тому, с чего начинал, из-за первого выражения в круглых скобках.
#237 #640851
>>640849
Нет, этот делал один брат. Первый способ очень простой, поэтому я решил решить задачу по-другому, через >for ($balance = 10000; $balance <= 1000000; $balance * $percent)
#238 #640853
>>640850

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



А как же предыдущая задача? Тут всё аналогично:
for ($month = 1; $month <= 20; $month ++) {
#239 #640855
>>640851
Да, я сообразил.

>for ($balance = 10000; $balance <= 1000000; $balance $percent)


>$balance $percent


Так не будет работать - никакая переменная не меняется же.
Там надо определить, куда будут записываться изменения - можно обычное выражение записать. $balance = $balance * $percent
#240 #640858
>>640853
Ох щи, действительно. Неожиданный поворот.
Но попробуй вынести определение этой переменной за пределы цикла - всё начинает работать.
31 Кб, 833x477
#241 #640863
Всем привет! Начал читать ваш учебник, и дойдя до логических условий возник вопрос: когда необходимо писать эксит после условия, а когда нет? Моя программа работает и без него.
#242 #640864
>>640853
Спасибо, я уяснил это.
Действительно, не это имеет значение, а то, что у тебя $balance * $percent без определения $balance указано.
Также года не считаются - выражение $anonOld = $anonOld++ какого-то чёрта не работает!
Но работает просто $anonOld++, я сам уже запутался теперь.
#243 #640865
>>640863
Да exit там не обязателен.
Он обычно нужен, чтобы скрипт принудительно оборвать из-за какого-то условия, а там и так вся работа скрипта - выкинуть кубики и сравнить результаты.
#244 #640866
>>640865
Спасибо!
#245 #640867
>>640858
>>640855

http://ideone.com/mktMgC
Вот так работает, но есть пара вопросов:

1. Почему работает ++ в этой задаче?
for ($month = 1; $month <= 20; $month ++) {

и почему не работает $balance умножить $percent в этой

>for ($balance = 10000; $balance <= 1000000; $balance х $percent)



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

> for ($balance = 10000; $balance <= 1000000; $balance = $balance х $percent)



Почему в задаче с айфоном достаточно написать $month ++, а с выплатами по кредиту нельзя $balance х $percent, а надо $balance = $balance х $percent? Потому что ++ специальное действие и комп всё понимает, а умножение должно иметь равенство?

2. Второй вопрос только что понял сам. Нельзя писать

>$anonOld = $anonOld ++



надо писать просто

> $anonOld ++



И да, можно как-то вывести эхо, в котором отображается сумма, перевалившая за миллион? В моём решении в 65 лет анону выдаётся сумма 900 тысяч с копейками, т.е. один шаг до миллиона.
#246 #640877
>>640867
1. $month ++ - это всё равно, что $month = $month + 1. То есть это готовое выражение.
А $balance х $percent никуда не записывается, нужно определить, в какую переменную идёт это умножение.

>Потому что ++ специальное действие и комп всё понимает, а умножение должно иметь равенство?


2. Да, вот как раз и подтверждение тому, что это готовое выражение: $anonOld ++. Можно поставить $anonOld = $anonOld + 1, тоже будет работать, разумеется.

>можно как-то вывести эхо, в котором отображается сумма, перевалившая за миллион?


Получается, у тебя цикл обрывается до того, как срабатывает echo для последнего вывода суммы выше миллиона.
Если поставить основное выражение с подсчётом баланса в тело цикла - всё начинает работать верно: http://ideone.com/6Ayz1p
Чёрт его знает, что такое.
Казалось бы, я уже уверенно себя чувствовал с циклами - а сам сижу и туплю сейчас.
Как раз в последний момент должен посчитаться баланс выше миллиона, должен вывестись в echo, а потом цикл должен завершиться, так как баланс стал больше миллиона.
Почему этого не происходит - загадка.
Надо на свежую голову подумать, наверное.
#247 #640886
>>640877

>Если поставить основное выражение с подсчётом баланса в тело цикла - всё начинает работать верно



Я думал, что для запуска цикла нужно 3 "элемента".
#248 #640929
>>640886
Да, можно даже и без условия (среднего выражения) делать цикл, а оборвать его потом с помощью break изнутри, когда какая-нибудь переменная достигнет определённого значения.
Короче, причина, почему не выводилась окончательная сумма больше миллиона в том твоём цикле, в том, что условие проверяется после каждой итерации. Поэтому когда у тебя $balance = $balance х $percent даёт сумму больше миллиона, условие сразу же не даёт циклу продолжаться.
Подробности в самом начале: http://php.net/manual/ru/control-structures.for.php
#249 #640933
>>640929
От души!
#250 #640995
Почему в главе про ООП мы пишем метод(функцию класса) таким образом:
/ Считает общее число отработанных часов */
public function getTotalHoursWorked()
{
// Просто складываем значения часов в массиве
return array_sum($this->hours);
}

почему не даём функции аргумент $this ? Это же не логично, опечатка?
#251 #640996
>>640995
всё, отбой
8 Кб, 228x221
#252 #641029
Я сделал котика для шапки этого треда, а на работу все равно не берут. Где справедливость?
#253 #641032
Минут 15 уже втыкаю, не могу понять, в чём проблема. Не считает количество оценок count($rates):

http://ideone.com/2dXlqV

$rates = array (3, 5, 3, 2, 1, 8, 4, 3, 4, 3, 2, 3);

$ratesSum = array_sum($rates);
$ratesCount = count($rates);
$averangeCount = $ratesSum / $ratesCount;

echo "Анону поставили $ratesCount оценок. Их сумма - $ratesSum, средняя оценка - $averangeCount";
#254 #641038
ОП, обращаюсь к тебе. Как преодолеть пропасть между твоим учебником и задаче на студентов? Я не знаю, что такое базы данных и как с ними работать, как обращаться с апачем и прочее. Пожалуйста, объясни эти моменты.
#255 #641044
>>641032
Само заработало, всем спасибо
#256 #641051
>>641032

>array_count($rates)


Нет такой функции, есть count($rates).
>>641044
И тебе пожалуйста.
#257 #641056
>>641038
https://gist.github.com/codedokode/10539213
Вот же сборник всего из ОП-поста про БД.
#258 #641061
>>641051
Да. Ты, видимо, посмотрел код по ссылке, когда я начал с бубном плясать. Изначально было как в пасте count($rates), но почему-то не запускалось. Спасибо за ответ. Довольно замороченная тема с массивами.
#259 #641073
>>641061
Это ещё цветочки с массивами.
Дальше многое будет связано с массивами в массивах, вот где первые ягодки пойдут.
#260 #641113
>>641038

В ОП посте есть советы по установке Апача и PHP. А в туториале PHP есть пример того как можно написать простой скрипт: http://php.net/manual/ru/tutorial.php
#261 #641147
Друзья, прошу прокомментировать решение: http://ideone.com/EEyyYp
#262 #641148
>>641147
Там 4 строки. Что комментировать?
#263 #641150
>>641148
Предыдущие задачи тоже 4 строки, но эти 4 строчки в итоге мусолили чуть ли не полтреда. Возможно, какие-то другие варианты, более эффективные, или решено не тем методом, как завещал ОП (в частности, может вместо if есть какие-то операции и array) и т.д. Странный вопрос.
#264 #641153
>>641147

Все правильно.
#265 #641154
>>641150
Да нет, эти задачи довольно простые и там комментировать особо нечего. Про айфон тоже простая, не знаю почему все её долго не могут сделать.
#266 #641156
>>641154
Потому-что там даётся код, в котором из суммы кредита сразу отнимается месячная плата и это нужно поменять, что для большинства не очевидно.
#267 #641160
>>639138 (OP)
только в жаве я понял, как использовать уникальные индексы. сасайти лахи.
#268 #641200
нубовопрос. mt_rand(0, count($lol)); будет ли включать 0?
#269 #641207
>>641200
Да, и последнее число тоже. mt_rand(1,4) может выдавать 1, 2, 3 и 4
#270 #641328
>>641200
Если $lol - это простой массив, то там нумерация ключей идёт с нуля, count($lol) будет показывать неверный ориентир для mt_rand() - на единицу больше, поскольку считает с единицы, а не нуля.
24 Кб, 818x872
#271 #641355
Пишу одну вещь, возникли проблемы с вёрсткой, вывожу из базы данных информацию, надо оформить её так как на картинке, что-то не понимаю как сверстать всё таким образом. Подскажите, как это сделать.
#272 #641357
>>641355
Если пишу картинке float, то все остальные картинки выстаиваются в лесенку.
#273 #641373
>>641355
>>641357
Если абсолютную позицию задать <div>'у, то не решится проблема?
#274 #641377
>>641355

Надо изучить CSS, без этого никак. В Оп посте есть задания и ссылки на учебники.
#275 #641383
>>641377
Вроде бы и учил, и верстал с ПСД и даже получалось, но иногда сталкиваюсь с проблемой, которую не могу решить.
#276 #641384
>>641373
Попробую
#277 #641385
>>641355
У внешнего дива clearfix, паддинг слева.
Картинки с подписью (теги figure + figcaption) плавают влево, отрицательный margin.

>>641383
Это как в языках: знания синтаксиса недостаточно.
Если сделаешь оповские задачи, проблем не будет возникать.
Сравни с девятой задачей например https://gist.github.com/codedokode/58ebc90bd006baf4b35c#Задание-9
#278 #641388
еые
52 Кб, 800x560
#279 #641405
Посаны выручайте, уже 2-ой день ебусь с пикрелейтед. С этими доп условиями

>Слишком просто? Ок, давай усложним задачу. Добавим в банкомат банкноты номиналом 200 и 2000 р. После чего выставляем такое число банкнот: 1 по 5000, 4 по 2000, 1 по 500, 3 по 200 и пытаемся выдать 6600 р.



Правда учусь на питоне, так что не бейте. Делаю через два вложенных перебора от большего к меньшему, спотыкаюсь на 500, когда вместо этого нужно ему использовать 200. Весь мозг сломал какое условие туда вставить
http://ideone.com/ezgx69 <- гавнокод
Шо, попробовать рекурсией переписать?
Хочется универсальный алгоритм, а не под задачу подгонять
in4b питономразь в питонотред
#280 #641407
>>641405
Ебать, шо это за говно, где фигурные скобки, как мне понять где заканчивается условие?
245 Кб, 1680x1050
#282 #641436
Аноны, хелп!
Что не так делаю то?
По логике, должна удалиться ненужная функция, а остальные остаться и посчитаться.
А что-то нифига..
#283 #641438
>>641436
Зачем там unset? Не легче будет сделать инкремент переменной $num?

Хотя, я понял что ты пытаешься тут сделать, только это не будет работать. Чтобы твой способ работал, скорее всего нужен будет цикл for.
#284 #641439
>>641438
Или можешь попробовать unset($classHigh[$name])
#285 #641440
>>641436
Переменные, идущие после as в циле foreach как бы временные, их изменение никак не влияет на оригинальный массив.
#286 #641442
>>641436

$high это не сам элемент массива, а лишь переменная хранящая копию значения. Делая unset ты уничтожаешь эту переменную.

Чтобы удалить элемент из массива надо сделать unset($array[$key]), но тут это не лучшая идея так как ты по этому же массиву проходишь циклом, это запутывает код.

Лучше просто увеличивать переменную на 1 когда видишь высокого ученика.
#287 #641444
>>640388
Благодарю! Тоже к такому выводу пришел. Терять нечего, буду дерзать. И тебе удачи, анончик.
#288 #641446
>>641442
>>641438

Спасибо!
Теперь все отлично.
надо учиться соображать не привязываясь к теме..
#289 #641447
>>641405
Впервые вижу скрипт на Пистоне.
Забавно, многое понятно.
Я только пока до этой задачи и на РНР не дошёл, ничего не могу подсказать.
#290 #641449
Хей гайз, тут все ок? http://ideone.com/nTjrNi
#291 #641450
>>641449
Лучше будет $number++;
#292 #641456
>>640312
elseif ($creditBalance > $monthlyPayment) желательно поменять на else

$monthlyPayment = $monthlyPayment - ($monthlyPayment - $creditBalance);
это то же самое, что и
$monthlyPayment = $creditBalance;
лучше заменить, т.к. короче и нагляднее

$paymentTotal = $paymentTotal + $monthlyPayment;
короткий вариант этой строчки:
$paymentTotal += $monthlyPayment;
#293 #641475
>>641405

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

if
.... много строк

писать

if not ...
return

...много строк

И названия переменных не очень хорошие.
#294 #641526
Напомню себе что надо проверить исправления тут https://github.com/MindiMakridi/filehosting
someApprentice #295 #641527
ОП, прости нас за нашу нетерпеливость. У тебя наверно и так много работы. ♥

>>639140

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



>>638469
>>638488
someApprentice #296 #641528
>>641527

>638488


fix >>638474
#297 #641533
>>639138 (OP)
Почаны, как сделать задачу на палиндром верно, а то уже голова ломается.
http://ideone.com/0xXrrt
29 Кб, 640x480
#298 #641534
Зашел сюда и что-то мне стало жаль всех вас. Всплакнул что-то.
питоно-программист
#299 #641537
>>641414
Понял, спс. Буду дальше разминать мозг.
>>641447
Да все однохуйственно, если в детали не лезть.
>>641475
Часть вложенности согласен, можно убрать, и переменные переназвать. Просто не РЕФАКТОРИЛ новое модное слово узнал в IDEшке :3.
Поясни по переворачиванию ифов, что-то не вкуриваю в каких случаях это используется. Если можно маленький примерчик :3 :3 :3 пазязя, можно на пыхе.
Ответы в старом треде даны на все посты #300 #641544
В старом треде - ответы за 27-31 января. На все более старые посты тоже есть ответы в старом треде - найдите свой пост и смотрите ссылки.

>>641538 - вопросы по регуляркам и по записи чисел прописью
>>641539 - числа прописью, как получить ввод от ползователя, про сборки
>>641540 - баг в select2, про айфон
>>641541 - яваскрипт, электросети и вопросы по инъекции зависимостей
>>641542 - айфон в кредит, вклад в банк

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

Не флудите. Здесь только обсуждение программирования. Сколько лет вы не можете найти работу и что вы съели на завтрак никому не интересно, есть другие треды и разделы для этого.
#301 #641545
>>641527

Ответ про DI написал большой - >>641541

Задавай уточняющие вопросы. Важно разобраться в теме.

По поводу кавычек - посмотри PSR-2, 3 если там ничего не сказано то можно ставить какие хочешь.
#302 #641554
А как можно чистить базу данных, каждые 24 часа в сутки? Я слышал про Cron, но это под линукс кажется? Или есть версия Крона которая есть на хостинге? И для её запуска не надо иметь линукс на своём компьютере? У меня тут очень большие проблемы с пониманием, может кто-нибудь объяснит если не тяжело?
Путь HTML #303 #641555
>>639243

> Задача 1: https://jsfiddle.net/5bzh0qbz/


Тег <p> лишний, его бы надо убрать. А почему цвета не те? А ты можешь сделать точно так же как на картинке? Если не умеешь то надо научиться.

> margin-left: 34%;


> width: 66%;


Тут одно из правил лишнее. Да и ты не учел ширину бордера, у тебя там больше 100% выходит.

> Задача 2: https://jsfiddle.net/cc92hueh/


Ок, верно

> Задача 3: https://jsfiddle.net/2xkms9a5/


> style="font-weight: bold; font-size: 200px; "


Нет, стили должны быть в CSS файле, не надо HTML замусоривать

Плюс, у тебя текст выведен курсивом, а надо не курсивом.

> Задача 4: https://jsfiddle.net/09hbdraq/


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

> style="vertical-align: middle;


Стили должны быть в CSS

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

> Задача 5: https://jsfiddle.net/kqk41sea/


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

> Задача 6: https://jsfiddle.net/m5yrao5k/


> font-family: "Trebuchet MS";


В конце списка шрифтов дложен стоять одтин из стандартных вроде serif.

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

Заголовк должен быть нежирным шрифтом.

> box-sizing: border-box;


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

Сама идея верстки правильная.

> Задача 7: https://jsfiddle.net/xh763seo/


Там не 10px между полем и кнопкой

> box-sizing: border-box;


Надо вендорные префкисы для старых браузеров

> .element1 {


Нужны осмысленные имена, чтобы код было удобно читать

>Задача 11: https://jsfiddle.net/0Lvxs3yu/


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

> font-family: "Malgun Gothic";


Нужен стадартный шрифт в конце списка

> background-color: rgba(160, 238, 157, 0.22);


А зачем там прозрачность?

> overflow: auto;


Зачем?

> width: 100px;


Не, ширина должна определяться содержимым кнопки + паддинги

> float: left;


зачем тут испльзован флоат?

Также, прочитай примечания к задаче - надо бы сделать поддержку клавиатурной навигации.
Путь HTML #303 #641555
>>639243

> Задача 1: https://jsfiddle.net/5bzh0qbz/


Тег <p> лишний, его бы надо убрать. А почему цвета не те? А ты можешь сделать точно так же как на картинке? Если не умеешь то надо научиться.

> margin-left: 34%;


> width: 66%;


Тут одно из правил лишнее. Да и ты не учел ширину бордера, у тебя там больше 100% выходит.

> Задача 2: https://jsfiddle.net/cc92hueh/


Ок, верно

> Задача 3: https://jsfiddle.net/2xkms9a5/


> style="font-weight: bold; font-size: 200px; "


Нет, стили должны быть в CSS файле, не надо HTML замусоривать

Плюс, у тебя текст выведен курсивом, а надо не курсивом.

> Задача 4: https://jsfiddle.net/09hbdraq/


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

> style="vertical-align: middle;


Стили должны быть в CSS

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

> Задача 5: https://jsfiddle.net/kqk41sea/


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

> Задача 6: https://jsfiddle.net/m5yrao5k/


> font-family: "Trebuchet MS";


В конце списка шрифтов дложен стоять одтин из стандартных вроде serif.

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

Заголовк должен быть нежирным шрифтом.

> box-sizing: border-box;


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

Сама идея верстки правильная.

> Задача 7: https://jsfiddle.net/xh763seo/


Там не 10px между полем и кнопкой

> box-sizing: border-box;


Надо вендорные префкисы для старых браузеров

> .element1 {


Нужны осмысленные имена, чтобы код было удобно читать

>Задача 11: https://jsfiddle.net/0Lvxs3yu/


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

> font-family: "Malgun Gothic";


Нужен стадартный шрифт в конце списка

> background-color: rgba(160, 238, 157, 0.22);


А зачем там прозрачность?

> overflow: auto;


Зачем?

> width: 100px;


Не, ширина должна определяться содержимым кнопки + паддинги

> float: left;


зачем тут испльзован флоат?

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

А ты гуглил? Погугли что такое вообще крон и как он работает для начала, а потом можешь задавать уточняющие вопросы если что-то непонятно.
#305 #641559
>>641533
помогите кто-то с задачкой, она из базовых
#306 #641561
>>641559
>>641533
http://ideone.com/d76xVL
Лень разбираться что с вашей пыхой не так и почему столько варнингов =3
#307 #641563
>>641559
>>641561
Кстати, одной строкой в пистоне :3
return string.lower() == string[::-1].lower()задумайся
#308 #641579
>>641561
Там две ошибки в цикле:
$check_text += $text;
В результате всегда палиндром.
$check_text .= $text[$i];
Ты бы хоть пробежал глазом по учебнику ОПа.
#309 #641581
>>641559
Кажется это у лайтсофта или кого-то еще лет 5 в тестовом задании.
Гугли алгоритм Манакера.
http://phpforum.su/index.php?s=8455e93fcf85297369049ccb1b41581d&showtopic=43124&st=15
А тут решение в ооп стиле, сильно не оптимальное, наверно о(n^2), если не хуже
#310 #641614
>>641555

>А почему цвета не те? А ты можешь сделать точно так же как на картинке?


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

>Тут одно из правил лишнее...


ты прав, спасибо

>Стили должны быть в CSS


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

>В конце списка шрифтов дложен стоять одтин из стандартных вроде serif.


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

>Что-то выглядит как-то стремно.


С кнопкой мучился полдняда, дебил.

>зачем тут испльзован флоат?


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

Вообще спасибо большое, вернусь к КСС, подправлю задачи и новые добавлю и снова выложу. Только не знаю когда, правда. Гнилая тема для меня какая-то. Насколько критично разбираться в тонкостях КСС? Голова от этого болит.
#311 #641667
>>639138 (OP)
ОП, привет, глянь "опечатки", пожалуйста: http://ideone.com/YR9zJZ
Ты мне в прошлый посоветовал

> Лушче бы если checkText ничего не выводил а только возвращал результат.


> $patternRus, $patternEng никогда не меняются, лучше внести их внутрь функции и убрать из скобок. То же самое с $replacementRus, $replacementEng


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

>> $array = explode (" ", $text);


>array -> words


Вот это совсем не понял, можешь прояснить, что ты имел в виду? В гугле забанили, не нашёл, где используются подобные конструкции.
#312 #641682
>>641533
Читни учебник ОПа, базарю, ещё захочешь.
У тебя там вообще нет функции mb_substr(), которая будет по кусочку отрывать от текста с обеих сторон и сравнивать.
Вообще алгоритм у тебя неверный, подход неверный.
Там должно быть, как минимум, два условия, а лучше даже три:
1. Буквы спереди и сзади текста совпадают - продолжаем цикл, можем вывести эти буквы с начала и с конца.
2. Буквы с начала текста и с конца не совпадают - выводим результат "Это не палиндром" и обрываем цикл.
3. Переменная $i равняется переменной $halflength - выводим результат "Это палиндром".
#313 #641699
Антоши, помогите с 4-ой задачей по JS отсюда https://gist.github.com/codedokode/ce30e7a036f18f416ae0

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



Как это сделать?
Я получаю все аргументы из arguments, но получается массив.

Как передать в функцию аргументы другой функции в виде чисел, а не массива?
Я совсем запутался.
713 Кб, 1366x768
#314 #641709
OP, а ты по SPA задание допилить можешь? Хотя бы чуток.
#315 #641713
>>641534

>питоно


>макака-языко-дрочер


а мне тебя
#316 #641716
>>640393
я в комплектовщики товара, лол
#317 #641720
>>641682
Вот тебе два чая, постараюсь сделать следуя твоим указаниям.
#318 #641834
ОП, объясни разницу между apache и nginx. Гугл выдает много всякого кала уровня "апач лутше. - нет, nginx быстрее".
Я так понимаю для каких-то конкретных случаев больше подходит один сервер, а для других второй. Иногда даже пишут о связке nginx+apache, типа потому что у апача есть некие модуля(какие?), которых нет в nginx.
В общем коротко в чем преимущества этих серверов, и в каких случаях предпочесть один другому?

Плюс еще более нубский вопрос: если я поставлю оба, они не будут конфликтовать? Наверное нужно как-то прописать им разные порты, или что-то в этом роде.
Поставлю лучше вагрантом готовую виртуалку.
#319 #641838
сука ну если у меня будут дети, то буду выдрачивать матаном, графами и паскалем с пяти лет, пусть только заикнутся о педах-медах-дизинах-рокгруппах. вот жеж бесит моя тупая мамашка-инженер, ненавидевшая техмат.
someApprentice #320 #641843
>>641541

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


Так, значит я буду писать

init.php
$container = new Pimple();

$container['RegistrationHelper'] = $container->share(function ($c) {
return new RegistrationHelper();
};

$container['RegisterAction'] = $container->share(function ($c) {
return new RegisterAction($c['RegistrationHelper']); //RegisterAction.php __construct($reghelper) {$this->reghelper = $reghelper;}
};

$regaction = $container['RegisterAction'];

index.php
$regaction->SignUp('someLogin', 'somePassword');

Далее
https://github.com/someApprentice/Students/blob/master/app/Controller/RegisterAction.php

У меня есть еще такие зависимости как $pdo, $studentgtw и $student (не уверен что это зависимость). Для них тоже нужно делать контейнеры, но тут мне не очень понятно с этим

Мне кажется что вот так писать pdo будет не правильно:

$container['pdo']->container->share(function () use ($config) {
$pdo = new Pdo(...);
$pdo->setAttribute...
return $pdo;
}


$pdo = $container['$pdo'];

$query = $pdo->prepare("SET sql_mode = 'STRICT_ALL_TABLES'");
$query->execute();


>>641541

>> Извиняюсь что так много вопросов, просто я совсем не понимаю это.


>Задавай еще. Важно разобраться


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

Спасибо.
someApprentice #320 #641843
>>641541

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


Так, значит я буду писать

init.php
$container = new Pimple();

$container['RegistrationHelper'] = $container->share(function ($c) {
return new RegistrationHelper();
};

$container['RegisterAction'] = $container->share(function ($c) {
return new RegisterAction($c['RegistrationHelper']); //RegisterAction.php __construct($reghelper) {$this->reghelper = $reghelper;}
};

$regaction = $container['RegisterAction'];

index.php
$regaction->SignUp('someLogin', 'somePassword');

Далее
https://github.com/someApprentice/Students/blob/master/app/Controller/RegisterAction.php

У меня есть еще такие зависимости как $pdo, $studentgtw и $student (не уверен что это зависимость). Для них тоже нужно делать контейнеры, но тут мне не очень понятно с этим

Мне кажется что вот так писать pdo будет не правильно:

$container['pdo']->container->share(function () use ($config) {
$pdo = new Pdo(...);
$pdo->setAttribute...
return $pdo;
}


$pdo = $container['$pdo'];

$query = $pdo->prepare("SET sql_mode = 'STRICT_ALL_TABLES'");
$query->execute();


>>641541

>> Извиняюсь что так много вопросов, просто я совсем не понимаю это.


>Задавай еще. Важно разобраться


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

Спасибо.
#321 #641846
>>641838
зачем
#322 #641852
>>641709
двачую, годно было бы.
#323 #641862
>>641838

>матаном, графами и паскалем


>пусть только заикнутся о педах-медах-дизинах-рокгруппах


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

Лучше забудь о своей боле и давай людям то что они хотят.

В каждом человеке — солнце. Только дайте ему светить. © Сократ.
#324 #641864
Анон, в задаче про кредит из за Айфона у тебя общая сумма выплат составила 59138.172065718??? за 12 месяцев?
#325 #641865
>>641862
Двачну. Если хочешь сделать из него умного человека, прочитай "Вы конечно шутите, мистер Фейнман".
#326 #641868
>>641864
Нет. 61270 со многими копейками за 13 месяцев.
Покажи код, ты что-то сделал не так.
#327 #641870
>>641868
<?php

error_reporting(-1);

$creditBalance = 40000; / Долг анона перед банком /
$percent = 1.03; / Банк начисляет 3% в месяц от суммы /
$servicePayment = 1000; / А также 1000 рублей в месяц комиссии за обслуживание счета /
$monthlyPayment = 5000; / Анон платит 5000 р в месяц, это все, что ему дает мама на завтраки /
$paymentTotal = 0; / Сколько всего отдал банку анон /

/ Посчитаем расходы 20 раз на 20 месяцев вперед /
for ($month = 1; $month <= 20; $month ++) {
\t
\t$creditBalance = ( $creditBalance $percent ) + $servicePayment - $monthlyPayment;
\t$paymentTotal = $paymentTotal + $monthlyPayment;
\techo "{$month} месяц спустя: долг = {$creditBalance} руб, выплачено всего {$paymentTotal} руб. \n";

if ($creditBalance < 5000) {
\t
$monthlyPayment=$creditBalance;
$creditBalance=( $creditBalance
$percent ) + $servicePayment - $monthlyPayment;
$paymentTotal=$paymentTotal+$monthlyPayment;
$month++;
echo "С меня хватит! На $month месяце кредит был оплачен. Сумма последней оплаты составляла $creditBalance. Сумма оплаты составила $paymentTotal рублей.\n";
break;
}
}
?>
#327 #641870
>>641868
<?php

error_reporting(-1);

$creditBalance = 40000; / Долг анона перед банком /
$percent = 1.03; / Банк начисляет 3% в месяц от суммы /
$servicePayment = 1000; / А также 1000 рублей в месяц комиссии за обслуживание счета /
$monthlyPayment = 5000; / Анон платит 5000 р в месяц, это все, что ему дает мама на завтраки /
$paymentTotal = 0; / Сколько всего отдал банку анон /

/ Посчитаем расходы 20 раз на 20 месяцев вперед /
for ($month = 1; $month <= 20; $month ++) {
\t
\t$creditBalance = ( $creditBalance $percent ) + $servicePayment - $monthlyPayment;
\t$paymentTotal = $paymentTotal + $monthlyPayment;
\techo "{$month} месяц спустя: долг = {$creditBalance} руб, выплачено всего {$paymentTotal} руб. \n";

if ($creditBalance < 5000) {
\t
$monthlyPayment=$creditBalance;
$creditBalance=( $creditBalance
$percent ) + $servicePayment - $monthlyPayment;
$paymentTotal=$paymentTotal+$monthlyPayment;
$month++;
echo "С меня хватит! На $month месяце кредит был оплачен. Сумма последней оплаты составляла $creditBalance. Сумма оплаты составила $paymentTotal рублей.\n";
break;
}
}
?>
#328 #641882
>>641870
Щито?
На ideone.com выложи, так знаки * весь код рушат, делают куски курсивом.
#329 #641887
>>641882
http://ideone.com/wy3Mso

Сори, туплю. Это я еще немного поковырялся. Но так и не пришел к правильному ответу.
#330 #641901
>>641887
Ошибки:
1. $creditBalance = ( $creditBalance х $percent ) + $servicePayment - $monthlyPayment;
Когда этот $creditBalance становится меньше $monthlyPayment, то становится после этого выражения с отрицательным значением (от него же отнимается $monthlyPayment). От этого многие ошибки возникают.
2. Просто так echo "{$month} месяц спустя: долг = {$creditBalance} руб, выплачено всего {$paymentTotal} руб. \n"; в основную часть цикла ставить не желательно, для подобного надо использовать else.
Несколько способов, как не топтаться на месте с этой задачей.
1. Ввести переменную для подсчёта $creditBalance с $percent и $servicePayment. Не отнимать от неё никакие $monthlyPayment.
2. Заставить программу выплатить $creditBalance с $percent и $servicePayment (или введённую переменную) при первом же прохождении цикла. Для этого $creditBalance или введённая для этого переменная должны быть сразу меньше 5000 и должны уже содержать умножение $creditBalance на проценты и с прибавленной комиссией за обслуживание кредита. Итоговая цифра должна быть меньше 5000.
3. Обрывать цикл при сумме, равной нулю, а не меньшей нуля. Отрицательного $creditBalance не должно получиться при верном решении этой задачи.
#331 #641902
>>641882
http://ideone.com/2fHdsg
Вроде как ответ правильный, как у тебя, но смущает в выводе строка
"13 месяц спустя: долг = -3729.8132554793 руб, выплачено всего 65000 руб. "
Это так и надо?
#332 #641910
>>641902
Нет, в минус не должно уходить. А ответ правильный только для 40000: если подставить 1000 в кредитбаланс, то будет -2970, а должно быть 2030.
Сообщение выше прочитай, там я о таком минусе и говорю.
#333 #641932
>>641667

>array -> words


Это совет как правильно надо называть переменные. array ничего не значит, не надо давать такие имена.
#334 #641935
>>641834
Попробую пока сделать выводы из того что нашел.

Откопал опо-пасту по многопоточности.
http://pastebin.com/1wYpD8NS
Из нее вроде бы следует, что nginx больше подходит для случаев с высокой нагрузкой, когда нужно обрабатывать сотни и тысячи параллельных запросов. Плюс с раздачей статики справляется лучше благодаря асинхронности.

Статья на хабре:
https://habrahabr.ru/post/267721/
Краткие выводы:
1. Nginx подходит для приложений с высокой нагрузкой (тысячи одновременных запросов), раздачи статики.
2. Apache имеет встроенный модуль для обработки запросов к динамическому контенту (это должно означать: "автоматически взаимодействует с интерпретатором php"). У nginx из коробки ничего такого нет, так что админ должен осмысленно прописывать настройки для всяких fastCGI. В общем, более гибко, но кому-то может показаться "усложнением".
3. Apache позволяет задавать конфигурацию на уровне директорий (создавать файлы .htaccess). Удобно для всяких шаред-хостингов, где каждый васян может подогнать настройки под свой вордпресс. Nginx не имеет "локальных" настроек, так что больше популярен у хипсторов с личными серверами и стартапами.
Но с точки зрения производительности вроде это лучше, потому что не нужно сканировать все директории проекта в поисках .htaccess.
4. Модули в apache подключаются/отключаются по мере необходимости, в nginx выбираются на этапе компиляции. (Э, я что не смогу поставить nginx апт-гетом?)
5. Совместное использование. Тут я плохо понял, что значит "размещение Nginx перед Apache в качестве реверс-прокси". Типа nginx будет отдавать статику, но как только увидит запрос к динамическому контенту, отдаст управление апачу?
#335 #641936
>>641699

Почитай про call и apply.
#336 #641941
>>641935

>Э, я что не смогу поставить nginx апт-гетом?


Сможешь.

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


Ни разу не видел чтобы такие велосипеды строили. Для динамического контента на php лучше к nginx ставить php-fpm.
#337 #641951
>>641910
Мощи моих мозгов для решения той задачи не хватает. я как какаши с шаринганом - могу только впитывать новое, но не творить. пока что. прости мужик.
#338 #641970
Выше пытались разобрать эту задачу, я снова вкачусь. Что я делаю не так?

http://ideone.com/CkfiQS
#339 #641976
>>641970
Подправил, но в итоге выходит, что я выплатил больше 60000, хотя долг был 4138

Ошибка или я невнимательный?
#340 #641977
>>641864
>>641870
>>641887
>>641902
>>641951
>>641970
не смотри спойлер. Ты справишься.
Эти все аноны я. Я РЕШИЛ!!!!! Решение:[hid]http://ideone.com/EKto8m[/hid]

>>641970
не смотри спойлер
#341 #641979
>>641977
блять как я обосрался с разметкой.
#342 #641988
>>641976
Тебе надо ввести новую переменную, которая будет содержать сумму остатка с процентами и комиссией 1000р. И уже от этой переменной двигать дальше. В твоем случае у тебя уравнение выполняется для переменной $creditBalance, от которой ВЫЧИТАЕТСЯ $monthPayment.
#344 #642015
>>641941
Такие костыли строят на любом шареде, мамкин админус 300р вдсок. Потому что быдло не умеет в оторвать от своего говнопресса .htaccess и прочую хуиту от апача.
177 Кб, 831x896
#345 #642017
>>642001
Да и вообще условие в цикл фор можно запихать
http://ideone.com/OVYJxB
#346 #642018
>>642017
if() {
одна_строчка_кода();
}

Тебе индусский хозяина построчно платит?
#347 #642020
>>642018
Как раз это призвано сократить число строк, а есть вариант получше?
#348 #642021
>>642020
if(условие) твоя_ебучая_строчка_для_набивания_строчек();

Скобки выбрасываются - не в Индии.
#349 #642022
>>642001
Ты в цикл ввел условие, которое при остатке долга меньше суммы выплаты сокращает выплату до суммы долга. Ну, решение хорошее, сам бы я вряд ли допер.
#350 #642025
>>642021
Скобки гарант твоей безопасности, что ты или кто-то еще не пропустишь ничего в спешке и не влепишь мимо условия, а сократить огромный код на 2 строчки это так себе оптимизация.
sage #351 #642027
>>642001
Анус ты там себе не пофиксил? Что было бы, если бы аноны и тебе перед этим пофиксили код, а не намёками довели до своего решения?
Нельзя так делать.
#352 #642033
>>642025
На самом деле, привычка везде пихать скобки в рашке берёт начало с перла - там без них написать можно, но будет выглядеть совсем не похоже. А именно на перле и уебкодили до массового появления пыха.
В сишке, плюсах (сярпе, жабе, ещё 100500 ЯП) и внезапно пыхе - можно просто выкинуть.
А можно ещё сократить if/else до (усл) ? действие 1 : действие 2;
#353 #642034
>>642033

>С#


Выкинуть можно, но никто так не делает, официальным там вообще считается такой стиль, что на строчку больше
if ((divisor != 0) && (dividend / divisor > 0))
{
Console.WriteLine("Quotient: {0}", dividend / divisor);
}
https://msdn.microsoft.com/en-us/library/ff926074.aspx
#354 #642037
>>642034
Можно ещё везде начать хуярить названия типов типа ZLPKNSKJA LPZALOOOPA {
.....
}
Тоже смешно будет. Благо сярп - не уёбищный одноглазый питон, и конвенция туда не прибита гвоздями.
#355 #642039
>>642037
Ах, да, и перед второй залупой звёздочек побольше.
#356 #642041
>>642037

>Можно ещё везде начать хуярить названия типов типа ZLPKNSKJA LPZALOOOPA


Нельзя, об этом написано.

https://msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx
http://www.dofactory.com/reference/csharp-coding-standards
#357 #642057
https://jsfiddle.net/mqdkab0q/ 1я задача на DOM
#358 #642078
Господа, я понял что я совсем не в 'тренде'
Я не читаю никаких тематических ресурсов и даже про пхп7 узнал читая чужие доки.
Это норма? Что имеет смысл читать, что бы узнавать про очередные модные Gilp'ы и прочие хреновины, что читаете вы?
Я к тому же совсем с динозаврами работаю, которые не проч и на таблицах поверстать
#359 #642082
>>642021

Есть рекомендация PSR-2: http://www.php-fig.org/psr/psr-2/ru/#5-Управляющие-структуры

> Тело каждой управляющей структуры НЕОБХОДИМО заключать в фигурные скобки. Это стандартизирует вид управляющих структур и уменьшает вероятность возникновения ошибок при добавлении новых строк в тело.



Есть PSR, а советы по оформлению кода от Васянов не нужны. Никому не интересно как принято писать код в вашем Урюпинске.

Раздражает когда не ставят скобки, так как когда хочешь что-то дописать надо ставить скобки за них.

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

И что за намеки про число строк? Простыни на 200 строк пишут только быдлокодеры, а нормальные люди пишут небольшие функции их проблема количества строк не беспокоит.
#361 #642084
>>642037

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


Да, отсутствие стандартов - рай для быдлокодера.
#362 #642085
>>642078

На хабре есть еженедельный дайджест:

https://habrahabr.ru/company/zfort/blog/276283/

Также есть хаб по php:

https://habrahabr.ru/hub/php/
#363 #642108
>>642085
Бывает заглядываю туда.
А какие еще варианты?
И почему хабр так не любят?
#364 #642110
>>642033
>>642037

Во первых при чем тут рашка?

Во вторых ты хочешь сказать что тебе действительно удобнее определять вложенность на глазок?
Я ненавижу тех кто не использует скобки в условиях после которых одна строка, так как одно лишнее движение и всё летит в ебеня, да и сходу не ясно где что.
#365 #642115
>>642110
>>642033
>>642037

И по мне так самый красивый язык это руби с его ВСЁ объекты, кучей сахара и подобного.
И то там я всегда пишу end в не зависимости от количества строк до.

И вообще что это за стремление к сокращению? Типо "э, смотрите, как я круто умею, усе локанично".
Ну так в Руби опять же можно таким путём код раза в 3-4 сократить, вот только никто так не пишет.
65 Кб, 800x669
#366 #642118
Сегодня, когда пошла третья неделя битвы с задачей на числа прописью, хочется сказать, что очень важно слушать советы ОПа и добрых братишек и изначально стремиться к простоте и краткости.
В настоящий момент мой скрипт разросся до значительных размеров и переводит числа всего лишь до 9 999 999: http://ideone.com/7bSfev
При этом изначально я уже знал, что идея для трёх, двух и одного числа делать отдельные функции - провальная. Однако решил довести решение в таком виде до конца.
Сейчас уже понятно, что обработка десятков миллионов и сотен миллионов в этом решении даст ещё около ста строк кода, причём там будет много копирования.
Поэтому, пожалуй, уже и нет смысла доделывать всё таким неблагополучным образом.
Снова стираю всё и начинаю писать с нуля.
В одной функции должно быть разложение трёх чисел, причём количество чисел от трёх до одного должно в ней и определяться.
В эту функцию должно входить определение "рублей" - мы просто на это место будем подставлять "тысячи" и миллионы", когда будем соответствующие числа переводить.
Также там сразу будут меняться "1" и "2" в единицах - будут переводиться в "одна" и "две". Чтобы такого не было в тех местах, в которых это нам не нужно, - будем дополнительно переводить эти цифры и в "один", "два". В нужном месте будем указывать нужный массив с верным вариантом.
В целом оставляю начало прежнего подхода: перевод числа в строку, подсчёт количества символов, а далее разбиение числа на куски математическими способами и перевод в слова.
За время решения задачи узнал много нового, более крепко уяснил пройденный материал.
Всем рекомендую.
#367 #642121
*решил довести решение
Решил довести работу.
#368 #642128
>>642118
Также можно попробовать сделать вывод "рублей", "тысяч" и "миллионов" с помощью условий в if, как советовал ОП.
Всё будет в одной функции, так будет в целом лучше, наверное.
Меня останавливало то, что я не мог в одном условии несколько элементов сравнивать. ОП дал намёк на то, как это делается, спасибо ему, попробую реализовать.
#369 #642156
>>641936
Спасибо. apply это то, что нужно.
#370 #642157
Sup /pr/. Есть один класс:
https://github.com/disbeliever/php_training/blob/master/students/src/UrlHelper.php
и есть желание как-то обобщить код getSortingUrl и getPagerUrl. Но в getPagerUrl "&page=$page" нельзя передавать в http_build_query, потому что в $page лежит плейсхолдер, который похерится urlencode'ом.
Any ideas?
#371 #642167
>>641709
Сосачую.
#372 #642175
>>642041
Ёбнутая венгерская нотация - как раз поделие некрософта, но из винапи.
У них стандарты меняются раз в 5 лет, а то и чаще.
#373 #642176
>>642110
Твой ноутбучек не позволяет прочитать условие и вызов кода на одной строке? Ну купи гейбук с ретиной, для тебя ж делали.
#374 #642177
>>642175
Для самых маленьких - да, это те самые надписи капсболдом с проёбанными звёздами - LPSTR HPTR HWND DWORD WONNI T PRNS
#375 #642179
>>642177
>>642175
Ты дурачек?
#376 #642182
>>642177
Причём самое ужасное, когда авторы левых проектов начинали ей следовать и рожать срань вида LPSTR MyHuiRazberiWtoZdEd(HWND WND hvnd)...

А из некроновских особенно вырвиглазны были недокументированные функции ntos.dll - от вида этой ЛеСенкиБукаф и КАПСА в параметрах просто глаза выпадали.
#377 #642184
>>642182
Ночнем с того, что LPSTR это тип в винапи, а не имя переменной.
венгерская нотация это не
#378 #642185
>>642184
не LPSTR MyHuiRazberiWtoZdEd
а LPSTR lpstrMyHuiRazberiWtoZdEd
#379 #642190
Люди, помогите немного разобраться в механике здеся.
http://ideone.com/d9HsXL
Почему в $a больше на одну итерацию(выводит н в отличии от $b), хотя по сути в $a и $b присутствует $i. Поясните как можно реализовать это более грамотно пожалуйста
#380 #642202
>>641862
Ты такой чудесный!
я бы тебе дал
#381 #642206
>>642190
Оригинально пошёл как, обычно просто идут с конца с -$i.
Тогда дальше читай >>641682

1. Буквы спереди и сзади текста совпадают - продолжаем цикл, можем вывести эти буквы с начала и с конца.
2. Буквы с начала текста и с конца не совпадают - выводим результат "Это не палиндром" и обрываем цикл.
3. Переменная $i равняется переменной $halflength - выводим результат "Это палиндром".

Тебе осталось в условия это всё добавить, чтобы решить задачу.
#382 #642208
>>642206
Та я на счет условий знаю, меня интересует именно возможность сделать все именно с i++
#383 #642211
>>642208
Всё возможно и именно с $i++ и надо делать.
Я только что форкнул твой код и исправил - всё работает.
Но тебе не покажу, пока сам не решишь.
#384 #642216
>>641932
Спасибо, Антоний.
#385 #642223
>>642208
Аа, обрати ещё внимание на то, какой именно символ даёт каждый раз выражение $lastElement=$lastElement-$i;
Там не совсем то, что нужно.
Подсказка: Там на один больше символ даёт, чем нужно. Далее сам догадаешься.
#386 #642238
>>641988
Спасибо, анончик
#387 #642239
Что скажете про PHP 7? Стоит ли ставить или еще слишком сыро? Почитал вот немного про седьмую версию, насколько я понял там в основном улучшения в производительности, которые никак не затрагивают ранее написанные скрипты.
#388 #642240
>>642238
Вот же всё тебе расписал: >>641901
Попробуй сначала, чтобы сразу выплатилось с небольшой суммой, 1000 поставь вместо 40000, а дальше всё станет понятнее.
#389 #642254
Ребят, а как сделать чтоб не повторялось? Думал через shuffle попробовать, но нет. Может я совсем неправильно делаю? http://ideone.com/ESmwTL
#390 #642255
>>642239
Стоит.
#391 #642278
>>642254
У тебя два раза просто повторяется в echo "{$word1} {$word2} {$word3}\n".
Ясно же, что оба раза вставит имеющееся на тот момент значение в этих переменных.
Надо использовать цикл в этой задаче, чтобы выводило сначала"{$word1} {$word2} {$word3}\n" два раза, а потом выводило "Я {$word4} {$word5}\n".
#392 #642280
>>642254
Также используй лучше array_rand(), а не mt_rand(). Базарю.
Иначе ты запутаешься во вторых значениях для выбора номера.
#393 #642288
Я либо в глаза долблюсь, либо совсем поехал, где найти простую инфу по тому, как подключать БД через пхп-код к страницам?
#396 #642292
>>642289
cпасибо
>>642291
да я думал, у анона есть уютная ссылка
#397 #642311
Поясните, почему это задание мне предлагают решить через цикл for?

>W5.2 Некто кладет в банк 10000 р. Банк начисляет 10% годовых (то есть, каждый год на счету становится на 10% больше, чем в прошлом году). Напиши программу, считающую, через сколько лет в банке будет миллион? Сколько лет будет этому некто? Доживет ли некто до этого дня, если сегодня ему 16 лет?


Я погугли, в php же есть цикл while, а сколько нужно сделать проходов мы не знаем. Или я чего-то не понимаю?
#398 #642312
>>642311
Через while удобнее, действительно.
А в случае с for работу цикла надо ограничивать миллионом: когда он или сумма больше оказывается на счету - цикл завершается.
#399 #642315
>>642311
>>642312

В цикл фор можно любое условие ставить, а месяцы все равно нужно считать, поэтому удобнее так
for($month = 1; $creditBalance > 0; $month++)
#400 #642316
>>642312

>А в случае с for работу цикла надо ограничивать миллионом:


Не надо, ставь условие $creditBalance > 0
регулярные выражения #401 #642318
Подскажите, как занести в массив все слова содержащие (сы)?
http://ideone.com/1BtAA3
#402 #642319
>>642315
Почему-то всегда считал, что в цикле for следует ставить условием только значение той переменной, которую увеличиваешь(уменьшаешь).
Такая строка говнокодом не будет?
#403 #642325
>>642319
А почему она должна быть говнокодом?
for (i = 0, Console.WriteLine("Start: {0}",i); i < j; i++, j--, Console.WriteLine("i={0}, j={1}", i, j))
{
// Body of the loop.
}
#404 #642326
>>642316
Тогда проще while и использовать. А переменную с месяцем увеличивать в теле цикла.

>$creditBalance > 0


Для for таки нежелательно вечное условие, хотя тут на вкус и цвет.
>>642319
Почему должна быть говнокодом? Условие есть, переменные нужные увеличиваются.
#405 #642328
>>642318
Используй preg_match_all().
Регулярка неверна, так у тебя и "сын", "сыч", "сыт" и подобное найдёт.
А слова типа "сычевальня" выведет ещё и целиком.
#406 #642329
>>642326

>Почему должна быть говнокодом?


Не знаю. Видел только как его для простых счетчиков используют и подумал, что есть какие-то причины для этого. Да и в примерах во всех тоже условие указывается для изменяемой переменной. Буду знать теперь, что это не обязательно.
#407 #642330
>>642318
Аа, да: то, что находится в квадратных скобках в регулярке - это "один любой из указанных символов в любом порядке".
#408 #642336
>>642318
Почему не работает такой вариант
http://ideone.com/xPD917

>$regexp = "/[а-я][с]{1}[ы]{1}+[а-я][ ]+/";


Это ведь любой символ любое количество раз, включая 0 + с + ы +любой символ любое количество + пробел минимум 1 раз?
96 Кб, 718x938
#409 #642344
Почему на пикрелейтеде при создании массива используются одинарные кавычки, а при выводе текста двойные.Я проверил, создание в принципе работает и с двойными, а вывод с одинарными? В чем разница? Обычно одинарными отдельные символы отображают, но тут вроде нет такой фигни. И зачем тут вручную задаются ключи для элементов массива, если это то же самое, что и по умолчанию, но плюс 1 везде? Не проще рандом сделать от нуля до 15?
#410 #642345
http://codepad.org/hDWGS5t9

Не могу понять, почему выдает ошибку на 23 строке.
Там же оператор "if", после которого должна открываться {

В чем проблема, аноны?
#411 #642346
>>642345
Уже понял, что ошибся с переменной $height, но если она берется из массива, почему до этого было обозначено {$height}, а затем {} ставить не нужно?

Я не дебил, правда
#412 #642347
>>642345
Убери фигурные скобки вокруг переменных в 23, 25 и 26 строках. они там не нужны.
#413 #642348
>>642347
В 26 нужна, я накосячил.
14 Кб, 637x176
#414 #642349
>>642348
Можешь объяснить, почему в эхо нужно писать скобки, а в операторе нет?

Или скажи, как это гуглить ._.
#415 #642351
>>642349
Я сам ньюфаг, особо не вникал. Просто синтаксис такой. Вообще кажется очевидным, что эти скобки в эхо нужны, чтобы напечатать значение нужно переменной, а не её название. Хотя как тут выше писали сейчас и без скобок работать будет. Но лучше все равно по-нормальному писать.
173 Кб, 350x263
#416 #642352
>>642351
Ладно, спасибо, анон. Держи котика.
#417 #642366
>>642157

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

Насчет плейсхолдера - тут есть несколько вариантов:

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

$pager->setUrlTemplate(function ($page) {
return ...
});

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

- сделать в UrlHelper готовую функцию которая возвращает URL с шаблоном, вроде getStudentsUrlTemplatе или переделать функцию формирования ссылки на список так, чтобы она принимала и плейсхолдеры, например:

$urlHelper->getSudentListUrl([
'search' => 'hello',
'{page}' => '',
...
]);

В общем вариантов тут много. Надо бы выбрать такой который лучше соответствует принципам ООП, разделения обязанностей, инкапсуляции, который наиболее удобен в использовании, понятен и который нельзя исплоьзовать неправльно.
#418 #642367
>>641709

А что нужно добавить?

>>642325

Это пример как писать не надо: слишком много действий в заголовке цикла, и смотрится плохо. Вывод в консоль надо переставить в тело цикла. Алсо мне не нравится идея менять 2 переменные, из-за этого трудно понять как идет цикл, надо либо избавиться от j-- либо унести это в тело цикла.

>>642344

> Обычно одинарными отдельные символы отображают, но тут вроде нет такой фигни.


Это только в Си/Си++ так. В PHP разница есть, но другого рода: http://php.net/manual/ru/language.types.string.php

> И зачем тут вручную задаются ключи для элементов массива, если это то же самое, что и по умолчанию, но плюс 1 везде?


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

$x = [ 1=> 'hello', 'world', 'something'];

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

>>642349

Почитай мануал http://php.net/manual/ru/language.types.string.php#language.types.string.parsing
102 Кб, 900x1350
#419 #642373
>>642366
Спасибо. Буду думать.
#420 #642374
>>642330
Подскажи правильную регулярку
#421 #642375
>>642330
Непонятно!
Если $regexp = "/[а-я]*/u"; то в массив заносятся все слова и пробелы.
А если $regexp = "/[а-я]+/u"; то только слова.
Почему так?
#422 #642411
10 задание по html/css - http://codepen.io/anon/pen/mVGqyV
#423 #642417
>>642375
Потому что звездочка может значить и отсутствие символа, а + только если символ имеется
#424 #642445
>>642367

>В PHP разница есть, но другого рода: http://php.net/manual/ru/language.types.string.php


Судя по этой ссылке одинарные кавычки - это просто ущербная версия двойных. Есть вообще какой-нибудь смысл их где-то использовать?
#425 #642480
>>642445
По идее это было задумано в perl, чтобы экранировать одни кавычки при выводе других и наоборот, ну и эта идея передалась в php как некий рудимент.
Например, тебе надо вывести строку с наличием определенного типа кавычек, тогда ее можно заключить в другие.
т.е.
echo "Привет, 'Юзернейм'";
echo 'Привет, "Юзернейм"';
#426 #642489
>>642445

Может быть ты хочешь чтобы $x выводилось как есть, а не как значение переменной. Тут-то одиночные кавычки и пригодятся. Или написать строку с двойной кавычкой в ней.
#427 #642511
C mt_rand() всё хорошо? Он подозрительно часто выдает мне одинаковые значения(и даже цепочки значений), а некоторых наоборот хрен дождешься(но иногда они таки выпадают, значит ту не ошибка в диапазоне).
#429 #642522
Господа, никто не знает можно ли в phpStorm сделать две вкладки со структурой проекта? Ну т.е. в одной одна папка в другой другая.
#430 #642546
>>642522
Что такое вкладки со структурой проекта?
Та хрень с изображением дерева папок и файлов?

Этим никто не пользуется, есть поиск по файлам и классам https://www.jetbrains.com/phpstorm/help/navigating-to-class-file-or-symbol-by-name.html
#431 #642572
>>642211
>>642223
Малость мнительная подсказка, не находишь?
Вот сделал, вроде все верно.
http://ideone.com/Qbiffu
#432 #642573
>>642546

>Та хрень с изображением дерева папок и файлов?


Да

>Этим никто не пользуется, есть поиск по файлам и классам



Я знаю, мне удобнее видеть древовидную структуру, чем каждый раз вбивать в поиске нужное место.
К тому же для удалённого репозитория поиск не будет работать.
Да и вообще у этих функций разные задачи.
#433 #642574
Вот мой вариант палиндрома. Всё плохо?
http://ideone.com/g1FVC9
другой ньюфаг
#434 #642590
>>642574
Норм. Решай дальше.
#435 #642627
>>642572
Что значит "мнительная подсказка"? Больше подсказал, чем следовало? Возможно. Просто ночь впереди - вдруг бы ты возился с этим ночью, когда никого в треде нет.
Считает сейчас верно.
А я вот так исправил предыдущий твой вариант: http://ideone.com/qiSoaL
Можно всё проще сделать: просто $i ставить там, где у тебя $firstElement и $lastElement. На месте последнего - с отрицательным значением, чтобы бралось всё с конца текста.
#436 #642635
>>642374
Нет. Сам должен дойти. И не совсем понятно, что именно тебе нужно, у ОПа в учебнике никакого "сыра" нет. Нужен ли тебе просто "сыр" или все слова, содержащие "сыр", - кто знает? Какую задачу делаешь сейчас, Grammar Nazi, что ли?
>>642375
Братишка уже ответил: >>642417
#437 #642640
>>642318

>Подскажите, как занести в массив все слова содержащие (сы)?


Аа, ну вот тут понятно, что тебе нужно.
1. Функция preg_match_all.
2. Регулярка с сочетанием "сы", по обеим сторонам "любые символы, могут встречаться, а могут и не встречаться".
3. Читать все сообщения, которые относятся к твоему посту.
#438 #642649
>>642336

>[с]{1}[ы]{1}


Не имеет смысла ставить {1} после символа да ещё его заключать в квадратные скобки. Квадратные скобки - это "любой указанный символ в любом порядке".
Мнительная подсказка: да просто поставь в регулярку "сы", а вокруг то, что я написал в предыдущем сообщении, чего тут мудрить?
#440 #642681
>>642674

>kievsmi


Ну ты понял.
#441 #642743
Получилось примерно так http://ideone.com/uY8n8G Скажите как можно сделать проще.
#442 #642759
>>642743
Я не знал про array_rand и так сделал.
http://ideone.com/OemoTy
#443 #642781
>>642759
ого, я бы в жизни до такого не догадался.
#444 #642783
Аноны, а array_sum() можно применять не к массивам?? Можно ли вообще посчитать сколько байт в предожении?
например $text = "я ебу собак";

как тут найти вес предложения?
#445 #642784
ОП, а ты как к функциональной парадигме относишься?
#446 #642785
>>642781
Это хорошо или плохо?
#447 #642786
>>642785
Плохо для меня ) А что значит -1 в цикле?
#448 #642793
>>642786
Чтобы не выходить за пределы диапазона значений. Сount же количество элементов считает, а они с нуля начинаются, а не с единицы. Но с array_rand это не нужно.
#449 #642802
В задаче про айпад процент от суммы накидывается только один раз в самом начале или каждый месяц от общей суммы или каждый месяц от суммы, которую осталось выплатить?
#450 #642804
>>642802
Я думаю, что так же как и в предыдущей задаче про айфон.
#451 #642807
>>642804
Спасибо.
#452 #642843
Проверьте 10-е задание по верстке >>642411
И 11-е http://codepen.io/anon/pen/wMExXp
Все ли там учтено
#453 #642845
В общем, я немного ебануто "решил" эту задачу. Что называется, в обратную сторону. Я сделал почти то же самое, что в задаче про айфон, но не подсчитал, сколько мы переплачиваем по кредиту, не знаю, как это сделать. Намекните хоть, посоны.

http://ideone.com/UGrGI7
#454 #642850
>>642674
>>640332

Никогда не пользовал популярных CMS, только Yupe на Yii из за удобных и легких модулей.
Это просто сборка сайта из кирпичиков и никакого самостоятельного кода?
В вакансиях не так уж и часто встречается, кстати.
#455 #642856
>>642674
Все на 1С Битрикс перейдут. Многоходовочка
#456 #642857
>>642845

>$dept = $payout;


>$dept = $dept - $payout;


Какой интересный способ написать $dept = 0;
#457 #642874
https://jsfiddle.net/dhqzx1zb/6/ написал вот сапёра. Вроде работает.
#458 #642880
>>642874
Чет больно громоздко, из тебя бы лучше получился писатель, чем программист.
#459 #642882
>>642880
Не представляю как можно короче написать.
#460 #642900
>>642874
ого, круто как. Сколько ты учишь уже?
#461 #642905
>>642900
Джаваскрипт с декабря прошлого года где-то.
#462 #642909
>>642905
А в целом?
#463 #642911
>>642845
Неправильно жи есть.
Где переплата, сколько анон вообще заплатил бы в разных банках?
Там софтобанк должен ту же сумму дать, чтои в задаче с кредитом на Айфон - для ориентира.
Сколько мы переплачиваем - это кредитбаланс х персент + пейсервис. Так везде должно быть с их комиссиями. И далее минус манслипеймент.
Названия переменных плохие и вообще с ошибками - нельзя же так
#464 #642915
>>642909
Долго. Года 2. Но с перерывами, иногда месяцами нихуя не делал. В целом, я только дойдя до файлообменника перестал прокрастинировать и начал кодить каждый день, почти.
#466 #642923
>>642921
Конгратс
#467 #642925
>>642915
А файлообменник уже написал?
#468 #642927
>>642915
а чем ты занимаешься и зачем учишь? просто интересно, анон
#469 #642936
>>642874
А чому показывает двойки рядом с бомбой?
Сейчас открылся ряд двоек, надо было продолжать - и прямо рядом с двойкой бобахнуло.
#470 #642942
>>642925
В процессе. Пока запилено только первые три пункта.
>>642927
Ничем не занимаюсь, учу как и все тут, чтобы найти работку.
#471 #642948
>>642942
а у тебя член большой?
#472 #642949
>>642936
А, втупил, забыл правила.
Неплохо так-то. И кода совсем немного.
#473 #642952
>>642948
Define "большой"
#474 #642955
Вот моя версия задачи про айпад. Второй банк вроде сходится с айфонозадачей. Проценты наращиваю заранее для следующей итерации, чтобы условие выхода из цикла удобнее проверять.
http://ideone.com/ksuDVA
#475 #642965
Да уж, смотришь на этих людей, которые для разминочки сапера пишут, а потом приступают к более сложным задачам, а у тебя не получается задачку с айфоном решить, так и хочется взять и все бросить.
#476 #642968
>>642965

>для разминочки


Это не для разминочки, я её весь день писал. За 2 года ты и не такое научишься делать, если хуи пинать не будешь, как я.
#477 #642969
>>642955

>suDVA


Проиграл.
#478 #642970
>>642965
Не бросай, просто эти люди изучают уже довольно длительное время, ты тоже так сможешь если не забросишь и будешь учить.
#479 #642973
>>642965
Ну не знаю. Я только вчера сел за этот ваш пхп, поэтому считаю свою криворукость естественной на данном этапе. Чего печалиться, все когда-то с хэллоу ворда начинали.
#480 #642974
Наверное. Я не хочу сейчас искать оправдания, но я думаю, что я просто не могу в абстракции, хоть и пытаюсь.
#481 #642978
>>642955
И сразу вопрос. Вот эта штука

>PHP Notice: Use of undefined constant time - assumed 'time' in /home/5hg7qx/prog.php on line 24


Как-бы намекает, что я что-то сделал неправильно. Но ведь работает вроде. Как так то?
#482 #642979
>>642965
Ты это я, бро. Учу третий месяц. Все уже студентов доделывают и на собеседования ходят, а я ебусь с ХТЛМ, КСС И ООП. Я бесполезный кусок говна, уже думаю бросать всё к чертям
#483 #642980
>>642970
Я и не собираюсь бросать, я просто делаю, но когда делаешь, а все время не получается, случаются когнитивные диссонансы, а мозг их не любит и пытается логически объяснить.
#484 #642981
Вы завязывайте с групповой терапией, тут всё-таки не мотивационный тред.
#485 #642983
>>642979

>Ты это я, бро.


Да, только я не бесполезный кусок говна, да и ты тоже, просто лукавишь. Человек всегда мыслит позитивно, что бы он не делал, и в глубине души ты считаешь себя хорошим аноном.
#486 #642986
>>642942

>В процессе. Пока запилено только первые три пункта.


Ты это я. Тоже джва года вкатываюсь в кодинг, но только с прошлой осени каждый день пишу. И тоже сейчас файлообмнник пилю. Правда уже первые 4 пункта выполнил.
Ты Slim или Silex используешь?
#487 #642987
>>642978
Нотис это легкий совет, на него не нужно обращать внимание.
#488 #642989
>>642986
Слим.
#489 #642990
>>642986
Силекс.
#490 #642991
>>642989
Эй, не отвечай за меня, шутничок.
#491 #642994
>>642991
Но это ты за меня отвечаешь, толстяк. Тут прекрасно видно, что слим
https://github.com/MindiMakridi/filehosting
#492 #642995
>>642987
В смысле "не нужно обращать внимание"? С какой-то целью этот совет дали же.
#493 #642998
>>642983
Хорошим аноном, да, но отнюдь не программистом
#494 #643000
>>642995
Не слушай его, нотисов не должно быть в коде.
#495 #643001
>>642990
Бля, я тоже
#496 #643002
>>642995
Нотисы дают, чтобы писать православно. Если тебе нравится писать код так, как ты его пишешь, это твоего ума дело.
#497 #643004
А чего вы на работу не устраиваетесь после студентов? Зачем файлообменник мучаете?
#498 #643007
>>643004
Жил бы в мск, сразу после рулетки пошел бы.
#499 #643008
>>643002
Но я хочу писать православно, просто не умею пока.
#500 #643011
>>643004
ТОЛСТОТА ЗЕЛЕНОТА
#501 #643012
>>643008
Тогда читай ошибки и гугли их.
#502 #643014
>>643011
Да вовсе нет, я >>642983
Пока особо нихуя не понимаю, но пытаюсь. Поясни?
#503 #643016
>>643004
У меня страх того, что скажут что-то делать, а я не буду знать как
#504 #643017
>>642955
$result[time] тут у тебя в индексе константа. Нужно либо $time, если нужна переменная, либо 'time', если строка.
#505 #643023
>>643004
Потому что этих знаний недостаточно, очевидно.
#506 #643027
>>643023
Смотря для чего. Для джуна достаточно.
#507 #643029
>>643017
Спасибо, пофиксил. А само решение хоть праильное?
#508 #643031
>>643029
Я не помню, тут кто-то недавно делал эту задачу, пусть он подскажет.
#509 #643032
>>643027
У меня в городе на джуна нужно знать как минимум один модный фреймворк и уметь пояснить за него.
#510 #643035
>>643032
Читаю описание "фреймворка" на вики и ничего не понимаю, можешь своими словами пояснить что это?
#511 #643036
>>643027
Какие-то неправильные джуны у вас. Это максимум стажер.
#512 #643037
>>643032
Если ты понимаешь MVC, а я так понимаю студентов с использованием этого подхода делают, то разобратся в фреймверке труда не составит.
#513 #643039
>>643014
Очевидно, что этого слишком мало, чтобы устраиваться на работу. Надо выучить базы данных + парочку фрейворков, это минимум.
#514 #643040
>>643037
Я понимаю MVC, но очень часто пишу говнокод и не знаю задачки с собеседований. Хочу улучшить скиллы, потом изучить фреймворк и попробовать на вакансию джуна.
#515 #643042
>>643036
Ну как я понимаю джун это?
html/css на уровне сверстать форму, что-то подправить и т.п.
основы js
php(OOP, MVC), mysql на уровне селектов с джоинами, инсертов
#516 #643046
Если выводить текст который не содержит пробелов ("ffssfafsfsafsafsfsfasfasfsffasfasafafs"-типа такого) из базы данных, то он ломает вёрстку, не переносится на другие строки в диве в котором он выводится. Как этого избежать? Есть ли какие-нибудь удобные методы, кроме как писать скрипт, который в таком случае специально будет делать в выводимом тексте пробелы?
#517 #643051
ыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыы
#518 #643052
>>643051
Вот, здесь нормально, не ломает вёрстку, раньше помню и тут даже вёрстка ломалась из-за такого.
#519 #643053
>>643032
Знаю 4 фреймворка и еще один Яп (помим жс и фронта) усе равно не берут.
#521 #643057
>>643046
долбоеб?
#522 #643058
>>643053
Значит хуево знаешь
#523 #643059
>>643053
какой город?
#524 #643061
>>643035
господа, ну хоть кто-нибудь, так трудно?
#525 #643063
>>643053
Знаешь на уровне "могу рассказать что это такое" или "могу сделать TestHub из оп-поста за пару дней"?
#526 #643064
>>643057
Но как это сделать? Текст уходит за границы дива и не переносится на другую строку, выводится как одна строка.
#527 #643065
>>643052
Спроси в /abu или /d.
#529 #643067
>>643064
Я же скинул ссылку выше
#530 #643068
>>643066
В голос
#531 #643069
>>643066
всё правда так хуёво?
#532 #643070
>>642955
\t$result = array(
\t\t'time' => $month,
\t\t'money'=> $paymentTotal
\t\t);
Интересная какая реализация!
Получается, так многое можно доставать из этих функций, меня очень напрягало в них то, что один-единственный return там можно ставить, конкатенацию делать, если несколько значений нужны (а потом их сложно разделить, если нужно разделение для чего-либо при выходе).
Спасибо!
Ты сам до такого додумался или где подсмотрел?
#533 #643072
>>642979
Кто каких студентов тут доделывает? Тут пара анонов третий год доделывает студентов.
#534 #643074
>>643067
О, да точно, это то что надо.
#535 #643078
>>643068
>>643069
Ничего смешного, рынок таких "специалистов" как мы переполнен и скоро лопнет.
#536 #643079
Если я установил максимально допустимое количество символов в поле формы (255), а также проверяю при отправке формы на яваскрипт максимально допустимое количество символов, мне следует в ПХП файле обработчике резать эту строку при помощи substr? Или достаточно просто очистить её от тегов, пробелов в начале и конце?
#537 #643082
>>643079
Резать.
#538 #643084
>>643070
Да вроде сам. Первое, что в голову пришло, когда захотел две переменных вернуть.
#539 #643089
>>643084
Вот такие как ты будут более или менее успешными, такие как ты постоянно генерируют в своей голове идеи, а такие как мы будут постоянно писать велосипеды и постоянно учить одну и ту же хуйню, которую не сможем применить на практике.
#540 #643090
>>643035
>>643061
Фреймворк это готовый к повторному использованию код. Например делаешь сайт, нужна валидация форм. Пишешь дофига кода, тратишь уйму времени и сил.
На следующей неделе другой проект. В нем тоже пишешь валидацию форм.
Прошла еще неделя, новый проект. Внезапно в нем тоже нужна валидация форм. До тебя начинает доходить, что наверное писать каждый раз с нуля не очень правильно. Пытаешься скопипастить из предыдущего проекта. Не получается, потому что там все завязано на тот проект, и там есть проверка имени и даты рождения, а тебе нужна еще проверка имейла.
В четвертом проекте тебе нужна проверка пароля.
После глубокомысленного совещания с коллегами приходишь к выводу, что было бы здорово иметь готовый код для проверки форм, который можно использовать в любом проекте (универсальность), и в котором будут все виды проверок, какие только существуют в природе.
Пишете этот код, оформляете на packagist как "superYobaFormValidator2016".
Фактически это библиотека, а не фреймворк. Фреймворк это совокупность таких библиотек, которые связаны общим кодом. Плюс в больших фреймворках есть дополнительные удобные фичи для дебага, для генерации кода, консоль и т.д.
#541 #643094
запилите перекат
#542 #643095
>>643090
Эх, а я всегда думал, что это такая йоба-программа с няшным интерфейсом, в которой ты делаешь программы, заточенные под что-то определенное.
#543 #643096
>>643094
Подождем еще пару дней.
#544 #643097
>>643089
Глуповато как-то. И слишком пессимистично. Что ты будешь "писать" потом, какой-то невозможный йоба-проект? Будешь править чужой код, фреймворки ставить и на них поднимать средние проекты - максимум.

>>643084
Мне приходило только в массив с помощью array_push забивать, а потом из него вытаскивать.
#545 #643098
>>643090
Cспасибо
#546 #643100
>>643098
Аж заикаться начал.
#547 #643105
>>643090
Так всё уже написано, до нас.
В фреймворках уже всё есть, как я понимаю.
Зачем вообще тратить врем на написание "superYobaFormValidator2016", если всё уже есть в фреймворке Yii каком-нибудь?
#548 #643110
>>643079
Зачем ее резать? Выдаешь сообщение об ошибке, "{$fieldName} слишком длинный"
На стороне сервера тоже должна быть валидация, js ведь можно отключить в браузере, ну или хакер вообще отправит тебе данные курлом.
Нужно дублировать клиентскую валидацию на сервере.
#549 #643111
>>643097
То есть ты хочешь сказать, что все задачи ОПа чисто академические и в реальной жизни в таком виде не встретятся? В банк я точно устраиваться не собираюсь работать.
#550 #643113
>>643105
Представь, что нет никакого ЮИ и прочитай еще раз.
#551 #643119
>>643100
Да уж, никогда не думал, что это может быть чем-то вроде шаблонов для упрощения работы.

>>643105
Насколько я понимаю, тот анон как раз описал появление фреймворков
#552 #643121
>>643105
Ты все воспринимаешь дословно, это просто пример того как люди приходят к тому что код нужно делать универсальным, чтобы его можно было повторно использовать.
Естественно в общих случаях используются большие фреймворки.
Хотя для какой-то специфической задачи часто приходится писать и свои библиотечки.
Для того же юи пишут экстеншены например.
#553 #643123
echo "bump";
>>629809
Исправил замечания.
http://integer64.github.io/site-layout/exercise/mainTask/index.html

>На кнопках ALL GRAPHIC ... правильный ли размер шрифта и паддинги? Что-то они у меня пикселя на 4 выше чем на макете.


Перемерил в ФШ с боков у всех кнопок разный паддинг, поставил 20px. сверху и снизу поставил 12px, шрифт брал из ФШ.

> & # 64 ;


>есть же & copy ;


В макете стоит @ , а не значок копирайта.

>Спрайты соц иконок вроде бы в PNG8, а не в PNG24 - почему?


Потому что в PNG8 появляется белая обводка , хз почему, может быть у меня такой фотошоп.
#554 #643135
>>643111
Всё может быть. Какой-нибудь калькулятор закажут для проекта - вот и пригодится.
Задачки так-то на овладение синтаксисом, понятиями и основными элементами. Это уже пригодится само по себе.
#555 #643167
>>643135
Ну вот что будет, если я сейчас просто забью на эту задачу и пойду дальше? Основные принципы функции я понял.
#556 #643168
>>643135
>>643167
Остальное я, кстати, решил.
#557 #643180
>>643167
Да особо ничего, я сам пропускал некоторые
#558 #643203
>>643040
В работе все изучается гораздо быстрее
Если есть возможность нужно идти, да и просто ходить по собеседованиям полезно
#559 #643207
>>643078
Либо ты привереда, либо долбаеб
Я ничего не знаю работу за месяц нашёл
#560 #643208
>>643203
Ну я не хочу ходить, потому что мне могут задать вопрос на который я не отвечу, или дать задачу которую я не смогу решить. Тогда подумают что я какой-то дебил и в эту компанию вход считай что закрыт. Я еще не до конца в себе уверен, да и в работе боюсь накосячить.
#561 #643210
>>643208
Такие и зададут если контора норм.
Обычно важно показать гибкость ума и то что у тебя есть идееи для решения. А не вызубрить ответы.
Алсо меня редко звали в который у которых на собеседование были задачи из книги Собеседование на PHP и ебучие HRы. Наверное подбородок не той формы.
#562 #643223
>>643167
Какой задачи? Не вдвоём же тут с тобой сидим.
#563 #643227
Задача на айпад
http://ideone.com/8AvsLP
#564 #643246
>>643227
По результатам с моей сходится.
#565 #643278
А как делаются скрипты, например выбора цвета футболки или её дизайна, что есть во многих магазинах? Просто по клику загружается другая фотка с нужным цветом и дизайном? Скрипт же не перекрашивает существующую картинку?
#566 #643283
Например, я хочу создать в теме вордпресс страницу с формами. Как это лучше сделать? Создать шаблон страницы, в котором создать форму и указать в её action путь к файлу который будет её обрабатывать? Или же есть какие-то специализированные средства вордпресс, которыми стоит пользоваться?
#567 #643296
>>642674
Расмус Лердорф советует использовать вордпресс в случаях, когда нужно сделать что-то блогоподобное.
http://www.youtube.com/watch?v=DuB6UjEsY_Y
#568 #643311
>>643278
Да,
хотя если можно заморочится и перекрасить.
#569 #643312
>>643311
Можно заморочится и перекрасить
>>643278
143 Кб, 1000x800
#570 #643342
>>639138 (OP)
В какой последовательности правильно изучать языки для WEB?
Сss, html, JS, PHP?
Или как-то по другому?
#571 #643344
>>643342
html + css затем js (скрипты на клиенте, в браузере) и php(скрипты на сервере, логика работы сервера)
#572 #643352
Посоны, как переучиться из веб макаки в настоящего программиста с ООП?
У меня есть определенный опыт говнокода и чистки веба вилкой, но когда я вижу всю эту серьезную хуйню с фреймворками, которые нужно устанавливать через командную строку, у меня просто руки опускаются. Это ж СОВСЕМ ВСЕ ДРУГОЕ блджад, непонятно с какого боку подойти к этим ларавелам.
#573 #643354
Сап.
Поставил апач (линупс мята inb4: убунта - не линупс), мускул, похапе, немного поредактировал конфиги. А что ещё бы сделать то лол? Хочу поставить nginx для фронта, поднять почтовый сервер (на одном компе можно же несколько сервов поднять? А один сервер может, обрабатывать и php код и, например, ruby код? Я это всё совсем незнат), SSL запилить. Все правильно делаю? Направь меня, анон :3
#574 #643355
>>643352
В них нет ничего такого сверхсложного, они просто большие и это может отталкивать. Как один анон выше писал, если ты понимаешь MVC и применял его на практике, освоить фреймворк будет легче. Попробуй ОПовскую задачу на список студентов.
#575 #643362
>>643355
Спасибо, написано неплохо вроде как.
Но вообще пиздец, все написанные мною пхп-уродцы не готовили меня к миру, где даже для установки jquery используется отдельная консольная утилита. Но что-то нужно делать, иначе всю жизнь плагины для вордпресса ковырять буду да баннеры править.
#576 #643368
>>643362
Учись писать правильно, потом когда будешь Юи осваивать - легче пойдет. Ну и ты всегда сможешь спросить совета в треде.
#577 #643384
>>643362
Это где жс через консоль?
#578 #643388
#579 #643390
Написал чат, скорее всего он ещё кривой, и там много дыр и проблем, может кому интересно http://parsing.pe.hu
#580 #643446
>>642921

Код советую показать на проверку (хотя конечно ОП будет традиционно слоупочить, но для через 3 дойдет и до тебя).
#581 #643447
>>642965

Задача на айфон просто сложнее предыдущих (и следующих), на ней все запинаются, некоторые ее с 10-й попытки только делают. Проверяет твою силу воли и целецстремленность.
#582 #643448
>>642978

Скорее всего ты забыл кавычки вокруг 'time' или знак доллара если это переменная. Скорее всего написал time вместо 'time'. Нотисов в программе, разумеется, быть не должно.
#583 #643449
>>643111

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

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

Ну а освоив все это ты можешь либо пытаться устроиться на работу либо изучить тот же Юи.

И заметь, что эти этапы обязательны. Не разобравшись в более простых вещах, ты не сможешь делать более сложные.
#584 #643450
>>643111

То есть если упростить то, что я написал то:

Учебник - изучение основ языка PHP
Задачи на студентов/файлообменник - изучение MVC, HTML, веб-приложений, баз данных. То есть как использовать PHP для написания веб-приложений.
Фреймворк Юи 2/Симфони 2 - изучение более продвинутых и высокоуровневых подходов написания веб-приложений.
#585 #643451
>>643079

Надо проверять длину через mb_strlen (не strlen) и выводить сообщение об ошибке.
#586 #643462
Откуда вы берёте MVC и что это? В вики опять очень заумно и непонятно.
#587 #643467
>>643462

Это идея разделения кода приложения на 3 части (в противовес подходу когда код пишут в один длинный файл простыней вперемешку), начни отсюда: https://github.com/codedokode/pasta/blob/master/student-list.md#mvc
107 Кб, 900x863
#588 #643471

> ЮИ


> юи


> Юи


Yii произносится как [ji:] (йи). YUI это другой Javascript-фреймворк.
207 Кб, 1000x916
#589 #643477
>>643471
Сам ты фреймворк.
#590 #643515
аноны, подскажите в правильном ли я иду направлении?
задача про льва толстого
https://ideone.com/37u4Qe
какойто длиннокот получается. чтобы первые две строчки не повторялись, планирую сделать цикл. Но может я рак, и все надо по другому сделать?
#591 #643520
>>643515
чет я херню пишу, нужна помощь
#592 #643524
>>643515
1. неправильная эскейп-последовательность. Правильно: \n
2. нет пробелов между склеенными стрингами. $a . $b будет давать значениеАзначениеБ, подумай, как от этого избавиться.
3. count($array) - тут надо доработать, у нас отчёт в массивах с нуля, что ты и указал. Теперь подумай, чему равно count и что будет, если твой рандом выберет максимальную величину.

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

$random5 = A
$randomWord5 = $word5[$A];
можно записать просто как
$word5[$A] = А
#593 #643529
>>643515
4. Дважды просто повторяется в echo:

>$line1 = $randomWord1 . $randomWord2 . $randomWord3;


>$line2 = $randomWord1 . $randomWord2 . $randomWord3;


$randomWord1 и $randomWord2 просто повторяются в разных строках.
Чтобы не повторялись, надо или циклом их изменять, или как-то их по-другому называть, что не будет правильным решением задачи.
18 Кб, 400x253
#594 #643533
>>643471
Ну не благозвучно же,
Еще говорят аЯкс и джисон, что-поделать
#595 #643541
#596 #643550
>>643541
Эээ, нет, задача решена не верно!
Вот как у ОПа в учебнике:

> слово1 слово2 слово3


> слово1 слово2 слово3


> Я слово4 слово5


Я же специально и написал:

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


Попробуй сделать с помощью цикла.
1 проход цикла - слово1 слово2 слово3.
2 проход цикла - слово1 слово2 слово3.
3 проход цикла - Я слово4 слово5.
#597 #643555
>>643550
влом
щас сделаю
#598 #643562
>>643555
Трипл не врёт!
Если нужна подсказка:
Тебе поможет переменная $i и условие, когда она стала равной 2 - вернуть строку "Я слово4 слово5".
#599 #643563
>>640313
ОП, подскажи!
#600 #643564
>>643562
https://ideone.com/8PgZku
спасибо за помощь
#601 #643575
>>643564
Теперь всё верно.
#602 #643600
>>643562

>Тебе поможет переменная $i и условие, когда она стала равной 2 - вернуть строку "Я слово4 слово5".


Но зачем лишнее условие внутри цикла? Почему бы не сделать цикл с двумя проходами, а "Я слово4 слово5" сделать уже после цикла?
#603 #643705
ребят что не так я делаю ??
http://ideone.com/R2KY7S
#604 #643717
>>643705

>PHP Notice: Undefined variable: higherAnon in /home/aZ484c/prog.php on line 28

#605 #643724
>>643705
Вот это:

>$higherAnon = $height > $anonHeight;


>$number = count($higherAnon);


Пролистай назад на урок про условия.
#606 #643725
>>643717
так и тип что не так с ней count нельзя так использовать или что?
#607 #643727
>>643724
ладно сейчас прочту еще раз
#608 #643729
>>643727

>if($height > $anonHeight)


вот так будет правильней
#609 #643730
>>643725
К чему ты её применяешь? Что такое $higherAnon?
#610 #643732
>>643730
выше анона
#611 #643736
>>643732
Я не про перевод спрашивал. Я знаю, что там должно быть, но ты сам-то понимаешь что в ней находится?
#612 #643738
>>643736
нет
#613 #643745
>>643600
Вообще за пределами цикла ставить echo надо с осторожностью. Лучше всё в цикле делать для одного решения - моё скромное мнение.
#614 #643748
>>643738
Новичка ответ.
Сделай var_dump($higherAnon) - узнаешь.
#615 #643753
#616 #643758
ну тип готово
http://ideone.com/R2KY7S
только я хз правильно ли
#617 #643763
>>643758
можно просто $number++ вроде
#618 #643767
>>643763
нет так выводит 9
#619 #643770
>>643732

>Вообще за пределами цикла ставить echo надо с осторожностью.


Почему? Как echo вообще с циклом связано?

>Лучше всё в цикле делать для одного решения - моё скромное мнение.


Можешь обосновать? Я просто ньюфаг и не разбираюсь в php, но как не погляди, если в коде того анона просто вынести нужные строки из цикла, то строк кода станет меньше, не будет выполнятся лишних действий(Цикл считает $i от нуля до двух и каждый раз дополнительно проверяет не равно ли оно двум. Во втором случае мы просто считаем от нуля до одного.) и читаемость вроде не страдает.
#620 #643777
>>643767
потому что ты букву пропустил. должно быть if($height > $anonHeight){ , а у тебя if($height > $anonHeigh);{
#621 #643783
>>643767
Вот тут плохо

>if($height > $anonHeigh);{


1)Пропустил t в названии переменной $anonHeight
2)Неверный синтаксис, точка с запятой после скобки не нужна.
И тут

>$number = $sum ++;


Просто $number++; Переменной $sum у тебя даже не создано ранее, а если бы и была, то ты бы не увеличивал $number, а присваивал ему одно и то же значение каждый раз. Тебе бы теорию почитать, что-то понимания синтаксиса совсем нет.
#622 #643793
>>643753
Значит, хуй погнул в переменную не передаётся никакого значения.
#624 #643801
>>643770
Потому что в большом скрипте может так быть, что в цикл придут переменные, которые уже не будут соответствовать условию для работы цикла, а echo всё равно потом выведется - а вдруг оно уже тоже не нужно?
Для такой небольшой задачи всё нормально. Для более значительных скриптов - надо с осторожностью.
#625 #643809
>>643796
Всё хорошо.
#626 #643813
>>643801

>Потому что в большом скрипте может так быть, что в цикл придут переменные, которые уже не будут соответствовать условию для работы цикла, а echo всё равно потом выведется - а вдруг оно уже тоже не нужно?


Не совсем понял. Ты про то, что в цикле переменная может измениться и echo выведет не то, что нужно? Ну так ведь ошибку с echo найти куда проще, чем если мы просто будем использовать переменную после цикла. А пытаться запихнуть всё решение в один цикл - это как-то странно же, особенно в большом скрипте. И к тому же появляются проблемы с читаемостью кода.
#627 #643815
>>643796
Теперь годно. Разве что строку внутри if табуляцией(или пробелами) выделить рекомендуется, но это уже о красоте и читаемости кода, а не о функциональности.
#628 #643818
>>643813

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


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

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


Нормально, это нормально.
#629 #643822
>>643815
приму к сведению, спасибо
#630 #643824
>>643818

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


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

>Нормально, это нормально.


Честно, я даже представить не могу большой скрипт в таком виде. Особенно если там какие-нибудь матрицы, предполагающие цикл в цикле или рекурсия(в php же есть рекурсия?).
#631 #643895
>>643824
Вот тут посмотри, например: >>642118
Или сам скрипт: http://ideone.com/7bSfev
Обрати внимание на какую-нибудь функцию, например, threeNumeralsToText($num, $number, $spelling, $roubles, $i, $x, $femaleSpelling).
Сама задача решена неверно (я её переделываю сейчас, осталось немного), но вот тебе один большой цикл, внутри которого куча других циклов, - так, чтобы просто ты себе такое представил.
Нужно быть осторожным с простым вынесением echo за пределы разных циклов - я только это и говорю с самого начала.
Никаких ошибок в том, что ты предложил, тоже нет, всё там хорошо.
Но ведь каждый вправе сам выбирать подход к написанию гармоничного скрипта. Как, конечно, вправе сам же и решать, что считать гармоничным в этой ситуации.
Присваивание из двумерного массива #632 #643932
Анончик, подскажи, пожалуйста, как присвоить переменной значение из двумерного массива.
#633 #643933
>>643932
Легко
#634 #643936
>>643933
как же? Напиши пример, пожалуйста.
#635 #643944
>>643936
Сперва скажи как ты берешь значение из одномерного массива?
#636 #643945
>>643944
Уже разобрался, я квадратные скобки ставил внутри других, а надо было после.
#637 #643946
Подскажите, как решать задачу на лайки. Пробежался по решениям анонов - у них всё по-разному и немного мудрёно.

Нам нужно две таблицы сделать, в первой - ид юзера и имена. А во второй что сколько колумн должно быть? Какие?
#638 #643949
>>643946
И ещё - как считать взаимные лайки? Значит ли это, что нужно прописывать КОМУ ставили лайки? Очень непонятно
#639 #643958
>>643946

>Пробежался по решениям анонов


Ясн. Жулик в треде, все на курсы повышения РНР с обязательными экзаменами в присутствии преподавателя.
#640 #643961
>>643958
Что ж ты бомбишь, в прошлом треде вбрасывал анон 2 решения своих.
я помощи прошу, чтобы понять, как делать самому.
#641 #643973
Анон, подскажи, как внутри foreach присвоить ключ элемента массива?
#642 #643979
>>643973
foreach($array as $key => $value)
#643 #644027
http://codepad.org/Xa1xjVHm

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

объясните пожалуйста что происходит вот в этой строчке - $randomText = $letters[$random];
#644 #644029
>>644027
ой я понел случайно
#645 #644037
>>643946
Первая таблица - информация о пользователе, да. Id, имя, может еще какие-нибудь данные.
Тут нужно привыкнуть думать объектами: есть объект (пользователь например) - делаем под него таблицу.
Лайк это объект? Естественно, значит делаем под него тоже таблицу.

>во второй что сколько колумн должно быть? Какие?


А какие тебе могут понадобиться для решения задачи, исходя из условия?
В условии сказано, что нужно вывести для каждого пользователя, сколько лайков он поставил, сколько получил, а также взаимные.
Разве не очевидно, что в таблице лайков мы должны хранить информацию о том, кто этот лайк поставил, и кому? (Только не самого пользователя, не имя, а только ссылку на него - гугли внешний ключ).
Если мы сгруппируем записи по id пользователя, то при помощи агрегатных функций можем получить информацию по полученным и поставленным лайкам для каждого, сумму в данном случае.
Гугли: группировка, агрегатные функции.

Эта задача еще учит дробить большое задание на мелкие.
Выведи сначала отдельно кол-во полученные лайки для каждого пользователя вида
id | имя | от кого
Потом поставленные
id | имя | кому
Потом попробуй объединить эти две таблицы (гугли join, inner join, outer join, left join).
id | имя | кому | от кого

Как закончишь с этим можно вернуться к взаимным лайкам. Их можно не хранить, а вычислить на лету при помощи функций mysql.
Что такое взаимный лайк? Это когда пользователь поставил лайк другому пользователю, и получил от него в ответ.
На предыдущем шаге мы получили таблицу, где были колонки кому_поставил и от_кого_получил. Если в них одинаковое значение, значит лайк взаимный. Это нужно как-то отметить, чтобы на выходе получить еще одну колонку 'взаимный'
id | имя | кому | от кого | взаимный?
В поле 'взаимный' можно выставить либо 1/0, либо 1/null.
Эту колонку не обязательно хранить в базе, мы можем получить ее при помощи функций mysql (гугли Функции потока управления программой, control flow functions).
Оператор SELECT используется не только для выборки данных из таблицы, которая хранится в базе данных. Можно создавать данные на лету.
Попробуй написать в консоли (или на sqlfiddle, чтобы не мучиться с кодировкой, если ты с винды)
select 1 as 'one', 2 as 'two', 25 as 'двадцать пять'.
Или
select if(curdate() = '2016-02-05', 'пятое февраля', curdate()) as 'сегодня';
#645 #644037
>>643946
Первая таблица - информация о пользователе, да. Id, имя, может еще какие-нибудь данные.
Тут нужно привыкнуть думать объектами: есть объект (пользователь например) - делаем под него таблицу.
Лайк это объект? Естественно, значит делаем под него тоже таблицу.

>во второй что сколько колумн должно быть? Какие?


А какие тебе могут понадобиться для решения задачи, исходя из условия?
В условии сказано, что нужно вывести для каждого пользователя, сколько лайков он поставил, сколько получил, а также взаимные.
Разве не очевидно, что в таблице лайков мы должны хранить информацию о том, кто этот лайк поставил, и кому? (Только не самого пользователя, не имя, а только ссылку на него - гугли внешний ключ).
Если мы сгруппируем записи по id пользователя, то при помощи агрегатных функций можем получить информацию по полученным и поставленным лайкам для каждого, сумму в данном случае.
Гугли: группировка, агрегатные функции.

Эта задача еще учит дробить большое задание на мелкие.
Выведи сначала отдельно кол-во полученные лайки для каждого пользователя вида
id | имя | от кого
Потом поставленные
id | имя | кому
Потом попробуй объединить эти две таблицы (гугли join, inner join, outer join, left join).
id | имя | кому | от кого

Как закончишь с этим можно вернуться к взаимным лайкам. Их можно не хранить, а вычислить на лету при помощи функций mysql.
Что такое взаимный лайк? Это когда пользователь поставил лайк другому пользователю, и получил от него в ответ.
На предыдущем шаге мы получили таблицу, где были колонки кому_поставил и от_кого_получил. Если в них одинаковое значение, значит лайк взаимный. Это нужно как-то отметить, чтобы на выходе получить еще одну колонку 'взаимный'
id | имя | кому | от кого | взаимный?
В поле 'взаимный' можно выставить либо 1/0, либо 1/null.
Эту колонку не обязательно хранить в базе, мы можем получить ее при помощи функций mysql (гугли Функции потока управления программой, control flow functions).
Оператор SELECT используется не только для выборки данных из таблицы, которая хранится в базе данных. Можно создавать данные на лету.
Попробуй написать в консоли (или на sqlfiddle, чтобы не мучиться с кодировкой, если ты с винды)
select 1 as 'one', 2 as 'two', 25 as 'двадцать пять'.
Или
select if(curdate() = '2016-02-05', 'пятое февраля', curdate()) as 'сегодня';
#646 #644069
>>644037
Cпасибо, буду сейчас разбираться
1983 Кб, Webm
#647 #644175
Воспользуюсь адекватностью опа и задам вопрос не по теме: как хорошо изучить линукс?
Гугл выдает либо книжки для чайников с описанием кнопочек юнити, либо профессиональные книги по администрированию, там естественно ничего не понятно.

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

Прикреплю описание на всякий случай.
Крашится vlc при попытке запустить конкретную webm (прикрепляю к посту, в браузере нормально проигрывается). Ubuntu 14.04, xfce.
Кусок сислога /var/log/syslog на пастбин http://pastebin.com/Gi3cU8E7

Что нужно выучить, чтобы самостоятельно мочь разбираться в таких вещах?
#648 #644197
>>644175

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


Пишешь в гугле и читаешь форумы. В /s/ лучше не заходить, ты уже сам понял почему.

vlc может падать при отсутствии кодека или если вебм кодировали чем-то нестандартным.
#649 #644256
>>644175

> Крашится vlc


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

vlc some-file.webm

и посмотреть что там выведется.

По линуксу - надо изучать архитектуру юникса (процессы, файлы, права), bash и консольные команды.

Вот я нагуглил

http://heap.altlinux.org/issues/textbooks/linux_intro/index.html
http://rus-linux.net/MyLDP/BOOKS/inst-322/node1.htm
https://www.debian.org/doc/manuals/debian-reference/
https://www.debian.org/doc/manuals/debian-handbook/
http://linuxgeeks.ru/bash-1.htm
http://www.opennet.ru/docs/RUS/bash_scripting_guide/

Ну и русские записи в логе это конечно кошмар. Как ты их гуглить будешь? Гуглятся только англоязычные сообщения об ошибках. Изучай английский если не знаешь.

Ну и в сислоге нет ничего по поводу vlc.
#650 #644259
Ребят, задача палиндром. В подсказке ОПа сказано, что нужно вырезать пробелы из текста, как это сделать?
#651 #644271
>>644259
Например заменить подстроку " " на "".
#652 #644277
>>644271
Господи действительно заработало, сам бы додумался до этого не скоро наверное http://ideone.com/02nSiT
#653 #644300
>>644277
http://ideone.com/lTvJ0P - неправильно работает.
Ты не сверяешь буквы с обеих сторон текста, а просто проверил первую и последнюю на соответствие - и выдал результат, что палиндром.
Уясни первым делом, как работает функция mb_substr с начала текста и - особенно - с конца. Далее пробуй разобраться с условиями.
#654 #644357
>>644300
Разве оно не возвращает от нулевого символа до конца и также от -25 в начало? Я понял именно так. Тогда пойду почитаю еще где-нибудь.
#655 #644366
Итак, не прошло и трёх недель, как задача на числа прописью была решена: http://ideone.com/UfX9rN
Переводит слова без ошибок.
Однако есть "костыли", от которых мне либо не удалось избавиться, либо показалось не таким важным в этой ситуации.
1. $femaleSpelling и $menSpelling - в основной функции, переводящей тройки чисел в текст, постоянно числа 1 и 2 переводятся по массиву $femaleSpelling в "одна" и "две", а дальше в конкретную функцию для перевода конкретного числа в слова я просто подставляю в нужных местах $menSpelling - функция переводит "один" и "два" опять же в нужные "один" и "два". Получается, во многих местах числа переводятся туда-сюда безо всякого смысла.
2. Формы слов "рубль", "тысяча" и "миллион" подбираются именно с помощью массивов и цикла foreach, а не с помощью условий, как советовал ОП. В принципе, это совсем не сложно (всего три условия для подбора форм), однако целесообразно ли? Функцию я для этого сделаю одну, а формы слов снова будут в тех же массивах. Либо и функций для этого тоже делать несколько. Не вижу или просто не понимаю целесообразности.
Но - тем не менее - чувствую радость и от такого решения задачи, испытываю облегчение, ощущаю себя полным сил для решения следующих задач.

>>644357
-25 у тебя будет той же самой буквой, что и 0 с начала, такие дела.
У тебя же в цикле есть переменная $i, которая с каждым прохождением меняется.
Тебе нужно отрывать по одной букве с конца и с начала текста и сравнивать их.
1. Буквы спереди и сзади текста совпадают - продолжаем цикл, можем вывести эти буквы с начала и с конца.
2. Буквы с начала текста и с конца не совпадают - выводим результат "Это не палиндром" и обрываем цикл.
3. Переменная $i равняется переменной $halflength - выводим результат "Это палиндром".
#656 #644381
>>644256
По-барабану откуда его вызывать, крашится даже не vlc, а наверное xfce: тухнет экран на 1-2 секунды, потом появляется окошко с вводом пароля. Все запущенные приложения закрываются. То есть я не могу посмотреть, что там вывелось в терминале, потому что терминал закрыт.
Команды консоли, права и т.п. поверхностно знаю, хочется как раз углубиться. Ссылки посмотрю, спасибо.

Как написал другой комментатор >>644197 , там скорее всего дело в кодировании вебм, потому что проблема возникает только с некоторыми файлами.
Чтобы гуглить, нужно хотя бы знать, в каком направлении. Если бы я мог найти место в логе, где говорится об ошибке, то смог бы хотя бы загуглить по тексту ошибки. Если в syslog ничего нет, то больше не знаю, куда смотреть.
Можно конечно забить, проблема несерьезная, но дальше может придется иметь дело с другими дистрибутивами, где подобная фигня на каждом шагу, а я же типа около-программист, хочется уметь разбираться в таких вещах.
#657 #644509
Доброй ночи, анон. Сегодня вчера начал учиться по вашей методички, дошел до массивов.
http://ideone.com/d9mCvn
Задание - надо добавить проверку, выше или ниже этот человек, чем анон, и подсчитать число тех, кто выше. Помогите нубу, наверняка загвоздка пустяковая, но я не могу её найти :С
#658 #644531
>>639138 (OP)
Чуваки, помогите, пожалуйста, с проверкой на грамматику (Grammar Nazi)
http://ideone.com/g4hvOM
Не все ошибки выводит, хз тот ли способ
#659 #644542
>>644509
if ($classMates['height'] > $anonHeight)
Что если поменять это на:
if ($height > $anonHeight)
#660 #644545
>>644542
СУКА, сработало. А почему так? В мануале написан такой метод записи как у меня.
#661 #644565
>>644545
Ну ты создал из массива еще две переменные - из ключей имена одноклассников и из значений рост.
В условии нужно сравнить просто переменную рост с ростом анонима
Это обычная переменная, как-то так
#662 #644810
>>644381

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

Соответственно из-за ошибки в раскодировании видеофайла в vlc должен падать только vlc.

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

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

Также, посмотри все остальные логи кроме syslog, например, /var/log/messages. Может там что есть.

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

vlc file.x 2>&1 > /tmp/log.txt

Но возможно что по умолчанию vlc ничего не выводит и надо добавлять какую-то опцию. Судя по https://wiki.videolan.org/VLC_command-line_help

надо добавить еще -vvv для подробного логгирования, то есть

vlc -vvv file.x 2>&1 > /tmp/log.txt

Вот тебе в помощь основы командной строки:

https://gist.github.com/codedokode/10539568
https://gist.github.com/codedokode/420c8c12a1edae25f0ec#file-linux1-md
#662 #644810
>>644381

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

Соответственно из-за ошибки в раскодировании видеофайла в vlc должен падать только vlc.

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

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

Также, посмотри все остальные логи кроме syslog, например, /var/log/messages. Может там что есть.

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

vlc file.x 2>&1 > /tmp/log.txt

Но возможно что по умолчанию vlc ничего не выводит и надо добавлять какую-то опцию. Судя по https://wiki.videolan.org/VLC_command-line_help

надо добавить еще -vvv для подробного логгирования, то есть

vlc -vvv file.x 2>&1 > /tmp/log.txt

Вот тебе в помощь основы командной строки:

https://gist.github.com/codedokode/10539568
https://gist.github.com/codedokode/420c8c12a1edae25f0ec#file-linux1-md
#663 #644831
Проверьте, пожалуйста, задачу про компанию Вектор. http://ideone.com/V6luV0
Условие задачи здесь http://archive-ipq-co.narod.ru/l1/pasta.html
#664 #644914
>>644531
Догадываюсь, что это потому, что эти же ошибки уже были занесены в предыдущий тип ошибок.
Не знаю, как исправить.
Пробовал заменить ИЛИ между скобками, но не сработало, и не знаю, почему
$regexp = '/([а-я]+[,|:][а-я]+)([а-я][жш]ы[а-я])(координально|сдесь|зделаю)([а-я]+\\sа)/ui';
#665 #644916
>>644914
*на звездочки после каждой скобки заменил
#666 #644917
>>644831
Тоже хочу смочь в это...
Вроде на подходе...
А всё никак...
#667 #644923
>>644914
Там всё верно с ИЛИ у тебя - ()|() - так и надо отделять разные ошибки друг от друга.
Но проблемы в самих выражениях в скобках.
Например, в четвёртой скобке - ([а-я]+\\sа) - сработает и на сочетании "лалка азаза".
#668 #644925
>>644914

>array(null)


Это что ещё за перда? Впервые такое вижу.
Для обозначения, что переменная является массивом, можно просто array() поставить.
#669 #644928
>>644914

>array_diff($m[$i], array(null))


Вообще ни хрена не понимаю, что это и для чего.
Дожил.
Ты не с нуля идёшь, есть какой-то опыт в программировании? У ОПа такого нет просто, всё решается в разы легче и проще.
#670 #644942
>>644923
спасибо большое, исправил
#671 #644943
>>644925
нагуглил, т.к. хотел удалить пустые элементы массива - они выводились в кавычках в ошибках
#672 #644944
>>644928
С нуля иду, но не дошло, как проще сделать.
#673 #644948
>>644928
пытался использовать просто preg_match, т.к. preg_match_all уже после задачи идет, но тогда еще меньше ошибок выводит
#674 #644950
антуаны, я задачу про палиндромы решил. проверьте пжлс. с меня хорошая карма
https://ideone.com/nfbTod
>>643515 кун
#675 #644965
блин, как можно сделать связь многие-ко-многим через внешние ключи? У меня ничего не выходит. Хочется просто сделать три таблицы через джойны.
#676 #644969
АААААААА пиздец, мне прилслали такое тестовое задание сложное, это просто пиздец, связь многие ко многим, с внешними ключами. Ужас.
#677 #644972
>>644969
Не рановато ли куда-то устраиваться?

>>644950
Нормально, только мудрости с $end можно было и сократить: в первом случае поставить в первое действие цикла $i = 1, далее для нахождения первого символа с начала текста поставить $i - 1 (будет 0 - как раз начнёт считаться "А" первая), а для нахождения первого символа с конца поставить -$i - будет сразу -1 (начнёт идти с конца строки, выдаст букву "а" последнюю).
#678 #644980
>>644969
Скинь потом в тред.
#679 #645024
анон, есть такой вопрос про fsockopen.
Мне надо делать запрос к странице и проверять её ответ по расписанию. Нагуглил, что запрашивать страницу можно через fsockopen, взял пример кода:
<?php
$fp = fsockopen ("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n");
while (!feof($fp)) {
echo fgets ($fp,128);
}
fclose ($fp);
}
?>

Без изменений код вполне работает и возвращает страницу example.com. Однако, при попытке смены хоста на тот, что мне нужен, возвращает 403 ошибку. Из браузера запрашиваемая страница грузится.
ЧЯДНТ?
#680 #645041
>>644972
Я 3 года пхп учу, что же тут рановатого?
#681 #645070
Пиздец, вопросы то вообще на сеньора, это нормально задавать джуну как одним сокл запросом выбрать ДВЕ колонки с минимальным значением другой связанной таблицы по внешнему ключу.
#682 #645073
>>645070

Ты наши задачи на SQL решал? Решения мне показывал? Если нет, считай что ты даже на уровне джуна не знаешь базы данных.
#683 #645075
>>645070
Нормальный вопрос на джуна, чего тебе не понравилось? Какой из тебя программист если ты даже этого не можешь?
#684 #645084
>>644928
А как это делается?
#685 #645118
>>645073
Если бы это задание было на джуна, я бы его уже нагуглил. Но это задание вовсе не на джуна.
ОДно минимальное значение выводится вот так.

SELECT MIN(CONCAT(first_name, last_name) from manager JOIN claim ON manager.id = claim.manager_id

А как вывести два минимальных я в душе не ебу, ибо кол-во полей заранее неизвестно, а задачи свои на палиндромы шкальникам оставь плз.
#686 #645122
>>645075
Ну-ка выведи мне это мразь, раз такой умный. Вангую ты просто шкальник с палиндромом, решивший выебнутся, уткнись в свои регулярки и не высовывайся.
Задание 3. Напишите запрос, который выведет двух менеджеров, у которых количество связанных заявок меньше, чем у остальных.
При этом, объедините значения first_name и last_name в одно поле full_name.
#687 #645126
>>645118
>>645122
В пятерочку иди работать, бедолага.
#688 #645128
>>645024
так, погуглил и прочее и понял что надо пользоваться курлом. Но, так же в задании говорится про отправляемые данные в виде
<taxi:RegNum>SomeNum</taxi:RegNum>
попробовал такую конструкцию

$ch = curl_init("http://82.138.16.126:8888/TaxiPublic/Service.svc?wsdl");
$xml = array("xml"=>"<taxi:RegNum>ем33377</taxi:RegNum>");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

curl_exec($ch);
curl_close($ch);
fclose($fp);

но ответ почему-то пустой. Может я неправильно запрос пересылаю?
#689 #645141
>>645118
>>645122
Да не рвись ты так, ну не твое это, бывает.
#690 #645151
>>645084
Еле нашел в старом треде пример
Сработало!
#691 #645159
>>644944
>>645084
Алгоритмов тут может быть несколько.
Например, я сам делал через массив, у которого в ключах регулярки для выявления ошибок, а в значениях описание сути ошибки.
Такого типа:
$regexp = array(
'/[а-яё]\\s?координально\\s[а-яё]+/ui' => 'Ошибка в слове \"кардинально\"!',
'/[а-яё]
\\s?сдесь\\s[а-яё]+/ui' => 'Ошибка в слове \"здесь\"!',
'/[а-яё]*\\s?[^а-яё]здела[лнoюет]\\s[а-яё]+/ui' => 'Приставки \"з\" не бывает!'
) - и так далее.
Далее циклом foreach раскладываешь этот массив на ключи и значения, функцией preg_match_all находишь все ошибки под каждую регулярку-ключ в массиве, выводишь их рядышком со значениями.
>>645151
Какой, дай ссылку.
#692 #645162
>>645159
Твою же мать, забываю всё время про звёздочки...
Вот тут этот массив: http://pastebin.com/5n8wcvgg
#693 #645164
>>645128
Вот чужой пример, но он работает как мой, только не определяя тип ошибки: http://ideone.com/T4ewwV

Огромное спасибо за ответ, хорошее решение
#694 #645168
>>645164
Вот да, там всё то же, только массив с регулярками и описаниями ошибок сделать - и выводить ключи и значения друг напротив друга.
#695 #645175
>>645168
Большое спасибо, попробую разобраться и сделать сейчас
#696 #645223
чисти чисти регулярки вилкой, чмоша.
#697 #645226
>>645126
эко грузана порвало, как там твоя жируха из пятирочки, все жирее за кассой?
#698 #645261
>>645168
Сработало, добра тебе!
http://ideone.com/vsm7Ia
#699 #645265
>>644972
действительно. спасибо
#700 #645313
аноны, где можно протестировать отправку/получение xml запросов?
#701 #645348
>>645313

Есть такое: http://httpbin.org/ для тестирования HTTP запросов вообще.

Ты зря возишься с курлом, надо брать нормальную высокоуровневую библиотеку-клиента вроде guzzle. И конечно надо хорошо изучить протокол HTTP перед тем как вообще за это браться. А то ты сам не понимаешь что делаешь. Если ты копируешь код не понимая как он работает то ничего хорошего не выйдет.
#702 #645364
Как перестать писать на PHP и начать программировать?
#703 #645388
>>645261

>[,|:]


Квадратные кавычки означают "один любой из указанных символов в любой последовательности".
Поэтому знак ИЛИ там не нужно ставить.
Далее '/здела[люн]/ui' сработает и на "Разделан под орех".
И контекст у ошибок непонятен - слишком мало чего берётся за пределами ошибки, не понятно, где её искать в тексте.
Поэтому ОП не одобрит такого, инфа соточка.
Но ты на верном пути, ещё немного тебе поправить осталось в самих регулярках.
#704 #645461
Предлагаю такое решение задачи "Ответ на любой вопрос" из серии массивов: http://ideone.com/HWJppK

Хотел ещё больше "автоматизировать" - удалить порядковые номера у элементов массивов, но почему-то не удалось.
#705 #645466
>>645364
Мне все знакомые программисты со стажем советуют бросать решать задачки ОПа после регулярных выражений и переходить к его пастам, к ООП сразу, даже минуя HTML и CSS.
Потому что якобы для реальных проектов всё равно куча чужих костылей понадобится, разбирать чей-то проект всё равно придётся, можно таким вот образом сэкономить на обучении.
Не знаю, не верится.
Пока иду и ничего не пропускаю, но уже точно знаю, что некоторые бонусные задачи ОПа мне будут не по зубам, поэтому спокойно через них перешагну.
Попутно посмотрел первый урок слитого на YouTube курса от Школы программирования по Yii2 - вполне всё как-то неплохо и вполне понятно звучало, то запустить, там-сям то-то и то-то прописать.
Жажду перейти к ООП.
#706 #645469
>>645461
Я, когда читаю задачи ОПа, пытаюсь их решить сразу, ещё не смотреть код полностью. Получаются такие вот решения. Потом сверяюсь с ОПом.
#708 #645483
>>645461
Чому не получилось?
Всё получилось:
http://ideone.com/pbo7xi
Возможно, ты где-то ошибся в запятых или кавычках.
#709 #645484
>>645461
Руки отрывать. "Да' никогда не будет выпадать, в одном из вариантов будет ошибка Undefined offset на массиве. Вы бы хоть свой код тестировали, наркоманы.
#710 #645489
>>645484
Ох щи, точно.
Надо в mt_rand ставить ноль, а от count отнимать единицу.
#711 #645495
>>645388
Благодарю, откорректировал.
Смущает только одно сообщение, не выводит "ши" перед "пишы"
Ошибка в буквосочетании: пишы с
#712 #645500
>>645489
Не, это я погорячился, у тебя же там индексы массива вручную от 1 проставлены, так что все правильно. А c count да, ошибка будет.
#713 #645508
>>645480
>>645483

Нипонял с минус единицей. Почему конструкция такая:

>count($answers)-1)



Да, надо начинать с 0, я тож лоханулся. Но Если отнимать единицу, то последний ответ никогда не выдаст. Не выдаст же?
#714 #645509
>>645500
А по-моему, не будет, т.к. с 1 проставлено все.
#715 #645513
>>645508
Если с 0, то нужно вычесть 1
Если с 1, то не нужно
Разве нет?
#716 #645514
>>645500
Я другой.
У меня был его код без нумерации, вот там я забыл, что автоматически при этом нумерация с нуля идёт.

>>645495
Не пойму, что не выводит? Вроде бы всё выводит.
#717 #645515
>>645466

>даже минуя HTML и CSS


Будешь как наш коллектив на работе - прислали задачу переделать дизайн, фронтенд в отпуске, все пизды получили за срыв сроков презентации, ибо не осилили существующую верстку.
#718 #645519
>>645508
>>645509
>>645513
Нумерация без заданных ключей идёт с нуля.
Функция count считает с единицы.
Вопросы?
Профит!
#719 #645521
>>645508

Так если без нумерации, зачем вычитать 1?
#720 #645522
>>645515
Вот я тоже так рассуждаю.
А они, типа, всё равно же придётся копаться в чужом говнокоде, вот тогда всё и уяснишь.
#721 #645523
>>645521
Траллишь?
#722 #645525
>>645514
Ну я хочу, чтоб с двух сторон ошибки было по слову:
Ошибка в буквосочетании: ши пишы с
#723 #645528
>>645521
$array = ['хуй','хуй','хуй'];
$value = $array[count($array)]; // 3
Результат - ошибка offset, ибо в массиве нет члена под номером 3.
#724 #645532
>>645521
если без нумерации, то счет с 0
Например, 0 1 2 3
Всего элемента 4, но ключи выбираем от 0 до 4-1=3
#725 #645534
>>645525
Аа, это.
Я тоже с таким столкнулся, когда делал, сейчас вспомнил.
Придётся смириться: при пересечении ошибок уже выданный одной регуляркой кусок не выдаст снова.
ОП что-то там говорил про callback функцию, ещё что-то, но я удовлетворился тем, что есть.
21 Кб, 852x480
#726 #645535
>>645528

>массив хуев


>в массиве нет члена

#727 #645537
>>645534
Значит, все правильно. Спасибо.
#728 #645545
>>645528
>>645532

Гениально! Спасибо, братья.
#729 #645552
>>645545
А есть ещё такая хуйня. Я в мануале вычитал, что если элементу массива дать какой-то номер, то все остальные безномерные массивы будут считаться с последнего присвоенного номера. Поэтому можно просто первому элементу присвоить номер 1, а остальные сами пронумеруются начиная с 1. Таким образом, потребность в -1 должна отпасть.
#730 #645564
>>645552
$array = [1 => 'хуй1', 'хуй2'];
$value = $array[count($array)];
echo $value;

Да, выдает хуй2.
#731 #645585
>>645564
Это просто охуенно
#732 #645592
>>645466

> что некоторые бонусные задачи ОПа мне будут не по зубам, поэтому спокойно через них перешагну.


Ты поступаешь глупо. Ладно, если бы они были слишком элементарные - тогда можно было бы и пропустить.
#733 #645597
>>645515

Ты же в нашем треде сидишь - почему с задачей не справился?
#734 #645615
>>645597
Я в последний день вышел перед презентацией, а там страниц править целая гора была. Кое-что успел поправить конечно, но пизды все равно получили.
#735 #645617
>>645564
По аналогии следующая задача: http://ideone.com/3Qp5OY

Только тут рандомом считается и количество слогов.
#736 #645620
>>645592
Там, где буквы в круге и нужна тригонометрия?
Не-не, я тут три недели делал числа прописью, жду разбора от ОПа сейчас.
А подобные задачи я до конца этого года буду решать.
И надо ещё дойти до этой задачи, я пока калькулятор делаю ещё только.
#737 #645636
>>645617
Ну норм, пойдет.
#738 #645641
А Оп здесь бывает вообще? Сколько всего анонов входят в экспертный совет по дрессировке новичков?
#739 #645648
>>645641
Оп не все время тут сидит. Я подрессировать захожу время от времени. Еще несколько анонов бывает проверяют.
#740 #645658
>>645648
Респект таким парням
58 Кб, 782x503
#741 #645677
>>644810
Да, падает "x-сервер".

Понятия не имею, какие драйвера. Разве их нужно обновлять вручную? Я думал, что upgrade обновляет все зависимости.
Не успевает он ничего записать в файл, 0 байт. Успеваю заметить с огромной скоростью пробегающие в терминале строки, через 0.5 секунды черный экран и приглашение залогиниться. Все запущенные программы помирают.
/var/log/messages нет такого файла

Основы командной строки знаю, только cp и mkdir мне тут не особо помогут.
1216 Кб, 1799x1199
#742 #645706
Сделал задачу на лайки, спасибо большое анону: >>644037

http://sqlfiddle.com/#!9/4ffa58/1
оцените, кто-нибудь
#743 #645771
>>645677

Там в этом окне наверно еще интересные подробности есть?

Насчет консоли - ты наверно не перенаправил поток ошибок, то есть не дописал 2>&1 к команде, потому они не пошли в файл.

Насчет драйверов - погугли про то какие видедрайвера бывают в убунте. Ну и надо подробности ошибки посмотреть, и лог от vlc, может там что интересное будет.
Ответы за 31 января #744 #645856
>>639244

> elseif ($age>100) {


Тут лучше написать просто else без условия

> $year = $year + 1;


Можно $year++; А можно вообще убрать переменную $year и вычилять число лет по разнице возрастов.

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

>>639262

Стоит размещать HTML и PHP код в отдельных файлах. Читай: http://www.phpinfo.su/articles/practice/shablony_v_php.html

>>639269

В ОП посте есть задачи по SQL, там же и ссылки на туториалы.

>>639294

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

>>639300

Правильное решение.
Ответы за 31 января #745 #645858
>>639339

Гитхаб ОПа: https://github.com/codedokode/ - правда я его никому ИРЛ не показываю, да и при поиске работы у меня гитхаб ни разу не справшивали.

>>639407

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

>>639449

Получается ты дублируешь функционал php.ini (и .htaccess), есть ли смысл? Ну и если и делать так, то менять надо display_errors, а не error_reporting.

>>639440

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

>>639462

Интересный вопрос про локализации. Локаль ru_UA не совсем украинская - это значит "русский язык, используемый на территории Украины". По моему это баг (можешь даже написать о нем в багтрекер). Очевидно что в обоих случаях название месяца должно выводиться в одном и том же виде.

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

>>639534

> [\\s"()-]


Зачем разрешена кавычка?

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

Также, не экономь на названиях перемнных:

$bnumbers -> $badNumbers

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

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

>>639559

Не стоит парсить HTML регулярками.
Ответы за 31 января #745 #645858
>>639339

Гитхаб ОПа: https://github.com/codedokode/ - правда я его никому ИРЛ не показываю, да и при поиске работы у меня гитхаб ни разу не справшивали.

>>639407

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

>>639449

Получается ты дублируешь функционал php.ini (и .htaccess), есть ли смысл? Ну и если и делать так, то менять надо display_errors, а не error_reporting.

>>639440

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

>>639462

Интересный вопрос про локализации. Локаль ru_UA не совсем украинская - это значит "русский язык, используемый на территории Украины". По моему это баг (можешь даже написать о нем в багтрекер). Очевидно что в обоих случаях название месяца должно выводиться в одном и том же виде.

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

>>639534

> [\\s"()-]


Зачем разрешена кавычка?

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

Также, не экономь на названиях перемнных:

$bnumbers -> $badNumbers

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

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

>>639559

Не стоит парсить HTML регулярками.
Ответы за 31 января #746 #645859
>>639569

Там наверно можно поставить свои шаблоны для форм? Надо либо найти либо сделать шаблоны, совместимые с бутстрапом. Алсо, ОПу не нравится когда этот бутстрап суют везде. Если ты делаешь дизайн сайта то стоит как минимум пересобрать свою версию бутстрапа, взяв только нужное и убрав лишнее (вроде всем надоевшего Ариала 14-го размера).

>>639606

Значит надо подучить регулярки.

>>639723

Нужно обе технологии.

>>639729

Не знаю. Временем запуска?

>>639731

Может кавычки были одинарные?

>>639845

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

>>639865

Много кода, надо убрать копипасту. Число 5000 в коде надо заменить на переменную.

>>639896

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

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

>>639902

Можно сделать библиотеку и подключать где требуется.
Ответы за 31 января #746 #645859
>>639569

Там наверно можно поставить свои шаблоны для форм? Надо либо найти либо сделать шаблоны, совместимые с бутстрапом. Алсо, ОПу не нравится когда этот бутстрап суют везде. Если ты делаешь дизайн сайта то стоит как минимум пересобрать свою версию бутстрапа, взяв только нужное и убрав лишнее (вроде всем надоевшего Ариала 14-го размера).

>>639606

Значит надо подучить регулярки.

>>639723

Нужно обе технологии.

>>639729

Не знаю. Временем запуска?

>>639731

Может кавычки были одинарные?

>>639845

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

>>639865

Много кода, надо убрать копипасту. Число 5000 в коде надо заменить на переменную.

>>639896

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

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

>>639902

Можно сделать библиотеку и подключать где требуется.
#747 #645872
>>640215

Мельком глянул, вижу такое:

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

да и работы увидят текст ebpaint без первой буквы, плохо.

Позже гляну еще.
#748 #645874
>>640215

> <i class="service-block-icon icon-android"></i>


Это бесполезный тег, и от него надо избавиться, например заменив на псевдоэлемент.
#749 #645993
>>645858

>Ты уже 4 года на бордах?


Я уже семь лет тут.
#750 #646033
Короче, вот ТЗ (тут школьники просили).
Я не могу решить третье задание. Бросать или пытаться что-то там решить и отправить фирме?
http://pastebin.ru/yvVHxv0o
#751 #646041
>>646033
Бросай. Сомневаюсь, что кому-то нужен такой агрессивный уёбок, как ты
#752 #646068
>>646033

Вместо того чтобы расстраиваться, лучше изучить темы, которые ты не знаешь: проектирование БД, нормализация, джойны, группировки, чтобы в следующий раз чувстовать себя увереннее. У нас кстати в ОП посте есть задачки на SQL.
#753 #646082
Анончик, нид хелп. Пытаюсь сделать генератор стихов из мануала в ОП-посте.
http://ideone.com/HmEaE7
$str2 создал думая что вызывая переменные из массива по новой оно будет генерировать новое рандомное число в переменной каждый раз и будет получаться, но нихуя. Более того, у меня почему- то каждый раз проебывается первое слово,а иногда и третье. Помоги плиз.
#754 #646085
>>646082
Я понимаю что проблема в рандомайзере, но не понимаю где.
#755 #646088
>>646085
Ошибки внизу для кого пишут? У тебя там обращение к несуществующему индексу массива.
#756 #646089
>>646088
Оу, спасибо. В глаза ебусь, буду внимательнее, а как сделать чтобы при обращении к переменной оно каждый раз брало рандомное слово? Получается что $str1 и $str2 выводят одинаковые слова.
#757 #646092
>>646088
Все, спасибо, уже не нужно. Придумал как сделать. Можешь проверить (ссылка та-же).
#758 #646094
>>646092
Поправь отступы в выводе. Но и лично я бы советовал вместо mt_rand(0, число) использовать mt_rand(0, count($arrayName)-1). Читая чужой код никто не любит, когда из ниоткуда появляются константы т.к. далеко не всегда очевидно о чем думал автор кода, когда их писал.
#759 #646095
>>646094
Изначально так и думал сделать, но посчитал что математика не будет работать в значении рандома и отбросил этот вариант.
61 Кб, 955x670
#760 #646103
Почему модуль в уии через гий не создается?
#761 #646105
Зачем в echo переменные заключаются в фигурные скобки?
#762 #646116
>>646105
Чтобы выводилось содержимое переменной, а не её название.
#763 #646117
>>646103
Нет прав на запись.

>>646105
Попробуй подумать. Или хотя бы погуглить.
#764 #646119
>>646117

>Попробуй подумать. Или хотя бы погуглить.


Проблема в том, что всё работает и без скобок. Во всяком случае в ideone
#765 #646124
хелло опять.
проверьте пжлс решение про айпад в кредит
https://ideone.com/0QEY2A
спасибки :3
#766 #646125
Не понимаю, под виндой все нормально создавалось, а тут такое.
#767 #646135
>>646124
По цифрам в результате всё верно. Но, во-первых, как тебе намекает вот это:

>PHP Notice: Undefined variable: paymentTotal in /home/ixNm2b/prog.php on line 9


Неплохо бы написать что-то типо $paymentTotal = 0 прежде чем писать $paymentTotal = $paymentTotal + $creditBalance; Оно хоть и прокатило, но по сути ты создавая переменную пока еще без значения присваеваешь ей саму себя, что не ок.(Ну и плюс для кртакости можно $paymentTotal += $creditBalance; юзать вместо $paymentTotal = $paymentTotal + $creditBalance;)
И лично мне не понравился вариант решения через 20 итераций. Он делает твою функцию неуниверсальной. Да, эту задачу она решает правильно, но вставить туда сумму побольше и она остановится раньше чем нужно.
#768 #646144
>>646135
$paymentTotal я добавлял, но потом убрал, глянул что и так работает, и не стал возвращать
можно сделать бесконечный цикл, но тогда он будет бесконечным, лол. не совсем понимаю, как убрать ограничения $i и при этом не сделать цикл бесконечным.
#769 #646146
>>646144

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


В условии не обязательно должно быть именно $i.
#770 #646153
>>646144

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


а какая разница, если есть break?
так или иначе цикл завершится
#771 #646161
>>646153
меняем ежемесячный платеж, сумма кредита не будет уменьшаться, и тормоз никогда не наступит... АПОКАЛИПСИС бесконечный цикл
#772 #646165
>>646161
Вставь проверку тогда. если после платежа сумма кредита не уменьшилась, то echo "Ты будешь расплачиваться за свой айпад ВЕЧНОСТЬ" и exit();
#773 #646169
>>646146
остальные переменные так же могут дать конечный\бесконечный цикл, зачем делать дополнительное условие для выхода из цикла, если и так все хорошо? объясните нубу
#774 #646175
>>646165
хорошая идея. щас сделаю
#775 #646176
>>646124
Я бы еще копейки округлил
#776 #646200
>>646124
Где там что верно, если в return идёт $paymentTotal, а результат - всё по нулям?
#777 #646207
>>646200
я переделываю патамучта. подожди, выложу новую версию
#778 #646225
>>646207
Надо форкать.
Лучше оставлять недоделанные варианты, чтобы потом ОП объяснил, где там были проблемы. Часто уже после разбора анонов он приходит и по хардкору поясняет, что там было не так.
А ты уже переделал код.
#779 #646236
>>645534
По-моему, смириться приходится только когда выводишь через массив, как я в самом начале делал.
А тут просто регулярку отредактировал, и нормально выводит все.
97 Кб, 500x313
#780 #646245
Задача "Я у мамы калькулятор": http://ideone.com/E8Xjy5
После задачи на вывод чисел прописью это всё показалось не таким уж и сложным.
Следующую неделю буду пробовать решить бонусные задачи.
Если мне будет слишком тяжело из-за необходимости использовать сложные математические уравнения - перехожу к HTML и CSS.
Также сделал большую таблицу или прогресс-бар с возможностью отмечать выполненные задания и следить за общим прогрессом обучения.
Когда буду способен - сделаю для братишек и себя подобную же интерактивную таблицу.

>>646236
А теперь не показывает ошибку "пишы", разве нет? Выдаёт "Ошибка в буквосочетании: Жы,ши пишы с", но там ведь две ошибки.
Вот именно, что приходиться мириться с подобным в этой ситуации.
#781 #646268
>>646245
А ведь и правда. Вернул, что было.
#782 #646279
>>646245
Вот что забыл: не смог сообразить, как ввести поддержку дробных чисел - хард-мод в решении этой задачи.
"Приходиться мириться" - боже, какой позор, только полюбуйтесь на это...

>>646268
ОП что-то говорил про callback-функцию, про отсчёт в цикле байтов от каждой ошибки - там всё сложно.
Поэтому не обращай внимания: у тебя полностью подходящий для этой ситуации вариант.
#783 #646294
Проверьте пожалуйста задачку на палиндром.
http://ideone.com/cEOdpw
#784 #646298
>>646294
Числа -0 не бывает.
#785 #646301
>>646298
Поменял на единицу - не робит. Я правильно понял что если поменять знак на $from функции mb_substr - то оно будет брать аналогичный символ с конца?
#786 #646304
>>646294
Если я всё правильно понял, то у тебя конечный результат зависит от последних сравниваемых символов, а не от строки вцелом
мимоДелаюЭтуЖеЗадачу
#787 #646309
>>646294
Две ошибки. Ты сравниваешь не те символы. И >>646304.

Модифицировал что бы было видно:
http://ideone.com/gZSbey
#788 #646315
>>646304
Тем не менее 10ый символ должен совпадать и должно выводить палиндром. Добавил брейк в в фейловый ответ.
>>646309

>Я правильно понял что если поменять знак на $from функции mb_substr - то оно будет брать аналогичный символ с конца?


Судя по всему - нет.
#789 #646316
>>646309
Ещё вопрос - mb_substr($text, -0, 1) = mb_substr($text, -1) ?
#790 #646320
>>646301
Поменяй $i = 0 на $i = 1, а дальше в функциях отнимай до нуля или ставь -$i.
#791 #646322
>>646320
Спасибо, анон. Решение проблемы конечно тупорылое, но оно работает.
#792 #646344
>>646322
Нормальное решение.
#793 #646345
Пилю студентов. Решил делать контроллеры в виде простого класса с методом run(). Я правильно понимаю, что в контроллерах можно не заморачиваться с передачей параметров, а писать прямо $_POST['foo'], $_COOKIE['bar'] и т.п?
#794 #646348
#795 #646349
>>646322
Мне всё еще не нравится у тебя вот эта часть:
else {
$result = "Палиндром";
}
По сути ты тут много раз в цикле переприсваеваешь переменную одним и тем же значением. Зачем? Не проще до цикла при создании переменной сразу написать $result = "Палиндром"; ?
#796 #646350
>>646345

В студентах можно вообще не делать классы-контроллеры, а использовать обычные скрипты. Там всего 2 контроллера (список студентов и форма).
http://integer64.github.io/site-layout/exercise/mainTask/index.html #797 #646351
>>640215

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

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

В адаптивной версии возможно стоит добавить небольшой паддинг (5px) на блок с заголовком, а то там текст "digital & branding agency ..." упирается в края слева и справа.

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

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

> <li class="item-menu">


Тут можно было схитрить, не ставить класс, а использовать селектор .menu > li. Но можно и так.

> <p class="slider-text">


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

> <i class="service-block-icon icon-android"></i>


Это надо заменить псевдоэлементом

> href="tel:0247 541 65 87"


Тут номер стоило записать без пробелов

> 0247 541 65 87


А вот тут стоило поставить неразрывный пробел (почитать: https://www.artlebedev.ru/kovodstvo/sections/62/ http://webstyle.sfu-kras.ru/nerazryvnyj-probel http://lurkmore.to/%D0%A2%D0%B8%D0%BF%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0 ). Не используй пробел вставляемый через Alt + 0160 так как его не отличить от обычного, лучше явно писать nbsp.

https://github.com/Integer64/site-layout/blob/gh-pages/exercise/mainTask/css/styles.css#L104

> display: inline-block;


> float: right;


float подразумевает display: block

> font-family: "Lato", sans-serif;


Это что-то часто повторяется в CSS, можно бы убрать лишние упоминания.

> We are <span>Webpaint</span>


> <span>digital <span class="amp">&amp;</span> branding</span>


Здесь надо применить em или strong. Не очень понял зачем для амперсанда отдельный класс.

> we would love <br>to turn ideas


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

> .vcard {


> .fn {


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

Я тут еще посмотрел скриншоты в разных браузерах: https://www.browserstack.com/screenshots/8997c7b89054e6ed1c369b70a1d3edf2ef1a9972

Там явно видна проблема с br в подзаголовке на слайдере и с шрифтом в логотипе. В ИЕ8 не подлючился шрифт - можешь глянуть по этому поводу статью (а также, у тебя нет eot-шрифтов):

https://habrahabr.ru/post/113136/

Хотя если это только в ИЕ8 и ниже, а в ИЕ9 все ок, то можно особо не заморачивается - текст читается и на том спасибо.

Квадратные кнопки в ИЕ8, проблемы в ИЕ7/6 можно не смотреть, это вполне нормально для этих браузеров.

В спрайте https://github.com/Integer64/site-layout/blob/gh-pages/exercise/mainTask/img/sprite-soc.png стоит оставлять промежутки между картинками, так как например при масштабировании страниц там могутт 1-2 пикселя от соседней картинки вылезти.

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

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


Это такой формат, там нет полупрозрачных пикселей с альфа-каналом (только полностью прозрачные) и потому они превращаются в непрозрачные. Надо при сохранении выбрать цвет matte под цвет фона на сайте, то есть темно-серый. Почитай про различия между PNG8 и PNG24.
http://integer64.github.io/site-layout/exercise/mainTask/index.html #797 #646351
>>640215

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

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

В адаптивной версии возможно стоит добавить небольшой паддинг (5px) на блок с заголовком, а то там текст "digital & branding agency ..." упирается в края слева и справа.

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

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

> <li class="item-menu">


Тут можно было схитрить, не ставить класс, а использовать селектор .menu > li. Но можно и так.

> <p class="slider-text">


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

> <i class="service-block-icon icon-android"></i>


Это надо заменить псевдоэлементом

> href="tel:0247 541 65 87"


Тут номер стоило записать без пробелов

> 0247 541 65 87


А вот тут стоило поставить неразрывный пробел (почитать: https://www.artlebedev.ru/kovodstvo/sections/62/ http://webstyle.sfu-kras.ru/nerazryvnyj-probel http://lurkmore.to/%D0%A2%D0%B8%D0%BF%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0 ). Не используй пробел вставляемый через Alt + 0160 так как его не отличить от обычного, лучше явно писать nbsp.

https://github.com/Integer64/site-layout/blob/gh-pages/exercise/mainTask/css/styles.css#L104

> display: inline-block;


> float: right;


float подразумевает display: block

> font-family: "Lato", sans-serif;


Это что-то часто повторяется в CSS, можно бы убрать лишние упоминания.

> We are <span>Webpaint</span>


> <span>digital <span class="amp">&amp;</span> branding</span>


Здесь надо применить em или strong. Не очень понял зачем для амперсанда отдельный класс.

> we would love <br>to turn ideas


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

> .vcard {


> .fn {


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

Я тут еще посмотрел скриншоты в разных браузерах: https://www.browserstack.com/screenshots/8997c7b89054e6ed1c369b70a1d3edf2ef1a9972

Там явно видна проблема с br в подзаголовке на слайдере и с шрифтом в логотипе. В ИЕ8 не подлючился шрифт - можешь глянуть по этому поводу статью (а также, у тебя нет eot-шрифтов):

https://habrahabr.ru/post/113136/

Хотя если это только в ИЕ8 и ниже, а в ИЕ9 все ок, то можно особо не заморачивается - текст читается и на том спасибо.

Квадратные кнопки в ИЕ8, проблемы в ИЕ7/6 можно не смотреть, это вполне нормально для этих браузеров.

В спрайте https://github.com/Integer64/site-layout/blob/gh-pages/exercise/mainTask/img/sprite-soc.png стоит оставлять промежутки между картинками, так как например при масштабировании страниц там могутт 1-2 пикселя от соседней картинки вылезти.

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

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


Это такой формат, там нет полупрозрачных пикселей с альфа-каналом (только полностью прозрачные) и потому они превращаются в непрозрачные. Надо при сохранении выбрать цвет matte под цвет фона на сайте, то есть темно-серый. Почитай про различия между PNG8 и PNG24.
ответы 1-2 февраля #798 #646352
>>640228

> Слышал что у сайтов на бутстрапе, какие то проблемы с СЕО и выдачей в поиске? Это так? Если да, то почему?


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

> Как себя правильно оценить


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

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

>>640271

> if (floor(($number % 100) / 10) == 1) {


> $word = $word5;


> $word = $word1;


> break;


Тут лучше сразу писать return $word5. Вместо вложенных ифов и свитча наверно лучше сделать блок ифов на одном уровне.

> $num = floor($number / 100);


Название переменной плохое, лучше $hundreds

> $num = $number % 100;


Тут лучше сделать новую переменную с новым именем, а не исплоьзовать старую

В функции function smallNumberToText проще всего в самом начале написать отдельный if для числа ноль.

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

> $num = floor($number / 1000);


Тут тоже надо нормальное название переменной, а еще лучше сделать 3 переменнх: millions, thousands, units.

>>640313

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

>>640340

Гимп может быть не совместим с ПСД макетами, в нем например нет эффектов слоев. С другой стороны, фотошоп используют так часто только потому что доступны пиратские версии, надо было бы платить может быть макеты бы делали в других программах, inkscape например хорош.

>>640401

Не знаю.

>>640610

Может это порода такая просто?
ответы 1-2 февраля #798 #646352
>>640228

> Слышал что у сайтов на бутстрапе, какие то проблемы с СЕО и выдачей в поиске? Это так? Если да, то почему?


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

> Как себя правильно оценить


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

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

>>640271

> if (floor(($number % 100) / 10) == 1) {


> $word = $word5;


> $word = $word1;


> break;


Тут лучше сразу писать return $word5. Вместо вложенных ифов и свитча наверно лучше сделать блок ифов на одном уровне.

> $num = floor($number / 100);


Название переменной плохое, лучше $hundreds

> $num = $number % 100;


Тут лучше сделать новую переменную с новым именем, а не исплоьзовать старую

В функции function smallNumberToText проще всего в самом начале написать отдельный if для числа ноль.

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

> $num = floor($number / 1000);


Тут тоже надо нормальное название переменной, а еще лучше сделать 3 переменнх: millions, thousands, units.

>>640313

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

>>640340

Гимп может быть не совместим с ПСД макетами, в нем например нет эффектов слоев. С другой стороны, фотошоп используют так часто только потому что доступны пиратские версии, надо было бы платить может быть макеты бы делали в других программах, inkscape например хорош.

>>640401

Не знаю.

>>640610

Может это порода такая просто?
ответы 1-2 февраля #799 #646353
>>640743

Нужно выносить

>>640747

> if($creditPayment < $monthlyPayment) $monthlyPayment = $creditPayment;


Это можно заменить на min/max. Также, иф надо писать в 3 строки.

> $paymentTotal = $paymentTotal + $monthlyPayment;


$paymentTotal += $monthlyPayment;

>>640788

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


Можно так сделать.

>>640853

$x++; равносильно $x = $x + 1;

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

>>640886

Любую из 3 частей можно пропустить.

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

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

То есть это все правильные циклы:

for (;;) { .... } // бесконечный цикл
for (; $x < 10; ) { ... }
for ($x = 1; ; $x++) { ... } // бесконечный цикл
for ($x = 1, $y = 10; $x < 100; $x++, $y++) { ... }

Мануал http://php.net/manual/ru/control-structures.for.php
ответы 1-2 февраля #799 #646353
>>640743

Нужно выносить

>>640747

> if($creditPayment < $monthlyPayment) $monthlyPayment = $creditPayment;


Это можно заменить на min/max. Также, иф надо писать в 3 строки.

> $paymentTotal = $paymentTotal + $monthlyPayment;


$paymentTotal += $monthlyPayment;

>>640788

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


Можно так сделать.

>>640853

$x++; равносильно $x = $x + 1;

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

>>640886

Любую из 3 частей можно пропустить.

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

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

То есть это все правильные циклы:

for (;;) { .... } // бесконечный цикл
for (; $x < 10; ) { ... }
for ($x = 1; ; $x++) { ... } // бесконечный цикл
for ($x = 1, $y = 10; $x < 100; $x++, $y++) { ... }

Мануал http://php.net/manual/ru/control-structures.for.php
ответы 1-2 февраля #800 #646354
>>641029

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

>>641537

Про переворачивание ифов:

Ты пишешь

if ($x > 0) {
строка 1
строка 2
...
строка 100
}

а надо

if ($x <= 0) {
return ;
}

строка 1
строка 2
....
строка 1000

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

>>641407

По отступам. Дело вкуса и привычки

>>641449

Верно только лучше $number++;
ответы 1-2 февраля #800 #646354
>>641029

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

>>641537

Про переворачивание ифов:

Ты пишешь

if ($x > 0) {
строка 1
строка 2
...
строка 100
}

а надо

if ($x <= 0) {
return ;
}

строка 1
строка 2
....
строка 1000

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

>>641407

По отступам. Дело вкуса и привычки

>>641449

Верно только лучше $number++;
#801 #646361
function() {
...;
}
Или
function()
{
...;
}

Как правильно?
#802 #646368
>>642874

При повторном клике правой кнопкой не снимается флажок.
#803 #646375
>>646361

>function()


>{


> ...;


>}


>



Все расказано в PSR
#804 #646377
>>646361

Второе

http://www.php-fig.org/psr/psr-2/ru/#4-3-Методы

Там правда про методы.
111 Кб, 750x2360
#805 #646380
>>646375
>>646377
А чому Оп учит делать как в первом примере?
#806 #646381
>>646033
Отправлять нет смысла, если такие задачи кажутся тебе сложными, на работе каждый день будешь сталкиваться с подобным.
Разобраться с решением конечно надо для будущего.

А сколько времени на такое дают? У меня ушло около двух часов, за 15 минут на собеседовании точно не успел бы.
Или это дается на дом?

У меня возникла сложность разве что с четвертым, получилось три джойна и две группировки, что-то многовато.
Потом через неделю выложу, может оп найдет способ решить более кратким путем.
#807 #646386
>>646380
Этому уроку больше лет чем тебе. Может тогда не было стандарта, или оп о нем еще не слышал.
#808 #646389
>>646380

Ошибка в учебнике наверно.
#809 #646398
>>646377
Бля. А чем им мои табы не угодили? Четыре пробела - это же тупо.
#810 #646401
>>646398
При том, что ideone автоматически табы расставляет, а не пробелы.
#811 #646404
Проверьте пожалуйста Айпад в кредит, спасибо.
http://ideone.com/K5vX2L
#812 #646406
>>646404
Сори, уже нашел. Проценты поставил ебанутые.
#813 #646409
>>646406
А почему у тебя softBank - это влажный банк, а не мягкий?
#814 #646410
>>646404
От проверки все ещё не отказываюсь, вроде работает правильно, но комментарии гуру - приветствуются.
#815 #646412
>>646409
Ну вроде можно и влажный сказать, не?
#816 #646413
>>646410
Числа не те. Сейчас поищу в чем косяк.
#817 #646416
>>646412
Влажный же - это wet.
#818 #646418
>>646398

Написано же: пробелы удобнее и выглядят везде одинаково. От табов только проблемы.
#821 #646422
>>646418
Действительно. Зачем я, как дурак, один раз на таб нажимаю. По четыре раза отсчитывать ведь гораздо удобнее.
#822 #646424
>>646413
Ну вот, а я уже обрадовался :С
#823 #646426
>>646420
Ага. Только на деле во всех английских текстах, что я читал было wet(возможно где-то moist).
sage #824 #646428
Это уже не тред, это уже чат нахуй. Оп, добавь в следующем треде какую-нибудь плашку с просьбой не срать.
Ну или попросись в модераторы и чисти тред, это же невозможно читать.
#825 #646444
>>646424
Вроде нашёл в чем косяк. Ты сразу после платежа проверяешь, чтобы остаток долга не был меньше платежа, а если это не выполняется, то еще и без коммисии его отнимаешь. Т.е. если на конец месяца долг остался 100 рублей, то ты так и записываешь в итоговые выплаты плюс 100 рублей, хотя он должен был увеличиться за счет месячных процентов. Более того, если на конец месяца остается 4900 рублей долга например, то ты тоже их списываешь и заканчиваешь считать, хотя тут очевидно, что через месяц эта сумма станет больше 5к и придется делать дополнительную итеррацию.
sage #826 #646446
>>646428

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


>ОП


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


>чисти тред


Дурачок неблагодарный.
#827 #646459
>>646422
Редакторы умеют ставить 4 пробела по нажатию таба
#828 #646465
>>646459

>4 пробела удобнее чем таб


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


Ну охуеть теперь.
#829 #646467
>>646444
И еще у тебя за счет break теряются последние пять тысяч.
#830 #646500
>>646467
Но там- же к тоталу оставшаяся сумма прибавляется.
#831 #646508
Я написал определённую форму и её обработчик, как сделать так, чтобы её можно было вставлять на любой сайт в виде специального кода, с сохранением её функционала? Как например в Апи яндекс.деньгах и других подобных сервисах.
#832 #646514
>>646500
Ну смотри. Допустим осталось 6к долга. Вот тут ты увеличиваешь эту сумму за счет процентной ставки и отнимаешь ежемесячные 5к:

>$sum = $sum * $monthPer + $monthCom - $monthPay;


В переменной $sum осталось чуть больше 1к. Тотал пока не изменился.
Теперь у тебя сразу идет проверка

>if ($sum <= $monthPay)


И т.к. $sum действительно меньше чем 5к, то ты идёшь к строке.

>$totalPay += $sum;


Во-первых, как я уже говорил выше, хоть и прошёл месяц, но ты уже не увеличиваешь $sum, а просто прибавляешь(проебал процентную ставку за последний месяц).
ВО-вторых, ты прибавил к тоталу около 1к, а дальше у тебя break. Всё, конец, больше к тоталу ничего не прибавляется. А как же 5к, которые мы отняли от $sum в самом начале? Потерялись.

И того ты потерял 5к + месячную прибавку к последней сумме(которая меньше 5к).
#833 #646516
>>646514
Спасибо, анон. Доходчиво объяснил.
#834 #646524
>>646514
Проверь пожалуйста ещё раз, ссылка та-же.
#835 #646531
>>646524
Точно та же? Ничего вроде не изменилось.
67 Кб, 555x649
#837 #646568
Фантомасы, где посмотреть готовый код задачи номер 13 https://gist.github.com/codedokode/ce30e7a036f18f416ae0 (про гамбургеры и ООП)?

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


Что это значит? Я должен писать так

Hamburger.SIZE_SMALL = {price: 50, cals: 20};

Или так

Hamburger.SIZE_SMALL = 'small';
var sizes = {small {price: 50, cals: 20}/, ... /}
#838 #646569
>>646532
Последние 5к всё еще не добавляются т.к. теперь ты отнимаешь её обратно в этой строке:

>$totalPay += $sum * $monthPer + $monthCom - $monthPay;


Убери -$monthPay;
К тому же неправильно считается второй банк т.к. теряется месяц из-за условия

>if ($sum <= $monthPay)


Дело в том, что ты тут снова подаешь сумму без увелечения за счет месячной коммисии. В случае со вторым банком вышло, что до начисления комиссии переменная $sum меньше 5к, а после начисления уже больше, что ты не учел.
#839 #646572
>>646568

Оба варианта неправильные:

в первом ты в константе хранишь данные, это неравильно

во втором константа норм, но в словаре sizes ты используешь не ее, а слово small - это неприавльно.
#840 #646574
>>646568

sizes[Hamburger.SIZE_SMALL] = { price: ..., calories: ... };
#841 #646585
>>646428

Согласен, что флуд - плохо. Мне ведь тоже все это читать приходится.

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

А вот обсуждение не по теме треда, типа как я 10 лет не могу устроиться на работу, давайте не будем устраивать.
#842 #646599
>>646532
И вообще хотелось бы отметить, что хотя твой вариант решения и можно исправить до рабочего(инфа 100%), но он довольно загруженный вышел, лично мне было сложно разобраться, что к чему. Когда доделаешь, то можешь посмотреть моё решение, например. Я там схалявил и не сравнивал цены в конце, но суть не в этом, а в том, что основные вычисления выполняются за 7 строчек когда без всяких брейков и ифов.
http://ideone.com/ksuDVA
#843 #646612
>>646572
>>646574
Не догоняю я совсем что-то. Я ведь неправильно делаю? http://codepen.io/anon/pen/yeRwjj?editors=0010
#844 #646629
>>646569
Ну все анон, теперь вроде учел все. Прости за мою непробиваемую тупость.
#845 #646632
>>646629
Да, теперь работает правильно.
#846 #646648
>>646599

>$creditBalance = ( $creditBalance * $percent ) + $servicePayment;


Плохо, что вот это у тебя повторяется в двух местах.
От такого надо избавляться.
#847 #646653
>>646648
Это повторяется в двух местах специально, чтобы упростить условие(если убрать эту строку перед циклом, то условием выхода нужно делать не $creditBalance > $monthlyPayment; а ( $creditBalance * $percent + $servicePayment) > $monthlyPayment; т.е. на практике повторяться оно будет значительно чаще). Поэтому я считаю, что тут повторение вполне оправдано, но готов выслушать предложения по поводу того как от него можно избавиться.
#848 #646773
Сап, решил доделать задачу с именем, но с условием, что само имя пишется с большой буквы.

Прошерстил мануал, нашел подходящую функцию.

Дальше на строке 36 реализовал её.

Имя всё равно пишется с маленькой. Что я делаю не так? В РНР же построчное выполнение.

http://codepad.org/7C06IpiQ
#849 #646782
>>646773
ucfirst, ucwords (и многие другие) не работает с юникодом (нелатинскими символами).
Для работы с юникодом есть mb_ функции.
http://php.net/manual/ru/ref.mbstring.php
Аналога для ucfirst нет, нужно брать первую букву подстрокой, приводить к верхнему регистру, конкатенировать с mb_substr($word, 1).

И у тебя там зачем-то $name инициализируется пробелом вместо пустой строки (26 строка).
#850 #646783
>>646782
1) Спасибо за 26 строку.
2) Сейчас попробую разобраться дальше, спасибо
#851 #646792
>>646782
Антоша, сделал я так:

$name1 = mb_strcut($name, 0, 2);
$name2 = mb_strcut($name, 2);
$name1 = mb_strtoupper($name1);
echo "$name1";
$name = $name1 . $name2;

Но в эхо все равно выдает маленькую букву. Где я опять ошибся?
#852 #646813
>>646792

>mb_strcut() вырезает подстроку из строки также, как mb_substr(), но оперирует байтами вместо символов.


http://php.net/manual/ru/function.mb-strcut.php
http://php.net/manual/ru/function.mb-substr.php
#853 #646814
задача на правильные/неправильные номера
http://ideone.com/mNQ3c3
#854 #646822
Как вывести определённый блок страницы на распечатку при помощи яваскрипта или ксс или чего-нибудь вообще? Не всей страницы, а именно отдельный её кусок, например всё то что содержится в диве с классом info.
#855 #646860
Покопался в гитхабе ОПа и нашёл некоторые страницы учебника, на которых нет ссылок из ОП поста, либо из уже данных страниц учебника. В частности на подключение БД через ООП и на протокол НТТПС. Чому так, ОПушка?
#856 #646870
>>646814
Спасибо! А я как раз искал свой вариант решения этой задачи с подстановкой заведомо правильных и неправильных номеров телефонов из пасты ОПа...
Ты хоть бы названия массивов и вывод уведомлений в echo поменял...
Хотя в самой регулярке, гляжу, изменил определение кода из трёх цифр и семи цифр основного номера на десять цифр. Так советовал ОП.
#857 #646876
>>646860
Ссылочек в студию!
Как раз аноны жаловались, что переход к студентам резкий.
ОП, наверное, забыл ссылки дать на это всё.
#858 #646879
>>646876
Вот на подключение БД через код (но всё равно не оче понятно, сижу разжёвываю всё через сторонние сайты) https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

Вот про протокол
https://github.com/codedokode/pasta/blob/master/network/http.md

Ссылки
https://github.com/codedokode/pasta/blob/master/network/urls.md
#859 #646880
>>646879
Спасибо, сохранил.
#860 #646929
>>646860
>>646880

Там в гитхабе на главной есть оглавление: https://github.com/codedokode/pasta/ (прокрути вниз).
334 Кб, 630x394
#861 #646931
Задача "Банкомат": http://ideone.com/3w70JB
Ввёл поддержку купюр по 10 рублей, это всё несложным оказалось.
Смотрю на следующую задачу ("Лиличка"), и мне становится немного не по себе...

>>646929
Спасибо, я просто на будущее сохранил, пока ещё не дошёл до этого по учебнику ОПа. Буду знать и об этом.
#862 #646944
>>646931
Опять забыл:

>Слишком просто? Ок, давай усложним задачу. Добавим в банкомат банкноты номиналом 200 и 2000 р. После чего выставляем такое число банкнот: 1 по 5000, 4 по 2000, 1 по 500, 3 по 200 и пытаемся выдать 6600 р.


Сие мне не подвластно...
#863 #647028
И снова к задаче про стихи http://ideone.com/xpt7uw

Когда решал, руководствовался таким порядком действий:

1. присваиваем номера элементам массива;
2. случайным образом через mt_rand получаем число. Это число - номер элемента массива;
3. выводим элемент массива в соответствии с полученным числом.
4 ????
5. НИХУЯ!

В каком направлении думать?
#864 #647033
>>647028

Это чо?

PHP Warning: mt_rand(): max(9) is smaller than min(44) in /home/hYHYcI/prog.php on line 24
PHP Warning: mt_rand(): max(6) is smaller than min(55) in /home/hYHYcI/prog.php on line 25
PHP Notice: Undefined offset: 0 in /home/hYHYcI/prog.php on line 27
PHP Notice: Undefined offset: 0 in /home/hYHYcI/prog.php on line 27
#865 #647047
>>647028
>>647033

Если пронумеровать вручную, та же хуйня http://ideone.com/f4R31S
#866 #647058
>>647028
Зачем тебе эти ключи 22, 33 и т.д.?
#867 #647060
>>647058

В задаче есть массивы
word1
word3
word2
...

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

если первому элементу массива присвоить 22, то остальные элементы пронумеруются сами от 22. Таким образом можно не присваивать вручную каждому элементу массива свои номера. Звучит по-лоховски, но это первое, о чём я подумал при решении. Присвоение - случайная генерация - вывод.
#868 #647064
>>647060
Тогда добавляй к count() первый индекс иначе у тебя там 22 < x < 7 получается.

И эти индексы можно убрать, у тебя все равно все в разных массивах.
#869 #647066
>>647060
Что ты творишь? У тебя по дефолту все элементы пронумерованы от 0 до count-1. Зачем лишние ключи?
353 Кб, 1270x1562
#870 #647067
Подскажите как сделать правильно без копипаста выделение неправильного поля цветом. Ситуация пикрелейтед. Не писать же 10 ифов.
#871 #647086
>>647067
А, например, вот такое не сработает?
$validator = array(
'name' => '$s1',
'surename' => '$s2',
...
)
foreach ($validator as $key => $value) {
if ($key == 'name' || $key == 'surename' || ...) {
$value = "background: #EF8E8E";
}
}
#872 #647090
>>647086
*surname
А то у меня там "конечно, имя".
#873 #647095
>>647047
Братишка, функция count() считает количество элементов в массиве вне зависимости от установленных номеров.
Поэтому-то у тебя и выходит, что в mt_rand(8, 6) - count, допустим, считает всего 6 элементов в массиве.
Чё-то ты перемудрил.
Ставь то же самое, только с нуля начинай, а от количества элементов, соответственно, отнимай 1.
#874 #647098
>>647064
Извини, не успел прочитать сообщение, ты уже всё пояснил.
#875 #647102
>>647095
Блять, точно.

Сделал вот так http://ideone.com/BBAnCP , но чувствую, что задачу надо решать как-то по-другому. Если да, то как?
#876 #647103
>>647102
Балять, хуйня какая-то опять. Не считает 2 столб
#877 #647106
>>647102
Тебе уже несколько раз сказали, вместо просто count() юзай count()-1. Если в массиве 6 эллементов, а нумерация идет с нуля, то какой номер будет у последнего эллемента? Правильно, 5. А ты генерируешь число от 0 до 6.
#878 #647108
>>647102
Так ведь count считает не с нуля, а просто количество элементов в массиве, то есть начиная с 1.
Будь внимателен, я уже второй, кто тебе сказал об этом.
#879 #647112
>>647086
Или вот как ещё можно сократить, должно вроде работать:
foreach ($validator as $key => $value) {
if ('name' && 'surname' && ... == $key) {
$value = "background: #EF8E8E";
}
}
#880 #647115
>>647067

Во-первых, не делай переменные s1, s2, s3, s4 - в таких ситуациях надо делать массив с элементами $s[1], $s[2]

Далее, думай о тех кто читает твой код. Что значит s? Что значит s2? С таким же успехом ты можешь писать код китайскими иероглифами.

Имя s не годится - надо, например $cssClass, индексы 1..9 тоже не годятся - надо понятные индексы вроде $cssClass['name']

Попробовать избавиться от копипасты можно через функции, например <?= getErrorClass($errorList, 'name') ?>

Ну и если это задача про студентов, советую почитать замечания к ней и показать код на проверку.
#881 #647116
>>647115

>Далее, думай о тех кто читает твой код. Что значит s? Что значит s2? С таким же успехом ты можешь писать код китайскими иероглифами.


Разве s - это не распространенное название для строковых переменных? Типо String сокращенно.
мимо
#882 #647121
>>647028

> 44 => 'обретаю'


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

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

> mt_rand(33, count($word3));


Тут ошибка в том что count вернет число элементов в массиве, а не максимальный индекс. Максимальнй индекс это max(array_keys())

Но в твоем случае эти числа вроде 44 надо просто убрать.
#883 #647122
>>647116

А что значит String? Как это мне помогает понять программу? Что s что string ничего не значат. Надо писать, что хранится или для чего предназначена переменная, а не тип данных в ней.
#884 #647124
>>647116

Если в переменной хранится цвет фона, то надо назвать ее backgroundColor/bgColor/
#885 #647125
>>647067

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

Также, подумай, не лучше ли выводить сообщение об ошибке рядом с инпутом?
#886 #647126
>>647108
>>647106

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

Дошло вот что:
- по умолчанию нумерация (индексы) идёт от 0;
- count($array) выдаёт количество элементов, а не наименование индекса (в отличие от var_dump($array));
- чтобы обратиться к случайному элементу в массиве, нужно сгенерировать случайное число в пределах количества элементов массива. Это случайное число будет являться индексом, а не порядковым номером.
- так как индекс начинается с 0, а количество с 1 (т.е. "на 1 больше"), то наименование индекса массива будет равняться порядковый номер - 1.
#887 #647128
>>647126
http://ideone.com/BBAnCP

Вопрос по правильности решения задачи остаётся открытым. Возможно, надо было решить каким-то другим способом?
#888 #647129
Есть ли какие-нибудь кастрированные образы винды? А то на моем нетбуке даже убунта еле дышит, с полной виндой в виртуалке не потянет.
Еще где искать боксы под вагрант и безопасно ли это? На atlas.hashicorp что-то нет разнообразия.
Может лучше качнуть голую систему, а потом самому на нее накатить lemp/lamp, redis и т.д.?
#889 #647131
>>647122
var_dump($array) тоже не наименование индекса возвращает, а вообще всю инфу о массиве.
#890 #647135
>>646944

Здесь надо делать перебор всех комбинаций купюр. Это можно делать в лоб (например рекурсией), или более эффективно с помощью готового алгоритма.

Теория:

https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.BA.D0.BE.D0.BC.D0.B1.D0.B8.D0.BD.D0.B0.D1.82.D0.BE.D1.80.D0.BD.D1.8B.D1.85_.D0.BA.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D0.B9_.D0.B8_.D0.B7.D0.B0.D0.B4.D0.B0.D1.87

Нам из этого нужны размещения (выбираем число банкнот каждого номинала).

https://www.google.ru/search?q=%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F+%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B9&ie=UTF-8&gws_rd=cr&ei=Ppe4Vu_JNemv6ATL5oHwCA

Это разновидность задачи о рюкзаке, и есть более эффективные решения:

http://informatics.mccme.ru/mod/book/view.php?id=815
http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D1%80%D1%8E%D0%BA%D0%B7%D0%B0%D0%BA%D0%B5#.D0.97.D0.B0.D0.B4.D0.B0.D1.87.D0.B0_.D0.BE_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5

https://www.google.ru/search?q=%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0+%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%BC%D0%B0%D1%82&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&gws_rd=cr
#891 #647138
>>647128

>Вопрос по правильности решения задачи остаётся открытым.


Ну, работает же, значит правильно. Теоретически можно сократить количество переменных с помощью переприсваивания, сделать вывод первых двух строк в цикле т.к. действия одинаковые выполняются и использовать array_rand() вместо mt_rand().
#892 #647139
>>646822

1) с помощью CSS стилей только для печати @media print скрыть все остальное
2) открыть данные в новом окне и вызвать print(), возможно такое же сработает в ифрейме

Ну и гугл в помощь https://www.google.ru/search?q=js+print+part+of+page&ie=UTF-8&gws_rd=cr&ei=bpi4Vr7sLOz76ATztK-ICw
#893 #647144
>>647128
Вау, я и не знал, что переход на другую строку в echo можно энтером делать, а не только с помощью \n.
#894 #647145
>>647138
Я просто подумал, что тема связана со строками, а не с массивами, и решать как-то иначе надо. Нет?
#895 #647147
>>647126

Еще есть функция array_rand выбирающая случайный ключ/ключи, детали в мануале.
#896 #647148
>>647144
Я сам не знал, хули оно переноситься энтером начало
#897 #647149
>>647147
От души, брат!
#898 #647150
>>647128

Решение верное, улучшить можно используя array_rand.
40 Кб, 512x512
#899 #647153
Аноны, нужна ваша помощь. Необходимо сделать авторизацию пользователя в телеграмме через API. Подскажите как? Есть ли готовые библиотеки? На их сайте нихуя не ясна, куда вообще запросы отправлять?
#900 #647154
Те, кто постит код на гитхаб, почитайте как правильно писать сообщения для коммитов: https://m.habrahabr.ru/company/Voximplant/blog/276695/
#901 #647155
>>647144
Клавиша enter как раз вставляет символ перевода строки. Только на разных системах этот символ отличается, в виндовс "\r\n", линукс "\n", в макос кажется вообще "\r". Поэтому в коде нужно писать явно.

В php кстати есть константа PHP_EOL
#902 #647156
>>647145
Ну так у тебя массивы строк там, а не одна длинная строка.
#903 #647158
ебать у вас тут скорость постинга
#904 #647191
>>647128
Можно ещё в цикле for проходиться по массивам, два раза вывести строку со словами 1 2 3, а потом, когда $i станет равной 2, вывести строку Я 4 5.
#905 #647198
Что означает "вернуть строку"? Это в разделе "строки и символы". Что означает "вернуть первые 3 символа строки"?
#906 #647205
>>647198
Там же показано на картинке. У тебя есть строка, ты получаешь из неё первые три символа для своих целей(сравнить с другими тремя символами/записать в переменную/вывести через echo/и т.д.)
#907 #647212
>>647205
Спасибо, милый человек :*
309 Кб, 1076x1404
#908 #647215
>>647067
Да, это задача про студентов. Я только ее начал, показывать рано. Посмотрите, вот так лучше теперь?
#909 #647223
>>647198

Функция (как встроенная в php, так и написанная тобой) может "вернуть" какое-то значение после ее вызова (вернуть результат).

Например, функция mb_strlen(....) возвращает число символов в строке.

Вот так мы выводим значение, которое вернет функция:

echo mb_strlen("hello"); // выведет 5

Вот так мы сохраняем возвращенное значение в переменную:

$x = mb_strlen("hello");

А вот тут мы вызываем функцию и никуда не сохраняем возвращенное ей значение:

mb_strlen("hello");

Разумеется, в реальном коде такого не должно быть, какой смысл вызывать функцию подсчета числа символов и никуда не сохранить результат?
#910 #647228
>>647215

- не выводи html через echo, это неудобно и плохо читается
- в html шаблонах используй версии оператора if, for, foreach с двоеточием вместо скобок
- неправильно использовать id для обозначения ошибки так как id не могут повторяться. И вообще неудобны в верстке. Для обозначения ошиьки лучше использовать класс, например error
- для числа баллов лучше использовать другой тип input, для ввода чисел
- для ввода email есть специальный тип инпута. Тип инпута влияет например на вид клавиатуры на мобильных устройтвах, на значения которые будет предлагать браузер для автодополнения
- прочитай урок про xss
- добавь HTML5 валидацию, например, чтобы нельзя было ввести запрещенные символы в поле имени
- почему ты выводишь текст перед head и body?
- вставка данных БД должна быть точно не в шаблоне
- название DOB = date of birth не очень удачное
- название переменной registerForm неудачное. Что, в этой переменной хранится форма регистрации?
- подписи к инпутам надо верстать тегом label (удобно в него же засунуть и сам инпут)
#911 #647231
#912 #647236
>>647215

Символ на скриншоте называется минус, ну или дефис, но не тире. Тире длиннее раза в 2-3.
#913 #647259
Господа, где можно почитать про взаимоотношение пхп-скриптов и ХТМЛ документов? Т.е. как вставлять и вообще. У опа в учебнике этого не нашёл
#914 #647265
#915 #647271
Проверьте пожалуйста:
http://ideone.com/psxyMg
Это вступление в регулярные выражения, просто хочу понять правильно ли я уловил суть.
157 Кб, 642x558
#916 #647273
>>647129
Поставил microXP, но там вырезан эксплорер, обратно устанавливаться не хочет. Чо делать?
#917 #647285
>>647273

Для IE8 наверно нужны еще апдейты. Придется ставить оригинальную версию ОС.
#918 #647293
>>647129

Винду же можно настраивать, отключать лишние службы, индексирование дисков и тд. XP при большом желании может с 200-300 Мб памяти работать.

> А то на моем нетбуке даже убунта еле дышит


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

> боксы под вагрант и безопасно ли это?


Смотря в чем будут эти ОС запускаться. Под виндой вагрант запускает образы в виртуалбоксе и это безопасно. Если под линуксом он использует контейнеры то не факт. Контейнеры это не средство безопасности, а средство изоляции и управления ресурсами.
#919 #647296
>>647271
http://ideone.com/FPZKmM
От 10 до 20 - к чему это?
#920 #647309
>>647296
Ну от 10 - потому что минимум, а 20 - потому что () - место занимают, не?
#921 #647312
>>647309
На вот такую строчку

>8()-- -- (-


Пишет, что всё верно. Так и задумывалось?
#922 #647320
>>647312
Пофиксил.
#923 #647347
>>647320
По старой ссылке всё так же осталось.
#924 #647354
>>647347
Ты по http://ideone.com/psxyMg проверял?
#925 #647378
>>647354
Тебе нужно только >>647354
Должно быть только 10, у тебя костыль.
#926 #647391
>>647378
Всмысле, ты зацитировал мое сообщение, в нем ссылка, которую я кидал и редактировал. В ней вроде все ок. Разбил на 8 - обязательную, код оператора 3 символа и 7 символов самого номера, что не так?
25 Кб, 1141x324
#927 #647396
Откуда этот ноль вылазит (Yii), массив же одномерный.

\t$themes=Yii::$app->db->createCommand('SELECT * FROM themes')
->queryAll();

\t$listData=ArrayHelper::map($themes, 'theme_id', 'theme_title'); ?>
<?=var_dump($listData)?>
<?=$form->field($model, 'theme_id')->dropDownList([$listData],
[
'prompt' => 'Выберите категорию...'
])?>
#928 #647402
Много ли я потеряю не сделав задания с регулярными выражениями? Просто я там всё, встал. Совершенно не понимаю что нужно писать.
#929 #647414
>>647135
Спасибо огромное, ОП...
Почитаю, сохраню, но пока всё-таки даже начать делать это дополнение не смогу - я застряну на этом надолго и вряд ли вообще осилю.
Я тут "Лиличку" верчу туда-сюда сейчас - только ещё составляю сам алгоритм, даже не приступал ещё к написанию скрипта. Куда мне, филологу, до рекурсии, комбинаторики и подобного...
#930 #647435
>>647402
Я думаю что да. Ты проебешь навык превозмогания. Сам сейчас на них и прекрасно тебя понимаю, с горем пополам сделал первую задачку, сейчас думаю над второй.
#931 #647455
Помогите пожалуйста.
http://archive-ipq-co.narod.ru/l1/conditions.html
Вот это задание.
http://ideone.com/z3aZWZ#stdin
Вот я делал. Я нажимаю Submit - пишет успешно, но мне вместо бросков кидает мною же написанное. Где у меня ошибка?
#932 #647456
>>647455
<?php а не <php?
#933 #647460
Итак, алгоритм задачи "Лиличка".
1. Разбиваем весь текст на куски по символам перевода строки и помещаем в массив.
2. Разбиваем каждый получившийся кусок текста на символы и помещаем в массив.
3. Вычисляем самый большой массив с символами, то есть находим самое длинное предложение или фрагмент текста в стихотворении.
4. Текст у нас будет выводиться с низу, поэтому заполняем все имеющиеся в массиве фрагменты текста символами пробела, ориентируясь на самый длинный фрагмент.
5. Выводим символ за символом из массива с фрагментами текста, начиная с конца (либо переворачиваем массив задом наперёд и выводим символы с начала каждого фрагмента).
Вроде всё вполне понятно в плане того, чего надо добиться.

>>647402
Код покажи, такого ещё не было, чтобы сообща не помогли.
Также совет: начинать с минимума в регулярном выражении. Например, ту же задачу на проверку ввода телефонного номера надо начинать с правильного распознавания 8 и +7 во всевозможных комбинациях. Далее пробовать прибавить к этому распознавание и нескольких цифр, далее пробовать распознавание разных знаков. И так до конца.
А потом провернуть все ещё и через массивы из пасты ОПа, где-то тут она должна быть, я её таскаю за собой из треда в тред.

>>647455
Ахаха, ну ты дал!
У тебя неверно обозначено, что это код на РНР: <php? стоит, а должно быть <?php.
#934 #647462
>>647456
>>647460
Во дурак я невнимательный. Ладно, теперь компилируется. С ошибкой. Буду кумекать.
#935 #647463
>>647460
Да что такое-то.
*снизу
#936 #647464
>>647402
Мое мнение:
Обучение должно быть интересным. Пробуй другие разделы. Начни задачи на ООП, начни пилить Студентов, разберись как вообще работает Интернет (если еще не сделал).
Веб это целая куча технологий, нет смысла долбить головой в муторные задачи месяцами.
Выдели два раза по часу в неделю на регулярки и еще пару на алгоритмы, остальное время пили что нравится.
ООП например, куда более важная тема чем регулярки.
#937 #647468
>>647462
строка 17 ошибка.
#938 #647474
>>647468
Дебил! Сука! бЛять! Как так можно! Идиот!

Я БЛЯТЬ ВПЕРВЫЕ УВИДЕЛ ЧТО ОН ПОКАЗЫВАЕТ В КАКОЙ СТРОКЕ ОШИБКА
Как меня раздражает моя невнимательность. Всю жизнь портит!
#939 #647475
>>647474
Простите пожалуйста за ругань, у меня уже мочи нет злиться на себя.
#940 #647479
>>647475
Погоди злиться, вот до задачи с кредитом на Айфон дойдёшь, тогда волю себе дашь.
if надо с маленькой буквы писать.
Также вместо ecgo должно быть echo.
Но это ты и сам увидел уже наверняка.
#941 #647481
>>647479
Да, исправил все. Все работает. Ну ладно, раз решил - спать. По часу каждый день перед сном, нормально же для учебы. Всем спасибо и пока.
#942 #647483
>>647481

>решил



Раз задача решена, всмысле.
#943 #647496
>>647464

>нет смысла долбить головой в муторные задачи месяцами


Кому как.
Сужу по себе, мне это помогает лучше уяснить многие моменты из пройденных уроков, лишний раз проработать сложные моменты.
А в итоге само решение - пусть оно и не идеальным выходит - дополнительной мотивации придаёт.
#944 #647499
>>647496
Вот именно, кому как. Мне кажется, если у человека начинают появляться такие вопросы, значит он уже от конкретной темы устал. Нет ничего страшного в изучении другого материала, всегда можно вернуться потом.
151 Кб, 300x440
#945 #647524
Аноны, пойдет ли вот эта книга для начала изучения php?
#946 #647533
>>647524
Ссыль на торент.
Эксперт по книгам для новичков по PHP
#948 #647564
>>647524
Просмотрел твою книгу. Кратко:
Автор хитрый мудак.
Он просто переписал слегка под современность. Заменил mysql функции на PDO. Местами не убрал старое говнецо.

Но самое плохое это лютый, бешеный процедурал.

В общем книга учит старому унылому коду. Если ты ее прочитаешь и сделаешь по ней например Студентов. То ОП тебя отправит переписывать с нуля. В общем только вредных привычек нахватаешься.
#949 #647575
>>647396

Сделай var_dump([$listData]);

Заодно узнаешь как в Юи можно делать группы в селекте.

>>647402

Много. Язык регулярных выражений (как и PHP) надо читать как русский, без словаря.

Если не получается, лучше спроси что непонятно, покажи код, помучай сайт regex101 (только помни что там бекслеш пишут один раз, а не 2).

>>647464

За ООП, а тем более студентов, браться рановато наверно без регулярок.

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

Ну например, как тебе такая задачка: дана строка, сделай программу которая скажет есть ли в ней хоть одна цифра или нет? Есть ли в ней хоть одна русская гласная или нет? Состоит ли она целиком только из латинских букв? Используя регулярки + if (preg_match...), конечно.
#950 #647596
>>647575
Ты что слепой обсосок? На скрине и есть вар дамп. Вообще ошибка уже нашлась, просто смешно, насколько ты глуповатый и невнимательный.
#951 #647606
Оп, ну объясни, как выбрать ДВЕ строки SQL, которые повторяются в запросе минимальное количество раз? Все примеры из сети не работают. Или какой запрос сделать, чтобы из двух связных таблиц выбрать ДВУХ менеджеров (их адишники (по ним считается кол-во товаров на менеджере) записаны в таблице с товарами напротив каждого товара), у которых меньше всего товаров?
#952 #647618
>>647606
Группировка + сортировка + лимит.
#953 #647656
>>647596
Запомните этого гада по тем категориям.
#954 #647664
>>647656
Это тот злобный неудачник, который провалил собеседование, ясн: >>647606
#955 #647666
Господа, а есть какие то сертификации или аттестации для прогеров в этой стране, кроме вышки?
Годных вуззов почти нет, вузов с вебом еще меньше, на западе кОтируют еще меньше. Да и возможности учится на очном нет.
Можно где то получить бумажу что я крутой прогер?
Что то по типу TOFL и IELTS ?
#956 #647673
https://jsfiddle.net/fa0t0j4h/1/
Сделал первую задачу по HTML/CSS. По пикселям вроде сходится, но код меня не радует.
Ещё непонятно с границей: она должна входить в 66% ширины блока или нет?
#957 #647699
Анон, проверь пожалуйста:
http://ideone.com/7JwyiU
Чому ругается на мой preg_match?
И проверьте ещё раз это- >>647271
#958 #647719
`
#959 #647720
Анон, эксперт по книгам, поясни за http://lpmj.net/4thedition/
#960 #647721
>>647699
Не экранируешь дефис, вообще лучше экранируй всё что можно в регулярках.

http://pythex.org/?regex=[!%2C.%3F\-%3A%3B][^33].{5}&test_string=&ignorecase=0&multiline=0&dotall=0&verbose=0
#961 #647722
>>647699
Я правильно понимаю, что твой скрипт считает, что правильно писать "сдоров" и "сдраствуй"?
#962 #647725
>>647721
Сделал, не помогло :С
>>647722
Ты про -

>'/[з][д]([^(есь|ани|оров|раствуй)].{1,5})/'


Нет, я выполняю поиск ошибок в регулярках. В данном случае, должно найти все слова, которые начинаются с "з" и "д" кроме "^" здесь/здани(е,я)/здоров(ье,ые,ый) и т.д. В случае если их находит мой не работающий preg_match - выведет сообщение о ошибке.
#963 #647727
>>647725
Как-то странно. Есть же куча слов, начинающихся с "зд", которые ты не включил. Да и здравствуй же, в любом случае.
#964 #647731
>>647727
Пофиксил здравствуй. Но иф все ещё не выводит нихуя.

P.S - И я там нафантазировал в конце ещё одну функцию, но сомневаюсь что такой метод сработает.
#965 #647750
>>646612
Бамп вопросу.
#966 #647757
>>646351
http://integer64.github.io/site-layout/exercise/mainTask/index.html
Вроде все замечания исправил.
#967 #647764
>>647750

А что ты не пониамешь?

> var sizes = {


> small: {


Не используется константа для обозначения размера

Ну и делаешь ты неправильно. Почему ты в поле size хранишь не размер, а какую-то ерунду? Ты ООП изучал? Знаешь, что принято хранить в свойствах объекта? Держи пасту для начала:

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

---------

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

— какие есть сущности, для которых мы сделаем классы? (Гамбургер?)
— какие у них есть свойства (размер, например).Цена свойством не является, так как она не задается, а вычисляется из других свойств.
— что мы хотим от них получить (какие у них должны быть методы). Например мы хотим узнать сколько стоит гамбургер.
— как сущности связаны? Сущность только одна и ни с чем не связана.

Наследование позволяет создавать класс не с нуля. а расширяя существующий класс. Но в этой задаче оно вряд ли нужно.

«Абстрактный» — это класс, объект которого нельзя создать. Он предназначен для наследования от него других классов. В JS этого нет.

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

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

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

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

Также, прочитай все комменарии в задаче тут https://gist.github.com/codedokode/ce30e7a036f18f416ae0

Также, немного можно прочитать про ООП в учебнике PHP из ОП-поста в последней главе. ТОлько там про PHP, но суть ООП примерно та же.

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

Если что-то непонятно, задавай конкретные вопросы.
#967 #647764
>>647750

А что ты не пониамешь?

> var sizes = {


> small: {


Не используется константа для обозначения размера

Ну и делаешь ты неправильно. Почему ты в поле size хранишь не размер, а какую-то ерунду? Ты ООП изучал? Знаешь, что принято хранить в свойствах объекта? Держи пасту для начала:

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

---------

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

— какие есть сущности, для которых мы сделаем классы? (Гамбургер?)
— какие у них есть свойства (размер, например).Цена свойством не является, так как она не задается, а вычисляется из других свойств.
— что мы хотим от них получить (какие у них должны быть методы). Например мы хотим узнать сколько стоит гамбургер.
— как сущности связаны? Сущность только одна и ни с чем не связана.

Наследование позволяет создавать класс не с нуля. а расширяя существующий класс. Но в этой задаче оно вряд ли нужно.

«Абстрактный» — это класс, объект которого нельзя создать. Он предназначен для наследования от него других классов. В JS этого нет.

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

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

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

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

Также, прочитай все комменарии в задаче тут https://gist.github.com/codedokode/ce30e7a036f18f416ae0

Также, немного можно прочитать про ООП в учебнике PHP из ОП-поста в последней главе. ТОлько там про PHP, но суть ООП примерно та же.

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

Если что-то непонятно, задавай конкретные вопросы.
#968 #647772
>>647564
Тогда посоветуй нормальную книгу для обучения. Или хотя бы не говеную. Куда ни глянешь, везде все книги обосраны
81 Кб, 851x1185
#969 #647779
>>647725

>Сделал, не помогло :С



На

http://ideone.com/e5FOo3
#970 #647787
>>647779
Я понял что ты хочешь мне сказать, но я все ещё не понимаю чому не preg_match не работает. $text который я передал - с ошибками, оно не находит их.
#971 #647788
>>647725

> [^(есь|ани|оров|равствуй)]


Это так не работает

[abcdx-z] значит ровно 1 любой из указанных символов (a, b, c, d, x, y, z)

[^ab] значит любой один символ кроме a или b

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

- один любой символ кроме е, с, ь, а, н, и, р, о, в, т, у, й, скобок, вертикальной черты

В регулярках вообще нет выражения "не ....". Что-то похожее можно сделать с помощью утверждений: http://php.net/manual/ru/regexp.reference.assertions.php

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

> [\!\,\.\?\-\:\;][^ ].{5}

#972 #647790
>>647788
Тогда я не понимаю как эту задачу решить. Пиздец это, а не регулярные выражения.
#973 #647791
>>647725

> [\!\,\.\?\-\:\;][^ ].{5}


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

> [жш][ы][а-я]


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

> {1,}


Это равносильно квантификатору "+"

> [з][д]


Скобки не нужны

> [а (но)]


Явно не то что ты задумывал

Не надо копипастить код для 4 орегулярок, сделай массив регулярок и пояснений к ним и обходи в цикле.
#974 #647795
>>647791

>идет еще минимум 5 символов


Так они по любому будут идти, если это не конец текста, где пробела и не должно быть.
Все остальное - ясно. Сейчас попробую через массив.
#975 #647796
>>647720
бамп вопросу
#976 #647798
>>647790

Давай начнем с более простой:

Дана строка, сделай программу которая скажет есть ли в ней хоть одна цифра или нет? Есть ли в ней хоть одна русская гласная или нет? Состоит ли она целиком только из латинских букв? Используя регулярки + if (preg_match...), конечно.

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

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

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

Или выражение для поиска слова "сдесь"? ну тут все просто, именно это сочетание букв надо искать, только желательно проверить что это отдельное слово, а не часть большего слова. Для этого тебе поможет констрсукция \\b

Перечитай урое по регуляркам. Почитай официальный мануал, если надо: http://php.net/manual/ru/pcre.pattern.php

И решил ли ты задачу про телефоны? Она чуть проще.
#977 #647799
>>647795

В конце текста тоже может быть ошибка. Откуда у тебя уверенность что там будет еще 5 символов?

Алсо, точка значит "любой символ кроме \n", а не "любой символ" если не стоит флаг s.
#979 #647801
>>647720

Я смотрел один из русских переводов книги, код там ужасного качества, в конце соцсеть = 100% быдлокод. Плюс, как я понимаю, HTML5/CSS3 там нет.
#980 #647802
>>647666

Работа в топовой компании.
#981 #647805
>>647798

>И решил ли ты задачу про телефоны?


http://ideone.com/psxyMg - вот, вчера сделал.
Сейчас буду курить урок целиком и переписывать.
#982 #647806
>>647772
А их нет для новичков (сколько сюда не вбрасывали, везде треш разной степени). Учебник ОПа и интернет наше все.
#983 #647807
>>647801
Может, ты смотрел старое издание? Я на англ скачал и читаю, ХТМЛ5 точно есть. А какие претензии к самому коду? Мне бы книгу, чтоб вникнуть во всё (как всё работает, оче трудно по ОПу чисто идти, т.к. нет связующих звеньев у него между кластерами ПХП-ДЖС-ХТМЛ и тп)
#984 #647808
>>647673

Решение верное. Главное чтобы ты понимал как ведут себя элементы с display block, как считается их ширина, как можно выравнивать их маргинами.

Насчет бордера/паддинга - это косяк ОПа что он в задаче это не учел.
#985 #647811
>>647807

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

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

Также, почитай туториал тут http://php.net/manual/ru/tutorial.php

Также, комментарии к задаче про студентов.
#986 #647820
>>647811
Cпасибо, буду тогда иногда присматриваться к книге, но пойду по стопам ОПа.
ООП там есть в конце главы про ПХП.
#987 #647828
>>647802
Везде разные задачи и часто шаблонные задачи
Многие здания остаются на полке
#988 #647836
Где можно почитать, что такое гитхаб и как этим пользоваться? Зарегался, но не понимаю, что к чему
#990 #647851
>>647846
ёбаный врот, по этому гиту ещё огроменный талмуд? Хули тут так много? Без этого не обойтись? Блядь, куда я ввязался вообще
#991 #647857
>>647808
Спасибо.
#992 #647861
>>647851
А ты думал будет легко?
#993 #647868
>>647861
а вкратце если своими словами? что это за сайт, как им пользоваться? Я так понимаю, туда свои проекты заливают, верно?
#994 #647870
Анон, как записать в переменную число с 9 нулями и не сломать глаза?

java way:
int number = 1000_000_000;

Есть что нибудь такое в PHP?
#995 #647876
>>647870
pow(10,9)
1e9
#996 #647879
>>647725
Зачем искать те слова, которые могут встречаться, не лучше ли искать только ошибочное слово? "Сдесь" - ошибка, а всё остальное идёт лесом.
#997 #647885
>>647868
Гит (Git) - система контроля версий. Гитхаб (GitHub) - сайт, который основан на этой системе контроля версий. Зачем нужны системы контроля версий ты можешь почитать на википедии.
Алсо, у гитхаба есть очень хороший интерактивный учебник, которые учит базовым знаниям по гиту.
https://try.github.io/
#998 #647889
>>647805
Работает неправильно твоя регулярка: http://ideone.com/3bbr8i

>[)]?


Не имеет смысла один символ ставить в квадратные скобки.
Пробелов и минусов там должно быть сколько угодно, твоя регулярка не универсальна.
#999 #647892
Хочу изучить MySQL. Установил PHPmyAdmin, думаю начать разбираться через него. Это плохая практика для обучения?
#1000 #647895
1000-ый пост.
#1001 #647896
>>647892
Плохая. Лучше почитай это https://gist.github.com/codedokode/10539213
#1002 #647922
>>647885
Спасибо. Да вроде прошёл этот учебник (он оче короткий и из него не понятно вообще нихуя. может, я просто даун)

guides.github.com Пробую через это - описывает, как простой хелооуворлд написать свой на гите, немного ясней становится
#1003 #647939
>>646612
это в жаваскрипте классы через функции объявляются? во чудеса.
#1004 #647942
>>647618
Как лимит можно применить к MIN()?
#1005 #647950
Мне нужно выбрать двух манагеров, у которых мин. кол-во заявок, заявки считаются по кол-ву одинаковых айди манагеров висящих на заявке.
#1006 #647953
>>647950
Ты все свое тестовое сделать не можешь?
#1007 #647954
>>647950
Тут школьники решают детские задачки, а тебе во взрослый тред к взрослым людям. Но учти, тебя там могут и нахуй послать по взрослому.
sage #1008 #647955
>>647950
Скрыл пост от неадеквата.
#1009 #647958
>>647954
Какой ты у мамы взрослый!
#1010 #647963
Еще вопрос, если где-то в таблице определены референции внешних ключей вот так:

ALTER TABLE `manager`
ADD CONSTRAINT `manager_ibfk_1` FOREIGN KEY (`chief_id`) REFERENCES `chief` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;

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

SELECT COUNT(*) > `chief.claims` FROM `claim`
INNER JOIN `manager` ON `manager.id` = `claim.manager_id`
INNER JOIN `chief` ON `chief.id` = `manager.chief_id`
GROUP BY `manager_id`

Мне кажется, джойнить не очень правильно, когда есть внешние ключи.
#1011 #648001
Проблемы с вордпресс, мне нужно создать дополнительную страницу, на которой будет выполняться определённый ПХП сркрипт, и это всё будет выводиться на эту самую страницу. Как это сделать, чтобы у страницы был нормальный адрес? Создать шаблон страницы, потом создать страницу через админку, и в ней разместить мой скрипт?
#1012 #648017
>>647764
Спасибо, теперь работает, как указано в задаче.
Но получилось как-то грязно и мне кажется не правильно.
http://codepen.io/anon/pen/obQdVZ?editors=0011
Хотелось бы получить конструктивную струю мочи в лицо.
#1013 #648018
>>647942
Да при чем тут min?
Делаешь order by по нужной колонке, потом выбираешь только первые 2 записи.

Например есть таблица
id | name | value
1 | foo | 3
2 | bar | 1
3 | hello | 4
4 | world | 2
SELECT x FROM tbl_name ORDER BY value LIMIT 2; выберет две строки с минимальным значением value.

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

>>647963
Джойн это объединение таблиц. Это значит, что нужно из двух и более таблиц получить одну. Почитай, как они работают. Для внутреннего объединения, если не указано условие, происходит декартово произведение всех строк из объединяемых таблиц.
Например есть две таблицы.
Таблица foo
1 | aaa
2 | bbb
3 | ccc
Таблица bar
1 | 10
2 | 20

Результатом объединения будет таблица
1 | aaa | 1 | 10
1 | aaa | 2 | 20
2 | bbb | 1 | 10
2 | bbb | 2 | 20
3 | ccc | 1 | 10
3 | ccc | 2 | 20

Для объединения можно указать условие ON либо WHERE
foo JOIN bar WHERE foo.id = bar.id
Тогда в результирующем наборе будут только строки, подходящие под условие. Надеюсь, понятно какие.

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

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

>>647953
>>647954
>>647955
>>647958
Преданный поклонник пытается прогнать злого траля, обидевшего священного опа.
Ты понимаешь, что от твоих постов он не испугается и не перестанет писать, что ты только флудишь.

И так всегда, один дебил напишет какую-нибудь хуйню, и тут же стадо хомяков полсотни постов ему в ответ. А мне скроллить это дерьмо.
#1013 #648018
>>647942
Да при чем тут min?
Делаешь order by по нужной колонке, потом выбираешь только первые 2 записи.

Например есть таблица
id | name | value
1 | foo | 3
2 | bar | 1
3 | hello | 4
4 | world | 2
SELECT x FROM tbl_name ORDER BY value LIMIT 2; выберет две строки с минимальным значением value.

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

>>647963
Джойн это объединение таблиц. Это значит, что нужно из двух и более таблиц получить одну. Почитай, как они работают. Для внутреннего объединения, если не указано условие, происходит декартово произведение всех строк из объединяемых таблиц.
Например есть две таблицы.
Таблица foo
1 | aaa
2 | bbb
3 | ccc
Таблица bar
1 | 10
2 | 20

Результатом объединения будет таблица
1 | aaa | 1 | 10
1 | aaa | 2 | 20
2 | bbb | 1 | 10
2 | bbb | 2 | 20
3 | ccc | 1 | 10
3 | ccc | 2 | 20

Для объединения можно указать условие ON либо WHERE
foo JOIN bar WHERE foo.id = bar.id
Тогда в результирующем наборе будут только строки, подходящие под условие. Надеюсь, понятно какие.

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

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

>>647953
>>647954
>>647955
>>647958
Преданный поклонник пытается прогнать злого траля, обидевшего священного опа.
Ты понимаешь, что от твоих постов он не испугается и не перестанет писать, что ты только флудишь.

И так всегда, один дебил напишет какую-нибудь хуйню, и тут же стадо хомяков полсотни постов ему в ответ. А мне скроллить это дерьмо.
#1014 #648049
>>648001
погуглить плагин для вп и функции.
#1015 #648052
https://github.com/V3N0m21/Uppu4
ОП, возвращаюсь со своим файлообменником, поправил твои замечания
Вчера мне отказали в должности Project manager'a так что буду дальше идти по пути fullstack-разработчика

Сразу есть вопрос по твоим замечаниям

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



Как мне получить id файла в базе до того как я его внес в базу? Проблема в том что при сохранении файла у меня используется его id в имени.
#1016 #648053
>>648018
Не вижу особой разницы между цмс и фреймворком? да и цмс по-моему сложнее, что можно продать на цмс без глубоких знаний пхп и пердолинга с его фиксингом? да ничего, там же стандартный функционал. любой васян себе сайт на цмс шлепнет и программистам там платить не нужно.
#1017 #648057
>>648052

>Как мне получить id файла в базе до того как я его внес в базу? Проблема в том что при сохранении файла у меня используется его id в имени.


Почитай про транзакции в PDO. Алгоритм следующий - инициализируешь транзакцию, получаешь id файла, в случае успеха завершаешь транзакцию (PDO::commit), в случае ошибки делаешь роллбэк (PDO::rollBack).

Ссылки на мануал:
http://php.net/manual/en/pdo.begintransaction.php
http://php.net/manual/en/pdo.commit.php
http://php.net/manual/en/pdo.rollback.php
#1018 #648058
А вообще какое отношение ебучий майсокл с дохуя сложными комбинированными запросами к фреймворкам? Я не знаю сокл, потому что мне нахуй не нужно было использовать сложные запросы ни в одном сайте, ебашишь селект алл и фетчишь дату, все. Во фреймвокрах вообще запросы через Актив рекордс делаются. Так-то надо по ходу поизучать доки сокла, чтобы столько не возиться. Кто ж знал, что в сокле что-то помимо крудов есть.
#1019 #648063
Кстати, кто долго занимается, вот у чувака есть социалка
https://github.com/buckyroberts/Social-Network-Website

Не хотите на досуге поковырять?
#1020 #648104
>>648063
А это пример хорошего кода? Плохого кода? Можно краткий комментарий для нубасов?
#1021 #648105
Аноны, я сейчас заплачу. Как делать студентов? Как вообще хоть что-нибудь начать делать в них? Я ничего не понимаю, помогите мне, пожалуйста
#1022 #648113
>>648063
Что там ковырять? Очередной самописный уродец без намека на ооп и хоть какую-то продуманную архитектуру.

Если благодаря раскрутке это говно взлетит, то спустя год-два вместо 87 файлов в корневом каталоге их будет 870, в каждом из них не 50 строчек как сейчас, а по 500.
Никакого порядка в организации кода, все сплошной стеной, даже файлы свалены в кучу.
Представь что ты "долго занимаешься" и тебя пригласили на работу над таким проектом.
Попробуй что-то дописать или пофиксить. Не знаю, вот человек просит хлебные крошки.
https://github.com/buckyroberts/Social-Network-Website/issues/4
Можешь сделать это и послать pull request.

Вот еще один баг с интерфейсом.
https://github.com/buckyroberts/Social-Network-Website/issues/3

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

>>648105
Задавай конкретный вопрос.
#1023 #648122
>>648113

>Задавай конкретный вопрос.


Как соединить SQL через ПХП? Для чего мне использовать ПХП, только для соединения с БД? Какие файлы нужно создавать, как их структурировать? Где? На гитхабе или на своём ПК?
#1024 #648129
>>648122
Ты вообще задачи из оп-поста делал?
#1025 #648130
>>648129
Да, делал
#1026 #648132
>>648129
Дело в том, что я делал все задачи довольно аутично сидя в своём манямирке и планомерно выполняя поставленную задачу. В списке студентов же требуется обширное знание всех технологий, как что с чем соединять, а этого не было в отдельных задачкахну не было же.
#1027 #648139
>>648063
Поясните, пожалуйста, как запускать чужие проекты из гитхаба? Их скачивать и через собственный сервер открывать? Какой файл "первый" надо открыть, чтоб всё запустилось?
#1028 #648141
>>648122

>Как соединить SQL через ПХП?


Что такое "соединить SQL"? Соединиться с базой данных?
В задании на список студентов есть ссылки на хабр и документацию.
https://github.com/codedokode/pasta/blob/master/student-list.md#Работа-с-базой-данных-из-php

>Для чего мне использовать ПХП, только для соединения с БД?


Для извлечения и вставки данных из базы (модели), для подстановки этих данных в html-шаблон (представления), для обработки запроса (контроллеры).

>Какие файлы нужно создавать, как их структурировать?


https://github.com/codedokode/pasta/blob/master/student-list.md#Структура-файлов
https://github.com/codedokode/pasta/blob/master/student-list.md#mvc

>На гитхабе или на своём ПК?


Читай учебник по гиту.
https://git-scm.com/book/ru/v1
#1029 #648142
>>648141
Ох, спасибо... какой же я слепой мудак, так всего боюсь и постоянно теряюсь, когда понимаю, что ещё совсем ничего не понимаю...
830 Кб, 750x859
#1030 #648146
Пхп-господины, как у вас дела? Сильно ли демпингуют школьники/индусы? Реально ли с пыхой свалить забугор?
#1031 #648147
>>648139
>>648141
Ответь ещё на это, дружище
#1032 #648154
>>648139
А свои ты как запускаешь?

Да, скачай с гитхаба (на самом деле из командой строки git clone, но наверное это слишком сложно) и распакуй архив в нужную директорию своего сервера.
"Первый файл" как обычно index.php, его не обязательно писать в адресной строке.
На всяких сборках это будет http://localhost/project.name/ или http://localhost/project.name/index.php
#1033 #648158
>>648146
Проанализируй вакансии или фриланс-биржи.
#1034 #648161
>>648154
Я скачиваю зип-архив, распаковываю в папку с сервером, ищу индекс.пхп, прописываю путь к нему через браузер, но всегда натыкаюсь на сообщения об ошибке.
#1035 #648164
>>648161
В vhosts директорию добавлял?
#1036 #648166
>>648164
Не совсем понял тебячё за vhosts?. Я через этот сервер всегда задачки ОПа проверяю и в принципе он рабочий.
#1037 #648169
>>648164
вот например ту Социалную Сеть скачал.
пишу в браузере http://localhost/Social-Network-Website-master/

Получаю
Warning: require_once(C:\xampp\htdocs\Social-Network-Website-master\includes/config.php): failed to open stream: No such file or directory in C:\xampp\htdocs\Social-Network-Website-master\includes\bootstrap.php on line 8

Fatal error: require_once(): Failed opening required 'C:\xampp\htdocs\Social-Network-Website-master\includes/config.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\Social-Network-Website-master\includes\bootstrap.php on line 8
#1038 #648170
>>648169

>\includes/config.php


Ну это вообще СПЕРМОСЕРВЕР
#1039 #648172
>>648170
ты бы лучше помог, что ли
#1040 #648175
>>648172
Извини, я никогда не ставил веб-сервера на сперму, просто смешно стало.
#1041 #648176
>>648175
на что мне ставить-то, если у меня 1 ноутбук еле дышащий на сперме?
#1043 #648188
>>648169
Никто больше не подскажет, как с этим бороться и загружать гитхабовские проекты?
#1044 #648199
>>648188
Я ужинаю, отъебись.
#1045 #648202
#1046 #648229
>>648170
Винда понимает оба разделителя, так что скорее всего дело не в этом.
http://rmcreative.ru/blog/post/directory_separator-v-php
http://us2.php.net/manual/en/ref.filesystem.php#73954

>>648169
Ты уверен в том, что в папке C:\xampp\htdocs\ у тебя находится папка Social-Network-Website-master, а в ней папка includes с файлом config.php?
С сервером все в порядке? Создай папку C:\xampp\htdocs\example.com, положи в нее файл index.php с содержимым
<?php echo 'hello world';
Попробуй запустить localhost/example.com.

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

Решай лучше задачи из оп-поста, это полезнее.
#1047 #648236
>>648229
Да, у меня работают собственные страницы, которые кладу в папку и запускаю.

>Что ты собрался с ним делать?


ну надо же начинать понимать, что вообще происходит у других людей

>Решай лучше задачи из оп-поста, это полезнее.


как раз пытаюсь начать студентов делать и начать понимать, как создавать страничку с несколькими файлами
#1048 #648310
>>648236
Я у тебя еще раз спрашиваю

>Ты уверен в том, что в папке C:\xampp\htdocs\ у тебя находится папка Social-Network-Website-master, а в ней папка includes с файлом config.php?



Короче нет такого файла, зато есть config.php.sample. Автор видимо хочет, чтобы люди переименовывали этот файл. Хотя вообще-то надо упоминать об этом в ридми.
Сразу можешь переименовать db_config.php.sample и functions/secure.php.sample, та же история.
Дальше нужно либо зайти в db_config.php и прописать вместо buckysroom свою базу данных, либо создать новую бд с именем buckysroom.

О том где находится дамп нигде не сказано. Пришлось искать по расширению sql. Дамп нашелся в папке db.
Залить дамп у меня не получилось, потому что выяснилось, что приложение требует версию mysql минимум 5.6 (поддержка полнотекстовых индексов в innodb). Об этом тоже ничего не сказано.

В общем, решайте лучше оповские задания, не тратьте время на такое говно.
Чего стоит только конфиг из сотен констант и гигантских массивов
https://github.com/buckyroberts/Social-Network-Website/blob/master/includes/config.php.sample
разве неочевидно, что эту кашу нужно хранить в бд, написать отдельный интерфейс в админке?
А, ну да, это "слишком сложно", лучше буду скроллить тысячу строк в файле, который лежит хз где, в поисках строки "CNST_SM_STTNG", "MGCSTR"
#1049 #648354
>>648169

>master\includes/config.php


>>648170

лол
#1050 #648357
Это нормально так над виджетом издеваться? Почему у него нет нормального способа передачи атрибутов? (Другие виджеты не предлагать, мне нужен с гет запросом)
<?= ListView::widget([
'dataProvider' => $dataProvider,
'itemOptions' => ['class' => 'item'],

'itemView' => function ($model, $key, $index, $widget) {
$string = Html::a(Html::encode($model->title), ['view', 'id' => $model->news_id]) . "<br>" . Html::encode($model->text);
return $string;

},
])
#1051 #648358
>>648310

> CNST_SM_STTNG


вот тоже кошмар - человек почему-то пропускает гласные в словах как медведь с двачекартинок.
#1052 #648361
>>648122

Если тебе надо отправлять запросы к базе данных из пхп программы, тебе нужна библиотека работы с БД. В PHP есть mysqli и pdo (обе встроенные и под windows поставляются вместе с php как расширения, их может надо будет включить в php.ini), я рекомендую PDO, гугли статью "почему вам стоит использовать PDO".
#1053 #648369
>>648113
У него же полторы тысячи фолловеров и няшная авка.
#1054 #648376
>>648063
Ну да, папки и классы вообще не организованы, прост мне понравилось его видео про Java Fx, я подумал, что там норм код.
#1055 #648379
>>647836
>>647868

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

То есть гит ведет историю твоего проекта.

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

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

Гит это свободный, бесплатный продукт с открытым кодом.

Про гит можно и нужно почитать эту книгу: https://git-scm.com/book/ru/v1

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

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

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

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

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

Мы просим загружать код на сайты вроде github или bitcucket или аналогичный, потому что ОПу так удобнее смотреть код, ему неохота скачивать и распаковывать архивы с файлообменников. Ну а тебе польза от того, что научишься работать с гитхабом и гитом, его во многих компаниях используют.
#1055 #648379
>>647836
>>647868

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

То есть гит ведет историю твоего проекта.

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

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

Гит это свободный, бесплатный продукт с открытым кодом.

Про гит можно и нужно почитать эту книгу: https://git-scm.com/book/ru/v1

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

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

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

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

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

Мы просим загружать код на сайты вроде github или bitcucket или аналогичный, потому что ОПу так удобнее смотреть код, ему неохота скачивать и распаковывать архивы с файлообменников. Ну а тебе польза от того, что научишься работать с гитхабом и гитом, его во многих компаниях используют.
#1056 #648384
Чего мне яндекс отвечает 302?

telnet ya.ru 80
Trying 93.158.134.3...
Connected to ya.ru.
Escape character is '^]'.
HEAD / HTTP/1.1
Host: ya.ru

HTTP/1.1 302 Found
Server: nginx
Date: Tue, 09 Feb 2016 17:16:24 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache,no-store,max-age=0,must-revalidate
Location: https://ya.ru/
Expires: Tue, 09 Feb 2016 17:16:24 GMT
Last-Modified: Tue, 09 Feb 2016 17:16:24 GMT
P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
Set-Cookie: yandexuid=1247493251455038184; Expires=Fri, 06-Feb-2026 17:16:24 GMT; Domain=.ya.ru; Path=/
#1057 #648392
>>647892

Начинающему лучше бы немного повозиться с консолькой как описано например в туториале: http://phpclub.ru/mysql/doc/tutorial.html

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

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

>>647895

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

>>647922

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

>>647939

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

>>647942

Никак. Лимит ограничивает число выбранных строк.

>>647950

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

>>647963

> то можно ли делать выборку как-то по внешним ключам, а не джойнами.


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

a JOIN b ON (x)

Это равноcильно

a JOIN b ON a.x = b.x

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

> Мне кажется, джойнить не очень правильно, когда есть внешние ключи.


Нет, использовать внешние ключи нельзя. Внешние ключи это ограничение, то есть штука которая проверяет вставляемые в поле значения.
#1057 #648392
>>647892

Начинающему лучше бы немного повозиться с консолькой как описано например в туториале: http://phpclub.ru/mysql/doc/tutorial.html

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

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

>>647895

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

>>647922

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

>>647939

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

>>647942

Никак. Лимит ограничивает число выбранных строк.

>>647950

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

>>647963

> то можно ли делать выборку как-то по внешним ключам, а не джойнами.


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

a JOIN b ON (x)

Это равноcильно

a JOIN b ON a.x = b.x

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

> Мне кажется, джойнить не очень правильно, когда есть внешние ключи.


Нет, использовать внешние ключи нельзя. Внешние ключи это ограничение, то есть штука которая проверяет вставляемые в поле значения.
#1058 #648395
>>648017

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

Методы надо объявлять не внутри конструктора, а добавлять их в прототип функции-конструктора. Конструкция return { ... } будет не нужна.

Почитай комментарии к задаче, там есть ссылка на learn.javascript.ru где объясняется как это делать.

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

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

> totalCalories = getCalories(sizes[size]) + getCalories(stuffings[stuffing]) + getCalories(toppings[item]);



Не надо хранить переменные totalCalories, я же написал выше что их можно вычислить в любой момент, зная тип гамбургера и добавок, следовательно хранить их не требуется.
#1059 #648402
>>648017

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

>>648018

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

>>648052

> отказали


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

> Как мне получить id файла в базе до того как я его внес в базу? Проблема в том что при сохранении файла у меня используется его id в имени.


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

>>648053

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

Любой кто прошел наш курс и ООП, в CMS разберется легко, почитав документацию, а может даже интуитивно. Кто не прошел, может даже в CMS запутаться.
#1060 #648407
>>648057

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

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

>>648058

Перечитай свой пост:

> А вообще зачем знать программирование чтобы делать приложения? Я обычно из гугла копирую строки, этого ведь достаточно?



SQL надо знать, как минимум на том уровне что требуется в моих задачах из ОП поста (или на более хорошем уровне).

> Во фреймвокрах вообще запросы через Актив рекордс делаются.


Это лишь обертка над SQL запросами.

> Так-то надо по ходу поизучать доки сокла


SQL это не программа, у нее нет документации. это язык для написания запросов к базе данных. Ты наверно имел в виду документацию по СУБД MySQL.
#1061 #648414
>>648105

Это читал? http://php.net/manual/ru/tutorial.php

Апач себе установил? В ОП посте есть урок по установке Апача и PHP.

Для работы с БД надо изучить библиотеку PDO, статья https://habrahabr.ru/post/137664/ + официальный мануал по PDO читай.

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

PDO это ООП библиотека. ООП надо знать.

>>648063

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

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

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

Тут в огромной базе всего один внешний ключ https://github.com/buckyroberts/Social-Network-Website/blob/master/db/tnb-database.sql

JS код - неструктурированная лапша: https://github.com/buckyroberts/Social-Network-Website/blob/master/js/edit_forum.js

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

https://github.com/buckyroberts/Social-Network-Website/tree/master/includes/classes - названия классов не по PSR.

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

https://github.com/buckyroberts/Social-Network-Website/blob/master/includes/classes/class.BuckysVideo.php
Запрос строится кусками, человек не знает про Query builder.

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

https://github.com/buckyroberts/Social-Network-Website/blob/master/includes/classes/class.BuckysVideo.php#L95
Человек не додумался вынести работу с АПИ в отдельный класс или функции и просто лепит скопированный из гугла код работы с курлом. Человек явно не понимает как надо разбивать код на функции и классы. Человек не понимает что можно разбивать код, выполоняющий разные задачи на классы или файлы, а лепит все вперемешку.

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

Ну и такое ощущение что человек учился по книге Робин Никсон которую тут выше упоминали.
#1061 #648414
>>648105

Это читал? http://php.net/manual/ru/tutorial.php

Апач себе установил? В ОП посте есть урок по установке Апача и PHP.

Для работы с БД надо изучить библиотеку PDO, статья https://habrahabr.ru/post/137664/ + официальный мануал по PDO читай.

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

PDO это ООП библиотека. ООП надо знать.

>>648063

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

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

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

Тут в огромной базе всего один внешний ключ https://github.com/buckyroberts/Social-Network-Website/blob/master/db/tnb-database.sql

JS код - неструктурированная лапша: https://github.com/buckyroberts/Social-Network-Website/blob/master/js/edit_forum.js

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

https://github.com/buckyroberts/Social-Network-Website/tree/master/includes/classes - названия классов не по PSR.

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

https://github.com/buckyroberts/Social-Network-Website/blob/master/includes/classes/class.BuckysVideo.php
Запрос строится кусками, человек не знает про Query builder.

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

https://github.com/buckyroberts/Social-Network-Website/blob/master/includes/classes/class.BuckysVideo.php#L95
Человек не додумался вынести работу с АПИ в отдельный класс или функции и просто лепит скопированный из гугла код работы с курлом. Человек явно не понимает как надо разбивать код на функции и классы. Человек не понимает что можно разбивать код, выполоняющий разные задачи на классы или файлы, а лепит все вперемешку.

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

Ну и такое ощущение что человек учился по книге Робин Никсон которую тут выше упоминали.
#1062 #648419
>>648402
Вот это >>644831 предел моих знаний на данный момент. Не знаю БД, гит. Стоит ли начинать список студентов, разбираясь по ходу или сначала лучше изучить то, чего не знаю.
И ещё один вопрос. В ближайший месяц мне нужно будет устраиваться на работу, так как начинаются проблемы с деньгами. Реально с такими знаниями за месяц достичь такого уровня, чтобы на работу взяли? И на что вообще делать упор? Раз ты сказал, что в CMS разобраться не сложно, стоит ли углубляться в эту сторону? Во фрилансе ведь это востребовано
#1063 #648433
>>648132

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

>>648139

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

>>648142

Глаза боятся - руки делают

>>648158

У меня норм, уезжать не планирую.

>>648175

Ну это твои проблемы. Ты так пишешь как будто под windows нельзя запускать апач или php. Это кроссплатформенный софт.

>>648180

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

>>648310

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


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

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

Таким образом сразу видно что именно изменено.
#1063 #648433
>>648132

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

>>648139

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

>>648142

Глаза боятся - руки делают

>>648158

У меня норм, уезжать не планирую.

>>648175

Ну это твои проблемы. Ты так пишешь как будто под windows нельзя запускать апач или php. Это кроссплатформенный софт.

>>648180

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

>>648310

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


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

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

Таким образом сразу видно что именно изменено.
#1064 #648438
>>648310

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

>>648357

А ты документацию читал? У листвью там очень много опций.

>>648369

Полторы тысячи человек которые нам с вами не конкуренты.

>>648384

На https переключает
#1065 #648440
Прочитал статью с википедии по HTTP, но подозреваю что этого недостаточно.

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

Например тут
>>648384
я ожидал как бы 200 статуса, а он говорит 302. Яндекс "Временно переехал"? Куда? Или это из-за другого протокола (https)?
Я думал, https это только какое-то внутреннее шифрование данных. Синтаксис заголовков у него тоже отличается что ли?
В общем, я думаю это из-за HTTP/1.1, он наверное ждет что-то другое, только не знаю что.

>>648438
А, ты уже тут.
Накидай ссылок, я не умею гуглить.
#1066 #648442
>>648419

Ну ты можешь почитать комментарии к задаче про студентов, и решить, готов ли ты это писать или пока нет. Если да, то изучай параллельно, если нет, начни с HTML/SQL.

Насчет работы - если спешишь то изучай верстку и JS (learn.javascript.ru), какую-нибудь популярную в вашем региона CMS.Может возьмут натягивать шаблоны и править баги.

За месяц ты вряд ли студентов сделаешь нормально.
#1067 #648446
>>648018

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


Но ведь из тех постов мой только один, да и то с сажей?
#1068 #648447
>>648442
Ясно. Спасибо за ответ
#1069 #648448
>>648392

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


>


петушиный язык.
#1070 #648456
>>648057
Да, сделал, правда не уверен правильно ли, не знаю как проверить.
В общем будет время, посмотри мой файлообменник https://github.com/V3N0m21/Uppu4
Из того что я вижу, нужно поправить верстку, а то бутстрап у меня там чуть корявенько использован, а также навести порядок с комментариями и аяксом.
#1071 #648459
>>648402
кек, цмс-то легче фреймворков? ты тему пытался натянуть на цмс? нюфани не могут даже понять, где там вьюхи спрятаны, что уж говорить про понимание работы моделей и контроллеров.
#1072 #648473
>>648402

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


Да нет, опыт разработчика там не требовался. Я завалился на собеседовании, пройдя перед этим тестовые. А все потому что надо было готовиться. Эх, такой шанс вкатиться в индустрию ушел, печаль.
#1073 #648475
>>648473
На каком вопросе срезался?
Что в итоге сказали, сокровенное "мы вам перезвоним" или сразу всю жестокую правду?
#1074 #648484
Какая же русня приебчивая до мелочей и сварливая. Вон пендос нахуярил фейсбук лапшой, потрахал телку с пика, еще и работает небось кодерому за неск. тыщ баксов и норм ему.
#1075 #648489
>>648440

> Я думал, https это только какое-то внутреннее шифрование данных.


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

> Синтаксис заголовков у него тоже отличается что ли?


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

Руками через телнет SSL ты вряд ли сможешь сделать (там сложная математика, это же криптография), потому если ты хочешь слать HTTPS тебе нужна программа.

Например, ты можешь установить openssl, это программа для командной строки, и запустить входящий в нее клиент:

openssl s_client -connect ya.ru:443

я проверил - работает, выводит информацию о сертификатах, рекомандую попробовать. Openssl доступен под линукс и виндоуз, но под винду официально распространяет только исходный код который надо собрать и скомпилировать. Я нагуглил уже собранную программу тут: http://www.npcglib.org/~stathis/blog/precompiled-openssl/

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

https://www.hurl.it/ (это сайт, а не программа, но тут капча)
https://addons.mozilla.org/en-US/firefox/addon/httprequester/

Есть программа curl для командной строки, она позволяет тоже слать запросы: https://curl.haxx.se/download.html

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

Также, изучи какие запросы отправляются при открытии сайтов. Это можно сделать в dev tools в Хроме или ФФ (Ctrl + Shift + I), на вкладке Network.

Часто удобно не набирать запрос в команжной строке, а сохранить в файл и отправлять из файла, так:

openssl s_client ... < request.txt
telnet ... < request.txt

Эксперименировать с запросами удобно через сайт http://httpbin.org/ - там есть страницы, которые тебе в ответ на запрос прислывают какую-то информацию о нем.

Тебе надо изучить:

- что такое запрос/ответ, какие есть методы в HTTP
- некоторые коды ответов: 200, 301, 404, 401, 403, 500
- заголовки User-Agent, Referer, Conetnt-Type, Content-Length, Location, Accept, Cookie, Set-cookie, Host
- куки в HTTP

Вот задания:

- попробуй отправляя ГЕТ запрос на http://httpbin.org/user-agent добиться чтобы там отобразилось произвольное название user-agent в ответе сервера
- отправь ГЕТ запрос на http://httpbin.org/headers с заголовком X-Test: hello world, причем разбей заголовок на 2 строки. В ответе должно придти "hello world"
- отправь ПОСТ запрос на /post с данными a=1 и b=hello world. Используй способ кодирования данных application/x-www-form-urlencoded

В гугле почитай также про multipart/form-data, но так как он сложный, руками можешь его не делать. А можешь и попробовать сделать.

- отправь ГЕТ запрос на http://httpbin.org/cookies/set?k2=v2&k1=v1 и посмотри что придет в заголовке Set-Cookie

- отправь ГЕТ запрос с кукой a=%hello% на http://httpbin.org/cookies и добейся чтобы она была в ответе.

- попробуй получить ответ 200 на ГЕТ запрос на http://httpbin.org/basic-auth/ivan/1234 (имя и пароль написаны в URL)

- изучи АПИ яндекса и попробуй получить координаты для какого-нибудь адреса: https://tech.yandex.ru/maps/doc/geocoder/desc/concepts/input_params-docpage/

Обрати внимание как надо кодировать русские буквы в URL (либо в utf-8 либо процентным кодированием).

Этого тебе хватит с запасом.
#1075 #648489
>>648440

> Я думал, https это только какое-то внутреннее шифрование данных.


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

> Синтаксис заголовков у него тоже отличается что ли?


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

Руками через телнет SSL ты вряд ли сможешь сделать (там сложная математика, это же криптография), потому если ты хочешь слать HTTPS тебе нужна программа.

Например, ты можешь установить openssl, это программа для командной строки, и запустить входящий в нее клиент:

openssl s_client -connect ya.ru:443

я проверил - работает, выводит информацию о сертификатах, рекомандую попробовать. Openssl доступен под линукс и виндоуз, но под винду официально распространяет только исходный код который надо собрать и скомпилировать. Я нагуглил уже собранную программу тут: http://www.npcglib.org/~stathis/blog/precompiled-openssl/

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

https://www.hurl.it/ (это сайт, а не программа, но тут капча)
https://addons.mozilla.org/en-US/firefox/addon/httprequester/

Есть программа curl для командной строки, она позволяет тоже слать запросы: https://curl.haxx.se/download.html

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

Также, изучи какие запросы отправляются при открытии сайтов. Это можно сделать в dev tools в Хроме или ФФ (Ctrl + Shift + I), на вкладке Network.

Часто удобно не набирать запрос в команжной строке, а сохранить в файл и отправлять из файла, так:

openssl s_client ... < request.txt
telnet ... < request.txt

Эксперименировать с запросами удобно через сайт http://httpbin.org/ - там есть страницы, которые тебе в ответ на запрос прислывают какую-то информацию о нем.

Тебе надо изучить:

- что такое запрос/ответ, какие есть методы в HTTP
- некоторые коды ответов: 200, 301, 404, 401, 403, 500
- заголовки User-Agent, Referer, Conetnt-Type, Content-Length, Location, Accept, Cookie, Set-cookie, Host
- куки в HTTP

Вот задания:

- попробуй отправляя ГЕТ запрос на http://httpbin.org/user-agent добиться чтобы там отобразилось произвольное название user-agent в ответе сервера
- отправь ГЕТ запрос на http://httpbin.org/headers с заголовком X-Test: hello world, причем разбей заголовок на 2 строки. В ответе должно придти "hello world"
- отправь ПОСТ запрос на /post с данными a=1 и b=hello world. Используй способ кодирования данных application/x-www-form-urlencoded

В гугле почитай также про multipart/form-data, но так как он сложный, руками можешь его не делать. А можешь и попробовать сделать.

- отправь ГЕТ запрос на http://httpbin.org/cookies/set?k2=v2&k1=v1 и посмотри что придет в заголовке Set-Cookie

- отправь ГЕТ запрос с кукой a=%hello% на http://httpbin.org/cookies и добейся чтобы она была в ответе.

- попробуй получить ответ 200 на ГЕТ запрос на http://httpbin.org/basic-auth/ivan/1234 (имя и пароль написаны в URL)

- изучи АПИ яндекса и попробуй получить координаты для какого-нибудь адреса: https://tech.yandex.ru/maps/doc/geocoder/desc/concepts/input_params-docpage/

Обрати внимание как надо кодировать русские буквы в URL (либо в utf-8 либо процентным кодированием).

Этого тебе хватит с запасом.
#1076 #648491
>>648473

Тогда это странно.
#1077 #648543
Как посчитать отдельно все элементы во вложенных массивах?
Вот у меня массив такого вида:
array(14) {
[0]=>
array(25) {
[0]=>
string(2) "Д"
[1]=>
string(2) "ы"
[2]=>
string(2) "м"
[3]=>
string(1) " "
[4]=>
string(2) "т"
[5]=>
string(2) "а"
[6]=>
string(2) "б"
[7]=>
string(2) "а"
[8]=>
string(2) "ч"
[9]=>
string(2) "н"
[10]=>
string(2) "ы"
[11]=>
string(2) "й"
[12]=>
string(1) " "
[13]=>
string(2) "в"
[14]=>
string(2) "о"
[15]=>
string(2) "з"
[16]=>
string(2) "д"
[17]=>
string(2) "у"
[18]=>
string(2) "х"
[19]=>
string(1) " "
[20]=>
string(2) "в"
[21]=>
string(2) "ы"
[22]=>
string(2) "е"
[23]=>
string(2) "л"
[24]=>
string(1) "."
}
[1]=>
array(9) {
[0]=>
string(2) "К"
[1]=>
string(2) "о"
[2]=>
string(2) "м"
[3]=>
string(2) "н"
[4]=>
string(2) "а"
[5]=>
string(2) "т"
[6]=>
string(2) "а"
[7]=>
string(1) " "
[8]=>
string(1) "-"
}
[2]=>
array(27) {
[0]=>
string(2) "г"
[1]=>
string(2) "л"
[2]=>
string(2) "а"
[3]=>
string(2) "в"
[4]=>
string(2) "а"
[5]=>
string(1) " "
[6]=>
string(2) "в"
[7]=>
string(1) " "
[8]=>
string(2) "к"
[9]=>
string(2) "р"
[10]=>
string(2) "у"
[11]=>
string(2) "ч"
[12]=>
string(2) "е"
[13]=>
string(2) "н"
[14]=>
string(2) "ы"
[15]=>
string(2) "х"
[16]=>
string(2) "о"
[17]=>
string(2) "в"
[18]=>
string(2) "с"
[19]=>
string(2) "к"
[20]=>
string(2) "о"
[21]=>
string(2) "м"
[22]=>
string(1) " "
[23]=>
string(2) "а"
[24]=>
string(2) "д"
[25]=>
string(2) "е"
[26]=>
string(1) "."
}

Вот как мне отдельно посчитать, сколько элементов в массиве $array[0], в массиве $array[1] и так далее?
Пройтись циклом с for по массиву, подставляя $i в $array[$i] считая с помощью count() и набивая другой массив получившимися цифрами?
Есть ли какой-то более очевидный способ просто получить последние ключи из этих массивов (они ведь как раз и будут нужными цифрами)?
#1077 #648543
Как посчитать отдельно все элементы во вложенных массивах?
Вот у меня массив такого вида:
array(14) {
[0]=>
array(25) {
[0]=>
string(2) "Д"
[1]=>
string(2) "ы"
[2]=>
string(2) "м"
[3]=>
string(1) " "
[4]=>
string(2) "т"
[5]=>
string(2) "а"
[6]=>
string(2) "б"
[7]=>
string(2) "а"
[8]=>
string(2) "ч"
[9]=>
string(2) "н"
[10]=>
string(2) "ы"
[11]=>
string(2) "й"
[12]=>
string(1) " "
[13]=>
string(2) "в"
[14]=>
string(2) "о"
[15]=>
string(2) "з"
[16]=>
string(2) "д"
[17]=>
string(2) "у"
[18]=>
string(2) "х"
[19]=>
string(1) " "
[20]=>
string(2) "в"
[21]=>
string(2) "ы"
[22]=>
string(2) "е"
[23]=>
string(2) "л"
[24]=>
string(1) "."
}
[1]=>
array(9) {
[0]=>
string(2) "К"
[1]=>
string(2) "о"
[2]=>
string(2) "м"
[3]=>
string(2) "н"
[4]=>
string(2) "а"
[5]=>
string(2) "т"
[6]=>
string(2) "а"
[7]=>
string(1) " "
[8]=>
string(1) "-"
}
[2]=>
array(27) {
[0]=>
string(2) "г"
[1]=>
string(2) "л"
[2]=>
string(2) "а"
[3]=>
string(2) "в"
[4]=>
string(2) "а"
[5]=>
string(1) " "
[6]=>
string(2) "в"
[7]=>
string(1) " "
[8]=>
string(2) "к"
[9]=>
string(2) "р"
[10]=>
string(2) "у"
[11]=>
string(2) "ч"
[12]=>
string(2) "е"
[13]=>
string(2) "н"
[14]=>
string(2) "ы"
[15]=>
string(2) "х"
[16]=>
string(2) "о"
[17]=>
string(2) "в"
[18]=>
string(2) "с"
[19]=>
string(2) "к"
[20]=>
string(2) "о"
[21]=>
string(2) "м"
[22]=>
string(1) " "
[23]=>
string(2) "а"
[24]=>
string(2) "д"
[25]=>
string(2) "е"
[26]=>
string(1) "."
}

Вот как мне отдельно посчитать, сколько элементов в массиве $array[0], в массиве $array[1] и так далее?
Пройтись циклом с for по массиву, подставляя $i в $array[$i] считая с помощью count() и набивая другой массив получившимися цифрами?
Есть ли какой-то более очевидный способ просто получить последние ключи из этих массивов (они ведь как раз и будут нужными цифрами)?
#1078 #648548
Как загрузить товары из xml-файла в битрикс? Если мне ответят что надо читать мануалы, я скажу что это правильно, но я уже много где смотрел информацию по этому вопросу, и это не помогло мне перенести товары из XML файла в битрикс. Как я понимаю всё просто, заходишь в админку, дальше в инфоблоки, потом в импорт и XML, но постоянно он выдаёт мне ошибку, сейчас выдаёт такую ошибку:
Указанный файл не является xml файлом формата CommerceML второй редакции.
#1079 #648554
>>648543
Вот так сделал пока:
$countedLetters = array();
for ($i = 0; $i <= count($letters); $i++) {
\t $count = count($letters[$i]);
\t array_push($countedLetters, $count);
}
Всё считает правильно, но хотелось бы уже не так топорно решать, как это всё время у меня выходило, а более изящно...
#1080 #648558
>>648543

>они ведь как раз и будут нужными цифрами


То есть они будут нужными цифрами минус один - нумерация в массиве же с нуля идёт.
#1081 #648563
>>648548

Ты пробовал сравнить свой файл с описанием файла "CommerceML второй редакции." ? С кодировками проблем нет? Праивльная кодировка стоит? C точки зрения XML файл правильный?
#1082 #648571
Ниче если сделать такой запрос в контроллере и вывести во вью? Мне кажется, что это быдлокодерство и можно как-то изящнее сделать с помощью всяких МОДЕЛЕЙ ДАТА ПРОВАЙДЕРОВ и ВИДЖЕТОВ, но я уже просто заебался листать документацию, где нихуя непонятно и тыкать наугад и нихуя не работает.

$searchModel = new NewsSearch();
$model = new News();
$dataProvider = Yii::$app->db->createCommand("SELECT group_concat(news_id) as `id`, group_concat(distinct `month`) as `month`, `year` FROM(SELECT news_id, DATE_FORMAT(date, '%M')as `month`, DATE_FORMAT(date, '%Y') as `year` FROM `news` ORDER BY date DESC) as x GROUP by `year`")->queryAll();

foreach($dataProvider as $data){

$pieces = explode(",", $data["month"]);
$pieces2 = explode(",", $data["id"]);
echo $data["year"]."<br>";
for($p=0; $p<count($pieces); $p++)
{
echo $pieces[$p]."<br>";
echo $pieces2[$p]."<br>";
}
}
#1083 #648574
>>648571

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

Ты кстати знаешь про ограничение на 1024 символа (если я не путаю) по умолчанию в group_concat?

И зачем тут подзапросы?
#1084 #648581
Ребята, я только что решил задачу "Лиличка"...
Просто не ожидал от себя такой прыти.
Завтра всё подчищу и покажу, уже сплю.
Хочется горы свернуть, но потом смотрю на "Алфавит по кругу" и другие задачи - сразу становлюсь серьёзнее.
Даже задача "Чай с тортиком" кажется слишком сложной - просто не могу сообразить сходу, что там с чем связать.
#1085 #648584
>>648475
Срезался на части где мы на английском разбирали тестовый кэйс. А так как я не знал правильного ответа, ничего толкового я не смог ответить, ну и походу интервьюер подумал что я хреново говорю по английски, и это как мне кажется стало ключевым фактором. Короче у меня до сих пор полыхает от себя, ведь я свободно говорю на английском, и вообще считал это своим ключевым достоинством.
#1086 #648635
>>639138 (OP)
ОП, ты по этой теме вышку получал или нет?
Можешь посоветовать каких-нибудь тем веб-проектов в качестве дипломной работы бакалавра?
Если бы сейчас сам начинал учить, пошел бы в PHP или в питон/ноду, скажем? Думаю, туда ли направил стопы.
И еще, скажи пожалуйста: аддоны для браузеров пишутся на яваскрипте безальтернативно, да? И вообще, меня ужасно бесит внешне этот язык, я совсем его хуево понимаю со всеми этими бесконечными цепочками анонимных функций и прочим. Есть какой-то может простой способ вкатиться и на каком его уровне необходимо знать - хеллоуворлда, надо понимать, недостаточно?
#1087 #648637
Алсо, есть какая-нибудь инфа, сколько вообще зарабатывают разрабы свободных дополнений к браузерам, если вообще зарабатывают? Подозреваю, совсем мало. Мне так-то нравится эта тема - перфекционизм, маленькие улучшения обычных вещей и т. д. Но заебет же, а бросать начатое грустно.
#1088 #648646
>>648637

Они зарабатывают сбором информации о пользователе, внедрением рекламы в страницы.

Например расширение "frigate" для Хрома, для обхода блокировок, содержит в себе "Яндекс Советник", скрипт, который встраивается в страниц интернет-магазинов и подсказывает где можно купить этот же товар дешевле. Как минимум оно замедляет загрузку и работу этих сайтов, а может еще и сведения собирает.

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

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

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

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

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

Если расширение с открытыми исходниками и ничего плохого не делает, оно все равно может например служить рекламой для какого-то сервиса или программы.
#1089 #648647
Написал скрипт, для одного человека, он собой представляет следующее:
Есть примерно 25-30 полей форм (текстовые поля, поля с датами, чекбоксы, скрытые формы выпадающие при определённом действии), есть определённая хтмл таблица, сделанная из файла в экселе, представляет собой официальный документ, установленный законодательством. Скрипт принимает значение, проверяет их и вписывает в форму, вписывает максимально аккуратно, так как надо по законодательству, после чего, появляется возможность распечатать эту форму. Я писал этот скрипт примерно 3 дня (работал каждый день довольно много), чтобы всё совпадало и было как надо, использовал сторонние библиотеки и стили. Сколько стоит примерно такая работа?
#1090 #648648
>>648647
Какую цену, мне стоит указать заказчику за такую работу? Скажу что, хоть и на первый взгляд всё просто в этом скрипте, но тем не менее была масса подводных камней, сделать возможность печати только определённой части страницы, перевести таблицу в хтмл, чтобы ничего при этом не нарушить (многое приходилось править руками, конвертеры не всегда хорошо переводят), проверять значения полученные из форм и многое другое.
#1091 #648650
Короче, нашел виджет от Васяна под уи, но мне в нем ничего не понятно, как он фетчит дату, время с потолка берет, а мне нужно из бд.

http://loco.ru/materials/133-yii-archiv-po-mesyacam
#1092 #648688
А переката не-бу-дет?
#1093 #648722
>>648688

Скоро будет.
59 Кб, 600x443
#1094 #648735
Итак, задача "Лиличка": http://ideone.com/4KbQnb
Мне очень важно составлять полный подробный текстовый алгоритм решения задачи, без этого реализовать ничего не получается.
Столкнулся с некоторыми неожиданными для новичка вещами:
1. Интерпретатор выводит строки вниз, а не накладывает строку на строку, как я почему-то думал раньше.
Сейчас пересмотрел некоторые свои решения - и почему я так думал, там же всё именно идёт вниз. Со всего размаху прислонил ладонь к лицу.
2. Битый час сегодня возился с ошибкой Undefined offset в строке $count = $symbols[$i]; - и определял переменную массивом, и массив определял переменной (это вообще неправильно), ошибка оставалась. Потом нашёл непонятное решение в Сети: $count = @$symbols[$i]; - ставим "собаку" перед массивом, определяем его таким вот образом именно как массив. Не нашёл в мануале этого, поэтому непонятно, для чего нужно так вот подтверждать массив, когда у нас и так перед этим этот же самый массив создавался, а с помощью [$i] мы просто вытаскиваем конкретные значения из него.

Почти составил текстовый алгоритм для следующей задачи - "Чай с тортиком", некоторые моменты пока не понятны.
Глаза боятся, а руки делают. Ещё во сне многое определяется или когда просто гуляю, отдыхаю - само как-то приходит, потому что периодически возвращаюсь мысленно к проблемным моментам.
#1095 #648777
Пилите перекат.
#1096 #648791
>>640245
Был в похожей ситуации пару лет назад.
Только не 3 года учил, а 3 месяца.

В итоге устроился версталой и рад.
Сейчас полноценный фронтенд.
#1097 #648825
>>640245

>Учитывая, что раздел посещает человек 10, то все за три года на пхпистов устроились.


Учитывая, что у анона не всё в порядке с логикой и наблюдательностью. Ну ты понял.
#1098 #648835
Анонасы, а что такое неявный сброс буфера?

И что дает ob_implicit_flush(false) в этом коде? Для чего его использовали?
ob_start();
ob_implicit_flush(false);
extract($_params_, EXTR_OVERWRITE);
require($_file_);
return ob_get_clean();
#1099 #648878
>>648456
https://github.com/V3N0m21/Uppu4/blob/c898ccce2109b5922db88bff43745b3f5f0ec13a/app/Helper/FileHelper.php#L54

>catch (Exception $e)


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

http://php.net/manual/en/function.move-uploaded-file.php#refsect1-function.move-uploaded-file-returnvalues
Вот, почитай в мануале.
#1100 #648966
>>648735
Старый я стал. Целый час возился. Нужно xdebug поднять, что бы быстрее шло.
http://ideone.com/ZXUlms
#1101 #648967
скиньте кто-нибудь таблицу со статистикой на задачу ВЕКТОР по ООП, хочу проверить результаты свои
#1102 #648982
А что за MariaDB в новом XAMPP вместо MySQL? Написано что одно и тоже но что-то стремает меня это.
#1103 #648983
>>648878
Исправил
23 Кб, 339x244
#1104 #648985
>>648982

>MariaDB

#1105 #648986
>>648982
Хавай что дают, если не можешь самостоятельно установить софт.
#1106 #648991
>>648966
Какое простое и изящное решение...
Вот к такому стремлюсь, но ни черта не выходит - моё топорное решение ты видел.
Но я ещё и со многими функциями не знаком (array_map, например, или даже max() не сразу нашёл - до этого пытался просто сравнивать посчитанные вложенные массивы в общем массиве с символами).
Надеюсь, с опытом это и ко мне придёт.
#1107 #648996
>>648991
а с функциями особо не надо быть знакомым. Нужно что-то - гуглишь своими словами в гугле функцию(что должна выполнять, скажем, разбивать массив и тп) - втыкаешь в применением - используешь.
#1108 #648997
ОП тут?
#1109 #649005
>>648996
Да я так и делаю, но к чему там тот же array_map - сразу и не догадался.
Мне бы и не пришло в голову что-то подобное искать среди функций.
#1110 #649018
>>649005
Я тоже про нее не помнил. Нашел по запросу "longest string in php array", когда гуглил как max() с массивами строк работает. Спрашивай у гугля как есть. Все равно на stackoverflow отправит. Только мануал внимательно читай потом по новым вещам. Ты же тот филолог/главред с клевым английским? У тебя все быстрей пойдет чем у плебеев со словорями.
https://github.com/MindiMakridi/filehosting #1111 #649053
>>641526

https://github.com/MindiMakridi/filehosting/blob/master/models/Thumbnail.php
Насчет этого класса: у тебя он сделан так, что для каждой превьюшки создается свой объект. Мне конечно кажется, что чуть практичнее было бы сделать чтобы один объект мог обрабатывать много картинок, ну или хотя бы генерировать много превьюшек из одной картинки. Но с другой стороны, этот код тоже вполне работает, так что можно оставить так. Но в следующий раз все-таки лучше сделать многоразовый объект-генератор.

https://github.com/MindiMakridi/filehosting/blob/master/models/Thumbnail.php#L67
Если создавать имена функций таким образом, то их потом нельзя найти поиском (например по слову imagepng). В таких случаях лучше использовать switch, if, массивы с именами - то есть сделать чтобы имена хранились в явном виде, а не собирались по частям.

https://github.com/MindiMakridi/filehosting/tree/master/models
Название папки неудачное - модель это обычно объект, хранящий информацию о какой-то сущности, например File, а у тебя туда еще куча классов кинута. Конечно они являются частью Model из MVC, но с таким подходом придется половину приложения класть в эту папку. Лучше было назвать папку просто src или app. Не знаю, стоит ли переименоывать, может и не стоит.

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php
Тут неймспейс написан не в том же регистре что и название папки: helpers и Helpers - это ошибка. На Линуксе имена файлов чувствительны к регистру.

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L51

> if (getimagesize($path) && \Filehosting\Thumbnail::isExtensionAllowed(getimagesize($path)[2]))


У тебя есть класс, отвечающий за создание превьюшек - Thumbnail, а почему функция "проверить можно ли из этого файла сделать превьюшку" не находится в этом классе?

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L90

> public function getFileExtension(\Filehosting\File $file)


Расширение наверно проще получить через pathinfo: http://php.net/manual/ru/function.pathinfo.php

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L103

> public static function validateEditorialForm


> $file->setComment(trim($file->getComment()));


Почему функция с названием validate занимается не своим делом? Обрезать пробелу логичнее на этапе когда заполняются поля объекта.

> https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L124


> public function uploadFile(\Filehosting\File $file, \Filehosting\FilesMapper $files, $filePostData, $token){


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

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L173
вардамп забыл убрать

https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L52

> $app->filesHelper->uploadFile($file, $files, $_FILES, $app->getCookie('token'));


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

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L124

> public function uploadFile(\Filehosting\File $file, \Filehosting\FilesMapper $files, $filePostData, $token){


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

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L140
Функция написана с ошибкой: если файл успещно загрузился, но его размер больше разрешенного, она вернет сообщение "Файл не был загружен".

> https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L51


> if (!$error=$app->filesHelper->validateFileUpload($_FILES, $app->config('maxsize'))) {


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

> https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L54


> $app->redirect("/files/$id");


Генерацию ссылки на страницу файла лучше вынести в отдельный метод.

> 'filesHelper' => $app->filesHelper


Чтобы не передавать filesHelper в каждом обработчике, можно передать его в начале в twig как-нибудь через setData() или appendData: http://docs.slimframework.com/view/data/ - или с твигом это не сработает? В твиге тоже есть метод вроде addGlobal.

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html.twig#L16

> <p class="comment">{{file.getComment()}}</p>


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

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html.twig#L23

> {% if filesHelper.canEdit(token, file) %}


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

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html.twig#L53

> скрипт


Этот скрипт ведь не будет работать, у тебя яваскрипты ниже подключаются, перед концом body?

> https://github.com/MindiMakridi/filehosting/blob/master/models/File.php#L35


> "/\.php|\.html|\.htaccess/


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

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

Также, я придумал еще кое-что для повышения безопасности. Мы ведь отдаем файлы через X-sendFile. Раз так, нам незачем хранить их в публичной папке веб-сервера, можно хранить файл вообще за пределами папки public. Получается небольшое усиление защиты.

И еще, защищена ли форма комментирования файла от CSRF?

Ну в общем, замечания в основном незначительные. Ты будешь дальше доделывать эту задачу, всякие там древовидные комментарии и аякс добавлять?
https://github.com/MindiMakridi/filehosting #1111 #649053
>>641526

https://github.com/MindiMakridi/filehosting/blob/master/models/Thumbnail.php
Насчет этого класса: у тебя он сделан так, что для каждой превьюшки создается свой объект. Мне конечно кажется, что чуть практичнее было бы сделать чтобы один объект мог обрабатывать много картинок, ну или хотя бы генерировать много превьюшек из одной картинки. Но с другой стороны, этот код тоже вполне работает, так что можно оставить так. Но в следующий раз все-таки лучше сделать многоразовый объект-генератор.

https://github.com/MindiMakridi/filehosting/blob/master/models/Thumbnail.php#L67
Если создавать имена функций таким образом, то их потом нельзя найти поиском (например по слову imagepng). В таких случаях лучше использовать switch, if, массивы с именами - то есть сделать чтобы имена хранились в явном виде, а не собирались по частям.

https://github.com/MindiMakridi/filehosting/tree/master/models
Название папки неудачное - модель это обычно объект, хранящий информацию о какой-то сущности, например File, а у тебя туда еще куча классов кинута. Конечно они являются частью Model из MVC, но с таким подходом придется половину приложения класть в эту папку. Лучше было назвать папку просто src или app. Не знаю, стоит ли переименоывать, может и не стоит.

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php
Тут неймспейс написан не в том же регистре что и название папки: helpers и Helpers - это ошибка. На Линуксе имена файлов чувствительны к регистру.

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L51

> if (getimagesize($path) && \Filehosting\Thumbnail::isExtensionAllowed(getimagesize($path)[2]))


У тебя есть класс, отвечающий за создание превьюшек - Thumbnail, а почему функция "проверить можно ли из этого файла сделать превьюшку" не находится в этом классе?

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L90

> public function getFileExtension(\Filehosting\File $file)


Расширение наверно проще получить через pathinfo: http://php.net/manual/ru/function.pathinfo.php

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L103

> public static function validateEditorialForm


> $file->setComment(trim($file->getComment()));


Почему функция с названием validate занимается не своим делом? Обрезать пробелу логичнее на этапе когда заполняются поля объекта.

> https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L124


> public function uploadFile(\Filehosting\File $file, \Filehosting\FilesMapper $files, $filePostData, $token){


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

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L173
вардамп забыл убрать

https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L52

> $app->filesHelper->uploadFile($file, $files, $_FILES, $app->getCookie('token'));


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

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L124

> public function uploadFile(\Filehosting\File $file, \Filehosting\FilesMapper $files, $filePostData, $token){


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

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L140
Функция написана с ошибкой: если файл успещно загрузился, но его размер больше разрешенного, она вернет сообщение "Файл не был загружен".

> https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L51


> if (!$error=$app->filesHelper->validateFileUpload($_FILES, $app->config('maxsize'))) {


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

> https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L54


> $app->redirect("/files/$id");


Генерацию ссылки на страницу файла лучше вынести в отдельный метод.

> 'filesHelper' => $app->filesHelper


Чтобы не передавать filesHelper в каждом обработчике, можно передать его в начале в twig как-нибудь через setData() или appendData: http://docs.slimframework.com/view/data/ - или с твигом это не сработает? В твиге тоже есть метод вроде addGlobal.

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html.twig#L16

> <p class="comment">{{file.getComment()}}</p>


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

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html.twig#L23

> {% if filesHelper.canEdit(token, file) %}


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

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html.twig#L53

> скрипт


Этот скрипт ведь не будет работать, у тебя яваскрипты ниже подключаются, перед концом body?

> https://github.com/MindiMakridi/filehosting/blob/master/models/File.php#L35


> "/\.php|\.html|\.htaccess/


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

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

Также, я придумал еще кое-что для повышения безопасности. Мы ведь отдаем файлы через X-sendFile. Раз так, нам незачем хранить их в публичной папке веб-сервера, можно хранить файл вообще за пределами папки public. Получается небольшое усиление защиты.

И еще, защищена ли форма комментирования файла от CSRF?

Ну в общем, замечания в основном незначительные. Ты будешь дальше доделывать эту задачу, всякие там древовидные комментарии и аякс добавлять?
#1112 #649057
>>649053

>Ты будешь дальше доделывать эту задачу, всякие там древовидные комментарии и аякс добавлять?


Конечно буду. Ну по крайней мере комментарии, насчет аякса не уверен, хотя это не должно быть сложно.
#1113 #649109
>>649018
Да, я он. Вчера зарегистрировался на Гитхабе под ником "Glavred".
Английский мой за последнее время приуныл, сейчас его подтягиваю в Лингвалео.
Спасибо за советы, братишка, добра.
#1114 #649122
Задача про опечатки.
http://ideone.com/qXKUpj
#1115 #649162
>>649122
А для чего там & перед значениями в foreach?
Всё должно работать и без ссылки, тем более, что это никуда не ссылается и там же именно и определяется.
#1116 #649180
>>649162
Убрал.
#1117 #649206
>>648646
Я имел ввиду имено такие, которые совсем ничего плохого не делают. Ну, чисто на донате, например, без всплывающей рекламы, следящих скриптов и прочего кала, обычное GPL дополнение для людей. Есть какая-нибудь статистика по донатам, например?
>>648635
>>648637
Бамп вопросам.
#1118 #649214
>>649180
http://ideone.com/b1S4lJ
ОП говорил, что нужна такая регулярка, которая видит кириллицу в слове из латинских букв и латиницу в слове из кириллических букв.
#1119 #649293
>>649109
без обид, брат, но будь у тебя хоть мало-мальский английский ты бы знал, что лингвалео - для самых начинающих. Самых-самых
#1120 #649311
>>649293

Путь в тысячу ли начинается с шага.

>>649206

Там разная мотивация, может человек для себя делал и ему не жалко поделиться, может компния для себя делала, может еще какие-то причины. Если расширение ничего плохого не делает, то оно ничего не принесет, донат работает только на проектах с огромной аудиторией.
3 февраля - верстка, грамматика #1121 #649313
>>641614

> Хотел таким способом избежать дробления классов, т.к. они отличались только этим параметром, не стоит даже в таком случае так делать?


В таком случае можно либо повесить на элемент 2 класса, либо в CSS перечислить несколько классов через запятую.

> Это не понял, почему так? И шрифтов должно быть несколько?


Потому что нет гарантий что на компьютере установлен указанный тобой шрифт, потому надо указывать запасные варианты и в самом конце стандартный шрифт который гарантированно найдет браузер. Стандартный это один из serif, sans-serif, monospace, cursive и fantasy если я ничего не путаю. http://xiper.net/collect/html-and-css-tricks/typographics/safe-fonts

> С кнопкой мучился полдня


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

>>зачем тут испльзован флоат?


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


Если ты не знаешь то надо сесть и разобраться, чтобы в дальнейшем не спотыкаться на таких вещах. для того чтобы кнопки шли горизонтально, в CSS есть ровно 3 способа (не считая flexbox):

- inline-block
- float
- display: table, сделать таблицу в 1 строку

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

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

Также, твои кнопки плохо вписываются в страницу. Я засунул их в див, окружил текстом, и смотри как нехорошо получилось: https://jsfiddle.net/0Lvxs3yu/1/

Нужно чтобы твой виджет хорошо интегрировался в страницу.

> Насколько критично разбираться в тонкостях КСС? Голова от этого болит.


Голова болит если ты не понимаешь CSS и переставляешь свойства наугад. надо разобраться во всех возможных способов расположения элементов (display, float, position) и представлять как каждый из них себя ведет. То есть тебе надо как раз больше заниматься CSS.

>>641667

> [а-яё]+[.,;?!]*)([a-z]+)


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

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

В функции checkText лучше возвращать не фразу, а true/false, тогда можно исплоьзовать ее так:

if (checkText()) ... else ...

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

Также, в функциях showHighlightedText и correctText есть явная копипаста. Надо бы избавиться от нее, например объединив функции.
3 февраля - верстка, грамматика #1121 #649313
>>641614

> Хотел таким способом избежать дробления классов, т.к. они отличались только этим параметром, не стоит даже в таком случае так делать?


В таком случае можно либо повесить на элемент 2 класса, либо в CSS перечислить несколько классов через запятую.

> Это не понял, почему так? И шрифтов должно быть несколько?


Потому что нет гарантий что на компьютере установлен указанный тобой шрифт, потому надо указывать запасные варианты и в самом конце стандартный шрифт который гарантированно найдет браузер. Стандартный это один из serif, sans-serif, monospace, cursive и fantasy если я ничего не путаю. http://xiper.net/collect/html-and-css-tricks/typographics/safe-fonts

> С кнопкой мучился полдня


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

>>зачем тут испльзован флоат?


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


Если ты не знаешь то надо сесть и разобраться, чтобы в дальнейшем не спотыкаться на таких вещах. для того чтобы кнопки шли горизонтально, в CSS есть ровно 3 способа (не считая flexbox):

- inline-block
- float
- display: table, сделать таблицу в 1 строку

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

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

Также, твои кнопки плохо вписываются в страницу. Я засунул их в див, окружил текстом, и смотри как нехорошо получилось: https://jsfiddle.net/0Lvxs3yu/1/

Нужно чтобы твой виджет хорошо интегрировался в страницу.

> Насколько критично разбираться в тонкостях КСС? Голова от этого болит.


Голова болит если ты не понимаешь CSS и переставляешь свойства наугад. надо разобраться во всех возможных способов расположения элементов (display, float, position) и представлять как каждый из них себя ведет. То есть тебе надо как раз больше заниматься CSS.

>>641667

> [а-яё]+[.,;?!]*)([a-z]+)


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

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

В функции checkText лучше возвращать не фразу, а true/false, тогда можно исплоьзовать ее так:

if (checkText()) ... else ...

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

Также, в функциях showHighlightedText и correctText есть явная копипаста. Надо бы избавиться от нее, например объединив функции.
3 февраля - нгинксы, зависимости #1122 #649314
>>641834

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

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

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

Есть 2 популярных варианта использования нгинкса:

- как реверс-прокси: ставится нгинкс, за ним Апач + PHP. Нгинкс раздает статику и проксирует запросы от Апача.
- как основной веб-сервер, за ним ставится PHP без Апача (php-fpm). Недостаток в том что многие CMS требуют поддержки htaccess и каких-то апачевских модулей.

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

Почитай статьи тут для начала: http://ruhighload.com/server

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

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

С помощью библиотек вроде ReactPHP программу на PHP можно тоже запускать в таком режиме.

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


Да, разные порты.

>>641843

> У меня есть еще такие зависимости как $pdo, $studentgtw и $student (не уверен что это зависимость). Для них тоже нужно делать контейнеры, но тут мне не очень понятно с этим


Student это не зависимость. Зависимости - это классы-сервисы которые есть только в одном экземпляре. PDO и гейтвей это зависимость, да.

> Мне кажется что вот так писать pdo будет не правильно:


Почему?

>>641935

В общем, ты правильно все понимаешь.

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


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

> 5. Совместное использование. Тут я плохо понял, что значит "размещение Nginx перед Apache в качестве реверс-прокси". Типа nginx будет отдавать статику, но как только увидит запрос к динамическому контенту, отдаст управление апачу?


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

>>641941

> Ни разу не видел чтобы такие велосипеды строили. Для динамического контента на php лучше к nginx ставить php-fpm.


Сплошь и рядом такое.
3 февраля - нгинксы, зависимости #1122 #649314
>>641834

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

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

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

Есть 2 популярных варианта использования нгинкса:

- как реверс-прокси: ставится нгинкс, за ним Апач + PHP. Нгинкс раздает статику и проксирует запросы от Апача.
- как основной веб-сервер, за ним ставится PHP без Апача (php-fpm). Недостаток в том что многие CMS требуют поддержки htaccess и каких-то апачевских модулей.

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

Почитай статьи тут для начала: http://ruhighload.com/server

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

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

С помощью библиотек вроде ReactPHP программу на PHP можно тоже запускать в таком режиме.

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


Да, разные порты.

>>641843

> У меня есть еще такие зависимости как $pdo, $studentgtw и $student (не уверен что это зависимость). Для них тоже нужно делать контейнеры, но тут мне не очень понятно с этим


Student это не зависимость. Зависимости - это классы-сервисы которые есть только в одном экземпляре. PDO и гейтвей это зависимость, да.

> Мне кажется что вот так писать pdo будет не правильно:


Почему?

>>641935

В общем, ты правильно все понимаешь.

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


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

> 5. Совместное использование. Тут я плохо понял, что значит "размещение Nginx перед Apache в качестве реверс-прокси". Типа nginx будет отдавать статику, но как только увидит запрос к динамическому контенту, отдаст управление апачу?


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

>>641941

> Ни разу не видел чтобы такие велосипеды строили. Для динамического контента на php лучше к nginx ставить php-fpm.


Сплошь и рядом такое.
ответы 3-7 февраля #1123 #649317
>>642057

> "\\b"+klass+"\\b"


\\b сработает если в имени класса есть минус - он считается за не-букву. Пример: https://jsfiddle.net/mqdkab0q/1/

> "i"


А имена классов разве регистронезависимы? http://stackoverflow.com/questions/12533926/are-class-names-in-css-selectors-case-sensitive

> node.className = node.className.replace(regExp, "");


Хорошо бы еще пробелы с краев строки убирать оставшиеся.

Ну и если тебя интересуют оптимизированные версии этих функций, смотри исходники jQuery: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js

>>642083

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

В остальном логика верная.

>>642108

Не знаю

>>642118

Да, сплошная копипаста. Надо выделять повторяющиеся куски в функции.

>>642176

Есть PSR, мнение Васянов не очень интересно.

>>642311

Можно и через while, просто в учебнике его пока не изучили.
ответы 3-7 февраля #1123 #649317
>>642057

> "\\b"+klass+"\\b"


\\b сработает если в имени класса есть минус - он считается за не-букву. Пример: https://jsfiddle.net/mqdkab0q/1/

> "i"


А имена классов разве регистронезависимы? http://stackoverflow.com/questions/12533926/are-class-names-in-css-selectors-case-sensitive

> node.className = node.className.replace(regExp, "");


Хорошо бы еще пробелы с краев строки убирать оставшиеся.

Ну и если тебя интересуют оптимизированные версии этих функций, смотри исходники jQuery: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js

>>642083

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

В остальном логика верная.

>>642108

Не знаю

>>642118

Да, сплошная копипаста. Надо выделять повторяющиеся куски в функции.

>>642176

Есть PSR, мнение Васянов не очень интересно.

>>642311

Можно и через while, просто в учебнике его пока не изучили.
ответы 3-7 февраля, верстка и другое #1124 #649318
>>642411

> opacity: 0.7;


Лучше сделать прозрачным только фон, а не все включая текст.

> figcaption{


> width: 330px;


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

Цвет линии подчеркивания неправильный - там бледно-оранжевый.

> position: absolute;


> right: 530px;


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

> font-family: 'Times New Roman';


Последним в списке должен идти стандартный шрифт

>>642511

Да. Это просто твой мозг пытается найти зависимости в случайнх числах.

>>642517

Задача про айфон - все верно.

Задача про миллион:

> while($deposit <= 1000000) {


Если на счету миллион - надо ждать дальше? По моему, не надо.

Также, тут можно было бы сделать цикл for, переместив $numYears++ в шапку цикла.

> Некто не доживет до дня когда станет миллионером. Его возраст составил бы 95 лет.


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

>>642574

Нормально, сойдет.

>>642783

array_sum суммирует числа в массиве. Посчитать число символов в строке можно mb_strlen, число байт через strlen (это не то же самое что и число символов!)

> как тут найти вес предложения?


Что такое вес?

>>642784

ортогонально

>>642802

Каждый месяц от суммы текущего долга.

>>642843

У тебя при нажатии кнопки не отжимается предыдущая в Хроме.

> input[type="radio"]{


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

> border-collapse: collapse;


Это еще что? Оно же только к таблицам применимо.

> font-family: Arial;


В конце списка нужен стандартнй шрифт

> .buttons i:hover{


> cursor: pointer;


cursor логично ставить независимо от hover

Еще, у тебя не задан display для label - хорошо ли это?

> input:checked + i:hover{


Тут то же самое что и в input:checked + i

Также, прочитай комментарии к заданию и попробуй сделать клавиатурную навигацию.
ответы 3-7 февраля, верстка и другое #1124 #649318
>>642411

> opacity: 0.7;


Лучше сделать прозрачным только фон, а не все включая текст.

> figcaption{


> width: 330px;


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

Цвет линии подчеркивания неправильный - там бледно-оранжевый.

> position: absolute;


> right: 530px;


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

> font-family: 'Times New Roman';


Последним в списке должен идти стандартный шрифт

>>642511

Да. Это просто твой мозг пытается найти зависимости в случайнх числах.

>>642517

Задача про айфон - все верно.

Задача про миллион:

> while($deposit <= 1000000) {


Если на счету миллион - надо ждать дальше? По моему, не надо.

Также, тут можно было бы сделать цикл for, переместив $numYears++ в шапку цикла.

> Некто не доживет до дня когда станет миллионером. Его возраст составил бы 95 лет.


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

>>642574

Нормально, сойдет.

>>642783

array_sum суммирует числа в массиве. Посчитать число символов в строке можно mb_strlen, число байт через strlen (это не то же самое что и число символов!)

> как тут найти вес предложения?


Что такое вес?

>>642784

ортогонально

>>642802

Каждый месяц от суммы текущего долга.

>>642843

У тебя при нажатии кнопки не отжимается предыдущая в Хроме.

> input[type="radio"]{


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

> border-collapse: collapse;


Это еще что? Оно же только к таблицам применимо.

> font-family: Arial;


В конце списка нужен стандартнй шрифт

> .buttons i:hover{


> cursor: pointer;


cursor логично ставить независимо от hover

Еще, у тебя не задан display для label - хорошо ли это?

> input:checked + i:hover{


Тут то же самое что и в input:checked + i

Также, прочитай комментарии к заданию и попробуй сделать клавиатурную навигацию.
ответы 3-7 февраля, яваскрипт #1125 #649320
>>642874

> self = this;


Где var?

Если ты исплоьзуешь new, то лучше испльзовать прототипы, так как у тебя получилась огромная функция-конструктор. Либо не использовать new, а вызывать ее как обычную функцию.

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

> tbody.innerHTML+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td> </td><td></td></tr>";


Это неэффективно. += сначала обходит дерево, генерирует HTMl, а затем из строки строит новое дерево DOM и заменяет старое. Надо готовить HTMl код в отдельной переменной, либо использовать методы DOM. Также, строку из кучи td лучше заменить на цикл.

> leftClick


Названия функций начинаются с глагола

> table.onclick = function(event){


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

> table.oncontextmenu = function(event){


Не то событие. Это вызов контекстного меню, а тебе нужно mouseup/mousedown.

Также, поставленный флажок нельзя снять.

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

> var firstClicked = ""+x+y;


Тут явно ошибка, что если числа двухзначные? Или одно двухзначное, а другое нет?

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

> if(bombs[concatenated] || concatenated==firstClicked ){


> i--;


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

> ""+x+y


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

> target.className = "flagged";


Плохо, можно затереть другие классы.

Ты хранишь список бомб в массиве, а список открытых клеток берешь в DOM. Не логичнее ли его тоже в массиве хранить? Также, вещи вроде "есть ли бомба в клетке x, y" надо выносить в функции а не копипастить по всему коду.

> var maxX = table.rows[0].cells.length;


Должна быть переменная с размером поля

> function getNeighbours(x,y){


Здесь вместо ифов надо использовать циклы.

> var pop = modal.querySelector('.popup-body');


> pop.firstChild.data = text;


Подставлять данные удобнее через html.replace('{{x}}', x). У тебя если поменять шаблон, этот код перестанет работать.

> pop.firstElementChild.onclick


Это легко сломать. Нужно указать конкретный класс для кнопки.

> self = new MineField(options);


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

> var openedCells = table.querySelectorAll(".opened").length;


Лучше бы считать число открытых клеток в массиве.

>>643123

Тебе ответил где-то выше.

>>643227

решено верно

>>643278

Можно перекрасить, сделав саму футболку прозрачной и положив под ней фон нужного цвета.
ответы 3-7 февраля, яваскрипт #1125 #649320
>>642874

> self = this;


Где var?

Если ты исплоьзуешь new, то лучше испльзовать прототипы, так как у тебя получилась огромная функция-конструктор. Либо не использовать new, а вызывать ее как обычную функцию.

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

> tbody.innerHTML+="<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td> </td><td></td></tr>";


Это неэффективно. += сначала обходит дерево, генерирует HTMl, а затем из строки строит новое дерево DOM и заменяет старое. Надо готовить HTMl код в отдельной переменной, либо использовать методы DOM. Также, строку из кучи td лучше заменить на цикл.

> leftClick


Названия функций начинаются с глагола

> table.onclick = function(event){


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

> table.oncontextmenu = function(event){


Не то событие. Это вызов контекстного меню, а тебе нужно mouseup/mousedown.

Также, поставленный флажок нельзя снять.

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

> var firstClicked = ""+x+y;


Тут явно ошибка, что если числа двухзначные? Или одно двухзначное, а другое нет?

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

> if(bombs[concatenated] || concatenated==firstClicked ){


> i--;


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

> ""+x+y


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

> target.className = "flagged";


Плохо, можно затереть другие классы.

Ты хранишь список бомб в массиве, а список открытых клеток берешь в DOM. Не логичнее ли его тоже в массиве хранить? Также, вещи вроде "есть ли бомба в клетке x, y" надо выносить в функции а не копипастить по всему коду.

> var maxX = table.rows[0].cells.length;


Должна быть переменная с размером поля

> function getNeighbours(x,y){


Здесь вместо ифов надо использовать циклы.

> var pop = modal.querySelector('.popup-body');


> pop.firstChild.data = text;


Подставлять данные удобнее через html.replace('{{x}}', x). У тебя если поменять шаблон, этот код перестанет работать.

> pop.firstElementChild.onclick


Это легко сломать. Нужно указать конкретный класс для кнопки.

> self = new MineField(options);


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

> var openedCells = table.querySelectorAll(".opened").length;


Лучше бы считать число открытых клеток в массиве.

>>643123

Тебе ответил где-то выше.

>>643227

решено верно

>>643278

Можно перекрасить, сделав саму футболку прозрачной и положив под ней фон нужного цвета.
Ответы 4-7 февраля числа прописью, грамматика #1126 #649321
>>643283

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

>>643354

Ну попробуй настрой еще что-нибудь. Нгинкс например настрой и сравни его производительсность с апачом утилитой apache benchmark. SSL тоже хорошая задача.

>>643390

Лучше в /b вбросить, народу больше там.

>>644027

Берется значение из массива по индексу.

>>644366

> числа прописью



> 'рублей' => array(0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900)


Для определения формы слова достаточно проверить последнюю и предпосление цифры, хватит 3 ифов.

> foreach ($spelling as $numbers => $numbersInWords) {


> if ($num == $numbers) {


Значение в массиве по ключу можно найти через $a[$b]

> foreach ($numerals as $array => $numeral) {


> if ($num == $numeral) {


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

> function smallNumberToText($num, $number, $spelling, $roubles, $femaleSpelling) {


Смотрю на эту строку - непонятно чем num отличается от number.

> $count = mb_strlen($text);


> if ($count == 3) {


Не, с числами не надо работать как со строкой, лучше делать проверки вроде $x < 1000

В функции smallNumberToText повторяющиеся блоки надо вынести в функцию. Пока там много копипасты. То же касается numberToText.

Вообще, этот код можно сделать короме, примерно так:

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

записать прописью маленькое число можно так:

- если есть сотни, берем слово для сотен
- если оканчивается на 11-19, добавляем соответствующее слово
- иначе добавляем слово для десятков и единиц, если они есть

Это 3-4 ифа.

> $femaleSpelling и $menSpelling - в основной функции, переводящей тройки чисел в текст, постоянно числа 1 и 2 переводятся по массиву $femaleSpelling в "одна" и "две", а дальше в конкретную функцию для перевода конкретного числа в слова я просто подставляю в нужных местах $menSpelling - функция переводит "один" и "два" опять же в нужные "один" и "два".


Не вижу тут проблемы

> 2. Формы слов "рубль", "тысяча" и "миллион" подбираются именно с помощью массивов и цикла foreach, а не с помощью условий, как советовал ОП.


Короче и универсальнее ифами.

> Либо и функций для этого тоже делать несколько.


Одну универсальную.

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

>>644531

> [а-я]


ё надо указывать отдельно, она в юникоде идет отдельно от алфавита

> [а-я]+\\sа\\s


Что если после "а" не пробел, а запятая? И где проверка на союз "но"?

> for ($i = 1; $i < 5; $i++) {


Как-то нехорошо что цифра 5 не вычисляется автоматически.

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

> $m[$i] = array_diff($m[$i], array(null));


Это не нужно, ты просто неправильно понял структуру массива. Ну и удалять пустые элементы удобнее через $x = array_filter($x);
Ответы 4-7 февраля числа прописью, грамматика #1126 #649321
>>643283

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

>>643354

Ну попробуй настрой еще что-нибудь. Нгинкс например настрой и сравни его производительсность с апачом утилитой apache benchmark. SSL тоже хорошая задача.

>>643390

Лучше в /b вбросить, народу больше там.

>>644027

Берется значение из массива по индексу.

>>644366

> числа прописью



> 'рублей' => array(0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900)


Для определения формы слова достаточно проверить последнюю и предпосление цифры, хватит 3 ифов.

> foreach ($spelling as $numbers => $numbersInWords) {


> if ($num == $numbers) {


Значение в массиве по ключу можно найти через $a[$b]

> foreach ($numerals as $array => $numeral) {


> if ($num == $numeral) {


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

> function smallNumberToText($num, $number, $spelling, $roubles, $femaleSpelling) {


Смотрю на эту строку - непонятно чем num отличается от number.

> $count = mb_strlen($text);


> if ($count == 3) {


Не, с числами не надо работать как со строкой, лучше делать проверки вроде $x < 1000

В функции smallNumberToText повторяющиеся блоки надо вынести в функцию. Пока там много копипасты. То же касается numberToText.

Вообще, этот код можно сделать короме, примерно так:

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

записать прописью маленькое число можно так:

- если есть сотни, берем слово для сотен
- если оканчивается на 11-19, добавляем соответствующее слово
- иначе добавляем слово для десятков и единиц, если они есть

Это 3-4 ифа.

> $femaleSpelling и $menSpelling - в основной функции, переводящей тройки чисел в текст, постоянно числа 1 и 2 переводятся по массиву $femaleSpelling в "одна" и "две", а дальше в конкретную функцию для перевода конкретного числа в слова я просто подставляю в нужных местах $menSpelling - функция переводит "один" и "два" опять же в нужные "один" и "два".


Не вижу тут проблемы

> 2. Формы слов "рубль", "тысяча" и "миллион" подбираются именно с помощью массивов и цикла foreach, а не с помощью условий, как советовал ОП.


Короче и универсальнее ифами.

> Либо и функций для этого тоже делать несколько.


Одну универсальную.

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

>>644531

> [а-я]


ё надо указывать отдельно, она в юникоде идет отдельно от алфавита

> [а-я]+\\sа\\s


Что если после "а" не пробел, а запятая? И где проверка на союз "но"?

> for ($i = 1; $i < 5; $i++) {


Как-то нехорошо что цифра 5 не вычисляется автоматически.

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

> $m[$i] = array_diff($m[$i], array(null));


Это не нужно, ты просто неправильно понял структуру массива. Ну и удалять пустые элементы удобнее через $x = array_filter($x);
Ответы 6-7 февраля, ООО Вектор #1127 #649322
>>644831

> $this->setSalary($this->salary);


Ты используешь одно поле (salary) для хранения 2 разных вещей: базовой ставки и итоговой зарплаты. Это разные сущности. В твоем коде если поменять ранг работника (setRank), или назначить его боссом (setIsHead), зарплата не поменяется. это неправильно, и проще всего решить это проблему тем что не хранить зарплату вообще, а вычислять методом. Методы объекта всегда должны возвращать точные и актуальные данные, у тебя это не так.

> default:


> $this->salary = "Ошибка";


Это непраильно. Если так делать, то ошибку никто не заметит. Надо выбрасывать исключение, урок https://gist.github.com/codedokode/65d43ca5ac95c762bc1a

> for ($i = 0; $i < $spacesCount; $i++) {


> $string .= " ";


Есть str_repeat

> outputString($str1, $str2, $str3, $str4, $str5, $str6) {


В таких случаях надо использовать массив

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

Также, держи дополнительное задание для проверки гибкости твоего кода:

### Антикризисные меры

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

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

1. Сократить в каждом департаменте 40% (округляя в большую сторону) инженеров, преимущественно самого низкого ранга. Если инженер является боссом, вместо него надо уволить другого инженера, не босса.

2. Увеличить в целях стимуляции умственной деятельности базовую ставку аналитика с 800 до 1100 тугриков, а количество выпиваемого им кофе с 50 до 75 литров. В тех департаментах, где руководитель не является аналитиком, заменить его на аналитика самого высшего ранга из этого департамента (а бывшего руководителя вернуть к обычной работе)

3. В каждом департаменте повысить 50% (округляя в большую сторону) менеджеров 1-го и 2-го ранга на один ранг с целью расширить их полномочия.

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

>>645128

Надо смотреть что отправляется и что приходит в ответ.

>>645620

Не жди ОПа, решай дальше
Ответы 6-7 февраля, ООО Вектор #1127 #649322
>>644831

> $this->setSalary($this->salary);


Ты используешь одно поле (salary) для хранения 2 разных вещей: базовой ставки и итоговой зарплаты. Это разные сущности. В твоем коде если поменять ранг работника (setRank), или назначить его боссом (setIsHead), зарплата не поменяется. это неправильно, и проще всего решить это проблему тем что не хранить зарплату вообще, а вычислять методом. Методы объекта всегда должны возвращать точные и актуальные данные, у тебя это не так.

> default:


> $this->salary = "Ошибка";


Это непраильно. Если так делать, то ошибку никто не заметит. Надо выбрасывать исключение, урок https://gist.github.com/codedokode/65d43ca5ac95c762bc1a

> for ($i = 0; $i < $spacesCount; $i++) {


> $string .= " ";


Есть str_repeat

> outputString($str1, $str2, $str3, $str4, $str5, $str6) {


В таких случаях надо использовать массив

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

Также, держи дополнительное задание для проверки гибкости твоего кода:

### Антикризисные меры

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

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

1. Сократить в каждом департаменте 40% (округляя в большую сторону) инженеров, преимущественно самого низкого ранга. Если инженер является боссом, вместо него надо уволить другого инженера, не босса.

2. Увеличить в целях стимуляции умственной деятельности базовую ставку аналитика с 800 до 1100 тугриков, а количество выпиваемого им кофе с 50 до 75 литров. В тех департаментах, где руководитель не является аналитиком, заменить его на аналитика самого высшего ранга из этого департамента (а бывшего руководителя вернуть к обычной работе)

3. В каждом департаменте повысить 50% (округляя в большую сторону) менеджеров 1-го и 2-го ранга на один ранг с целью расширить их полномочия.

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

>>645128

Надо смотреть что отправляется и что приходит в ответ.

>>645620

Не жди ОПа, решай дальше
ответы 6-7 февраля #1128 #649323
>>645706

Что-то не открыается, напомните мне перепроверить позже.

>>646125

В линуксе по другому права выставляются.

>>646169

Лучше бы иметь защиту от зацикливания

>>646245

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

> калькулятор


> elseif ($op == "") {


> $result = $result $number;


> } elseif ($op == "+") {


> $result = $result + $number;


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

В остальном неплохо. Но с копипастой надо бороться.

>>646508

Если ты хочешь добавлять ее на чужие сайты, то надо делать через JS, чтобы человек просто добавил 1 строчку на сайт, она загружала твой скрипт и выводила форму. Если у тебя есть доступ к исходникам сайта, можно сделать и отдельным модулем/классами которые как-то в сайт встраиваются, но тут ведь для каждой CMS и фрйемворка будет свой вариант нужен.

> Как например в Апи яндекс.деньгах и других подобных сервисах.


А ты почитай их документацию по подключению и посмотри как у них сделано.
ответы 6-7 февраля #1128 #649323
>>645706

Что-то не открыается, напомните мне перепроверить позже.

>>646125

В линуксе по другому права выставляются.

>>646169

Лучше бы иметь защиту от зацикливания

>>646245

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

> калькулятор


> elseif ($op == "") {


> $result = $result $number;


> } elseif ($op == "+") {


> $result = $result + $number;


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

В остальном неплохо. Но с копипастой надо бороться.

>>646508

Если ты хочешь добавлять ее на чужие сайты, то надо делать через JS, чтобы человек просто добавил 1 строчку на сайт, она загружала твой скрипт и выводила форму. Если у тебя есть доступ к исходникам сайта, можно сделать и отдельным модулем/классами которые как-то в сайт встраиваются, но тут ведь для каждой CMS и фрйемворка будет свой вариант нужен.

> Как например в Апи яндекс.деньгах и других подобных сервисах.


А ты почитай их документацию по подключению и посмотри как у них сделано.
#1129 #649326
>>649293
Там есть разные уровни же. Я сейчас на pre-intermediate, чтобы всё освежить в памяти.
Кроме как потыкать в мобильный в свободное время - нет возможности что-то ещё делать. Я на изучение РНР целых два часа трачу в сутки.
У Лингвалео есть неплохое расширение для браузеров, вот им тоже пользуюсь, добавляю незнакомые слова для повторения.
Хочу с английскими субтитрами начать смотреть фильмы, что ли, хотя бы - чтобы как-то отдыхать и обучаться, иначе я тронусь.
22 Кб, 640x520
14 Кб, 645x287
#1130 #649336
Пытаюсь в задачу на лайки. Джойны двух таблиц по отдельности понятны, но вот два джойна одной и той же таблицы выдает не совсем правильные результаты.
#1131 #649350
>>649336

COUNT(колонка) считает число строк в одной группе, где колонка не равна NULL. Потому там получается либо 0 либо одинаковые числа.

Попробуй убрать во втором запросе COUNT и группировку, добавь вывод from/to из таблицы лайков и посмотри что выбирается. Там будут для каждого пользователя все возможные сочетания лайков. Ну то есть если A поставил лайк B и C, а получил от D, E, F то там будет 6 строк:

B D
B E
B F
C D
C E
C F

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

Вот выше была подсказка: >>644037

> Лайк это объект? Естественно, значит делаем под него тоже таблицу.


Правильнее сказать что лайк это связь многие-ко-многим между пользователями.
#1132 #649357
>>645706

О, загрузилось! У тебя вот тут нехорошо сделано:

> GROUP BY users.name


Что если имена не уникальны? Надо группировать по первичному ключу тут.

> name TEXT


Лучше варчар с ограничением длины.

> CREATE TABLE likes (


Здесь нужно первичный ключ (добавлять новые колонки не надо)

Также, нужно сделать внешние ключи, читай пост http://denis.in.ua/foreign-keys-in-mysql.htm
#1133 #649359
Аноны, перекатывайтесь в новый тред: >>649329 (OP)

Все посты до 7 февраля я проверил и тут всем ответил. Остальные я проверю позже и напишу тут ответы.

Переходите в новый тред. не пишите здесь больше. Но заходите посмотреть ответы, если вы запостили код после 7 февраля.
#1134 #649441
>>648967

А ты скинь код в тред - мы проверим.

Ну или можешь как-нибудь в екселе посчитать. У меня все равно под рукой ответов нет.
#1135 #649605
>>649326
анки, бро.
#1136 #649760
ОП, ты по этой теме вышку получал или нет?
Можешь посоветовать каких-нибудь тем веб-проектов в качестве дипломной работы бакалавра?
Если бы сейчас сам начинал учить, пошел бы в PHP или в питон/ноду, скажем? Думаю, туда ли направил стопы.
И еще, скажи пожалуйста: аддоны для браузеров пишутся на яваскрипте безальтернативно, да? И вообще, меня ужасно бесит внешне этот язык, я совсем его хуево понимаю со всеми этими бесконечными цепочками анонимных функций и прочим. Есть какой-то может простой способ вкатиться и на каком его уровне необходимо знать - хеллоуворлда, надо понимать, недостаточно?
Ответы 7-8 января #1137 #652214
>>646599

Слишком много кода для такой задачи. Также, там есть повторы, вот это выражение $creditBalance = ( $creditBalance * $percent ) + $servicePayment повторяется 2 раза и надо бы обойтись без этого.

Название функции должно начинаться с глагола, например calculateCredit()

>>646653

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

>>646773

Урок про работу с utf-8 строками: https://gist.github.com/codedokode/ff99e357e9860ea169b8

>>646814

Теперь все решено верно.

>>646931

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

>>647128

Можно через array_rand(), можно для первых 2 строк использовать цикл, но в общем это верное решение.
#1138 #652216
>>647271

программа требует доработки, вот паста:

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

Задачу про номера телефонов надо проверить на большом числе телефонов, чтобы убедиться что твой код правильный. Но руками подставлять номера — долго и скучно. Пусть работает робот, а не человек!

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

Вот список номеров:

Правильные: array('84951234567', '+74951234567', '8-495-1-234-567', ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67', '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567', '8 ( 999 ) 1234567', '8 999 123 4567');

Неправильные: array('02', '84951234567 позвать люсю', '849512345', '849512345678',
'8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
'84951a234567', '8495123456a',
'+1 234 5678901', // неверный код страны
'+8 234 5678901', // либо 8 либо +7
'7 234 5678901' // нет +
);

Также, есть такой сайт: https://regex101.com/r/qF7vT8/3 - там уже вбиты номера и на нем можно простестировать свою регулярку и проверить что она соответствует правильным и не соответствует неправильным номерам. Помни что на этом сайте надо писать бекслеш один раз, например \s, а не \\s. Флаг m там стоит чтобы ^ и $ в регулярке обозначали «начало и конец любой строки», а не «начало и конец всего текста». Флаг g (его нет в PHP, он только на этом сайте) значит что надо искать все совпадения с регуляркой, а не только первое.
#1139 #652219
>>647414

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

>>647460

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


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

>>647757

http://integer64.github.io/site-layout/exercise/mainTask/index.html

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

https://www.browserstack.com/screenshots/259cbc8563d6d1287b197b96e2f92a8ecaffb5b1
В ИЕ10 синяя рамка вокруг логотипа - так ИЕ подсвечивает ссылки-картинки, отменить это можно через правило a img { ... }

Иконки в блоке Consectetur слишком близко к заголовку и сделано на мой взгляд неудачно. Правильнее было бы так: добавить блоку <div class="service-block"> паддинг сверху под иконку, pos: rel, добавить ему псевдоэлемент и абсолютно отпозиционировать его по центру (left 50% + отриц. маргин). Тогда у нас иконка будет показываться независимо от заголовка. Да и логичнее по моему что иконка принадлежит блоку, а не заголовку.

В адресе, я думаю, ты переборщил с неразрывными пробелами. Их можно ставить например между словами "No: 14/05", но не надо ставить их везде - например после слов Moonshine Street вполне можно разрывать строку. Убери лишнее.

В остальном хорошо.
#1140 #652221
>>647699
>>647725
>>647787

Ты допустил серьезную ошибку. Ты забыл флаг u который говорит что строка в кодировке utf-8 и надо поддерживать буквы, закодированные несколькими, а не одним байтом. Далее паста

--------

### Флаг u

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

Если нужны подробности, то суть в том что в utf-8 русские буквы состоят из 2 идущих подряд байт, а движок регулярок по умолчанию думает что 1 байт = 1 символ и он воспринимает русскую букву как 2 независимых символа.

То есть ты пишешь аб (это кодируется байтами D0 B0 D0 B1), а движок регулярок видит 4 отдельных символа c кодами D0, B0, D0, B1. Так как в тексте «аб» кодируется так же, то это сработает. Но не сработает например если в тексте идет АБ так как оно кодируется как D0 90 D0 91.

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

D0 B0 ?

То есть он видит «идет символ с кодом D0, за ним может быть или не может быть символ B0». В utf-8 не бывает просто байта с кодом D0, за ним всегда что-то идет, и это выражение сработает только если в тексте есть буква a с кодом D0 B0. Очевидно что тут будет ошибка и выражение «a?» будет интерпретироваться как «a», то есть знак вопроса не сработает.

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

Коды я взял тут: http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024&number=512

Потому всегда ставь флаг u.
#1140 #652221
>>647699
>>647725
>>647787

Ты допустил серьезную ошибку. Ты забыл флаг u который говорит что строка в кодировке utf-8 и надо поддерживать буквы, закодированные несколькими, а не одним байтом. Далее паста

--------

### Флаг u

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

Если нужны подробности, то суть в том что в utf-8 русские буквы состоят из 2 идущих подряд байт, а движок регулярок по умолчанию думает что 1 байт = 1 символ и он воспринимает русскую букву как 2 независимых символа.

То есть ты пишешь аб (это кодируется байтами D0 B0 D0 B1), а движок регулярок видит 4 отдельных символа c кодами D0, B0, D0, B1. Так как в тексте «аб» кодируется так же, то это сработает. Но не сработает например если в тексте идет АБ так как оно кодируется как D0 90 D0 91.

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

D0 B0 ?

То есть он видит «идет символ с кодом D0, за ним может быть или не может быть символ B0». В utf-8 не бывает просто байта с кодом D0, за ним всегда что-то идет, и это выражение сработает только если в тексте есть буква a с кодом D0 B0. Очевидно что тут будет ошибка и выражение «a?» будет интерпретироваться как «a», то есть знак вопроса не сработает.

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

Коды я взял тут: http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024&number=512

Потому всегда ставь флаг u.
#1141 #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

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

Обговаривать стоимость и условия оплаты работы (по часам, по дням, за все) надо до ее выполнения.
#1141 #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

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

Обговаривать стоимость и условия оплаты работы (по часам, по дням, за все) надо до ее выполнения.
#1142 #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 - русские.
#1142 #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 - русские.
#1143 #652227
Ну все, я всех проверил, всем дал ответы. Если вас забыли или пропустили - напомните о себе в новом треде >>649329 (OP)

Этот тред закрыт окончательно.
Тред утонул или удален.
Это копия, сохраненная 14 февраля 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски