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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Прочти внимательно Аноним 2016/02/24 07:42:56  №664785 2
14562889761890.png (56, 500x644)
644x500
14562889761901.jpg (435, 600x900)
900x600
14562889761992.jpg (93, 561x800)
800x561
Код тут нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.

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

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

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
Аноним 2016/02/24 07:46:07  №664787 3
В прошлом треде >>649329 (OP) я все поверил, всем дал ответы. Зайдите и поищите ответы в конце треда. Если я вас пропустил или не ответил - напишите тут.

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

По поводу https://github.com/foobar1643/student-list - ты еще переделваешь код или все уже исправил?


Аноним 2016/02/24 08:15:47  №664799 4
>>664704
Всё, разобрался. Спасибо
Аноним 2016/02/24 09:14:21  №664825 5
Но при чем тут Сендзёгахара?
Аноним 2016/02/24 09:42:42  №664839 6
>>662476
Благодарю за ответ.

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

> используй абсолютные (идущие от корня диска), например с использованием константы __DIR__
Типа такого: require_once(__DIR__ . '../src/init.php') ?

> По моему тут может быть ситуация когда переменная не определена. Как можно писать надежный код если неизвестно существует переменная или нет?
Поясни, пожалуйста. isset($_GET['registered']) недостаточно?

> А почему так много статических методов?
У меня в хелперах нет полей, так что не увидел резона делать нестатические методы. В UrlHelper есть смысл параметры ($sort, $dir и прочее) сделать членами класса и передавать в конструктор? Видимо да, т.к. это улучшит читаемость кода вьюхи А в TokenHelper - $token?

> Однако тогда надо обеспечить инкапусуляцию, то есть чтобы никто другой напрямую к этой куке не обращался.
Не очень понял, как это можно сделать.
Что-то типа такого:
$myCookie = $_COOKIE;
unset($_COOKIE);
// используем функции хелперов, которые работают с $myCookie
$_COOKIE = $myCookie;

>> public static function fromRow($row)
> Маппингом студента на строчку базы данных должен заниматься класс для работы с базой данных.
Но это же по сути конструктор. В языке с перегрузкой методов, я бы их и использовал, а тут приходится так извращаться.

>> $characters[rand(0, $charactersLength - 1)];
> Квадратные скобки не будут работать если мы добавим нелатинские символы, например кириллицу.
Я понимаю, но зачем нам здесь поддержка кириллицы?
JS Integer64 2016/02/24 09:48:03  №664843 7
Аноним 2016/02/24 09:51:59  №664847 8
>>664839
>$myCookie = $_COOKIE;
>unset($_COOKIE);
>// используем функции хелперов, которые работают с $myCookie
>$_COOKIE = $myCookie;
Что-то я фигню написал.
Аноним 2016/02/24 10:01:22  №664854 9
JS Integer64 2016/02/24 10:12:44  №664858 10
Аноним 2016/02/24 10:27:23  №664870 11
Аноним 2016/02/24 10:58:27  №664890 12
Серьезный вопрос к ОПу или крутым версталам. Есть ли какая-то продуманная стратегия назначения всех размеров? Особенно в ем-ах. Ну например я читал про одну идею назначить html {font-size:10px;} а уже от него брать все производные в ем, например
h1 {font-size:2em;} // получится 20рх
h2 {font-size:1.6em;} // 16рх и т. д.
Правда геморрой в том что размер шрифта наследуется и на третьем-четвертом уровне вложенности будет далеко не так наглядно все вычислять, но там можно и rem применить.
А вот как быть с размерами блоков, отступов, паддингов? Смутно себе представляю как вычислить размер паддинга в процентах или ем.
Сейчас буквально везде вижу в тестовых заданиях mobile-first или 'все должно быть адаптивно'.
Аноним 2016/02/24 11:12:25  №664896 13
>>664890

Исходя из логики. Если ты делаешь элемент, высота которого зависит от размера шрифта - используй em, если от пикселей - то пиксели.

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

Паддинг на кнопке может зависеть от шрифта на ней.

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

Много лет назад процентные размеры шрифта имели смысл, так как в ИЕ6 при увеличении масштаба менялся размер шрифта на body или html, и если размер бы указывался в пикселях, то текст не увеличивался. Но это было очень давно, у современных браузеров такой проблемы нет (но верстальщики придумали верстать в процентах от размера окна и функция масштабирования снова сломалась).

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

> можно и rem применить.
Я плохо представляю когда нужен rem . Наверно для страниц где можно менять размер шрифта программно? Все равно не очень понимаю.

> Сейчас буквально везде вижу в тестовых заданиях mobile-first или 'все должно быть адаптивно'.
Это тут вообще не при чем.

Аноним 2016/02/24 15:43:50  №665126 14
14563178306540.png (27, 891x832)
832x891
Оп написал, что в список студентов не тащить кучу плагинов бутстрапа. Тот, кто делал список студентов с версткой на бутстрапе или сам Оп, подскажите, что не нести в проект? Очевидно все что с яваскриптом, верно?
http://bootstrap-3.ru/customize.php
Аноним 2016/02/24 16:14:04  №665163 15
Хочу хранить уникальные объекты в коллекции. Для этого есть паттерн?
Аноним 2016/02/24 16:46:59  №665184 16
14563216200180.png (32, 449x416)
416x449
Sup php'ач. Последнее время нужда заставила установить Xdebug 3 часа ебли с настройками (сперва по сетке на Ubuntu + phpstorm, потом переехал на локальную машину Openserver+ PHPstorm). Так вот, в ПХПсторме в консоли Debugger'а пишет: Waiting for incoming connection with IDE key "PHPSTORM". В инете единственное что пишут - что в пхп ини то же самое должно быть и у меня сейчас там: xdebug.idekey = "PHPSTORM"
, пробовал уже разные комбинации, и другие слова-цифры, и без кавычек в пхп.ини . В общем тест выдает что всё ок (пикрелейтед), но входящих коннектов в phpstorm нету и соответственно на брейкпоинтах не происходят остановки
Аноним 2016/02/24 17:10:15  №665212 17
>>665184

Ты php скрипт в браузере или консоли запускаешь? В обоих случаях надо передать параметр который включит отладку.

Так же не забудь в php.ini включить отладку. И перезапустить Апач.
Аноним 2016/02/24 17:10:19  №665213 18
>>665184
Так что за вопрос-то?
Аноним 2016/02/24 17:11:57  №665216 19
>>665184

> что в пхп ини то же самое
А ты тот файл который нужно редактируешь? Настройки видны в phpinfo() ?
Аноним 2016/02/24 17:27:48  №665230 20
>>665216
Тот, до этого я менял другие настройки (порта сменил с 9000 на 9005 так как ругалось на то, что он занят в Шторме) после этого ошибка с занятым портом пропала и появилось ожидание коннекта с ключом
>>665213
Как побороть проблему чтобы шторм увидел входящий коннект от дебагера.
>Ты php скрипт в браузере или консоли запускаешь? В обоих случаях надо передать параметр который включит отладку.
Ставлю брейкпоинты в скрипте, перезапускаю страницу в браузере
Аноним 2016/02/24 17:30:02  №665232 21
>>665230
Страницу нужно открывать из Шторма. Он дабавит GET параметр в адресс, что бы дебагер видел что пора конектится.
Аноним 2016/02/24 17:33:58  №665239 22
>>664772
Спасибо, ОП, большое за комментарии по кошкам-мышкам. Очень дельные замечания, сейчас сижу правлю код свой.

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

Вообще, я уже студентов тихонько подбиваю с разных сторон, сейчас про PDO читаю. Думаю за них взяться на днях, кошки-мышки и антикризисные меры сообразно твоим комментариям исправлю, но навряд ли стану загружать снова(ошибки понял, лишний раз мучить тебя смысла мало), если только вопросы появятся новые. Теперь уже студентов жди, опушка!
Аноним 2016/02/24 17:44:34  №665246 23
>>665232
Эммм, если у меня цмска и мне нужно отследить определенный скрипт на определенной странице каким образом мне запустить из IDE'шки определенную страницу. Нет, я точно видел в нетбинсе работу дебаггера в таком виде: установка брейкпоинтов по скрипту, отдельный запуск браузера, в браузере открывается нужная страница - срабатывают брейкпоинты и в самом нетбинсе отображается отладочная инфа. Если запускать скрипт в браузер из иде'шки это пиздец
Аноним 2016/02/24 17:47:19  №665248 24
Также добавлю:
>>664772
> endswitch;
>Это для шаблонов, тут используй фигурные скобки
Поясни за это, ты намекаешь, что лучше использовать обычный синтаксис, ок, понял, но о каких шаблонах говоришь и почему?

> $move1 = new Movement($this->y, $this->x);
> $move2 = new Movement($this->y + 1, $this->x);
...
> $move6 = new Movement($this->y + 1, $this->
>Копипаста, убирай
много ломал голову, как от копипасты-перечисления ходов избавиться ещё когда решал задачу, но не придумал. Подкинь совет?
Аноним 2016/02/24 17:58:43  №665260 25
>>665246
Расширение для браузера.
The easiest Xdebug для Firefox например. Но опять же, все должно быть нормально настроено.
Аноним 2016/02/24 18:15:22  №665276 26
>>665260
Запустил в браузере через Закладки полученные на сайте шторме (/marklets) страница перезагрузилась, в шторме всё равно висит та же надпись что нет входящих подключений с таким то ключом
Аноним 2016/02/24 18:34:52  №665291 27
14563280929120.png (309, 3840x1080)
1080x3840
>>665276
Ну вот xdebug на гостевой убунте сконфигурированный. Можно запускать дебаг из броузера (расширение ставит куку), можно из IDE (добавляется переменная в GET). Х.з. чем тебе еще помочь.
Аноним 2016/02/24 18:41:37  №665302 28
Ньюфаг репортинг ин. Застопорился на решении третьей задачи отсюда http://archive-ipq-co.narod.ru/l1/arrays.html
Верно ли я понял что мне в $random мне нужно использовать mt_rand (1,6) ?
И ещё я немного не вьехал как достать вариант с выпавшим числом из массива.
Пытался зделать так http://codepad.org/taLdglSx но получил fatal error: Function name must be a string
Аноним 2016/02/24 18:43:06  №665304 29
>>665302
$answers[]. Квадратные скобки для массивов бро
Аноним 2016/02/24 18:44:16  №665307 30
>>665302
И еще нумерация в массиве начинается с 0.
т.е. пятый элемент это $answers[4]
Аноним 2016/02/24 18:45:10  №665308 31
>>665307
Хотя у тебя там ключи руками прописаны, так что все нормально. Мой косяк, не глянул.
Аноним 2016/02/24 18:46:19  №665309 32
>>665291
>192.168.56.1 - это на отдельном сервере или на локалхосте? мне на localhost ругалось, поставил просто http://fashion и вроде тест прошел норм
Аноним 2016/02/24 18:46:24  №665311 33
Аноним 2016/02/24 18:52:37  №665319 34
>>665309
Это хост. ВиртуалБокс создает виртуальный сетевой интерфейс. Виндовс в нем 192.168.56.1. Убунта с виртуалки коннектится к 192.168.56.1.

>>665311
Убери ' ' вокруг $random
Аноним 2016/02/24 18:54:20  №665320 35
>>665319
Благодарю, бро, всё заработало. Значит вокруг переменной не нужны кавычки?
Аноним 2016/02/24 19:02:25  №665327 36
>>665320
php парсит то, что внутри " " и не парсит то что внутри ' '.
$answers["$random"] и $answers[$random] сработает. А $aswers['$random'] нет.
В первых двух случаях он поставит значение переменной и будет искать собственно это значение. В третьем будет искать в массиве ключ строку '$random'.
Аноним 2016/02/24 19:10:50  №665335 37
ОП слышал про Laravel Homestead?
Думаю годная штука, которая подойдет новичкам и любителям видны для запуска своих приложений без ебли и без денверов
На словах ты Лев Толстой Аноним 2016/02/24 19:18:16  №665338 38
Аноним 2016/02/24 19:22:42  №665341 39
>>665338
Нет, там в echo должно быть:
> слово1 слово2 слово3
> слово1 слово2 слово3
> Я слово4 слово5
А не так, как у тебя.
Чтобы добиться верного решения, можно пропустить всё через цикл.
Первые два раза выводится строка "слово1 слово2 слово3", а во время третьего прохождения цикла выводится строка "Я слово4 слово5" и цикл обрывается.
Аноним 2016/02/24 19:24:28  №665342 40
>>665338
>Я хз почему random лишь один раз рандомит и остаётся таким навсегда, по этому пришлось пустить рандом второй раз.
Потому что один раз становится переменная определённой, а потом ты её выводишь в эхо.
Чтобы этого не было, надо изменять переменную перед каждым выводом, как я выше написал про цикл.
Аноним 2016/02/24 19:30:15  №665347 41
>>665341
у меня так и идёт
word1 2 3
1 2 3
я 4 5.
я делал циклы и рандом все равно оставался одним и тем же.
Аноним 2016/02/24 19:37:50  №665353 42
>>665347
У тебя идёт:
echo "$randomText1 $randomText2 $randomText3\n";
echo "$randomText4 $randomText5 $randomText6\n";
echo "Я $randomText7 $randomText8.\n";
А желательно всё-таки вот так:
echo "$randomText1 $randomText2 $randomText3\n";
echo "$randomText1 $randomText2 $randomText3\n";
echo "Я $randomText4 $randomText5.\n";
Но так-то задача на строки, вывод их из массивов, так что вполне можно и твоё решение посчитать правильным. Но ты подожди ОПа, что он тебе скажет.
А, хотя, нет: он как раз скажет что-нибудь про копипасту, там же её у тебя много.
Аноним 2016/02/24 19:42:13  №665358 43
>>665353
он скажет все переделывай. ведь нельзя было делать такие штуки
1 => 'блабла',
А я не додумал как по другому отдельные слова вытаскивать. Могу через count пронумеровать и зарандомить число, но мне слово же нужно. хотя, если как нибудь word1[....].
Аноним 2016/02/24 19:46:21  №665360 44
>>665358
Цикл жи есть.
Я объяснил же в первом сообщении этот момент.
Цикл с $i, делает три круга. В первом и втором круге изменяются randomText1 $randomText2 $randomText3 и выводится echo "$randomText1 $randomText2 $randomText3\n";. А в третьем круге выводится echo "Я $randomText4 $randomText5.\n"; (а изменяться они могли и раньше, допустим).
Аноним 2016/02/24 19:52:23  №665368 45
Анон, которому был необходим средне PHP со знанием мультикурл, я написал на почту тебе, тебе ещё надо?
Аноним 2016/02/24 19:55:36  №665373 46
14563329368310.jpg (143, 1252x1026)
1026x1252
>>665126
Алсо, вопрос по бутстрапу. Разбираюсь с макетами, почему вместо результата выше, у меня получается то, что ниже. Колонки длиннее чем должны, не вкладываются друг в друга и переносятся на новую строку.
Аноним 2016/02/24 20:00:08  №665381 47
http://ideone.com/Zlpjoc
Посоны, как собрать кусочки воедино? Никак не могу вдуплить.
Аноним 2016/02/24 20:26:18  №665407 48
Аноним 2016/02/24 20:34:02  №665417 49
Аноним 2016/02/24 20:36:43  №665420 50
Решил написать свою борду на PHP. Ну, традиционная история.
Где лучше хранить тексты постов? Нормально хранить в базе данных, или можно хранить в текстовых файлах?
Что будет, когда к текстовому файлу будут обращаться несколько посетителей одновременно?
Аноним 2016/02/24 20:38:10  №665423 51
>>665420
В вузе рассказывали, что когда несколько пользователей обращаются к базе данных, то всё будет в порядке.
Аноним 2016/02/24 20:51:39  №665445 52
>>665230

Ты порт и в IDE и в php поменял? В phpinfo этот порт виден? С настройками явно что-то не то, кем может быть занят этот порт? Запости конфиг относящийся к xdebug из phpifno(), а также настройки ИДЕ (если там есть что-то кроме того что выше на скриншоте).

И посмотри эту страницу, https://xdebug.org/docs/remote

Аноним 2016/02/24 20:52:02  №665446 53
Привет, пхпач, не бей. Мне надоело бездельничать и я решил выучить хтмл/ксс/пхп. Уже скачал денвер и сделал базу данных. Как я понимаю, мне лучше начать с html. Посоветуйте литературы для чайников, по которой сами учились.
Моя цель - написать простенький сайт за 3 месяца. Верстка, связь с БД, etc.
Аноним 2016/02/24 20:54:23  №665449 54
>>665446
Тебе нужно следовать пути в ОП-посте описанном. При должном усердии извояешь свой файлообменник ты.
Аноним 2016/02/24 20:55:56  №665453 55
>>665239

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

>>665246

Там надо либо GET параметр приписывать либо куку ставить. Расширения к браузеру делают именно это. Почитай документацию по xdebug чтобы понимать как это работает.

>>665248

> ок, понял, но о каких шаблонах говоришь и почему?
http://www.phpinfo.su/articles/practice/shablony_v_php.html

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

>>665291

Лучше показывать настройки из phpinfo(), чтобы он вывел текущие. Вот почему у тебя стоит порт 9000 если ты в IDE его поменял?





Аноним 2016/02/24 20:58:54  №665461 56
>>665453
>Вот почему у тебя стоит порт 9000 если ты в IDE его поменял?
Что куда поменял? Я не анон с проблемой. У меня все работает.
Аноним 2016/02/24 21:04:16  №665468 57
Ребят , в 19 поздно уже пытаться что-то учить?:D
Аноним 2016/02/24 21:07:38  №665471 58
Аноним 2016/02/24 21:09:14  №665473 59
>>665335

> Думаю годная штука
Почему ты так думаешь? какие ты видишь преимущества и недостатки?

Вот что я вижу:

- образ виртуальной машины тяжелее чем Апач с PHP, ему надо больше диска, ОЗУ, процессора
- там могут быть чужие настройки. Например вместо легкого дебиан какая-нибудь тормозная убунта с кучей сервисов. Вместо нормального редактора какой-нибудь вим. А у меня например есть виртуальная машина где все привычно
- там может быть высокое потребление памяти По идее для PHP хватило бы 192 Мб, но там в образе куча сервисов и вряд ли он в эту цифру уложится. Ну и в любом случае напрямую PHP будет работать быстрее чем с виртуализацией
- для вагранта надо ставить руби в систему. Где гарантия что он не попрописвает себя всюду и не будет с чем-нибудь конфликтовать? Да и тащить огромный интерпретатор как-то нелогично по моему.
- без виртуалки PHP напрямую читает файлы с диска. В случае виртуалки приходится испоьзовать какие-нибудь общие папки которые работают медленнее
- куча лишего хлама: зачем мне редис, постгрес и какой-то непонятный beanstalkd. что это вообще такое?
- странные перенаправления портов - это зачем? Почему нельзя 80 использовать например?
- как я понимаю образ там read-only, и установить новый пакет через apt-get install не выйдет?

А посмотрим, как подают авторы этот образ? Легко развернуть? Ну не знаю, с одной стороны можно поставить апач + php + mysql и настроить их, а с другой ставить виртуалбокс, руби, вагрант, образ, и настраивать все в нем. Не сказал бы что это легче.

Ну и если нужен линукс, лучше установить в виртуалку дебиан. Хоть устанавливать дебиан научишься.

Ну то есть у использования вагранта наверно где-то есть преимущества. Хотелось бы про них услышать, а пока у тебя только личное мнение что это "годная штука".
Аноним 2016/02/24 21:10:05  №665475 60
>>665335

Ну и начинающим вредны сборки. Хоть раз в жизни Апач или дебиан стоит установить самостоятельно.
Аноним 2016/02/24 21:12:08  №665478 61
>>665373

Открой инспектор в Хроме (Ctrl + SHift + I) и посмотри какие стили применены к элеиенту. Про dev tools много статей в интернете.

>>665420

В реляционной БД вроде mysql. На текстовых файлах ничего нормально работать не будет.

Аноним 2016/02/24 21:20:11  №665482 62
>>665473
>и установить новый пакет через apt-get install не выйдет?
Как раз таки выйдет. Вообще, как по мне, ключевое удобство Vagrant'а - это песочница (можно откатываться, юзая снапшоты в virtualbox) + последующий беспроблемный деплой на VPS. Зачем это новичку - вообще без понятия. Я не поддерживаю >>665335-анона. Homestad - так вообще уже готовый box с полностью настроенным под работу линуксом. Это плохо для новичков - слишком высокий уровень абстракции; возникнет незначительная легко устраняемая проблема, а новичёк с ней не справится по причине отсутствия элементарных знаний в более низкоуровневых вещах.

Аноним 2016/02/24 21:25:17  №665484 63
>>665482
> новичёк
Бля, не пинайте.
Аноним 2016/02/24 21:48:48  №665497 64
14563397286520.png (98, 618x617)
617x618
14563397286541.png (73, 493x378)
378x493
14563397286562.png (35, 982x397)
397x982
14563397286563.png (18, 809x267)
267x809
>>665445
Вот мои настройки текущие
Аноним 2016/02/24 21:49:06  №665498 65
14563397461850.png (40, 771x353)
353x771
14563397461861.png (97, 857x634)
634x857
Аноним 2016/02/24 21:49:59  №665502 66
>>665449
Абу йода-спик ввел в пхп-треде?
Аноним 2016/02/24 21:57:19  №665517 67
>>665502
Я пропустил слово и мне лень было педалить backspace. А дальше уже стилистические требования.
Аноним 2016/02/24 22:19:40  №665568 68
>>665497
>>665498
Встроенный сервер php настраивается на 8000 порту, тащемта.
Аноним 2016/02/24 22:39:57  №665607 69
>>664787
Я все замечания исправил, просто там еще несколько багов с отображением поисковых результатов нашел и исправил, из-за этого имя коммита такое странное получилось.
Аноним 2016/02/24 22:47:20  №665618 70
>>665568
Ну 9015 тоже свободен был, разве сыграет такую большую роль?
Аноним 2016/02/24 22:56:34  №665637 71
Аноним 2016/02/24 22:59:00  №665640 72
Аноним 2016/02/24 23:31:18  №665709 73
Знаком с PHP, OOP, MVC. Решил освоить yii2, начал искать инфу и понял, что хоть и инфы много, но что-то успехов нет. Начал читать документацию, и понял, что там не очень доходчиво объясняется. Анон, как вкатиться в свой первый фреймворк ?
Аноним 2016/02/24 23:33:23  №665713 74
>>665709
Попробуй сделать какую-нибудь задачу из ОП-поста с использованием Yii. Тех же студентов или файлообменник.
Аноним 2016/02/24 23:33:24  №665714 75
>>665709
Курсы на ютабе посмотри, так проще вкатишься.
Аноним 2016/02/24 23:38:39  №665724 76
>>665713
С ООП знаком, такие слова, как абстрактный класс или интерфейс не вызывают у меня страха. Но я открываю директорию yii и охуеваю о того, сколько всяких методов, что пока для меня остаются загадкой.
Аноним 2016/02/25 00:43:00  №665807 77
>>665724
Все херня. Учи классические алгоритмы. А всякую лабуду типа обсерверов, абстрактных строителей и мостов нагонишь по мере надобности, когда к этому придешь.
Аноним 2016/02/25 01:09:57  №665832 78
>>665373
С этим разобрался. Спаны со старой версии бутстрапа. Вопрос >>665126 в силе.
Аноним 2016/02/25 01:35:28  №665850 79
Привет.
Может кто рассказать как правильно юзать printf?
Есть кусок кода >
https://ideone.com/w0LcUw

При попытки вывести его с помощью этого >
https://ideone.com/b7UIkt

Получаю ошибку yntax error, unexpected T_STRING.
Так вот..Как правильно пихать html код в printf что бы все работало?

Аноним 2016/02/25 07:39:25  №665938 80
>>662476
>> if (FormHelper::isFormSent()) {
>> else if ($_SERVER['REQUEST_METHOD'] == "GET") {
>А что если ни одно из условий не сработает?
Отдастся пустая страница с кодом 200. Это плохо?
Аноним 2016/02/25 08:46:23  №665953 81
Аноним 2016/02/25 09:14:28  №665964 82
>>665953
Уже разобрался , но , спасибо
Аноним 2016/02/25 10:16:16  №666009 83
ОП, спасибо за все ответы в прошлом треде.
Если я не отвечаю, то это не значит, что я не читаю твои подробные ответы и разборы или не стараюсь исправиться.
Просто чаще всего нечем ответить, настолько всё разобрано.

Аноним
Аноним 2016/02/25 10:53:58  №666028 84
ОП, спасибо тебе за курс. Вот, я попытался решить задачек.
То, что, что легко:
W1. https://ideone.com/r93YE8
W2. https://ideone.com/8BIRn7
W3. https://ideone.com/yqbFo1
W4.1 https://ideone.com/Yikc7R
W4.2 https://ideone.com/gipbSX
Надо было напрячь мозг:
W5.1 https://ideone.com/MwfLmz
W5.2 https://ideone.com/cVgjxu
W5.3 https://ideone.com/iFv71d
W5.4 https://ideone.com/jMJLFM
W5.5 https://ideone.com/kVp3j3
W5.6 https://ideone.com/QcFU0m
W5.7 https://ideone.com/Eh48abC
Аноним 2016/02/25 11:00:54  №666035 85
В каком возрасте вы начали учить пхп?
Аноним 2016/02/25 11:05:10  №666038 86
Аноним 2016/02/25 11:09:43  №666043 87
>>666028
Лёгкие вроде бы все правильно решены.
Задача W5.1 решена неверно, там должно быть 61270 с копейками. Это непростая задача, многие на ней подолгу сидят.
Задача W5.2 решена неверно, там должно получиться 1060 тысяч в последний год и он должен быть 50-ым по счёту. Если я не путаю сейчас.
W5.6 решена неверно, там у тебя функция mt_rand(1, count($letters)) выдаёт слоги из массива с 1 по 16, тогда как должна выдавать слоги с 0 по 15. Автоматически нумерация в массиве идёт с 0, а count($letters) считает, начиная с 1. В итоге у тебя нулевой слог никогда не появится и будет ошибка, когда выпадет 16-ый слог.
W5.7 - там ничего нет.

>>666035
В возрасте тридцати одного года.

>>666038
Ab-w.net, с него начинал учить HTML, CSS, там же учился устанавливать Wordpress.
Аноним 2016/02/25 13:11:12  №666128 88
Аноним 2016/02/25 13:28:52  №666148 89
>>666128
$creditSum - $payout < 0 преобразуем в $creditSum < $payout. Убирается лишнее действие.

$creditSum <= 0 должно быть == 0. Если у тебя возникает ситуация, что баланс кредита меньше нуля, значит алгоритм работает неверно и Ванька переплачивает банку.
Так вроде все отлично.
Аноним 2016/02/25 14:46:02  №666238 90
>>665938

Да. Думаю надо сделать так:

- либо метод = POST и мы принимаем данные формы
- во всех остальных случаях выдаем страницу для GET

Я как минимум HEAD могу вспомнить который ведет себя как GET но прибивает скрипт при попытке выдать текст.

>>666043


Да, там странная строка:

> if ($sum > 1000000) {
> $y++;
Зачем дополнительно плюсовать? Также, $y лучше назвать нормально и поставить вместо $i в шапку цикла.

Аноним 2016/02/25 14:53:46  №666249 91
Пользуясь случаем напомню: В прошлом треде >>649329 (OP) (OP) я все поверил, всем дал ответы. Зайдите и поищите ответы в конце треда. Если я вас пропустил или не ответил - напишите тут.
Аноним 2016/02/25 15:39:48  №666303 92
14564039883940.jpg (44, 722x482)
482x722
Анон, на работе, бывает, появляется свободное время, хотел бы обмазаться каким-нибудь видеокурсом для начинающих. Хотелось бы руками что-нибудь делать, но такой возможности нет. Что посоветуешь? На трекерах, тытрубе и в интернетах дохуя всего, даже не знаю, что попробовать, может, анон чего порикаминдует?
Аноним 2016/02/25 15:49:54  №666310 93
Аноним 2016/02/25 15:52:47  №666314 94
>>666310
Спасибо.
Он хороший, стоящий? А то у меня основная проблема - сомнения.
Аноним 2016/02/25 15:56:39  №666320 95
>>666314
Ну это выбор анона можно сказать. Хотя практически все видеокурсы длинное нудное скакание по верхам. Иначе они просто не будут продаваться.
Аноним 2016/02/25 16:08:52  №666336 96
>>666303
Не забывай и про то, что без написания кода ничего не выйдет. Тут толковый учебник (вроде ОПовского) намного больше тебе даст, чем простое смотрение на то, как кто-то разбирает или пишет код.
Аноним 2016/02/25 16:10:47  №666338 97
>>666336
Это само собой разумеется. Была бы на работе пека, на которой можно кот пейсать, этим бы и занимался. А так рабочая машина сейчас в ФЗС за ДМЗ и пиздец. Разве что браузер есть, но я не хочу жабаскрипт.
Аноним 2016/02/25 16:13:25  №666343 98
>>666338
Можно писать на http://ideone.com - хоть с планшета, был бы Инет и браузер.
Аноним 2016/02/25 16:19:49  №666344 99
Аноним 2016/02/25 16:22:04  №666346 100
>>666343
Инета нет, в том и дело. Есть вайфай и планшет, но я заебусь же там набирать кот.
Аноним 2016/02/25 16:53:41  №666371 101
Как перестать прокрастинировать? Сажусь заниматься, и всегда делаю не то, что нужно. То на ютубе зависну, то на дваче. Как взять себя в кулак?
Аноним 2016/02/25 16:54:19  №666373 102
>>666371
Иди в перезвоним тред или куда-нибудь в /b/. Тут задачи решают.
Аноним 2016/02/25 16:57:56  №666380 103
Аноним 2016/02/25 16:58:31  №666381 104
>>666346
Понятно. Ну тогда не пиши код. Занимайся чем-нибудь другим.
Аноним 2016/02/25 17:07:27  №666389 105
>>666371
Настойчивость. Усидчивость.
В последнее время с какого-то хуя стало популярным слово "мотивация".
- Мне чтобы учиться/работать/дрочить хуй нужна мотивация, - пиздят на каждом шагу. Какого хуя вообще? Вы хоть знаете, что такое мотивация? Что под постоянной мотивацией ваши межушные нервные узлы свернулись бы в трубочку?
Если за тобой в лесу бежит медведь, а ты убегаешь, вращая глазами и бросаясь в него собственным говном - вот это мотивация. Если вычислили по IP, где ты живешь, и идут ебать твою мамку, а ты, пытаясь предотвратить неизбежное, превращаешь свой подъезд в храм тиpeча и смазываешь входную дверь свиным эякулянтом - это твоя ёбаная мотивация. Она есть, а через минуту медведь сгорел в машине, мамку выебали, и её больше нет. И что дальше будешь делать? Мотивация, блядь. На этом говне далеко не уедешь. Все делается при помощи упорства и настойчивости, которые должны стать качествами твоей личности, анон, а не при помощи мотивации.
Аноним 2016/02/25 17:15:57  №666394 106
>>666346
Купи клавиатуру к планшету.
Я поначалу просто так набирал код на Идеоне в планшете.
Если есть возможность и желание - купи недорогой нетбук, установи на него Апач и РНР, так пиши.
Сервер даже и на планшет можно установить, ОП как-то приводил пример, какие-то приложения для Андроида.
Аноним 2016/02/25 17:17:05  №666395 107
>>666394
Годная мысль. Наверное, так и сделаю.
Аноним 2016/02/25 17:19:00  №666397 108
Хороший тред, люблю вас
Ушел учить.
Аноним 2016/02/25 17:28:00  №666406 109
>>666389
Неа, страх и мотивация - это разные вещи. Это как кнут и пряник. Просто разумный человек понимает, что программирование, как и любая другая работа - это просто инструмент. А какая цель? Как правило, у нормального человека цель - хорошо провести время. Программирование иногда помогает в этом, но чаще всё-таки нет. Это зависит от индивидуальных предпочтений, и от того, сколько человеку надо денег. Я бы сказал, мотивация - это связь между чем-то неосвоенным и целью, без которой непонятно, нафига оно тебе надо.
Аноним 2016/02/25 18:41:32  №666470 110
У меня проблемы с математикой, анон. И вот вчера внезапно решил освоить php, а тут фраза "Возвращает абсолютное значение (abs(-5) => 5)"
как понимать эти вещи? Сильно будет мешать в будущем незнание? В общем, я в ступоре
Аноним 2016/02/25 18:42:44  №666473 111
>>666470
Абсолютное значение это просто положительное число, что тут можно не понимать?
Аноним 2016/02/25 18:44:22  №666476 112
>>666470
Абсолютное значение - это модуль числа.
Представляй модуль числа как расстояние от нуля до числа на числовой прямой. У расстояния знака нет, так что это просто положительное число.
Модуль 5 равен 5. Модуль -5 равен 5.
> |5| = 5
> |-5| = 5
> abs(5) == 5
> abs(-5) == 5
Как-то так.
Аноним 2016/02/25 18:45:49  №666478 113
Аноним 2016/02/25 18:46:10  №666479 114
>>666470
>Сильно будет мешать в будущем незнание
На уровне 9 классов математику знать весьма желательно, т.к. это будет мешать не только в PHP.
Аноним 2016/02/25 18:49:35  №666485 115
>>666344
Интересная штука, жалко, платно там всё после тестового периода.
Аноним 2016/02/25 18:53:51  №666493 116
Думаю, не написать ли генератор рифм? Будет ли это плюсом, если при устройстве на работу, или это слишком примитивно? Я так понял суть генератора рифм в том, что надо сравнивать окончания введённого слова со словами которые хранятся например в файле и выводить эти слова. Сделать так, чтобы ещё учитывать и ударения наверное нельзя? Точнее можно, но для этого надо проставить правильное ударение всем словам что есть в файле (а их более 100К) вряд ли, кто-то будет таким заниматься.
Аноним 2016/02/25 18:55:29  №666499 117
>>666493
>Будет ли это плюсом, если при устройстве на работу
Песенником-балалаечником на средневековую ярмарку, если только
Аноним 2016/02/25 18:56:22  №666500 118
>>666499
Тамадой еще можно
Аноним 2016/02/25 18:57:28  №666504 119
>>666493
>Будет ли это плюсом, если при устройстве на работу
Плюсом при устройстве на работу будет если сможешь перевернуть бинарное дерево, или написать квиксорт.
Аноним 2016/02/25 18:57:47  №666505 120
>>666493
Вполне годная задумка.
Любой хороший собственный проект на Гитхабе или на своём домене будет характеризовать твои способности только положительно.
Аноним 2016/02/25 19:16:03  №666530 121
>>666493
Ты хочешь написать генератор рифм или генератор стихов?
Аноним 2016/02/25 19:28:50  №666549 122
Я говно, я не понимаю ничего в разработке на php.
Аноним 2016/02/25 19:29:35  №666551 123
Аноним 2016/02/25 19:31:26  №666552 124
Аноним 2016/02/25 19:39:07  №666562 125
>>664784 (OP)
Приветствую. Задачка лишь косвенно связана с PHP. Но тем не менее.
Есть объект(помещение) с двумя свойствами: мин. площадь(building_area_min) и макс. площадь(building_area_max)

Пользователь вводит начальную($s_from) и конечную площадь($s_to)
Формируется запрос на вывод помещений по этим двум полям.

Общий запрос:
$args['meta_query'][] = array(
'relation' => 'OR',
array(
'key' => 'building_area_min',
'value' => array($s_from, $s_to ),
'type' => 'NUMERIC',
'compare' => 'BETWEEN'
),
array(
'key' => 'building_area_max',
'value' => array($s_from, $s_to ),
'type' => 'NUMERIC',
'compare' => 'BETWEEN'
),
array(
'relation' => 'AND',
array(
'key' => 'building_area_min',
'value' => $s_from,
'type' => 'NUMERIC',
'compare' => '<='
),
array(
'key' => 'building_area_max',
'value' => $s_to,
'type' => 'NUMERIC',
'compare' => '>='
)
)


);
Допустим пользователь вводит ($s_from=20) и конечную площадь($s_to=100)

Должны отображаться
1) помещение от 22 до 80
срабатывает
array(
'key' => 'building_area_min',
'value' => array($s_from, $s_to ),
'type' => 'NUMERIC',
'compare' => 'BETWEEN'
),
2) помещение от 50 до 120
срабатывает
array(
'key' => 'building_area_max',
'value' => array($s_from, $s_to ),
'type' => 'NUMERIC',
'compare' => 'BETWEEN'
),
3) помещение от 5 до 120
срабатывает
array(
'relation' => 'AND',
array(
'key' => 'building_area_min',
'value' => $s_from,
'type' => 'NUMERIC',
'compare' => '<='
),
array(
'key' => 'building_area_max',
'value' => $s_to,
'type' => 'NUMERIC',
'compare' => '>='
)
)
Все работает как надо, но последний вложенный запрос создает дикие тормоза.
Может есть какой-то другой способ сделать выборку пересекающихся массивов ? В sql не особо понимаю.
Аноним 2016/02/25 19:44:10  №666567 126
>>666562
Со вторым случаем ошибся, сработает тоже первое условие. Для второго случая найдется помещение допустим от 20 до 50
Аноним 2016/02/25 19:44:45  №666568 127
>>666567
>от 20 до 50
от 19 до 50
Аноним 2016/02/25 19:46:58  №666573 128
>>665291
Спасибо за идею, сегодня поставил на виртуалку убунту сервер, настроил, установил xdebug, настроил phpstorm и всё заработало, проблемы были только с айпишниками но в итоге спустя 5 часов ебли всё заработало, я счастлив!
Аноним 2016/02/25 19:50:49  №666576 129
Объясните смысл инкапсуляции:
1. мы объявляем переменную класса protected $x;
2. мы делаем два метода, если хотим работать с этим $x из других классов - сеттер и геттер. Геттер - просто даёт переменную, сеттер даёт возможность установить новую.
Как же мы защитили её в таком случае? Ведь сеттер-геттер это же полный контроль над переменной, не?

Аноним 2016/02/25 19:55:21  №666584 130
>>666576
Ты можешь в геттере и сеттере производить любую валидацию.
Кстати, для твоей ситуации достаточно private.

Например

private $age;
private $no_u_cant;

public function get_age() {

if (!$this->no_u_cant)
return $age;

}

public function set_age($age) {

if ($age >= 18 && $age <= 99 && !$this->no_u_cant)
$this->age = $age;

}
Аноним 2016/02/25 19:56:59  №666588 131
>>666576
Представь ситуацию что тебе в большом приложении дали задачу сделать какую-нибудь верификацию объекта которы используется по всему приложению. Ты будешь открывать кучу файлов и по пол часа разбираться как именно и где именно используется твой объект. При инкапсуляции верификацию можно сделать в сеттере, отредактировав при этом один файл.
Аноним 2016/02/25 19:57:22  №666591 132
>>666389
Этому два чая.
Сам лишь только недавно это понял.
Аноним 2016/02/25 20:02:14  №666599 133
>>666588
>>666584
логично, не думал про ИФ-ы в функциях. Так да, теперь понимаю.
Аноним 2016/02/25 20:14:15  №666619 134
>>666599
И не только ифы.
Можно еще переопределить __set() и __get() и возвращать значения в ответ на любой рандомный член класса, которого у тебя даже нет, допустим.

Самый простой пример.

class GetSet {

private $storage = array();

public function __get($index) {

if (array_key_exists($index, $this->storage))
return $this->storage[$index];
else
return false;

}

public function __set($index, $value) {

$this->storage[$index] = $value;

}

}

$obj = new GetSet();

$obj->lalka = 'dicks';
echo $obj->lalka; // dicks
Аноним 2016/02/25 20:17:36  №666625 135
Я понял. Фраза "black mesa" составлена из букв разных раскладок. Вот ОП-хитрюга такая.
Аноним 2016/02/25 20:23:01  №666636 136
>>666619
Объясни-ка, пожалуйста, что ты в примере сделал.

Аноним 2016/02/25 20:34:00  №666655 137
>>666636
Описал объект, определил геттер и сеттер для всего объекта.
Это значит, что любое обращение к непубличному свойству объекта (даже если оного не существует) улетит в функцию __set(), где мы уже решаем, что делать.
В примере мы складываем всё в массив $storage и вынимаем оттуда же.

Пример синтетический, поэтому пусть так, например:

class NewsItem {

private $newsTitle;
private $newsRawText;

public function __construct($newsTitle, $newsRawText) {

$this->newsTitle = $newsTitle;
$this->newsRawText = $newsRawText;

}

public function __get($property) {

switch ($property) {

case 'title':
return $this->newsTitle;
break;

case 'text':
return strip_tags($this->newsRawText);
break;

}

}

}

$someNews = new NewsItem('Битард повесился в прямом эфире', '<b>На месте дежурит бригада <i>траллей</i> из /b/</b>');

echo $someNews->text; // На месте дежурит бригада траллей из /b/ (тегов нет)
Аноним 2016/02/25 20:36:17  №666658 138
Мимо проходил.
Я вообще не занимаюсь этой вашей пыхой, но хочу сказать следующее для ньюфагов - пыха нужна всегда и везде,так что не ссыте вкатываться.
мимо-ява-адепт
Аноним 2016/02/25 20:39:00  №666670 139
>>666655
>$someNews = new NewsItem('Битард повесился в прямом эфире', '<b>На месте дежурит бригада <i>траллей</i> из /b/</b>');
>echo $someNews->text; // На месте дежурит бригада траллей из /b/ (тегов нет)

>$obj->lalka = 'dicks';
>echo $obj->lalka; // dicks

но ведь эти выражения в любом случае, не зависимо от всего твоего кода, будут выводиться так, как показано. Я чего-то упускаю?
Аноним 2016/02/25 20:40:40  №666681 140
>>666670
насчёт echo $someNews->text проебался, да, но пример с диком - он всегда и будет диком же, и без __set() с __get(0
Аноним 2016/02/25 20:42:37  №666688 141
>>666655
А почему у тебя вернулся case 'text'? Почему не case 'title'?
Аноним 2016/02/25 20:44:16  №666691 142
>>666658
Как будто ява не везде нужна. 80% энтерпрайза на ней написано. Хотя порог вхождения там выше конечно.
Аноним 2016/02/25 20:45:01  №666693 143
>>666670>>666681

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

>>666688
Слушай, ну серьезно. Тебе для начала надо выучить синтаксис языка.
Аноним 2016/02/25 20:46:52  №666696 144
>>666691
Это да, порог действительно выше.
По работе приходится часто общаться с пыхокодерами, и уяснил что готовы брать ребят даже без знания фреймворков.
Простите, я не знаю как отклеить сажу. Ёбаная вакаба
Аноним 2016/02/25 20:49:26  №666701 145
>>666693
кажется, я начал понимать твой пример, спасибо.

>>666696
>Простите, я не знаю как отклеить сажу.
и ещё погромист называется
Аноним 2016/02/25 20:50:28  №666703 146
14564226286140.jpg (33, 565x365)
365x565
>>666701
Если сажа решила подружиться с постом - разве я должен им мешать?
Аноним 2016/02/25 20:50:50  №666704 147
>>666696
База у любых программистов должна быть, я считаю. Это первым делом оценки сложности алгоритмов, линейная алгебра, основы анализа и т.д.

У многих начинающих просто отсутствуют эти базовые знания, хотя они умеют формочки на симфони делать.
Аноним 2016/02/25 20:52:07  №666713 148
Аноним 2016/02/25 20:55:22  №666724 149
>>666704
Слыш я в погромисты пошел потому что у меня с матешей плохо
Аноним 2016/02/25 20:58:16  №666733 150
>>666724
Тебя на работу ни один уважающий себя работодатель не возьмет. Пока не выучишь математику хотя бы до уровня первого курса ВУЗа будешь работать в шарагах за 15к\мес.
Аноним 2016/02/25 21:00:30  №666744 151
>>666733
Да беда в том, что я это уже осознаю, лол.
У меня вообще больно тугой ум, очень трудно все дается.
Искренне хуею с постоянных репортов уровня "я выучил HTML+CSS+JS+PHP за 6 месяцев, че дальше".
Я уже 7 лет PHP-макака, и до сих пор быдлокожу за еду. Сложные алгоритмы повергают мозг в ступор.
Аноним 2016/02/25 21:05:07  №666752 152
Как свардампить локальную переменную функции?
global $var не помогает.
Аноним 2016/02/25 21:07:05  №666754 153
>>666752
Очевидно же, дампь внутри функции, а потом вызывай её.
Аноним 2016/02/25 21:07:27  №666755 154
Аноним 2016/02/25 21:07:28  №666756 155
>>666733
Я могу в матешу первого курса медвуза, достаточно? Проходили матрицы, теорию вероятности и прочие задачки.
>>666744
Ты это я в течение будущих семи лет.
Аноним 2016/02/25 21:08:01  №666758 156
>>666752
Конечно, переменная из функции видна только в функции.
Вардампь внутри функции.

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

function doSomething($regularArg1, $arg2, &$ref) {

// че-то происходит

$ref = твоя_переменная;

}

var_dump($ref);
Аноним 2016/02/25 21:08:28  №666759 157
>>666754
Лол, и правда ведь.
Аноним 2016/02/25 21:09:19  №666761 158
>>666756
Лол, я даже не знаю алгебры уровня 9 класса.
После дискриминанта и системы уравнений я просто пинал хуи вплоть до выпускного.
Аноним 2016/02/25 21:09:30  №666762 159
>>666758
Спасибо за костыль, браток.
Аноним 2016/02/25 21:10:48  №666763 160
>>666761
>Лол, я даже не знаю алгебры уровня 9 класса.
>После дискриминанта и системы уравнений я просто пинал хуи вплоть до выпускного.
Я вообще учился в школле с гуманитарным уклоном и проебывал матешу как только мог. Так что ты хоть что-то знаешь. А я могу только в первый курс мед. вуза.
Аноним 2016/02/25 21:11:08  №666765 161
>>666763
>школле
Школе. Ебаный немецкий.
Аноним 2016/02/25 21:11:51  №666767 162
>>666763
Матрица и тервер куда круче a^2 - 4bc, или как там дискриминант решается.
Числа прописью Аноним 2016/02/25 21:12:47  №666771 163
Аноним 2016/02/25 21:12:59  №666772 164
>>666504
А зачем это для разработчика ПХП?
Аноним 2016/02/25 21:13:16  №666773 165
>>666756
В алгоритмы можешь? Оценку сложности алгоритмов, оценку времени исполнения, потребления памяти и прочее?
Аноним 2016/02/25 21:14:00  №666775 166
>>666772
Язык программирования лишь средство, ты должен в принципе уметь в алгоритмы.

Аноним 2016/02/25 21:15:53  №666779 167
>>666767
БЭ В КВАДРАТЕ МИНУС ЧЕТЫРЕ АЦЭ
Выучил эту формулу наизусть, идя в школу на контрошу по алгебре. Хоть я и не помню, что она означает, но саму формулу помню, хек.
Аноним 2016/02/25 21:17:00  №666782 168
>>666775
Книг computer science достаточно будет?
Взаимопомощь Malikov 2016/02/25 21:25:15  №666797 169
Нюфаги, го сюда. Будем делиться опытом, помогать с лабами, выискивать баги.
Kirill 2016/02/25 21:26:03  №666799 170
>>666797
Вкатился. Как тут зарегистрироваться?
Взаимопомощь Malikov 2016/02/25 21:26:36  №666800 171
Malikov 2016/02/25 21:29:09  №666802 172
Аноним 2016/02/25 21:43:42  №666828 173
>>666771
Грязно.

Почему inclineWord возвращает такую парашу?
> $result = " (".$number.") ".$result;

> declensionMillion
11 миллион? 12 миллиона?

> declensionThousands
11 тысяча? 12 тысячи?

Тебе не кажется, что делаешь однородные действия?
Что число можно разбивать в цикле бесконечно?
Что можно написать код, работающий на числе любой длины, входящего в конфиг вида:
$largeNumbersNames = array(array('тысяча', 'тысячи', 'тысяч'), array('миллион', 'миллиона', 'миллионов'), array('триллион', 'триллиона', 'триллионов'), array('квадриллион', 'квадриллиона', 'квадриллионов'), ...);
Причем при изменении конфига (удалении названия степени, добавления) код должен работать.
Аноним 2016/02/25 22:05:27  №666855 174
trim() работает с мультибайтовыми кодировками?
Аноним 2016/02/25 22:11:36  №666860 175
>>666855
Работает.
У меня другой вопрос.
Работает ли trim() в массиве?
foreach($textArr as $key => $value){
trim($value);
}
Аноним 2016/02/25 22:18:50  №666870 176
>>666860
Конечно работает, $value же обычная строка.
Аноним 2016/02/25 22:43:18  №666920 177
Аноним 2016/02/25 22:54:25  №666944 178
Аноним 2016/02/25 23:03:42  №666965 179
>>666828
Благодарю за критику.
Да не могу я в универсальность, делаю всё в лоб, да еще и через жопу. Про такой вариант $largeNumbersNames даже и не подумал.

Походу хуже моего говнокода уже быть не может.
Аноним 2016/02/25 23:13:19  №666983 180
Аноним 2016/02/25 23:15:52  №666989 181
Аноним 2016/02/25 23:19:22  №666994 182
>>666920
Ну ты даешь.
Что ты вардампить собрался, если после ретурна функция прекращает работу?

https://ideone.com/Yc0sGK
Аноним 2016/02/25 23:20:24  №666996 183
>>666983
Пробелы сначала надо удалить с помощью preg_replace(). Ставишь регулярки, которые удаляют лишние пробелы и запятые, заменяя их на один пробел.
Аноним 2016/02/25 23:23:59  №667001 184
Аноним 2016/02/25 23:26:40  №667007 185
Ко всем относится - регулярные выражения сами по себе очень мощный инструмент.
Если вы сначала че-то там режете по регулярке, а потом еще что-то перебираете и проверяете - вы что-то делаете направильно.

А конкретно этот кадр вдобавок не понимает, что в foreach значения передаются не по ссылке. И что надо их присвоить. Вот так:

foreach ($array as $var => $val) {

$array[$var] = trim($val);

}
Аноним 2016/02/25 23:27:26  №667009 186
>>667001
Мы тут учимся вообще-то, а не просим решить за нас задачи!
Не делай так больше!
Тем более, что ни черта непонятно в твоем коде
Аноним 2016/02/25 23:27:58  №667010 187
>>666485

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

Вот например тут https://c9.io/pricing/webide (взял первого попавшегося провайдера услуг) есть план free - единственный недостаток в нем это ограничение по памяти (1GB RAM, 5 GB HDD) и публичность всех выкладвааемых файлов. Для учебы - хватит.

Проверял в Хромиуме, выпущенном в этом, 2016 году, на ноутбуке с core2duo.

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

PHP есть, версии 5.5 (увы): https://docs.c9.io/docs/supported-languages (обещают подсветку синтаксиса и отладчик). Есть полноценная (линуксовая) консоль без прав рута.

PHP7 доступен, но параллельно с его установкой придется поучиться консольной магии: https://community.c9.io/t/how-to-upgrade-to-php7/1379

MySQL версии 5.5.44-0ubuntu0.14.04.1, пользователь root без пароля.

Редактор примитивный, слабее Sublime, но может кому-то его возможностей хватит.

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

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

Логи выводятся в вкладке Апача - удобно!

Ну, проектов у меня под рукой полно - взял первый попавшийся гитхаб ( https://github.com/V3N0m21/StudentList ) и не стал его устанавливать так как там нет папки public и инструкций по установке. Позор автору.

Вместо него взял https://github.com/V3N0m21/Uppu4

В ридми кстати не написано что надо править конфиг.

Композер есть (не то чтобы это было проблемой, но удобно).

Вот приложение: https://venom21-students-codedokode-1.c9users.io/

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

Аноны, может кто-нибудь проверит на себе эту ИДЕ?

Правда, помните что это веб-приложение и вам нужен современный браузер и свободная память (я бы рассчитывал на 400-800 Мб только под вкладку с IDE, это не мерял, а интуитивно посчитал. Померял - вроде пишет 150 Мб, но я редактор почти не использовал, толкьо консоль).

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

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

Вот команды которые пришлось сделать для установки приложения:

------

13 git clone 'https://github.com/V3N0m21/Uppu4' uppu
14 cd uppu
15 composer install
16 mysql -uroot -e 'CREATE DATABASE uppu CHARSET=utf8'
17 mysql -uroot -e < Uppu4.sql
18 mysql -uroot < Uppu4.sql

# наконец-то!
19 mysql -uroot uppu < Uppu4.sql
20 nano app/config.ini

# поменять документ рут в апаче
21 sudo nane /etc/apache2/sites-available/001-cloud9.conf
22 sudo nano /etc/apache2/sites-available/001-cloud9.conf

# поправить кривокод
23 nano app/bootstrap.php
24 mkdir public/upload
25 chmod 0777 public/upload
26 # почему папки нет в репозитории?
27 mkdir upload/resize
28 mkdir public/upload/resize
29 chmod 0777 public/upload/resize/

---------

В общем, в плане скорости работы облачная ИДЕ сильно зависит от браузера и процессора и проигрывает саблайму. Редактор слабый. В плане удобства - очень удобно, все уже установлено, настроено и "just works". Считайте что cloud9 это как хостинг, только бесплатно и без рекламы и почти все настроено.

Я советую тем, кто хочет опубликовать свое учебное приложение, попробовать. И тем кто не хочет - тоже попробуйте, очень интересная штука. Ну сами подумайте, насклоько ОПу удобнее когда ему дают не только ссылку на код, но и на работающее приложение. И другие анончики смогут протестировать ваше приложение. Сделайте файлообменник, выложите ссылку в /b - вам мигом найдут все баги и уязвимости.
Аноним 2016/02/25 23:30:31  №667014 188
>>667009
Вот тебе задание - разберись.

Если ты не понимаешь, как работают красивые верные решения, ты так и будешь писать говнокод.
Всегда читай чужой код, разбирайся, как он работает.
Аноним 2016/02/25 23:33:01  №667019 189
>>667010

Хоят вру - сервер работает не постоянно, а только пока открыта вкладка с IDE в браузере.

ну да ладно, кто хочет посмотреть файлообменник венома - сделайте аккаунт, склонируйте мой проект https://ide.c9.io/codedokode/venom21-students и запускайте сколько влезет.

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

Алсо, если кто-то может зайти с андроида/айпада - отпишитесь, как работает, не тормозит ли. 150 Мб памяти вроде для планшета приемлемо, а вот справится ли АРМ процессор - не знаю.


Аноним 2016/02/25 23:36:55  №667025 190
>>667019

Алсо, файлы не скачиваются так как автор кода V3N0m21 не предусморел отдачу средствами PHP при отсутствии расширения, а ставить его мне лень.
Аноним 2016/02/25 23:38:35  №667030 191
Что такое колбэк функция простыми словами и как она работает?
Аноним 2016/02/25 23:40:13  №667031 192
>>667030
Функция, предназначенная для вызова для другой функцией.

callback дословно - обратный звонок.
Аноним 2016/02/25 23:40:33  №667034 193
Обратный вызов точнее.
Аноним 2016/02/25 23:41:38  №667038 194
>>664784 (OP)
>>666920
Завёл твой код, всё работает. Проблема не в коде
Аноним 2016/02/25 23:42:10  №667042 195
/((?:^|[.?!])\)?)\s*\b(.)/ - как понять эту регулярку?
Там ведь даже скобка не закрыта, а всё работает.

>>667010
Интересно, схоронил.
Аноним 2016/02/25 23:44:03  №667045 196
Какие плюсы перехода на php7?
Аноним 2016/02/25 23:46:33  №667053 197
>>667042
Это скобка - литерал. Она заэкранирована, видишь?

Эта штука матчит ситуацию:
начало строки или .!? - (^|[.?!]), символы ?: говорят, что эту группировку не надо сохранять в памяти;
дальше закрывающая скобка (которой может не быть) - \)?
дальше пробельные символы (которых может не быть) - \s*
дальше граница слова, дальше первый символ слова.
Аноним 2016/02/25 23:49:04  №667059 198
>>667031
>callback дословно - обратный звонок.
И какой смысл вкладывается во фразу "обратный вызов"? Она ничего не говорит интуиции. Зачем придумали эту фразу вместо "лямбда"?
Аноним 2016/02/25 23:51:00  №667064 199
>>667059
Коллбэк не обязательно должен быть лямбдой (анонимной функцией).

Код из примера можно записать так:

function myStrtoupper($matches) {

return $matches[1] . ' ' . mb_strtoupper($matches[2]);

}

echo preg_replace_callback('#((?:^|[.?!])\)?)\s*\b(.)#su', 'myStrtoupper', $challengeText);
Аноним 2016/02/25 23:51:41  №667066 200
>>667053
Спасибо, но я ни хера не понял, я туп.
Где можно так надрочицца в регулярных выражениях?
Аноним 2016/02/25 23:51:56  №667069 201
>>667064
И что такое обратный вызов? Почему он обратный?
Аноним 2016/02/25 23:54:01  №667072 202
>>667064
Долго php учишь? Что знаешь, кроме него?
Аноним 2016/02/25 23:55:22  №667075 203
>>667069

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

Вот пример:

$files = ['file.txt', 'file.jpg'];
$images = array_filter($files, function ($file) {
return preg_match('/\.(jpg|png)$/u', $file);
});

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


Аноним 2016/02/25 23:58:22  №667082 204
>>667075
Почему он обратный?
Аноним 2016/02/25 23:59:00  №667083 205
>>667082

Потому что функция array_filter делает обратные вызовы назад в наш код.
Аноним 2016/02/26 00:00:18  №667087 206
>>667083
Вот ведь сука какая. Обратные вызовы она делает, блять..
Простите
Аноним 2016/02/26 00:00:50  №667088 207
>>667066
Практика.
Напиши, например, граббер сообщений с сосача с помощью регэкспов.
Тебе сейчас скажут, что нельзя парсить html регулярками, но все так делают. И еще смеются над теми, у кого DOM-парсеры падают на невалидном html.

>>667069
Ну вот функция preg_replace_callback передает в твою функцию свои находки. Ты их обрабатываешь и возвращаешь preg_replace_callback.

>>667072
Я выше отмечался, я веб-макака без алгебры со стажем 7 лет.
Знаю JS.

>>667075
Модификатор u лишний. Здесь он не имеет значения.
Алсо, есть более элегантное решение

return in_array(pathinfo($file, PATHINFO_EXTENSION), array('jpg', 'png'));
Аноним 2016/02/26 00:00:50  №667089 208
>>667083
#define обратные вызовы
Аноним 2016/02/26 00:01:37  №667091 209
>>667088
>Ну вот функция preg_replace_callback передает в твою функцию свои находки. Ты их обрабатываешь и возвращаешь preg_replace_callback.
Так почему такие вызовы называются обратными?
Аноним 2016/02/26 00:05:30  №667098 210
>>667091
Если ты передаешь одну функцию для исполнения как параметр для другой функции, такая функция называется callback.

Она тебе звонит обратно. В эту функцию.
Аналогия с реальным миром - ты оставляешь просьбу перезвонить по такому-то номеру.
Ты оставляешь функции просьбу вызвать такую функцию.
По-английски call - звонить и вызывать.
Аноним 2016/02/26 00:11:20  №667115 211
>>667098
>Она тебе звонит обратно. В эту функцию
Ну так это стандартная процедура вызовов функций, когда после выполнения со стека снимается адрес возврата. Зачем давать этому процессу название, которое применимо только когда вызов похож на использование лямбд?
Аноним 2016/02/26 00:12:36  №667118 212
>>667115
Она звонит тебе не после выполнения, а во время выполнения, понимаешь?
Аноним 2016/02/26 00:13:54  №667120 213
Кроме того, callback-функция в стеке будет выше вызвавшей ее функции.
Адрес возврата у тебя будет находиться в стеке ниже исполняемой функции.

Ты неправильно понимаешь, что такое callback. Значит, тебе это пока не нужно.
Аноним 2016/02/26 00:14:47  №667123 214
>>667118
>звонит
В смысле просто использует функциональный контекст вызывающей процедуры, и этому дали глупое название?
Аноним 2016/02/26 00:16:10  №667126 215
>>667123
Я вопросов твоих не понимаю. Этот приём должен был остаться безымянным?
Аноним 2016/02/26 00:17:12  №667128 216
>>667115
потому что названия придумывали гуманитарии. им понятия "перезвонить", "фабрика", "наблюдатель" и прочие абстрактные бобы понятней.
Аноним 2016/02/26 00:18:41  №667132 217
>>667123

Что значит "использует функциональный контекст "? Нет, неверно, она вызвает функцию которую ты ей дал.

>>667120

Вы зря переходите к стекам. Стек - это всего лишь одна из возможных реализаций такой вещи, никто вам не гарантировал что интерпретатор PHP будет его использовать (например оптимизирующий компилятор может заменить вызов функции переходом или заинлайнить ее). Да и я не понимаю, какой смысл обсуждать реализацию когда нам важна общая идея как это работает.
Аноним 2016/02/26 00:20:52  №667135 218
>>667132
>Что значит "использует функциональный контекст "?
Переданные аргументы и локальные переменные вызвавшей функции.
Аноним 2016/02/26 00:22:53  №667140 219
>>667135
>Переданные аргументы
Это не функциональный контекст.

>локальные переменные вызвавшей функции
Какие? Из нативного C-кода?
Это не javascript, в PHP у функции только свой скоп.
Аноним 2016/02/26 00:33:41  №667148 220
Походу, обратный вызов это как несущественное состояние в цепи Маркова или канонический подъем в задачах алгебраических кривых. Программистишки не могут объяснить, какой интуитивный посыл несут эти определения и просто кукарекают баззвордами.
Аноним 2016/02/26 00:41:13  №667153 221
>>667148

Тебе объяснили. Однако ты пытаешься (вяло и безрезультатно) раздуть тут пустую дискуссию ни о чем. Это пхп тред, функциональные языки можно обсудить в других тредах, прокрути до 4-5 страницы и обсуждай.
Аноним 2016/02/26 01:10:33  №667188 222
Как лучше делать: писать трудночитаемый, но компактный код или все расписывать, чтобы все поняли?
Аноним 2016/02/26 01:50:31  №667236 223
Сап всем, решил обмазаться и сразу же попал в просак. Не знаю почему, но сегодня у меня появилось желание заняться чем-нибудь интересным. Наткнулся на этот тред и заинтересовало. В общем решил попробовать. Завис на третей задачи W5.2(циклы), нихуя не понял. Как-то всё достаточно резко переменилось, до этого решалось легко. Собственно вопрос, к погромистам, как решить её? И что повторить чтобы не возникало проблем с этой темой? Потому что у меня такое ощущение, будто я вообще ничего не усвоил за предыдущие темы.
test test 2016/02/26 01:52:20  №667237 224
................00000000000
..............00,,,,,,,0,,,,,,00
.............0,,,,,,,,,0,,,,,,,,,0
............0,,,,,,,,,,0,,,,,,,,,,0
...........0,,,,,,,,,,,0,,,,,,,,,,,0
...........0,,,,,,,,,,,,,,,,,,,,,,,,0
...........0,,,,,,,,,,,,,,,,,,,,,,,,0
...........0,,,,,,,,,,,,,,,,,,,,,,,,0
............0,,,,,,,,,,,,,,,,,,,,,0
.............000000000000000
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.............0,,,,,,,,,,,,,,,,,,,0
.........000,,,,,,,,,,,,,,,,,,,,,,000
.......00,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,00
......0,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
.....0,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
....0,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
...0,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
...0,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
...0,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
....0,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0
.....0,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,0
Аноним 2016/02/26 01:54:16  №667238 225
>>667236

Про айфон в кредит? На ней все спотыкаются.

Попробуй переписать код внутри цикла примерно так:

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

«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.

Также, ты читал замечания под задачей?

> Подсказка: мало кому удается решить эту задачу с первого раза. Попробуй сделать так: для начала, поменяй сумму кредита на 4000, так как он выплачивается за 2 месяца и его легко посчитать вручную (всего выплачено 6123). Также, добавь в цикл if, выводящий значения всех переменных и попробуй понять, правильно ли они считаются. Разобравшись с этой суммой, можешь поставить назад число 40000.

Аноним 2016/02/26 01:56:07  №667241 226
>>667238
Спасибо анончик, сейчас попробую.
IDE в браузере Аноним 2016/02/26 01:56:41  №667242 227
Аноны, напомню что есть интересная облачная IDE - PHP, Апач, MySQL,отладка - все уже настроено и установлено, код можно править и запускать прямо в браузере или брать с гитхаба, бесплатно, мой обзор: >>667010

Зайдите, попробуйте, кому интересно.
Аноним 2016/02/26 02:01:51  №667247 228
>>667242
Твоя IDE? Я уже зарегистрировался.
Аноним 2016/02/26 02:33:33  №667269 229
В общем, я дописал программу "пиши правильно".
Но мне кажется, что я тут велосипедов нагородил.
Оцените, в общем.
https://ideone.com/AJaH1S
Аноним 2016/02/26 04:50:54  №667284 230
Сап.
Есть дефолтный загрузчик изображений на сервер.
При попытки загрузить изображение с именем:
CuteLittleGirl проблем не возникает , но если написать на русском языке , он сохраняет его с таким именем: сиваятян , при этом , в бд отправляется нормальное имя тобишь КрасиваяТян.jpg , да конечно я понимаю что проблема в кодировке , но , как ее решить?..

https://ideone.com/3aFoEt
Аноним 2016/02/26 05:53:56  №667290 231
>>667284

И еще , не подскажите как можно вытащить уже измененное mt_rand имя, что бы я мог его потом запихнуть в БД? ><
Вот код:
https://ideone.com/AJJ62O
Аноним 2016/02/26 06:43:36  №667299 232
>>667290
разобрался с генерацией случайного имени.
Аноним 2016/02/26 08:36:53  №667348 233
>>667188
Если ты пишешь по стандартам, твой код будет понятен в любом случае.
http://getjump.me/ru-php-the-right-way/
https://github.com/getjump/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md
https://github.com/getjump/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

>>667284
>copy($_FILES['uploadfile']['tmp_name'], $uploadfile)
Нельзя так, используй move_uploaded_file(). Эта функция проверяет, действительно ли этот файл загружен через POST.

>он сохраняет его с таким именем: сиваятян
Дело происходит под Windows? Придется конвертить имя из utf-8 в win-1251.
$winFilename = iconv('utf-8', 'windows-1251', $filename);
Аноним 2016/02/26 08:39:30  №667349 234
>>667348
Спасибо , но , опять уже со всем успел разобраться :D
Аноним 2016/02/26 09:03:18  №667361 235
Палиндром
не могу понять как это сделать
"проходим от края до середины посимвольно"
http://ideone.com/bpHlPB
Сумма Аноним 2016/02/26 09:07:52  №667362 236
Оп, проверь задачу из прошлого треда, пожалуйста.



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

Не понял этот момент. То есть вместо функции inclineWord сделать тоже самое в функции smallNumberToText?


ОП, проверь, пожалуйста. Может на 3й раз получится.

http://ideone.com/f2IIDk
Аноним 2016/02/26 09:26:02  №667369 237
Аноним 2016/02/26 09:29:18  №667372 238
>>667369
ну это все конечно круто,но мне бы понять как это работает все
Аноним 2016/02/26 09:31:34  №667374 239
Аноним 2016/02/26 10:40:02  №667400 240
Помогайте снова, я тот анон с дебаггером, начальном скрипте норм дебажит, но вот когда программа выполняется по 10ку скриптов, и я где то в глубине ставлю брейкпоинты - оно их просто не видит, но в файле конфига или индекса нормально стопается.
Аноним 2016/02/26 11:35:23  №667432 241
Сорян за оффтоп, не бейте ногами.
Подбираю второй монитор для веб-макакинга.
Первый: 20" квадрат, 1400 х 1050.
Кандидаты во второй:
22" 1980 х 1020
22" 1680 x 1050
20" 1600 x 900
19" 1366 x 768
Больше 22 ставить негде. Зрение так себе, боюсь что фулл хд буду рассматривать через лупу. И ваще как у вас все устроено где на каком мониторе иде, браузер, все дела?
Аноним 2016/02/26 11:37:28  №667436 242
>>667432
>22" 1920 х 1080
конечно же
Аноним 2016/02/26 11:39:16  №667437 243
>>667432
FullHD и шрифты большие ставь и всё.
То что какие-то какеры себе ставят 9pt это их личная проблема, тебе нужно не весь код сразу видеть, а строк 30-40, больше мозгом всё равно не объять.
Аноним 2016/02/26 11:50:50  №667449 244
>>667432

> 1400 х 1050.
А что это за странное разрешение? Оно родное? Если нет то пиксели будут размытые, вредно для зрения.
Аноним 2016/02/26 11:52:58  №667452 245
>>667432
У меня тоже зрение говно, 23 дюйма, 1920 на 1080.
В браузерах и иде шрифт увеличенный.
Аноним 2016/02/26 11:54:11  №667454 246
>>667449
Родное, довольное редкое.
Аноним 2016/02/26 12:03:15  №667466 247
>>667432
Взял себе DELL 24" 1920х1200, вроде норм
Аноним 2016/02/26 13:05:16  №667518 248
14564811169200.png (120, 3840x1080)
1080x3840
>>667400
Дебажишь через расширение? С кукой он должен все видеть в пределах домена.

>>667432
Квадрат 17 1280 на 1024 в треде. Ну я сначала взял 22 TN. Потом поменял на 22 ips. Потом на 24. Теперь 2 по 24, я бы и 3-й взял, но цены в моих пердях и в долларах повырастали. Весь этот путь я прошел за месяц.
Аноним 2016/02/26 13:45:40  №667552 249
Пожалуй, лучший из тредов
Относительно недавно я сделал все задания из шапки (по моему был сайт на народе) но по какой то причине забросил этот чудо язык кажется я ебался с настройками лампа, ксампа и вообще заебался с этими линуксами

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

Моя цель - написать элементарный сайт и пердолить его. ПРОСТО ДЛЯ ДУШИ. Мне все таки 20 ёбаных лет, а я не умею в пхп и БД. Это меня крайне унижает. Анон, поставь на путь истиный.
Аноним 2016/02/26 13:50:35  №667554 250
мда
Аноним 2016/02/26 14:16:57  №667574 251
>>667552

Мне 23 года, у меня диплом программиста, я не умею в ПХП и БД. Обнимемся?
Аноним 2016/02/26 14:19:53  №667576 252
>>667574
Ну го учить, хули! Я думаю ты знаешь что нибудь другое
Аноним 2016/02/26 15:26:25  №667632 253
>>667574
Мне 23, у меня диплом экономиста, и я только начинаю учить Пхп, чтобы перекатиться в пограминг
Аноним 2016/02/26 15:30:22  №667636 254
>>667518
Покажи пожалуйста все свои настройки в PHPstorm связанные с дебаггом и если не сложно в виртуалке как ты сетевое соединение настраивал (я через мост сделал и на убунте поднял вебмин) Я вот счас ребутнул машину, всё запустил с нуля, и теперь у меня даже в первом скрипте шторм не видит дебаггер
Аноним 2016/02/26 15:42:34  №667648 255
>>667636
в файле пхп.ини пропиши путь к дебаггеру и всё, в шторме не надо настраивать, оно само найдёт
Аноним 2016/02/26 15:53:35  №667661 256
>>667648
[xdebug]
zend_extension="/usr/lib/php5/20121212/xdebug.so"
xdebug.default_enable = On
xdebug.var_display_max_depth=6
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9005
xdebug.remote_handler=dbgp
xdebug.idekey=PHPSTORM
xdebug.remote_mode = req
xdebug.remote_autostart=1
xdebug.remote_log=/tmp/xdebug.log
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/var/www/debugger/"
xdebug.profiler_output_name = "callgrind.%u.%H_%R"
xdebug.show_local_vars=1
xdebug.overload_var_dump=1
xdebug.max_nesting_level = 200
Вот настройки пхп.ини
меня смущает строчка xdebug.remote_host=127.0.0.1
что именно здесь должно быть?
Аноним 2016/02/26 15:58:43  №667666 257
>>667661
почему ссылка на файл .so? Хдебаг идёт как .dll
Аноним 2016/02/26 16:01:38  №667670 258
>>667576
Я думаю, он знает такое, что ему твоя пыха обоссаная нахуй не нужна.
Аноним 2016/02/26 16:02:20  №667671 259
14564917410630.png (54, 1457x470)
470x1457
Аноним 2016/02/26 16:18:11  №667696 260
Аноним 2016/02/26 16:34:08  №667739 261
Аноним 2016/02/26 16:45:44  №667772 262
>>667661
Должен быть ip по которому твоя убунта видит виндовс.
>>667666
Потому что dll это виндовс библиотека.
Аноним 2016/02/26 16:46:14  №667775 263
Аноним 2016/02/26 17:06:56  №667834 264
>>667636
Дык выше уже все что где то менял выложил. У убунты нужно 2 сетевых интерфейса что бы ты к ней мог приткнуться и она к тебе. Паста от ОПа:
Алсо, если ты ставишь линукс в виртуалке в Oracle Virtual Box, то наткнешься на проблемку: линукс может лезть в интернет, а ты к нему подсоединиться не можешь. Это по той причине, что Vbox подсоединяет сетевую карту твоей виртуалки к NAT. Чтобы в нее коннектиться, надо будет добавить вторую сетевую карту, выставить ей примерно такие настройки как на пикрелейтед (обрати внимание на слово host-only network).

Ну и потом в самом дебиане перенастроить эту карточку, естественно, сама она себя не настроит. Вот что надо дописать в /etc/network/interfaces:


auto eth1

iface eth1 inet static

address 192.168.56.2

netmask 255.255.255.0

gateway 192.168.56.1

metric 100


Ну надеюсь ты понимаешь, что тут указан Ip-адрес и шлюз.


После этого, перезапусти сеть через sudo service networking restart

Если все ок, то ты сможешь пинговать виртуалку с хоста через ping 192.168.56.2 .Если не ок — читай записи в /var/log/messages

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

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

Работать через консоль виртуалки неудобно, так что включи ssh и коннекться через программу вроде putty. По ssh можно также передавать файлы (например программой WinSCP) так что все это тебе пригодится.

Проблемы? Смотри логи командой tail -30 /var/log/messages (понядобятся права админа).
Аноним 2016/02/26 17:23:44  №667864 265
>>667834
Всем спасибо кто помогал, в общем всё работало ещё вчера, я не учел что у меня vqmod на сайте, и брейкпоинты в оригинальных файлах не влияли на работу сайта, он просто работал с закешированных файлов.
Аноним 2016/02/26 17:26:37  №667871 266
Проблемы со стилями для принтера, делаю отдельный файл css и пишу там следующее:

@media print {

Копирую сюда весь css код

}

При этом ничего не выравнивается по центру, когда выводишь документ на печать, выравнивается только если проставить вручную все выравнивания в самом HTML, но это само собой долго и неудобно.
Аноним 2016/02/26 17:30:52  №667876 267
Пишу
<?foreach($arr as $key=>$val) {?>
<tr>
<td><?=$key?></td>
<td><?=$val?></td>
</tr>
<?}?>
Выдает Undefined variable val и key. Что за дела?
Аноним 2016/02/26 17:42:47  №667883 268
>>667876
Всё понял. Короткая запись <? не работает.
Аноним 2016/02/26 17:44:50  №667886 269
>>667883
Попробуй так.
<?foreach($arr as $key=>$val) {
<tr>
<td><?=$key?></td>
<td><?=$val?></td>
</tr>
}?>
Аноним 2016/02/26 17:45:46  №667887 270
>>667886
<?foreach($arr as $key=>$val) {
<tr>
<td>$key</td>
<td>$val</td>
</tr>
}?>

А лучше так.
Аноним 2016/02/26 17:46:13  №667888 271
>>667883
Так ты сначала определи сами переменные-то, лалка.
Аноним 2016/02/26 17:49:10  №667890 272
>>667888
Так они определены в foreach
Аноним 2016/02/26 17:50:17  №667892 273
>>667890
А ты сам массив $arr разве определил?
Откуда они у тебя возьмутся, из воздуха?
Или ты не весь код показал.
Аноним 2016/02/26 17:51:33  №667893 274
>>667892
Я мимопроходил вообще.
Аноним 2016/02/26 17:52:34  №667894 275
>>667892
Это кусок кода, $arr определен ранее.
Аноним 2016/02/26 17:54:10  №667896 276
>>667894
Вот такое что-то тебе нужно было: http://ideone.com/wigFKJ ?
Или что? Я просто не работал с HTML в PHP пока, стало интересно.
Аноним 2016/02/26 17:57:47  №667899 277
>>667896
Спасибо, но я уже написал, что разобрался.
Аноним 2016/02/26 18:02:36  №667902 278
>>667899
А для чего это было нужно, что-то в задаче ОПа?
Аноним 2016/02/26 18:11:50  №667912 279
>>667902
Нет. Решал задачу на расчет набора монет для суммы сдачи, используя mvc.
Аноним 2016/02/26 18:20:56  №667916 280
14565000565030.png (525, 750x548)
548x750
Карач, все ваши калбэки превращаются в банальный call eax. Шах и мат, абстрактные долбоебы. Следующими для унижения будут замыкания и комбинаторы
Аноним 2016/02/26 18:27:57  №667921 281
>>667916
А почему на фоне не члены и членики, большие и маленькие?
Аноним 2016/02/26 19:16:01  №667977 282
14565033618350.png (152, 724x539)
539x724
Аноним 2016/02/26 19:28:56  №667991 283
>>667916
Кто-то очень не любит php и репостит вам из ньюфаг-треда.
Аноним 2016/02/26 21:13:58  №668089 284
14565104386530.jpg (159, 1024x768)
768x1024
Короче, делаю манячат, как мне отображать нормально сообщения с тегами типа <div> <script> и тд? Я сделал автозамену на спецсимволы, но думаю что есть какой то более простой вариант, например прописать что то в css или завернуть текст сообщения в какой нибудь текст. Так как сделать?
Аноним 2016/02/26 21:14:51  №668091 285
>>668089
>завернуть текст сообщения в какой нибудь тег
Аноним 2016/02/26 21:45:17  №668115 286
Аноним 2016/02/26 21:46:27  №668116 287
14565123871980.jpg (58, 990x619)
619x990
Подмогни немножечко :)
как сделать так, чтобы депозит перевалил за лям?
Аноним 2016/02/26 21:46:49  №668117 288
Аноним 2016/02/26 21:56:49  №668122 289
>>668116
Поставь $deposit *= 1.1 в тело цикла.
После каждой итерации проверяется условие в цикле, поэтому как только становится больше миллиона - всё обрывается, не срабатывает echo.
Аноним 2016/02/27 00:50:08  №668254 290
>>667916

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

Алсо чтобы увидеть ассемблерный листинг скопилированной функции, незачем запускать отладчик. Можно попросить компилятор сгенерировать ассесблер. Иди мануалы читай, а не демонстрируй свое невежество.
Аноним 2016/02/27 01:15:14  №668273 291
>>665473
Ну главным плюсом считал скорость развертывания, имхо подразумевая то что на винде вообще не удобно работать.
Установить что либо на него можно.
Вагрант ставится из экзешника и ни с чем не конфликтует.

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

Аноним 2016/02/27 01:35:31  №668284 292
Вечер в хату, помогите с задачей про айфоны. Я только начал осваиваться в погромирование. Но вроде туповат. Я не совсем пойму условие задания. Мне нужно, чтобы в конце этой задачи не было отрицательного значения? Но тогда у меня остаётся долг в банке и я не пойму что писать в теле цикла.
Аноним 2016/02/27 01:38:00  №668285 293
>>668284
Запости что уже осилил.
Аноним 2016/02/27 01:40:15  №668287 294
Аноним 2016/02/27 02:18:46  №668296 295
>>668287
Алгоритм. Считаем сколько сейчас васян должен банку.

Если васян должен больше чем 5000 то платим 5000. Иначе платим сколько нужно.

Проверяем. Кредит баланс = 0 ? тогда выходим из цикла.

Обрати внимание: сначала считаем долг за текущий месяц. А потом платим сколько нужно/можем. А не в одну строчку как в исходном алгоритме.
Аноним 2016/02/27 02:42:15  №668308 296
>>668296
Спасибо, я решил её. Не знаю, такое решение принимается? Или это не верно?
http://ideone.com/P8593d
Аноним 2016/02/27 02:54:31  №668311 297
>>668308
Не принимается.
Если, конечно, ты не захотел профинансировать банк лишними тремя тысячами.
Аноним 2016/02/27 03:18:15  №668312 298
Аноним 2016/02/27 05:05:18  №668331 299
Когда я читаю этот тред, у меня чаще всего появляется ощущение вроде BOMBANOOLO, потому что я понимаю, насколько я мало знаю и насколько я тупой в принципе. Но когда читаю ньюфагов, я понимаю, что я уже далеко продвинулся. Но все же нагоняет уныние то, что эти ньюфаги после пары задачек сливаются, а я так и остаюсь самым последним.
Аноним 2016/02/27 08:28:11  №668372 300
Не получается сделать отладку в NetBeans. Вроде настройку xdebug сделал, phpinfo его показывает. При запуске отладки в строке адреса к адресу добавляется ?XDEBUG_SESSION_START=netbeans-xdebug. Пишет
Object not found!

The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
В чём может быть дело?
Аноним 2016/02/27 08:30:56  №668375 301
>>668372
Да ты заебал со своей отладкой! Хуярь как есть, блять!
Аноним 2016/02/27 08:32:08  №668376 302
>>668331
Держи нас в курсе.
Аноним 2016/02/27 08:50:55  №668383 303
>>668372

Проверь URL в адресной строке браузера - он скорее всего неправильный.
Аноним 2016/02/27 10:57:53  №668434 304
>>668376
Для человека достаточно важно формулировать свои проблемы в словах, а также быть услышанным, пусть это и мимокрокодилы в интернете.
Аноним 2016/02/27 11:22:29  №668446 305
Не спал сутки. Помогите, пожалуйста, с говнокодом.
Почему в этом http://ideone.com/xpUiVh случае в форыче строка склеивается как положено, а тут http://ideone.com/xpUiVh она дублирует сама себя, и получается 3 строки, вместо одной? Код один и тот же ведь. Ну как мне кажется.
Аноним 2016/02/27 11:23:16  №668447 306
Аноним 2016/02/27 11:53:18  №668477 307
По тестированию есть уроки или самому искать надо?
Аноним 2016/02/27 12:25:16  №668497 308

Аноним 2016/02/27 12:25:59  №668498 309
Знатоки вордпресса есть? Мне нужно добавить несколько фильтров (add_filter, изменение заголовков, метатегов и контента) только на конкретной странице. Или зная ID страницы, или когда срабатывает шорткод. Так вот, есть ли варианты это сделать, не запуская сам фильтр и не проверяя ID внутри него?

К примеру, грубо говоря
function edit_the_title($title){
If (get_the_ID()=="69"){
return $title." Edited title";
}
return $title;
}
add_filter('wp_head','edit_the_title');

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

If (get_the_ID()=="69"){
add_filter('wp_head','edit_the_title');
}
И тому подобное не работает, я полагаю что станица еще не успевает получить ID на момент обработки основного уровня плагина. Вообще не могу найти в гугле примеров работы add_filter внутри других функций и хуков.
Аноним 2016/02/27 12:51:41  №668530 310
>>668331
я это ты, братюня, ты это я
Аноним 2016/02/27 13:01:21  №668547 311
Анон, поясни, нахуя кодить сайты если уже полно CMS и конструкторов? Не кажется ли тебе, что это умирающая тема уже?
Аноним 2016/02/27 13:06:09  №668555 312
А кто сказал, что мы сайты кодим? Мы веб-приложения пилим.
Аноним 2016/02/27 13:08:03  №668557 313
>>668555
Какие ты веб приложение на пыхе пилишь? На жсе можно расширение браузерное сделать, игру, да что угодно. А на пыхе только сайтики.
Аноним 2016/02/27 13:11:47  №668560 314
>>668557
Веб-приложения, где нужна связка php+mysql.
Аноним 2016/02/27 13:16:00  №668564 315
>>668560
Пример веб-приложения приведешь?
Аноним 2016/02/27 13:23:54  №668568 316
Аноним 2016/02/27 13:28:08  №668577 317
Аноним 2016/02/27 13:33:04  №668582 318
Аноним 2016/02/27 13:54:53  №668597 319
>>668582
Так у тебя var_dump внутри foreach, вот он на каждой итерации тебе и показывает содержимое строки.
https://ideone.com/8unvtR
Аноним 2016/02/27 13:59:00  №668599 320
Аноним 2016/02/27 14:04:37  №668605 321
>>668599
>>668597
Пиздец, мозги совсем атрофировались за ночь. Спасибо огромное. Пойду спать.
Аноним 2016/02/27 14:13:04  №668613 322
Чего-то веб оказывается сложнааа. И сервера какие-то, и апачи, и мускулы, и фронт надо знать. Я даже не знаю за что браться прямо сейчас. Я нуфаг, хочу вкатиться в программирование. Скажите за что браться сейчас и посоветуйте лит-ру где хотя бы будут объяснять что это за серверы и как вообще сам веб работает.
Аноним 2016/02/27 14:15:26  №668620 323
>>668613
Чтобы не отбить желание кодить можешь пока писать на http://ideone.com/ и делать задачки из оп-поста.
Аноним 2016/02/27 14:23:19  №668628 324
>>668620

Или в онлайн-IDE с уже настроенным Апачом, MySQL и PHP, про которую я писал выше: >>667010
Аноним 2016/02/27 14:36:33  №668642 325
>>668312
Нет, там должна сумма выплат быть 61270.
Конкретно в этом твоём варианте вот что неверно: когда $creditBalance у тебя становится меньше $monthlyPayment, то у тебя следует вот это выражение: $creditBalance = ( $creditBalance х $percent ) + $servicePayment - $monthlyPayment;. И в какой-то момент это уходит в минус, от чего дальше всё идёт неверно.
Подсказка: попробуй ввести отдельную переменную для подсчёта $creditBalance = ( $creditBalance х $percent ) + $servicePayment, ведь именно когда этот момент становится меньше $monthlyPayment, нам и надо просто его выплатить и приплюсовать к $paymentTotal.

>>668331
Не всё сразу, бро.
Я вот уже третий месяц постепенно иду.
Есть братишки, которые одну за одной решали задачи, а потом слились на подступе к ООП.
У меня так-то тоже ПРИГОРАЕТ постоянно. Смотрю на "Кошки-мышки", "Сапёра" на JS, на "Вектор" - просто ПОЛЫХАЕТ, потому что пока ни черта не могу понять. Вот со следующей недели к ООП подступаю, только начал читать Зандстру и ОПа.
Аноним 2016/02/27 15:03:37  №668666 326
>>668498
Вордпресс не станет больше тупить из-за одного-единственного if.

>>668547
Без базара, братиш.
Разрабатывай сайты на CMS, греби бабло лопатой.

>>668613
Купи себе хостинг за 12 рублей в месяц и забудь про все это. http://host-food.ru
Аноним 2016/02/27 15:05:18  №668669 327
>>668547
Есть сайты, а есть веб-приложения
Сайты наполняются текстом и jquery при помощи мышки, веб-приложения — нет

Все зависит от задач
Аноним 2016/02/27 15:40:10  №668723 328
Правильно я понимаю, что в задаче "Числа прописью" нельзя обработать число больше PHP_INT_MAX?
Если я большое число буду обрабатывать как строку т.е. для разбиения использовать substr, а уже выделенные сотни, тысячные обрабатывать как числа это нормально или так делают только быдлокодеры?
Аноним 2016/02/27 15:45:44  №668730 329
>>668723
Лучше использовать вот такие конструкции:
if ($number >= 999 || $number <= 999999) {
}
if ($number > 999999 || $number <= 999999999) {
}
Это всё облегчит нахождение чисел для переработки "троек" (сотен, сотен тысяч и сотен миллионов).
Аноним 2016/02/27 15:47:28  №668733 330
>>668730
Ой, то есть в первом варианте:
if ($number > 999 || $number <= 999999) {
}
А до этого нужен вариант:
if ($number <= 999) {
}
Там будет просто сама функция, которая раскладывает минимальное число, тройное.
Аноним 2016/02/27 15:56:37  №668743 331
>>668733
>>668730
А если я хочу обрабатывать числа больше 999999999?
На моём комплюхтере с шиндовс echo PHP_INT_MAX выдаёт 2147483647 все что больше преобразуются в float.
Аноним 2016/02/27 16:05:06  №668751 332
>>668723

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

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

http://php.net/manual/ru/book.gmp.php
http://php.net/manual/ru/book.bc.php

Аноним 2016/02/27 16:07:14  №668753 333
Аноним 2016/02/27 16:08:47  №668757 334
сап, не могу настроить апач 2.2 в опенсервере.

http://pastebin.com/z2JZFxxz конфиг апача. В настройках в опенсервере слушает все ip, в hosts алиасы на оба(127.0.0.1 и 192.168.1.8) ведут на localhost. С локального компа могу зайти на сайт только через локалхост, тогда как по обоим ип выдает ошибку пикрил
Аноним 2016/02/27 16:09:07  №668758 335
14565785472530.png (10, 822x276)
276x822
Аноним 2016/02/27 16:13:54  №668768 336
>>668723
Конверти в строку, используй substr.
(Здесь можно, цифры занимают 1 байт.)

Проверить, что на вход тебе пришли сугубо цифры, можно при помощи ctype_digit(string $string);
Аноним 2016/02/27 16:18:33  №668779 337
>>668723
Ты задания с регулярками пропускаешь априори?
Аноним 2016/02/27 16:23:56  №668789 338
>>664839

> Типа такого: require_once(__DIR__ . '../src/init.php') ?
Да

>> По моему тут может быть ситуация когда переменная не определена. Как можно писать надежный код если неизвестно существует переменная или нет?
> Поясни, пожалуйста. isset($_GET['registered']) недостаточно?

Речь по $msg. Она у тебя создается внутри 2 ифов выше этой строки:
https://github.com/disbeliever/php_training/blob/master/students/src/ControllerStudent.php#L23

Следовательно если ифы не сработают, переменная не будет существовать.

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

> В UrlHelper есть смысл параметры ($sort, $dir и прочее) сделать членами класса и передавать в конструктор?
Это нелогично. Конструктор для тех параметров которые обязательны для создания объекта. С какой это стати нам нужно указывать сортировку чтобы создать класс генерации URL?

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

> unset($_COOKIE);
// используем функции хелперов, которые работают с $myCookie
> $_COOKIE = $myCookie;
Это вообще что-то странное, зачем уничтожать стандартный массив PHP?

>>> public static function fromRow($row)
>> Маппингом студента на строчку базы данных должен заниматься класс для работы с базой данных.
> Но это же по сути конструктор. В языке с перегрузкой методов, я бы их и использовал, а тут приходится так извращаться.
Перегрузка придумана не для того чтобы нарушать принципы разделения кода. Ты невнимательно прочел, то, чт я написал, давай я еще раз повторю:

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

> Я понимаю, но зачем нам здесь поддержка кириллицы?
Поддержка не нужна, но проще везде поступать единообразно и использовать mb-функции. Давай посмотрим с другой стороны. А какая выгода использовать здесь strlen? Чтобы сложнее было понять правильный код или нет?

strlen это не функция подсчета числа символов. Это функция подсчета числа байт, а в твоем коде очевидно считается число символов - следовательно ее использование тут не очень логично.

Аноним 2016/02/27 16:34:51  №668802 339
>>664870

> https://ideone.com/lqLSPc
Все верно

> https://ideone.com/ccwxQH
Тут тоже все правильно.

> https://ideone.com/ZuRDo8

> echo $string = "Я {$wor
Присваивание (=) и echo это 2 отдельных команды и они должны быть на 2 отдельных строках. Но в данном случае вообще непонятно зачем тут переменная и что мешает сразу вывести строку.

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

> https://ideone.com/7g3WwD
все правильно.

>>665126

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

Вообще я думаю, тебе не понадобится большинство фич.
Аноним 2016/02/27 16:35:56  №668806 340
>>665163

В PHP для этого есть SplObjectStorage.

Аноним 2016/02/27 16:37:11  №668808 341
>>668757

Я не разбираюсь в опенсервере, так как он накручивает там что-то свое для конфигурирования Апача.
Аноним 2016/02/27 16:40:14  №668810 342
>>668808
Ну, напрямую я не мог конфиги править, после перезапуска он их стирал. Нужно править только через настройки самого опенсервера, но а сами параметры доступа вроде верны. Я везде поставил Allow All, в чем проблема?
Аноним 2016/02/27 16:52:16  №668831 343
>>668810

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

https://httpd.apache.org/docs/2.4/ru/mod/core.html#virtualhost

Соответственно если он иногда работает а иногда нет, что-то не так настроено. Надо смотреть какой там конфиш и сравнивать с докуентацией.

Не понимаю какая выгода мучаться с настройками опенсервера и разбираться что он делает с конфигами когда можно не ставить сборки, а ставить чистый Апач который работает как описано в документации.
Аноним 2016/02/27 16:52:44  №668832 344
>>668779
Нет, всё сделал. Только причем тут эти задачи? Разбивать регулярками? Так суть вопроса не в том, как разбивать, а можно ли с числом в данной задаче работать на этапе разбиения как с строкой.
Аноним 2016/02/27 17:03:29  №668844 345
14565818098190.jpg (36, 500x475)
475x500
>>664784 (OP)
http://ideone.com/jwSIEZ
Ничего не понимаю. В туториале команда ucfirst, кажется, не упоминалась, но почему она не работает? Если вставляю простую строку - делает первую букву заглавной, если строка из массива - игнорирует.
Аноним 2016/02/27 17:08:12  №668847 346
>>668832
Да ни при чем. Просто я думал, что я тут один такой тупой сижу и не могу решить задачу с регуляркой, а вы все их тупо пропускаете.
Аноним 2016/02/27 17:08:30  №668848 347
Хочу сделать сайт-визитку. Мне для этого cms какую брать или самому писать?
Аноним 2016/02/27 17:17:27  №668855 348
Аноним 2016/02/27 18:00:57  №668884 349
Не пойму, в слиме нельзя что-ли заголовки через header указывать, только через $app->response()->header?
Аноним 2016/02/27 18:09:19  №668894 350
Надо написать счётчик для вордпресс, есть определённая кнопка на записях одной категории, по которой вызывается определённое действие (без перезагрузки страницы и без аякса, обыкновенный яваскрипт), мне надо подсчитать сколько раз нажималась эта кнопка на каждой записи. Судя по всему, следует использовать аякс. Первое что приходит в голову это использовать шорткод (в котором будет скрипт счётчика), но в таком случае шорткод надо будет проставлять на каждой записи, а это я думаю не очень удобно, хотя на каждой записи уже есть шорткоды, которые подключают скрипт. Как можно сделать так, чтобы шорткод или функцию можно было бы подключить только для этой категории записи? Данные счётчика мне надо хранить в формате:

id - название страницы - количество нажатий

Стоит ли создавать для этого новую таблицу в вордпресс или постараться как-то обойтись существующими?
Аноним 2016/02/27 19:05:41  №668943 351
Есть два стула
$a = -12;
$b = 1;
$c = 1;
$discr=$b$b-4$a$c;

$dva_a = $a
2;
$x1=(-$b+sqrt($discr))/$dva_a; //ответ -0.25(правильный)


$x1=(-$b+sqrt($discr))/$a * 2; //ответ -1(неправильно)

ЧЯДНТ?
Аноним 2016/02/27 19:07:31  №668949 352
>>668943
> $dva_a = $a 2;
$dva_a = $a*2;

быстрофикс
Аноним 2016/02/27 19:09:13  №668952 353
>>668943
там должно быть /($a2) а не /$a2 это разные выражения
Аноним 2016/02/27 19:14:34  №668956 354
>>668666
>Вордпресс не станет больше тупить из-за одного-единственного if.
Бля, точняк, протер глаза - это у меня ORDER BY RAND() в таблицах по несколько десятков тыщ записей отжирает время.

>>668894
Шорткод со скриптом счетчика - так себе решение, лучше подключи JS файл со скриптом (через wp_enqueue_script() или как его там), который будет смотреть, та ли категория у страницы (я давно не делал ничего с JS на WP, но кажется там есть JS объект какой-то с информацией о посте) и навешивать действия на твои кнопки со счетчиком.
Хранить данные лучше в таблице вордпресса - кажется, wp_postmeta тебе должна подойти идейно.
Аноним 2016/02/27 20:03:16  №669015 355
<div class="main">
.main{
Background: url(images/1.jpg);
Height: 300px;
Weight: 100%;
Background-size: cover ;
}
</div>
Не получается вставить фон в css.
Далее вставляю его в html
<link rel="stylesheet" type="text/css" href="style3.css">
Что я делаю не так?
Аноним 2016/02/27 20:04:31  №669018 356
>>669015
Background-image, а не background
Нуфаг 2016/02/27 20:10:07  №669029 357
Сап, как посоветуете начать изучать PHР?
Аноним 2016/02/27 20:11:45  №669034 358
>>669029
Шапка для кого написана?
Аноним 2016/02/27 20:29:02  №669054 359
>>669018
Изменил.

Все равно фон не менятся, где еще может быть ошибка?
Аноним 2016/02/27 20:29:17  №669055 360
сап, аноны! я прочел несколько книг по пхп от орайли и теперь решил сесть и попробовать написать какое-нибудь тестовое задание шоб опыта набраться. сделал задание на базу студентов от опа, но больше ничего не лезет в голову. накидайте мне средних заданий, чтобы реально можно было попрактиковаться
Аноним 2016/02/27 20:38:36  №669065 361
>>669055
Файлообменник смотри, это следующая задача от ОПа. Так же можешь попробовать написать свою борду или блог, но это уже посложнее будет.
Аноним 2016/02/27 20:41:42  №669069 362
>>669065
кстати, интересно, неужели все треды в борде хранятся в бд? или есть какой-нибудь механизм автоочищения таблиц? как думаете?
Аноним 2016/02/27 20:44:00  №669071 363
>>669069
Конечно есть механизм автоочищения. То же самое происходит и с файлами в этих тредах, если тред тонет, то все картинки которые были туда загружены будут доступны на сервере какое-то время (в /b/ это обычно пару часов, за тематику не знаю).
Аноним 2016/02/27 21:08:45  №669098 364
>>669054
Ты уверен, что путь правильно прописал? Судя по картинке, у тебя в папке с файлом .css есть папка, где лежит искомый фон, так?
Аноним 2016/02/27 21:09:02  №669099 365
>>669098
Ой, судя по коду, то есть.
Аноним 2016/02/27 21:14:41  №669103 366
>>669098
Не-а, фон (картинка) в другом месте. В этом фейл?
Аноним 2016/02/27 21:16:27  №669107 367
>>669054
Открой код страницы в хроме (я надеюсь у тебя хром) выбери body в колонке стилей справа смотри на ссылку со стилем, где прописан background-image и пройди по ссылке.
Аноним 2016/02/27 21:18:03  №669109 368
>>669107
По изображению? не переходит
Аноним 2016/02/27 21:20:24  №669115 369
>>669109
Почему не переходит? Полную ссылку в студию и местоположение картинки относительно корня сайта.
Числа прописью Аноним 2016/02/27 21:23:55  №669120 370
Аноним 2016/02/27 21:38:18  №669141 371
>>669103
Ну вообще-то, да. Гугли пути в css.
Аноним 2016/02/27 21:45:12  №669149 372
>>668743
Да хоть 9999999999999999999999999999999.
Просто соответствующее количество if'ов для этого будет нужно.
Ты же будешь в строку переводить, а не математически.
Про математически анон тебе подсказал уже.
Аноним 2016/02/27 21:51:54  №669157 373
>>669141
Все равно не выходит, перенес в папку css со стилями, в папку images.
Аноним 2016/02/27 21:52:20  №669158 374
>>669157
Алсо, тут вроде бы тоже все чисто
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="style3.css">
<meta charset="utf-8"/>
Аноним 2016/02/27 21:53:45  №669161 375
Аноним 2016/02/27 22:28:18  №669198 376
Лол.

Решал задачку по генератору имён. Ну скопировал код, а про название ф-ции что берёт рандомный индекс массива и не увидел. Решил всё способом, когда был
$random = rand(count($letters)-count($letters),count($letters));
Аноним 2016/02/27 22:36:55  №669208 377
Аноним 2016/02/27 22:37:06  №669210 378
Чувак, который решал проблему про пути в css, решил уже?
Проверьте задачки Аноним 2016/02/27 22:42:21  №669219 379
Аноним 2016/02/27 22:42:54  №669221 380
>>669208
Вот - >>669219.
Только там небольшая ошибка с этим способом была и я всё же поставил нормальную ф-цию.
Аноним 2016/02/27 23:27:13  №669271 381
Поясните за задание "Шифровка" http://archive-ipq-co.narod.ru/l1/strings.html

Что-то не пойму, в чём стоит задача - нужно допилить для всех букв шифрующие символы или как?
Аноним 2016/02/27 23:29:23  №669272 382
>>669271
>Что-то не пойму, в чём стоит задача - нужно допилить для всех букв шифрующие символы или как?
Да.
Аноним 2016/02/28 01:52:39  №669382 383
Почаны, только начал.
Как в echo складывать две переменные?
echo "$a+$b" выводит 1+1, а не 2. Нужно создавать третью переменную для результата?
Аноним 2016/02/28 01:57:58  №669384 384
Аноним 2016/02/28 01:59:03  №669385 385
>>669384
Оу, извиняюсь
Спасибо
Аноним 2016/02/28 03:49:25  №669426 386
>>668894
>>668956

Я думаю, проще всего в шаблоне вывода записи сделать условие:

если (категория == нужной категории):
<скрипт>запуститьСчетчик()</скрипт>
endif

>>668943

/ $a * 2 значит поделить на a и умножить на 2, надо скобки ставить

>>668956

> Хранить данные лучше в таблице вордпресса - кажется, wp_postmeta тебе должна подойти идейно.
Да, если надо только хранить число нажатий и не надо хранить каждое нажатие отдельно

>>669015

<div class="main">
.main{
Это вообще что? Смесь CSS и HTML в одном файле?

>>669158

Залей свой HTMl и CSS код на jsfiddle.net

>>669198

> count($letters)-count($letters)
Это такой хитрый способ записать число 0?

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

Аноним 2016/02/28 05:09:24  №669451 387
я идиот и нихуя не понимаю
<div class="form-group required">
<label class="control-label" for="input-payment-lastname"><?php echo $entry_lastname; ?></label>
<input type="text" name="lastname" value="<?php echo $lastname; ?>" placeholder="<?php echo $entry_lastname; ?>" id="input-payment-lastname" class="form-control" />
</div>

есть форма, как отправить в ластнейм готовое значени и скрыть элемент формы удалить? json жалуется
Аноним 2016/02/28 05:18:55  №669457 388
>>669451

Изучить HTML, в частности скрытые поля форм. Если ты не знаешь HTML то надо читать учебники, а не копипастить куски кода из интернета.
Аноним 2016/02/28 05:26:28  №669460 389
>>669457
спс за совет, сделал костыль гореть мне в аду
Аноним 2016/02/28 08:23:32  №669532 390
хелп
Есть скрипт входа на сайт с сессиями , все вроде бы ОК , но , при попытки извлечь из БД что-то кроме поля username я получаю..нихуя. просто пустое поле , можете пожалуйста ткнуть на ошибку? Там немного , всего 5 файлов.
https://dropmefiles.com/p7XUK
Аноним 2016/02/28 14:05:07  №669712 391
>>668789
>Это нелогично. Конструктор для тех параметров которые обязательны для создания объекта. С какой это стати нам нужно указывать сортировку чтобы создать класс генерации URL?
ОК. У нас есть класс, в котором нет данных, и методы которого зависят только от своих аргументов. Почему я не могу сделать эти методы статическими?
Аноним 2016/02/28 14:26:58  №669731 392
Никак не пойму как писать грамотно тесты. Ну вот допустим у программа считает сумму двух чисел и реализован паттерн мвц. То есть у меня есть класс модели в котором содержится метод sum($a, $b), класс контроллера который передает пользовательские данные из представления в модель и класс представления, который подключает шаблоны страниц, выводит данные которые были получены из модели. Если речь идет о модульном тестировании, то мне нужно тестировать все методы всех классов, а не только метод суммы в котором содержится основная логика приложения? А как их можно тестировать?
Аноним 2016/02/28 14:33:24  №669735 393
>>669731
У тебя модель active record? Ну хуево тебе значит.
Если выделить слой сервисов то будет намного проще и тестить и мокать.
В правильных контроллерах логики быть не может поэтому и тестить там нечего.
Хотя конечно можно написать интеграционные тесты чтобы проверить те же роуты и что все заводится в продакшен-конфигурации.
Аноним 2016/02/28 14:45:01  №669741 394
Посоны, нужно выбрать 20 случайных уникальных строк из таблицы размером около 30 000 строк. Сейчас у меня тупо
SELECT `ID`, `NAME`, `CITY` FROM `TABLE` ORDER BY RAND() LIMIT 20
ID- авто инкремент праймери ки.
Поковырял это чуть-чуть, понял что это дохуя медленный запрос.
В качестве промежуточного варианта решил следующее:
1. Отдельным запросом узнать минимальный и максимальный ID
2. Нагенерить с mt_rand 20 случайных чисел между мин и макс ID
3. SELECT `ID`, `NAME`, `CITY` FROM `TABLE` WHERE `ID` IN ($random_range_string)

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

Короче, это разумный подход? Или существует какой-нибудь простой чудо-запрос, который сделает все красиво без этой еботы?
Аноним 2016/02/28 14:46:58  №669743 395
>>669741

Сделать индексированную колонку с цифрами от 1 до N и выбирать по условие x > R LIMIT y
Аноним 2016/02/28 14:52:52  №669744 396
>>669741
Написать хранимку которая будет дергать N раз

SELECT FROM table WHERE key >= FLOOR(RAND()MAX(id)) LIMIT 1
Аноним 2016/02/28 15:00:44  №669753 397
Ребятки, такая ситуация: допустим, я хочу начать разрабатывать некую йобу. Но создание гуёв хочу отложить на потом.
Вопрос: есть инструменты, которые помогут мне в тестировании функционала без пользовательского интерфейса?
Аноним 2016/02/28 15:06:51  №669756 398
>>669753
Десктопную на пхп? Мсье знает толк.
Во-первых оформляешь свою либу в пакет, пишешь юнит-тесты.
Потом можешь написать CLI как отдельный проект из которого дергаешь либу.
Потом делаешь свою гуйню, опять подтягиваешь либу, ибо нехуй держать яйца в одной корзине.
Аноним 2016/02/28 15:10:46  №669760 399
>>669756
>Десктопную на пхп?
Нет, это будет веб-приложение. Гуями я назвал html-шаблоны и js, и там тоже будет потом достаточно работы. Не хочу распыляться, хочу сначала сервер сделать, потом клиент.
Аноним 2016/02/28 15:23:41  №669774 400
>>669760
Т.е. SPA но сервер на пхп?
Но зачем если есть более приспособленные под это языки?
Ну в любом случае начинать надо со спецификаций, см. BDD или TDD что тебе больше вкатит.
Аноним 2016/02/28 16:54:45  №669927 401
>>669774
>Т.е. SPA но сервер на пхп?
Да, наверное SPA. Гуи буду пилить на этом: https://www.sencha.com/products/extjs/

>Но зачем если есть более приспособленные под это языки?
Потому что я изучаю пхп.
Аноним 2016/02/28 16:57:40  №669935 402
>>660204
Снова вбрасываю исправленную версию Grammar Nazi
вот из этого поста >>653722
Поправил некоторые моменты, как вывести только часть строки с ошибкой я так и не уловил.
http://ideone.com/SHG6hF
Аноним 2016/02/28 17:02:36  №669940 403
>>669935
Всё плохо.
Ты собери свой текст, сделай его без абзацев - увидишь, что именно там плохо.
http://ideone.com/yAVftj
Объясняли же ведь уже этот момент тебе.
И да, надо выводить не с помощью var_damp, а с помощью переменной. Для этого надо доставать из массива $match соответствующие значения (ошибки, которые туда набиваются).
Хелп Аноним 2016/02/28 17:06:06  №669943 404
Как научиться понимать чужой код? Может есть какие-нибудь книги или практические советы?
Аноним 2016/02/28 17:06:28  №669944 405
>>669935
>как вывести только часть строки с ошибкой я так и не уловил.
Надо захватывать соседние слова, только и всего.
Регулярка вида: "слово, пробел есть или нет, ошибка, пробел есть или нет, слово".
Ты не понял, как найти слово? Там же объясняется это несколько раз: [а-яё] - а дальше знак, который при следующем пробеле оборвёт это вырезание. В итоге регулярка захватит только соседнее слово.
Аноним 2016/02/28 17:07:12  №669946 406
>>669943
С опытом должно прийти.
Пока проверяй все задачи анонов, которые сам уже решал, пытайся исправить и помочь.
Числа прописью Аноним 2016/02/28 17:13:17  №669950 407
Аноним 2016/02/28 18:15:44  №670012 408
>>669950
Мне лень проверять.
Аноним 2016/02/28 18:20:24  №670017 409
>>669950
Я ещё прежде работу проверял, всё переводило правильно. Толкового посоветовать ничего не могу.
Жди ОПа и его разбора.
Аноним 2016/02/28 19:27:24  №670144 410
Аноним 2016/02/28 19:37:54  №670161 411
>>670144
1. В функцию можно подставлять непосредственное значение переменной: countMoney($creditSum,7777, $percent, 0, 0, $payout); - все те переменные, которые одинаковые, вставляются переменными. А те, которые отличаются, - вставляются числами.
2. В СофтоБанке должно получиться 61270 с копейками - как в задаче про Айфон. Здесь ошибка в расчётах. В последнем банке должно получиться 53 тысячи с чем-то. Ну это и естественно, что ошибки будут, раз контрольный средний банк считает неверно.
3. $creditSum х $percent / 100 + $comission - повторяется несколько раз. Лучше заведи отдельную переменную для этого.
4. $payment = $i х $payout; - неожиданное выражение, впервые в этих задачах встречаю такое. Вроде бы всё нормально в этом случае. Обычно просто плюсуют $payout к $payment.
Аноним 2016/02/28 20:00:48  №670193 412
Парни, накидайте мотивации. Я вот делаю-делаю задания, я желания нету никакого. Хоть умом я понимаю, что программирование для такого как я - это выгодный путь. Я просто не знаю для чего я всё это делаю? Что я смогу дальше, для чего мне эти задания, для чего вообще нужен пхп, как я потом деньги буду зарабатывать? Оп этого всего не объясняет.
Вот например - на гитаре когда учился, то я точно знал, что щас задрачу эту мелодию, а потом покажу друзьям/семье и они меня похвалят. Тут же, непонятно. Можете расписать, примерно, что будет происходить с моей жизнью, через месяц-три-полгода етц, если я продолжу обучение? В планах php->html,css->js->mysql.
Заставлю то я себя в любом случае, но если вы меня поддержите, то будет легче :3
Аноним 2016/02/28 20:17:55  №670215 413
Проясните за gulp, bower, grunt, вы пользуетесь этой дичью?
Аноним 2016/02/28 20:20:28  №670219 414
14566800282650.jpg (314, 1600x754)
754x1600
>>670193
>Можете расписать, примерно, что будет происходить с моей жизнью, через месяц-три-полгода етц, если я продолжу обучение
Ты инфантил и надеешься, что программирование преобразит твою жалкую жизнь. Но это не так, и ты просто будешь сосать хуй, не понимая, что происходит.
Аноним 2016/02/28 20:28:51  №670226 415
Аноним 2016/02/28 20:44:12  №670237 416
>>670219
да хули ее преображать? она и так прекрасна. Просто скоро придется деньги зарабатывать, а я не хочу утром вставать и идти выполнять приказы левых людей. Просто пример приведи.
Гитара: первую неделю пытаешься попасть пальцами в струны, постоянно сбиваешься с ритма, не можешь играть больше получаса изза болей в пальцах; месяц - умеешь играть одну песню, сыграл ее уже - 1000 раз, но все равно стесняешься показать людям, пытаешься что-то напевать при игре; 3месяца - умеешь играть несколько песен, готов тренироваться днями на пролет, горланишь на всю хату пока никого нету дома, аноны с сосача обоссали за кривой вокал; пол года - играешь 10+ песен, ни слушаешь никаких советов и уверен в том, что сам все знаешь, аноны пару раз похвалили пение, показал пацанам со двора - разцеловали; год - начинаешь изучать супер сложные композиции сам незная зачем ИТД.
Вот так нельзя?
Аноним 2016/02/28 20:56:21  №670254 417
14566821819550.jpg (143, 850x505)
505x850
>>670237
>Вот так нельзя?
Один раз можно.
Извэни тора гой но йА не готов засирать своим нытьём ещё и этот тред.
Аноним 2016/02/28 21:00:32  №670261 418
Аноним 2016/02/28 21:37:55  №670312 419
Пытаюсь в древовидные комментарии. Не могу найти или придумать такое решение, в котором можно было бы обойтись без вывода хтмл кода прямо в функции(методе).
Аноним 2016/02/28 21:40:39  №670317 420
Аноним 2016/02/28 21:41:23  №670320 421
>>670193
Научившись всему из гайдов в оп посте ты сможешь устроиться джуниором за почти нихуя в неприхотливую веб контору. Потусовавшись там с годик сможешь перекатиться во фриланс и работать из старбакса, попивая тыквенный латте и бугуртя на индусов.
Аноним 2016/02/28 21:44:50  №670325 422
>>670317
Нет. Пробежался по статье, там написано как хранить древовидные структуры в бд, у меня по сути в таком же виде организована таблица (кроме глубины). Мне нужно именно отображение этих данных.
Аноним 2016/02/28 21:48:03  №670328 423
>>670237
Всё можно. Сначала разберись во всех задачах ОПа, никуда не торопись, помогай новичкам, которые появляются и пропадают. Месяца за 3-4 натренируешься в задачах до высокого уровня, сможешь не глядя их решать, будешь читать чужой код и предчувствовать даже по описанию задачи, в чём человек ошибся.
Дальше - переходишь дальше.
Всё возможно, если изучаешь для удовольствия.
Ты же гитарой зарабатывать не собирался, наверное.
Аноним 2016/02/28 21:56:29  №670333 424
>>670226
Хм, в какой-то момент у тебя $creditSum уходит в минус.
Например, в какой-то момент $creditSum становится равен 260 рублей. Тут же происходит следующее: $creditSum = $creditSum х $percent / 100 + $comission - $payout;. Это всё становится отрицательным значением.
А далее у тебя if ($creditSum х $percent / 100 + $comission < 5000), то есть эта отрицательная $creditSum в этом условии даёт положительное и нужное число.
Это не вполне верно. Поэтому и не получится выделить отдельную переменную выражению $creditSum х $percent / 100 + $comission.
ОП не будет доволен, он всё это видит насквозь.
Расчёты не должны нырять в минус в этой задаче.
Аноним 2016/02/28 21:56:55  №670334 425
>>670333
*равен 260-ти рублям
Аноним 2016/02/28 22:06:57  №670347 426
>>670320
Это твой личный опыт или влажные мечты?
Аноним 2016/02/28 22:08:42  №670351 427
>>670347
Человек попросил накидать мотивации, ему и накидали.
какая разница правда это или нет, главное замотивировать
Аноним 2016/02/28 22:16:22  №670361 428
Допустим, есть чат. Нужно реализовать сохранение его логов для пользователей в виде картинки, как это сделать?
Аноним 2016/02/28 22:17:45  №670364 429
>>670193
Если начнешь хуярить, то через 4-8 месяцев найдешь работу (если ты не из пердей каких-нибудь).
Если не найдешь, значит плохо хуярил.
Аноним 2016/02/28 22:19:10  №670366 430
>>670193
Сколько тебе лет?
Аноним 2016/02/28 22:34:29  №670409 431
>>665709
>Знаком с OOP
Бери тогда Symfony. Без проблем должно зайти, коли не врешь.
Аноним 2016/02/28 22:39:10  №670422 432
>>666504
>перевернуть бинарное дерево
Это же совсем не трудно.
Аноним 2016/02/28 22:43:40  №670427 433
>>670328
Ты просто опыта набрался или книжки какие-то читал?
Аноним 2016/02/28 22:46:17  №670432 434
Аноним 2016/02/28 22:56:32  №670457 435
>>670432
Короче, просто хуярь, и будет тебе счастье.
Отныне день, когда ты не напишешь ни строчки кода, не прочитаешь ни одной статьи про теме, будет прожит для тебя зря.
Уделять обучению надо не менее четырех часов в день.
Помни: главное - хуярить. Ты же не работаешь, верно? Значит времени и возможностей до хера.
Аноним 2016/02/28 22:59:56  №670462 436
>>670422
Многие в этом треде даже не знают что это такое.
Аноним 2016/02/28 23:01:39  №670466 437
Аноним 2016/02/28 23:02:44  №670467 438
Всем доброго вечера!
Проверьте задачку на правильные мобильные номера, пожалуста.
https://ideone.com/8fJqR0
Аноним 2016/02/28 23:04:50  №670472 439
>>670462
Многие в этом тебе много чего не знают. Новички же совсем.
Зато многие претенденты на позицию джуна знают.
Аноним 2016/02/28 23:06:30  №670475 440
>>670466
>ок, спс.
Правильно писать: "Ок, спс, ушел хуярить".
Аноним 2016/02/28 23:07:19  №670476 441
>>670472
>Многие в этом тебе
Многие в этом треде
Аноним 2016/02/28 23:25:37  №670503 442
>>670467
Вот это несколько раз скопировано: "\ ?".
Попробуй использовать квадратные скобки, которые означают "любой указанные символ в любом порядке", а также кое-какой символ после них - чтобы дать понять, что скобок, минусов и пробелов там может быть неограниченное количество.
Аноним 2016/02/28 23:35:46  №670514 443
Аноним 2016/02/28 23:42:18  №670527 444
>>670514
https://ideone.com/2c6hDp - такого номера нет у ОПа (первый в правильных), но он вполне реален. Сможешь ли ты совладать с ним, не разрушив правильности проверки других номеров?
Аноним 2016/02/28 23:44:35  №670533 445
>>670514
Также к чему обратные слэши ставишь перед любым символом в квадратных скобках? Они там не выполняют свои функции, меняют своё значение. Символ пробела надо указывать символом.
Аноним 2016/02/29 00:11:04  №670575 446
>>670533
>>670527
Сделал, правда с квардратными скобками не работало чомусь, вида: ([ (-]+)?
Аноним 2016/02/29 00:25:33  №670603 447
Аноним 2016/02/29 00:51:01  №670652 448
>>670475
Воистину так, сука мля, ебаныврот.
Аноним 2016/02/29 00:52:11  №670655 449
>>670603
Согласен, но если мы принимаем что
>'8 ( 495 ) 1 - 2 - 3 - 4 - 5 - 6 - 7'
правильный, то почему
>'8 911 415 (16) (13)'
нет? Да и я на подсказку ОПа ориентировался
>сначала идет +7 или 8, за ними ровно 10 цифр, между которыми может быть любое число скобок, минусов, пробелов.
Но тем не менее я пофиксил(старая ссылка - актуальна) и сразу в догонку то-же только с заменой проверь, пожалуйста.
https://ideone.com/AG9xvk
Аноним 2016/02/29 01:11:52  №670686 450
Аноним 2016/02/29 01:36:11  №670725 451
>>670655
Одно пофиксил, другое сломал.
У тебя там два некорректных номера прошло проверку.

Вот мое решение, а то я сам не решал еще.
http://ideone.com/b2tQKa

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

Алсо, кто сможет прочитать мою регулярку - тот герой.
Аноним 2016/02/29 01:39:31  №670728 452
>>670725
>+7-(812)-567-55-67 неверный кафир
>+7-(812)1234567 неверный кафир
С какого такого перепугу? Это верные номера.
Аноним 2016/02/29 01:42:53  №670734 453
>>670686
Забыл четвертую букву к.
Не экранируй пробелы.

Алсо, вместо пробела можно использовать символьный класс \s - любой пробельный символ (почти любой).
Алсо-2. Здесь тебе не нужна группировка в скобках - [дД] идентично (д|Д) для одного символа. Но здесь уже обязательно надо поставить модификатор u - utf-8.
Алсо-3. Если ты группируешь что-то в скобках, но запоминать результат тебе не нужно - пиши так: (?:раз|два). ?: - не делать ссылку, не запоминать эту группировку.

>>670728
А для меня - нет.
Аноним 2016/02/29 01:44:50  №670740 454
>>670734
>А для меня - нет.
Пааапрошу пояснить.
ОП как раз и предлагал эти номера как правильные.
Аноним 2016/02/29 01:48:46  №670746 455
Аноним 2016/02/29 01:51:44  №670751 456
>>666493
>>666493
мне кажется, лучше будет не просто сравнивать окончания, а учитывать транскрипции и исключения
ударения конечно маст хэв
Аноним 2016/02/29 02:36:23  №670781 457
>>670734
>4ая к
Нет, англ к выглядит по другому поэтому я её и не писал, наказал так сказать.
>Алсо-3
Не понил если честно.
Аноним 2016/02/29 02:54:09  №670784 458
>>670781
Все, что группируется в круглых скобках, автомат регулярных выражений запоминает. Ты можешь потом использовать ссылку на этот результат в этой же регулярке или в строке для замены.

Например, /<(div|span)>.*?</\1>/ найдет только <div></div> или <span></span>, но не <div></span>. \1 - ссылка на первую сохраненную группу.

Если тебе не надо ничего сохранять - ты ставишь ?: после скобки. Так экономится память, а также не засирается итоговый массив с результатами, например.
Аноним 2016/02/29 03:05:52  №670788 459
Аноним 2016/02/29 03:20:17  №670793 460
Так.
Посоны, каким-то блядь расчудесным образом надо вникнуть в jquery и научиться хуярить в бутстрапе за месяц.
Есть где-нибудь такая хуйня, чтоб я прочитал и охуел от пиздатости материала?
Аноним 2016/02/29 03:25:07  №670794 461
>>670793
На codeacademy пробани для начала, вдруг охуеешь. Не от пиздатости, так от чего другого.
Аноним 2016/02/29 03:41:29  №670796 462
Зашёл в список сообщений в контакте, посмотрел его разметку, а он таблицей сделан, это нормально?
Malikov 2016/02/29 04:46:40  №670816 463
>>670794
Да, нормально. Учитывая гомоеблю с разной поддержкой стандарта в разных браузерах
Аноним 2016/02/29 09:04:29  №670853 464
>>670237

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

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

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

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

>>670312

Метод в классе TableGateway возвращает отсортированный массив комментариев. Шаблон приходится по ним циклом и выводит.

Вообще тут есть 2 варианта прелставления:

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

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

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

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

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

Есть некое дерево. Реализуй это дерево средствами ООП. Узел дерева должен быть представлен объектом, поддерживающим такие методы:

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

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

Бытовая техника (5)
....утюги
....пылесосы
....телевизоры (3)
........LCD телевизоры

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

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

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

>>670320

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

>>670361

Сохранить логи и вывести на картинку с помощью какой-нибудь графической библиотеки.

Аноним 2016/02/29 09:16:32  №670855 465
>>666504

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

>>670467

Посмотри что пишет твоя программа:

> + 849512345678
Это неправильный номер - тут 12 цифр

> - 8 911 415 (16) (13)
А это правильный.

Надо исправить ошибки в регулярке. Сейчас там у тебя она состоит из 2 частей (в первой 3-4 цифры, во второй 6-7). Это неправильно так как ты не можешь гарантировать что после 8 будет ровно 10 цифр - у тебя их может быть от 9 до 11.

>>670655

> 8 911 415 (16) (13)
Это правильный номер.

>>670725

> Алсо, кто сможет прочитать мою регулярку - тот герой.
Это как раз неправильно. Вот смотри, твою регулярку не разобрать - а как проверить что она правильная? Тесты ведь не покрывают все возможные варианты (да и не должны). А если окажется что у тебя там баг - как его исправить, не сломав регулярку?

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

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

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

Код в checkPhoneNumberIRL в общем годится после улучшения оформеления кода. str_replace я бы заменил на preg_match ради краткости, и вынес бы ее на отдельную строку.

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

(крестик или галочка показывающие правильно ли определен ответ) (номер) (текст результата проверки)

Тогда бросив взгляд на левый край можно увидеть все ли ок.
Аноним 2016/02/29 09:33:35  №670860 466
>>670734

Модификатор u надо ставить всегда (конечно еще лучше было бы если PHP это делал сам - в PHP6 это должно было быть, но не осилили). А то потом люди приходят в тред и спрашивают почему у них регулярка не работает.

>>666493

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

>>670784

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

>>670793

Бутстрап какое отношение имеет к jQuery? Это разные вещи. Алсо, то что тебе нужно выучить это JS/DOM, HTMl/CSS. В ОП посте есть задачи, но за месяц ты вряд ли справишься. Но это потому что верстка и яваскрипт не такие простые вещи как некоторым кажется.

>>670794

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

>>670796

Возможно разработчики вконтакте не очень сильны в верстке. Возможно, там есть практические соображения - display: table и многие вещи из CSS2.1 и CSS3 не работают IE6, 7, 8, а они долгое время поддерживались.

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

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

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

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

Аноним 2016/02/29 12:23:01  №670937 467
>>670860
> Бутстрап какое отношение имеет к jQuery? Это разные вещи.
Библиотека js и фреймворк разные вещи? Серьёзно? Не ожидал.
> Алсо, то что тебе нужно выучить это JS/DOM, HTMl/CSS.
хтмл/ксс уже более-менее, нативный JS придется осиливать по пути.
В оп-посте дохуя задач на пхп, а мне кроме того, что это такое в общих чертах и как оно работает знать пока что не особенно нужно, ибо я тупо не успею выучить пхп за месяц.

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

Аноним 2016/02/29 12:30:18  №670945 468
ОП, как работают днс-записи для случая: домен куплен у оффициального селлера, перенаправлен на сторонний днс, а оттуда уже на нужный сайт? На офф-селлере NS запись, на стороннем - А?
Зачем нужна CNAME запись, если итак дохуя способов редиректа?
Аноним 2016/02/29 12:36:26  №670948 469
14567385863370.png (59, 826x1300)
1300x826
>>670855
>твою регулярку не разобрать
Не разобрать регулярку e-mail из RFC.
Есть волшебный модификатор /x, который позволит записать это весьма удобно и понятно.
Например, так:
http://ideone.com/7xEGiD

>str_replace я бы заменил на preg_match
Вредные советы поехали. PCRE всегда медленнее любой строковой функции.

>>670860
>Модификатор u надо ставить всегда
Григорий Остер, вам пора залогиниться.
Пикрелейтед, специально для вас.

Совет: если вы понимаете, что вы делаете (только если понимаете), - не используйте модификатор u. Грубо говоря, он нужен лишь тогда, когда:
- в символьном классе вы используете не-ASCII символы,
- когда вам важно заматчить именно символ, который выходит за рамки ASCII.
Проще говоря, в выражении типа #<title>(.+?)</title># модификатор u не нужен. Вам не важны символы внутри title, вам важен сам текст, набор байтов.
А вот в выражении #<title>[^>]+</title>#u модификатор нужен, так как [^>] может наткнуться на байт, который является частью другого символа, но сам по себе равен >.

Нововкатившийся, если тебе непонятно, что тут написано - забей. Это немного запутанная магия.
Аноним 2016/02/29 13:07:44  №670963 470
Зачем было делать, чтоб надо было try\catch прописывать в PDO, почему исключения нельзя переделать по умолчанию чтоб включались? Намного красивей код стал бы, нет, хотим лепить эти {} } { { { }
Аноним 2016/02/29 13:08:52  №670964 471
>>670945

> домен куплен у оффициального селлера, перенаправлен на сторонний днс, а оттуда уже на нужный сайт? На офф-селлере NS запись, на стороннем - А?
Да. "Покупка домена" если я не путаю, значит что ты получаешь право указать NS для него. Покупка домена не подразумевает DNS-хостинг, хотя реселлеры могут предлагать такую услугу.

> Зачем нужна CNAME запись
Погугли:

> https://en.wikipedia.org/wiki/CNAME_record
> A Canonical Name record (abbreviated as CNAME record) is a type of resource record in the Domain Name System (DNS) used to specify that a domain name is an alias for another domain, the "canonical" domain. All information, including subdomains, IP addresses, etc., are defined by the canonical domain.

> This can prove convenient when running multiple services (like an FTP server and a webserver; each running on different ports) from a single IP address. One can, for example, point ftp.example.com and www.example.com to the DNS A record for example.com, which in turn points to the IP-address. Then, if the IP-address ever changes, one only has to record the change in one place within the network: in the DNS A record.

> CNAME records must always point to another domain name, never directly to an IP-address.

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

> если итак дохуя способов редиректа?
Интернет не ограничивается протоколом HTTP, а в других протоколах редиректов нет. Правда, можно прописать дляобоих доменов один и тот же IP.

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

Ну и такие вещи лучше проверять на практике. Бери линукс и утилиту dig (если нет то поищи онлайн утилиты), и делай например такой запрос:

....
продолжение поста: http://pastebin.ru/gLpkVrdP

И еще про точку в конце адреса. Она значит что имя домена окончательное. Без нее в случае неудачи клиент будет приписывать к нему "суффикс DNS" который задается в настройках сетевого интерфейса. То есть если в настройках прописан домен example.com и ты пытаешься разрешить имя server то сначала он будет искать домен server., а при неудаче - server.example.com.

Точка позволяет отключить этот механизм.

Аноним 2016/02/29 13:26:25  №670972 472
где можно почитать про exception? У ОПа есть где-нибудь инфа про это?
Аноним 2016/02/29 13:31:08  №670974 473
>>670948

> PCRE всегда медленнее любой строковой функции.
как насчет пруфов? как работает pcre внутри?

> Пикрелейтед, специально для вас.
разница с/без u = 20 микросекунд против 14? То есть ради 6 микросекунд ты предлагаешь исплоьзовать не-юникодный режим в котором сам черт ногу сломит и с которым разработчик будет тратить часы на поиски ответа "почему регулярка странно работает"? А вредные советы даю я?

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

Что касается 206 микросекунд при добавлении флага i - я думаю, такую проблему надо решать оптимизацией этого случая в pcre. А не превращением кода в нечитаемое месиво из скобочек.

А как насчет такого выражения:

/кот+собака/

Оно сработает без модификатора u? А такое:

/кот\b/

А как насчет такого?

/кот/i

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

> Есть волшебный модификатор /x, который позволит записать это весьма удобно и понятно.
> Например, так:
Комментарии это хорошо, но понятный без них код лучше. Ну и поддерживать выражение будет не очень удобно. Вот например это:

> (?(1)
Имеет тот недостаток что при добавлении новых скобок нумерация меняется.

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

Ну и я регулярки и посложнее видел: https://habrahabr.ru/post/171667/

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

>>670963

Их и не надо писать. Их пишут только неграмотные авторы не понимающие как работают исключения. Исключения автоматически сами вылетают наверх. Они как раз и придуманы чтобы не надо было результат каждой функции проверять на ошибку.
Аноним 2016/02/29 13:32:31  №670978 474
>>670948

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

Аноним 2016/02/29 13:48:11  №670988 475
Аноним 2016/02/29 13:56:03  №670995 476
Аноним 2016/02/29 14:01:19  №671000 477
14567436798440.png (28, 529x807)
807x529
>>670974
>как насчет пруфов?
Пикрелейтед.
preg_replace в 5,5 раз медленнее str_replace.
>как работает pcre внутри?
Например, хотя бы парсит шаблон, чего не делает str_replace.

>разница с/без u = 20 микросекунд против 14? То есть ради 6 микросекунд
В программировании нет микросекунд, есть производительность, возрастающая или падающая в разы. Если производительность падает в 1,5 раза, это значит, тебе нужно 4 сервера, а не 3. На те же объемы работы.
Действительно, мне стоит почитать про экономику и менеджмент.

> /кот+собака/
> /кот\b/
> /кот/i
Не сработает ни одно.

>Твои советы это закладывание мин в код, ждущих новичка.
>новичка
>если вы понимаете, что вы делаете (только если понимаете), - не используйте модификатор u

Тем не менее, новичку это тоже полезно узнать. В школе никто не учит, что зыбиться и зиждиться - глаголы первого спряжения, однако, узнать об этом как минимум интересно, думаю, ты со мной согласишься.
Я не призываю ньюфага использовать столь хардкорные оптимизации. Просто неплохо бы знать - u может в разы замедлить регулярное выражение, что и есть ответ на твой вопрос, почему же php не ставит этот модификатор автоматически.
Аноним 2016/02/29 14:06:00  №671003 478
Аноним 2016/02/29 14:20:51  №671010 479
>>670948
>А вот в выражении #<title>[^>]+</title>#u модификатор нужен, так как [^>] может наткнуться на байт, который является частью другого символа, но сам по себе равен >.

Кстати, я обосрался, в чем спешу признаться. utf-8 устроен так, что у любого байта не-ASCII символа старший бит - 1. У ASCII - 0.
Приведенная мной ситуация невозможна.
Аноним 2016/02/29 14:39:45  №671027 480
>>671003
>public function getNextSibling(){
>$parent = $this->parentNode;
>$previous = NULL;
>foreach ($parent->getChildNodes() as $child) {

>getPreviousSibling

Что будет, если $this->parentNode = null?

> public function __construct($nodeName,$parent = NULL){
> $this->nodeName = $nodeName;
> $this->parentNode = $parent;
> }

> public function moveNode($parent){
> $this->parentNode->removeChild($this->nodeName);
> $this->parentNode = $parent;
> $this->parentNode->addChild($this);
> }

Не кажется ли тебе, что назнание родителя - неотъемлемое действие для метода addChild?
Не кажется ли тебе, что свойство parent в конструкторе - лишнее, а его должен задавать родитель в методе addChild?
Аноним 2016/02/29 14:40:28  №671029 481
>>671000

> Если производительность падает в 1,5 раза, это значит, тебе нужно 4 сервера, а не 3. На те же объемы работы.
Только если основная функция твоего приложения это обработка текста регуляркой.

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

Ну и если подумать, в большинстве случаев нам нужны не только ascii. Мы ведь не в США живем.
Аноним 2016/02/29 14:41:35  №671031 482
>>671027

У него parent сделан опциональным, его можно не указывать, но мне тоже больше нравится идея разделить создание узла и прикрепление его к родителю.
Аноним 2016/02/29 14:45:38  №671037 483
>>671029
>Потому что для человека строка это цепочка символов, а не байт
А для программиста это должны быть байты.

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

Я согласен с тем, что для такого простого языка, как PHP, мудрености с модификаторами - это лишнее. Но в то же время, не давай PHP спуститься на уровень ниже, это был бы громоздкий фреймворк для лоу-лоада (имплаинг, что php может в хайлоад).
Аноним 2016/02/29 14:46:58  №671038 484
>>671031
Так ведь когда мы создаем объект, он так и так не имеет родителя.
Корректно добавлять объекту родителя лишь через метод addChild родителя.
Аноним 2016/02/29 14:49:22  №671040 485
Алсо, меня смущает, что addChild происходит по объекту, а removeChild - по его имени. Все ООП по пизде.
Аноним 2016/02/29 14:53:37  №671042 486
Аноним 2016/02/29 15:04:48  №671059 487
>>671042

А нужно ли имя? Если делать абстрактное дерево то оно должно быть просто абстрактным деревом, от которого наследуется уже например класс "дерево категорий"

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

> public function addChild(TreeElement $child){
Нет проверки не является ли добавляемый элемент частью этого или другого дерева

> public function removeChild($node){
> if($child == $node){

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

> public function setChildNodes($newNodes){
Не выставляются корректные значения parent для старых и новых детей

> public function isDescendant($node){
> if($node->findDescendant($this->nodeName)){
Ты опираешься на предположение что у узлов есть имена и они уникальны. Это не так. Идентичностью объекта является сам объект.

> public function getNextSibling(){
> $parent = $this->parentNode;
А если там null?

> for($i = 0; $i<count($parent->getChildNodes()); $i++){
> if($n===$i){
> $newArray[] = $this;
Сложновато.А нельзя ли использовать array_splice? Аналогично, в удалении можно использовать array_search.

> public function moveNode($parent){
> $this->parentNode->removeChild($this->nodeName);
А если parentNode = NULL?

> public function displayAsCatalog(){
Это не должно быть в классе дерева. Дерево лишь хранит информацию, а не выводит.

Аноним 2016/02/29 15:14:01  №671079 488
>>671059
>Не выставляются корректные значения parent для старых и новых детей
Не понял. Свойства у детей не меняются, они только меняют свой порядок в массиве.
>Сложновато.А нельзя ли использовать array_splice?
Хотел сначала так сделать, но потом перестал понимать что вообще происходит и переписал без него. В пхп не хватает джаваскриптовского сплайса, чтобы просто засунуть нужный элемент в середину массива.
Аноним 2016/02/29 15:28:57  №671096 489
>>671079

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

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

Аноним 2016/02/29 15:35:45  №671100 490
какой же благородный дон станет писать на досуге на Scala или Clojure? Ведь всякие Scala, Clojure, F#, OCaml и прочие эрзацы нормальных языков програмирования нужны благородным донам только для того, чтобы использовать их работе, где им приходится считаться с мещанскими вкусами остальных работяг-програмистов. поэтому на досуге благородный дон будет пописывать на Хаскелле, Агде или Эпиграмме, и почитывать алгебраическую топологию или теорию категорий. А на Scala и Clojure на досуге пишут только некоторые представители люмпен-пролетариата, котрые подсмотрели это занятие за благородными донами на работе, и думают, что ритуальное копирование поведения благородного класса делает их самих благороднее.
Аноним 2016/02/29 16:04:06  №671133 491
Решая задачки из ОП-поста, можно придти к мысли, что mysql с её слоупочными table locks и transactional safety и с её возможностью масштабирования только при помощи анальных расширителей не очень-то, собственно, и нужна в большинстве задач.
Аноним 2016/02/29 16:04:51  №671135 492
Когда делал задачку про генерируемый стишок, не смог придумать ничего, кроме как этого нагромождения лишнего кода. Но я чувствую, что тут можно проще и быстрее все сделать.
http://ideone.com/Nt2kce
Аноним 2016/02/29 16:10:59  №671151 493
self this parent
Чем они отличаются и когда что применяется?
Аноним 2016/02/29 16:11:57  №671153 494
>>671135
Можно использовать одну переменную, а не 8.
Аноним 2016/02/29 16:16:26  №671162 495
>>671153
Ага, переменные можно вообще не инициализировать, а объявлять непосредственно по ходу кода, но за такую хуйню тебе твои коллеги голову оторвут.
Аноним 2016/02/29 16:16:47  №671163 496
>>671135
Копипаста много.
И должно быть так:
> слово1 слово2 слово3
> слово1 слово2 слово3
> Я слово4 слово5
А не так, как у тебя - под каждое слово своя переменная..
Чтобы добиться верного решения, можно пропустить всё через цикл.
Первые два раза выводится строка "слово1 слово2 слово3", а во время третьего прохождения цикла выводится строка "Я слово4 слово5" и цикл обрывается.
Цикл с $i, делает три круга. В первом и втором круге изменяются randomText1, $randomText2, $randomText3 и выводится echo "$randomText1 $randomText2 $randomText3\n";. А в третьем круге выводится echo "Я $randomText4 $randomText5.\n"; (а изменяться они могли и раньше, допустим).
Аноним 2016/02/29 16:22:43  №671173 497
>>671151
$this указывает на текущий объект, а self на текущий класс.
Аноним 2016/02/29 16:24:13  №671177 498
>>670974
>Их и не надо писать. Их пишут только неграмотные авторы не понимающие как работают исключения. Исключения автоматически сами вылетают наверх. Они как раз и придуманы чтобы не надо было результат каждой функции проверять на ошибку.
У ОПа приведены две ссылки на изучение PDO - официальный мануал и статья на хабре. В обоих сказано, что необходимо писать всегда трай-кеч.
Аноним 2016/02/29 17:11:03  №671204 499
Что-то вдруг стало жалко времени, потраченного на выполнение заданий на HTML и CSS.
Почти две недели постепенно делаю задачи ОПа, осталось две штуки, а ещё вот отсюда: https://dash.generalassemb.ly - сделал три больших урока (все эти шаблоны и робота на CSS+jQuery, который чому-то не заработал).
Так-то интересно, вникаю, но как-то жалко времени именно на это, чувствую, что не так это всё важно лично для меня.
Скорее бы уже к ООП перейти, шаловливые ручонки трясутся и так и чешутся.
Аноним 2016/02/29 17:34:25  №671223 500
Аноним 2016/02/29 19:08:16  №671341 501
14567620961320.jpg (19, 529x249)
249x529
Посмотрите, вот я запилил задачку йода-спик.
https://ideone.com/qTl9u2
ОП хотел, чтобы я запилил функцию, которая будет висеть в коде отдельно. Я понимаю, что в каком-то более серьезном коде нужно будет такие часто используемые функции выводить в одну отдельную, но в такой чисто академической задачке не считается ли моветоном мой метод решения? Или все же нужно именно с пеленок себя приучать к такому стилю?
Аноним 2016/02/29 19:10:09  №671344 502
>>671341
Имею ввиду функцию, которая делает первую букву большой, заглавной.
Аноним 2016/02/29 19:11:47  №671348 503
Я вот не пойму, в materialized path чтобы добавить запись в таблицу, мне придется делать еще один запрос просто для того, чтобы узнать номер пути последней записи? Я ведь не могу использовать авто инкремент для строки.
Аноним 2016/02/29 19:16:43  №671351 504
>в этом задании нельзя использовать свойство overflow и position
Да едрить же твою мать...........
Аноним 2016/02/29 19:18:48  №671354 505
>>671351
display: inline-block - сразу нахожу ответ, стоит только гряяяязно выругаться.
Аноним 2016/02/29 19:20:11  №671356 506
>>671348
>materialized path
Сколько времени ты потратил, что перенести огромную смердящую кучу наваленных друг на друга небольших пакетиков с говном из mysql на mongodb?
Аноним 2016/02/29 19:24:03  №671364 507
14567630439470.jpg (21, 632x158)
158x632
Анон, я может что - то пропустил, но зачем эти скобки
Аноним 2016/02/29 19:27:20  №671369 508
>>671364
Ccылка на переменную (как и сама переменная) не читается в двойных кавычках. Чтобы ее прочитал эхо, переменную нужно взять в фигурные скобки.
Аноним 2016/02/29 19:31:29  №671375 509
Аноним 2016/02/29 19:38:01  №671387 510
>>671375
Ой, что-то я попутал. Естественно, в одинарных кавычках не читаются переменные. Просто некоторые люди любят писать в одинарных, и для этого придумали фигурные скобки в эхе.
Аноним 2016/02/29 19:38:41  №671388 511
Аноним 2016/02/29 19:40:39  №671389 512
Аноним 2016/02/29 19:45:06  №671402 513
Аноны, серьезный вопрос. Как думаете, в пыху когда-нибудь завезут поддержку юникода? Так, примерно, можете почувствовать?
Аноним 2016/02/29 19:46:30  №671405 514
>>671387
Нет. В одинарных не происходит подстановки переменных (и escape-последовательности выводятся как есть)

php > $a = "test";
php > echo '$a';
$a
php > echo '{$a}';
{$a}
Аноним 2016/02/29 19:50:30  №671414 515
>>671405
Ну тогда я понятия не имею.
Аноним 2016/02/29 19:59:42  №671431 516
Такой вопрос по Mysql (список студентов). У меня есть уникальное поле (unique) email. Когда студент редактирует свои существующие уже в базе данные(имя, фамилия, номер группы, баллы etc), я через оператор UPDATE пытаюсь их занести в базу данных вместо старой записи, но если он не редактирует свой емэйл, а только имя, фамилию, например - ничего не происходит, потому что данный емэйл существует, я так понял. Что делать?
Аноним 2016/02/29 21:16:24  №671569 517
Аноним 2016/02/29 21:18:50  №671573 518
>>671569
Тебе вроде бы уже ответили, нет? Десктоп на пыхе писать - долбоебизм, имхо.
Аноним 2016/02/29 21:22:16  №671579 519
>>671573
Может он других не знает, а написать что-то очень хочется.
Аноним 2016/02/29 21:24:54  №671587 520
>>671579
Если тебе что-то очень хочется написать, то учи что-нибудь другое. У тебя времени нет что-то новое учить? Или ты просто неосилятор?
Аноним 2016/02/29 22:18:20  №671685 521
>>671573
>Десктоп на пыхе писать - долбоебизм
А почему, знаешь?
Аноним 2016/02/29 22:19:20  №671686 522
>>671685
Потому что нет интерпретатора.
Аноним 2016/02/29 22:32:40  №671707 523
>>671686
Чому не запилят? Такой распространённый язык - и нет интерпретатора.
Аноним 2016/02/29 22:55:57  №671736 524
>>671431
Тебе же сказали в прошлом треде - вбей несколько известных значений и интерполируй линией.
Аноним 2016/03/01 01:12:21  №671881 525
>>671736

Путаешь меня с другим аноном. Не я тут один решаю список студентов. Можешь подробней объяснить?
Аноним 2016/03/01 01:14:53  №671883 526
>>671881
Алсо я конечно могу покопаться в том треде, но боюсь заспойлерю себе многие моменты из правильного решения.
Аноним 2016/03/01 01:17:40  №671886 527
>>671431

При проверке надо исключать редактируемого студента из числа записей по которым идет поиск.
Аноним 2016/03/01 01:18:35  №671887 528
>>671431

> например - ничего не происходит, потому что данный емэйл существует, я так понял.
У тебя не выводятся причины ошибок? Тогда тебе надо разобраться с этим.
Аноним 2016/03/01 12:01:35  №672137 529
Анончик выручай, решил, что пришло время изучить YII2 (до этого вообще не имел дело с подобными фреймворками) Читаю книгу Разработка веб-приложений в Yii 2 Марка Сафронова. Не понимаю почему там предлагают вместо создания приложений первым делом идет тестирование. В общем нужен совет. С чего начать. Книгу-то добью, но вкрадывается сомнение что пойму не многое
Аноним 2016/03/01 12:07:56  №672143 530
Добрый день, может не совсем по теме треда но всё же, я знаю тут есть шарящие люди: есть 3 поля с автокомплитом, суть в том, что при автокомплите мне запрос возвращает помимо лейбла (текста который выводится в поле после выбора) ещё и уникальный код этого лейбла, который я использую в инпуте с автокомплитом который под ним. Так вот, насколько я понял отключить браузерный автокомплит уже нельзя, это делается только в настройках браузера и повлиять я на него не могу: поверх моего автокомплита вылезает автокомплит юзера с его вариантами, так вот соответственно если юзер не выбрал из моих вариантов, а выбрал свой - айдшишник лейбла соответственно не появился и в автокомплите снизу я уже его использовать не могу то же самое случается и когда юзвер вводит весь текст города руками и соответственно при поиске улицы я уже не могу использовать айдишник города, а только текст. Как выходить из такой ситуации и есть ли какой то алгоритм построений автокомплитов, или если кто-то делал решения такого - поделитесь опытом. Алсо, извините за неровный почек и скудный слог.
Аноним 2016/03/01 12:12:13  №672147 531
Аноним 2016/03/01 13:04:43  №672180 532
>>672143

Отключить можно - гугли атрибут autocomplete. А что если юзер не будет ничего выбирать, а руками введет вариант? Ты бы мог просто использовать не кривую самоделку, а специально написанный виджет вроде chosen или select2. Если
Аноним 2016/03/01 13:07:04  №672183 533
>>672143

Не дописал. То что тебе нужно - не инпут с автокомплитом (как у тебя), а селект с фильтром. Выкинь свою кривую поделку и прикрути нормальный виджет.
Аноним 2016/03/01 14:56:01  №672314 534
>>672183
Спасибо, я предложил заказчку перепилить всё в селекты с фильтрацией но сказали что и так норм и нет объективных причин якобы, хотя я вижу что селект бы решил объективно все частные моменты для которых я изобретал и ещё буду изобретать велосипеды.
Аноним 2016/03/01 15:07:54  №672319 535
>>672314

как костыль можно попробовать сделать дополнительные проверки вроде того, что если юзер ввел текст и покинул инпут не выбрав вариант то искать этот текст в имеющемся списке - но это может работать не очень надежно. Ну и тогда надо сделать индикацию, того что город успешно выбран или что такого города в базе нет.
Аноним 2016/03/01 15:10:39  №672322 536
>>672314

Главная проблема которая у тебя сейчас - как я понимаю, отствие обратной связи, то есть пользователь не видит скрытое поле с id, и не понимает реальное состояние программы - какой город там выбран. И то что написанный в инпуте текст может отличаться от выбранного города в скрытом поле.
Аноним 2016/03/01 15:43:50  №672359 537
>>672322
>>672319
Главная проблема в том, что события типа отображение двух других инпутов с автокомплитом которые скрыты по умолчанию, привязаны к автокомплиту: при селекте показывает следующее окно, записывает в сессию выбор и тл, просто тупой юзвер может ввести руками до конца и сидеть тупить, или ввести с ошибками - если не будет лень допишу потом валидацию поля при нажатии enter/tab и отображении следующего поля,
Аноним 2016/03/01 15:45:48  №672360 538
>>672359

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

> просто тупой юзвер может ввести руками до конца и сидеть тупить
Это не пользователь тупой, а программист тупой

> потом валидацию поля при нажатии enter/tab
Там есть событие потери фокуса. Лучше изучить теорию прежде чем браться за практику.
Алфавит по кругу 2016/03/01 17:46:21  №672465 539
Прочел все подсказки ОПа, но я вместо уроков геометрии ходил с почонами в комплюхтерный клуб за углом. Подскажите где я обосралсяна лекции https://ideone.com/2vEntq .
Аноним 2016/03/01 17:49:23  №672467 540
>>671348
Бамп вопросу. Я вот-вот напишу самый уродливый велосипед в своей жизни, если не узнаю ответ.
Аноним 2016/03/01 17:54:19  №672471 541
>>671348
>>672467

Не можешь, да, придется делать. Хорошо бы еще и блокировки на нужные строки сделать чтобы невозможно было из 2 параллельных потоков создать запись с одним и тем же path
Аноним 2016/03/01 19:04:41  №672519 542
Анончики привет. Вкатывается мамкин прохрамист из шаражки , второкурсник. В этом семестре первый раз буду писать курсач. Все выбрали преподов, у которых полегче. А я выбрал которые дает задание приближенные к реалиям. Так вот, он спросил чего я хочу. И сказал, что хочу веб-приложение (т.к. копал в эту сторону и написал, что-то вроде задачи про студентов с ОП-поста), он сказал, что принеси покажи, что у тебя есть. Я принес, показал. И он сказал, что бы я сделал такое же, только на джаве... А я просто не знаю в какую сторону копать. Помоги, анончик.
Аноним 2016/03/01 20:06:00  №672559 543
bump
Аноним 2016/03/01 20:06:50  №672561 544
14568520103820.jpg (12, 151x200)
200x151
Аноним 2016/03/01 20:10:35  №672564 545
14568522353450.jpg (76, 544x766)
766x544
ОП нас покинул и больше не проверяет задачки.
Аноним 2016/03/01 20:12:23  №672566 546
>>672564
У ОПа пинг иногда и 5 дней может быть.
Аноним 2016/03/01 20:19:51  №672567 547
>>672561
пох, а друг тут бамплимит в косарь.
Аноним 2016/03/01 21:59:11  №672671 548
14568587511350.jpg (75, 618x545)
545x618
>>664784 (OP)
slack, jabber, skype конфа изучающих есть какая нибудь?

на канале пхп в 2chpr.slack.com тухло
Аноним 2016/03/01 22:05:36  №672679 549
>>672671
Нет, мы нормальные люди а не пидорасы какие-нибудь.
Ответы за 24 февраля Аноним 2016/03/01 22:06:51  №672684 550
>>664858

В общем верно, но если ввести число больше чем число городов, вылетает с ошибкой Uncaught TypeError: Cannot read property 'country' of undefined

>>665327

> $answers["$random"]
Хотя ошибки тут нет, но писать кавычки тут не надо так как они лишние.

>>665338

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

> {$randomText1 = $word1[$randomWord1];
Скобка тут лишняя. Она ничего не делает, значит ее тут не должно быть.

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

1 => ...,
....,
....

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

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

>>665358

> ведь нельзя было делать такие штуки
> 1 => 'блабла',

Делать-то можно, но наверно проще не указывть индексы, а использовать автоматически проставленные с нуля.
Ответы за 24-25 февраля Аноним 2016/03/01 22:07:14  №672687 551
>>666028

> W1. https://ideone.com/r93YE8
Верно

> W2. https://ideone.com/8BIRn7
Верно

> W3. https://ideone.com/yqbFo1
правильно

> W4.1 https://ideone.com/Yikc7R
Не учтен случай когда число очков одинаковое, а числа на кубиках разные, должна быть ничья: https://ideone.com/N9JmkW

> W4.2 https://ideone.com/gipbSX
Тут все верно

> W5.1 https://ideone.com/MwfLmz
Ответ неправильный, должно получиться 61270. Код также запутанный, например код в ифе зачем-то повторяет код который написан перед ифом.

> W5.2 https://ideone.com/cVgjxu
Ответ вроде будет 49 лет, а не 50. Также, зачем там второй раз $y++? Также, зачем делать переменную $y если у нас уже есть счетчик в цикле $i?

> if ($sum > 1000000) {
А если ровно миллион?

> W5.3 https://ideone.com/iFv71d
Верно

> W5.4 https://ideone.com/jMJLFM
тут тоже верно

> W5.5 https://ideone.com/kVp3j3
Правильно

> W5.6 https://ideone.com/QcFU0m
> $random = mt_rand(1, count($letters));
> $randomText = $letters[$random];
Ошибка, в массиве индексы начинаются с нуля, а не единицы

> W5.7 https://ideone.com/Eh48abC
Ссылка не открывается

>>666128

> if ($creditSum < $payout) {
Это кстати можно заменить на min/max

А так, верно

>>666473

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

>>666479

Он прав, возьмешь кредит и не сможешь понять сколько ты переплатишь.
Ответы за 24-25 февраля Аноним 2016/03/01 22:07:37  №672688 552
>>666562

Чтобы понять почему медленно работает, изучай индексы в базе данных, ну и вообще разберись как выполняется запрос. EXPLAIN сделай. Из твоего кода понять как выглядит SQL запрос невозможно. Вот ты дал кусок кода от какого-то велосипеда, а как понять какой запрос он генерирует? Ты думаешь тут телепаты сидят?

> В sql не особо понимаю.
Это значит что ты не квалифицирован для той работы которой занимаешься. Изучай SQL пока тебя не выгнали.

И еще. Это не имеет отношения к сути вопроса, но вот этот вот код - это ад, и от него надо избавляться. Почитай что ли про Query Builder, посмотри фреймворки Юи 2 и Симфони 2. Увы, в нашей сфере многие не хотят учиться, а хотят сразу бежать что-то делать при том, что у них нет достаточноых знаний. Алсо, набор условий для поиска надо делать не массивом, а объектом-моделью.
> Общий запрос:
> $args['meta_query'][] = array(
> 'relation' => 'OR',
> array(
> 'key' => 'building_area_min',


>>666576

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

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

Ну и паста:

----

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

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

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

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

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

----
Ответы за 24-25 февраля Аноним 2016/03/01 22:07:56  №672689 553
>>666584

У тебя в коде тоже есть ошибки, смотри:

> if (!$this->no_u_cant)
> return $age;
А если нельзя, то что вернется? В чем смысл функции которая иногда вернет правильный результат, а иногда неправильный? Это получился неудачный пример. Лучше было бы сделать пример, где у нас сначала было поле $age и метод getAge() { return $this->age; }, а после мы решили вместо хранения возраста сделать поле $birthday и вычислять возраст из текущей даты и дня рождения. Благодаря инкапсуляции нам было достаточно лишь один класс, не трогая весь остальной код. А что если бы инкапсуляции не было? То-то.

> public function set_age($age) {
> if ($age >= 18 && $age <= 99 && !$this->no_u_cant)
> $this->age = $age;
Это тоже плохой пример. У тебя на вход функции дается неправильное значение и ты ничего не делаешь, а молча его игнорируешь. Отлично, а как программист узнает о том что он сделал ошибку? Если функции дают неправильные параметры, надо не молчать а выбрасывать исключение, иначе ошибку придется искать намного дольше.

>>666619

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

>>666625

Вряд ли бы я стал так специально делать. Может опечатался.

>>666655

Неудачный пример кода. strip_tags зачем-то внутри модели (зачем он вообще нужен? почему я не могу в тексте новости угловые скобки использовать?), какие-то сеттеры-геттеры. В твоем случае нужны нормальные сеттеры вместо switch.

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

Я тут подумал и так и не смог вспомнить нормальные примеры с методами get/set. Может в каких-то очень абстрактных штуках, когда мы не знаем заранее какие поля у нас будут в объекте- ну например в базовом классе формы, от которого наследуются конкретные классы, мы можем сделать с помощью get доступными элементы формы:

$form = new LoginForm;
$form->login->setValue('Ivan');
....

И то я не уверен что это такой уж хороший пример - что мешает просто нормальные поля тут использовать?

То есть они нужны только для создания абстракций, когда мы заранее не знаем список полей. В обычном коде они почти никогда не нужны.
Ответы за 25 февраля Аноним 2016/03/01 22:08:20  №672690 554
>>666733

Неправда.

>>666744

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

>>666755

> W5.1 https://ideone.com/94782z
Хотя ответ верный, код дублируется. Одни и те же вещи написаны 2 раза. Почему бы не упростить его?

> W5.2 https://ideone.com/MCoNPH
> if ($sum > 1000000) {
А если равно? Алсо можно перенести условие в шапку цикла.

> W5.6 https://ideone.com/qhdVJ8
> $random = mt_rand(1, $massiveCount);
Неверно, нумерация с нуля начинается а не с единицы

> W5.7 https://ideone.com/Eh48ab
Хорошо сделано

> W5.8 https://ideone.com/WNN6jp
Хотя программа работает верно, ее можно было бы упростиь за счет цикла, убрав повторы

> W5.9 https://ideone.com/QNB4l9
> $length--;
Название неудачное. Если это длина строки, почему она уменьшается? Ну попробуй сам это прости: "уменьшить длину на один". Можно вообще убрать переменную и выислять позицию из значения $i

> if ($palindrome = false) {
Ты перепутал = и ==. У тебя всегда будет срабатывать else.

>>666779

Вот видишь какая у нас хорошая в стране система образования!
Ответы за 25 февраля Аноним 2016/03/01 22:08:38  №672691 555
>>666771

> function inclineWord($number) {
> function declensionMillion($millions) {
Это однотипная копипаста. Копипаста - зло. Надо сделать универсальную функцию склонения любых слов, работающую например так:

echo declense(4, '%d кот', '%d кота', 'аж %d котов', 'ни одного кота')

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

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

> if($number%100 <= 20){
Это условие проще переписать как "если число заканчивается на 11-19 то вернуть нужную форму слова"

> if(isset($spelling[$number])){
А стоит ли это выносить как особый случай?

> fmod(floor($number/1000), 1000);
Можно использовать знак процента для получения остатка

> trim(preg_replace('/\s{2,}/u',
Чтобы не мучаться с пробелами, лучше сделать массив в который складвать слова, а в конце объединить его в строку.

>>666855

Да, при условии что это utf-8 (то есть только с ней, а не с UTF-16 например).

>>666860

Ты никуда не сохранил результат функции trim. Она не меняет переданную ей переменную.
Ответы за 25 февраля Аноним 2016/03/01 22:08:58  №672692 556
>>667001

> \b(.)
Короче будет написать \w

> \)?
А что за странное условие? Разве можно предложение с точкой на конце в скобки прятать?

> echo preg_replace_callback('#((?:^|[.?!])\)?)\s*\b(.)#su', function ($matches) {
Тут хватило бы preg_replace с $1 и $2

>>667066

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

>>667045

Гугли что нового - там много интересного.

>>667088

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

> И еще смеются над теми, у кого DOM-парсеры падают на невалидном html.
Потому что надо использовать HTML-совместимый парсер а не XML. Потому что то что там матчится простым Xpath или CSS выражением, ты на регулярках вообще не реализуешь (ну или замучаешься реализовывать, я подзабыл теорию, могут ли регулярки распарсить HTML).

>>667088

> Модификатор u лишний. Здесь он не имеет значения.
Он имеет значение и позволяет не бескопоиться о юникоде. Потому что другим программистам надо работать а не шарады в твоем коде решать.

> Алсо, есть более элегантное решение
> return in_array(pathinfo($file, PATHINFO_EXTENSION), array('jpg', 'png'));
Согласен, так наверно даже лучше, но ради этой функции надо было лезть в мануал, чтобы вспомнить название константы. Алсо строка длинная, я бы разбил на 2 действия.
Ответы за 25 февраля + немного пропиарим Cloud IDE Аноним 2016/03/01 22:09:41  №672693 557
>>667128

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

>>667188

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


Cloud IDE

Пропиарю хороший проект еще раз: бесплатная IDE в браузере >>667010 - не требует установки, просто регистрируешься и получаешь уже настроенную систему с линуксом, PHP, Апачом, MySQL. Никаких SSH, все работает из коробки включая HTTPS. У меня вот тут есть ссылка - можете туда зайти, там уже настроен и развернут проект файлообменника >>667019

>>667247

Нет, ко мне никакого отношения, я просто зашел и удивлся до чего прогресс дошел.
Аноним 2016/03/01 22:13:00  №672697 558
>>672690
Почему неправда? Ты же писал выше что без знания "теории" будут возникать проблемы, как у того анона с древовидными комментариями.
Аноним 2016/03/01 22:15:02  №672701 559
>>672697

Знание алгоритмов и структур данных, хотя бы минимальное - полезно. Вузовская "математика" (линейный анализ и прочая ерунда) мало где нужна, разве что немного геометрии в 3D графике. Ну и может еще нахождение минимумов/максимумов, но это уже в машинном обучении наверно нужно.
Аноним 2016/03/01 22:17:14  №672705 560
>>672701
Ну все равно я замечал что люди без знаний алгоритмов затрудняются решить задачи на собеседованиях, из-за этого им часто не перезванивают.
Аноним 2016/03/01 22:20:14  №672712 561
>>672705

Смотря какие задачи.
Аноним 2016/03/01 23:36:20  №672854 562
Друзья, кто может пояснить за разделение php и html, если проект в силу того, что он совсем небольшой, не требует никаких шаблонизаторов. Я просто тот еще говнокодер и делаю так — есть один .php файл с классом, в котором описаны все методы, и в этих методах есть вывод по типу echo "код html", и есть index.php, где каркас html, всякие условия/проверки на php и вызов этих самых методов. Но мне стыдно за свой код, потому что кажется, что так он получается слишком грязным и непонятным. Как делать правильно и чистенько?
Аноним 2016/03/01 23:40:15  №672865 563
>>672854
Делай по шаблону на каждую страницу. Потом в контроллере эти шаблоны подключай через include.

>index.php
$a = 1;
$b = 2;
include("index.html");

>index.html
a is: <?= $a ?><br> <!-- Выведет 1 -->
b is: <?= $b ?><br> <!-- Выведет 2 -->

Если не хочешь строить таких велосипедов в приложениях покрупнее, посмотри на шаблонизатор Twig, он небольшой, бесплатный и позволяет удобно создавать простые и не очень простые шаблоны.
Аноним 2016/03/01 23:44:34  №672873 564
Аноним 2016/03/01 23:45:12  №672876 565
Аноним 2016/03/01 23:56:11  №672895 566
Аноним 2016/03/02 00:50:29  №672943 567
Аноним 2016/03/02 00:52:29  №672945 568
>>672943
Неправильно считает, должно быть 61270 с копейками.
Аноним 2016/03/02 02:29:27  №673006 569
>>672943
Конкретно в этом твоём варианте вот что неверно: когда $creditBalance у тебя становится меньше $monthlyPayment, то у тебя следует вот это выражение: $creditBalance = ( $creditBalance х $percent ) + $servicePayment - $monthlyPayment;. И в какой-то момент это уходит в минус, от чего дальше всё идёт неверно.
Подсказка: попробуй ввести отдельную переменную для подсчёта $creditBalance = ( $creditBalance х $percent ) + $servicePayment, ведь именно когда этот момент становится меньше $monthlyPayment, нам и надо просто его выплатить и приплюсовать к $paymentTotal.
Стата вакансий и цен от ХХ Аноним 2016/03/02 08:22:23  №673109 570
Собрал инфу с hh по кол-ву вакансий и указанных зп.
Почему в вакансиях PHP зп указана в 58%, а в других вакансиях строго < 50% ? Что бы это могло значить?
Может быть рынок перенасыщен спецами PHP? Или наоборот?

Алсо кресты sosnooley.

Ruby Найдено 190 вакансий

Указана 72
от 80 000 руб. 60
от 115 000 руб. 34
от 155 000 руб. 12
от 195 000 руб. 5
от 230 000 руб. 4


Php Найдено 1 314 вакансий

Указана 762
от 45 000 руб. 641
от 75 000 руб. 418
от 105 000 руб. 192
от 140 000 руб. 96
от 170 000 руб. 54


Java Найдено 1 393 вакансии

Указана 353
от 65 000 руб. 303
от 130 000 руб. 145
от 195 000 руб. 70
от 260 000 руб. 39
от 325 000 руб. 19


Javascript Найдено 497 вакансий

Указана 206
от 55 000 руб. 181
от 100 000 руб. 119
от 145 000 руб. 34
от 185 000 руб. 17
от 230 000 руб. 12


Python Найдено 362 вакансии

Указана 109
от 85 000 руб. 76
от 140 000 руб. 37
от 190 000 руб. 27
от 245 000 руб. 21
от 300 000 руб. 20


C# Найдено 684 вакансии

Указана 279
от 30 000 руб. 277
от 65 000 руб. 218
от 95 000 руб. 128
от 130 000 руб. 58
от 160 000 руб. 21


.net Найдена 1 021 вакансия

Указана 388
от 45 000 руб. 361
от 80 000 руб. 306
от 120 000 руб. 206
от 155 000 руб. 53
от 195 000 руб. 18


c++ Найдено 729 вакансий

Указана 331
от 70 000 руб. 269
от 140 000 руб. 151
от 205 000 руб. 113
от 270 000 руб. 27
от 340 000 руб. 25
Аноним 2016/03/02 08:30:32  №673113 571
>>673109
>Может быть рынок перенасыщен спецами PHP?
Спецов PHP как раз не хватает, как и в других областях. На PHP много джуниоров или просто девелоперов-макак, из-за того что пхп как продукт доступнее и порог вхождения в него ниже чем в джаву или кресты.
Аноним 2016/03/02 09:03:01  №673123 572
>>673113

Чем отличается "спец" от "макаки"? Есть ли жесткие критерии? А что если таких критериев просто не существует, как и прослойки спецов среди php-программистов, а работодатели сами не знают чего хотят?
Аноним 2016/03/02 11:36:26  №673190 573
>>673109
Чому Пистон столь ценен?
Он же вроде как проще РНР?
Обычно его советуют новичкам.
Аноним 2016/03/02 11:59:05  №673196 574
>>673109

А ты еще посмотри для интереса, что именно за вакансии на Питон (к примеру) с макс. з/п

http://hh.ru/search/vacancy?text=python&clusters=true&enable_snippets=true&salary=310000&only_with_salary=true&from=cluster_compensation

http://hh.ru/vacancy/16016299?query=python
> Big Data Engineer/ Python&Hadoop (Tokyo, Japan)
> Experience with at least three of the following technologies: Hadoop, Hive, Pig, Zookeeper, Cassandra, Spark, Kafka
> Good understanding of software and hardware performance as well as familiarity with the Linux kernel
> Java programming experience
Это не совсем Питон вакансия

http://hh.ru/vacancy/15969455?query=python
> от 1 500 до 5 000 USD
> In an interesting project (New application for an active lifestyle) required Engineering Manager.
> Ruby-on-rails is the most important skill,
> Exceptional coding skills in two or more general purpose programming languages including but not limited to: Java, C/C++, C#, Objective C, Python, JavaScript, .Net skills in Go, Swift - interest and ability to learn other coding languages as needed
Это не Питон вакансия. Причем диапазон з/п подозрительно широкий.

http://hh.ru/vacancy/16162999?query=python
> Java&Python Software Engineer
> Strong mathematical background;
> Expertise in Machine Learning;
> Advanced knowledge of Java.
Это не совсем ПИтон вакансия

Далее
> C++ & Scala Software Engineer (Apache Mesos project)
> от 250 000 руб.

> C/C++ developer
> 2 000-5 000 USD
(вакансия продублирована 14 раз)

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

> Алсо кресты sosnooley.
Только в списке высокооплачиваемых вакансий на Питоне 14 вакансий Си++ программиста.

И что с рынком случилось? До кризиса вроде з/п в 300к для программистов не было даже у аутсорсеров.
Аноним 2016/03/02 12:00:10  №673198 575
>>673123

Ты описания вакансий не пробовал читать?

>>673190

Потому что данные собраны неправильно - высокооплачиваемые вакансии найднные по слову Питон - это не Питон разработчики. Он там как вспомогательный язык.
Аноним 2016/03/02 12:00:22  №673199 576
>>673196
>Kafka
Хоть что-то знакомое.
Аноним 2016/03/02 12:24:43  №673220 577
<script>if('673179' != '673179') {if($.cookie('makabadmin')) {$('a[name=673179]').html('673179')} }</script>
lol

Алсо, попалось интересное задание на апворке, не хотите совместно сделать? Короче делаются скриншоты с гугл мапс, а потом сортиурются по категориям.
Аноним 2016/03/02 12:36:04  №673227 578
>>673220

А что в нем интересного? Слили на апворк то с чем сами возиться не хотят.
Я снова выхожу на связь Аноним 2016/03/02 12:42:48  №673237 579
Доделываю макет на HTML+CSS из задач ОПа.
Согласен с той заменой последовательности уроков, когда ОП вперёд пустил ООП, а HTML+CSS поместил после.
Потому что ужасно жалко потраченного на это всё времени, что ты будешь делать. Понимаю, что потом что-то в шаблонах править будет удобнее, потому что понимание многого пришло. При этом многое, чувствую, там не вполне верно решил.
Макет отличный, мне нравится, потом сам смогу сверстать подобную landing page для своего проекта, это неплохо.
Но сколь далече уже продвинулись те, кто не стал решать бонусные задачи, кто не стал решать вот эти задачи на HTML+CSS.
Жалко времени, душа требует ООП уже, БД и фреймворков.
Постараюсь держать вас в курсе.
Аноним 2016/03/02 13:22:57  №673263 580
аноны, дошел до сессий и кук, наткнулся на такое "javasсript:document.write(document.сооkiе);" что после ввода в адресную строку должно показать все куки с сайта. В силу своей рукожопости я несколько раз загуглил это ибо обработчик джаваскрипта не хотел подхватывать код после копипасты, потом я стер "javascript" перед "javasсript:document.write(document.сооkiе);" и написал обратно, тогда я увидел куки с вк, но они отличались от описания кук на самом сайте вк , но после проведения подобной процедуры на другой странице вк я получаю "undefined". Что произошло?
Аноним 2016/03/02 14:01:55  №673286 581
>>673263
зашел в консоль ctrl+shift+j, там выполнил код. Не понятно, почему в первый раз у меня из строки выполнилось, а потом перестало. Алсо, котаны, кто по специалисту учил джаваскрипт. Саму контору эту тут не очень любят, но мб кто-нибудь даст рецензию на их работу? Сам курс пхп у них просматриваю, ставя скорость видео х1,5, а то это же пиздец 4 часа аутировать и пытаться все запомнить
Аноним 2016/03/02 14:02:33  №673287 582
Робин Никсон - Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд - 2015
Норм книга для новичка?
Хочу перейти к мускулю как-нибудь плавно.
Аноним 2016/03/02 14:10:04  №673294 583
>>673287
Не очень. Старьё.
Аноним 2016/03/02 14:10:43  №673296 584
>>673286
Какой смысл в таких курсах без обратной связи?
Сужу по учебнику ОПа и новичкам, который на 2-3 элементарной задаче начинают спотыкаться.
Аноним 2016/03/02 14:11:19  №673297 585
>>673294
>2015 год
>старьё
В плане подхода, методов и прочего?
Аноним 2016/03/02 14:17:22  №673301 586
>>673296
Не знаю, как тебе, но там есть неплохие истории от самого автора. Вроде как первых байтов в кодировки УТФ-8, которые только в пхп не работаю и прочих историй. ты взлольнешь, но мне страшно вообще что-то писать, а простота и юмор автора расслабляют и страх уходит
Аноним 2016/03/02 14:22:56  №673304 587
>>673301
>мне страшно вообще что-то писать
Ты - это я.
Мне иногда не по себе от того, что я уже достаточно далеко продвинулся, а иногда смотрю на чужие решения предыдущих задач - и не могу ничего понять. Потом разбираюсь, конечно, когда всматриваюсь или изменяю код.
Надеюсь, с опытом пройдёт, когда багаж знаний пополнится. Как с задачами про Айфон, Айпад и многими другими: сначала рвал и метал, а сейчас не глядя могу записать решение.
670184 причин бросить айти Аноним 2016/03/02 14:27:25  №673310 588
Язык Вакансии Резюме Вак/Рез

Ruby 190 6638 2,86
Php 1314 149182 0,88
Java 1393 75690 1,84
Javascript 497 95235 0,52
Front-end 1654 12301 13,44
Python 362 24 074 1,50 //анон сказал, что данные не корректы
C# 684 62 147 1,10
.net 1 021 128 502 0,79
c++ 729 124 259 0,58

678028 резюме - 7844 вакансий = 670184 причин бросить айти
Аноним 2016/03/02 14:28:06  №673312 589
>>673304
Это патологическое неосиляторство, которое наблюдается у 95%двощеров в той или иной степени. В сфере погромистов есть отдельное название ХЕЛЛОУВОРЛДЩИКИ Вкатился в ваш ламповый чат под ником NEOSEELYATOR228 Странно, почему тут не неймфажат. Наверняка меня обоссут мамкины ононимы
670184 причин бросить айти Аноним 2016/03/02 14:30:13  №673314 590
14569182135300.png (24, 805x311)
311x805
>>673310
Пофиксил

678028 резюме - 7844 вакансий = 670184 причин бросить айти
Аноним 2016/03/02 14:31:16  №673317 591
>>673314
>считал ручками в блокноте и на калькуляторе
>причины бросать айти
Аноним 2016/03/02 14:49:38  №673329 592
Пхпач-помогач. У меня в таблице хранятся значения, они могут быть с двойными и одинарными кавычками, при этом мне нужно сделать валидацию - идет запрос есть ли такая запись в базе: в тексте запроса у меня после real_escape_string - "почтомат "приватбанк" " и соответственно не находит, как можно решить проблему?
Аноним 2016/03/02 15:01:33  №673337 593
>>673329
вставляет вместо двойных кавычек &quot ;
Аноним 2016/03/02 15:16:11  №673352 594
>>673337
сделал htmlspecialchars_decode, результат есть, но я думаю это неправильно
Аноним 2016/03/02 15:19:37  №673355 595
Посоны, подскажите.
Почему не меняется переменная currentPosition?
Как её вывести из области видимости функции?
Перепробовал через return и так далее, но почему-то не прокатило.
Читал в учебнике, что должно работать так:
a = 1
function go() {
a = 6
}

go()
alert(a) // => 6

но бля, почему не работает?

http://ideone.com/6S1BI7
NEOSEELYATOR228 2016/03/02 15:59:20  №673379 596
14569235604610.png (15, 1371x130)
130x1371
14569235604611.png (33, 1349x256)
256x1349
14569235604622.png (9, 1351x122)
122x1351
14569235604623.png (16, 632x166)
166x632
Гайс, вк что-то поменял? Вот мои кукис, вот то(4-я пикча), что по мнению вк должно у меня быть. ЧЯДНТ?
Аноним 2016/03/02 16:06:36  №673384 597
14569239966820.jpg (209, 850x914)
914x850
Аноним 2016/03/02 16:23:43  №673398 598
>>673317
ты меня раскусил
Аноним 2016/03/02 16:25:42  №673401 599
>>673355
Используй всё-таки возврат значения:

function getCurrentPosition() {
var currentPosition;
// тут твой код
return currentPosition;
}

var currentPosition = getCurrentPosition();
console.log(currentPosition);

Так не работает?
Аноним 2016/03/02 16:26:02  №673402 600
>>673384
Всё отлично, но W5.1 решена неправильно:
>if ($creditBalance < 0)
Такого никогда не должно быть в правильном решении, чтобы $creditBalance был меньше нуля. Ведь так ты допускаешь, что в какой-то момент банк становится должен Анончику, чего быть не должно.
>$creditBalance = 0;
А вот тут надо просто отнимать от $creditBalance оставшуюся выплату. Имей в виду, что $creditBalance к этому моменту уже должен быть помножен на процент и с прибавленной комиссией за кредит.
Аноним 2016/03/02 16:26:34  №673403 601
Пыханы, есть вопрос.
Сам буду студентом 4 курса, предлагает мне местная контора перекатиться в РНР, хотя я сам занимаюсь явой.
Стоит ли бежать учить этот ваш РНР, при условии что живу в мухосранске 100к, и при этом везде нужны пхпшники, а заводить трактор в ДС я поку не буду?
Аноним 2016/03/02 16:37:00  №673407 602
14569258207560.jpg (214, 850x1212)
1212x850
>>673402
>W5.1 решена неправильно
Готов с тобой поспорить.
>Такого никогда не должно быть в правильном решении
Ты неправ. И смотри почему: школьник пришёл в последний месяц отдавать 5000р. Он их отдал банку. Банк смотрит на купюру и даёт школьнику сдачу.
Аноним 2016/03/02 17:19:38  №673450 603
>>673407
Это самая изощрённая отмазка, чтобы не переделывать задачу, из тех, что бывали! Браво!
Аноним 2016/03/02 17:25:45  №673456 604
>>673450
Зачем переделывать то, что и так правильно?
Аноним 2016/03/02 17:27:12  №673458 605
>>673456
То, что правильно переделывать не надо. У тебя неправильно.
Аноним 2016/03/02 17:32:12  №673467 606
>>673458
Предоставь пример, когда программа работает неправильно.
Аноним 2016/03/02 17:41:53  №673485 607
>>670333
Так ведь там есть условие, если оставшаяся сумма кредита следующего месяца меньше 5000. Прости, если я чего-то не понимаю и за задержку с ответом.
Аноним 2016/03/02 17:43:08  №673488 608
>>673467
У тебя $creditBalance в последнем действии механически приводится к нулю, что тоже можно посчитать дурным тоном.
Вот ОП приедет, он тебе всё скажет. Хотя к этому времени ты уже уйдёшь дальше и не захочешь возвращаться к этой задаче.
Так или иначе, ты сейчас заложил мину в своё обучение программированию, которая однажды сработает.
Аноним 2016/03/02 17:48:31  №673491 609
>>673488
То есть предоставить контрпример ты не можешь.
Аноним 2016/03/02 17:56:29  №673500 610
>>673491
Что сделать, я недопонял?
Изменить твой код, чтобы выдало ошибку?
Аноним 2016/03/02 17:58:41  №673504 611
Ты с двумя людьми говоришь, кстати.
Аноним 2016/03/02 18:00:54  №673506 612
>>673504
С одним. Я по ошибке сказал, что в коде ошибка. На самом деле ничего такого я там не увидел. Я подумал там действительно в минус уходит долг и так и остаётся до следующего месяца: распространенная ошибка для этой задачи, но тут такого нет.
Аноним 2016/03/02 18:08:20  №673517 613
Посоны, нужен учебник по PHP. Чтоб с задачами блять в конце каждой главы например. Чтоб я не просто прочел, гы прикольно, а делал согласно навыкам, которые я получил в процессе чтения конкретной главы.
Аноним 2016/03/02 18:09:25  №673519 614
Аноним 2016/03/02 18:11:40  №673520 615
>>673500
>Что сделать, я недопонял?
Предоставить начальные условия, при которых моя программа неправильно рассчитывает то, что она должна рассчитывать.

Из постановки задачи есть ограничения на начальные условия:
$creditBalance > 0
$monthlyPayment > 0
$rate > 1
$servicePayment >= 0
$payed total = 0

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

>Так или иначе, ты сейчас заложил мину в своё обучение программированию, которая однажды сработает.
Не понимаю, о какой мине идёт речь. Выражайся яснее, пожалуйста.
Аноним 2016/03/02 18:19:46  №673526 616
>>673519
дай бог здоровья
Аноним 2016/03/02 18:30:20  №673532 617
>>673520
>$payed total
$payedTotal
селффикс
Виртуалхосты, хтассесы, хостсы, ксамп, вертриго...Я ЗАЕБАЛСЯ Аноним 2016/03/02 18:37:25  №673542 618
Анон, я чего-то, кажется, напердолил, кажется, сильно. Создал три папки, в каждой сайт. В одной из папок вместе с сайтом лежит его .htaccess, который рулит всякой хуйней.
Для каждого сайта запись в hosts и виртуалхост в хттпд.конф.
Пытаюсь зайти на один сайт - заходит нормально (на него же заходит при попытке зайти просто на 127.0.0.1, а не по имени)
Пытаюсь зайти на другие - хтассес этого первого сайта перехватывает запросы и отправляет меня нахуй.
Удаляю этот файл хтассесс, пытаюсь зайти на эти вот другие сайты - нот фаунд (даже при попытке открыть конкретную html страницу, хотя она-то уж точно "фаунд"). Все это пытаюсь пердолить на сборочке вертриго сервер. До этого говно вертелось на ксампе, там не было никаких хтассесов и вирт хостов и все работало (например, 127.0.0.1/макаба - заходило на www/макаба/индекс.пхп). Что я сделал не так, где перепердолил, как исправить и можно ли, на будущее, как-то попроще? А то я уже заебался - удалять хтассесы при переходе с реального сервера на локалхост, иметь две разные версии хтассесов, записывать каждый новый проект в хостс и httpd.conf... Можно все это попроще как-то? Инбифо, написать скрипт Сорян за сумбурность, уже руки трясутся.
Аноним 2016/03/02 18:49:02  №673558 619
>>673542
Ах да, при всем при этом, например, 127.0.0.1/phpmyadmin вполне себе работает, а вот сайты - нихуя. И раз уж я такой мудак, посоветуй, мб, годную книжку (рашн) по админству, ну, все эти хттпд.конфы, хтассесы, май.ини, настройки-настроечки...
Аноним 2016/03/02 19:16:14  №673600 620
>>673520
Судя по всему, ты что-то изучал и раньше.
Но если ты сейчас взялся за изучение РНР, то, скорее всего, прежде не всё у тебя было гладко в программировании. Либо в нём ты не продвинулся далеко, раз сейчас начал с лёгких задач из учебника ОПа.
Ничего личного, просто обозначаю своё вИдение ситуации.
Ты не задавался вопросом, почему именно всё не было гладко?
>Если на перечисленных выше начальных условиях программа выдаёт правильный ответ - она работает правильно.
Вот именно, что уверенность в этом закладывает мины в твоё обучение программированию. Представь, что реальная программа по расчёту кредита в реальном банке сделает допущение, что банк в какой-то момент оказывается должен что-то заёмщику, - думаешь, кто-то на такое согласится?
У нас есть чёткая формулировка задачи: прибавлять к сумме кредита процент и комиссию, отнимать месячную выплату и прибавлять результат к общим выплатам. Когда сумма кредита с прибавленными процентами и комиссией становится меньше месячной выплаты - выплачиваем её и заканчиваем цикл выплат.
Из недочётов в твоём решении:
1. $creditBalance в последнем условии механически приводится к нулю, желательно по-иному всё сделать. И без излишнего копирования.
2. Не выводится в конце "С меня хватит!". Таково было условие.
3. Нельзя будет в любой момент работы скрипта утверждать, что все переменные можно с одинаковым успехом вывести в echo. Например, попробуй сделать вывод реального $creditBalance до прибавления процентов и комиссии - не будет верного решения в этой ситуации, в какой-то момент будет отрицательное число в суме кредита, это нонсенс.
Можно жутким говнокодом решить эту задачу, с кучей копирования и прочим - и программа тоже работала бы правильно. Только не к такому надо стремиться.

>>673506
Ну ты и есть второй.
Долг уходит в минус, а потом отрицательное число умножается на положительное число, а к этому прибавляется ещё одно положительное число (умножается на 1.03 с прибавлением процентов к долгу и затем прибавляется 1000 комиссии). Это неправильный подход.
Аноним 2016/03/02 19:17:52  №673606 621
>>673600
* в сумме кредита
Аноним 2016/03/02 19:25:01  №673616 622
>>673600
>потом отрицательное число умножается на положительное число, а к этому прибавляется ещё одно положительное число (умножается на 1.03 с прибавлением процентов к долгу и затем прибавляется 1000 комиссии).
Нет, у тебя там другое.
У тебя в какой-то момент Анон платит больше, чем должен, банк становится должен Анону:
$payedTotal += $monthlyPayment; Если вывести в этом месте $payedTotal, то там будет тысяч 65.
А далее уже отрицательный $creditBalance отнимается от этих 65 заплаченных Аноном тысяч, получается верная цифра.
Вот это всё лишнее и вообще представляет собой нонсенс. Неверный подход.
Аноним 2016/03/02 19:37:35  №673633 623
14569366560130.png (771, 800x1131)
1131x800
Новая партия.
W5.3 - http://ideone.com/jWpMfH
W5.4 - https://ideone.com/hZNNWf
W5.5 - https://ideone.com/kwBJKl НИКОГДА

>>673600
>Судя по всему, ты что-то изучал и раньше.
Математику и физику изучал и продолжаю изучать. Захотелось научиться программировать в вебе. Всё-таки в России не самые лучшие времена, а в случае чего хочу, чтобы на хлеб с маслом хватало. Уезжать не хочу.

>в какой-то момент
Отрицательный баланс там виртуальный и нужен для удобства расчёта и чтения кода.

>Представь, что реальная программа по расчёту кредита в реальном банке сделает допущение, что банк в какой-то момент оказывается должен что-то заёмщику, - думаешь, кто-то на такое согласится?
Про black box ни разу не слышал?

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

>>673616
>Вот это всё лишнее и вообще представляет собой нонсенс. Неверный подход.
Ну охуеть теперь.
Аноним 2016/03/02 19:49:39  №673644 624
>>673633
>Отрицательный баланс там виртуальный и нужен для удобства расчёта и чтения кода.
Стремиться надо к такому, чтобы в любой момент можно было вывести правильное значение переменной, которое соответствует действительности - как минимум. Твой скрипт не позволит этого.
>Про black box ни разу не слышал?
Слышал, конечно, сам практикую.
Но и довольно часто встречались фрилансеры с таким же, как у тебя, упорством в оправдании своего желания работать меньше, не переделывать детали в соответствии с элементарным ТЗ - и прочее. Всегда не особо приятные ощущения от такого.
Аноним 2016/03/02 19:56:38  №673650 625
>>673644
>в любой момент
У меня момент времени - месяц. Внутри него никаких делений на нуль и подобного непотребства не происходит. Все вычисления корректны. На выходе из месяца все переменные содержат то, что и должны содержать.

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

>упорством в оправдании своего желания работать меньше
Краткость - сестра таланта.
Аноним 2016/03/02 20:03:07  №673657 626
Хочу попрактиковаться в написании плагинов для вордпресс, пока только повторяю чужие плагины, слегка их изменяя, хочу написать полностью свой, но не могу придумать, что он должен делать. Может кто подскажет?
Аноним 2016/03/02 20:09:09  №673663 627
>>673650
Важно не только "что", но и "как".
>В задании ни слова не сказано про то, какими должны быть переменные во время выполнения.
ОП об этом говорил неоднократно просто так.
Поскольку неправильное решение у многих сразу получается, а с правильным приходится сидеть дольше.
>Краткость - сестра таланта.
Тот самый случай, когда с точки зрения грамматики или культуры речи всё абсолютно правильно. А впечатление производит не самое приятное, согласен. Вот так и в твоём варианте той задачи: за вроде бы правильным решением скрывается нечто такое, чего допускать ни в коем случае нельзя.
Аноним 2016/03/02 20:11:12  №673665 628
>>673663
Да там нет ничего неправильного, нету такой ситуации после которой функция вернет ложный результат.
Аноним 2016/03/02 20:11:13  №673666 629
>>673663
> нечто такое, чего допускать ни в коем случае нельзя.
Что конкретно? Мне уже надоело это хождение вокруг и около.
>вроде бы правильным решением
Дай определение правильного решения. Мы с тобой говорим на разных языках, походу.
Аноним 2016/03/02 20:27:09  №673678 630
>>673665
>>673666
Так надо стремиться к универсальности. Чтобы не было таких отмазок и условий: когда месяц закрывается, то переменная правильная, а когда он ещё не закрылся, то она становится неправильной. Несмотря на то, что конкретно в этом решении этого и не произойдёт.
Стремиться-то надо к правильному пути, когда переменные в любой момент не противоречат логике и реальности.
>Что конкретно? Мне уже надоело это хождение вокруг и около.
Требования к себе не вполне верны в этой ситуации. Подобные решения не приветствуются, у задачи может быть несколько правильных решений без ухода в минус. И лучше попробовать именно их отыскать, чем тратить время.
>Дай определение правильного решения.
Ну вот, например:
>прибавлять к сумме кредита процент и комиссию, отнимать месячную выплату и прибавлять результат к общим выплатам. Когда сумма кредита с прибавленными процентами и комиссией становится меньше месячной выплаты - выплачиваем её и заканчиваем цикл выплат.
Это самой прямой и логичный алгоритм решения задачи.
Аноним 2016/03/02 20:27:53  №673679 631
*самый прямой
Аноним 2016/03/02 20:29:37  №673681 632
>>673678
По твоему определению получается, что все решения, которые отличаюстя от твоего - неверные. Извини, но тут уж ты неправ.
Аноним 2016/03/02 20:31:34  №673685 633
>>673678
Да ты поехавший какой-то. Вот тебе задача: написать функцию, которая переворачивает строку. Ты берешь аргумент-строку разбиваешь на массив символов, делаешь array_reverse и склеиваешь обратно в строку и возвращаешь. Задача решена. И тут я такой "НЕ УНИВИРСАЛЬНА, А ВОТ НА ЭТОЙ СТРОЧКЕ ПЕРЕМЕННАЯ СТАНОВИТСЯ МАССИВОМ А ДООЛЖНА БЫТЬ ВСЕГДА СТРОКОЙ ТУТ ОНА ПРАВИЛЬНАЯ А ЗДЕСЬ НИПРАВИЛЬНАЯ", хотя по факту нужно смотреть лишь результат функции, то, что она возвращает, а какие метаморфозы она претерпевает на пути к этому результату не так важно.
Аноним 2016/03/02 20:32:33  №673687 634
>>673685
Вот этого двачую.
Аноним 2016/03/02 20:45:43  №673697 635
>>673681
Чому? Все решения, в которых логика выплат сохраняется, - правильные. А когда в какой-то момент анон выплачивает банку ~65к, а потом банк ему возвращает около 4к, - не вполне правильные. Мне кажется это естественным.
>>673685
>Да ты поехавший какой-то.
Yep, и уже довольно давно.
>по факту нужно смотреть лишь результат функции, то, что она возвращает, а какие метаморфозы она претерпевает на пути к этому результату не так важно.
Если логике не противоречит - всё нормально.
Есть обязательные шаги, а есть такие, которые неверны либо не обязательны.
Представь, что кассир или менеджер в банке ручками всё рассчитывает для Анона. Логика в этом случае обязательно будет нормальной, а не такой, при которой менеджер скажет или укажет что-то такое: "Вот тут проценты и коммиссия на каждый месяц и твои выплаты. А вот тут в последний месяц ты нам платишь свои прежние 5к рублей, банк становится должен тебе, а потом отдаёт тебе часть долга". Это-то и неверно.
Послушаем, что скажет ОП через пару дней.
Аноним 2016/03/02 20:51:15  №673704 636
>>673697
>Все решения, в которых логика выплат сохраняется
Смоделируй мне большие(миллиарды) частицы из первых принципов. Ой, а ты не можешь.
Аноним 2016/03/02 21:02:48  №673711 637
>>673704
>большие количества частиц
Фикс.
Аноним 2016/03/02 21:08:07  №673715 638
>>673697
Да этот поехавший про сдачу не слышал.
Аноним 2016/03/02 21:11:15  №673722 639
>>673704
Хочу оставить свой отзыв о фрилансере под ником >>673704
>>673704 обещал сделать работу в срок и по ТЗ, сдал всё довольно быстро, но результат, мягко говоря, не соответствовал ожиданиям.
Что неприятно поразило: не хотел признавать свою неправоту, пытался оправдать свою работу, которая не выдерживает никакой критики.
Работали по Безопасной сделке, в итоге по решению арбитража мне вернули сумму полностью.
Но есть и положительные стороны у >>673704: берётся за работу с воодушевлением, делает всё достаточно быстро, код на выходе вполне аккуратный.
В общем, если вам нужны какие-то несложные вещи типа натягивания шаблона на вротперс или поправить вёрстку, то >>673704 вполне подойдёт. Только перед началом работы убедитесь, что он понял важные пункты из ТЗ.
Если же нужно чёткое следование логике и техническому заданию, то не советую вам связываться с ним. Потратите только зря деньги, нервы и силы, а в результате получите не то, на что рассчитывали.
Работайте с ним только по Безопасной сделке на коротких сроках, если не найдёте других вариантов.
Для себя я выводы сделал: работать с >>673704 больше не буду.
Почти копипаст с одной биржи фриланса

>>673715
Тогда там надо предусмотреть такие переменные, а пока там такого нет.
Аноним 2016/03/02 21:13:09  №673724 640
14569423894890.jpg (35, 199x200)
200x199
Аноним 2016/03/02 21:15:06  №673726 641
>>673722
Я не твой работник, поехавший.
Аноним 2016/03/02 21:16:25  №673728 642
>>673722
Мань, я не фрилансер, а ты не работодатель. Ты просто идёшь нахуй.
Аноним 2016/03/02 21:17:50  №673729 643
>>673724
"Почти" там только номер поста, поставленный на место ника.

>>673726
Как так? А кому я только что оставил отрицательный отзыв?
Ситуация узнаваемая, вполне.

>>673728
Бугурт приобретает отчётливые очертания.
Аноним 2016/03/02 21:23:23  №673734 644
>>673729
>Как так? А кому я только что оставил отрицательный отзыв?
Анониму, который учится программировать и не собирается делать вещи так, как хочешь ты, но так, как правильно. Не выдержав критики этого анонима, ты придумал какие-то отношения фрилансер-работодатель, коих между вами нет, для перехода в другую плоскость спора, где ты уже был прав.
Но он не фрилансер. А ты не работодатель.
Аноним 2016/03/02 21:34:02  №673746 645
>>673734
Да вы, батенька, ещё более поехавший, чем я, если всё это всерьёз.
>не собирается делать вещи так, как хочешь ты, но так, как правильно.
ОП рассудит, я гарантирую, подскажет, как правильнее.
>Но он не фрилансер. А ты не работодатель.
Просто знакомая ситуация, характерная для фриланса. Когда исполнитель находит кучу нелепых отмазок, чтобы просто от него отстали и приняли работу. Специально для подобных случаев есть БС и арбитраж.
Аноним 2016/03/02 21:54:52  №673765 646
>>669753
Ребятки, двойной(!) бамп.
Аноним 2016/03/02 21:56:40  №673769 647
В моем городе ДС-2 главная плеяда программирования ИТМО устраивает различные курсы погроммистов, в которых изучают различные языки с упором на трудоустройство. Также есть курс html/css/js/php/sql в одном флаконе за три месяца или полгода по-моему, не помню. Хочу пойти после того, как решу задачки из ОП-поста, все правильно сделаю?
Аноним 2016/03/02 22:09:57  №673785 648
14569457971370.png (1347, 866x2934)
2934x866
>>673769
Для разнообразия можно.
Аноним 2016/03/02 22:16:12  №673791 649
14569461728630.png (791, 850x621)
621x850
Аноним 2016/03/02 22:19:03  №673793 650
>>673791
Шикарное решение, респект.
Аноним 2016/03/02 22:20:32  №673795 651
>>673793
Это ещё не всё сделано, кстати.
Аноним 2016/03/02 22:24:50  №673799 652
>>673791
Хорошая задумка с количеством слогов.
Аноним 2016/03/02 22:52:07  №673827 653
Ананасы, дайте подсказку тупому анонимусу, что делать дальше.
Числа прописью:
https://ideone.com/UMDGcw
Аноним 2016/03/02 23:05:54  №673843 654
14569491541990.jpg (116, 850x565)
565x850
>>673791
http://ideone.com/sR4Qhz
Немного допиленная версия.
Не впилил правило с маленькой っ, как-нибудь потом доделаю.
Аноним 2016/03/02 23:19:53  №673862 655
Можно как-то передавать между php файлами значения переменных по типу POST, не хуяря их в куках/сессии/адресной строке? Например, результат работы одного файла возвращается в другой.
Аноним 2016/03/02 23:27:04  №673873 656
Аночик выручай. Задали написать курсач. Веб приложение с использование МВС на джавке. Есть опыт такого рода только на пыхе. Я как понимаю надо копать в сторону сервелетов и jsp. Но инфы очень мало, посоветуйте литературу,пожалуйста.
Аноним 2016/03/02 23:30:41  №673879 657
Аноним 2016/03/02 23:47:45  №673905 658
>>673862
//main.php
$a = include('kek.php');
echo "Hello, {$a}!"; //output: Hello, Yoba!

//kek.php
/.../
return 'Yoba';
Аноним 2016/03/02 23:47:49  №673906 659
>>673384
>>673402

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

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

Каждый месяц пока долг больше нуля:
- прибавить к долгу проценты и комиссию и вычесть 5000 (макс. ежемесячную выплату)
- прибавить к общей сумме выплаченного 5000
- если долг стал меньше нуля, то прибавить к общей сумме выплат остаток долга (?) и сделать долг равным нулю

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

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

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

Кстати, если использовать min/max, то задача решается без использования if, решение получается простое и короткое.

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

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

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

>>673681

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

>>673685

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

>>673722

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

Я в принципе настаивать на той или иной точке зрения не буду. Я привел свои аргументы по поводу решения, а возражать или нет, исправлять или нет, или это уже личное дело анона. Мы тут только даем советы, а воспользуются ими или нет, это уже не наше дело.
Аноним 2016/03/02 23:51:51  №673912 660
>>673715

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

>>673746

Фриланс наверно не лучший ориентир. Там много профессионализма присутствует с обоих сторон. Не особо советую в этом участвовать.

>>669753

Это называется юнит-тесты. Почитай урок https://gist.github.com/codedokode/a455bde7d0748c0a351a

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

Аноним 2016/03/03 00:11:23  №673940 661
14569530838690.png (703, 600x800)
800x600
>>673906
Спасибо за пояснения.
>Вот этот вот последний кусочек - он по моему не очень логичный. Причем в коде никаких пояснений, почему сделано так хитро и запутанно, нету. Непонятно - то ли автор тут закладывает какую-то логику, то ли он ошибся и что-то перепутал.
Я как-то даже и не задумался, что этот момент будет неясен. Спасибо, в следующий раз оставлю комментарии к возможно неясным местам.

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

>если использовать min/max
Что-то типа такого? http://ideone.com/rfef0Q

>давайте обсуждать исключительно код и способ решения и не добавлять эмоций в спор, только аргументы почему один способ лучше или хуже. И уж тем более давайте не будем никого ни в чем обвинять.
Извиняюсь.
Аноним 2016/03/03 00:12:25  №673941 662
>>673905
А если массив хочу вернуть?
Аноним 2016/03/03 00:12:42  №673942 663
>>673791

> $letters = array(
> 1 => 'а',
> 2 => 'и',
> 3 => 'у',
Не стоит проставлять нумерацию вручную - неудобно будет править список (и неудобно проверять что у тебя все номера стоят правильно). Достаточно поставить только первый индекс

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

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

>>673843

Тот же совет про индексы.

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

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

И ゞ тоже не после каждого символа логично ставить.

Вот это вот не очень хорошая идея:

> ($random >= 46)&&($random <= 101))
Представь мы захотим поменять символы в массиве - все эти цифры придется пересчитывать. Поддерживать такой код неудобно. Проверить его тоже не очень легко.

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

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

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

// сокуон разрешен только если текущий символ начинется с согласной
$isSokuonAllowed = !in_array($character, $specialCharacters);
$isDuplicatorAllowed = ....;

Это облегчит написание условий:

if ($isSokuonAllowed && $random < $sokuonProbability) {
$text .= $sokuon;
}

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

В общем, давай, подумай сам, как сделать код более простым, чтобы правила было легко читать и легко менять.
Аноним 2016/03/03 00:12:59  №673943 664
>>673941
Не знаю как в PHP, но обычно возвращается указатель на первый элемент массива.
Аноним 2016/03/03 00:14:09  №673944 665
>>673940

> Что-то типа такого? http://ideone.com/rfef0Q
Да. Использование min тут имеет то преимущество что код чуть компактнее получается и мы обходимся без ветвлений.
Аноним 2016/03/03 00:14:20  №673945 666
Как сделать, чтобы функция могла юзать переменные всякие там, массивы и прочее из другой функции (из мейна)? А то вот делаю войдовую функцию по рисовке тайлов из массива, хочу её отдельно вынести чтоб использовать когда хочу как собстна функцию, а там чтоб нарисовать что-то нужно делать команду окнонейм.draw(спрайт), которая работает только в мейне (потому что там определено окно, спрайт, вот это всё).
Аноним 2016/03/03 00:14:27  №673946 667
>>673943
>>673941
>>673905
Бля, не, нихуя не то. Наоборот, файл завершает работу и передает некоторую инфу в другой, вызывая его (или переадресуя), а не наоборот, тот первый подключает второй.
Аноним 2016/03/03 00:16:09  №673947 668
>>673943

В PHP переменные могут хранить массивы. Если ты хочешь намекнуть на Си то там такое решение - большая проблема, так как в 99% случаев нам нужен не указатель на массив в памяти, а еще и длина (чтобы избежать переполнения). Удивительно, что хотя проблема с переполнениями буфера известна уже 30 лет, программисты на Си все езе их допускают. Это происходит из-за нежелания борьбы с проблемой системно - например, используя определенные правила или абстракции.
Аноним 2016/03/03 00:16:30  №673948 669
>>673946

Хватит изобретать велосипеды. Тебе нужны функции.
Аноним 2016/03/03 00:19:03  №673949 670
>>673942
>Тот же совет про индексы.
Индексы я оставил для того, чтобы было удобнее смотреть, где начинаются "звонкие" символы, символы, с которыми маленькая цу не работает и всё в этом духе. Не думаю, что это что-то криминальное.

За советы по программе с хираганой - большое спасибо, допилю.
Аноним 2016/03/03 00:20:15  №673950 671
>>673942

> // сокуон разрешен только если текущий символ начинется с согласной
> $isSokuonAllowed = !in_array($character, $specialCharacters);
Ой, тут комментарий не соответствует коду, но надеюсь мысль понятна. Условия лучше писать в таком виде, потому что условие вида

if ($random > 46)

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

Аноним 2016/03/03 00:21:44  №673952 672
>>673949

Индексы имеют тот недостаток что их надо поддерживать при изменениях. Это лишняя ручная работа. Лучше будет сделать несколько отдельных массивов для разных категорий символов. А в коде ты потом можешь объединить их в один общий массив если надо.

То есть простановку индексов все же лучше оставить компьютеру - у него это получается лучше.
Аноним 2016/03/03 00:24:30  №673953 673
>>673952
А вот что подскажи - как объединить несколько массивов в один?
Аноним 2016/03/03 00:33:04  №673960 674
>>673953
Создаешь текстовый файл и записываешь туда двумерный массив, тебе необходимо поменять минимальный и максимальный элемент в этом массиве В ФАЙЛЕ!
Аноним 2016/03/03 00:39:17  №673965 675
>>673948
Нет же!
Файл, например, обрабатывает данные формы, после чего редиректит на главную админки с определенным месседжем и статусом.
Аноним 2016/03/03 00:41:03  №673966 676
>>673965
Тащемта, месседж можно выполнить с помощью обычного аллерта.
Аноним 2016/03/03 00:43:31  №673968 677
>>673966
Опять же, если инициатор - главная - да. Смотри
Форма использует обработчик.пхп. По завершению своей работы обработчик.пхп должен редиректить на главная.пхп и передавать последней некоторые параметры.
Аноним 2016/03/03 01:13:58  №673981 678
>>673953

array_merge - вроде же было в уроке про массивы? Если нет, информация есть в мануале.

>>673965

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


Аноним 2016/03/03 01:16:26  №673983 679
>>673981

Хотя я подумал, если ты сейчас пойдешь гуглить про MVC, то наверняка найдешь не то или запутаешься. По хорошему тут надо изучить какой-нибудь фреймворк вроде Юи 2 или Симфони 2, или например решать нашу задачу про студентов, в общем быстро это не объяснить.
Аноним 2016/03/03 01:51:07  №673992 680
>>673945

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

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

> а там чтоб нарисовать что-то нужно делать команду окнонейм.draw(спрайт), которая работает только в мейне (потому что там определено окно, спрайт, вот это всё).
При чем тут "окно нейм"? Какой это язык? По моему твое окнонейм - это обычный объект, который можно передавать.
Аноним 2016/03/03 02:19:49  №674002 681
Объясните где взять sphinx.api.php? Нагуглил только установку дополнения для PHP через PECL, но там нужно еще и оригинальный сфинкс с исходников собрать, а я этого не очень хочу.
Аноним 2016/03/03 02:21:09  №674003 682
>>674002
Извиняюсь, нашел папку api в бинарниках для win32. И почему нельзя было сделать ссылку на api отдельно для других ОС?
Ответы 27 февраля Аноним 2016/03/03 06:29:45  №674035 683
>>667269

> mb_strtoupper(mb_substr(trim($value),0,1)) . mb_substr(trim($value),1)
Вот эту сложную конструкцию стоит вынести в отдельную функцию.

> foreach($text as $key => $value){
value лучше переменовать в sentence, а text хранящий массив - в sentences

> \\s*?
Квантификаторы нельзя применят друг к другу напрямую. Квантификатор можно писать только после символа или круглых/квадратных скобок. Нельзя написать a+? - можно писать (a+)? но это довольно бессмысленно (какой смысл задавать число повторений дважды?) и проще заменить на звездочку. Знак вопроса после звездочки управляет жадностью звездочки (мануал http://php.net/manual/ru/regexp.reference.repetition.php ) и это вряд ли то, что ты имел в виду.

Вместо var_dump надо возвращаеть результат с помощью return и далее выводить его через echo.

>>667284

Если речь о Windows - в функции работы с файлами в нем надо передавать имена в win1251.

>>667361

Берем 1-й символ с начала и с конца и сравнвиаем. Не равны - не палиндром. Равны - продолжаем сравнение.
Берем 2-й символ с начала и с конца и сравниваем. Не равны - не палиндром. Равны - продолжаем сравнение.
....

В твоем коде ты всегда берешь только первый и последний символ. А номер символа дложен меняться на каждом шаге цикла.
Ответы 26-27 февраля Аноним 2016/03/03 06:30:12  №674036 684
>>667362

> function inclineWord($key, $word) {
Неудачно спроектирована функция. Вот я допустим хочу ее использовать - что такое key? что такое word? Почему word хранит число, хотя переводится как "слово"? Ну и ты зачем-то заложил в нее список слов, лучше убрать его из функции и передавать формы слова снаружи. Эту функцию надо переписать целиком.

Вот пример хорошей функции:

echo declense(4, '%d кот', '%d кота', 'аж %d котов', 'ни одного кота');

> function parts($number) {
Имя функции должно начинаться с глагола, сделатьЧтоТо, напримр splitToParts

> $score = mb_strlen($number);
> $thousand = mb_substr($number, -6, 3);
Для работы с числами надо использовать математические операции (деление, остаток от деления). Более того, ты в этой функции скопипастил 3 почти одинаковых блока. Это плохо, но если перейти на математические методы, эти ифы будут не нужны, потому оптимизировать их не надо.

> function smallNumberToText($number) {
> if ($number == 0) {
> echo "На вашем счету ноль рублей\n";
> exit;
Плохо спроектирована функция. Почему она самовольно выводит что-то на экран, да еще и завершает всю программу? А если я хочу вызвать ее несколько раз? При этом если число не равно нулю, то она ничего не выводит. Тут нет логики.

> if (mb_strlen($discharge) == 3) {
Используй математические методы

В функции smallNumberToText слишком глубокая вложенность кода. Вот я вижу 5 уровней вложенности: foreach -> if ($discharge > 0) -> else -> for. Как минимум ту можно избавиться от одного уровня, переделав if ($discharge > 0). Когда у тебя весь код заключен в один if - это плохо и надо переворачивать такой иф.

> .$spelling[mb_substr($discharge, 0, 1) * 100];
слишком сложное выражение в скобках - выноси в переменную с понятным именем.

> $regexp = array('/один тысяча/', '/два тысячи/', '/ ноль/', '/^[ ]/');
> $replacements = array('одна тысяча', 'две тысячи', '', '');
Это костыли. Надо изначально выбирать правильную форму слова.

В общем, убирай все mb_strlen и mb_substr.

>if ($number % 1000 == 000) {
000 это то же самое что просто 0. Подумай в чем разница между 0, "0", 000, "000".
Ответы 26-27 февраля Аноним 2016/03/03 06:30:34  №674037 685
>>667369

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

Вот например:

> while($symbols > 0) {
> $reversed .= mb_substr($string, --$symbols, 1);
Это закамуфлированный цикл со счетчиком, то есть for. Почему ты пытаешься его замаскировать?

> $reversed .= mb_substr($string, --$symbols, 1);
Это 2 отдельных действия и должно писаться так:

$reversed .= mb_substr($string, $symbols, 1);
$symbols--;

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

Перевернуть строку проще, разбив ее на массив символов ($letters = preg_split("//u", $text, null, PREG_SPLIT_NO_EMPTY);)

> return mb_substr($text, 0, ceil($textLength / 2)) == reverseString(mb_substr($text, floor($textLength / 2)));
Не очень понятно зачем эти странные манипуляции с делением на 2? Что тебе мешает перевернуть строку целиком? И что еще хуже, почему там стоит ceil и float? Не лучше ли справа писать то же число что и слева, только со знаком минус?

>>667374

Он наверно еще функции не изучал.
Ответы 26-27 февраля Аноним 2016/03/03 06:30:55  №674038 686
>>667552

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

Для отправки запросов к базе из PHP удобно использовать встроенное расширение PDO.

Чтобы писать сайты, мало знать PHP и SQL. Надо еще изучать HTML/CSS (в ОП посте есть задания), архитектуру веб-приложений, работу с формами, MVC (ее изучают например в задаче про студентов). Без этого ты можешь сделать сайт, но код скорее всего будет очень плохим и уродливым - так что для себя можно сделать, но на собеседовании показывать не стоит.

Алсо если тебе хочется побыстрее что-то написать на PHP и запустить в браузере, поставь Апач с PHP (инструкции в Оп посте) и следуй туториалу http://php.net/manual/ru/tutorial.php

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

>>667666

Под линуксом динамические библиотеки имеют другое расширение

>>667871

> Копирую сюда весь css код
Зачем копировать? Там нужны только дополняющие правила для печати.

> При этом ничего не выравнивается по центру, когда выводишь документ на печать,
А почему оно должно?
Ответы 26-27 февраля Аноним 2016/03/03 06:31:35  №674039 687
>>667912

Тогда тебе лучше называть переменные правильно, а не key и value.

>>668117

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

>>668273

> имхо подразумевая то что на винде вообще не удобно работать.
Спорно. Если тебе не нужна консоль то Апач и PHP вполне нормально работают и тратят меньше ресурсов чем виртуалка + не надо пока разбираться в линуксе.

>>668312

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

Алгоритм должен быть примерно такой:

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

«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.

>>668375

Кыш
Ответы 27 февраля Аноним 2016/03/03 06:48:15  №674040 688
>>668498

Число 69 лучше сделать констаной с понятными именем.

>>668832

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

>>668844

ucfirst работает только с некоторыми символами вроде латиннциы. Не рекомендую ее использовать никогда. С utf-8 она несовместима и может ломать символы кириллицы. Советую почитать https://gist.github.com/codedokode/ff99e357e9860ea169b8

>>668884

Лучше использовать стандартные средства фреймворка - тогда например какие-то плагины для работы с заголовками смогут их видеть.
Ответ 27-28 февраля Аноним 2016/03/03 06:48:47  №674041 689
>>669120
>>669950

> function inclineWord($number, $word1, $word2, $word5) {
> $test = $number%100;
Лучше называть вроде last2digits (2 последние цифры)

> $test = $test%10;
лучше сделать новую переменную чтобы не было путаницы

> if($test==0 && $number != 0){
Зачем второе условие ? Для нуля тоже используется форма word5

> if(isset($spelling[$number])){
Зачем это условие? Числа вроде 5 или 11 можно обрабатывать в общем порядке.

> if(isset($femaleSpelling[$tens]) && $isFemale == 1){
Чтобы не писать это несколбько раз, можно просто менять массив с написанием, если пол женский то заменять в нем элементы на элементы из femaleSpelling

> $numberStr = $numberStr." ".$femaleSpelling[$units];
Лучше сделать массив и добавлять слова в него, будет более аккуратный код и не надо помнить с какой строны ставить пробел. Или хотя бы использовать .= здесь

> $saveNumber = 0;
> $saveNumber = $number;
Первая строка не имеет смысла

> $indexName = 0;
> $indexName = 0;
То же самое

> $word = inclineWord($numericDigit, $largeNumbersNames[$indexName][0], $largeNumbersNames[$indexName][1], $largeNumbersNames[$indexName][2]);
не надо копипастить $largeNumbersNames[$indexName], вынеси в переменную. Также, возможно аругменты стоит записать вертикально.

> if($indexName == 0){
> $word = "(".$saveNumber.") ".$word;
Это можно просто поставить после / перед циклом и иф будет не нужен

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

Коду надо улучшить читабельность - пока читать тяжеловато.
Ответ 27-28 февраля Аноним 2016/03/03 06:49:18  №674042 690
>>669149

Не советуй вредное, нужны математические методы.

>>669219

> http://ideone.com/gvUha4 -5.3(оценки)
верно

> http://ideone.com/P526Ry -5.4(рост)
Верно

> http://ideone.com/6F7GME -5.5(ответ на вопрос)
Да, правильно.

> http://ideone.com/gU18qG -5.6(генератор имени)
все правильно

>>669382

Попробуй понять разницу:

echo $a+$b; - вычисляет выражение, получается число, оно выводится
echo $a . $b; - числа склеиваются как строки и выводятся
echo "$a+$b"; - в строку подставляются значения a и b но не складываются
echo '$a+$b'; - ничего не вычисляется, строка выводится как есть
Ответы 28 февраля Аноним 2016/03/03 06:50:10  №674043 691
>>669532

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

> при попытки извлечь из БД что-то кроме поля username я получаю..нихуя. просто пустое поле
Ну вот и написал бы: как выглядит код отправки запроса, чему равны переменные до его выполнения и после (выведи их через var_dump)


>>669731

> Никак не пойму как писать грамотно тесты.
Читал мой урок? https://gist.github.com/codedokode/a455bde7d0748c0a351a

> Если речь идет о модульном тестировании, то мне нужно тестировать все методы всех классов, а не только метод суммы в котором содержится основная логика приложения?
Нет. Ты не обязан тестировать все. В данном случае стоит тестировать юнит-тестами именно модель. Контроллер и вью (вместе с моделью) можно тестировать end-to-end (gui) тестами, то есть посылать HTTP запрос и смотреть ответ на него.

ну то есть определись, что именно ты хочешь протестировать?

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

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

>>669735

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

Интеграционные и юнит-тесты нужны оба, почитай например https://habrahabr.ru/post/168451/ (я советую пролистать весь блог яндекса на хабре - там много интересного по тестированию)

>>669744

Не надо использовать хранимые процедуры. Они неудобны , надо их поддерживать, неудобно отладивать, логгировать и тд.

Ну и твой запрос можно сделать и с клиента, сделав 20 юнионов.
Аноним 2016/03/03 07:36:51  №674055 692
ОП, а список студентов >>664787 посмотришь? Я уже давно все исправил.
Аноним 2016/03/03 07:51:22  №674056 693
14569806828740.jpg (93, 1212x754)
754x1212
Не могу запустить тесты в netbeans. Сейчас всё сделал как на этом видео https://www.youtube.com/watch?v=R0uh6fr8v-I.
Получаю такой ответ:
Возможно, произошла ошибка. Обратитесь к окну результатов.
В чем проблема?
Аноним 2016/03/03 08:21:09  №674065 694
>>674056

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

Во-вторых, проверь настройки - указан ли путь к PHP правильно.

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

php c:/tmp/phpunit.phar run

Аноним 2016/03/03 08:22:29  №674067 695
>>674056

Алсо поле object надо переименовать в calculator.
Аноним 2016/03/03 08:23:31  №674069 696
>>674056

Также, у phpunit есть режим, кога он пишет подробно что именно делается. Там добавляется к команде опция вроде -v или --debug, не помню. Ты можешь ее использовать для того чтобы понять что не работает.
Аноним 2016/03/03 08:37:57  №674074 697
>>674065
>>674067
>>674069
>В-третьих, для начала стоит научиться запускать тесты ручками
Это хороший совет. Спасибо.
>Во-вторых, проверь настройки - указан ли путь к PHP правильно
А вот здесь крылась главная проблема.
В общем теперь всё работает за что большое тебе спасибо. Я уже дня два не мог разобраться в чём беда.
Аноним 2016/03/03 08:52:50  №674085 698
>>674074

Я еще добавлю, что если урок учит именно запускать тесты через IDE то это неправильно. phpunit это консольная программа, и соответственно он рассчитан в первую очередь на запуск в ней, а не в нетбинсе. Так что лучше начинать с ручного запуска тестов, научиться писать phpunit.xml, а когда освоишься, узнать какой кнопкой это делается в IDE.
Аноним 2016/03/03 08:55:28  №674088 699
halp halp 2016/03/03 10:26:24  №674112 700
Есть CSV след. содержания:
[code]1;.1;.10;;;К;;;Шайба увеличенная 8 ГОСТ 6958-78
1;.1;.11;;;П;;;"Заклепка резьбовая М8 MFX 23-VG
?№23М08VG1"
1;.2;;;;СБ;;КИУТ1501.01.01.000-01;Стойка
1;.2;.2;.5;;М;;;"Труба 40х40х2 ГОСТ 8639-82
В 10 ГОСТ 13663-86 L=0770 мм"
1;.2;.4;;;К;;;Винт М6х16 ГОСТ 11738-84[/code]
Суть в чём. Когда есть перенос строки в экселе идёт добавление \n в описании как в строке 2(заклепка) и 5(труба). И когда считываю файл через fgetcsv он разбивает описание и переносит на отдельную строку. Обычно это закавычивается. Надо как-то по маске брать то что в кавычках с новой строки например перед /n" тут текст с переносом и кавычками "/n и убирать /n в описание, которое в кавычках. Как сделать? пытался через регулярку но там ругается на маску по каждому поводу.
Аноним 2016/03/03 10:28:21  №674114 701
>>674112
У меня кровь из глаз пошла от этого говна.
Аноним 2016/03/03 10:30:19  №674116 702
Аноним 2016/03/03 10:37:36  №674119 703
аноны, тут можете помочь с валидацией в yii на строне клиента?
я пытаюсь создать форму с помощью CActiveForm
http://pastebin.com/3TjqMetB
но при вводе в текстовые поля, не происходит никакой валидации. Только срабатывает AfterValidation при загрузке страницы. ЧЯДНТ?
Аноним 2016/03/03 11:44:47  №674156 704
Помогите разобраться, что делает следующий код:

class Template { //класс шаблонизатора
function __construct($file = null) { //функция конструктора
$this->file = $file; //переменная $file в новом классе = null
$this->vars['null'] = ''; //обнуление значения элемента null в массиве $file в новом классе ???
}
function set($name, $value) { //вызываем функцию с аргументами типа $tpl->set('items',$cats);
$this->vars[$name] = is_object($value) ? $value->fetch() : $value; //присваиваем значение $cats элементу items в массиве $vars
}
function fetch($file = null) { // в file передается файл /main.tpl, это html шаблон
if(!$file) $file = $this->file; //если $file false, то присваиваем $file значение $this->file, т.е. null

extract($this->vars); //вот тут, и далее, совершенно не понятно, что происходит
ob_start();
include($file);
$contents = ob_get_contents();
ob_end_clean();
return $contents; //возвращает что-то...
}
}
вызывается вот так $content = $tpl->fetch("./main.tpl");
Аноним 2016/03/03 12:10:05  №674167 705
>>674156

Мануал по extract и по буферизации читал?

Аноним 2016/03/03 14:37:52  №674241 706
>>674055
Нахуя ты память в цикле выделяешь?
И вообще тут не тужен четырехмерный массив. У тебя что имя и фамилия в целых числах описывается?
Определяешь класс с соответствующими полями, затем суешь его в вектор.
Аноним 2016/03/03 14:42:58  №674254 707
>>674241

В вектор? И что значит память в цикле выделаешь? в PHP нет функций явного выделения памяти.
Аноним 2016/03/03 15:20:01  №674268 708
>>673983
Да с формами я работать умею. Бля, это вообще не для какого-то годного кода. Мне вот просто нужно из одного php файла передать в другой (инициатором запуска этого второго является первый, он же передает) некоторые данные. Через глобалки, гет и куки/сессии делать не хочу, спрашиваю, можно ли еще как-то?
Наоборот, это для хуйни на сто строк, когда надо что-то затестить по-быстрому или набросать красивую лабу.
Аноним 2016/03/03 15:40:03  №674299 709
>>674268
$argv ?
Ты хочешь странного
Аноним 2016/03/03 15:41:17  №674301 710
Нужен скрипт перевода числового количества денег в прописной на яваскрипт. Все что нахожу, переводят только рубли в слова, но не переводят копейки. Например, при вводе значения 460.34 скрипт выводит - четыреста шестьдесят рублей 34 копейки, а мне нужно - четыреста шестьдесят рублей тридцать четыре копейки. Может кто-то видел где-нибудь такой скрипт?
Аноним 2016/03/03 15:46:48  №674308 711
Объясните, пожалуйста, что такое Твиттер Бутстрап, которым предлагает пользоваться ОП для студентов. Это, как понимаю, просто набор шаблонов(файлов ХТМЛ) для более удобного создания собственного проекта? Т.е., чтобы упростить написание кода вручную, правильно?
Аноним 2016/03/03 15:52:43  №674311 712
>>674299
Странного? Ну хз. Возможно. А как заюзать $argv? Я же перехожу от выполнения одного файла к выполнению другого (через header(location...)
Аноним 2016/03/03 15:57:25  №674312 713
>>674308

Набор готовых CSS правил + несколько простых JS плагинов (не нужны в задаче).
Аноним 2016/03/03 15:57:49  №674314 714
>>674308

> росто набор шаблонов(файлов ХТМЛ)
нет
Аноним 2016/03/03 16:03:47  №674318 715
>>674311
Ну тогда только
> гет и куки/сессии
Озвучь, почему ты не хочешь/можешь их использовать?
Аноним 2016/03/03 16:28:29  №674358 716
Как вы боретесь с тем, что всё забывается? Сделал перерыв на неделю вынужденный, возвращаюсь к занятиям - забылсь даже совсем простые вещи
Аноним 2016/03/03 16:42:55  №674369 717
>>674312
то, что нужно. терпеть не могу CSS и пердолиться с ним.
Аноним 2016/03/03 16:45:57  №674372 718
Возможно тупой вопрос, но будет ли выводить пыхокод прямо в браузер из openserver?
Аноним 2016/03/03 16:46:25  №674374 719
~<?php
require('sql_bd.php');
$query1=$mysqli->query("UPDATE testov SET n1 = REPLACE(n1, '.', '')");
function gogogo() {
$query=$mysqli->query("SELECT DISTINCT n2 FROM testov WHERE n2>0");
while ($row = $query->fetch_assoc()) {
echo $row[0];
}
return false;
}
gogogo();
?>~
Fatal error: Call to a member function query() on a non-object
почему так? если пихну файл с коннектом в функцию то всё заработает?
Аноним 2016/03/03 16:46:55  №674376 720
>>674358
Глаза уже болят? Или лень одолевает?
>>674372
Конечно.
Аноним 2016/03/03 16:48:51  №674379 721
>>674318
>Озвучь, почему ты не хочешь/можешь их использовать?
Потому что юзер может изменить гет/куки, если даже они зашифрованы, первый засерает адресную строку. А сессии, я так понимаю, создают дохуя лишнюю нагрузку на сервер, если клиентов много, выполнений скриптов много, в сессии хранится много данных...да и ее можно подменить.
Аноним 2016/03/03 16:50:13  №674382 722
Аноним 2016/03/03 16:50:34  №674383 723
>>674382
работа, ессно, донная
Аноним 2016/03/03 16:53:42  №674389 724
>>674358
Лютейше двачую этот вопрос.
>>674376
Дело не в лени. Сегодня ты пытаешься учить пых, завтра у тебя последний день перед контрольной в вузе, через неделю дедлайн по курсачу на тему лоу-левела, потом ты заебываешься с ява-лабами, а в свободное время балуешься фотошопом, английским и перками в вовке. Ну и бухать не забываешь. Через пару месяцев вернулся - и пиздец, не помнишь, как запрос к базе сформулировать, какие параметры за что отвечают в конфиге, не понимаешь, чего от тебя хочет иксдебаг, если ты честно перегрузил функцию и почему length($arr) выдает ошибку. Каждый раз заново все гуглить...а уж редкая хуета типа трейтов и необходимости заключать в хуевинки регексп, разница в наличии-отсутствии всяких прег-сплитов и прег-тестов... Ебааать
Аноним 2016/03/03 16:54:55  №674390 725
>>674389
А еще нереально трудно помнить больше 1-2 языков, все в башке мешается, особенно фреймворки, библиотеки и та их часть, которая используется нечасто.
Аноним 2016/03/03 16:58:49  №674399 726
>>674369
Ещё вопрос по bootstrap имею. Смотрю туториалы на ютубе по нему: так там готовый КСС полностью прописанный, юзай не хочу, никакого пердолинга. Теперь вопрос: версталы опытные на работе только этим и пользуются? В таком случае для чего превозмогать ОП-овский урок по КСС, так, для общего развития?
Аноним 2016/03/03 18:30:11  №674539 727
>>674358
Новичкам в треде помогаю решить то, что сам уже решил, смотрю на любой вариант решения, переделываю, чтобы заработало.
Думаю, что ОП и по этой причине тоже всем нам помогает, - лишний раз всё освежить в памяти.
Аноним 2016/03/03 18:33:20  №674543 728
>>674399
Принципы понять.
Хотя сам жалею, что на две недели затормозил с этими задачами.
Аноним 2016/03/03 18:35:37  №674546 729
>>674399
Ещё у ОПа там годный макет, который надо сверстать из PSD.
Аноним 2016/03/03 18:50:31  №674579 730
Сижу за пекой 24/7. Всю жизнь сидел за ЭЛТ-монитором, но теперь моя няша сгорела, и пришлось пересесть за ЖК. Сижу уже полгода, начали лопаться сосуды и уставать глаза от этого. Что делать? Бывают ли хорошие ЖК-мониторы, от которых глаза не вытекают?
Аноним 2016/03/03 18:57:08  №674590 731
киньте пример страниц для задачи с студентами для верстки.
Аноним 2016/03/03 19:08:42  №674604 732
>>674590
Ну в смысле скрины для примера.
Аноним 2016/03/03 20:12:10  №674663 733
>>674374
Ты не можешь из функции получить доступ к внешней переменной. Да, должно заработать, но этой плохой путь (у тебя создаётся два соединения).
Пусть знающие аноны меня поправят, но в порядке возрастания кошерности, возможны следующие варианты:
1) глобальные переменные (всё ещё не очень)
2) передача $mysqli в функцию параметром
3) класс для работы с БД

Ну и более современным и универсальным будет использовать PDO.
Аноним 2016/03/03 20:17:26  №674673 734
>>674379
У тебя то наколеночный код, то хайлоад. Опиши конкретнее свой юз-кейс.
Аноним 2016/03/03 20:34:48  №674693 735
14570264886580.jpg (122, 652x588)
588x652
Как экспортировать базу? Прописываю команду пикрелейтед, получаю результат пикрелейтед, файла с базой не нахожу.
Аноним 2016/03/03 20:39:09  №674698 736
Подскажите годные скринкасты по верстке сайтов из макетов с нуля. Желательно с использованием sass и БЭМ. Можно на английском Вот вроде понятны все преимущества но когда сам пытаюсь получается тот же самый css и длинные классы вместо каскадности.
Аноним 2016/03/03 20:41:26  №674701 737
>>674579
Ты разделом не ошибся?

У меня глаза текли от нище-ТН и плохого освещения. Переехал на IPS и включил мягкий свет за монитором все прошло.
Аноним 2016/03/03 20:45:51  №674708 738
Аноним 2016/03/03 21:35:12  №674796 739
14570301130740.png (25, 1903x949)
949x1903
>>674590
>>674604
У ОПа же в условии задачи примерно описано как это должно выглядеть. Вот мое.
Аноним 2016/03/03 21:39:36  №674805 740
>>674308
>elseif ($creditBalance < 0)
Такого не должно получиться при верном решении задачи, так что это лишнее.
>echo "{$month} месяц спустя: долг = {$creditBalance} руб, выплачено всего {$paymentTotal} руб. \n";
Это повторяется в двух основных условиях, поэтому может быть вынесено в основной цикл.
Аноним 2016/03/03 21:40:08  №674806 741
Аноним 2016/03/03 22:07:40  №674852 742
Привет!
Пытаюсь запилить дефолтненькое добавление в друзья , друзей то отображает если я их вношу в БД , а вот заявки в друзья , или кому я отправил заявку , нет. В чем проблема гайз?
http://ideone.com/aQOxyd
Аноним 2016/03/03 22:09:09  №674855 743
>>674852
Точнее , даже если я в БД вношу данные о отправке заявки - мне все равно предлагается "отправить" ее. То есть , он просто пропускает это , и это.

echo 'Add or No';
echi 'Otmena zayavki';
Аноним 2016/03/03 22:11:36  №674858 744
>>674805
Если я выношу его в основной цикл, то у меня после последней оплаты заканчивается цикл и оно не пишет о оплате в 13 месяце. Вынести break чет не получается
Аноним 2016/03/03 22:14:00  №674865 745
Аноним 2016/03/03 22:22:48  №674879 746
>>674858
Попробуй другое условие поставить в цикл.
Подсказка: обрати внимание на $creditBalance в этой ситуации, ведь цикл должен работать, пока $creditBalance не потратился до конца.
Аноним 2016/03/03 22:22:56  №674880 747
14570329761730.jpg (25, 604x340)
340x604
Я недавно задавал похожий вопрос про гит. Теперь про композер и нпм. Допустим я создал папку с проектом и дичайше там устанавливал все подряд пакеты. Пушил на гитхаб, потом под другим логином пулил в другую папку и разворачивал из зависимостей. Ну для теста, понять как это все работает. Достаточно ли просто удолить папки с проектами руками чтобы нигде никакого мусора не осталось? Или лучше через npm uninstall?
Я говорю про локальные пакеты, с глобальными все ясно.
Аноним 2016/03/03 22:46:34  №674922 748
>>674673
Ну, хз. В админ.пхп есть форма удаления поста с форума, там его номер, причина удаления, возможность забанить автора, этц. Адмит вводит данные, нажимает сабмит. Форму обрабатывает delete.php, который в результате своей работы рапортует об успешном или неуспешном выполнении операции и редиректит обратно на админ.пхп
Аноним 2016/03/03 22:50:44  №674928 749
>>674604
Что делает добавить и заполнитель ?
Аноним 2016/03/03 22:54:31  №674937 750
>>674796
Спасибо, а что делает "добавить" и "заполнитель" ?
Аноним 2016/03/03 23:12:37  №674967 751
14570359578720.png (22, 1903x722)
722x1903
>>674937
Добавить - добавление \ редактирование информации о себе.
Заполнитель - отключаемая вещь которая заполняет базу данных рандомными данными. Сделал для тестирования, потом решил оставить.
Аноним 2016/03/03 23:16:23  №674972 752
>>674967
Ага, а если пользователь авторизирован, то поля уже заполнены или все поновой ?
Аноним 2016/03/03 23:16:59  №674974 753
>>674967
И выход это завершение сессии ?
Аноним 2016/03/03 23:26:36  №674981 754
Аноним 2016/03/03 23:41:45  №675014 755
>>674981
Не хочется готовое решение смотреть. Надо самому все. Можно лишь советы просить.
Аноним 2016/03/03 23:43:36  №675021 756
Аноним 2016/03/03 23:46:49  №675030 757
14570380095740.png (21, 1358x652)
652x1358
Аноним 2016/03/03 23:48:43  №675034 758
>>674981
Бугурт у меня. Понятия ведь я не имею как эту ебанину посмотреть.
Аноним 2016/03/03 23:51:18  №675037 759
Аноним 2016/03/03 23:54:57  №675049 760
>>674967
А как с работой. Пробовал уже на собеседование пойти ?
Аноним 2016/03/03 23:58:51  №675058 761
>>675049
Нет, не пробовал. Я считаю что мне не хватает опыта и знаний, еще мой код плохой и я очень часто делаю глупые архитектурные ошибки. Стараюсь работать над этим, параллельно изучая фреймворки и делая файлообменник.
Аноним 2016/03/04 00:00:48  №675061 762
>>675058
Образование математическое и сколько уже вкатываешься в веб ?
Аноним 2016/03/04 00:06:54  №675071 763
>>675061
Образование у меня 11 классов школы, учусь в ВУЗе на специальности Программное обеспечение систем. Начал заниматься всем этим еще в 15 - 16 лет, тогда я понятия не имел что такое эти ООП и паттерны, просто пробовал писать говнокод по разным туториалам в интернете, параллельно с этим изучая администрирование серверов. В том возрасте это было обычным увлечением, я часто забрасывал на пару месяцев, потом возвращался. Примерно год назад решил стать мамкиным вкатывальщиком в веб и заняться этим серьезно, и вот теперь я здесь.
Аноним 2016/03/04 00:11:25  №675077 764
>>675071
Я тоже на Программной инженерии учусь. Какой курс ? Я думаю, тебе все же стоит попробовать сходить на собеседования. Хуже точно не будет. Окажут - получишь опыт. А возьмут - так оно и к лучшему.
Аноним 2016/03/04 00:12:31  №675081 765
>>675037
Без обид, что назвал ебаниной работу, эт у меня бугурт на то, какой я тупой и ничего не пойму, как там что посмотреть. а посмотреть сука хочется
Аноним 2016/03/04 00:18:01  №675089 766
>>675077
Второй курс.
>Хуже точно не будет
Я читал истории в соседнем треде про черные списки в некоторых конторах. Это когда тебя один раз не взяли из-за нехватки знаний и после этого добавляют в черный список. Потом все последующие походы к ним на собеседования заканчиваются отказом уже на стадии отправки резюме. Да и с одним маленьким проектом сделанным за три дня как-то неудобно идти будет.
Аноним 2016/03/04 00:20:55  №675093 767
>>675089
Какой фреймворк пытаешься осилить ?
Аноним 2016/03/04 00:23:46  №675097 768
>>675089
Не удержался и посмотрел.
$student->gender = Student::GENDER_MALE; // Sexism?
Проиграл с этого.
Аноним 2016/03/04 00:23:50  №675098 769
>>675093
Yii2, так же почти доделал файлообменник на слиме.
Аноним 2016/03/04 00:57:36  №675149 770
>>675089
Расскажи подробнее о ходе интенсивного обучения за год.
Аноним 2016/03/04 01:48:15  №675175 771
Аноны-похаперы, хочу задать вам вопрос, ответ на который я обязан знать.
Поможет ли хеллоувордлщику этот http://itcenter.ifmo.ru/razrabotka_web_-_saytov_3 курс? Или 60к на ветер, потому что не буду успевать? Курс 3 месяца длится.
Аноним 2016/03/04 02:28:35  №675220 772
Аноним 2016/03/04 02:46:33  №675248 773
Аноним 2016/03/04 02:49:40  №675255 774
>>675248
>$i >= 2
Условие для работы цикла неверное.
Аноним 2016/03/04 03:02:09  №675276 775
Аноним 2016/03/04 03:45:23  №675327 776
>>675030
Я конечно не дизайнер, но думаю лучше будет хотя бы пол сделать списком с выбором (select).
Аноним 2016/03/04 04:04:02  №675339 777
>>675327
И хорошо что ты не дизайнер, никогда им не становись пожалуйста.
Аноним 2016/03/04 06:07:53  №675398 778
>>674693

Чтобы сдампить базу надо использовать mysqldump а не mysql

mysqldump -uxxx -pxxx database > file.sql

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

Дамп это текстовый файл с SQL командами. Загружается дамп с помощью mysql:

mysql -uxxx -pxxx database < file.sql
Аноним 2016/03/04 06:17:12  №675399 779
>>675327

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

- добавляется лишний клик для выбора
- возможные варианты не видны

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

>>675339

К чему писать такие посты?

>>675030

Форма поиска кривая, высота кнопки и поля ввода не совпадают

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

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

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




Аноним 2016/03/04 06:25:44  №675402 780
>>675399
>К чему писать такие посты?
Для человека не очевидно что 1 раз тыкнуть мышкой проще, чем кликнуть, прочитать список, кликнуть, скролить дальше, но при этом он пытается навязать свою точку зрения другим. Да, уменя бомбит от того, что каждый день мне приходится работать с такими интерфейсами. Выпадающими списками на 1 пункт, галочками на 30 пунктов.
Аноним 2016/03/04 06:30:46  №675403 781
>>675402

Он ничего не навязывал. Незачем переходить на личности. Ты бы мог дать ссылку на статью по теме или что-то такое.
Аноним 2016/03/04 06:41:40  №675409 782
>>675403
Ты прав, наверное я слишком токсичен.
Ссылку не дам, но гугл в помощь.
Дизайн Для Реального Мира
Аноним 2016/03/04 08:33:04  №675430 783
>>675399
Спасибо, буду править
Аноним 2016/03/04 09:23:35  №675452 784
Гайс, вопрос актуален >>674880
Аноним 2016/03/04 10:04:45  №675483 785
>>674880
>>675452

Композер создет файл composer.lock, и ставит пакеты в vendor. Также он устраивает кеш где-то в твоем профиле в ОС, но это мешать не должно.

npm аналогично ставит все в node_modules

Аноним 2016/03/04 10:21:31  №675497 786
>>674922
Простых способов нет.
Если нужна авторизация, то для наколеночных поделок можешь посмотреть в сторону basic/digest аутентификации.
Но вообще от кук/сессий ты никуда не денешься, т.к. в вебе это по сути единственный способ сохранять состояние между запросами.

Поправьте, если я ошибаюсь.
Аноним 2016/03/04 11:00:44  №675519 787
>>675483
Ну то есть можно просто удалить корневую папку FacebookKiller в которой лежат все эти node_modules, package.json, composer.lock, bowerrc, bower.json, .gitignore, .git? И не получить проблем в будущем, если например я заново создам папку с таким же именем.
Аноним 2016/03/04 11:56:44  №675561 788
>>675519

Да. Более того, в случае с композером ты можешь например убрать зависимости из composer.json и сделать команду которая удалит более не нужные зависимсти (наверно, я не проверял).
Аноним 2016/03/04 11:59:00  №675563 789
>>675402
>Для человека не очевидно что 1 раз тыкнуть мышкой проще, чем кликнуть, прочитать список, кликнуть, скролить дальше
>выбор пола
Oh you!..
Аноним 2016/03/04 12:42:33  №675586 790
>>673319 (OP)
Господа, что за хрень?
Устанавливал опенкарт на винде, все норм работало, на линуксе 404 ошибку выдает (пхп ламп апаче все есть и работате). Надо какие-то депенденсис в апаче писать?
Аноним 2016/03/04 13:14:37  №675605 791
>>666755
5.9 неправильно же, проверяет только 1ю букву, для примера вставил в твой код набор буков с одинаковыми в начале и конце http://ideone.com/n9xgYF, в результате говорит что полиндром, хотя таким не является
Аноним 2016/03/04 13:33:43  №675608 792
Аноним 2016/03/04 13:45:47  №675615 793
14570883477320.png (203, 1149x660)
660x1149
>>675398
Я наверное глупый вопрос задам, но это делается не через MySQL 5.7 Command Line Client, а через mysqldump.exe? У меня проблема с экзешками из папки из пикрелейтед - они все сразу вылетают, вот успел заскринить окно только. Поэтому работал со студентами через комманд клиент только.
Аноним 2016/03/04 13:52:01  №675618 794
>>675615

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

Надо запускать из командной строки.

> это делается не через MySQL 5.7 Command Line Client
Нет, он только для выполнения запросов к базе.
Аноним 2016/03/04 14:02:20  №675631 795
Прислали в кач-ве тествого им на сайт функционал добавить, какой-то кусок цмс который не открывается. ппц, как будто чел просто хочет, чтобы я работу за него сделал.
Аноним 2016/03/04 14:04:24  №675633 796
14570894642920.jpg (521, 1788x2268)
2268x1788
>>675618
Спасибо за быстрый ответ, Оп. Раз ты здесь еще хотел спросить. Второй день не могу найти баг. Появляется когда настраиваешь количество записей на странице. Когда их меньше 20 - все ок. Когда 20 - ошибка 500. Когда их больше - не хватает некоторых кусков html или вообще всего, когда их примерно 30 - львиная часть записей отсутствует. С чем это может быть связано? Или ты без полного кода какие-то предположения сделать не сможешь.
Аноним 2016/03/04 14:13:56  №675643 797
>>675631
Такое бывает, кстати.
Потому что соискателей много, а делать работу надо. Сделаешь хорошо - могут взять. Сделаешь не очень - откажут, поправят код, работа сделана.
Такое делают с SEO-специалистами постоянно. Требуют полный аудит сайта компании или нескольких сайтов, а потом отказывают. А аудиты корректируют и отправляют владельцам сайтов.
Аноним 2016/03/04 14:17:25  №675652 798
>>675633

Ошибка 500 это обычно ошибка веб-сервера Апача (а не PHP кода). Причины в таких случаях записаны в логе веб-сервер - найди и прочитай.

Обычно у Апача это из-за проблем в URL страницы и в htaccess.

Правда у тебя почему-то эта страница подписана phpstorm. Раз ты используешь не стандартный Апач, а что-то что идет в комплекте с phpstorm то я в нем не разбираюсь и тебе надо читать их документацию - в каикх случахя он выдает ошибки, где логи, что у них за веб-сервер и тд.
Аноним 2016/03/04 14:18:48  №675654 799
>>675633

Алсо почему ты настраиваешь число записей на странице тут, а не там где задается $recordsPerPage?
Ну и вообще, покажи потом код, там наверно будет много чего можно исправить.
Аноним 2016/03/04 14:20:14  №675655 800
>>675643

Ну у соискателя всегда есть право отказаться делать задание. Да и сомнительный подход - я бы побоялся то что кандидаты присылают, на реальный сайт ставить. Замучаешься потом баги исправлять.
Аноним 2016/03/04 14:20:22  №675656 801
>>675654
Ну так я для примера чтобы не скринить еще тот кусок где функция вызывается. Так то у меня все как на самой верхней пикче. Покажу, конечно, сейчас доделывать css буду и комментарии писать.
Аноним 2016/03/04 14:20:48  №675658 802
Объясните мне внятно про сетки. Курсю хтмлакадеми на пару с кодакадеми и на сетках какой-то ступор.
То делай псевдоэлементы с распорками, то просто задавай блокам размеры и маргины, то дисплей: тейбл.
Почему не остановиться на одном способе построения? Я запутался в этой херне, короче.

Или где внятно можно почитать.
Аноним 2016/03/04 14:41:59  №675686 803
>>675643
Так эти куски я опять даже на локалке развернуть не могу, админки нет, структура папок не та, что в опенкарте, не говоря о содержимом, там еще и куски ноды есть, пиздец, я только осваивать эту новую чудную самописную легаси цмс буду месяц.
Аноним 2016/03/04 15:14:14  №675728 804
>>675658

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

В CSS есть такие способы позиционирования:

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

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

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

> Почему не остановиться на одном способе построения?
Потому что ситуации разные. Иногда надо выстроить блоки вертикально, иногда горизонтально, иногда вырвать блок влево или вправо из потока.

Не знаю, что еще можно посоветовать почитать, посмотрри задания на cSS в ОП посте, там есть например ссылка на учебник на сайте softwaremaniacs

И конечно тебе надо больше внимания уделить изучению CSS. Описанные выше способы позиционирования надо знать наизусть, также знать все их особенности.
Аноним 2016/03/04 15:15:10  №675731 805
>>675686

> я только осваивать эту новую чудную самописную легаси цмс буду месяц.
Может это значит что ты не подходишь на эту вакансию? Если ты развернуть проект не можешь, как ты будешь его поддерживать и правки вносить?
Аноним 2016/03/04 15:15:46  №675732 806
>>675686

Ну и вообще, ты бы мог спросить инструкции по установке.
Аноним 2016/03/04 15:16:37  №675733 807
Я, кстати, давно уже проходил курс верстки от ОПа, сейчас уже подзабыл и когда верстаю что-нибудь, постоянно использую везде абсолютное позиционирование и мне стыдно.
Аноним 2016/03/04 15:17:57  №675736 808
Аноним 2016/03/04 15:49:10  №675777 809
>>675733

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

>>675736

Ежедневная практика.
Аноним 2016/03/04 15:55:55  №675786 810
>>675175

Поможет, покупай.
Аноним 2016/03/04 16:03:46  №675801 811
class PostForm {
public login;
public password;

public function __construct($post) {
$this->setLogin(isset($post['login']) ? $post['login'] : '');
$this->setPassword(isset($post['password']) ? $post['password'] : '');
}

...
}

$form = new PostForm($_POST);

С этим всё хорошо?
Аноним 2016/03/04 16:37:17  №675846 812
>>675731
зачем присылать проект, который невозможно равзернуть? почему сразу на хостинге админку не дать тогда уж?
Аноним 2016/03/04 16:42:47  №675851 813
>>675846
>зачем присылать проект который нужно фиксить, пришлите полностью рабочий и заплатите мне за то что я нихуя не сделал
Аноним 2016/03/04 17:05:16  №675870 814
>>675851
+--classes - здесь у меня классы
|
+--functions - здесь скрипты обработчиков для форм
|
+index.php - здесь у меня autoload
Я хочу в скриптах обработчиков в functions использовать классы из classes для которых autoload в index.php. Как мне сделать, чтобы классы были видны во всех папках проекта? Просто если у меня будет много обработчиков, то будет проблематично каждому подключать классы индивидуально.
Аноним 2016/03/04 17:05:40  №675871 815
Аноним 2016/03/04 17:51:10  №675906 816
>>675871
Вынеси автолоад в отдельный файл (bootstrap.php например).
Подключай это файл в начале обработчика.
Аноним 2016/03/04 18:01:37  №675921 817
Короче мне элементы ангуляр кода как в пхп выполнить? это обычная иде, там нет ангуляра, только пхп. убунта, вот устанавливаю ангуляр, а как проверить, что он работает? там запрос должен на сервер роутер идти.
Аноним 2016/03/04 18:03:35  №675923 818
почему умение разворачивать легаси код на локалке не прописывается в условиях и не считается отдельным, заслуживающим уважения скилом?
Аноним 2016/03/04 18:16:18  №675940 819
Не могу найти ошибку, вроде все проверил, но все равно не то заранее спасибо. http://ideone.com/vkznhK ссылка на код
Аноним 2016/03/04 18:21:00  №675951 820
>>675940
Сначала расскажи, как ты ее искал.

Просто там большими буквами на чистом английском языке написано, в чем причина и даже на какой строке ошибка, не понимаю, как это можно не увидеть.
Аноним 2016/03/04 18:21:12  №675953 821
Аноним 2016/03/04 18:25:51  №675958 822
>>675953
Спасибо. Прочитав раза три понял в чем ошибка.
Аноним 2016/03/04 18:28:58  №675965 823
Аноним 2016/03/04 18:41:42  №675985 824
Аноним 2016/03/04 18:41:51  №675986 825
14571061118000.png (34, 892x626)
626x892
Что нужно сделать в пикрилейтед задаче? Допилить шифровочные символы для всех букв алфавита?
Аноним 2016/03/04 18:46:40  №675997 826
>>675986
Цель этой задачи - закрепить твои знания. Серьёзность подхода к её решению - твой личный выбор.
Аноним 2016/03/04 18:48:14  №675998 827
>>675997
Я уточнил задачу. Она состоит в том, чтобы допилить шифровку всего алфавита?
Аноним 2016/03/04 18:50:39  №676002 828
>>675998
Нет, она состоит в том, чтобы ты немного поработал с массивом.
Аноним 2016/03/04 18:51:58  №676004 829
>>676002
>немного поработал с массивом.
Имеется в виду забить в массив остальной алфавит и его шифр или что?
Аноним 2016/03/04 18:53:57  №676006 830
14571068376820.jpg (57, 1074x613)
613x1074
Аноним 2016/03/04 18:55:53  №676008 831
>>676006
Что такое "нормальный уровень"?
Ссылку на определение этого термина в студию.
Аноним 2016/03/04 18:56:16  №676010 832
>>676004
Ты меня тралиш?
Задание ты выполнил (если тебя интересует решение), но у тебя возникла мысль доработать свой код. И это хорошо, поэтому если у тебя есть желание, ты можешь пушить этот массив хоть спецсимволами. Цель этой задачи, как и всех остальных, закрепить твои знания.
Аноним 2016/03/04 18:56:33  №676012 833
>>676008
Два чаю. Вот это и создало затруднение, как читал условие.
Аноним 2016/03/04 19:02:27  №676026 834
Аноним 2016/03/04 19:03:11  №676028 835
>>675870

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

>>675921

Ангулар это JS фреймворк вообще-то. Ты не можешь выполнить яваскрипт код в PHP (с оговорками).

>>675923

Потому что оно входит в "умение читать и понимать чужой код" и "умение настроить рабочее окружение"

>>675965
Скобки надо ставить

>>675986

Да и расшифровку

>>676008

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

Аноним 2016/03/04 19:03:29  №676030 836
>>676012
В этой задаче конечно очевидно, что ты догадался правильно. Но при реальной работе с заказчиками обязательно нужно упрямо переспрашивать, что они имели ввиду, потому что на кону деньги и репутация. Чтобы потом не оказалось, что он "не то имел ввиду".

>>676010
>Задание ты выполнил (если тебя интересует решение)
Сам понял что сказал?

>>676026
Нет, ты.
https://github.com/foobar1643/student-list Аноним 2016/03/04 19:04:02  №676031 837
>>665607
>>674055

> Установите необходимые зависимости используя composer (composer install).
> Сгенерируйте файлы автозагрузки используя composer (composer dump-autoload).
install генерирует файл автозагрузки

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

Фраза "введите часть имени, фамилии..." не помещается в поле поиска. Плохо что поле поиска исчезает при поиске - нельзя подправить содержимое.

Поиск регистрозависимый - "ива" не находит имя "Иван"

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

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

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

"Форма успешно заполнена" - странный текст, лучше "Вы успешно зарегистрированы"/"Информация обновлена".

Алсо, что за выбор между приезжим и иногородним? Это не одно и то же?

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

> type = pgsql
А твой проект поддерживает другие базы данных? Если нет то этот параметр конфига лишний.

> enableFiller = false
Скрипт заполнения БД лучше сделать скриптом для командной строки. Тогда не нужна защита от запуска, также мы получаем независимость от ограничений по времени для веб-скриптов, полчаем возможность прервать скрипт, можем передавать параметры и тд. Такие вещи надо делать через командную строку. И вынеси скрипт из веб-папки тогда. Ну и контроллер тогда ему не нужен - нужный код можно написать прямо в скрипте, если он простой.

мануал в помощь http://php.net/manual/ru/features.commandline.php

https://github.com/foobar1643/student-list/blob/master/public/logout.php
Для логаута должен быть метод где-то в менеджере авторизации. И его стоит вызывать.

> names.txt
На будущее: есть мощная библиотека php faker для генерации чего угодно. В том числе русские имена там есть по моему.

> function runApp($app) {
Тайп хинт бы сюда.

> } catch(PDOException $e) {
> } catch(FatalException $e) {
Почему тут только эти 2 исключения ловятся? Как ты составил список этих исключений, по каким принципам? Что делать с исключениями других классов?

> $c["config"]->getValue('db', 'type') . ":dbname=".
> $c["config"]->getValue('db', 'name') . ";host=".
Не очень хорошо читается. Можно $c["config"] заменить на переменную, и использовать sprintf для подстаноки параметров в строку.

> https://github.com/foobar1643/student-list/blob/master/app/Controller/ControllerIndex.php#L27
> if($_GET) {
Этот иф тут лишний по моему и не несет никакой пользы

> $currentPage = $_GET['page'];
Стоит добавить intval - на всякий случай (и min/max чтобы нельзя было указать число меньше 1)

> if(trim($_GET['search']) != "") {
> $linkBuilder->searchPattern = $_GET['search'];
А почему второй раз trim не делаетяс? Почти всегда для данных из форм надо делать trim.

> get_total_students(
> getValue
Что-то нет единообразия в стиле

> https://github.com/foobar1643/student-list/blob/master/templates/index.html#L10
> if(!isset($linkBuilder->searchPattern)):
Разве в обхекте может отсутсвовать поле? Или это такая закамуфлированная проверка на null?

https://github.com/foobar1643/student-list/blob/master/templates/index.html#L33
По идее ссылки надо экранировать через htmlspecialchars, в частности символ & в них

> if($_POST) {
Проверять лучше проверкой REQUEST_METHOD в _SERVER

Вот тут у тебя слишком большая простыня: https://github.com/foobar1643/student-list/blob/master/app/Controller/ControllerForm.php

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

> if(!$tokenHelper->checkCsrfToken($_POST['csrf_field'], $_COOKIE['token']))
Эти элементы могут отсутствовать, будет ошибка обращения к несуществующему индексу

https://github.com/foobar1643/student-list/blob/master/app/Controller/ControllerIndex.php#L41
> $error = true;
Эта переменная создана в блоке else, значит использовать ее можно только в нем - снаружи она может оказаться не определена.

> https://github.com/foobar1643/student-list/blob/master/app/Helper/FormHelper.php#L42
> public function getAllowedFields() {
> return ['id',
id разрешено редактировать?

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

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

> $errors = $formHelper->validateStudent($student);
> if($dataGateway->checkEmail($student->email, $student->id) != 0) {
Непонятно почему проверка емайла не входит в функцию валидации

> !isset($error)) {
Что это? переменная может существовать, а может и не существовать?

Также, я не понимаю логику работы с куками auth и token. Работать с ними лучше не напрямую, усложняя код, а вынеся в отдельные методы с понятными именами. Например для csrf можно сделать один класс, для авторизационной куки - другой. Какие в них должны быть методы, подумай сам. Также, подумай над таким вопросом: допустим у тебя будет еще одна таблица, модель и форма ее редактирования. Сколько кода тебе придется скопипастить во второй контроллер? Весь код работы с куками придется многократно дублирвоать - это признак что что-то неудачно спроектировано.

https://github.com/foobar1643/student-list/blob/master/app/Helper/PaginationHelper.php#L23
> for($i = 1; $i < $page; $i++) {
> $offset += $this->recordsPerPage;
Умножение не годится?

https://github.com/foobar1643/student-list/blob/master/app/Helper/LinkHelper.php
Название плохое. Можно подумать это хелпер для любых ссылок, на самом деле только для ссылок на страницу с таблицей.

> в формате name@site.com
На будущее: для примеров есть специальный домен example.com (и его русская версия испытание.рф по моему)

> [А-ЯЁA-Z]{1}
А зачем {1}?

> Год рождения должен быть не меньше 1900 и не больше 2000.
> не больше 2000.
Ой ли? Менять ведь скоро придется.

> [1][9]
Зачем квадратные скобки? Может тебе задачки на регулярки вспомнить стоит?

https://github.com/foobar1643/student-list/blob/master/app/Model/Student.php
Константы принято ставить в самом начале. Порядок такой: Константы, публичные поля, остальные поля, конструктор, магические методы, публичные методы, остальные.

https://github.com/foobar1643/student-list/blob/master/app/Exception/ExceptionHandler.php
Это не исключение, наверно лучше в другую папку поместить.

https://github.com/foobar1643/student-list/blob/master/app/Exception/FatalException.php
Хотелось бы комментарий чем исключение этого типа отличается от других

> if($names && $surnames) {
> while(($line = fgets($names)) !== false) array_push($names_array["names"], trim($line));
Попробуй сделать это же через file(), array_map(), array_filter() и trim()

Также, вместо функции readNames читающей 2 файла лучше было сделать читающую файл с указанными именем.

.... продолжение ниже ...
https://github.com/foobar1643/student-list Аноним 2016/03/04 19:04:45  №676032 838


.....

> $data["names"][mt_rand(0, count($data["names"])-1)];
Стоило сделать метод выбирающий 1 случайное значение массива

https://github.com/foobar1643/student-list/blob/master/templates/form.html#L21
Не надо в шаблоне лезть в куки, дожна быть переменная $isEdit

> value="<?php if($student->name): ?><?= htmlspecialchars($student->name); ?><?php endif; ?>"
Не нужен if

> if($student->gender == 'male'
Лучше бы константой

> Exception message: <?= $e->getMessage() ?></center>
Лучше через __toString() выводить - деталей больше

И что за тег center? Он устарел много лет назад. Советую пройти уроки по HTML/CSS, ну или если ты их прошел, найти актуальный список тегов. У меня только на английском есть:

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

Ну и давай уже доделывать эту задачу и переходить к фреймворкам, изучать twig и что там еще есть.
Аноним 2016/03/04 19:05:49  №676036 839
Подскажите, ошибка в коде? Или я пошел по неправильному пути? Если да, подтолкните в нужное русло http://ideone.com/3yhicB
Аноним 2016/03/04 19:06:01