Сохранен 946
https://2ch.hk/pr/res/619873.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Клуб изучающих PHP 67

 Аноним 06/01/16 Срд 08:09:59 #1 №619873 
14520569993670.png
14520569993691.png
14520569993722.png
14520569993793.png
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что почитать

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

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

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

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

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
Аноним 06/01/16 Срд 08:12:26 #3 №619876 
Аноны, перекатывайтесь сюда. Тем, кому я не ответил в предыдущем треде >>612122 (OP), я отвечу сегодня-завтра.
Аноним 06/01/16 Срд 08:37:59 #4 №619882 
>>613285
Оп исправил почти все твои замечания
http://integer64.github.io/site-layout/
Задача 10:
>>Почему width 100%?
Гугль дал такое решение для адаптивности картинок
Задача 11:
>>перемещаться с клавиатуры, клавишами Tab, Shift + Tab, стрелками, пробелом.
Реализовал, добавил для checkbox на :focus бордер тень,что бы было видно.
Задача 12:
Переделал, совсем без id у меня не получилось, надо было как то input с label связать. Может быть есть другое решение.
Связал вкладки и контент вкладок через data-атрибуты. Хотелось бы в CSS полноценные регулярные выражения, тогда решение было бы более эстетичное.
Возник вопрос по поводу длинны названия вкладки: три раза прочитал, так и не понял что требуется, разжуй пожалуйста, для самых глупеньких вроде меня.
Аноним 06/01/16 Срд 09:06:38 #5 №619888 
Как посчитать хеш файла (ну, чтобы установить подлинность или сравнить два файла)? Тупо md5(file_get_contents(файл))?
Будет ли такая проверка однозначно устанавливать идентичность файлов при совпадении их хэшей? Алсо, если файлов много - случаются пиздец тормоза, а скрипт все-таки не бесконечно работать может.
Аноним 06/01/16 Срд 09:09:54 #6 №619889 
14520605941510.gif
>>619873 (OP)
Юкинон!
Аноним 06/01/16 Срд 10:25:19 #7 №619902 
Кто-нибудь обьяснит мне без троллинга, щюточек и петросянства, круг применения регулярок? Я понимаю мэйл проверить или грамматику, но ведь это по большому счёту очень узкий круг. Ну тоесть я например написал проверку форм для регистрации. А потом пишу ещё 99.9% кода для всего остального. Стоит ли заморачиваться с этим так, как вы в 2 прошлых тредах заморачивались?
Аноним 06/01/16 Срд 10:54:16 #8 №619907 
Чето подозрительно. ОП не перекатывает сам пока всё не проверит, неужто наш скорострел умело маскиурется под него?
Аноним 06/01/16 Срд 12:09:11 #9 №619929 
14520713517250.png
Однако скрипт проверки на ошибки (пока совсем топорный вариант, но хоть на что-то похоже): https://ideone.com/vSnFKo
Далее попробую с помощью функций вывести кусок текста с ошибкой, а не с помощью регулярок.

>>619815
Сюка, аж в голос!... Действительно же, блиять...
Но, кстати, нет: там нам надо будет искать именно отсутствие пробела и отсутствие букв перед "а" или "но". Иначе придётся делать регулярки с другими символами (конца предложения, например) или полагаться на ту регулярку, которая просто ищет отсутствие пробела после знака препинания.
Это не по заветам ОПа.

>>619902
> без троллинга, щюточек и петросянства
Извини, но нет.
Например, стоп-слова для чата, форума или просто блога (матюки убирать либо заменять их словами "розочка" и т.п., ну ты понял). Унификация данных для платёжных систем (когда номер карты вводят с дефисами или без, а биллинг требует какого-то стандарта в передаче данных) или чтобы просто удобнее хранить его в БД. Проверка на вредоносные скрипты или спам, возможно, - регулярка не позволяет ввести <script> или http (я пока не знаю, именно ли регулярки надо использовать в этом случае).
Короче, применений много может быть.
И не такие они и сложные, кстати, проблемы у того же меня больше с массивами и циклами.

>>619907
В прошлый раз сначала перекатились, а потом ОП там отвечал.
Аноним 06/01/16 Срд 12:16:57 #10 №619930 
>>619929
>...маете?А в это... - Пропущен пробел перед союзом "а".
>...учает,а также... - Пропущен пробел перед союзом "а".
И в то же время:
>...маете?А в эт... - Пропущен пробел после знака препинания.
>...учает,а такж... - Пропущен пробел после знака препинания.
Короче, что-то не то у меня в регулярке опять.
А ведь только что сказал, что не так и сложно...
Аноним 06/01/16 Срд 12:18:44 #11 №619931 
>>619930
Аа, я торможу, это вторая регулярка с поиском отсутствия пробелов после знаков препинания находит то же самое, что нашла первая.
Надо просто исключение добавить в регулярку с поиском пробелов.
Аноним 06/01/16 Срд 12:19:19 #12 №619932 
http://ideone.com/bcKcYa
задача "на словах ты лев толстой". Вроде, всё работает, но не уверен, что такое решение просили. Посмотрите, кто-нибудь?
Аноним 06/01/16 Срд 12:22:17 #13 №619935 
>>619907
Перекатываал последние 8 тредов - я. ОП по традиции слоупочит. А раньше, так тред раза 3 за 900 постов уходил.
Аноним 06/01/16 Срд 12:26:00 #14 №619937 
>>619932
Херась, отличное решение с разными хорошими добавлениями!
>$word3 = $list3[mt_rand(0,4)];
Небольшая опечатка, там тоже 5 ведь элементов.
Аноним 06/01/16 Срд 12:27:16 #15 №619938 
>>619937
и правда, не заметил. Спасибо!
Аноним 06/01/16 Срд 12:28:46 #16 №619939 
>>619937
нет, кстати, всё же у меня было правильно: там 5 элементов - 0,1,2,3,4. В других по шесть
Аноним 06/01/16 Срд 12:37:05 #17 №619942 
>>619939
Аа, бро, извини, постоянно забываю об этом - что с "0" надо начинать отсчёт...
Аноним 06/01/16 Срд 13:21:12 #18 №619967 
ОП, вот я в прошлом тред кидал свой недошоп на обозрение - https://github.com/lexdss/shop
Аноним 06/01/16 Срд 13:24:31 #19 №619971 
>>619888
Есть такая функция http://php.net/manual/ru/function.hash-file.php
Аноним 06/01/16 Срд 13:27:37 #20 №619974 
14520760570320.png
>>619967
Оо, а как это всё установить на Денвер с Дримвивером??7
Аноним 06/01/16 Срд 13:33:10 #21 №619976 
>>619974
Проиграл. Я в этот раз даже бамп с бд кинул для таких случаев.
Аноним 06/01/16 Срд 13:34:01 #22 №619977 
>>619976
>дамп
совсем обдвачевался
Аноним 06/01/16 Срд 14:25:07 #23 №620005 
Решил перекатиться на вашу парашу. Что спрашивают на собеседованиях?
Хочу за мидла сразу сойти. Хотя знаний толком нет, но действие происходит в мухосрани, там небось все такие.
Аноним 06/01/16 Срд 14:29:55 #24 №620011 
>>620005
О, опять этот толстяк вылез. Это ты в прошлом треде был тянкой-мидлом, которая не могла найти работу?
Аноним 06/01/16 Срд 14:33:26 #25 №620014 
>>620011
Нет. Что такого толстого в вопросе о типичном собеседовании на мидла?
Аноним 06/01/16 Срд 14:54:07 #26 №620025 
>>620005
А зарплату тебе будут платить за то что ты собеседование прошел? Ты же понимаешь, что тебе нужно будет выполнять какие-то задачи, а если не сможешь, то пойдешь нахуй. Как ты без знаний будешь работать?
Аноним 06/01/16 Срд 14:58:36 #27 №620035 
>>620005
"Чем отличается абстрактный класс от интерфейса?"
"Витую пару обжимать умеешь?"
Аноним 06/01/16 Срд 15:01:51 #28 №620039 
Задача про компанию «Вектор» http://ideone.com/YWXBjq
Не бейте лучше обоссыте.
Аноним 06/01/16 Срд 15:01:55 #29 №620040 
>>620025
Да в процессе разберусь. Я же умный программист, но с опытом в других(байтоебских) областях.
Аноним 06/01/16 Срд 16:07:02 #30 №620078 
Здравствуйте. Суть такова:
Есть куча текстовых файлов, в каждом из них на каждой новой строке есть запись вида "имя:значение".
Вопрос:
Как сделать так, чтобы открыть каждый файл, найти значение по имени, а затем по всем составить таблицу?
Аноним 06/01/16 Срд 16:53:12 #31 №620104 
>>619742
Бамп вопросу. 502 ошибка*
Аноним 06/01/16 Срд 16:57:33 #32 №620107 
>>620104
Потому-что нет такого индекса в GET. Продампай $_GET и посмотри что там тебе приходит в запросе.
Аноним 06/01/16 Срд 17:14:42 #33 №620118 
Почему ОП в своих заданиях по html/css говорит, что нельзя использовать селектор ? В итоге постоянно нужно убирать эти ебучие отступы чуть ли ни в каждом элементе. С чего вдруг плохо написать в начале файла:
{
margin: 0;
padding:0;
}
И самому спокойно выставлять нужныее отступы где они нужны.
Аноним 06/01/16 Срд 17:17:20 #34 №620121 
>>620118
А зачем тебе обнулять все отступы?
Аноним 06/01/16 Срд 17:20:49 #35 №620124 
>>619875
На картинке с котиком: в чём отличие var_dump(); от $VAR_DUMP? о_0
Это же не константа, раз у неё знак доллара в начале?
Аноним 06/01/16 Срд 17:21:11 #36 №620125 
>>620121
Ну вот я например делал его 6 задание. И мне пришлось обнулять внутрнний отступ у <ul>, внешние отступы у <p> и внешние отступы у <h1>. Не легче было просто прописать вначале файла чтобы у всех элементов был нулевой отступ и самому делать их такими как мне надо, а не такими как задумано браузером?
Аноним 06/01/16 Срд 17:23:05 #37 №620127 
>>620125
а если у тебя не 3 тега, а 10 или 20, а может их сотня и у всех маргин 0 и паддинг 0?
Аноним 06/01/16 Срд 17:26:58 #38 №620132 
>>620127
Если я буду верстать страницу с четко нарисованного psd макета с конкретными размерами, то очевидно все отступы я буду брать оттуда, а не пользоваться предустановленными
Аноним 06/01/16 Срд 17:29:59 #39 №620135 
>>620124
Нет ни константы, ни переменной VAR_DUMP, это типа показано как не надо писать.
Аноним 06/01/16 Срд 17:57:03 #40 №620151 
быстро и резко поясните за индексацию в майсокле.
Аноним 06/01/16 Срд 18:16:55 #41 №620167 
>>620078
Вроде, сделал, что мне надо.
Только теперь надо в цикл пустить (имена файлов от 1 до 50) создание ячеек таблицы. А выходит только первый файл. ЧЯДНТ?
[CODE]<?php
for ($i = 1; $i <= 50; $i++) {

$file = $i . ".txt";
$ar = file($file);
$a = substr($ar[0], 9);
$b = substr($ar[4], 21);
$c = substr($ar[5], 6);
$d = substr($ar[3], 9);
$e = substr($ar[6], 14);
$f = substr($ar[1], 5);

echo "<table><tr><td>$a</td><td>$b</td><td>$c</td><td>$d</td><td>$e</td><td>$f</td>";

for ($i = 9; $i <= 68; $i=$i+3) {
$str = substr($ar[$i-1], 3);
$strWithoutChars = preg_replace('/[^0-9]/', '', $str);
echo "<td>" . $strWithoutChars . "</td>";
echo "<td>" . substr($ar[$i], 11) . "</td>";
echo "<td>" . substr($ar[$i+1], 14) . "</td>";
}

echo "</tr></table>";
}
?>[/CODE]
Аноним 06/01/16 Срд 18:18:23 #42 №620171 
>>620167
А что у тебя там за магические числа?
Аноним 06/01/16 Срд 18:20:36 #43 №620176 
>>620167
Ну пиздец ты намудрил, можно же и попроще все было сделать.
Аноним 06/01/16 Срд 18:20:57 #44 №620178 
>>620171
Строки выбираю, если ты об этом.
Просто, надо как-то сделать цикл, а он не идет.

Или, проще, как в excel'e выровнять данные, которые в столбик, в строчку? Я помню, что так можно, но забыл, как. Гугл не помог.
Аноним 06/01/16 Срд 18:21:26 #45 №620183 
>>620176
Ручки кривые, да и надо же на раз, чтобы вручную данные не вытаскивать.
Аноним 06/01/16 Срд 18:37:06 #46 №620196 
В чём суть механизма работы с различными API соцсетей или платёжных систем?
POST-запросом через cURL отправить данные на какой-то урл с идентификационным токеном, а далее обрабоать полученный ответ-правильно я себе всё представляю?
Аноним 06/01/16 Срд 18:59:57 #47 №620211 
Посоветуйте нормальных сообщест для помощи нубам в изучении Пи-Ейч-Пи.
Вкудахте вообще тухло, стаковерфло? где ещё
Петушиную свою конфу в телеграмме не предлагать, там филиал би, причем самой мерзкой его стороны.
Аноним 06/01/16 Срд 19:01:58 #48 №620214 
>>620211
тут сиди, чем тебе не сообщество?
Аноним 06/01/16 Срд 19:04:35 #49 №620216 
>>620211
>стаковерфло
Да, единственно адекватное и где могут реально помочь. Русскую версию не читал, но осуждаю.

Можешь ещё toster.ru попробовать, но там большая часть вопросов уровня "как вкатиться в 30 лет" и "по какой книжке учить джаву, чтобы заработать мильён", почти как pr в общем лол.
Аноним 06/01/16 Срд 19:11:21 #50 №620224 
>>620214
Ну помимо тут.
>>620216
Я че то смотрел там, на разных форумах - как же бесит, когда задает нуб вопрос, а ему тупо ссылки на мануал. Ну прямо багет на таких.
Ну попробую на стак, с инргишем только не важно.
Аноним 06/01/16 Срд 19:15:58 #51 №620231 
14520969581760.png
>>620216
>Русскую версию не читал, но осуждаю.
Походу есть за что.
Аноним 06/01/16 Срд 19:27:27 #52 №620236 
чо про индексы в майсокле нихуя у опа нет, оказывется это часть оптимизации и писать select * уже не модно.
Аноним 06/01/16 Срд 19:39:10 #53 №620253 
>>620224
Если ответом является первая строчка в гугле-поделом.
И прочитай хотя бы одну книгу про PHP на англ.-потом сразу легче станет.
Аноним 06/01/16 Срд 19:43:16 #54 №620257 
>>620236
Я не ОП, но могу попробовать ответить. Что именно в индексах тебе не понятно?
Аноним 06/01/16 Срд 19:51:55 #55 №620270 
Сделал 8-е задачу ОПа по html/css - https://jsfiddle.net/7u2q9Lme/
Но получилось только с использованием margin у <p> по-другому вообще никак. Почему ОП написал, что нужно ее делать без margin для абзацев? Какое тогда еще может быть решение?
Аноним 06/01/16 Срд 20:01:42 #56 №620274 
>>620270
http://integer64.github.io/site-layout/exercise/exercise8/index.html
можешь мое решение поковырять, Оп вроде одобрил
Аноним 06/01/16 Срд 20:22:26 #57 №620281 
Спрошу заново в новом треде:

Как правильно делать на CSS на коммерческих сайтах, картиночки справой стороны или снизу у которых текст, типа 15 лет на рынке, самая лучшая методика, профессиональные кадры и т.д., такое кажется тизерами называется, такие есть и в шаблоне ОПа, там где андроид нарисован и другие картиночки. Так вот, как их правильно делать, просто как отдельными картинками и рядом текст? Или как фоновое изображение в дивах? Стоит ли делать из них специальный текст, текст из иконок?
12 задача Аноним 06/01/16 Срд 20:28:45 #58 №620285 
https://jsfiddle.net/j3wyw08e/
Аноним 06/01/16 Срд 20:43:51 #59 №620295 
Для чего (и как) применять создание функции в задаче "айпад в кредит"? Какую функцию делать?
Решать задачу просто три раза посчитав, сказано, нельзя.
Аноним 06/01/16 Срд 21:13:50 #60 №620309 
>>620295
Задачу про Айфон в кредит уже сделал?
Вот вводишь решение в функцию, как у ОПа в учебнике, а потом просто для каждого банка подставляешь их переменные в вывод функции (разные проценты в месяц, разные цифры для обслуживания кредита и т.п.).
Но сначала надо дождаться ответа ОПа насчёт задачи про калькулятор кредита на Айфон.
Я что-то не помню, чтобы кто-то показывал его недавно, я бы не пропустил, потому что выМучил этот калькулятор наизусть пару недель назад.
Аноним 06/01/16 Срд 21:18:42 #61 №620311 
>>620309
Айфон вчера делал, только не сохранил решение и теперь надо заново делать. Логично ты расписал, сейчас вкину своё решение на айпад
Аноним 06/01/16 Срд 21:19:29 #62 №620312 
>>620118

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

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

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

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

Потому логика тут такая: большинство сайтов динамические, тексты на них правятся редактором, значит все теги которые могут быть в них использованы должны нормально отображаться. Значит не надо отключать отступы, делать везде одинаковый размер шрифта и тд.
Аноним 06/01/16 Срд 21:21:04 #63 №620316 
Спрошу не про PHP, хотя его тоже учу. htmlacademy и webref.ru пойдет для изучения основ HTML/CSS?
Аноним 06/01/16 Срд 21:23:20 #64 №620320 
14521046004030.png
>>620316
А-а-а-а-а, какой же я мудак слепой. Все, вопрос нет.
Аноним 06/01/16 Срд 21:24:38 #65 №620323 
>>620320
так подойдут или нет?
Аноним 06/01/16 Срд 21:25:58 #66 №620326 
>>620125

> И мне пришлось обнулять внутрнний отступ у <ul>, внешние отступы у <p> и внешние отступы у <h1>.

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

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

Один из способов добвиться этого - использовать БЭМ нотацию:

<ul class="menu__list">
<li>Пункт</li>

.menu__list {
padding: 0;
}

.menu__list > li {
...
}

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

В общем, старайся делать все независимыми блоками, особенно когда дойдешь до большого макета.
Аноним 06/01/16 Срд 21:31:14 #67 №620330 
>>620270

Если добавить в текст другие стандартные теги, то текст разваливается, нет полей слева. Исправь это: https://jsfiddle.net/rLstv59m/1/
Аноним 06/01/16 Срд 21:34:59 #68 №620336 
>>620281

Давай конкретные примеры. По макету из задач на CSS, делается так:

div.features
(4 раза) div.features__item
------h3 Заголовок фичи
------p Текст фичи
------p Текст фичи

Если картинка это часть дизайна сайта то делаешь фоновой картинкой. Если часть контента то img.

Например картинка новости это img. А какое-нибудь украшение которое есть на всех страниых это фон.
Аноним 06/01/16 Срд 21:35:18 #69 №620339 
>>620309
>>620311

Доделал задачу про айпад. Уфф, сколько пота сошло. Проверьте, кто-нибудь?
http://ideone.com/gYxgd7
Аноним 06/01/16 Срд 21:36:22 #70 №620340 
>>619907

Ссылка на предыдущий тред, номер треда и картинки правильные - значит ОП.
Аноним 06/01/16 Срд 21:40:44 #71 №620343 
>>620339
>В гомо банке будем платить 12 месяцев
>В мягком банке платим 12 месяцев
>В клубничном банке платим 11 месяцев
Хм, ты совсем не понял условия!
Там надо посчитать, сколько именно денег выплатит анон во всех трёх банках, а у тебя там месяцы.
Там надо получать общую выплату - попробуй её получить для всех трёх банков.
Аноним 06/01/16 Срд 21:43:23 #72 №620347 
>>620339
Если поставить 1000 вместо 39999, то выдаёт, что выплачивать надо 2 месяца - значит, абсолютно неверно считает, там выплата всего 2030 рублей должна быть в один месяц.
Аноним 06/01/16 Срд 21:44:26 #73 №620349 
>>620347
Это у того банка, у которого 3% и 1000 обслуживания, а также у первого банка.
Аноним 06/01/16 Срд 21:45:35 #74 №620351 
>>620339
Также лучше переводить названия переменных, не писать транслитом.
Так, мелкое замечание.
Аноним 06/01/16 Срд 22:13:11 #75 №620366 
>>620343
>>620349
>>620347
>>620351
http://ideone.com/bs0K2U
теперь, вроде, всё правильно? спасибо за замечания.
Аноним 06/01/16 Срд 22:29:31 #76 №620380 
А я как то решал задачу про банкомат. ОП меня надоумил решать её в двух вариациях, с рекурсией и без. Сколько я тогда ночей провёл, сколько, как вспомню пиздец. Всегда нервный ходил. С тех пор на эту задачу даже смотреть не могу лол
Аноним 06/01/16 Срд 22:31:20 #77 №620381 
>>620380
У меня те же чувства вызывает задача на поиск путей. До сих пор с ужасом вспоминаю и по ночам просыпаюсь в холодном поту. Уже наверное больше года прошло.
Аноним 06/01/16 Срд 22:42:49 #78 №620391 
>>620381
После банкомата я задачи на раз два щелкал. С путями быстро разобрался.
Аноним 06/01/16 Срд 23:07:47 #79 №620420 
>>620366
>В мягком банке платим 60260.891466803 рублей
Нет, бро, считает неверно. Там должно получиться 61270 с копейками.
У тебя отсутствует, получается, прибавка к оставшейся небольшой не выплаченной сумме 3% от остатка (там вроде 264 рубля должно быть) и 1000 за обслуживание кредита.
Также у тебя там точка с запятой стоят за фигурными скобками. Также отсутствует часть в условии - else, там надо её поместить, иначе не по правилам.
Хм, вроде бы алгоритм там у тебя выстроен верно, всё проходит правильно, но вот считает в итоге неверно, как я пояснил.
Сам чё-то туплю, куда девается 1000р и 3% от остатка, всё же должно быть в итоге.
Аноним 06/01/16 Срд 23:12:08 #80 №620424 
>>620380
>>620381
То сладостное чувство, когда уже на калькуляторе Айфона ходил нервный и ворочался во сне, а сейчас по-прежнему не доволен решённой задачей на поиск ошибок в тексте
Аноним 06/01/16 Срд 23:22:32 #81 №620431 
>>620366
При этом если подставить 1000 вместо 40000 в сумму кредита - считает верно, выдаёт 2030.
Аноним 06/01/16 Срд 23:30:14 #82 №620440 
>>620420
>>620431
Перепроверил всё, не могу понять, почему считает неверно. Можешь скинуть правильное решение какое-нибудь? Оче сложно найти ошибку в том, что так долго выстраивал
Аноним 06/01/16 Срд 23:34:18 #83 №620445 
>>620440
ОП бы не одобрил готовое решение. Так не научишься сам думать.
Аноним 06/01/16 Срд 23:37:28 #84 №620449 
а почему тут codeacademy не предлагают в целях изучения? прохожу их курс сейчас по php, закончил на 50 процентов, вроде годнота.
Аноним 06/01/16 Срд 23:38:46 #85 №620451 
>>620440
Бро, сам сейчас сижу и разбираюсь, куда у тебя девается 1000р и 3% от остатка. Тем более, что считает верно на небольшой сумме.
Всё-таки скину свой вариант, потому что ты же всё там выстраиваешь верно, прошел несколько раз по твоему коду. Вместе сейчас попробуем найти, где там ошибка.
Вот мой вариант: http://ideone.com/7FJfGm

>>620445
Тот случай, когда совсем уж непонятно, чому неправильно. Думаю, и анончику это на пользу пойдёт.
Аноним 06/01/16 Срд 23:42:14 #86 №620457 
>>620440
Это я скинул скрипт для Айфона только, но в Айпаде как раз у тебя Мягкий банк должен эти же цифры выдать.
Аноним 06/01/16 Срд 23:46:40 #87 №620460 
>>620451
Нужно каждый шаг дампить, тогда ответ будет виден сразу. Всегда это помогает.
Аноним 06/01/16 Срд 23:47:25 #88 №620463 
>>620451
>>620457
Благодарю, анон, нашёл ошибку, расписав свою программу по месяцам по мягкому банку и сравнив с твоим.

11 месяц спустя: долг = 4138.1720657184 руб, выплачено всего 55000 руб.
12 месяц спустя: долг = 262.31722768997 руб, выплачено всего 60000 руб.
13 месяц спустя: долг = 0 руб, выплачено всего 61270.186744521 руб.

у меня же 12 месяц пропускался засчёт того, что я уводил при сумме меньшей, чем 5000 в if {} и там добивал всю сумму. Сейчас буду думать, как исправить
Аноним 06/01/16 Срд 23:51:08 #89 №620468 
>>620463
>>620457
Исправил в if ($summa * $percent + $comission < $payback). Теперь работает как надо! Аноны, спасибо большое, всё теперь понятно

http://ideone.com/bs0K2U
Аноним 06/01/16 Срд 23:52:10 #90 №620470 
>>620463
>у меня же 12 месяц пропускался засчёт того, что я уводил при сумме меньшей, чем 5000 в if {} и там добивал всю сумму.
Вот в том-то и дело, что это правильный алгоритм: при сумме меньшей или равной 5000 нужно просто выплачивать общий долг и вот эту сумму. Но эта "меньшая сумма" должна перед этим пройти прибавление 3% и 1000 за сервис.
Вроде у тебя так и было.
Где ошибка - не пойму, хоть ты тресни.
Аноним 06/01/16 Срд 23:53:30 #91 №620473 
>>620470
Нет, у меня было раньше
if ($summa < $payback), т.е. я уводил в сторону сразу при сумме 5000, без добавления 3% и 1000 за сервис. Я исправил на ($summa * $percent + $comission < $payback) и заработало.
Аноним 06/01/16 Срд 23:55:01 #92 №620475 
>>620468
Хм, я закрыл вкладку с форком твоего кода, но пытался подставить перед этим в скрипт это, почему-то не получилось.
Ну вот, отлично, значит.
Аноним 07/01/16 Чтв 00:00:13 #93 №620478 
>>620449
в пизде у твоей мамки годнота, шкальник.
Аноним 07/01/16 Чтв 00:00:51 #94 №620479 
>>620257
Ну попробуй ответить, шкальничек, что такое индексы и как их используют.
Аноним 07/01/16 Чтв 00:02:16 #95 №620481 
>>620473
Вот сейчас форкнул так, как я делал, алгоритм же один, - всё заработало.
http://ideone.com/o4iw1M
Чёрт знает, почему прежде не получалось.
ОП не одобрит оформление кода, там не по правилам же }; и отсутствие else {}.
Аноним 07/01/16 Чтв 00:02:52 #96 №620482 
>>620478
>>620479
О, вернулся со смены в пятерочке? Я уже соскучился по твоим постам.
Аноним 07/01/16 Чтв 00:04:51 #97 №620483 
>>620481
Ну если в ифе происходит выход из цикла или return, то else писать необязательно, без него даже лучше т.к меньше кода.
Аноним 07/01/16 Чтв 00:05:26 #98 №620485 
>>620481
Да я уже понял, что проебался с };, у себя в phpstorm убрал всё и получше оформил.

А по поводу else, для чего он в моём случае? В задании не было сказано, что его обязательно использовать.
Аноним 07/01/16 Чтв 00:05:40 #99 №620486 
>>620460
Золотые слова, кстати.
Аноним 07/01/16 Чтв 00:08:54 #100 №620487 
>>620483
Вообще да, действительно.

>>620485
> по поводу else, для чего он в моём случае? В задании не было сказано, что его обязательно использовать.
Это у меня ОПобоязнь, стремление сделать всё максимально по-ОПовски грамотно.
Иногда вот так может заносить.
Аноним 07/01/16 Чтв 00:09:41 #101 №620488 
>>620486
Поддвачну. Это надо в шапку добавить. Намного меньше тупых вопросов будет, если люди внемлют этому совету. Половина вопросов в этом треде решается простым дампом. Надо бы использовать это как универсальный ответ на любой вопрос вида "анончики чому у меня не работает код?", как в видеорелейтед https://www.youtube.com/watch?v=t2F1rFmyQmY
Аноним 07/01/16 Чтв 00:12:29 #102 №620491 
А какие сейчас самые популярные фриланс-биржи на русском языке? Где больше всего заказов?
Аноним 07/01/16 Чтв 00:23:47 #103 №620494 
>>620488
Зачем. Зачем придумали рекомендованные видео.
Аноним 07/01/16 Чтв 00:25:24 #104 №620496 
>>620494
залип?
Аноним 07/01/16 Чтв 00:38:44 #105 №620507 
>>620496
Теперь не до РНР.
Аноним 07/01/16 Чтв 00:40:45 #106 №620509 
>>620507
Иногда надо давать себе перерыв
Аноним 07/01/16 Чтв 01:06:08 #107 №620536 
>>620449

Можешь почитать, если хочешь, но он у них очень базовый и скорее годится для ознакомления. Ну если ты считаешь что этого курса достаточно, ты ведь без проблем решишь наши задачи, правда?
Аноним 07/01/16 Чтв 02:08:28 #108 №620608 
Ничего не могу понять в оптимизации сокла запроса посредство индексов. Какие-то они ключи комбинируют при создании таблицы, а потом делают запрос посредством AND и измеряют миллисекунды запроса, наркоманство какое-то.
Аноним 07/01/16 Чтв 02:23:02 #109 №620624 
Надоели тупые вопросы шкальников, давайте создадим какой-нибудь тред для продвинутого уровня, а этот оставим под маркером "тред для beginners, задачки и тупые вопросы приветствуются". Надоело разгребать тонны вопросов про регулярки, чтобы почитать про серьезные проекты.
Аноним 07/01/16 Чтв 02:24:13 #110 №620626 
>>620624
нахуй пошел, пидор, создавай свой тред и катись отсюда, мудила.
Аноним 07/01/16 Чтв 02:25:17 #111 №620628 
>>620626
двачую
Аноним 07/01/16 Чтв 02:29:55 #112 №620636 
>>620608

Начни с этой статьи http://ruhighload.com/post/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%B0%D0%BC%D0%B8+%D0%B2+MySQL

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

Почитай также про бинарный поиск и двоичные деревья - это связанные темы.
Аноним 07/01/16 Чтв 02:44:07 #113 №620649 
>>619971
Чем это лучше моего варианта?
>Будет ли такая проверка однозначно устанавливать идентичность файлов при совпадении их хэшей? Алсо, если файлов много - случаются пиздец тормоза, а скрипт все-таки не бесконечно работать может.
Аноним 07/01/16 Чтв 04:07:08 #114 №620678 
>>620626
>>620628
cам себя не поддвачуешь, да школьник тупой?
Аноним 07/01/16 Чтв 04:44:23 #115 №620688 
>>620678
двачую
Аноним 07/01/16 Чтв 11:48:36 #116 №620751 
>>620626
Двачую!
Аноним 07/01/16 Чтв 12:16:04 #117 №620754 
14521581642950.jpg
Смотрите, что пришло в голову с задачей на проверку ошибок да-да, я снова выхожу на связь снова
Берём функцию preg_split, подставляем в неё регулярки для разбивания текста на куски до ошибки и после ошибки.
Далее с помощью функции mb_substr от конца первого куска отсчитываем десять символов назад и десять символов вперёд, также отсчитываем десять символов от начала второго куска.
Соединяем куски просто при выводе в echo и внутрь вставляем ту ошибку из массива ошибок, которая всему этому соответствует.
Звучит вроде вполне правдоподобно и вполне реализуемо.
Как там на деле будет - посмотрим.
Аноним 07/01/16 Чтв 12:34:54 #118 №620756 
https://ideone.com/tWeZNj
Задачка на проверку ошибок в тексте. Подскажите, пожалуйста, какие косяки?
ideone, почему-то упорно отказывается подавать что-либо на stdout, поэтому вот тот же скрипт на tutorialspoint: http://goo.gl/v2sfaa
Аноним 07/01/16 Чтв 12:36:29 #119 №620757 
>>620754
Почему именно по 10 символов? Сделал по слову слева и справа >>620756
Аноним 07/01/16 Чтв 12:44:36 #120 №620761 
>>620756
Как я понял, Ideone не позволяет массивы вставлять более современным способом, как array[], только как array().
Пока не удалось запустить твоё решение, пробую поменять.
>>620757
В принципе, да, можно и так, действительно.
Я сделал до этого вот так: https://ideone.com/vSnFKo
Но это неправильно, надо функциями это всё собирать, а не регулярками. Или я уже поехал, возможно.
Аноним 07/01/16 Чтв 12:46:10 #121 №620764 
>>620756
Косяк сразу - нет ui в конце регулярок, чтобы они работали с русским текстом и вне зависимости от регистра.
Аноним 07/01/16 Чтв 12:48:26 #122 №620765 
Вот, попробовал поменять: https://ideone.com/sF0l6w
Работает неправильно, какой-то сумбур на выходе.
Но это, возможно, из-за того, что я там всё не соединил должным образом.
Аноним 07/01/16 Чтв 12:57:32 #123 №620768 
>>620756
Ещё и в самих регулярках у тебя там сумбур, бро.
Букву "Ё" надо дополнительно указывать, потому что utf её не воспринимает при перечислении "а-я".
Перед союзами "а" и "но" надо искать отсутствие пробела. Там может быть текст типа "...пришёл домой.А жена-то и говорит..."
И регулярка должна находить эту ошибку не как отсутствие пробела после точки, а отсутствие пробела перед союзом.
Это всё ОП говорил.
Аноним 07/01/16 Чтв 13:19:04 #124 №620777 
>>620764
>нет ui в конце регулярок
Да, забыл. Cкрипт почему-то без u них работает.

>Букву "Ё" надо дополнительно указывать, потому что utf её не воспринимает при перечислении "а-я".
Да, об этом ОП писал, я забыл.

>Перед союзами "а" и "но" надо искать отсутствие пробела.
Так ищет же их скрипт, в массиве третья регулярка с конца: после не запятой идёт пробел \s. Можешь проверить: http://goo.gl/4HcE0W

>пришёл домой.А жена-то и
За это первая регулярка в массиве отвечает: "После точки, запятой, двоеточия, точки с запятой, восклицательного и вопросительного знаков нужно ставить пробел."
Аноним 07/01/16 Чтв 13:19:36 #125 №620778 
>>620777
>без u них работает.
просто без u.
Аноним 07/01/16 Чтв 13:45:06 #126 №620787 
http://goo.gl/OWTWZI
Самое интересное, что без ui нет никаких warnings и вроде как всё работает.
https://stackoverflow.com/questions/3455985/range-out-of-order-in-character-class
Говорят, что нужно дефис экранировать, но мне не помогло.
Аноним 07/01/16 Чтв 15:03:18 #127 №620823 
>>619873 (OP)
причем здесь Гахара и Пых? Что их роднит кроме охуенности?
Аноним 07/01/16 Чтв 15:39:39 #128 №620847 
>>620777
Я там не понимаю, как запустить.
Тогда жди ОПа.
Вроде показывает ошибки в большом тексте и прежний вариант, вот тут я проверял же: >>620765
Но работает правильно только с большим текстом, вот посмотри сейчас на текст с одной ошибкой и парой слов. ОП обычно так и проверяет, так что инфа соточка, что он бы не одобрил.
>За это первая регулярка в массиве отвечает: "После точки, запятой, двоеточия, точки с запятой, восклицательного и вопросительного знаков нужно ставить пробел."
Я так сделал с самого начала, а ОП не одобрил. Вообще так и говорилось в условии, как ты сделал. Это я могу уже ехать и путать. Я всё это двадцать раз переписывал, потому что с нуля изучаю, могу уже всё путать.
А у тебя, кстати, какая-то база есть - это чувствуется. Что-то уже изучал?
Аноним 07/01/16 Чтв 15:44:57 #129 №620850 
>>620787
Зависит от кодировки и всяких расширений.
ОП советовал делать так, как везде работает.
Аноним 07/01/16 Чтв 16:34:48 #130 №620872 
>>620847
>Я там не понимаю, как запустить.
Просто выбирай Execute. http://goo.gl/QiuyPF
Вроде причесал ещё немного регулярки, жду ОПа. Спасибо за внимание, анон!

>Что-то уже изучал?
Да ничего особо, лабы делаю по плюсам одногруппникам, с PHP так вообще плохо знаком. Ну разве что sed ковырял немного.

>ОП советовал делать так, как везде работает.
Я просто не подумал, что где-то может быть по-другому (в регулярках, различные реализации которых бесчисленны!). Думал, что вот у меня в линуксе проблем с кодировкой нет, значит у всех нет.
Аноним 07/01/16 Чтв 16:47:42 #131 №620878 
>>620872
Хм, а вот там всё работает и с небольшим текстом, действительно...
Аноним 07/01/16 Чтв 17:32:26 #132 №620899 
Добрался до регулярок. Задача на проверку номера телефона (который может быть задан многими вариантами).

Додумался только до такого, всё работает, но не уверен, что это самый изящный вариант:

<?php
$a = 89115668756;
$b = '/^8-?\\s?\\(?\\d{3}\\)?-?\\s?\\d{3}-?\\s?\\d{2}-?\\s?\\d{2}$/';
if (preg_match($b, $a)) {
echo "ok";
} else {
echo "not ok";
}
Аноним 07/01/16 Чтв 17:40:32 #133 №620903 
>>620899
Во-первых, залей свой код на ideone. Во-вторых, попробуй сделать массив вариантов номера. Например вот так:
$arrayOfPossibleVariants = [
'8 213 23434 34 позвать Любу',
'8 213 2343 434',
'8 213 23434p34',
'8 213 23434 34',
'8(213234-34-34',
'02',
'8(911)-506 56 56'
];


А потом используй foreach для проверки каждого варианта.

foreach ($arrayOfPossibleVariants as $value) {
if(preg_match($regExp, $value)){
echo "{$value} соответствует.\n";
} else {
echo "{$value} не соответствует.\n";
}
}

По регуляркам пусть кто-то другой подскажет, сам жду когда мне подскажут.
Аноним 07/01/16 Чтв 17:54:31 #134 №620912 
>>620903
А для чего ты указываешь в массиве неправильные варианты? Это я про "позвать Люду". Насколько я понимаю, мой вариант компактнее и правильнее(зачем это делать через массив, если можно в одну строчку уместить? Мой вариант полностью рабочий, просто громоздкий. Но это согласен, пусть тот, кто разбирается выскажется.

залил на ideone
http://ideone.com/538Hqy
Аноним 07/01/16 Чтв 18:01:25 #135 №620917 
>>620912
>А для чего ты указываешь в массиве неправильные варианты?
Для проверки правильности работы регулярок. Взглянул на регулярку, появились сомнения - добавил парочку элементов массив, проверил сразу несколько вариантов. Вместо того, чтобы строку каждый раз менять для отдельного варианта. Ну а вообще удобнее для таких целей использовать сервисы вроде https://regex101.com/
Аноним 07/01/16 Чтв 18:11:01 #136 №620920 
>>620917
Интересный сайт, но он ругается на мою формулировку \\( и \\), хотя они указаны у ОПа в уроке и работают хорошо в phpstorm.
Аноним 07/01/16 Чтв 18:16:40 #137 №620925 
>>620920
Пиши так \( и \). Нет разницы.
Аноним 07/01/16 Чтв 21:10:55 #138 №621054 
ОП, когда начнешь проверять?
Аноним 07/01/16 Чтв 21:12:43 #139 №621056 
Пиздец, как не зайдешь на какую-нибудь биржу фриланса везде нужно знать кучу движков чтобы хоть что-то выполнять. Мне кажется даже одну cms надо задрачивать кучу времени чтобы чувствовать себя в ней уверено, а надо знать хотя бы 3-4 штуки. Охуеть вообще.
Аноним 07/01/16 Чтв 21:59:17 #140 №621099 
>>621056
На самом деле нет.
Аноним 07/01/16 Чтв 22:30:40 #141 №621125 
Если я не делаю imageDestroy, а вместо него делаю unset() - что случается? Когда будет очищена память и как чистить, если точно не уверен, является ли переменная ресурсом изображения или нет, а ее надо обнулить? Через @ как-то не хочется.
Аноним 07/01/16 Чтв 22:34:24 #142 №621130 
Алсо, можно ли как-то отловить эту ошибку, подавленную собачкой, и вывести ее в некоторый лог-файл, к примеру? Или послать по почте...
Аноним 07/01/16 Чтв 22:42:29 #143 №621137 
блядь, ёбаный в рот, как делать задачу на проверку ошибок? Тем более она даётся раньше, чем preg_match_all, то есть получается делать надо без него? Как, сука, как?!
Аноним 07/01/16 Чтв 23:01:32 #144 №621152 
>>621137
посмотрел по треду, кто как решает, кто через двойные массивы(массивы в массиве), кто через foreach, но этого не было в уроках ОПа! Точнее, было только упоминание
Аноним 07/01/16 Чтв 23:19:40 #145 №621166 
>>621152
>>621137
бля, помогите, как это делать?
Аноним 07/01/16 Чтв 23:20:28 #146 №621167 
>>621137
>>621152
Да, ОП и сам говорил, что урок по регуляркам нуждается в переработке.
Пости сюда свой вариант, будем тебе помогать, хотя я не уверен, что ОП и мой вариант одобрит.
Аноним 07/01/16 Чтв 23:22:30 #147 №621170 
>>621167
Я даже не знаю, как взяться за него. Пооткрывал все решения из треда, сейчас сижу и разбираю ваш код, пытаясь понять, как это работает. Но сам бы не дошёл до всех этих двойных массивов, т.к. учил только по ОПу и такого пока не встречал. Думаю пропущу после разбора этой задачи регулярки, т.к. чувствую пробелы в знаниях
Аноним 07/01/16 Чтв 23:25:24 #148 №621172 
>>620899
ОП где-то выкладывал кучу номеров,которые должны правильно проверяться, найду потом не с телефона.
Там сразу вижу, что нет учёта +7 в начале.
>>620903
Да, но нужно больше номеров с пробелами и даже вот такого типа: +7 - ( 910 ) - 56 - 56 - 56 -1.
Аноним 07/01/16 Чтв 23:27:27 #149 №621175 
>>621170
Не-не - даже не думай!
Задача больше на массивы и цыклы, я гарантирую, сношался с ней с 31 декабря до вчерашнего дня, всех затралил в треде.
Зато поймёшь принципы и многое уяснишь.
Аноним 07/01/16 Чтв 23:28:01 #150 №621176 
https://jsfiddle.net/g91an8Lr/6/

решаю упражнения отсюда
http://dkab.github.io/jasmine-tests/?spec=6

скажите мне, я уебан кривой или решение и должно таким быть?
Аноним 07/01/16 Чтв 23:28:22 #151 №621177 
>>621175
*циклы, совсем запрограммировался...
Аноним 07/01/16 Чтв 23:30:27 #152 №621179 
>>621170
У ОПа это всё есть, надо просто ВСЕ его примеры переводить в Идеоне и там смотреть, когда только изучаешь.
Не надо галопом по Европам, я базарю.
Аноним 08/01/16 Птн 00:06:11 #153 №621200 
В итоге очень понравилось решение анона сверху, но сам бы до него никогда не додумался. Разобрал его и понял (вроде бы), как что работает, в целом стырил у него только идею, но, как уже говорил, сам бы не дошёл, тк больно мудрёно.

https://ideone.com/3biSgl
Аноним 08/01/16 Птн 00:11:39 #154 №621211 
>>621200
Нужно больше текста перед ошибкой и после неё, а то ведь непонятно ничего.
Мне его решение тоже понравилось, моё сложнее и наивнее.
Аноним 08/01/16 Птн 00:17:25 #155 №621220 
>>621211
Да, согласен, что больше контекста нужно, заново заливать не буду, всё равно решение не моё.

Твоё через массив в массиве? Ты молодец, раз сам дошёл, но у того очень уж изящно вышло. Тешу себя мыслью, что я пока только первую неделю занимаюсь (до этого программирование в глаза не видел) и всё ещё впереди.
Аноним 08/01/16 Птн 03:26:14 #156 №621350 
>>621200

В этом решении куча ошибок. Программа находит ошибки где их нету и не находит где они есть: https://ideone.com/4ytqUN

[a|b] - это неправльно. Это значит не «a или b », а «один из символов a, | или b».

Ну и ошибки что он ожидает всегда ровно 1 пробел после «но».
Аноним 08/01/16 Птн 03:33:19 #157 №621353 
>>621176

Вместо alert используй console.log или document.write, а то у людей руки отвалятся эти окна закрывать.

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

arrArg -> externalArgs
arr -> internalArgs

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

Вместо reverse + pop ты можешь использовать shift - он снимает элемент из начала массива.

После if всегда стоит писать {} - иначе можно допустить ошибку при правке кода.

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

В остальном выглядит верно. Если робот принимает, то все ок.

>>621172

Куча номеров:

----------

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

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

Вот список номеров:

Правильные: array('84951234567', '+74951234567', '8-495-1-234-567', ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67', '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567', '8 ( 999 ) 1234567', '8 999 123 4567');

Неправильные: array('02', '84951234567 позвать люсю', '849512345', '849512345678',
'8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
'84951a234567', '8495123456a',
'+1 234 5678901', // неверный код страны
'+8 234 5678901', // либо 8 либо +7
'7 234 5678901' // нет +
);

Аноним 08/01/16 Птн 03:41:51 #158 №621357 
>>621170

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

>>621152

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

>>621137

Надо с ним. То, что она идет раньше, будем считать проверкой сообразительности и находчивости анона.

>>621130

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

>>621125

> Когда будет очищена память и как чистить, если точно не уверен, является ли переменная ресурсом изображения или нет
Если у тебя всего 2 варианта: либо в переменной картинка либо null то проверить можно так:

if ($image) {
... удаляем картинку
$image = null; // обнуляем переменную чтобы второй раз не удалить
}

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

>>621056

Можно искать только по своей CMS задачи. Но задачи на CMS обычно низкоквалифицированные и плохо оплачиваемые.

>>621054

Сегодня попробую пройтись по старому треду, а потом в этом.

>>620920

Там на сайте надо писать бекслеш один раз. Мы пишем 2 раза так как мы пишем регулярку внутри строки, а по правилам PHP чтобы вставить в строку бекслеш его надо писать 2 раза:

echo "\\"; -> \
echo "\"; -> ошибка

То есть ты пишешь \\( а движок регулярки получает просто \(

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

мануал http://php.net/manual/ru/language.types.string.php#language.types.string.syntax.double

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

\\

Но если так написать в строке в PHP то он поймет это как 1 бекслеш потому в PHP мы удваиваем каждй бекслеш:

\\\\

Тогда движок регулярок получит \\ на вход.

Аноним 08/01/16 Птн 03:49:21 #159 №621361 
Кто делает задачу на регулярки - держите ссылку где уже вбиты примеры телефонов: https://regex101.com/r/qF7vT8/2

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

Флаг m в конце для того чтобы ^ и $ обозначали не начало/конец текста, а начало/конец любой строки.
Проверка номеров телефонов Аноним 08/01/16 Птн 03:57:32 #160 №621365 
Ой, правильная ссылка здесь: https://regex101.com/r/qF7vT8/3 (я забыл флаг g добавить). Я протестировал - если ввести правильную регулярку, то все правильные номера выделяются цветом.

Очень удобно на этом сайте тестировать - там все само обновляется по мере набора текста.
Аноним 08/01/16 Птн 04:04:49 #161 №621369 
>>620912

Проверь свою регулярку сначала сам на списке номеров тут >>621353 или на regex101 по ссылке >>621365

Не забудь что на regex101 бекслеш пишется 1 раз а не два.

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

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

А не закладывать вариант что всегда идет ровно 3 цифры, за ними ровно 2 и тд.

>>620903

Совет по именованию:

arrayOfPossibleVariants -> possibleVariants
value -> variant

>>620899

Протестируй свой вариант на примерах номеров.
Также, попробуй переписать проще, например:

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

Аноним 08/01/16 Птн 04:24:07 #162 №621371 
>>620823

Для заманивания новых анонов и мотивирования старых. А вообще, ОП просто ставит в шапку картинки которые ему нравятся.

>>620787

Твои ссылки на tutorialspoint к сожалению сейчас не открываются, ошибка 504

>>620787
>>620777

Без флага u русские буквы будут работать некорректно, причем там все так хитро что ты можешь даже не сразу это заметить и замучаешься искать в чем причина. Всегда ставь этот флаг если ты используешь utf-8.

Если нужны подробности, то суть в том что в utf-8 русские буквы состоят из 2 идущих подряд байт, а движок регулярок по умолчанию думает что 1 байт = 1 символ и он воспринимает русскую букву как 2 независимых символа.

То есть ты пишешь аб (это кодируется байтами D0 B0 D0 B1), а движок регулярок видит 4 отдельных символа c кодами D0, B0, D0, B1. Так как в тексте «аб» кодируется так же, то это сработает. Но не сработает например если в тексте идет АБ так как оно кодируется как D0 90 D0 91.

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

D0 B0 ?

То есть он видит «идет символ с кодом D0, за ним может быть или не может быть символ B0». В utf-8 не бывает просто байта с кодом D0, за ним всегда что-то идет, и это выражение сработает только если в тексте есть буква a с кодом D0 B0. Очевидно что тут будет ошибка и выражение «a?» будет интерпретироваться как «a», то есть знак вопроса не сработает.

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

Коды я взял тут: http://i.voenmeh.ru/kafi5/Kam.loc/inform/UTF-8.htm

Потому всегда ставь флаг u.
Аноним 08/01/16 Птн 04:36:01 #163 №621380 
>>620765

> [а-Я]
Так не надо писать. В юникоде (посмотри сам: http://unicode-table.com/ru/blocks/cyrillic/) большие буквы идут раньше маленьких, отсюда ошибка: ты указал невозможный диапазон символов. Также, буква ё находится там не после е, а вообще отдельно от алфавита.

Надо писать

[а-яА-ЯёЁ]

> "Предложение должно начинаться с большой буквы.",
У тебя там в регулярке флаг i - игнорировать регистр.

> Перед союзами «а» и «но» нужно ставить запятую
там ошибка что после но должен идти пробел. А может идти например какой-то знак.

> \sздел\S
А что если «Зделал» идет в самом начале текста?

>>620761

> Ideone не позволяет массивы вставлять более современным способом, как array[], только как array().

Позволяет: $a = [1, 2,3 ];

> 0 => array
> 1 => array
Можно не писать тут индексы, PHP сам их поставит.

Твои регулярки не сработают если например слово «сдесь» стоит в самом начале текста.

> здела
сработает на правильное слово «разделать медведя»

> Пропущен пробел перед союзом \"а\"."
Надо проверять пропущенную запятую а не пробел

> [^\\s(а|но)]
Это значит любой символ, кроме пробельного, скобок, букв а, н, о, вертикальной черты. В квадр. скобках многие символы теряют свое значение.

> for ($i=0; $i < $possibleErrorsCount; $i++) {
Лучше foreach



Аноним 08/01/16 Птн 04:41:52 #164 №621381 
>>620756

Нет флага u, из-за этого скорее всего регулярка выдает битые utf-8 последовательности и ideone отказывается их отображать.

Проверить можно, сделав вывод побайтово:

https://ideone.com/z4idwF

В utf-8 русская буква кодируется 2 байтами, первый это D0 или D1, второй - от 80 до FF.

В строке

> Здесь ошибка: d1 80 d0 b0 d1 81 d1 81 d1 83 d0 b4 d0 be d0 ba 21 d0 b7 d0 b0 d0 b0 d1
> Описание: Предложение должно начинаться с большой буквы.

В конце идет D1 и за ней нет ничего, отсюда и проблемы.
Аноним 08/01/16 Птн 04:44:44 #165 №621383 
>>620754

Сложновато. Можно лучше сделать так:

- preg_match_all находим все места с ошибками
- функцией типа mb_strpos http://php.net/manual/ru/function.mb-strpos.php по найденной фразе находим ее позицию в тексте (подвох: фраза может встретиться несколько раз)
- имея позицию, можем взять кусок текста например на 10-15 символов раньше

Также, preg_match_all умеет сообщать позицию найденного текста в байтах с помощью флага PREG_DELIM_CAPTURE, но там получится сложный 3-мерный массив.
Аноним 08/01/16 Птн 04:58:36 #166 №621385 
>>620491

fl.ru

>>620481

выражение
> $summa x $percent + $comission;
Повторяется 3 раза, убери повторы.


>>620468

Надо еще убрать повторы выражения

> $summa x $percent + $comission

>>620440

Готовые решения не даем.

>>620391

У нас еще есть студенты, файлообменник, и более сложные задачи.

>>620366

Сейчас выглядит верно но надо убрать повторы выражения для расчета процентов.

>>620316

Да.

>>620285

> for(var key in this.getSizes()){
> if(size == key){
Используй оператор in

Лучше переименовать
calculationResult -> result

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

>>620295

Функцию расчета кредита в одном банке.
ООО Вектор Аноним 08/01/16 Птн 05:17:16 #167 №621393 
>>620196

Примерно да. Но почему через curl? Он же неудобный, лучше использовать guzzle например.

>>620151

Гуглил?

>>620132

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

>>620039

У тебя очень странная модель. Почему-то объект Employee представляет не одного работника, как можно подумать из названия, а любое их число. Это усложняет программу: представь например что нам надо взять и повысить ранг одному работнику из группы. Логичнее было бы сделать 1 объект = 1 работник. А если хочется их группировать, сделать объект ГруппаРаботников.

Причем что интересно, зарплату он считает с учетом числа людей, а потребление кофе - без.

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

$ivan = new Manager(1, 1, false);
echo "Зарплата Ивана: {$ivan->getSalary()}\n";
$ivan->leader = true;
echo "Зарплата Ивана после повышения: {$ivan->getSalary()}\n";

http://ideone.com/wLCThI

Если все верно то зарплата Ивана должна повыситься. А что? Поле leader публичное, значит автор кода разрешил менять его снаружи, если бы он был против, он бы сделал его private или protected.

У тебя она почему-то не повышается.

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

> class EmployeeList {
Логичнее было сделать объект Департамент.

Также, держи дополнительное задание:

### Антикризисные меры

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

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

1. Сократить в каждом департаменте 40% (округляя в большую сторону) инженеров, преимущественно самого низкого ранга. Если инженер является боссом, вместо него надо уволить другого инженера, не босса.

2. Увеличить в целях стимуляции умственной деятельности базовую ставку аналитика с 800 до 1100 тугриков, а количество выпиваемого им кофе с 50 до 75 литров. В тех департаментах, где руководитель не является аналитиком, заменить его на аналитика самого высшего ранга из этого департамента (а бывшего руководителя вернуть к обычной работе)

3. В каждом департаменте повысить 50% (округляя в большую сторону) менеджеров 1-го и 2-го ранга на один ранг с целью расширить их полномочия.

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

Аноним 08/01/16 Птн 06:04:51 #168 №621413 
Как посчитать хеш файла (ну, чтобы установить подлинность или сравнить два файла)? Тупо md5(file_get_contents(файл))?
Будет ли такая проверка однозначно устанавливать идентичность файлов при совпадении их хэшей? Алсо, если файлов много - случаются пиздец тормоза, а скрипт все-таки не бесконечно работать может. Выше писали про специальные функции для хеша именно файла. Чем это отличается от моего варианта?
>>621357
>Не используй собачку. Отловить вроде можно через свой обработчик ошибок.
Как без нее-то? Если варнинги и нотисы выводятся. Например if ($test = @imagecreatefromjpeg...) else ...
всё равно выплюнет варнинг без собачки, если условие не выполняется. Поэтому я ее давлю, но хочу где-то запомнить.
>свой обработчик ошибок
Эм, чо?
Аноним 08/01/16 Птн 06:34:04 #169 №621433 
test
CREATE TABLE
INSERT INTO
UPDATE
SELECT
Аноним 08/01/16 Птн 06:36:28 #170 №621436 
>>619932

Решение хорошее, но есть недостаток: у тебя вручную посчитаны индексы массивов:

> mt_rand(0,5)
Надо либо чтобы они считались сами через count либо использовать функцию array_rand.

>>621413

> Тупо md5(file_get_contents(файл))?
md5_file наверно лучше

> Будет ли такая проверка однозначно устанавливать идентичность файлов при совпадении их хэшей?
да

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

> Как без нее-то? Если варнинги и нотисы выводятся.
Проверять что перед тобой JPEG файл прежде чем вызывать imagecreatefromjpeg

Например функцией getimagesize.

https://github.com/lexdss/shop/ Аноним 08/01/16 Птн 06:38:24 #171 №621438 
Советы и замечания. Пока все плохо, но если ты прочтешь все уроки и все исправишь, я думаю, результат будет лучше.

А ты читал про нормализацию в SQL? Если нет то прочти, есть статьи где это простыми словами объясняется.

https://github.com/lexdss/shop/blob/master/shop.sql
У таблицы category (и всех остальных) надо указать уникальные индексы для колонок где не может быть повторяющихся значений.

path лучше писать в виде «cort» если там везде в начале стоит /cat. Более того, по моему колонка path просто дублирует значения из code.

Не очень понятно чем поле name отличается от title - надо бы добавить комментарий к полям через конструкицию COMMENT '....'

....

Полностью ответ тут http://pastebin.ru/mzp3Ex5d


Аноним 08/01/16 Птн 06:39:01 #172 №621439 
>>619967 - тебе ответил выше >>621438
Аноним 08/01/16 Птн 06:40:40 #173 №621442 
>>621436
Я имею ввиду, сама проверка через хеши - она однозначна и для любых сравнений подходит? Нет там коллизий каких-нибудь хитрых или еще чего?
>Например функцией getimagesize.
Ну это я итак делаю.
>Впрочем тут есть способы ускорить проверку - например если длина файла не совпадает
А если файлов десятки тысяч? По идее, сначала посчитать хэши (зато один раз) будет быстрее, нет?
Аноним 08/01/16 Птн 06:57:19 #174 №621444 
Не знал, куда податься - по этому решил сюда. Поставил апач на свой линуксокомп и вроде всё работает. На локалхосте показывается страница. Но php файл в папке var/www не видится. Апач перезапускал.
Аноним 08/01/16 Птн 07:04:39 #175 №621447 
>>621444
Отбой тревоги, f5 всё решил.
Аноним 08/01/16 Птн 07:06:16 #176 №621448 
Ців
Аноним 08/01/16 Птн 07:26:19 #177 №621449 
>>613285
Оп исправил почти все твои замечания
http://integer64.github.io/site-layout/
Задача 10:
>>Почему width 100%?
Гугль дал такое решение для адаптивности картинок
Задача 11:
>>перемещаться с клавиатуры, клавишами Tab, Shift + Tab, стрелками, пробелом.
Реализовал, добавил для checkbox на :focus бордер тень,что бы было видно.
Задача 12:
Переделал, совсем без id у меня не получилось, надо было как то input с label связать. Может быть есть другое решение.
Связал вкладки и контент вкладок через data-атрибуты. Хотелось бы в CSS полноценные регулярные выражения, тогда решение было бы более эстетичное.
Возник вопрос по поводу длинны названия вкладки: три раза прочитал, так и не понял что требуется, разжуй пожалуйста, для самых глупеньких вроде меня.

И как выкладывать решение задач по MySQL? В каком виде?
Аноним 08/01/16 Птн 09:33:14 #178 №621461 
Анончики, вот пост нашел в предыдущем треде, который меня радует: >>616970

Анон учился-учился в нашем треде и нашел работу в итоге. Молодец, что. Заметьте, что анон выбрал сложный путь изучения: не примитивные пиратские видеокурсы по написанию процедурной лапши с устаревшими функциями, а наш тред, ООП, композер, вот все это. Соответсвенно и на работе Symfony и Doctrine, не ерунда какая-то.

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

>>621442

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

> А если файлов десятки тысяч? По идее, сначала посчитать хэши (зато один раз) будет быстрее, нет?

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

>>621449

> как выкладывать решение задач по MySQL?
Если SQLfiddle работает то лучше всего на него. Если нет - делай SQL дамп (CREATE TABLE + INSERT + SELECT) и загружай на любой pastebin или ideone.

То есть нужен код на языке SQL, создающий таблицы, вставляющий в них что-нибудь и делающий нужный запрос.
Аноним 08/01/16 Птн 09:34:41 #179 №621462 
>>621380
Спасибо за подробные и полезные ответы!
Немножко доработал регулярки:

> Перед союзами «а» и «но» нужно ставить запятую
>там ошибка что после но должен идти пробел. А может идти например какой-то знак.

Написал такую регулярку: /\w\s(а|но)[^w]/gu
Тесты с различными вариантами здесь: https://regex101.com/r/jT4fT6/2

> \sздел\S
>А что если «Зделал» идет в самом начале текста?

Написал такую: /(\s|^)здел\S*/gui
Тесты: https://regex101.com/r/jI7vG3/1
Аноним 08/01/16 Птн 09:38:52 #180 №621464 
>>621449

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

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

~=
*=
^=
|=
$=

Почитай если не слышал https://learn.javascript.ru/css-selectors



Аноним 08/01/16 Птн 09:41:18 #181 №621465 
>>621462

(\s|^) -нельзя ли заменить на \b? \b значит граница слова, то есть место где с одной стороны стоит \w а с другой \W (не-\w).

[^w] - где бекслеш? Это не то же самое что \W?

Лучше не полагаться что между словами ровно один пробел.
Аноним 08/01/16 Птн 09:50:21 #182 №621473 
Ответы в старом треде

>>621467 - вопрос про аякс
>>621468 - про поиск грамматических ошибок, композер, поиск пути
>>621469 - поиск пути, константа EMPTY, структура папок в задаче студентов, про неймспейсы
>>621470 - getId3, калькулятор
>>621471 - Кошки-мышки, в общем хорошо решено
>>621472 - https://github.com/fxsloker/Student

Если вы постили в прошлом 2015 году и вас пропустили - напомните о себе в этом треде. Если уже в 2016 то погодите еще пару часиков.

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

Аноним 08/01/16 Птн 11:55:32 #183 №621503 
>>621473
>Я бы убрал core, и вместо одной папки models сделал разные папки для разных классов: для валидатров, сущностей, хелперов, классов работы с БД.

Где тут MVC тогда, не понимаю.
Аноним 08/01/16 Птн 12:02:32 #184 №621505 
>>621503

MVC не в том что ты создаешь ровно 3 папки, а в том что приложение можно логически разбить на M, V и C.
Аноним 08/01/16 Птн 12:15:00 #185 №621511 
Чому шин2 не выводит?
http://ideone.com/xEl2f5
Ответы в старом треде Аноним 08/01/16 Птн 12:28:38 #186 №621521 
Ответил на все вопросы и проверил все что было в старом треде.

>>621512 - про ключи в массиве
>>621513 - https://github.com/MindiMakridi/filehosting
>>621514 - что сделать на симфони, исправление опечаток, проверка телефона, кредит
>>621515 - JS про электросеть, поиск ошибок, Апач на маке
>>621516 - игра в кубики, стихи, кредит
>>621517 - ...
>>621519 - http://integer64.github.io/ (хорошо сделал)
>>621520 - первые 3 задачи, поиск ошибок, проблема в phpstorm



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


Аноним 08/01/16 Птн 12:29:46 #187 №621523 
>>621513
>Нельзя в заголовках исплоьзовать что-то кроме ASCII (то есть латинницы). Убери это поле.
Без этого поля файл сохраняется с айди.
>Интересные у тебя геттеры. Зачем это ты исключение выбрасываешь? Я не против, просто хочу понять заечм.
Твой же совет выше по треду, что каждый метод должен либо отдавать значение, либо выбрасывать исключение.
>Это должно быть в другом классе.
Ну токен это же свойство файла. Алсо, куда тогда девать все эти методы? Создать хелпер и туда отправлять все не нашедшие себе места методы?
Аноним 08/01/16 Птн 12:34:27 #188 №621525 
>>621523

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

> Ну токен это же свойство файла.
Это да, но он не обязан их генерировать, он их только хранит.

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

>>621511

Флаг u почему пропустил?

также,

> switch($test) {
> case preg_match("/[0-9]х?ме[0-1]/", $test)
как это по твоему должно работать? Это ведь примерно равно

if ($test == preg_match("/[0-9]х?ме[0-1]/", $test))

Аноним 08/01/16 Птн 12:40:47 #189 №621526 
>>621525
>В ссылке на скачивание должно быть имя файла в конце. Покажи какая у тебя ссылка.
Хм, в самом деле скачивает по имени файла в конце. Хотя может дело было в том, что браузер как-то запоминал прежнее имя, под которым я скачивал файл, потому-что я тестировал разные имена файлов, и для уже скачанных файлов изменения кода не оказывали никакого влияния, они продолжали скачиваться с тем именем, которое было при первой загрузке.
Аноним 08/01/16 Птн 12:45:02 #190 №621527 
>>619882

в старом треде где-то в конце ответил.
Аноним 08/01/16 Птн 12:45:52 #191 №621528 
1
Аноним 08/01/16 Птн 12:58:47 #192 №621532 
Помогите, пожалуйста, с регуляркой на номера телефонов
>>621369
>+7 или 8, за ними ровно 10 цифр между которыми любое число пробелов, минусов, скобок.

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

$reg = '/(+7|8)[0-9\\(?\\)?-? ?]{10}'; Как воплотить это
>+7 или 8, за ними ровно 10 цифр между которыми любое число пробелов, минусов, скобок.
Integer64 08/01/16 Птн 13:01:01 #193 №621533 
>>621521
Спасибо Оп.
Теперь по поводу главного задания по верстке макета, верстать надо на голом CSS или можно bootstrap использовать?
Аноним 08/01/16 Птн 13:02:39 #194 №621534 
>>621533
Какой смысл использовать бутстрап при обучении верстке?
Аноним 08/01/16 Птн 13:25:15 #195 №621540 
>>621534
А почему бы и нет?
Мне просто нужен ответ:
Да, можно или нет, нельзя.
sageАноним 08/01/16 Птн 13:26:20 #196 №621541 
>>621540
Можно.
Аноним 08/01/16 Птн 13:27:35 #197 №621543 
>>621532
помохите
Аноним 08/01/16 Птн 13:49:40 #198 №621547 
Я хотел заметить, что у ОПа в задачках вообще не рассказывается ни про апач ни про то, как запускать программы через винду (не идеон). Очень напрягает то, что позанимавшись по его мануалам около двух недель понимаешь, что на самом деле не знаешь даже элементарных основ
Аноним 08/01/16 Птн 13:52:55 #199 №621551 
>>621547
>Чтобы делать эти задания, тебе надо установить Апач + 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
Аноним 08/01/16 Птн 14:00:18 #200 №621552 
>>621551
Да, я даунт-аутист, признаю, сижу в учебнике и даже не смотел на сам ОП-пост
Аноним 08/01/16 Птн 14:16:27 #201 №621561 
Привет, нужен совет:
есть массив $_GET, где может быть как 2 так и 50 элементов, нужно сделать определения всех элементов в переменные. Пример:
test.ru/putin?hui=1&president=da&coolman=super
нужно, чтобы было что-то isset($_GET['hui']) $hui = $_GET['hui'] else $hui = ''; И так все остальные, проблема как раз таки, что количество может быть разное и в дальнейшем расширяться
Аноним 08/01/16 Птн 14:21:15 #202 №621563 
>>621561
Попробуй
foreach($_GET as $key => $value) {
echo "GET parameter '$key' has '$value'";
}
Аноним 08/01/16 Птн 14:28:31 #203 №621568 
>>621563
думал об этом, спасибо гляну
Аноним 08/01/16 Птн 14:31:44 #204 №621569 
14522527044920.jpg
В задании о циклах с локал сайтика не могу понять куда писать о том, что если баланс кредите меньше 5000 выплата равна балансу.
Аноним 08/01/16 Птн 14:36:09 #205 №621571 
Стоит ли покупать какую-нибудь книгу по ПХП в бумажном варианте?
Аноним 08/01/16 Птн 14:42:20 #206 №621573 
>>621571
Лучше по жаваскрипту купи.
Аноним 08/01/16 Птн 14:42:27 #207 №621575 
>>621568
>isset($_GET['hui']) $hui = $_GET['hui'] else $hui = '';
Если нужно именно сохранять в переменные, то можешь использовать extract() или переменные переменных: https://secure.php.net/manual/ru/language.variables.variable.php

Вот пример второго:

Запрос: index.php?id=1&name=vasyan

Код:
<?php

foreach ($_GET as $key => $value) {
$$key = $value;
}

echo $id, $name;

>>621571
Купить можно, чтобы поддержать автора. Но мне лично удобнее читать с планшета в транспорте.
Аноним 08/01/16 Птн 14:42:53 #208 №621576 
>>621573
зачем мне жаваскрипт?
Аноним 08/01/16 Птн 14:43:14 #209 №621577 
>>621576
Ты думаешь обойдешься одним пхп?
Аноним 08/01/16 Птн 14:44:48 #210 №621578 
>>621577
:(
Аноним 08/01/16 Птн 14:57:14 #211 №621583 
14522542343560.jpg
Анон, подскажи будь добр.

Почему когда я делаю так я получаю хуй.

function __construct() {
`return new SomeClass();`
}

А когда так, то все ок

private $obj;

function __construct() {
`$this->obj = new SomeClass();`
`return $this->obj;`
}
Аноним 08/01/16 Птн 14:58:51 #212 №621584 
>>621473
>Также, если твой роутер будет создавать и вызывать контроллер, а не просто анализировать URL то фактически это паттерн FrontController.

А какие еще есть паттерны проектирования? Где можно почитать, потрогать?
Аноним 08/01/16 Птн 15:00:26 #213 №621585 
А решая задачи ОПа считается ли честным решение, если гуглить подсказки на форумах и строить на них своё решение? Или надо доходить самому до всего?
Аноним 08/01/16 Птн 15:00:55 #214 №621586 
>>621583
Пожалел глаза анона и создал на pastbin
http://pastebin.com/GHG6AaEn
Аноним 08/01/16 Птн 15:05:15 #215 №621587 
>>621533

Не рекомендую так как там от него ничего не использовать и ты только усложнишь себе жизнь, а мне - проверку.
Аноним 08/01/16 Птн 15:08:35 #216 №621590 
>>621569

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

>>621575

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


Аноним 08/01/16 Птн 15:12:37 #217 №621591 
>>621590
http://codepad.org/nm9jPcpd
Как написать проверку мне понятно, а куда и под каким оператором засунуть - нет. Пробовал с if не получилось, хотя проверка ошибок не выдала, просто все наебнулось в конце.
Аноним 08/01/16 Птн 15:15:49 #218 №621598 
>>621583

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

Оба примера кода неправильные.

>>621584

Есть паттерны работы с базой данных: https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

Почитать в книге Фаулера «patterns of enterprise application architecture» ( http://www.ozon.ru/context/detail/id/4884925/ ), она есть и на русском.

Вот тут краткий список паттернов http://design-pattern.ru/

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

>>621585

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

Аноним 08/01/16 Птн 15:16:44 #219 №621599 
>>621591

В этом коде есть ошибки, тут действительно проверку так просто не вставить. Лучше всего его переписать заново с нуля.
Аноним 08/01/16 Птн 15:18:02 #220 №621602 
>>621598
Уже настековерфловил что протупил. Тогда можно сделать так?
http://pastebin.com/qFYtMFyf
Аноним 08/01/16 Птн 15:20:12 #221 №621607 
>>621598
ОП, ответь ради Христа>>621532
Аноним 08/01/16 Птн 15:20:32 #222 №621608 
>>621532

> [0-9\\(?\\)?-? ?]
Это значит: «любой из символов: цифра, скобка, минус, знак вопроса, пробел». Ну и повторяется 10 раз. Ну то есть например это может быть 6 цифр и 4 знака, или 7 цифр и 3 знака и тд.

В квадратных скобках вопрос просто обозначает знак вопроса. Квадратные скобки значат «один из указанных тут символов».

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

Если что, проси еще подсказки.
Аноним 08/01/16 Птн 16:07:00 #223 №621651 
>>621473
https://github.com/fxsloker/Student

При запуске http://student/front/index падает с ошибкой:
Fatal error: Class 'FrontController.php' not found in /home/sloker/public_html/student/app/Router.php on line 28
Но я же подключил файл и вызвал существующий класс. Не могу понять откуда ошибка.

В правильном направлении я делаю роутер и паттерн FrontController?
Аноним 08/01/16 Птн 16:16:41 #224 №621656 
>>621380
>Позволяет: $a = [1, 2,3 ];
> 0 => array
> 1 => array
>Можно не писать тут индексы, PHP сам их поставит.
Да, действительно, Идеоне позволяет - я после этого проверил.
>Твои регулярки не сработают если например слово «сдесь» стоит в самом начале текста.
>> здела
>сработает на правильное слово «разделать медведя»
Чёрт, действительно, уже понял, как надо исправить: поставить обязательный пробел перед словом.
>> Пропущен пробел перед союзом \"а\"."
>Надо проверять пропущенную запятую а не пробел
Чёрт, я попутал, что именно нужно, это да.
>> [^\\s(а|но)]
>Это значит любой символ, кроме пробельного, скобок, букв а, н, о, вертикальной черты. В квадр. скобках многие символы теряют свое значение.
Спасибо, поправлю и запомню, это не проблема.
>> for ($i=0; $i < $possibleErrorsCount; $i++) {
>Лучше foreach
Да, сейчас заглянул впервые на страницу "Повторим?", там как раз говорится, что в массивах элементы неправильно перебирать с помощью for, лучше foreach.
>>621383
Спасибо, сохраню такой алгоритм, попробую применить, когда снова всё буду прорешивать.
Спасибо за ответы и помощь!
Аноним 08/01/16 Птн 16:22:58 #225 №621660 
>>621220
Да, то решение со вложенными массивами моё.
Я занимаюсь месяц где-то, конечно же, всё впереди. Сейчас как-то сразу начинаю представлять, как будет многое работать и что будет получаться на выходе, но ошибок и непонятного для меня всё равно ещё очень много даже в пройденных уроках.
>Очень напрягает то, что позанимавшись по его мануалам около двух недель понимаешь, что на самом деле не знаешь даже элементарных основ
Просто надо каждый код ОПа вставлять в IDE, манипулировать и изменять его, а не просто пробегать глазами и думать, что уяснил его работу.
Да и о многом речь начинает идти уже в самом конце, до этого ещё дойти надо.
Аноним 08/01/16 Птн 16:24:45 #226 №621663 
>>621547
>Очень напрягает то, что позанимавшись по его мануалам около двух недель понимаешь, что на самом деле не знаешь даже элементарных основ
Просто надо каждый код ОПа вставлять в IDE, манипулировать и изменять его, а не просто пробегать глазами и думать, что уяснил его работу.
Да и о многом речь начинает идти уже в самом конце, до этого ещё дойти надо.
Аноним 08/01/16 Птн 16:27:58 #227 №621665 
14522596785990.png
ОП!!! ОП!! Я решил задачу Клавиша shift! Как же долго я бился над нею! Прошу оценить проделанную работу:

http://ideone.com/fpRAtk

как будто подрочил, чесслово
Аноним 08/01/16 Птн 16:38:50 #228 №621670 
>>621665
ну и в чём смысл этой хуеты, сложнаа сложнаа сложна блять нихуя не понятно сложна блять
Аноним 08/01/16 Птн 16:45:18 #229 №621681 
>>621599
http://ideone.com/AVF2Sh
Как то слишком жестко для 3 урока если учишь с нуля
Аноним 08/01/16 Птн 16:48:14 #230 №621684 
>>621683
Наверно потому что про while еще ничего не рассказали, а без него ничего бы не вышло.
Аноним 08/01/16 Птн 16:49:27 #231 №621687 
>>621684
Блять вайл для пидарасов, это все знают, хотя я смею предположить что ты полный отбитый наглухо далбаёб, поэтому прошу тебя проследовать нахуй.
Аноним 08/01/16 Птн 16:50:18 #232 №621689 
>>621674
Пшёл вон холоп.

>>621681
У опа там нет while, ясно же, что анон не с нуля идёт. Был тут уже такой шутник, калькулятор-кун, мы знаем.
Аноним 08/01/16 Птн 16:52:58 #233 №621694 
блять с чего начать заебали, тоже хочу быть погромистом фрифлюсером 200к в час, чё делоть то, с вами сраться даж не интересно
Аноним 08/01/16 Птн 16:55:01 #234 №621697 
Ну алёёё вы куда разбежались то, хочу с пэхопе начать, за плечами есть опыт паскаля, какие подводные камни?
Аноним 08/01/16 Птн 16:58:00 #235 №621703 
14522614803590.png
>>621701
Аноним 08/01/16 Птн 17:35:59 #236 №621726 
>>621665
Сколько же ты её решал?
Каковы познания языка в целом?
Аноним 08/01/16 Птн 17:37:17 #237 №621728 
>>621726
Часа три сидел не отываясь. Познания языка - неделя с ОПовским сайтом
Аноним 08/01/16 Птн 17:45:13 #238 №621733 
>>621728
До этого что-то изучал, что ли? Или это ты шёл по решениям анонов?
Это не ТруЪ - использовать чужие решения, выдавая или принимая их за свои. Надо пердолиться сутками самостоятельно. Так приходит понимание.
Аноним 08/01/16 Птн 17:52:38 #239 №621736 
>>621733
Да нет, решил всё сам, я бы не был так рад, если бы копипастил чужие решения.
Аноним 08/01/16 Птн 17:53:07 #240 №621737 
>>621733
До этого ничего не изучал, одно время с питоном интересовался только, но вообще гуманитарий по профе. Вот перекатываюсь потихоньку
sage08/01/16 Птн 18:03:37 #241 №621744 
Скатывание треда в чятик для перекидывания говном без дополнительного содержания - это для /б.
Аноним 08/01/16 Птн 18:07:08 #242 №621748 
>>621744
Ну так потри. Полезные посты отвечающих на вопросы перемежаются с вербальным поносом обделённого вниманием ополоумевшего школьника.
Аноним 08/01/16 Птн 19:10:13 #243 №621775 
>>621651
https://github.com/fxsloker/Student
Все, переделал роутер. Верно ли я сделал?
Аноним 08/01/16 Птн 19:21:33 #244 №621781 
14522700933960.png
ОП! Прошу проверить также задачу Yoda speak. После первой уже полегче пошла.

http://ideone.com/jY00kx
Аноним 08/01/16 Птн 19:25:54 #245 №621786 
Переписал файлообменник почти с нуля. Заменил смарти на твиг, подключил jquery, сверстал на бутстрапе. Отрефакторил как мог, но чувствую что все равно код можно улучшить. Например с подключением аякса появилась куча веток типа if (isAjax) {...}. Некрасиво, но не знаю что с этим делать.
https://github.com/nsdvw/file-sharing

Вопросы.
1. Можно ли как-то использовать подготовленные выражения с sql оператором IN (...)? Мне нужно найти пользователей с id перечисленными в массиве.
Нашел несколько советов из гугла (либо лепить запрос руками и байндить поштучно, либо использовать трюк с mysql функциями типа find_in_set)
http://stackoverflow.com/questions/1586587/pdo-binding-values-for-mysql-in-statement/1586650#1586650
Использую второй вариант с функцией, но мало ли, вдруг у этого подхода есть недостатки (например при смене субд придется ходить и переписывать все запросы).

2. Что делать с импортированием классов? Если писать use для каждого, то это займет половину строк скрипта. Если не импортировать, а писать полный неймспейс, получаются длинные строки. Пока делаю так: импортирую только те классы, упоминание которых встречается более 1 раза. Но это же не по программерски, делать через раз без четкой системы. Может есть какой-нибудь стандарт? В php7 вроде пытались что-то с этим сделать, но вышло не очень, там всего лишь группировка по корневому неймспейсу.

3. Хотел пожаловаться на бутстрап. Оп тут проповедует семантичненькую верстку с минимумом тегов и четким разделением ответственности между css и html, а они там намешали вложенных дивов с десятками классов, пустые теги для создания иконок например, ссылки которые на самом деле кнопки и кнопки которые ссылки, ну и вообще черт знает что.
Но выглядит шикарно, ничего не скажешь.
А, в пагинаторе еще почему-то переход по заблокированной ссылке "Next" все равно происходит. То есть они конечно сделали ее серенькой, и даже ховер с зачеркнутой ручкой, только вот при клике переход происходит (на эту же страницу, тупо перезагрузка). Это так и задумано по каким-то левым соображениям (типа юзер может обидеться, почему в свободной стране ему запрещают перейти по ссылке и подать в суд?), или это не додумано, и я должен сам повесить на нее preventDefault?
Еще какая-то фигня с модальными окнами: если повесить триггер не на кнопку, как показано в доках, а на ссылке, то модальное окошко будет грузить именно то, что расположено по этой ссылке.
Мне вообще-то нужно было, чтобы при отключенном js пользователь мог спокойно перейти по ссылке на форму редактирования, расположенную на другой странице.
Наверное придется изобретать трюк: сделать и ссылку, и кнопку, кнопка скрыта по умолчанию, а js меняет их местами, то есть делает ссылку скрытой, а кнопку отображает.

4. Нужна ли пагинация на аяксе? Мы ведь фактически запрашиваем большую часть страницы? Если надо сделаю (хотя задолбался и неохота), просто не вижу особого смысла. Одно дело, когда нужно получить одну строчку, другое дело обновляется 90% страницы.

5. У слима вроде есть свои методы для работы с сессией и куками, но у меня они используются в своих классах, это что, передавать весь объект приложения чтобы сделать $app->setCookie? Почему нельзя сделать родное setcookie?

6. Статические методы в твиге как использовать? Я насоздавал себе статических хелперов, которые отдают пути к файлам например, а в твиге оказывается их теперь не так просто использовать.
Подключил функцию вида return call_user_func_array("{$class}::{$method}", $args), но вызов в представлении получается громоздкий, тем более приходится писать полное пространство имен в имени класса.

7. Урок по исключениям читал. Но не понял, как практически использовать. Да-да, в тех местах, где "что-то может случиться", ставим try{}catch(){} и в кетче а) пишем в лог (писать свой логгер? не хотет, возьму готовый), б) выводим заглушку для пользователя, форбидден для робота.
Я не понимаю, в каких местах "может что-то случиться"? Подключение к базе, ага. Это при создании объекта pdo, или он ленивый и поключится только в момент execute?
Все exec/execute завернуть в try/catch?
Дальше, там у меня работа с файлами (создание превью например, может еще что, не помню). Господи, это мне весь код придется перечитывать и думать, где там может произойти ошибка.

8. Еще там у меня пара косяков в jquery, но скорее всего мне нужно просто отдохнуть.
Например, передо мной встала задача создать дерево элементов на лету, типа $("<div><p>test</p></div>"), а затем к вложенному p применить addClass("test").
Если создавать эти элементы из строки, то все работает. Но я беру контент из шаблона <s cript type="text/template" id="template">разметка</s cript>, $($("#template").html()) вот это не работает. Впрочем в этом не уверен, нужно перепроверить. В прошлый раз я полчаса мучился с addClass(".test"), точку по привычке поставил. Так что может и зедсь моя ошибка.

Еще мне нужно в списке комментариев поставить обработчик на каждый из комментариев (на ссылку #reply). Естественно, это нужно делать на родителе. Прикол в том, что внутри этого родительского элемента лежит еще и форма отправки комментария. Так что мой preventDefault, рассчитанный на то чтобы грохнуть ссылку, убьет и сабмит формы. Форму не охота вытаскивать из дерева комментариев, она должна открываться под тем комментарием, на который юзер отвечает.
А, блин, наверное придется делать через абсолютное позиционирование.

Аноним 08/01/16 Птн 20:07:07 #246 №621820 
У слима есть встроенный логгер.
>The Slim application’s log object will write log messages to slim.errors whenever an Exception is caught or the log object is manually invoked.

$app = new \Slim\Slim([
'slim.errors' => fopen('../error.log', 'a')
]);
Продолжает писать в stderr, то есть в системный лог и в браузер, а я хочу перенаправить в error.log
Аноним 08/01/16 Птн 21:22:30 #247 №621853 
http://ideone.com/3muueO
Прошу проверить задачу, указать на недостатки кода.
Аноним 08/01/16 Птн 21:23:51 #248 №621854 
Посмотрите на облочка на этих двух сайтах:
http://aqua.dreamtown.ua
http://dreamtown.ua
Они как бы по определённому закону реагируют на действия мышки вблизи, как называет такой эффект?
Аноним 08/01/16 Птн 21:39:41 #249 №621860 
>>621854
>Посмотрите на облочка, как называет такой эффект
jquery parallax
Аноним 08/01/16 Птн 21:39:58 #250 №621861 
>>621854
Это параллакс эффект от движения мыши.
http://verstaemvse.ru/demo/jparallax/
Аноним 08/01/16 Птн 22:31:02 #251 №621878 
>>621860
>>621861
Спасибо
Аноним 08/01/16 Птн 22:36:34 #252 №621883 
>>621514
>Задача на тесты: https://gist.github.com/codedokode/8733007 - как тебе?
Отлично. За неё, думаю, и возьмусь в скором времени. Спасибо.
Раньше там Symfony не было в предлагаемых технологиях.

>Если хочешь что-то попроще - сделай клон ютуба. видео надо будет перекодировать с помощью очереди задач, сделать регистрацию, загрузку, просмотр, лайканье, дислайканье и комментирование видео.
Тоже может быть.
Аноним 09/01/16 Суб 00:18:28 #253 №621945 
>>621781
А где твоя задача на поиск и исправление ошибок в тексте?
Аноним 09/01/16 Суб 01:11:42 #254 №621966 
>>621786
503 а не 403, ну оговорился.

По поводу исключений, пробежался по коду, я так понимаю нужно обработать места где работа с базой или файлами.
Для начала ловить PDOException в месте инициализации соединения.
На php.net написано что-то странное
http://php.net/manual/ru/pdo.error-handling.php
>Метод PDO::__construct() будет всегда бросать исключение PDOException, если соединение оборвалось
Как понимать "оборвалось"? Исключение будет брошено не только в момент создания соединения, но и в любой другой момент, если произошел разрыв? При чем тут тогда конструктор? Это наверное срабатывает деструктор, если соединение теряется, а не конструктор. Но кажется суть в том, что исключение будет брошено не только при отсутствии соединения в момент инициализации, но и в любой другой момент. То есть мне не нужно его ловить на селектах например? Достаточно только new PDO обернуть в try/catch?

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

Функция move_uploaded_file вроде ничего сама не бросает. Но выдает какое-то предупреждение
> ...если файл не может быть перемещён по каким-либо причинам, никаких действий не предпринимается и move_uploaded_file() возвращает FALSE. Кроме того, отображается предупреждение.
Notice я так понял? А ошибки подавляются, если я оборачиваю в try/catch, или они живут своей жизнью, и пишутся как обычно в стандартный лог?
Ну короче тут надо бросить исключение. Непонятно правда что писать в message. Couldn't upload file :( Как-то вообще можно узнать причину, по которой не сработал move_uploaded_file? Скорее всего просто нет прав на запись, но все же.

Еще там есть генерация превью. В случае, если превью не существует, будет попытка его сгенерировать. Если и оригинального файла нет в папке upload, тогда нужно бросить исключение. Можно конечно просто поставить еще одну ветку в условии, типа если и оригинального файла нет, ну и ладно, будет пустое место с альт-текстом вместо картинки.
Но наверное это нехорошо, и лучше отслеживать такое, чтобы прочитал админ и настучал разработчикам.
У меня как раз только что произошла эта ошибка, когда клонировал свой репозиторий в другую папку ради теста установки. Все работает, а страница просмотра файла падает
c exception 'ErrorException' with message 'imagecreatefromjpeg(upload/4_374491.jpg.txt): failed to open stream: No such file or directory'
Запись в старой базе есть (мне лень было заливать новую), а файла ей соответствующего нет.
Только мне кажется тут в отличие от других случаев не нужно отдавать 503 и грустную страницу unavailable, не хватает всего лишь картинки. Так что в catch только записать в лог в этом случае.

По поводу логов я так и не понял, как писать в свой лог при помощи стандартного слимовского логгера. Вроде никак. Зато есть другой логгер от разработчиков https://github.com/codeguy/Slim-Logger
Вот тут у меня получилось записать свое сообщение, это мне нравится.
Аноним 09/01/16 Суб 02:45:04 #255 №621997 
14522967048250.jpg
Тэкс-тэкс, что тут у нас? Ещё одно топорное и неказистое решение от гуманитария? Ну наконец-то!
https://ideone.com/XYyTBQ - даже Идеоне говорит, как XYyёво быть TоBQй.
Задача на проверку и исправление ошибок.
Все замечания ОПа вроде бы учёл.
Аноним 09/01/16 Суб 10:05:55 #256 №622055 
>>621997
For не переделал в foreach.
Аноним 09/01/16 Суб 12:32:11 #257 №622088 
Какие книги по пхп полезно было бы себе купить почитать? В ОП-посте даны две: одна 2006, другая 2009 года. Староваты ведь, не?
Аноним 09/01/16 Суб 12:33:07 #258 №622089 
>>622088
Никакие.
Аноним 09/01/16 Суб 12:45:25 #259 №622092 
14523327256130.jpg
>>622055
Вот переделал, спасибо за напоминание: https://ideone.com/hZQ6Gk
Также добавил условие для текста, в котором нет ошибок.
Вопрос: как прерывать выполнение всего скрипта, когда переменная соответствует определённому условию?
У меня исправление ошибок идёт отдельным циклом с foreach, он запускается и тогда, когда в предыдущем срабатывает
else {
echo "Ошибок не найдено.";
break;}
И получается, что ошибок не найдено, а текст исправляется.
Как скрипт остановить в этом случае?
Аноним 09/01/16 Суб 12:50:58 #260 №622093 
>>622092
Сразу в голову гуманитарию приходит муть с ещё одной проверкой текста в этом последнем цикле всеми регулярками сразу, в соответствии с которой текст либо меняется, либо не меняется.
Но пока гоню от себя первую пришедшую мысль, подожду советов.
Аноним 09/01/16 Суб 12:56:11 #261 №622094 
14523333716080.png
OP, ты же вроде знаешь японский? Почему в ниппонию не перекатишься, лучше же чем в рашке?
Аноним 09/01/16 Суб 12:58:52 #262 №622095 
14523335324440.jpg
>>621997
Развивай привычку мыслить логически, вот годный учебник по логике.
Аноним 09/01/16 Суб 13:23:34 #263 №622113 
>>622094
>в рашке
ОП вряд ли мыслит подобными петушиными категориями.
Это видно и по его сайту, и по его ответам.
Аноним 09/01/16 Суб 13:24:45 #264 №622117 
Добрый день, после полугода работы в местной конторе у меня развилась стойкая неприязнь к верстке особенно на сайтах где по тз есть адаптивность. Как не скатиться в быдловерстальщики, а продолжить путь бэкенд программиста? На данный момент знаком с несколькими CMS, sql слабоват, но для уровня работы с cms пока-что хватало, js на таком уровне чтобы пользовать jquery/ajax. Так вот, в какую сторону дальше смотреть?
Аноним 09/01/16 Суб 13:29:28 #265 №622122 
>>622117
Ты это я, бро. Я тоже спустя полгода продолжил выполнять задачи ОПа. И тоже работаю в быдлоконторе.
Аноним 09/01/16 Суб 13:33:00 #266 №622126 
>>622122
Наверное как и мне ещё и зп маленькую платят, при том что приходится тянуть по несколько проектов самому?
Аноним 09/01/16 Суб 13:39:20 #267 №622132 
>>622126
Я как на конвеере. Мне дают заказ, я и дизайн спизжу и верстку сделаю, и заполню. И получаю за это 30к. И все это быстро сделать.
Аноним 09/01/16 Суб 13:42:49 #268 №622135 
>>622132
Тоже такое ощущение, если по началу я делал по проекту в месяц, и сильно нервничал по поводу того, что я не успеваю что-то, на выходных иногда работал и допоздна засиживался. Сейчас же уже какой-то похуизм выработался когда висит по 3-4 сайта на мне и дедлайн близко - всё равно стараюсь не сидеть дольше положенного, и голову не забиваю этим. Хотя иногда бывают интересные задачи, но в основном чувствую что скатывается в рутину, и всё больше дают сайтов под верстку+настройку функционала по мелочи. Грусть.
Аноним 09/01/16 Суб 13:50:33 #269 №622146 
>>622113
Ну ок, в россии. Климат и уровень сервиса лучше, еда лучше, ЗП тоже выше..
Аноним 09/01/16 Суб 13:53:55 #270 №622151 
>>622146
Поддвачну. Залипаю на ролики этого анона https://www.youtube.com/channel/UCTfdoffYyeLL2_8wtMbkLDA
(он, кстати, переодически постит в автаче), но боюсь пхп-макаке о таком и мечтать нельзя.
Аноним 09/01/16 Суб 13:54:55 #271 №622153 
>>622151
Кстати, тоже анимешник, как и ОП.
Аноним 09/01/16 Суб 15:10:41 #272 №622205 
>>622151
сша - говно, у вована(vovanjapan - видеоблогер рассказывающий о японии) есть запись с русским ученым который жил в японии а потом переехал в сша, тот говорит что в сша в общем примерно как в россии, но не такая разруха.
>боюсь пхп-макаке о таком и мечтать нельзя
PHP-developer'у можно как раз таки, вон Шамов(тоже блог о японии) вообще сисадмином работает, а это имхо уровень ниже, если сравнивать с грамотным разработчиком.
Аноним 09/01/16 Суб 16:17:48 #273 №622257 
>>622088
бамп вопросу. И кстати, где ОП?
Аноним 09/01/16 Суб 16:45:03 #274 №622273 
14523471037180.jpg
>>622093
Ну вот то, что и пришло тогда в голову: https://ideone.com/b7y9Pf
К ОПобоязни добавилась ещё и говнокодобоязнь, хотя тут всё изначально связано.

Как такого избежать, чтобы не лепить дополнительную проверку регуляркой для прерывания скрипта в середине?
Аноним 09/01/16 Суб 16:51:01 #275 №622277 
>>622257
Мануал на php.net - по-любому.
А так читать просто для выяснения основных принципов, синтаксиса и т.п.
Аноним 09/01/16 Суб 17:19:47 #276 №622288 
>>619873 (OP)
ОП, проверь еще одну, а я пока задачку про кратчайший путь исправлю.
http://ideone.com/vJPg7z
Надеюсь ты закроешь глаза на то, что я не сделал оформление таблицей, уж очень лень
Аноним 09/01/16 Суб 17:31:43 #277 №622296 
Ечть ли где почитать коммерческое применение паттернов? Теория и сферические примеры это все заебись, но данный момент у меня нет задач, где я осознанно мог применить что-то сложнее Синглтона. А в сети вместо реальных кейсов использования паттернов в работе нет. Уже возникло ощущение, что это идея фикс, о которой говорят только на хабре и спрашиввют на собеседованиях, чтобы потешить чсв, а по факту все говнодят. Ни разу не встретил и не читал такого: "На работе у нас возникла такая то задача, мы применили такие то паттерны, и это принесло профиты."
Аноним 09/01/16 Суб 17:32:32 #278 №622297 
Какие перспективы пхп-программиста? Можно ли выбиться в люди, переехать заграницу (в будущем?) или это чистый макакинг за 40 к в месяц без будущего и надежд?
Аноним 09/01/16 Суб 17:33:36 #279 №622298 
>>621786

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

> Можно ли как-то использовать подготовленные выражения с sql оператором IN (...)?
Плейсхолдеров для массивов в PDO нет. Бери библиотеку где они есть (может doctrine dbal? не уверен) или пиши свою функцию для этого. Можешь поискать библиотеки-обертки для PDO, сравнить, написать тут про то какая удобнее.

> 2. Что делать с импортированием классов?
Я думаю проще всего писать use. У меня в sublime плагин какой-то есть, PHP helper или PHP companion, он сам вставляет use при нажатии F5 на имени класса.

На практике больше 10-15 импортов у тебя не будет. Если больше то возникают вопросы, а зачем тебе в одном файле столько классов.

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

> почему-то переход по заблокированной ссылке "Next" все равно происходит
Потому что в HTML нельзя запретить ссылку (инпуты - пожалуйста, а ссылку нет). Надо просто не выводить там тег a или выводить span.
Яваскрипт тут не требуется.

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

> Мне вообще-то нужно было, чтобы при отключенном js пользователь мог спокойно перейти по ссылке на форму редактирования, расположенную на другой странице.
Правильная мысль. И я надеюсь что и обычная и аяксовая форма у тебя обрабатывается одним кодом. И ты также сделал HTML5 валидацию.

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

> 4. Нужна ли пагинация на аяксе?
Мне кажется, нет. Ладно если бы это была какая-то часто используемая функция, но в общем случае нет смысла это делать.

> Если надо сделаю (хотя задолбался и неохота)
Это можно как-то автоматизировать, типа ты указываешь на ссылке свойство data-update="some-id" и он обновляет этот id на странице (а при открытии в новой вкладке или отсутсвии JS открывается обычная страница). И так можно «аяксизировать» любу. ссылку. Гитхаб по моему так делает, и есть готовые плагины, но в них надо разбираться а не вешать бездумно.

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

> 5. У слима вроде есть свои методы для работы с сессией и куками, но у меня они используются в своих классах, это что, передавать весь объект приложения чтобы сделать $app->setCookie?
Там есть 2 объекта для чтения и записи кук, по моему $app->request->cookies, $app->response->cookies - можно передавать только нужный.

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

> 6. Статические методы в твиге как использовать?
Можно создать функцию в твиге:

http://twig.sensiolabs.org/doc/advanced.html#functions
http://twig.sensiolabs.org/doc/advanced.html#filters

(почитай вообще всю эту страницу)

или можно переделать на нестатический.







Аноним 09/01/16 Суб 17:37:27 #280 №622300 
>>622297
Удваиваю. Знающие, подскажите. Неохота осваивать PHP, чтобы пилить вордпрессы до конца жизни.
Аноним 09/01/16 Суб 17:47:54 #281 №622304 
Кстати, ОП, пока ты здесь, хотелось бы спросить насчет:
>>621513
>Загрузку файла наверно надо вынести в отдельные методы

Я ведь уже делал загрузку файла в методе класса файла, ты сказал, что этот код должен быть в контроллере, а не в модели. Так в какие методы её выносить? Хелпер это ведь тоже модель.
Аноним 09/01/16 Суб 17:51:13 #282 №622308 
>>622304
http://design-pattern.ru/patterns/service-layer.html
http://www.sitepoint.com/an-introduction-to-services/
Аноним 09/01/16 Суб 17:56:13 #283 №622314 
Какова длинна поля txt в mySQL. Могу я туда 3 томник войны и мира засунуть?
Аноним 09/01/16 Суб 18:05:11 #284 №622318 
>>621786

> 7. Урок по исключениям читал. Но не понял, как практически использовать.
При исключении выбрасываешь throw. Если тебе надо ловить это исключение - делаешь свой класс и ловишь его, но в 99% случаев это не требуется. В 99% случаев catch у тебя один на всю программу. Вот еще паста:

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

Как надо обрабатывать исключения (и как делает Слим по умолчанию):

- записать информацию в лог
- показать пользователю заглушку
- на заглушке выставить HTTP 503 код ответа для роботов
- на компьютере разработчика (при display_errors = 1 или debug=true) показать подробности и стектрейс

Если как в плохих учебниках сделать catch + echo то:

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

Как будет если просто не ловить исключение:

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

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

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

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

Задавай вопросы еще если что.

> Это при создании объекта pdo, или он ленивый и поключится только в момент execute?
Не знаю, проверь создав объект, сделав sleep, посмотри в базе процессы через SHOW fuLL PROCESSLIST, есть соединение или нет. Или программой WireShark если ты под виндой.

> Я не понимаю, в каких местах "может что-то случиться"?
Хочешь прочитать конфиг, а его нет. Или ждешь что на вход функции придет число больше нуля, а пришло меньше нуля. Или отпарвляешь запрос к АПИ, а приходит в ответ код HTTP 500.

> Все exec/execute завернуть в try/catch
Исключения придумывались как раз для того чтобы этого не требовалось.

> Дальше, там у меня работа с файлами (создание превью например, может еще что, не помню). Господи, это мне весь код придется перечитывать и думать, где там может произойти ошибка.
Слим по умолчанию превращает варнинги и нотисы в исключения. Но код перечитать возможно стоит.

> $($("#template").html()) вот это не работает. В
Посмотри что выведет $('#tpl').html(). Возможно, надо взять html(), преобразовать как тебе надо и вставить на страницу через $('.div').html(html);

jQuery по моему воспринимает строку как hTML только если она начинается с < (иначе он считает ее селектором).

Я тебе не советую полагаться вообще на это автоопределение типа, это не надежно. Там есть готовая функция именно для HTML, http://api.jquery.com/jquery.parsehtml/

> Еще мне нужно в списке комментариев поставить обработчик на каждый из комментариев (на ссылку #reply). Естественно, это нужно делать на родителе.
$.on по моему

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

> А, блин, наверное придется делать через абсолютное позиционирование.
не стоит. Стоит внимательно изучить возможности jquery по установке обработчиков. Также, если есть время и желание, можешь взять наши задачи на DOM и решить их с использованием jQuery.

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

Код особо не смотрел пока, вот что бросается:

https://github.com/nsdvw/file-sharing/blob/master/web/js/comment-ajax.js#L4
> var errorBox = $("#commentForm .text-danger");
Мне не очень нравится селетктор. Там написано: «блоки с ошибкой в форме комментариев». Но что если верстальщик поменяет стиль например с text-danger на text-info? ЧТо если он добавит позже еще такой блок в форму? Это явно хрупкий код, меняя верстку ты ломаешь работу JS скрипта.

Я могу придумать такие способы решения:

- использование префикса js- для классов/id которые нужны не в верстке, а в скрипте. Вроде так делают на гитхабе- глянь-ка код страницы.
- использование data атрибутов
- использование более явного названия класса: #commentForm form-error-message

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

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

> https://github.com/nsdvw/file-sharing/blob/master/web/js/comment-ajax.js#L8
> var form = document.forms.comment_form;
Не стоит это использовать, это древний способ, лучше использовать jQuery тут.

> var formData = new FormData(form);
В HTML4-браузерах нет FormData, а preventDefault ты уже вызвал. В них форма не будет работать даже в обычном режиме.

> var replyID = form.querySelector(".replyID").value;
Не стоит смешивать поиск через jQuery и DOM. Также, элементы формы удобнее всего искать по имени, name, а не по классу.

> window.location.pathname.split("/").pop()
Это надо сделать функцией, и я кстати не понимаю, зачем это. Если это id файла то его надо передавать в яваскрипт явно, а не вытаскивать такими вот хаками. Что если мы разместим форму на странице с другим URL? Все сломается.

Все входные переменные надо передавать явно из PHP через тег скрипт на странице и json_encode:

var fileId = {{ fileId | json_encode | raw }};

Предлагаю тебе самому подумать почему и зачем тут json_encode и raw.

> $(function () {
Возможно лучше использовать явную инициализацию, вызывая функцию инициализации из тела страницы. По моему так лучше, и видно где функция инициализации, и запускается только то что нужно на странице.

Форму или кнопки отправки надо блокировать на время отправки запроса.

Также, тут явно некоторые вещи можно вынести в функции, а не писать весь JS сплошной стеной.

также, у тебя в JS коде нет приема ошибок от сервера. как серверу сообщить об ошибке?

Также, мне не нравится что по коду много раз разбросан селектор "#commentForm. Лучше наверно получить этот объект один раз в начале кода.

Не уверен, нужен ли шаблон комментария в JS коде. Тут нет дублирования серверного шаблона? И если уж делать шаблон, то делать его как шаблон, а не вот так:

$(".media-heading", template).text(login);
$(".comment-text", template).text(comment.contents);

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

> errorBox.text("Message is empty!");
Это лучше вынести в функцию вроде showError()

Аноним 09/01/16 Суб 18:06:28 #285 №622319 
>>621786

> function refreshCaptcha() {
> $("#captcha-img").attr("src", "/image/captcha_generator.php");
> }
Обновление картинки может занять много времени. При этом пользователь будет видеть старую картинку и может попытаться ее разгадать. подумай как этого избежать. Также, надо очищать поле с кодом. также, нужна кнопка явного обновления капчи.
Аноним 09/01/16 Суб 18:16:41 #286 №622324 
>>622314
http://www.php.su/mysql/?fields
TINYTEXT - Максимальная длина 255 символов
TEXT - Максимальная длина 65535 символов (64 Кб)
MEDIUMTEXT - Максимальная длина 16 777 215 символов
LONGTEXT - Максимальная длина 4 294 967 295 символов
Аноним 09/01/16 Суб 18:17:42 #287 №622327 
>>621775
https://github.com/fxsloker/Student

ОП, я обновил код немного. Посмотри на роутер. И я создал сущность. А еще я подумал, если у меня нужно работать с одной моделью почему бы и не использовать только один контроллер? Можно так и правильно ли так?
Аноним 09/01/16 Суб 18:23:57 #288 №622332 
>>621781
>>621665
ОП, ты тут? Посмотри мои решения, пожалуйста, очень жду комментариев
Аноним 09/01/16 Суб 18:43:07 #289 №622345 
>>621966

Надо смотреть английскую версию.
> Note:
> PDO::__construct() will always throw a PDOException if the connection fails regardless of which PDO::ATTR_ERRMODE is currently set. Uncaught Exceptions are fatal.

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

> Это наверное срабатывает деструктор, если соединение теряется, а не конструктор.
Нет, деструктор это при удалении объекта сборщиком мусора или счетчиком ссылок.

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

> Достаточно только new PDO обернуть в try/catch?
Такой try/catch поймает только ошибки при создании объекта. Но тебе это не надо.

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

> Функция move_uploaded_file вроде ничего сама не бросает. Но выдает какое-то предупреждение
Слим преобразует PHP предупреждения в исключения, по моему вот в такие: http://php.net/manual/ru/class.errorexception.php

И правильно делает. Это принцип fail fast: http://habrahabr.ru/post/218325/ - он экономит твое время.

> А ошибки подавляются, если я оборачиваю в try/catch, или они живут своей жизнью, и пишутся как обычно в стандартный лог?
По умолчанию ошибки и try/catch вобще никак не связаны. Но Слим преобразует ошибки в исключения. Но ты не должен пытаться их ловить, так как они говорят об ошибке в коде программы и что надо ее исправить.

Вообще ловить исключения надо очень редко. И обычно их ловят только для того, чтобы что-то отменить или освододить и выкинуть исключение дальше. ну например, откатить выполнявшуюся транзацию. Вот пример кода, функция. которая выполняет переданный код внутри транзакции: https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Connection.php#L1086

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

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

> Непонятно правда что писать в message. Couldn't upload file :( Как-то вообще можно узнать причину, по которой не сработал move_uploaded_file? Скорее всего просто нет прав на запись, но все же.
Вообще через http://php.net/manual/ru/function.error-get-last.php но в данном случае Слим сам создаст ислючение из варнинга и запишет в него причину.

Вот это место в Слиме:

https://github.com/slimphp/Slim/blob/2.x/Slim/Slim.php#L1293
https://github.com/slimphp/Slim/blob/2.x/Slim/Slim.php#L1406

Изучи этот код и мануал по set_error_handler.

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

> По поводу логов я так и не понял, как писать в свой лог при помощи стандартного слимовского логгера.
Код/документацию смотрел?

Аноним 09/01/16 Суб 18:43:53 #290 №622346 
>>622094

Для начала неплохо бы попасть туда в качестве туриста.
Аноним 09/01/16 Суб 18:45:48 #291 №622347 
>>622296

Возьми фреймворк типа Симфони или Юи 2 и ищи их в его коде.
Аноним 09/01/16 Суб 18:48:36 #292 №622349 
>>622304

Я наверно сказал из-за того что ты работу с FILES или POST в класс засунул. Это должно быть в index.php наверно. Ну идея примерно такая:

if (форма запощена) {
$file = $helper->validateFile(.....);

if (ошибок ент) {
$helper->saveFile($file);
redirect...;
}
}

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

Аноним 09/01/16 Суб 18:52:35 #293 №622351 
>>622349
А метод валидации для чего? У _FILES ведь встроенный массив ошибок.
Аноним 09/01/16 Суб 19:11:01 #294 №622366 
>>622351

как раз проверить что там нет ошибки, что размер разрешенный, может потом еще что-то добавится.
Аноним 09/01/16 Суб 19:13:42 #295 №622370 
>>622366
Сейчас тоже проверяется, обчным ифом, а если ошибка есть - выбрасывается исключение с кодом ошибки и текстом.
Аноним 09/01/16 Суб 19:20:03 #296 №622374 
>>622095
Шта?
С логикой проблем у меня нет. Мои проблемы в том, что на информатике у нас не преподавали языки, у меня абсолютно нет опыта в таком.
Когда ты знаешь, что нужно сделать, но не вполне понимаешь, как это нужно сделать, - это не с логикой проблемы.
Аноним 09/01/16 Суб 19:35:34 #297 №622382 
>>622374
Какой у тебя бэкграунд вообщелвл, образование? Часто вижу тебя в треде
Аноним 09/01/16 Суб 19:36:09 #298 №622383 
Допустим есть класс для работы с imap (класс 1).
Заросы выполнять буду через класс для работы с сокетами (класс 2).
Чтобы не прописывать в классе 1 методы класса 2 я решил что можно передать эти методы как параметры в конструкторе а дальше дергать их когда нужно. Как это реализовать?
Аноним 09/01/16 Суб 19:53:40 #299 №622397 
>>622382
31 год, филологическое образование, работаю редактором в издательстве.
HTML, CSS Wordpress, SEO.
Аноним 09/01/16 Суб 19:53:56 #300 №622398 
>>622397
,
Аноним 09/01/16 Суб 19:54:56 #301 №622400 
>>622397
Интересно. Зачем пыху учишь?
Аноним 09/01/16 Суб 19:58:47 #302 №622403 
Ну вот я немного научился верстать из ПСД и натягивать потом всё это на вордпресс, что теперь делать?
Аноним 09/01/16 Суб 20:00:22 #303 №622404 
>>622403
работу ищи
Аноним 09/01/16 Суб 20:04:01 #304 №622407 
>>622346
В /ja описано как, если коротко то надо 300к рублей
Аноним 09/01/16 Суб 20:10:55 #305 №622411 
>>622407
без образования и только с английским - реально? есть 300к и даже больше
Аноним 09/01/16 Суб 20:33:47 #306 №622428 
14523608277790.jpg
ОП! Сделал задачку Я у мамы калькулятор. Буду ждать комментариев по решению а также по двум предыдущим

http://ideone.com/PlYb5t
Аноним 09/01/16 Суб 20:38:13 #307 №622437 
14523610935640.jpg
Дали дамп базы, а там encoding ебанутый. Что делать? Вся кириллица в иероглифах.
Эта база использовалась с какой-то самопальной CMS, которая таки отоброжала русский текст нормально. Я в php профан, но вангую что есть какая то функция init_i18_new_kirilica_mb_init(true) которую нужно вызывать в начале скрипта, и все будет ок.
Аноним 09/01/16 Суб 20:45:44 #308 №622445 
Хз, но set_charset("utf8") после коннекта с бд, iconv("что-то", "UTF-8", $str), mb_convert_encoding($str, "UTF-8", "что-то"). Дамп развернуть и в phpMyAdmin сменить кодировку.
Аноним 09/01/16 Суб 20:46:24 #309 №622447 
Загуглишь как и что юзается вообщем
Аноним 09/01/16 Суб 20:51:12 #310 №622450 
ну и у файла тоже можно, есть онлайн конветоры итп.
Аноним 09/01/16 Суб 21:03:53 #311 №622461 
>>622445
>>622447
>>622450
Спасибо, но почему ты не используешь ссылки?
Аноним 09/01/16 Суб 21:07:17 #312 №622467 
>>622461

Я тут в первый раз. Не сориентировался куда тыкать.
Помогло? Или спасибо за варианты?
Аноним 09/01/16 Суб 21:27:10 #313 №622498 
>>622400
Для собственного проекта.
Ровно год назад появлялся в этом треде, спрашивал у ОПа советов мудрых, как быть.
ОП посоветовал изучать РНР, нанимать на фрилансе людей для сложных моментов.
Я внял только частично: решил полностью заказать на фрилансе весь проект, а вместо изучения просто расписывал ТЗ для создания проекта.
В итоге фрилансеры не справились с задачами (либо затягивали, либо откровенно обманывали), надоело это терпеть, решил всё изучить самостоятельно.
Теперь думаю изучить учебник ОПа, всё далее из ОП-поста, затем фреймворк Yii2, а потом заказывать отдельные элементы и системы для проекта, самостоятельно их интегрировать в него.
Такие вот дела.
Это уже сталь принципиальным, потому что потрачено много времени, какие-то деньги, многие оказались втянуты в него, имеются большие перспективы.
Аноним 09/01/16 Суб 21:29:01 #314 №622501 
>>622498
на работу возьмёшь?
Аноним 09/01/16 Суб 21:47:27 #315 №622518 
>>622498
А меня возьмёшь на работу?
Аноним 09/01/16 Суб 21:47:47 #316 №622519 
>>622501
Я когда подтяну знания, то многих знакомых анончиков приглашу, там работы много будет разнообразной.
И тут тоже буду искать людей, это точно.
Аноним 09/01/16 Суб 21:52:22 #317 №622520 
>>622518
Один фрилансер мне месяц канифолил мозги с модулем для регистрации - туда надо было интегрировать пять самых популярных социальных сетей, а также выбор группы пользователей при регистрации, к которой регистрирующийся себя относит, по желанию ввод личных данных сразу (номера телефона, имя-фамилии).
В итоге сделал простую интеграцию модуля от uLogin, попытался сдать в таком виде...
А ты ответственен ли, анончик?
Аноним 09/01/16 Суб 22:03:28 #318 №622527 
>>622519
>Нанял толпу быдлокодеров за гроши
>Внезапно кинули/не справились
> тут тоже буду искать людей, это точно
Необучаемый.
Аноним 09/01/16 Суб 22:08:07 #319 №622530 
>>622520
Зря выбрал PHP туда ли ты зашел, питушок, поведают мне, но ничего личного, пацаны. Бери питон, там средний исполнитель в разы адекватнее. Плати по часам и с трекером. Очень часто бывает, что исполнитель лажает с определением сроков и ему становится понятно, что проще кинуть тебя, чем доделывать; плюс при фикседе есть мотивация сделать тяп-ляп и сдать говно. Будь готов, что названный срок будет проебан в 3 раза при оценке твоего бюджета и рейта, фактическую оплату делай раз в две недели-месяц, работа должна вестись в виде ежедневных коммитов в репозиторий, который ты можешь чекать - чтобы не слушать "бля, я все сделал, но в провайдера попала молния и я не могу выложить" с последующим сливом через неделю.
И все, неадекватов ты быстро отсеешь. Но и самому придется попотеть, контролируя процесс.
Аноним 09/01/16 Суб 22:08:33 #320 №622532 
>>622527
На техподдержку многие сойдут.
На реализацию задумок - будет видно.
Аноним 09/01/16 Суб 22:10:58 #321 №622533 
Сап друзья, помоги совладать с вашей этой PHP и её средой интерпретации. Собсна суть такова, есть одна кодировка и она не даёт мне спать уже сотни часов, а именно КАЗАХСКАЯ. Я не могу использовать более менее вменяемую кодировку для правильного отображения работая с файловой системой, сами попробуйте.
Допустим есть файл ғғғғғғғғғғғғ.hui мне нужно его записать в директорию или, например, что в принципе не важно считать имя этого файла, я получаю полную лабуду вида Т“Т“Т“Т“Т“Т“Т“Т“Т“Т“Т“Т“.hui

использовал при этом такие функции как scandir и iconv
Аноним 09/01/16 Суб 22:11:39 #322 №622534 
>>622530
Спасибо, братишка, толковые советы.
Питон советовали многие, да, но я как-то два года назад уже пробовал читать книгу по РНР, поэтому решил и продолжить. К тому же, часть уже реализована, в которой надо разбираться и которую надо улучшать, а там всё на РНР+JS.
>Но и самому придется попотеть, контролируя процесс.
Я уже втянулся, мне это нравится.
Аноним 09/01/16 Суб 22:44:25 #323 №622563 
>>622411
я имел ввиду туристом, эта сумма на 2-3 недели, с английским там все хуево.
Аноним 09/01/16 Суб 23:04:17 #324 №622572 
>>622404
Хотел бы попробовать как-то зарабатывать на фрилансе вначале, но никак не могу решиться попробовать. Кстати, тут говорят о какой-то работе, нужно что то кому то? Может дадите мне попробовать?
Аноним 09/01/16 Суб 23:07:26 #325 №622575 
>>622572
Сделай мне сайт по инфе из вебархива. Только вордпресс не нужен, статики и бутстрэпа достаточно.
Аноним 09/01/16 Суб 23:08:15 #326 №622576 
>>622146
Само собой уровень России и Японии даже сравнивать нельзя, как и России и США и других подобных стран. Однако, айтишники сейчас практически по всему миру на одинаковом уровне, заработки если смотреть по ППС сравнимы. Ну что касательно других специальностей, то конечно всё совсем иначе.
Мимокрокодил
Аноним 09/01/16 Суб 23:08:38 #327 №622577 
>>622575
Что должен делать такой сайт?
Аноним 09/01/16 Суб 23:09:54 #328 №622579 
>>622577
Ничего, у меня когда-то спиздили домен, нужно сайт восстановить и сделать стильно-модно-молодежно, а не как делал я на таблицах в 2007.
Аноним 09/01/16 Суб 23:11:22 #329 №622580 
>>622576
В Японии для тебя карьерный рост заказан.
Аноним 09/01/16 Суб 23:13:17 #330 №622582 
>>622579
А, понял, я думал нужен какой-то сайт, который будет делать что то с информацией полученной из сайта вебархива. Я не умею в дизайн, могу только немного в вёрстку и само собой ПХП. Где можно посмотреть информацию о твоём сайте?
Аноним 09/01/16 Суб 23:15:23 #331 №622584 
>>622520
Да, тут все аноны ответственные. Я в том числе.
Аноним 09/01/16 Суб 23:16:24 #332 №622585 
>>622582
Мне переверстать нужно как раз, с таблиц на бутстрэп. Мыльцо дай, какой смысл этот тут обсуждать.
Аноним 09/01/16 Суб 23:18:20 #333 №622588 
>>622585
Пиши сюда [email protected]
Аноним 09/01/16 Суб 23:31:23 #334 №622592 
>>622519
>знакомых анончиков
как вы это делаете? тут же анонимно всё, я один тут годами сижу и никого не знаю лично?
Аноним 09/01/16 Суб 23:44:48 #335 №622596 
>>622592
> я один тут годами сижу и никого не знаю лично?

Да.
Аноним 09/01/16 Суб 23:51:05 #336 №622600 
>>622596
>как вы это делаете?
Аноним 09/01/16 Суб 23:55:09 #337 №622601 
>>622600
Анкетки в соц постят, а потом по контактам или скайпикам всем табуном шароебятся по интересам. Очевидно же.
Аноним 10/01/16 Вск 01:00:34 #338 №622638 
>>622498

Ты правильно решил. Если ты сам не разбираешься в каких-то технических вещах то не можешь эффективно управлять фрилансерами. Чтобы работать с фрилансерами надо либо самому быть специалистом, либо иметь лояльного специалиста который будет ими управлять. Иначе тебе навешают лапши на уши. Потому да, тебе стоит наверно научиться самому делать приложения. Проходи быстрее учебник и берись за студентов и файлообменник. Можешь его попробовать сразу на Юи делать, хотя конечно для маленького проекта Слим лучше бы подошел.
Аноним 10/01/16 Вск 01:01:58 #339 №622640 
>>622527

Его проблема в том что он не может правильно оценить квалификацию фрилансера и предлагаемые решения. Например он может не знать что задача решается готовым модулем и согласится на написание велосипеда.
Аноним 10/01/16 Вск 01:04:09 #340 №622641 
>>622533

Какая ОС? Если винда то с каким языком? Если казахский то какие у вас кодировки используются? 1251 (кириллица) как у нас или что-то свое?

Под виндой в функции работы с файлами в PHP надо передавать данные в виндовой кодировке. Если ты используешь utf-8 то имена файлов для функций PHP надо перекодировать в виндокодировку. И соответственно если ты читаешь список файлов с диска то надо перекодировать обратно.

Под линуксом и маком файловые функции работают обычно в utf-8, ничего делать не требуется.
Аноним 10/01/16 Вск 01:05:04 #341 №622643 
>>622411

Что-то дороговато, мне кажется можно экономней найти варианты.
Аноним 10/01/16 Вск 01:14:54 #342 №622646 
Решал тут задачу и для меня всё выглядит нормально, но $newAmount не высчитывается больше одного раза, поэтому прошу помочь.
Айдион http://ideone.com/h1bjyG
Аноним 10/01/16 Вск 01:19:59 #343 №622647 
>>622646
Почему не высчитывается? Высчитывается. Только ее составные части - $amountM * $percent не меняются в цикле.
мимо не пишу на пхп
Аноним 10/01/16 Вск 02:47:37 #344 №622670 
>>622298
>поискать библиотеки-обертки для PDO, сравнить
Я не могу сравнивать, из-за отсутствия опыта непонятно на что ориентироваться, по каким критериям сравнивать. Могу искать только под конкретную задачу.
Ну вот например тут понадобилось подставлять массивы в запросы с условием IN.

Да, у доктрины, вернее ее компонента (?) dbal (abstract level) имеются такие средства.
http://doctrine-orm.readthedocs.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html#list-of-parameters-conversion
Но я не могу прикинуть, насколько большая эта библиотека и целесообразно ли ее подключать ради одного проблемного запроса. Лучше напишу свою функцию/метод, где запрос будет слепливаться в цикле и там же привязать параметры.

Я так понимаю доктрина это королева orm, как симфони среди фреймворков, и любой ее компонент мощный самостоятельный пакет.
Попробуем поискать чего-нибудь помельче.

FluentPDO приглянулась. Простая, быстрая (хотя так все говорят), и с широкими возможностями. Нашу проблему array binding решает:
https://github.com/lichtner/fluentpdo/blob/0092fc16dbef345a61ce2c448f98f75c99886b30/tests/07-where-column-array.phpt#L8
И автор оперативно реагирует: в issues клянчили 'not in' условие, запушил спустя неделю https://github.com/lichtner/fluentpdo/issues/81
Добавил в закладки, но сейчас она мне особо ни к чему.

Совсем низкоуровневая библиотека:
https://github.com/auraphp/Aura.Sql#array-quoting
Просто квотят каждый элемент массива, потом склеивают:
https://github.com/auraphp/Aura.Sql/blob/2.x/src/ExtendedPdo.php#L840
Наверное, перепишу себе этот кусочек.

>Потому что в HTML нельзя запретить ссылку (инпуты - пожалуйста, а ссылку нет). Надо просто не выводить там тег a или выводить span.
Вложенный спан помог. Вообще выбросить ненужный вложенный тег нельзя, ломается селектор
https://github.com/twbs/bootstrap/blob/master/dist/css/bootstrap.css#L4724
Можно конечно сверху прописать свое правило, чтобы избавиться от вложенного тега, но смысл захламлять css ради чистки html. Ну и вообще раз используем фреймворк, то придется мириться с его недостатками.

Может есть более кошерный фреймворк, кроме бутстрапа? Чтобы была нормальная структура html и не было этой мешанины типа class class-another class-abc class-class-class
И еще чтобы была встроенная валидация форм и можно было грабить корованы.
Аноним 10/01/16 Вск 02:52:31 #345 №622676 
>>622298
>Можно создать функцию в твиге для вызова статических методов
Я так и сделал
function ($class, $method, array $args) {
return call_user_func_array("{$class}::{$method}", $args);
}

Но получается каша в представлении
<a class="btn btn-success"
href="{{callStaticMethod(
'\\FileSharing\\Helper\\ViewHelper',
'getDownLoadUrl',
[file.id, file.name])}}"
id="downloadLink">download
</a>

Аноним 10/01/16 Вск 03:28:12 #346 №622691 
Есть еще библиотека чисто под слим
https://github.com/FaaPz/Slim-PDO/blob/master/docs/Clause/WHERE.md
Хотя если честно не понял, чем она к слиму привязана, кроме неймспейса? Обычный квери билдер.

Тоже поддерживает множество условий типа whereIn('id', [1,2,3]);
Более сложный код (сложный в плане кол-ва классов и методов), чем у индусов из aura, которые просто квотят элементы массива, но реально используют плейсхолдеры.

Итого:
1. Заквотить в цикле элементы массива, как у aura
или
2. Юзать Slim-PDO с плейсхолдерами-вопросиками?
Аноним 10/01/16 Вск 04:47:14 #347 №622739 
>>622298
> Еще какая-то фигня с модальными окнами: если повесить триггер не на кнопку, как показано в доках, а на ссылке, то модальное окошко будет грузить именно то, что расположено по этой ссылке.
> Почитай документацию или исходный код плагина. Может есть опция или можно что-то дописать.
Ну да, он вроде воспринимает наличие атрибута href как включение опции remote, то есть будет игнорироваться data-target и контент браться по ссылке.
http://getbootstrap.com/javascript/#modals-options
Как отключить эту парашу не написано.

В исходном коде не понимаю, вроде оно должно быть отключено по умолчанию?
https://github.com/twbs/bootstrap/blob/master/dist/js/bootstrap.js#L1236
Кажется вот эта фигня включает:
> remote: !/#/.test(href) && href
Ну и как от этого избавиться?

Короче я тогда уберу все эти дата-атрибуты с ссылки и вызову modal('trigger') при попытке перехода
$("#modal-trigger").on("click", function (event) {
event.preventDefault();
$("#modalForms").modal('toggle');
});

Только наверное не onclick, а что-то другое. Что из этого списка сработает, если ссылка получит фокус табом и затем нажать enter? http://www.w3schools.com/jsref/dom_obj_event.asp
Аноним 10/01/16 Вск 10:28:38 #348 №622820 
14524109190240.jpg
Окей, вкатываюсь в PHP.

Выполнил кубики http://ideone.com/61yg3b
И циклы http://ideone.com/1pXwxA

Примеры не смотрел, читал теорию и задание.
Сейчас буду массивы изучать.
Аноним 10/01/16 Вск 10:35:44 #349 №622824 
>>622592
Есть же конфа в Телеграме, бывали конфы в Скайпе, в ВК. Вот анончик оставил e-mail выше - вот так и знакомимся.

>>622638
Да, всё верно, братишка, столкнулся с подобным как раз.
Мне ещё, наоборот, пытаются подсунуть готовые решения по цене написанных с нуля. Вот как с тем модулем регистрации. А то, что там нет ничего из ТЗ, кроме собственно связи профиля в соцсети с личным кабинетом, - не беспокоит.
Натолкнулся на многое за этот год на фрилансах.
>>622640
Связывался с фрилансерами, которые имели кучу положительных отзывов и рейты около 1к рублей за час, были зарегистрированы и по 10 лет, - всё равно. Поэтому иногда так и хочется сказать сомневающимся анончикам, что фриланс - это совсем не так страшно, когда ты исполнитель, но не хочется плодить безответственных фрилансеров.
Аноним 10/01/16 Вск 10:43:51 #350 №622827 
>>622646
Неверно то, что у тебя переменная с общей суммой не меняется.
Думаю, одно это должно помочь.
>>622647
Сначала написал ответ, а потом прочитал твое сообщение...
Аноним 10/01/16 Вск 10:45:54 #351 №622828 
>>622646
Также сразу дам ориентир - 49 лет.
Аноним 10/01/16 Вск 10:59:01 #352 №622830 
>>622828
На получение суммы, большей 1 млн.
Также у тебя через год после вклада анончику 16 лет по-прежнему.
Аноним 10/01/16 Вск 12:18:49 #353 №622857 
Господа, когда будет ОП?
Аноним 10/01/16 Вск 12:30:01 #354 №622862 
>>622332
>>622857
Ну перестань ты уже тред засирать, ОП не вернётся быстрее от этого. Это вообще редкость, что кто-то готов тратить своё время на то, чтобы так часто проверять чьи-то левые хеловорды.
Аноним 10/01/16 Вск 12:41:35 #355 №622868 
>>622862
Я понимаю, но у меня больше вообще не к кому обратиться. Ладно, буду смиренно ждать опа молча.
Аноним 10/01/16 Вск 12:43:43 #356 №622869 
>>622868
Делай дальше, у тебя же всё работает в задачах.
ОП потом проверит, ты потом поправишь.
Аноним 10/01/16 Вск 13:11:22 #357 №622879 
На локальном сервере всё работает
Заливаю на хостинг и...
Fatal error: Call to a member function real_query() on a non-object in
Ну что за фигня такая то?
Аноним 10/01/16 Вск 13:18:07 #358 №622883 
>>622879
Значит ты в эту функцию пытаешься передать не объект, а она ждет объект. Перед функцией сдампь переменную которая в неё идет. Посмотришь, видимо у тебя ошибка раньше. Ну и если все работает на локалхосте, то мб проблема в настройке mysql на серве.
Аноним 10/01/16 Вск 13:26:57 #359 №622890 
>>622883
Выдало таки
Ошибка при загрузке набора символов utf8:
Конект такой.
<?php
$link = mysqli_connect('localhost','anon','123','anon');
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
if ($link->set_charset("utf8")) {
printf("Ошибка при загрузке набора символов utf8: %s\n", $link->error);
} else {
printf("Текущий набор символов: %s\n", $link->character_set_name());
}
?>

Да чтож такое то?
Аноним 10/01/16 Вск 13:30:06 #360 №622893 
>>622890
>Заливаю на хостинг
> mysqli_connect('localhost'
>пачиму ни работаэ???
Аноним 10/01/16 Вск 13:31:20 #361 №622895 
>>622893
Лол!
Аноним 10/01/16 Вск 13:36:03 #362 №622897 
>>622893
>Считает что кто-то будет на двачи продакшн конект кидать
Ну ты вообще наивный!
Аноним 10/01/16 Вск 13:41:30 #363 №622902 
Аноны, какие перспективы у изучающего пхп? Есть хоть призрачные шансы в будущем свалить из великой? Я взялся за программинг помимо прочего по этой причине, и по причине того, что я гуманитарий взялся за более простой для вхождения пхп. Какие перспективы? Только честно
Аноним 10/01/16 Вск 13:45:17 #364 №622903 
>>622902
Фундаментальные знания дрочи, а не конкретный язык.
Аноним 10/01/16 Вск 13:51:21 #365 №622905 
>>622890
Попытался удалить проверку на utf8, всё в кракозябрах. Ну ёмоё (
Аноним 10/01/16 Вск 14:17:50 #366 №622920 
>>622670

> FluentPDO приглянулась.
Хочу сразу предупредить. Вот такая штука

$fpdo->from('user')->where('id', array(1,2,3));

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

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

Если хочешь, можешь использовать, дело твое. Но если он не позволяет обычные запросы писать то по моему это не удобно.
Аноним 10/01/16 Вск 14:19:58 #367 №622921 
>>622676

Нет, я имел в виду создать функцию

{{ getDownloadUrl() }}

или так:

{{ viewHelper().getDownloadUrl() }}

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

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

Аноним 10/01/16 Вск 14:21:52 #368 №622922 
>>622691

Для массива наверно нет смысла генерировать 100500 плейсхолдеров и передавать 100500 значений - проще на стороне PHP заквотить все и вставить в запрос. Я конечно не знаю точно, но подозреваю что иначе можно упереться в какой-нибудь лимит на число плейсхолдеров если элементов в массиве много.
Аноним 10/01/16 Вск 14:23:47 #369 №622923 
>>622691

Тут например http://stackoverflow.com/questions/4922345/how-many-bind-variables-can-i-use-in-a-sql-query-in-mysql-5/11131824#11131824 пишут что максимум 65536 плейсхолдеров. Очевидно эта система не рассчитана на подстановку огромного числа плейсхолдеров.
Аноним 10/01/16 Вск 14:30:43 #370 №622925 
>>622739

> Что из этого списка сработает, если ссылка получит фокус табом и затем нажать enter?
Click, но стоит проверить

По поводу выбора href. Там есть 2 кода:

- класс Modal, который никакие атрибуты сам не читает: https://github.com/twbs/bootstrap/blob/master/dist/js/bootstrap.js#L920

- связующий маленький код который ищет элементы с атрибутом modal и вешает на них обработчик: https://github.com/twbs/bootstrap/blob/master/dist/js/bootstrap.js#L1229

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


Аноним 10/01/16 Вск 16:35:01 #371 №622965 
>>622327
https://github.com/fxsloker/Student

Итак, ОП. Посмотри мой роутер. Я создал новую сущность. А еще я подумал, если у меня нужно работать с одной моделью почему бы и не использовать только один контроллер? Можно так и правильно ли так?

И я создал базу: https://github.com/fxsloker/Student/blob/master/app/students.sql
Аноним 10/01/16 Вск 18:09:10 #372 №623029 
Бывает ли вакансия погромиста Пхп не- верстальщика? как ни ищу на HH, всё сводится на совокупность ПХП+ДЖС+КСС = вёрстка сайтов. Не дно ли это?
Аноним 10/01/16 Вск 20:43:12 #373 №623154 
>>623029
Одногруппник рассказывает, что в конторе, в которой он работает, есть версталы и дизайнеры. Но PHP-программисту нужно уметь натягивать ГОТОВУЮ вёрстку.
Аноним 10/01/16 Вск 21:48:36 #374 №623227 
>>623029
Если ты из Мухосрани, то ты обречен. Работодатель захочет одну мартышку, которая будет делать все. Возможно будешь переставлять винду в том числе.
Аноним 10/01/16 Вск 22:09:37 #375 №623239 
ОП, дело вот какое. Я начал гуглить про TableDataGateway и, как ты сам понимаешь, я попал в документацию Zend. Начал читать изучать и увидел много непонятных классов. Хоть там и расписано их предназначение, но я ничего не понял.

Смотри вот есть класс TableDataGateway, в нем есть метод initialize. Я правильно понимаю, что прямо в этом классе происходит подключение к бд? А я думал, что нужно его в автолоадер засунуть. А где он тогда вызывается? Почему не подключаться к бд сразу в конструкторе? В конструкторе я вижу только, что передается имя таблицы, адаптер (кстати опять непонятно, что за адаптер) и еще что-то.

Итак, я так понимаю, что в TableDataGateway я должен реализовать примитивные методы update, insert, where, select, которые будут применимы для всех моделей, а уже работая с каждой моделью, она должна будет наследовать этот класс и использовать эти методы?

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

Вообщем объясни мне, ОП, как это все работает? Я хочу применить это в студентах и понять как оно устроено.

Также прочти мою логику, как я пока думаю, как правильно сделать. Создаю класс TableDataGateway, там создаю все эти "примитивные методы". Рядом с ним создаю класс UserDataGateway, который наследует TableDataGateway и там уже пишу методы вроде add, delete, edit и т.д. В самой модели Student в конструкторе будет создаваться объект класса UserDataGateway с аргументом "students" (имя таблицы). Там будут использоваться такие же методы add, update, edit и т.д., которые будут вызывать аналогичные методы класса UserDataGateway. Контроллер опять же будет иметь методы action_add, action_edit, в каждом из которых будет создавать экземпляр класса Student и вызывать аналогичный метод модели. Но пугает меня то, что во всех трех классах будут одинаковые методы, которые по цепочке будут вызывать другу друга до обращения в базу. Правильно ли это?
Аноним 10/01/16 Вск 22:50:31 #376 №623260 
14524554312250.jpg
ОП, я по поводу своего шопа по которому ты мне много чего написал здесь - http://pastebin.ru/mzp3Ex5d
Начал с разработки нормальной БД, почитал про нормализацию, связи. Пришел к такому варианту как на пикче, вот еще в текстовом варианте - http://ideone.com/JmbBSV

Аноним 10/01/16 Вск 23:30:02 #377 №623278 
>>623260
Переименуй первичные ключи в просто "id", не надо везде ставить "category_id", так называются внешние ключи (т.е. когда данные лежат в другой таблице).
Аноним 10/01/16 Вск 23:31:32 #378 №623281 
>>623278
И таблицы называются обычно в единственном числе, тогда в запросах м/будет написать:
"product.category_id = category.id"
Аноним 11/01/16 Пнд 01:18:55 #379 №623318 
14524643360110.jpg
Ппц, за 10 часов работы получилось сделать 1 BTC = 32к рублей, хотя я даже не джун.
Челу нужно было написать алгоритм для новой версии одного биткоин-клиента. Я ради интереса нашел этот клиент на гитхабе, оказалось, что он написан на питоне. Ну и я тупо переписал все на пхп. Конечно, без пердолинга не обошлось, но все равно збс. А вы говорите про 15к в месяц.
Аноним 11/01/16 Пнд 01:31:30 #380 №623319 
>>623239

Нет, TDG это просто класс где собраны функции работы с таблицей. В ZF просто по совему это сделано. Никаких where или update делать не требуется.

Аноним 11/01/16 Пнд 01:33:30 #381 №623321 
>>623260

ENUM стоит сделать латинницей и без пробелов.

>>623278

Да, можно так сделать.
Аноним 11/01/16 Пнд 02:04:01 #382 №623323 
>>623321
>ENUM стоит сделать латинницей и без пробелов.
В кириллицу переводить в самом коде? Не будет ли это лишним захламленим кода? Это же надо будет через какой-нибудь switch перегонять или ifelse
Аноним 11/01/16 Пнд 15:46:58 #383 №623334 
>>623319
>Нет, TDG это просто класс где собраны функции работы с таблицей. В ZF просто по совему это сделано. Никаких where или update делать не требуется.

Это ОП написал? А то больно скудно, ничего не понятно.
Аноним 11/01/16 Пнд 16:01:50 #384 №623338 
>>623318
Где нашёл заказ? Как свои Скиллы оцениваешь? Расскажи
Аноним 11/01/16 Пнд 16:32:00 #385 №623350 
>>623318
Раз на раз не приходится же.
Везение играет роль, постоянный мониторинг заказов, адекватные цены. Наверняка там куча петушков нарисовалась с ценниками от 100к рублей или около того.
С почином, бро, это мотивация для многих в этом треде.
Аноним 11/01/16 Пнд 16:40:28 #386 №623358 
Не совсем понятно про Data Mapper. Допустим у меня есть 2 сущности в БД. Для каждой из них я должен создать класс-модель этой сущности, свойства которой будут полями, которые есть в БД для этой таблицы, верно? И еще должны быть классы, которые уже непосредственно работают с БД, типа select, update и т.д. причем опять же для каждого объекта/сущности свой такой класс в котором должны быть описаны все возможны методы для взаимодействия с БД?
Аноним 11/01/16 Пнд 18:02:51 #387 №623401 
>>623358
Не еби себе мозг. Есть такие ORM, как doctrine и propel. Или есть такие фреймворки как Yii, со встроенной орм. У них есть документация и туториалы. Берешь и решаешь свои задачи за их счет, стараясь не раздувать классы моделей кучей похожих методов. Но лучше конечно перед этим выкинуть сраное похапэ
Аноним 11/01/16 Пнд 19:04:30 #388 №623442 
>>622318
>соединение создается при создании pdo объекта или при выполнении первого запроса?
>Не знаю, проверь
Проверил, подключается при создании pdo.

>либо не делай catch либо сделай один-единственный catch в охватывающий все приложение и выводящий заглушку
Теперь понял. Обернуть в try/catch только $app->run, если нужно (обычно не нужно).
Слим сам преобразует ошибки в исключения (через set_error_handler), сам выдает заглушку (некрасивую), сам пишет в лог (стандартный).
Можно переопределить страницу ошибки, чтобы показать страницу с обезьянкой-ремонтником, но тогда придется переписывать сообщение в лог.
У меня получилось так
https://github.com/nsdvw/file-sharing/blob/master/web/index.php#L55

>>622298
> надеюсь что и обычная и аяксовая форма у тебя обрабатывается одним кодом. И ты также сделал HTML5 валидацию.
Одним и тем же кодом, но получилась лапша из ифов и скобок, жду советов по рефакторингу.
Про html5 валидацию слышу второй раз в жизни. Ты имеешь ввиду эти атрибуты типа required и pattern?
Во-первых, это поддерживается не во всех браузерах,
http://caniuse.com/#feat=form-validation
во-вторых мне просто не нравится внешний вид этих попапов. Их можно как-то переопределить, или изменить текст сообщения?

Аноним 11/01/16 Пнд 19:26:43 #389 №623458 
>>623401
Позвольте заметить, что в Yii ActiveRecord, а не ORM. И то и то - частный случай DBAL. Или меня щас нахуй пошлют?
Аноним 11/01/16 Пнд 19:30:18 #390 №623462 
>>623458
Кстати, на вопрос разрабам Yii, будет ли стоковая интеграция Doctrine и Yii - они ответили - "НЭТ НЭ БУДЕТ". Свою ORM они писать не хотят, видимо сложна. Поэтому Yii так и останется на уровне "стильно, модно, молодежно".
Аноним 11/01/16 Пнд 20:24:36 #391 №623492 
https://github.com/MindiMakridi/filehosting ох чую не понравится тебе, ОП, то, что я сотворил с превьюшками. Вообще чем больше исправлений я делаю, тем более уродливый становится код.
Аноним 11/01/16 Пнд 20:49:42 #392 №623518 
Оп проверь, сделал главное задание на верстку, буду допиливать под Ослика. Кстати какая минимальная версия, шестая или седьмая?
http://integer64.github.io/site-layout/exercise/mainTask/index.html
Аноним 11/01/16 Пнд 20:57:00 #393 №623520 
>>623458
Пардон, обосрался. Да, там Active Record.
Аноним 11/01/16 Пнд 21:21:06 #394 №623534 
14525364665450.jpg
/Pr/ограммач, помоги
Извиняюсь за столь сраный скрин, на машине не было ината. Как реализовывать пикрелейтед? Через SELECT? Если да, то как? Было бы круто, если бы анон написал код и пояснил что и почему
Хотя, что и почему я наверное сам пойму, но пока что я не знаю за что схватиться
Аноним 11/01/16 Пнд 21:25:49 #395 №623537 
>>623534
Гугли group by и count.

>Было бы круто, если бы анон решил за меня лабу
Было бы круто, если бы ты обсосал мое очко.
Аноним 11/01/16 Пнд 21:26:40 #396 №623538 
>>623537
оно у тебя немытое)0)0
спасибо за наводку, анон
Аноним 11/01/16 Пнд 21:41:56 #397 №623549 
>>623338
На bitcointalk.org. Читал сначала про биток в целом, потом пошел на этот форум, случайно увидел заказ. Оказалось, что за 8 месяцев никто так и не смог ему сделать, аж 8500$ запросили (он пендос). О реверс-инджиниринге алгоритма из оригинального клиента никто походу не додумался, пхп-шники же. Ну я и рискнул. Причем изначально стояла награда 0.5 BTC, а я блефанул и повысил до 1-го.
Скиллы средние. В данном случае понадобились только синтаксис питона, пхп и phpstorm с pycharm'ом, благо до этого на питоне кодил.
Алсо, говнокод там был просто ппц. По сравнению с ним, народ из этого треда - сеньоры.
Аноним 11/01/16 Пнд 21:47:34 #398 №623552 
>>623537
Че, рили такое в вузиках дают? Так эта что, я, получается, типа ОБРАЗОВАННЫЙ?
Аноним 11/01/16 Пнд 21:48:55 #399 №623553 
>>623552
Да нет, просто вузики отстой
Аноним 11/01/16 Пнд 22:14:12 #400 №623576 
14525396530340.jpg
ОП! Решил кое-как задачу про банкомат. Оцени, плиз знаю, что не очень, но работает ладно

http://ideone.com/HGT26l
Аноним 11/01/16 Пнд 23:12:30 #401 №623601 
Кто разбирается, посмотрите мое тестовое на ошибки плз.
Алсо, нужно ли его было покрывать юнит тестами и правильно ли проставлены индексы в бд?
https://github.com/toppestkek/Test
Аноним 11/01/16 Пнд 23:16:34 #402 №623605 
14525433945370.png
И тут такой я с опечаточником: http://ideone.com/phKzaH
Немного ВЗБОДРИЛО, когда стал проверять всякие разные госзаказы на официальном сайте зосзакупок.

Ещё читаю книгу Савельевой о РНР - как же тёте далеко до нашего ОПа. Там курс лекций, вроде более-менее доступно излагается, дочитаю.
Аноним 11/01/16 Пнд 23:31:30 #403 №623606 
>>623350
ага, мотивация, пока я безуспешно делаю тестовые задания на днище вакансии по 20 т.рублей в месяц, читать такие вот истории в ваших говноконфах про шлюх, работающих тимлидами за 90к, которые "ну я толком ни жиес ни пхп ни знаю)) ну на рабипитоне и шотот там накалякать магу))" - пригорает пиздец.
Аноним 11/01/16 Пнд 23:51:13 #404 №623611 
>>623606
А откуда ты? Как вообще себя опишешь, свои скиллы?
Аноним 12/01/16 Втр 00:03:19 #405 №623617 
>>621473
>>621471

Новый код с небольшими исправлениями: http://ideone.com/Loymjd
Старый код:
http://ideone.com/sepIh4

Сделал сам: строка if($foundAnimals["Dog"]) { превратилась в if (isset($foundAnimals["Dog"]) && $foundAnimals["Dog"]) { потому что при создании игры мы можем отказаться от собак в отличии от кошек и мышей

> Не стоило canIMove переделывать ради array_filter. Аргументы функции выбираются из логики, тут логично чтобы аргументами были (x, y), то есть даем координаты и получаем ответ. Для совместимости с array_filter можно либо сделать метод в Animal, либо использовать анонимную функцию (так даже наверно лучше):
Не могу понять как передать два аргумента в array_filter, если в документации единственный пример двух параметров анонимной функции - это передача ключа + значения.

> Тут можно избавиться от аргумента foundAnimals - можно передавать его в функцию подсчета через use (если бы исплоьзовалась анонимная функция). Можно впрочем и не избавляться, логика тут есть, что лучший ход зависит от расположения других животных. Хотя мне кажется, без него будет красивее.
Как я должен описать там анонимную функцию?Если я по твоему раннему совету передаю два разных метода countPoints, т.к. алгоритм подсчета очков различается.

> if (!count($foundAnimals["Cat"])) {
> throw new Exception("Ошибка. Должна быть как минимум одна кошка.");
> Вот тут я все же не уверен что это правильно. Можно было бы в отстутсиве кошки оценивать ходы по другим факторам, вроде близости к углам. Хотя в твоей ситуации функция не будет вызвана если нет кошки, но так было бы надежнее.
Но почему это нужно сделать. Это уже ошибка будет, если мы попали в тот метод без кошек. Зачем считать углы тогда? Если ты имел ввиду, что это будет свободный ход когда мы не видим мышок, то он уже описан в методе freeMove, и по правилам задачи мышка ходим наобум, без обдумывания.

Алсо насчет правил.
> Также, для мышки надо рассматривать вариант «стоять на месте». Иногда стоять на месте может быть выгоднее чем сделать шаг навстречу кошке. Например когда мышка в углу и к ней с 2 сторон приближаются кошки.
В учебнике написано, что мышка будет стоять на месте только если ей некуда ходить. Я это понял как ситуацию когда рядом клетки все заняты. Имеет ли она право в остальных случаях стоять на месте, если это выгодный ход?


> //Если обнаружили новый тип животных - добавляем его как ключ
> if (!array_key_exists($animalType = get_class($animal), $foundAnimals)) {
> ...переделать алгоритм чтобы он проверял есть ли в массиве такой ключ, перед тем как его использовать.
А array_key_exists разве не это выполняет?

В общем я слоупочу с советами по анонимным функциям. Я скопипастил их с метода canIMoveTo (все еще с одним параметров вместо двух x,y), они копия друг друга. Правильно ли делать такой копипаст, когда раньше мы просто передавали ссылку на метод в array_filter?
Аноним 12/01/16 Втр 00:05:20 #406 №623619 
Помните, как-то говорили о сайтах для портфолио на фрилансе? Помимо каких-нибудь магазинов и блогов вот такая чушь вызывает интерес, если хорошо оформлена: http://howmuchdoyoucost.xyz/
Я базарю.
Аноним 12/01/16 Втр 00:11:18 #407 №623621 
>>623619
у успешных менеджеров? мб
Аноним 12/01/16 Втр 00:11:52 #408 №623622 
Пиздос, написал в старом треде, и удивляюсь, почему никто не пишет.

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

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

Я очень долго хотел (да и щас подумываю) реализовывать это в MS Access, однако внезапно вспомнил, что у меня есть говносайтик на ололо-CMS с бесплатным шаблоном (но который очень даже неплох - делал его давно, без знаний каких то ЯП, хотя и наебался со всякими css-ами, ну не суть).

И я подумал, что было бы неплохо сделать ИНТЕРНЕТ-МАГАЗИН вместо нынешнего "сайта-визитки-каталога".

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

В общем, анонимус, я тут подумал, и в своих фантазиях набросал такую схему:
Ставлю CMS для интернет-магазина, пополняю его, тем самым у меня решается проблема складского учета товара в наличии.
А затем, при помощи PHP (который я так яро настроен изучить) - взять и к той же CMS прикрутить функционал выдачи договоров и прочих отчетов для курьера/грузчика и тд. Насколько моя идея охуительна и реально ли такое реализовать одному?

И вообще, анонимус, что ты думаешь по поводу моей уёбищной ситуации?

В идеале, конечно же - было бы неплохо изучить MYSQL, создать базу (таблички) и написать самому какую нибудь "веб-морду" по управлению этой базой: то есть реализовать учет склада, отчеты и прочие махинации.

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


Пиздец, анон, сам не понимаю, чего хочу, прошу помочь с принятием решения.
Алсо - как долго нужно учить PHP?

Аноним 12/01/16 Втр 00:15:16 #409 №623623 
>>623622
Wordpress + WooCommerce, как вариант, из самого простого.
Там очень многое возможно.
Аноним 12/01/16 Втр 00:25:46 #410 №623628 
>>623623
То есть мне лучше разделить свои личные запросы? Вести учет товаров в вордпрессе а договоры и все остально пос таринке - вручную?
Аноним 12/01/16 Втр 00:27:20 #411 №623629 
>>623628
Оставь это, путник. Про товары можешь еще подумать, но в вордпрессе свои процессы делать не стоит.
Аноним 12/01/16 Втр 00:36:05 #412 №623632 
>>623629
Пиздос. Ладно, буду ебаться с Акцесом!

Вордпресс+вукомерс - самое менее ресурсоёмкое, среди других CMS?
Аноним 12/01/16 Втр 00:47:17 #413 №623635 
Поясните, что такое вордпресс?
Аноним 12/01/16 Втр 00:59:05 #414 №623637 
>>623334

А это читал? https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md
Аноним 12/01/16 Втр 01:01:44 #415 №623639 
>>623442

Попробуй получать информацию об исключении через $e->__toString()

Вместо app->log может быть лучше использовать error_log, чтобы ошибка шла в лог PHP.

> во-вторых мне просто не нравится внешний вид этих попапов.
вроде нет

> Их можно как-то переопределить, или изменить текст сообщения?
Частично, через title
Аноним 12/01/16 Втр 01:03:24 #416 №623640 
>>623518

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

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

Урок https://gist.github.com/codedokode/855e3970124687b26a1c
Аноним 12/01/16 Втр 01:05:22 #417 №623641 
>>623617

> if (isset($foundAnimals["Dog"]) && $foundAnimals["Dog"]) {
if (!empty(...))
Аноним 12/01/16 Втр 01:07:18 #418 №623643 
>>623617

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

$x = array_filter($x, function ($y) {
// вызываем любую функцию с любым числом параметров
});

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


Аноним 12/01/16 Втр 01:08:48 #419 №623645 
>>623622

Почему не 1С + готовая CMS для магазина, которых сотни?
Аноним 12/01/16 Втр 01:10:05 #420 №623646 
>>623334
TDG - класс, с функциями, которые оборачивают твой говнокод для работы с базой. По сути самая простая абстракция и инкапсулирование построенных запросов. По сути тот же говнокод, только рассованый по коробкам.
Аноним 12/01/16 Втр 01:12:37 #421 №623649 
>>623645
Смотря что нужно ему. Если он хочет нечто хорошее и качественное, то CMS его не устроит. Я бы всем таким людям советовал для начала найти прошаренного человека, который может консультировать по таким вопросам, честно и без купюр, а уже потом окунаться в омут веб-разработки.
Аноним 12/01/16 Втр 01:15:31 #422 №623651 
>>623649
А если он хочет быстро, и без особых претензий, то CMS - самое то.
Аноним 12/01/16 Втр 02:16:00 #423 №623778 
14525541605100.png
Как настроить базу данных во всплывающих окошках phtstorm? Я пытался наобум настроить и после run получал что-то в духе java.sql.SQLException: Unknown database 'Test'.
Мимо смотритель курсов специалиста.
Аноним 12/01/16 Втр 02:26:15 #424 №623782 
>>623778
И вообще в шапке написано, что нужно отдельно скачивать mySql. Если у меня phpstorm можно не устанавливать ее? Все уже есть в программе?
Аноним 12/01/16 Втр 02:42:41 #425 №623784 
Раньше писал всё на чистом ПХП, для учёбы и для себя конечно писал, отлично помнил все эти классы и подключения к базе данных. Последние месяца 3-4 больше занимаюсь вёрсткой, Вордпрессом, яваскриптом и другими подобными вещами. Сейчас возникла надобность написать небольшое приложение на чистом ПХП, с базами данных. Начал это делать и осознал, что я почти всё забыл и даже сходу не могу написать функции которые работают с базой данных и выполнить все необходимые операции. Конечно, завтра я уже всё сделаю, потрачу несколько часов, посмотрю в свой старый код и норм. Но у меня возник вопрос, когда работаешь веб-программистом, насколько часто используешь например функции ПДО? Всё же делается на КМСах или Фреймворках, где это всё уже автоматически сделано, выходит всё это знать необходимо, потому что это базовые знания, но они очень и очень редко нужны?
Аноним 12/01/16 Втр 02:46:06 #426 №623785 
>>623029
Недавно тоже думал над этим вопросом, но потом взял и выучил вёрстку, до уровня верстания с ПСД макетов, таких как в задании ОПа и немного посложнее. Потрать пару недель, получили этот скил и тебя это уже не будет волновать.
Аноним 12/01/16 Втр 03:26:14 #427 №623804 
>>623778
рекомендую не заебывается. Все что в Pstorm связано с интеграцией к твоим софтинам обернется тебе дикими лагами. Конечно если у тебя топовая машинка для разработки тыщ за 60, то можешь попробовать. Да и интерфейс с шторме и так перегружен и напичкано туда всего чего можно. Пробовал интегрировать xdebug в Шторм - оказалось для него нужен запущенный xdebug, которые следить за выполнением ВСЕХ скриптов от начала до конца. Можно конечно, ставить трейсы самому, но тогда весь смысл интеграци и - ставить точки остановы и чекать переменные - отпадает. А при полном трейсе производительность дико низкая.

Вообщем суть в том, что при использовании Phpstorm для разработки больших проектов в которых >10.000 файлов все фишки интеграции и дебага дико нагружают локальный сервер.
Аноним 12/01/16 Втр 03:35:27 #428 №623808 
>>623778
И да, mysql ставится отдельно, так как это отдельная программа. И вообще привыкай к тому, что разработка на PHP это разработка с помощью опенсорс платформы - то есть тут нихуя нет юзерфрендли, когда все за тебя поставили. Софт стафишь отдельно и отдельно его интегрируешь. Но если ты линуксобог - тут чуть чуть полегче. Загуглил команду - скопировал в консоль - поставился LAMP, например. Загуглил команду - установил Webmin, итд...
Аноним 12/01/16 Втр 03:50:10 #429 №623811 
>>623784
На самом деле в программировании нужно тоже найти свою нишу.

Человек, который, например работает в SensioLabs и занимается разработкой фреймворка и человек, который собирает сайты на Symfony - это 2 совершенно разных специалиста. Потратив нек. количество времени на пердолинг можно перетечь из одной в другую. Понятное дело, что функции PDO первый специалист должно знать намного лучше, чем второй, потому что второму они просто не понадобятся для повседневной работы. А все что не повседневно - то гуглится.
Аноним 12/01/16 Втр 05:27:34 #430 №623826 
14525656546160.jpg
>>619873 (OP)
Спрошу в родном, любимом РНР-тредике.

Как мне хорошо понять, что такое ООП, парадигмы и т.д.? И где я могу на доступном уровне получить не языковые, а обще-программисткие знания? Как я понимаю, нужно читать что-то из книг в первых трех колонках гайда ОП-пика закрепленного треда /pr/?
sageАноним 12/01/16 Втр 05:52:18 #431 №623828 
>>623826
Мэтт Вайсфельд "Объектно-ориентированное мышление"
Аноним 12/01/16 Втр 07:53:08 #432 №623845 
бля, господа, посмотрите на этот раздел, на эту зловонную клоаку, состоящую из спермотоксиозных школьников, жалких детей с явно не сформировавшейся личностью, откровенных жирных уродов, анимедаунов, гомосеков и прочих имбецилов. Как же мне стало противно программирование, после пары лет, проведенных здесь. Эти грязные животные, эти оборованные чавкающие плебеи, которым впору жрать из одного корыта со свиньями, эти животные, не могущие связать и двух слов, что-то нечленораздельно мекающие, не могущие ни в литературный русский, ни в английский, ни вообще в какой-либо язык, и вот с их богомерзкого изобильного стола мне приходится подбирать какие-то крохи? Эти тупые безмозглые животные, заучившие пару циклов со скобочками, научившиеся складывать циферки и по слогам, с переводчиком, водить пальцем по документации, вот эти вот животные не просто смеют мнить себя какими-то творцами, нееет, они натурально зарабатывают дохрена и даже кичатся каким-то там "техническим складом ума", техническим образованием. И вот с этими животными мне приходится конкурировать, и эти вот мекающие бессвязные звуки овцы уезжают заграницу и рубят бабло на своих "технических" знаниях, вся суть которых сводится к зубрежке формул и складыванию циферок с калькулятором. Пелена спала с моих глаз. Кодинг - это мерзко, это грязно, это тупо, это ремесленно, это просто обслуживающие чернорабочие, смазывающие шестеренки Интернета, чья задача разносить мысль, реальную человеческую Мысль, которая никогда не зародится в ограниченных черепушках кодеросантехников. Единственное, что меня возмущают, что эти бекающие животные реально получают бабло за свое ковыряние отверткой в иде. Это просто несправедливо, этот тупой скот должен знать свое место, единственная причина, по которой он так заносится - так это бедственное положение рашкинской экономики, где у всех, особенно у литераторов и мыслителей, нет применения, поэтому байтосантекхники прикармливаются у индусов и мнят о себе не весть что. Вот вам мой смачный "гуманитарный" харчок в немытую харю, мерзкие грязные животные, чье место по их свинской природе - в хлеву.
Аноним 12/01/16 Втр 08:25:15 #433 №623850 
>>622641
>>622641
Шиндовс, пробовал что на 7, что на 10, одно и тоже дерьмо. Кодировка 1251 для казахского текста.
>надо передавать данные в виндовой кодировке.
Как их туда передать в виндовой кодировке? iconv? Если да, то это не вариант, так как iconv не может сконвертировать правильно.

У меня к сожалению жесткие рамки, нужно работать под Win.
Аноним 12/01/16 Втр 08:33:06 #434 №623853 
Оп проверь пожалуйста:
http://integer64.github.io/site-layout/exercise/mainTask/index.html
Сделал под ослика.
Можете начать тыкать в мои косяки
Аноним 12/01/16 Втр 08:42:00 #435 №623854 
>>623853
А что ты в итоге сделал то? Развернул html страничку на сервере? Молодец.
Аноним 12/01/16 Втр 08:53:52 #436 №623862 
>>623854
Эм, это задание по верстке макета. Так что, да сверстал, разместил на гитхабе.
Аноним 12/01/16 Втр 09:00:48 #437 №623870 
Такой вопрос.
Из бд извлекается массив.
Допустим.
$arr
{
[a] = 1,
= 2,
[c] = 3,
}
Проблема в том, что например ключа [d] в массиве может и не быть, но при дальнейшей работе скрипта возможно потребуется обращение по этому ключу.

Например:

$a = $arr['a'];
$b = $arr['b'];
$c = $arr['c'];
$d = $arr['d'];\\ ключа d как бы и нет, но как бы и похуй, если $d при этом станет равным = "" То есть все работает как нужно.

Интересует, правильно ли так делать?
Или нужно обязательно проверять наличие ключа в массиве , вроде isset( $arr[ 'd' ] ) перед тем как обратиться по этому ключу?
Аноним 12/01/16 Втр 09:18:46 #438 №623876 
>>623870
$d = $arr['d'];
$d = isset($arr['d']) ? $arr['d'] : '';

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

Обычно встречаю вариант, но зачем?
Аноним 12/01/16 Втр 10:24:27 #439 №623898 
RIP OP
Аноним 12/01/16 Втр 11:08:59 #440 №623912 
>>623854

Прочти сначала шапку треда, дурачок.
Аноним 12/01/16 Втр 11:10:23 #441 №623913 
>>623870

Как такое возможно? «Из БД извлекается массив ... ключ может и не быть». Не может такого быть. Все колонки что ты запрашиваешь из БД, возвращаются. Ты что-то делаешь неправильно.
Аноним 12/01/16 Втр 11:52:48 #442 №623930 
Всем, сап. js-у и php я пока только учусь, но на работе поставили задачу, и времени на пошаговое изучение пока нет. Поэтому хочу обратиться к вам, авось поможете. Есть функция на js, которая передает параметры, по средствам - XmlHttpRequest, из сформированной ранее на php таблицы, для sql запроса на сервер. Далее на сервере формируется xls - документ(с помощью PHPExcel). Дак вот, если просто сохранить этот документ, на сервере, то проблем нет, но мне нужно его вывести в новом окне брузера или хотя бы предложить пользователю его сохранить. Сейчас у меня предаются параметры, формируется документ, и присылается ответ с сервера (responseText), но как мне этот ответ обработать, чтобы получить ссылку на скачивание документа, я хз.

Аноним 12/01/16 Втр 11:59:22 #443 №623933 
>>623913
Что не так-то?
Есть страница настроек с полями ввода. Каждое поле значение поля -> элемент в массиве который сохраняется в БД. Если пользователь не ввел значение в какое-то поле, то в массиве элемент будет отсутствовать. Но потом, по этому элементу возможно будет обращение. И речь вообще, как ты понимаешь не об этом. Тут про то нужно ли городить такие выражения $d = isset($arr['d']) ? $arr['d'] : '' если можно обойтись $d = $arr['d']. Ведь результат будет тот же? При условии что $arr['d'] вообще не существует. То есть ключа d со значение в массиве нет!
Аноним 12/01/16 Втр 12:42:25 #444 №623960 
Не пойму в чем смысл внедрения зависимостей? Вот например внедряю я в конструктор объект PDO

public function __construct(PDO $pdo){
$this->db = $pdo;
}

Но в чем сакральный смысл? Я так понимаю это должно помочь в будущем легко менять PDO на какой-то другой сервис, но мне ведь все-равно нужно будет лезть и менять передаваемое в конструктор значение.
Аноним 12/01/16 Втр 12:58:25 #445 №623980 
>>623960

Это связано с разделением обязанностей и принципом единой ответственности, то есть каждый класс должен заниматься своим делом.

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

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

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

Немного можешь почитать в этом уроке: https://gist.github.com/codedokode/e1d31a31b37d5f635057

А без DI получается лапша из намертво связанных друг с другом классов.
Аноним 12/01/16 Втр 12:59:02 #446 №623981 
>>623960

Ну и еще передать 1 настроенный объект проще чем кучу настроек соединения с БД.
Аноним 12/01/16 Втр 12:59:29 #447 №623982 
>>623960

Одинаковые вещи надо называть одинаково:

construct(PDO $db)
{
$this->db = $db;
}
Аноним 12/01/16 Втр 13:03:38 #448 №623987 
>>622965
ОП, ты не пропустил? А то вроде как ты там дальше отвечаешь, и где есть ОП вообще?
Аноним 12/01/16 Втр 13:13:11 #449 №623996 
Стоит ли бороться с Нотайсами? Например у меня функция возвращает массив каких-то данных, но этих данных может и не быть, тогда возвращается неопределенная переменная и появляется Notice. Не обращать на это внимание или всегда определять переменную, типа типа такого $result = array(); а уже дальше даже если данных не будет, то просто вернется этот пустой массив.
Аноним 12/01/16 Втр 13:33:13 #450 №624023 
>>623996
В битриксе, например, портянка нотайсов такая, что их можно только минут за 5 все прочесть, снизу вверх. Однако же деньги делают. Но если хочешь считаться "элитой" программирования и собираешься писать какой-то топчик, то нотайсов быть не должно. Не знаю, например, щас в Друпале есть нотайсы или нет.
Аноним 12/01/16 Втр 13:36:29 #451 №624024 
>>623980
>codedokode
О спасибо.
Это креатив ОПа ?
Аноним 12/01/16 Втр 13:48:33 #452 №624029 
>>623987

Я пока пробежался и ответил на вопросы, из-за которых аноны не могут что-то решать дальше, задачки я чуть позже гляну, начну с самых старых. Вроде до 8-го января все проверено, так что терпимо.
Аноним 12/01/16 Втр 13:54:05 #453 №624032 
>>623996

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

> всегда определять переменную, типа типа такого $result = array(); а уже дальше даже если данных не будет, то просто вернется этот пустой массив.
Неверно. Функция всегда должна возвращать данные в одном и том же виде. Единственное исключение - можно еще возвращать null если например не удалось найти запись в БД. То есть либо массив строго определенного формата + null, либо объект (что лучше) + null, либо строка + null. Как-то так.

>>624024

Да.

>>624023

Да. с битрикса не берите пример. Помните что они программистам 20 000 р в месяц платят, будете писать с нотисами и на массивах, будете получать столько же.
Аноним 12/01/16 Втр 14:24:52 #454 №624051 
>>623850
ОП, помоги хоть ты, работа стоит, все интернеты облазил, это абсолютно не типовая задача. >>622533
Если очень коротко и не хочешь перечитывать то смотри:

Стоит задача сканировать директории на наличие файлов и создавать новые файлы (ғғғғғғғғғғғғ.hui) с казахскими буквами. Но у меня это не выходит, я уже всё прошерстил в интернете, но ничего валидного не нашел. Как справиться? В какую сторону копать? ОС Win 7/10 жестко предопределена.
Также для наводки:
использовал функции для работы с файловой системой и собственно iconv. Но он не справляется с кодировкой файловой системы.
Аноним 12/01/16 Втр 14:37:39 #455 №624066 
>>624055

Зачем глупости пишешь? Все проверим.

>>624051

Почему iconv не работает? что пишет? Ты все верно делаешь? покажи код.

Должно быть так: твой скрипт в utf-8, все в utf-8, только при создании файла делаешь новую переменную и кладешь в нее имя в cp-1251.

Аноним 12/01/16 Втр 14:51:07 #456 №624077 
14525994672700.png
>>624066
Да тут кода и не надо в принципе то, мне нужно добиться работоспособности от функций scandir или, блин, хотя бы fopen.
Вот так делаю:
var_dump(scandir("C:\\ASED\\"));
fopen(iconv("UTF-8","WINDOWS-1251","C:\\ASED\\ғғғғғғғғғғғғ"),"w");
fopen(iconv("UTF-8","cp1251","C:\\ASED\\ғғғғғғғғғғғғ"),"w");
fopen(iconv("WINDOWS-1251","UTF-8","C:\\ASED\\ғғғғғғғғғғғғ"),"w");
fopen("C:\\ASED\\ғғғғғғғғғғғғ","w");

- во всех случаях получается гiвно какое-то.
Аноним 12/01/16 Втр 14:58:02 #457 №624083 
>>623804
Какую альтернативную ide посоветуешь? Пека и правда у меня слабая.
Аноним 12/01/16 Втр 15:00:28 #458 №624084 
ОП, сколько можно зарабатывать с помощью пыхи, если я допустим, не гений-математик, а обычныйкун? Как ты думаешь, насколько переспективный данный язык, сильно ли соснёт начинающий через 5-6 лет или всётаки сможет прокормить кота и себя?
Аноним 12/01/16 Втр 15:09:37 #459 №624092 
>>624077
Ну и всё пиздец? Не робити больше? Скажи оп ты тоже запердолился?
Аноним 12/01/16 Втр 15:28:00 #460 №624106 
>>624083
Для PHP лучше шторма еще ничего не придумали. Может у кого-то другой опыт, но я пробовал такие альтернативы:

Sublime
Atom
Eclipse

Для меня главная задача IDE

1) Автокомплит функций, классов, методов, переменных.
2) Удобное управление вкладками.
3) Максимальная поддержка синтаксисов из коробки (кроме основных нужны XML, JSON, YML, Twig)
4) Функционал сниппетов
5) С недавнего времени еще использую встроеный bash-терминал.

Sublime и Atom
Чтобы реализовать в них весь вышеперечисленный функционал (кроме вкладок) нужно наставить опен-сорс костылей. Пробовал и даже хотел привыкнуть, но не получилось. В Атоме нашел более менее сносный плагин для автокомплита. Но все равно он отстой по сравнению с тем, что есть в шторме.

В Eclipse автокомплит есть, но тормозит точно так же как и в Шторме при наличии в проекте Хуилиона файлов, потому решил что менять IDE нет смысла.


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



NetBeans не ставил, так как смысла нет, такая же тормозная Java поделка, как и Storm.

Сейчас я работают так: проект от корневой доменной папки веду в Phpstorm, если нужно открыть какие-то конфиги, за пределами проекта - открываю в Sublime. Алсо в шторме есть проблема с тем, что он не может открывать большие текстовые файлы. Их я тоже открываю в Sublime.
Аноним 12/01/16 Втр 15:29:49 #461 №624110 
>>624084
PHP соснет очень не скоро. Это как спрашивать: когда соснет Facebook или Двач.

Комьюнити у него очень огромное, а сейчас для продвижения это самое главное.
Аноним 12/01/16 Втр 15:32:35 #462 №624115 
>>624110
>
Ну хуй знает, что по твоим словам не очень скоро, для некоторых 3 года это не очень скоро, а для некоторых 2 десятка. Ну и сравнения тоже какие то мутные, социальную сеть сравнивать со скриптовым языком.
Аноним 12/01/16 Втр 15:40:50 #463 №624119 
>>624115
>Ну и сравнения тоже какие то мутные, социальную сеть сравнивать со скриптовым языком.
Без разницы. Потому что задачи в итоге у всех сводятся к одному - зарабатывание денег и ЧСВ.
Я говорю о том, что если у чего-то или у кого-то есть большая "аудитория", то бишь комьюнити, то при сегодняшних тенденциях это что-то будет актуально еще очень долго.
Аноним 12/01/16 Втр 15:42:25 #464 №624121 
>>624119
Очень долго в тоём понимании это сколько? 10 лет?
Аноним 12/01/16 Втр 15:48:11 #465 №624126 
>>624077

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

Судя по википедии, в казахском исплоьзуется модифицированная кодировка, не та же 1251 что у нас в России.

Вот википедия: https://ru.wikipedia.org/wiki/Windows-1251#.D0.9A.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.BA.D0.B0_CP1251-k_.28KazWin.2C_.D0.BA.D0.B0.D0.B7.D0.B0.D1.85.D1.81.D0.BA.D0.B0.D1.8F_.D0.BA.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.BA.D0.B0.29

(маразм конечно - давно пора переходить на юникод и забыть про 256-символьные кодировки).

Видно что символ ғ есть только в модифицированной версии. Значит, надо найти как эта кодировка назвается в iconv.

Гугление дает подобные списки: https://gist.github.com/hakre/4188459 в которых только обычная 1251. Казахской нет.

Значит придется перекодировать ручками - писать свои функции для перекодирования туда и обратно.

Перекодировать из 1251k в utf-8 просто: разбиваешь строку на символы по 1 байту, проходишься и перекодируешь. Коды 0-127 идут без изменений, а для 128-255 надо сделать массив где слева стоит код, справа коды или символ в utf-8. Символы можно скопировать из статьи про cp1251. советую показать код для проверки ну и самому потестировать на всех возможных символах.

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

Обратное перекодирование делается так: разбиваем utf-8 строку на символы с помощью preg_split. В цикле обходим каждый символ:

- символы с кодами 0-127 остаются без изменений
- символы которые есть в массиве, заменяем на код из него
- остальные символы: выдаем ошибку или делаем еще что-то.

Помни такие особенности:

- в cp1251k всего 256 символов, в юникоде десятки тысяч. Значит надо решить что делать когда встречается тсутсвующий в 1251k символ
- в cp1251k 1 символ это 1 байт. В utf-8 символ может кодироваться либо 1 байтом от 0 до 127 либо несколькими из диапазона 128-255

Статья про utf-8 в помощь: https://ru.wikipedia.org/wiki/UTF-8

Есть вопросы - задавай.

Было бы хорошо написанные функции снабдить заголовком с нужными ключевыми словами и выложить куда-нибудь на гитхаб чтобы другие могли их нагуглить.
Аноним 12/01/16 Втр 15:49:35 #466 №624128 
>>624077

Еще в помощь тебе 2 функции:

ord - определяет числовой код первого байта (не символа!) в строке
chr - создает строку из 1 байта с указанным кодом.
Аноним 12/01/16 Втр 15:51:41 #467 №624131 
>>624083

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

Из плагинов: emmet для верстки, php companion для работы с неймспейсами, docblockr для комментариев.
Аноним 12/01/16 Втр 15:53:07 #468 №624135 
>>624084

За 5 лет при желании можно выучить еще несколько языков. Я бы не боялся того что с PHP что-то случится, веб вряд ли вымрет в среднесрочной перспективе, а поменять язык нетрудно.
Аноним 12/01/16 Втр 16:47:43 #469 №624192 
Вопрос нуба: нужно ли переломится с апачем, если скачал себе шторм? Или для базовых пониманий всё же установить себе апач?
Аноним 12/01/16 Втр 16:48:02 #470 №624194 
>>624192
>пердолиться
Аноним 12/01/16 Втр 16:52:48 #471 №624199 
http://www.gm.com/ забавная у них защита от xss, просто 403 кидает.
Аноним 12/01/16 Втр 18:02:12 #472 №624248 
14526109326110.png
Наподключал всякого говна типа bootstrap, jquery, jplayer и handlebars, страница теперь грузится 7 секунд.
Процессор правда слабый (AMD E1-6010), но все же.
Я вижу дырку в 2.5 секунды, с чего бы это?
Аноним 12/01/16 Втр 18:48:36 #473 №624280 
>>624192
Если тебе интересно развертывание апача как таковое, то можно и попердолиться, еще можно посмотреть в сторону nginx. В php так или иначе есть веб сервер встроенный и вроде как сторонние ИДЕхи поддерживают его.
Аноним 12/01/16 Втр 18:48:49 #474 №624281 
>>622318

По js все поправил, непонятно только это:
>var fileId = {{ fileId | json_encode | raw }};
>Предлагаю тебе самому подумать почему и зачем тут json_encode и raw.
Зачем тут json_encode и raw? Сам думать пробовал, не помогло.
Ну в кавычки обернет строку json_encode, а raw предотвратит экранирование этих кавычек. Зачем мне там кавычки?

Я бы еще понял, если бы передавались какие-то сомнительные данные из базы, полученные от пользователя, например логин или текст сообщения, где может содержаться csrf код.
Но я передаю суррогатный id. Ну ладно, видимо это чисто ради систематичности: мы же экранируем в твиге все что нужно и не нужно, значит и здесь так же.
Аноним 12/01/16 Втр 19:31:18 #475 №624325 
>>623876
Здесь кто-нибудь вообще может по делу ответить. Понимаю, вопрос нубский, но весь тред и состоит из таких вопросов, причем намного глупее. Вы че, совсем охуели?

>>624032
>Надо писать так, чтобы нотисов не было. Сам подумай, как можно писать надежный код. когда элементы в массиве могут быть, а могут не быть? Получается и код тогда может работать, а может и не работать, так? Не надо так.
Поехавший, ты с реальными приложениями вообще работал. Или только кукарекать можешь?
Допустим есть страница пользователя настроек с 1000 текстовыми инпутами. Пользователь допустим заполняет 2 из 1000 инпутов и нажимает сохранить. Формируется массив соответственно из всего из двух элементов, по принципу: ключ - id ипута, значение - value инпута. Этот массив сохраняется в БД. Но потом при извлечении данных из БД возможно придется пройтись по всем элементам, ведь неизвестно сколько инпутов заполнил пользователь.

Если пользователь заполнил всего 2 инпута, то, по твоему, в БД я буду заполнять эти два элемента, и еще 998 элементов ключей с пустыми значениями? А таких пользователей тоже несколько тысяч, со своей страницей настроек? И все это хранить в БД?
Аноним 12/01/16 Втр 19:41:08 #476 №624330 
>>623876
Я конечно сам нуб,но попробую помочь. Будем рассуждать логически. Если ты попытаешься обратиться по ключу которого нету в массиве ,то приложение вылетит. Значит надо либо через исключение обрабатывать вызов, либо назначать дефолтное значение.
13я задача Аноним 12/01/16 Втр 19:44:17 #477 №624331 
https://jsfiddle.net/3ohn82tm/
Аноним 12/01/16 Втр 19:47:04 #478 №624334 
>>624325
Какой же ты долбоеб.
Аноним 12/01/16 Втр 19:56:47 #479 №624342 
>>624325
>>624330
ни в коем случае нотисов не должно быть, если вы уважаете себя и код.

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

насчет массивов вы ошиблись, как раз если в массиве елемента не будет это не критично, хотя не хорошо, но если в обьекте это уже может быть критично.
как вы собираетесь проверять существование переменной в обьекте - очень неудобно, и обьекты больше жрут памяти и медленней обрабатываются.
Имхо я за массивы - минимум расходов максимум полезности, все легко проверить isset(ar[d]) и т.д.
Аноним 12/01/16 Втр 20:03:25 #480 №624350 
>>624342
Что-то вообще тебя не понял. Про какие объекты ты говоришь?
Аноним 12/01/16 Втр 20:27:03 #481 №624365 
Человек, с которым мы договорились о переделке сайта дня 3 назад в этом треде, только что отписался на почту тебе, по поводу этого задания. Скинул ссылку на сайт, который выложил на бесплатный хостинг.
Аноним 13/01/16 Срд 02:04:48 #482 №624558 
А что автолоадер в Silex опять не работает? Снова классы вручную что ли подключать?
Аноним 13/01/16 Срд 08:14:16 #483 №624624 
>>624199
Суть в том, что отплавливает хсс, а что еще еадо для счастья?
Аноним 13/01/16 Срд 08:55:43 #484 №624632 
Посоны, поясните за тупой вопрос.
Я например, в функции создаю объект
$order = new Class_Order($order_id);

Работаю с этим объектом, например получая его свойства

Затем вызываю др. функцию calc_sum_func($order_id), в которой также создаю новый объект с теми же именами так же с ним работаю

$order = new Class_Order($order_id);

и снова работа со свойствами этого объекта

И когда функция calc_sum_func() возвратит значение в основную функцию

снова происходит работа с первым объектом $order

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

Если соединить все вместе, то выглядит примерно так:

function some_func($order_id){

$order = new Class_Order($order_id);
$total = $order->total;
................................................

$sum = calc_sum_func($order_id);

................................................
$order->upadte_sum($sum);

}

function calc_sum_func($order_id){
$order = new Class_Order($order_id);
..................................................
return $order->yoba_eto_ti($ya);
}
Аноним 13/01/16 Срд 09:06:51 #485 №624639 
>>624632
Смысл в том, все вычисления по пересчете суммы заказа я хочу вынести в отдельную функцию calc_sum_func(), чтобы можно было вызывать ее из других частей программы, просто передавая Id заказа. Но опять же получается, что в основной функции some_func() я создаю экземпляр , и создаю еще один в calc_sum_func() ?

Конечно, все расчеты можно сделать в some_func() и обойтись одним экземпляром заказа, но теряется гибкость.
Аноним 13/01/16 Срд 09:34:13 #486 №624650 
>>624126
>>624128
Привет ОП, вчера попробовал твой метод, но суть в том, что функции ord и chr работают исключительно в рамках таблицы ASCII соответственно их невозможно применить для воспроизведения символов казахской кодировки.

ord - Returns the ASCII value of the first character of string.
chr - Returns a one-character string containing the character specified by ascii.

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

не совсем понял, каким методом можно так разбить её? И куда в итоге девать эти байты? Если ord и chr, то гляди выше.

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

CP154
CYRILLIC-ASIAN
PT154
PTCP154
CSPTCP154
KZ-1048
RK1048
STRK1048-2002
CSKZ1048

Для представления: iconv("UTF-8", "{Кодировка из списка например CP154}", "Ғ");


Всегда получалась лабуда вроде Ѓ или Є, но не как не Ғ.

Я так понимаю совместимости в данном случае ожидать невозможно, ибо CP1251-k отстутвует в PHP.

Может быть есть способ определения "сырого потока" данных для дальнейшего воспроизведения?
Ну чтобы передать винде списки кодов символов, а она их уже отобразила как надо?
Аноним 13/01/16 Срд 09:46:06 #487 №624656 
>>624635
>Два разных объекта?
Да.
>Это норма?
Нет. Память/время х 2

Передавай уже готовый обьект заказа.
calc_sum_func($SomeOrder)

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

Короче завязывай со своими глобальными функциями.
Аноним 13/01/16 Срд 09:46:47 #488 №624658 
>>624632
>>624656
Аноним 13/01/16 Срд 10:19:08 #489 №624670 
>>624656
Спасибо. И еще вопрос, я правильно понимаю, что $order в функции calc_sum_func() виден только внутри этой функции? Как собственно и любая другая переменная?

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

Все верно, но задача стоит в написании что-то в виде плагина, который сможет сделать кастомный расчет, без изменения уже имеющегося класса.
Аноним 13/01/16 Срд 11:45:08 #490 №624720 
>>624325

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

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

> ты с реальными приложениями вообще работал
Я самоучитель по PHP6 прочитал недавно.

>>624342

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

> но если в обьекте это уже может быть критично.
как в объекте может «не быть» элемента? Ты ничего не путаешь? У объектов есть только поля и методы.

>>624558

Нужны подробности.

>>624632

Нехорошо конечно. Надо посмотреть, может можно сразу объект в функцию и передавать.

Алсо названия функций у тебя кошмарные, зачем сокращать и зачем писать func?

> я хочу вынести в отдельную функцию calc_sum_func(), чтобы можно было вызывать ее из других частей программы, просто передавая Id заказа.
Можно сделать функцию, работающую только с объектом. Если где-то есть i то можно по нему получить объект и передать в функцию. хотя я вообще не понимаю, зачем тебе глобальные функции в ООП коде, лучше бы сделать Сервис Работы с Заказами и в нем нужные методы.

>>624650

Неправда. Они работают с байтами, и возвращают код первого байта строки либо создают строку из 1 байта. Работают с любыми значениями байт от 0 до 255.

> не совсем понял, каким методом можно так разбить её?
str_split например. Или цикл от 0 до strlen - 1, на каждом шаге берешь i-й байт строки через $string{$i}

В PHP строка это просто массив байт. Каждый байт имеет значение от 0 до 255. В 8-битных кодировках 1 символ кодируется ровно 1 байтом (и возможно до 256 разных символов), в utf-8 - 1 символ = от 1 до 6 байтов.

Чтобы получить i-й байт строки числом, пишешь ord($str{$i}). Чтобы создать строку из нескольких байт, пишешь либо chr(123) . chr(234) либо "\xa0\xc0".

Чтобы разбить utf-8 строку на массив символов (а там символы могут состоять из нескольких байт) нужен хак с preg_split.

> Может быть есть способ определения "сырого потока" данных для дальнейшего воспроизведения?
Нет, надо написать 2 функции перекодирования из cp1251k в utf-8 и обратно. Начинай писать, я могу проверить. Если что-то еще непонятно - уточняй.



Аноним 13/01/16 Срд 12:03:56 #491 №624726 
>>624720
Хех, я понял что мне можно по коду из ord вычислить символ и перекодировать его отобразив непосредственно на HTML странице или внутри файла текстом, это да, без проблем. Но мне нужно записать этот файл обратно же с именем из этих символов.
Аноним 13/01/16 Срд 12:19:37 #492 №624733 
>>624726

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

Ты разбиваешь входную строку на символы (в зависимости от кодировки) и перекодируешь их посимвольно. И результат сохраняешь в другую строку.
Аноним 13/01/16 Срд 12:24:56 #493 №624735 
>>624733
Сводя всё конкретнее, мне нужно чтобы была возможность НЕ считывать из файла, а записывать файлы с именем ҒҒҒҒҒҒҒҒ. Именно меня интересует возможность присвоения имени ҒҒҒҒҒ к файлу в винде.
Аноним 13/01/16 Срд 12:30:12 #494 №624739 
>>624733
ОП, если это ты, скажи, у тебя получилось под виндой создать файл с именем ҒҒҒҒҒ? Если да, то я не буду спорить с тобой, а постараюсь вникнуть в твой текст.
Аноним 13/01/16 Срд 12:35:09 #495 №624742 
>>624739
>получилось под виндой создать файл с именем ҒҒҒҒҒ
Конечно же с помощью ПХП
Аноним 13/01/16 Срд 13:10:38 #496 №624759 
>>624735

Для этого нужны функции перекодировки которые я описал.

>>624739

У меня нет такой версии Windows чтобы проверить. Я знаю что в обычной российской версии винды перекодирование в 1251 работает.


Аноним 13/01/16 Срд 13:14:13 #497 №624763 
>>624739

Проверить можно так: посмотри 16-чный код этой буквы Ғ в cp1251k. Допустим это XX.

затем напиши имя файла так:

$name1251k = "\xXX\xXX\xXX.txt";
file_put_contents($name1251k, "test");

Вместо XX должен быть 16-чный код этого символа из страницы на википедии.

Аноним 13/01/16 Срд 13:26:47 #498 №624778 
>>624759
Они не помогут, поверь мне, я пропердолился с этим уже больше двух дней. Поставь виртуалочку на досуге, и затесть работу этого говна.
По идее же, должен работать такой код:
$file = chr(210);
fopen("C:\\ASED\\$file","w");
Так как судя по функции ord("Ғ"); - это 210. Но нет, нихера.

>>624763
Это вообще не работает. Тем более что 16-чной адресации не существует в cp1251k если я не ошибась конечно.

Есть мнение что файловая система NTFS использует кодировку символов UTF-16, но я пробовал опять таки делать конвертацию из UTF-8 в UTF-16 и тоже крякозябры.
Аноним 13/01/16 Срд 13:33:02 #499 №624785 
>>624778

> как судя по функции ord("Ғ"); - это 210.
Неверно. 210 это первый из 2 байт которыми эта буква кодируется в utf-8. А тебе надо передать в chr код этой буквы в cp1251-k. Судя по википедии, это 0x81 в 16-чной или 129 в десятичной.

> Поставь виртуалочку
Нет.

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

> Есть мнение что файловая система NTFS использует
А я смотрел исходники PHP. В Windows есть 2 набора функций6 одни принимают данные в utf-16, другие в 8-битной кодировке (которая заивсит от языка винды и называется у майкрософт ANSI кодировка). PHP использует 8-битные функции.
Аноним 13/01/16 Срд 13:34:11 #500 №624786 
>>624778

Вот кстати таблица где записаны 16-чные коды символов в utf-8 и cp1251k: http://wiki.soiro.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Utf-8_cp1251-k.gif

Аноним 13/01/16 Срд 14:00:44 #501 №624795 
>>624785
>>624786
>Нет.
Разговора тогда нет, спасибо что попытался помочь.
Аноним 13/01/16 Срд 17:00:08 #502 №624896 
ОП, проверь задачу Клавиша Shift.

http://ideone.com/4a790y
Аноним 13/01/16 Срд 17:43:24 #503 №624901 
Пальцаны, делаю тестовое задание на php, до этого не учил его.
В общем нужно сделать срипт, который принимает данные через get запрос, решает задачку и выводит ответ на страницу.

Срипт нужно расположить на сервере, чтобы к нему можно было обратиться по url.

Я справился со всем, кроме последнего. Где мне сервер найти? Можно как-то со своего компуктера запустить этот мини сайт?
Аноним 13/01/16 Срд 18:37:11 #504 №624935 
ОП, живой хоть? Или до сих пор от праздников отходит?
Аноним 13/01/16 Срд 18:56:26 #505 №624950 
14527005870770.png
Оп - няша, если я благодаря тебе устроюсь на работу - я тебе переведу денег с первой зп.
Аноним 13/01/16 Срд 18:56:59 #506 №624951 
Написал недавно один человек, с которым я работал по фрилансу, но не по веб-программированию, спрашивает смогу ли я написать скрипт который будет делать из ссылок РСС в стиле XML 2.0, то есть граббит определённые сайты тайтлы и дескрипшены и формирует из них РСС ленту я так понял. Я что то подобное делал, парсить у меня вроде бы получается, вот только немного не помню, что значит сформировать РСС? То есть задача спарсить определённые данные с разных сайтов в определённый формат и подключить это к какому-то рсс-каналу, где оно будет всё автоматически гонять? То есть мая задача только спарсить в правильном формате и закинуть на определённый сервис или дать в плагин, а саму рассылку он уже сделает сам?
Аноним 13/01/16 Срд 22:08:10 #507 №625054 
Допустим у меня есть класс родитель от которого наследуется много контроллеров. Стоит ли в этом классе сразу создать в конструкторе экземпляры объектов, которые потом будут использоваться в дочерних классах? Или в каждом классе отдельно создавать экземпляры конкретно тех объектов, которые в нем будут использоваться?
Аноним 13/01/16 Срд 22:38:48 #508 №625092 
>>624951
дак и спроси у него, что ты от нас хочешь?
someApprentice 13/01/16 Срд 23:00:10 #509 №625108 
>>610656
>>612606
>https://github.com/someApprentice - у тебя какие-нибудь вопросы к ОПу или анонам есть? Или мы все разобрали?
Да, есть. Все это время я прострировал потому что не как не понять как выглядит простая регистрация на ООП. Спасибо что вспомнил про меня.
Помимо этого, я, все же, пытался понять свою ошибку и пытался как-то переделать код. Сейчас я еще раз перечитаю пасты, подумаю и после попытаюсь сформулировать правильные вопросы.


Спасибо.
Аноним 13/01/16 Срд 23:27:13 #510 №625122 
>>625108
Спасибо анончик, я почитал пасты ОПа по твоим вопросам и понял как дальше делать студентов. Я тоже пилю с TableDataGateway.
Аноним 13/01/16 Срд 23:31:40 #511 №625126 
Пацаны, вот у меня есть кнопка сенд, она собирает данные с текстбоксов потом что-то там делается и выводятся новые данные на той же странице.
При этом после нажатия на кнопку сенд данные в текстбоксах пропадают, как сделать, чтобы они оставались?
Аноним 13/01/16 Срд 23:37:56 #512 №625128 
>>625122
Можно подсмотреть у тебя?
Ответы за 8-9 января Аноним 13/01/16 Срд 23:40:21 #513 №625131 
http://integer64.github.io/site-layout/

>>621449

По 10-й задаче: надпись [2, 3, 4] слева надо сделать серой. Насчет картинки - меня беспокоит что из-за width 100% картинка может в каких-то условиях увеличиться. Нельзя ли сделать через max-width: 100%? В остальном, все ок.

По 11-й задаче: нет рамки при фокусировании верхнего переключателя с клавиатуры (тот что на радиокнопках) - почему?

Вместо label.button лучше писать просто .button в CSS коде, так как имени класса достаточно чтобы идентифицировать элемент.

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

Ну и вроде я еще тут что-то отвечал: >>621519

>>621602

Можно но непонятно зачем. Что тебе мешает сразу написать $x = new SomeClass ?

>>621665

> cavinSpacey
Не надо так. Название функции начинается с глагола и обозначает что она делает. А пошутить можно в комментарии к ней.

> $dots = "/( ?)+([,.?!])( ?)+/";
приучайся везде ставить флаг u, а то потом не заработает регулярка с русскими буквами

> ( ?)+
В чем смысл писать вопрос и плюс? Это по моему можно заменить на звездочку.

Названия переменных тоже выбраны не очень удачно:

> $reg = preg_split('/(?<=[.?!])\s+/', $a);

Лучше заменить:
$reg -> $sentences
$a -> $text
$jobsAlmostDone -> $sentences

> for ($i = 0; $i < count($reg); $i++) {
Лучше foreach использовать для перебора массива

> mb_strtoupper(mb_substr($reg[$i],0,1)).mb_substr($reg[$i],1);
Это лучше вынести в отдельную функцию

Сам принцип работы программы правильный, молодец, но вот код можно еще улучшить.
Слим, задача про Йоду (и нет, это не реклама) Аноним 13/01/16 Срд 23:41:52 #514 №625132 
>>621681

> $creditBalance x $percent) + $servicePayment
Это повторяется там 3 раза, подумай как избавиться от повтора и упростить код. Если не знаешь как, можешь попросить подсказку.

>>621694

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

>>621697

Никаких

>>621781

Ой-ой, как код плохо оформлен. Ну что это за переменные, что значат их названия?

> $a
> $array1
> $array2
> $value
Надо их переименовать, а то читать тяжело.

> preg_replace('/[,;]/', "", $a);
Лучше заменять на пробел, а то слова могут склеиться

> for ($i = 0; $i < count($array2); $i++) {
Тут лучше foreach

> $array2[$i] = array_reverse($array2[$i]);
> $array2[$i] = implode(" ", $array2[$i]);
Лучше использовать временную переменную вместо элемента массива (меньше скобок будет)

> mb_strtoupper(mb_substr($array2[$i],0,1)).mb_substr($array2[$i],1);
Это надо вынести в отдельную функцию с понятным названием

Сам алгоритм решения верный, но вот код очень неаккуратно выглядит.

>>621820

Вот тут http://docs.slimframework.com/configuration/settings/ нет настройки slim.errors
Вот тут http://docs.slimframework.com/errors/output/ эта настройка меняется через environment

Я бы проверил исходники, поискал эту настройку там и проверил, можно ее передавать как конфиг или нет.
Задачи про ошибки Аноним 13/01/16 Срд 23:42:28 #515 №625133 
>>621853

> $test_preg_split = array();
Эту строчку можно не писать, она ничего не делает полезного. Саму переменную надо назвать осмысленнее, например $sentences

> for ($i = 0; $i < $index-1; $i++) {
Тут лучше использовать foreach. Также, по моему из-за $i < $index-1; ты пропускаешь последнее предложение.

> ( ?)+
Тут можно использовать звездочку вместо вопроса и плюса

> [,]
Квадратные скобки не требуются

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

>>621997

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

Советы:

> '/\\,/' => ', ',
> '/\\;/' => '; ',
> '/\\!/' => '! ',
Эти выражения можно объединить в одно, а при замене использовать $1 .. $9 для обозначения знака препинания. Более того, получившееся выражение можно засунуть в первый массив с регулярками для поиска ошибок.

> '/жы/ui' => 'жи',
> '/шы/ui' => 'ши',
Тоже можно объединить.

> '/ а /u' => ', а ',
> '/ а, /u' => ', а, ',
> '/ а \\-/u' => ', а \\-',
> '/ но /u' => ', но ',
> '/ но, /u' => ', но, ',
Тоже можно объединить

> "/.{3,5}координально.{3,5}/ui",
Не выводит сообщение об ошибке если слово стоит в самом начале текста: https://ideone.com/jdUhTn

> [^а-яё]здела
Здесь наверно лучше использовать \\b которое значит «граница слова» и ищет место, где с одной строны строит \\w (буква, цифра, подчеркивание), а с другой - не \\w.

> [а-яёa-z]\\sа
Здесь лучше разрешить использовать больше 1 пробела, для обозначения того что в начале идет буква, можно испоьзовать \\w (любые буквы, цифры, подчеркивание)

> ...
ТОчка значит «любой символ». Чтобы искать многтточие, надо писать \\.\\.\\. Имей в виду, что в юникоде есть многоточие одним символом: …

Я думаю, там лучше использовать \\b чтобы сказать что справа от слова «но» не должно быть букв или цифр.

> "/.{3,5}[а-яёa-z]\\sа(\\s?|,|...| \\-).{3,5}/u",
> "/.{3,5}[а-яёa-z]\\sно(\\s?|,|...| \\-).{3,5}/u",
Можно объединить вместе

> [^\\s]
То же самое что \\S

> [,\\.!\\?:;][^\\s]
Это может сработать на многоточие .. или 2 воскл знака: !!. Надо вместо ^\\s написать «любая буква»

> for ($i=0; $i < $possibleErrorsCount; $i++)
Тут удобнее исплоьзовать foreach

> if (preg_match_all($possibleErrors[$i]['pattern'], $text, $matches)) {
if можно не использтовать для preg_match_all, если она ничего не найдет то массив будет пустой и цикл не выполнится ни разу.

> foreach ($cleanMatches as $key => $value)
$value надо переименовать. $key не надо писать если ты его не используешь.

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

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

>>622088

Да, старые, так что в дополнение к ним почитай php the right way и узнай что поменялось в PHP. Насчет книг - не знаю хороших и современных.

>>622092

> 0 => array (
> 1 => array
Не надо писать тут 0, 1, PHP сам их пронумерует.

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

> И получается, что ошибок не найдено, а текст исправляется.
> Как скрипт остановить в этом случае?
Можно проверять количество найденных ошибок через if и не исправлять если их ноль.
Вектор, паттерны, задача про ошибки Аноним 13/01/16 Срд 23:43:25 #516 №625135 
>>622117

sql, серверный язык вроде PHP, ООП, MVC, фреймворки

>>622273

> $bigRegexp = "/координально|сдесь|
Не, это не лучшая идея, у тебя уже получается на каждую ошибку аж 3 регулярки (общая, для поиска и для исправления), раскиданных по программе. Это уже перебор. Очень неудобно будет их добавлять или исправлять в 3 местах сразу.

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

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

>>622288

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

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

### Антикризисные меры

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

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

1. Сократить в каждом департаменте 40% (округляя в большую сторону) инженеров, преимущественно самого низкого ранга. Если инженер является боссом, вместо него надо уволить другого инженера, не босса.

2. Увеличить в целях стимуляции умственной деятельности базовую ставку аналитика с 800 до 1100 тугриков, а количество выпиваемого им кофе с 50 до 75 литров. В тех департаментах, где руководитель не является аналитиком, заменить его на аналитика самого высшего ранга из этого департамента (а бывшего руководителя вернуть к обычной работе)

3. В каждом департаменте повысить 50% (округляя в большую сторону) менеджеров 1-го и 2-го ранга на один ранг с целью расширить их полномочия.

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

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

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

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

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

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

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

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

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

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

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

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

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

Вот что надо сделать:

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

Советую показывать промежуточные варианты.

>>622296

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

- мы применили if и это принесло профиты
- мы применили цикл и массив и это принесло профиты

Вряд ли кто-то будет хвастаться что он знает основы языка? Паттерны это те же основы только в плане архитектуры. Они используются например в общении между программистами: «там в проекте есть FrontController, мы можем наш код в него дописать» или «давайте тут не будем заморачиваться, а используем Single table Inheritance».
Аноним 13/01/16 Срд 23:43:59 #517 №625136 
>>622297
>>622300

Все зависит от тебя

>>622862

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

>>622383

Используй dependency injection, то есть создай сначала калсс с сокетом и передай его в класс Imap через конструктор или аргумент метода.

Урок https://gist.github.com/codedokode/e1d31a31b37d5f635057

>>622403

А наши задачки на HTML прошел? Может стоит глянуть? А так, я бы советовал учить JS/DOm/jQuery, верстальщик без яваскрипта маловостребован, тем более в кризис. В Оп посте есть задачки и ссылки на учебник learn.javascript.ru .

>>622428

> $number = 0;
> $op = $char;
Это там раз 5 повторено, надо бы вынести из свитча.

В свитче поставь default и в нем сделай die чтобы если ты допустишь ошибку, ее было видно (потом когда выучишь исключения, будешь исплоьзовать их).

> case ("+"):
Скобки не требуются

Еще там 2 раза скопирован свитч с операциями - убери копипасту.

>>622437

Поищи команду SET NAMES в дампе, если ее нет, то надо определить кодировку дампа и поставить эту команду. Также, посмотри какая кодировка стоит, если есть, в CREATE TABLE. Лучше всего использовать utf8 (в mysql она пишется без дефиса). Если кодировка не указана в CREATE TABEL то она берется из кодировки базы или настроек mysql в конфиге.

>>622445

Неправильно советуешь. iconv не нужен если все правильно настроено. В коде надо использовать utf-8, при соединении с БД делать set_charset или SET NAMES utf8

>>622520

Сложнй модуль судя по описанию. даже если найти готовые плагины, надо их допиливать.

ulogin по моему имеет какие-то недостатки, то ли он данные какие-то собирает то ли что-то на страницу ставит, не помню уже.

>>622670

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

> доктрина это королева orm,
Да, стоит рано или поздно с ней знакомиться. Лучше пока ничего нету.

> Может есть более кошерный фреймворк, кроме бутстрапа?
Я не знаю. Бутстрап вроде самый известный.

> Чтобы была нормальная структура html и не было этой мешанины типа class class-another class-abc class-class-class
Это нормально.

>>622691

Можешь сделать и так, и так, можешь сделать функцию для заквочивания массивов, можешь подключить квери билдер. Но не стоит генерировать тысячи плейсхолдеров для каждого элемента массива.
Аноним 13/01/16 Срд 23:45:08 #518 №625137 
Если вы что-то написали до 10 января и я вас пропустил, то напомните о себе. Если после - подождите еще, решайте пока задачки, читайте учебники, не тратьте зря время.

>>622820

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

> циклы
Там ошибки, смотри внизу на ideone:

> PHP Notice: Undefined variable: paymentAfterAll in /home/si1YgK/prog.php on line 12
> PHP Notice: Undefined variable: month in /home/si1YgK/prog.php on line 20
Обращаешься к несуществующей на тот момент переменной.

> if ($totalCredit <= $paymentAfterAll
Это явно непраивльно так как переменная справа еще не существует.

>>622890

При ошибке надо бы завершать скрипт, а не продолжать выполнять

>>622902

Все зависит от тебя, как ты воспользуешься своими знаниями. Цифры смотри на сайте вакансий и фрилансе.
Аноним 13/01/16 Срд 23:54:35 #519 №625143 
>>625137
Посмотри потом файлообменник. Я им доволен, но ты 100% найдешь что еще можно улучшить.
>>621786
Аноним 14/01/16 Чтв 00:03:35 #520 №625148 
Спасибо, ОП, ты лучший. Буду перерабатывать коды на все задачи, что ты мне поправил, но заново грузить не буду, чтобы не нагружать тебя. Учту все замечания в следующих задачах.
Аноним 14/01/16 Чтв 00:04:58 #521 №625149 
>>625148
Молодец.
Аноним 14/01/16 Чтв 00:06:56 #522 №625152 
И ещё такой вопрос: как много времени уделить изучению js+html+css? Насколько они необходимы пхп-программисту?
Аноним 14/01/16 Чтв 00:11:46 #523 №625158 
>>625152

А ты пройди наши задачки из Оп поста по этим темам - этого будет достаточно. Конечно нужны, ведь тебе надо будет работать с чужой версткой и важно не разломать ее и не писать код которй потом будет тяжело поддерживать.
Аноним 14/01/16 Чтв 00:14:48 #524 №625160 
>>625158
Да, спасибо, я пока финальные задачи по пхп доделываю. Хтлм там следующим идёт. Эх, жалко второго уровня нет
Аноним 14/01/16 Чтв 00:26:50 #525 №625170 
>>625160

Вместо второго уровня по PHP идут задачи про студентов и файлообменник в ОП посте.
Аноним 14/01/16 Чтв 01:02:36 #526 №625185 
>>621775
>>622327
>>622965
ОП, первые два до 10го и последнее 10го января. Проверь.
Аноним 14/01/16 Чтв 10:07:03 #527 №625288 
>>620231
Проиграл на весь офис.
Аноним 14/01/16 Чтв 11:44:10 #528 №625339 
>>610656
>>612606
>>625108
https://github.com/someApprentice/Students

Вроде бы разобрался. Один вопрос, у меня init написан процедурно, не возникнет ли у меня проблем, если, например, в этом же коде, я захочу написать его как класс? Я помню что так можно делать, просто не понимаю почему сейчас лучше процедурно. Это потому что так удобней делать внедрение зависимостей? Я бы классом сделал и внедрял её статически __construct(PDO Init::$pdo).
Приуныл чёт(( Аноним 14/01/16 Чтв 11:55:02 #529 №625340 
14527617021510.jpg
Оп, поясни пару вещей: нахуй все это надо и хули за все это будет?
1) Все эти мвц, паттерны, алгоритмы - зачем это все? Попытался написать код в стиле дезигн паттернс, он разросся и расплодил сущностей, а реальное изменение его все равно потребует перепила половины файла. Да и вообще, ооп в пхп - к чему это? К чему все эти симфони и прочие фреймворки, если все равно пишутся бесконечные админки, круды и проверка форм? Куда расти и зачем? Чтоб смотрите как могу? Ведь все равно, я так понимаю, хайлоад на пхп не пишут, каких-то хардкорных вычислений не делают и уж тем более не рисуют красивой картинки или каких-то распределенных систем, например. Так зачем все это?
2) А что в итоге? Вот подучился я. Приехал в ДС. На какую зарплату рассчитывать стажеру? А после пары лет? А к тридцатнику? А дальше куда деваться? Хэдхантерам и прочим фрилансим.ру не доверяю, хочу твоего мнения.

И вопрос не по теме: где искать таких няш, как ты, по другим языкам - с++, шарп, питон, етц. Ну, наставничество и вот это все. Не в рашке, надо понимать, лол?
Аноним 14/01/16 Чтв 12:09:46 #530 №625344 
>>625340

> Все эти мвц, паттерны, алгоритмы - зачем это все?
Циклы, переменные, функции - зачем это все? Это основы без которых ничего не сделать.

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

> К чему все эти симфони и прочие фреймворки, если все равно пишутся бесконечные админки, круды и проверка форм?
Ну так с ООП и ORM формы и круды делать проще и быстрее. Это же ад, делать без готовых библиотек форму с валидацией и работой с БД.

> хайлоад на пхп не пишут,
фейсбук, википедия не хайлоад?

> На какую зарплату рассчитывать стажеру?
С этим на hh.ru или в wrk

> по другим языкам
Не знаю. Но я думаю если ты хорошо изучил PHP то с другимии языками ты и сам наверно справишься.
Аноним 14/01/16 Чтв 12:17:05 #531 №625345 
>>625344
Ты разве ОП?
Циклы, переменные и функции - это основы. А фабрики абстрактных адаптеров - это ебанина.
Чего писать-то, те же скрипты на 300 строчек.
Почему не хочешь ответить на вопрос о зп? Сколько сам получаешь, например? А аноны, которые тут к успеху пришли? Друзья, знакомые?
Аноним 14/01/16 Чтв 12:18:32 #532 №625346 
>>625344
>или в wrk
Там ничего толкового не будет точно, дам одни долбоёбы-версталы да сис. админы сидят у которые ждут полной автоматизации в настройке и развертывании сети, чтобы остаться безработными.
Аноним 14/01/16 Чтв 12:19:20 #533 №625347 
>>625345
ОП в принципе тоже не совсем компетентный.
Аноним 14/01/16 Чтв 12:30:16 #534 №625355 
>>625345

> Почему не хочешь ответить на вопрос о зп?
Потому что не хочу. Мне не нравится когда людей оценивают исключительно по этой цифре. Сам никогда не интересуюсь кто сколько зарабатывает.
Аноним 14/01/16 Чтв 12:33:05 #535 №625357 
>>625355
Но это же показывает степень мастерства? Не? Просто так же не будут платить РНР разработчику.
Аноним 14/01/16 Чтв 12:42:19 #536 №625360 
>>625357

Тогда тебе лучше ориентироваться на тренеров по дзюдо, владельцев нефтяных компаний и получателей господрядов - такому мастерству как у них, в нашем треде точно не научат.
Аноним 14/01/16 Чтв 12:42:59 #537 №625361 
>>625355
Вообще это не имел ввиду. Сколько получает СРЕДНИЙ стажер по дс? А хуй с 3 годами стажа? А сеньор? А дальше что делать и какие перспективы?
Аноним 14/01/16 Чтв 12:45:31 #538 №625363 
>>625361
Может тебе стоит определиться, чем ты хочешь занимать? Бек енд или можете тебе больше нравится фронтенд?
Аноним 14/01/16 Чтв 12:47:31 #539 №625365 
>>625360
Хех. Ну в принципе да, если так подумать ЗП не показатель в некоторых случаях.
>>625361
В первую очередь надо выбирать занятие кодингом не судя по тому сколько получает кодер, а по заинтересованности в кодинге как таковому непосредственно.
Аноним 14/01/16 Чтв 12:48:02 #540 №625367 
>>625363
Вротенд на РНР? ЩО?
Аноним 14/01/16 Чтв 12:50:55 #541 №625368 
>>625345
>Почему не хочешь ответить на вопрос о зп? Сколько сам получаешь, например? А аноны, которые тут к успеху пришли? Друзья, знакомые?
ОП успешный человек! У него, очевидно, пассивный доход или уже накопленные капиталы раз у него есть время и на нас! А ведь он отвечает почти каждый день, и это длиться уже не первый год. Ты представляешь насколько ОП поразителен? говорите что он не компетентен? Я после его уроков диву даюсь какой у меня красивый и простой код. Я лично после его уроков за год-полгода устроился в веб-конторку с первого раза, просто оставив ссылку на свой гитхаб в резюме, и продолжаю идти к успеху который, как я хотел бы, не уступил успеху ОПа.
Аноним 14/01/16 Чтв 12:52:51 #542 №625369 
>>625368
Ты случаем не семен ОПа?
Аноним 14/01/16 Чтв 12:53:08 #543 №625370 
>>625369
Нет
Аноним 14/01/16 Чтв 12:53:22 #544 №625371 
>>625365
Допустим, дальше что?
>>625363
Гениальный вопрос с учетом заголовка треда.
>>625368
Он охуенен, базара нет. Вопроса про зарплаты в отрасли это не снимает.
Аноним 14/01/16 Чтв 12:54:18 #545 №625372 
>>625371
>Он охуенен, базара нет. Вопроса про зарплаты в отрасли это не снимает.
>базара
Тебя это ебать не должно.
Аноним 14/01/16 Чтв 12:59:48 #546 №625375 
>>625371
>Допустим, дальше что?
Когда ты это допустишь, тебя уже ебать не будет соклько ты получаешь, ты будешь получать удовольствие от кодинга в первую очередь.
>Гениальный вопрос с учетом заголовка треда.
Ну ОП еще тут развел верстку и JS тред. Только меня не одного наверное это дико напрягает, когда вёрстко-макаки его вопросами забрасывают.
>Он охуенен, базара нет. Вопроса про зарплаты в отрасли это не снимает.
Значит ты еще не определился для себя охуенен или нет, раз тебя волнует размер его хуя.
Аноним 14/01/16 Чтв 13:03:26 #547 №625378 
>>625372
Иди нахуй, кукаретик.
>>625375
Да причем тут он, тупой ты уебан?
Аноним 14/01/16 Чтв 13:05:38 #548 №625381 
>>625375
>развел верстку
А что, под нее отдельный тред?
Аноним 14/01/16 Чтв 13:07:24 #549 №625384 
>>625378
Такс, такс, с такими нервишками ты много денег не заработаешь.
>>625381
Ну просто тред именуется PHP Тред, а не вебдев. Вёрстка по сути же не имеет отношение к программированию, больше, наверное творческий процесс. Ну знаешь, типа черчения и математики.
Аноним 14/01/16 Чтв 13:08:25 #550 №625385 
>>625361

Тебе же дали совет зайти на hh.ru и сделать анализ рынка труда. Алсо, где-то тут в разделе есть зарплата-тред.
Аноним 14/01/16 Чтв 13:09:04 #551 №625386 
>>625384

Верстка это программирование расположения блоков на странице.
Аноним 14/01/16 Чтв 13:16:51 #552 №625389 
>>625340
Ты вообще читать умеешь?
->
>>625385
>Хэдхантерам и прочим фрилансим.ру не доверяю, хочу твоего мнения.
Аноним 14/01/16 Чтв 13:29:47 #553 №625401 
>>625386
Больше подходит определение - кодовая разметка, ибо сводится всё к конкретному позиционированию объектов. Так или иначе всё гораздо примитивнее как по мне. Не в обиду сказано.




Аноним 14/01/16 Чтв 13:37:33 #554 №625405 
>>625401

только почему-то многие верстальщики и php-разработчики даже эту «примитивную» технологию освоить не смогли и верстают наугад переставляя свойства. Быдлокодеры, в общем.
Аноним 14/01/16 Чтв 13:46:50 #555 №625408 
>>625405
>php-разработчики
Примитивнее относительно даже скриптовых языков я имел в виду. Но говноедом PHPшника так или иначе нельзя назвать, если он верстает на похуй.
Аноним 14/01/16 Чтв 13:48:26 #556 №625409 
14527685064020.png
14527685064081.jpg
14527685064092.jpg
14527685064113.jpg
>>625384
>>>625378
>Такс, такс, с такими нервишками ты много денег не заработаешь.
Да какой-то поехавший чсв в вкатился в тред что-то требует от нас. Его интеллигентно посылают нахуй, а он питушится от того что тут его величесивупетуху никто ничего не должен. Таким как он здесь не рады, мы тут обсуждаем кошек-мышек и аниме!
Аноним 14/01/16 Чтв 13:51:10 #557 №625413 
>>625409
Человек просто запланировал зарабатывать много денег программированием.
Аноним 14/01/16 Чтв 14:28:30 #558 №625424 
Есть ли какие-нибудь книги в которых рассматривается архитектура? Когда начинаю писать что-то крупнее сайта визитки все превращается в какую-то ебучую кашу. Что читать чтобы научиться писать красивый, понятный, структурированный и соответствующий принципам ООП код? Где на гитхабе можно посмотреть интересную реализацию того же MVC?
Аноним 14/01/16 Чтв 14:39:27 #559 №625427 
>>625413
Не обращай внимание на тупого семена
Аноним 14/01/16 Чтв 15:00:04 #560 №625440 
>>625413
Его поведение все равно не приемлемо.
Аноним 14/01/16 Чтв 15:05:48 #561 №625443 
14527731490470.jpg
Ткните, пожалуйста, носом в гайд, мануал или готовый простой скрипт, обрабатывающий хтмл форму и отсылающий писмо на заданное мыло.

Аноним 14/01/16 Чтв 15:32:25 #562 №625448 
>>625443
http://php.net/manual/en/function.mail.php
http://php.net/manual/en/faq.html.php
http://php.net/manual/en/reserved.variables.get.php
http://php.net/manual/en/reserved.variables.post.php
Аноним 14/01/16 Чтв 15:33:33 #563 №625449 
Какие задачи из оповского курса можно запихнуть в гитхаб для резюме на стажёра? Я меганюфаг, только вот задачи на второй уровень доделываю
Аноним 14/01/16 Чтв 15:34:47 #564 №625451 
>>625449
Все.
Аноним 14/01/16 Чтв 15:35:38 #565 №625452 
>>625451
Это вряд-ли. Мне даже своих студентов стыдно показывать, я уж не говорю про вещи попроще.
Аноним 14/01/16 Чтв 15:45:28 #566 №625456 
>>625368
Два горячих чаю налил с разбега и по хардкору!
ОП - это мощь и глыба, плюс хороший человек.
У меня именно с такими, как наш ОП, ассоциируется практически всё то лучшее, что есть на анонимных имиджбордах: бескорыстная помощь, братство, освещение новых горизонтов, непредвзятая оценка.
Аноним 14/01/16 Чтв 15:47:51 #567 №625458 
>>625452
Так ты делай нормально. Переделай их, чтобы бы было не стыдно.
Аноним 14/01/16 Чтв 16:02:21 #568 №625466 
проигрываю с восторженных школьников, поклоняющихся опу
Аноним 14/01/16 Чтв 16:04:31 #569 №625468 
>>625466

Но некоторые из них уже устроились на работу, ёпта. Хотя я тоже не очень отношусь к познаниям ОПа.
Аноним 14/01/16 Чтв 16:19:30 #570 №625477 
>>625468
Как будто это что-то сложное.

И я ничего не имею ни против опа, ни против его малолетних поклонников. Просто это выглядит смешно, вот и все.
И флуда слишком много в треде, поэтому призываю всех хоть чуть-чуть думать перед тем как писать.
Желательно чтобы тред состоял из полезной инфы, то есть вопросов и ответов, а не чата как сейчас.
Аноним 14/01/16 Чтв 16:25:13 #571 №625483 
>>625477
Ты первый начал.
Аноним 14/01/16 Чтв 16:25:21 #572 №625484 
>>625466
>школьников
Но ведь мне уже почти 32 года!
Завязываю, простите. Хотя это и правда.
Аноним 14/01/16 Чтв 16:39:18 #573 №625491 
>>625440
Да в чем неприемлемо-то? И для кого? Это двач, детка. Вежливо спросил, какие в среднем с зарплатами у проггеров на php разного уровня. Начались какие-то предъявы, нравоучения и оскорбления.
Аноним 14/01/16 Чтв 17:19:24 #574 №625518 
>>625491
Тебе не менее вежливо предложили посмотреть на hh.ru.
Тут был анон из ДС с зп 120к у джуна, есть знакомый с зп 150к опять же в ДС, но там питон и он админ.
Хз, чё тебе надо, возьми да сам посмотри.
Аноним 14/01/16 Чтв 17:31:33 #575 №625521 
>>625518
Ну попросил же мнение анонов
Аноним 14/01/16 Чтв 17:43:05 #576 №625523 
>>625518
>с зп 120к у джуна
Ты хотел сказать 12к видимо
Аноним 14/01/16 Чтв 17:44:54 #577 №625524 
>>625523
Или он под ДСом Минск имел в виду.
Аноним 14/01/16 Чтв 18:05:41 #578 №625533 
>>625424
Бамп
Аноним 14/01/16 Чтв 18:17:30 #579 №625536 
>>625523
>>625524
Лол
>>625518
120к. У джуна. Серьезно?
Аноним 14/01/16 Чтв 18:22:32 #580 №625538 
>>625533
Эх, опять платина...

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

>>625536
Серьезно. Не путай стажера с джуниором.
Не путай веб-студии, которые занимаются версткой и cms, с крупными программистскими конторами.
Не занимайся щит-постингом на дваче, пиши код.
Аноним 14/01/16 Чтв 18:23:46 #581 №625540 
>>625538
120 у джуна это как-то слишком прохладно, постоянно вижу вакансии в ДС с зараплатой что-то около 120 но это для сеньоров и мидлов, у джунов дай бог 60к.
Аноним 14/01/16 Чтв 21:55:49 #582 №625729 
>>625185
ОП, сам сказал, кто до 10го еще не проверен откликнитесь. Ну ты где?
Диплом Аноним 14/01/16 Чтв 22:31:48 #583 №625762 
ОП, посоветуй тем для диплома по сабжу. Чтобы был мотив обмазаться фреймворками, базами данных (мб не только SQL даже)
Аноним 14/01/16 Чтв 23:09:31 #584 №625791 
>>619873 (OP)
ОП, привет.
Я снова проклятые регекспы принёс, посмотри, пожалуйста:
http://ideone.com/Z2veAt
Задача про опечаточников, вместе с заменой, по сути первая часть задачи там же содержится. Ты в прошлый раз мне посоветовал замену проводить через strtr() и бить строку на слова, что я и сделал (хоть и перестал чувствовать себя регексп-ниндзя).
И со всеми праздниками тебя! Спасибо, что тратишь своё время.
Аноним 15/01/16 Птн 00:19:04 #585 №625846 
1.Для чего нужен кэш?
2. приведите пример проекта, где красиво и правильно записаны эксепшены в логи.
Аноним 15/01/16 Птн 06:03:43 #586 №625936 
>>625375
Я уже практически не пишу в этом треде, смотря на все это безумие, когда задачки школьников на дивы и регулярки комментируют огромными пастами, а мои мини-приложения тонут в потоках задачек и флуда без внимания. Рак, геи, аниме, задачки, школьники, верстка убили этот тред.
Аноним 15/01/16 Птн 06:22:15 #587 №625939 
>>625762
Собственная ЦМС, базарю.
Аноним 15/01/16 Птн 09:01:09 #588 №625953 
>>625939
Ну не тролль ты. Или дай пример - цмс чего, кого, для чего...
Аноним 15/01/16 Птн 09:01:22 #589 №625954 
>>625484
Ёпт, а я думал, я тут самый старый.
26-лвл слоупок
Аноним 15/01/16 Птн 09:38:34 #590 №625959 
>>625791
Отличное решение, а у меня фуфло какое-то с кучей регулярок и без функций, при этом без замены кириллицы в латинских словах: >>623605
Заменить-то, пожалуй, не сложно, но только я бы снова лепил отдельную регулярку для этого...
А у тебя не понял, как так функция checkText() работает и всё передаёт без return?
Я сделал клавишу Shift вчера, там только столкнулся с тем, что return возвращает единожды, поэтому надо собирать то, что происходило в цикле через array_push в пустой массив, выводить его return'ом.
Снова вижу, что ни хрена не понимаю.

Я что-то не разберусь никак с нормальной заменой регулярок с помощью $1, $2 и так далее - какая-то каша на выходе, приходится несколько разных регулярок делать для такого, ОП уже отругал. Вот это подтянуть надо.
Аноним 15/01/16 Птн 09:57:41 #591 №625966 
>>623318
На всякий случай: http://1prime.ru/mainnews/20160114/822980062.html
Аноним 15/01/16 Птн 10:28:00 #592 №625982 
>>625959
Чёртов двощ, с трудом понял, троллишь ты или нет. Спасибо, если нет. У тебя даже компактнее как-то это всё, хотя способ выделения опечаток [] и правда выглядит топорно.
У меня, как видишь, для обратной замены ещё один массив с буквами, и ещё один регексп, только наоборот, так что...
А checkText() у меня ничего и не передаёт, она выводит словом из массива, и всё.
Про клавишу Shift только тебя не понял.
Насчёт $1 и скобок, я где-то прочитал годную статью, но не смог её найти сейчас. В мануале есть, посмотри пример с подмасками: http://php.net/manual/ru/function.preg-replace.php . Суть в том, что ты ставишь скобки в регэкспе, и можешь потом в preg_replace() в $replacement к ним обращаться, по номеру скобки, в том порядке, в котором они у тебя стоят, начиная с $1 ($0 это всё выражение вроде). Очень прикольно! Мне пришлось понять, когда Grammar Nazi делал, хотя чем дальше в лес, тем больше дров, хочется уже с ними закончить и ООП всякое пройти. Жду ОПа вот.
Аноним 15/01/16 Птн 10:28:49 #593 №625983 
>>625982
>выводит словом
слово за словом
Аноним 15/01/16 Птн 10:56:31 #594 №625985 
>>625982
Ноуп, даже и не думал троллить.
>У тебя даже компактнее как-то это всё, хотя способ выделения опечаток [] и правда выглядит топорно.
Да, надо бы сделать как раз через массив с переворачиванием регулярок с кириллицы на латиницу и наоборот и через '$1[$2]', как у тебя это реализовано. Так намного компактнее всё выходит.
>А checkText() у меня ничего и не передаёт, она выводит словом из массива, и всё.
Я вот как раз не знал, что там может быть просто echo, думал, что только return там работает. Думал, что иначе нельзя сделать какой-то результат доступным вне функции.
>Насчёт $1 и скобок, я где-то прочитал годную статью, но не смог её найти сейчас. В мануале есть, посмотри пример с подмасками: http://php.net/manual/ru/function.preg-replace.php . Суть в том, что ты ставишь скобки в регэкспе, и можешь потом в preg_replace() в $replacement к ним обращаться, по номеру скобки, в том порядке, в котором они у тебя стоят, начиная с $1 ($0 это всё выражение вроде). Очень прикольно!
Спасибо, бро, сейчас читаю. Вроде же всё понятно, действительно, всё даже и совсем не сложно. А я почему-то их у ОПа на сайте попробовал, как-то толком не пошло - я и забыл про них.
У меня и Grammar Nazi написан с кучей регулярок, за что ОП и отругал.
Перепишу всё теперь.
>чем дальше в лес, тем больше дров, хочется уже с ними закончить и ООП всякое пройти
Я хочу потом ещё кучу всяких задачек пройти и весь учебник ОПа полностью без подсказок и возвращения к уже решённым задачам - хочу набить руку на этом, чтобы уже не задумываться о том, как там массив с помощью foreach разложить на ключи и значения и такого типа.
На разные функции хочу какие-нибудь задачки потом порешать, а то совсем неуверенно себя чувствую.
Аноним 15/01/16 Птн 10:57:50 #595 №625987 
>>625982
Клавиша Shift - это следующая задача, уже после опечаточника идёт.
Аноним 15/01/16 Птн 11:47:08 #596 №626019 
Ох щи, до чего же просто управляться с $n в preg_replace...
Вот так: что-то пропустишь или не придашь чему-либо должного значения, а потом лепишь кучу лишнего кода и выдаёшь топорные решения...
Спасибо анончику и ОПу, всё-всё переделаю теперь, где лепил лишние регулярки, вместо того чтобы просто использовать $n.
Также узнал (здесь звучит смех), что достаточно просто подставить в preg_replace массив из регулярок и массив из замен, чтобы всё работало так же, как работает при цикле с foreach и сложным массивом из массивов с регулярками и заменами...
Функция, оказывается, сама обходит всё значения в массиве, подставляя их в $pattern и (из другого массива) в $replacement.
Откровения уровня... короче, очень невысокого уровня.
Аноним 15/01/16 Птн 11:48:48 #597 №626022 
>>626019
>Также узнал (здесь звучит смех), что достаточно просто подставить в preg_replace массив из регулярок и массив из замен
Я тебе это еще месяц назад втолковывал.
Аноним 15/01/16 Птн 11:53:56 #598 №626024 
>>626022
OP, eto ti?
Аноним 15/01/16 Птн 11:55:35 #599 №626025 
>>626024
Нет, я еще до ОПа это говорил.
Аноним 15/01/16 Птн 11:56:50 #600 №626026 
>>625953
САП ОП и все наблюдающие за этой проблемой >>624650
>>624126
>>624077
>>624066
>>624051
>>622641
>>622533



В итоге я нашел.

Действительно, как я и предполагал изначально дело заключается в том, что PHP использует устаревший виндовый API , который работает только с ASCII или ANSI. Соответственно невозможно было никаким образом записать имя в файловую систему с любым Юникод символом под Виндой. Решение я нагуглил на стэк оверфлоу, чел написал класс для работы с winAPI, похоже, что напрямую через COM(ОП поправь если не так).

https://gist.github.com/nicolas-grekas/2665437 - решение.

Просьба кстати ознакомиться с поделием этого человека к ОПу и всем профи.
Аноним 15/01/16 Птн 12:04:10 #601 №626029 
>>626026
>с любым Юникод символом под Виндой
Т.е. с русским тоже бы не проканало?
мимокрок
Диплом Аноним 15/01/16 Птн 12:05:39 #602 №626031 
ОП, посоветуй тем для диплома по сабжу. Чтобы был мотив обмазаться фреймворками, базами данных (мб не только SQL даже)
Аноним 15/01/16 Птн 12:05:46 #603 №626032 
>>626022
У меня стремление всё усложнять же.
Наверное, пару недель назад, когда я возился с задачей на проверку и исправление ошибок и всех терроризировал ею?
Я просто как раз начал всё изучать числа 12-15 декабря, месяц назад, когда впервые открыл сайт ОПа.
Аноним 15/01/16 Птн 12:11:45 #604 №626034 
>>626029
Чому? Проканало бы.
Аноним 15/01/16 Птн 12:12:02 #605 №626035 
>>626031
Собственная ЦМС, базарю.
Аноним 15/01/16 Птн 12:13:03 #606 №626036 
>>626034
Так русский это же Юникод тоже, вот меня и смутило.
Аноним 15/01/16 Птн 12:15:29 #607 №626038 
>>626036
https://en.wikipedia.org/wiki/Windows-1251
Аноним 15/01/16 Птн 12:15:51 #608 №626040 
>>626038
Да, да, уже понел, спасибо. Тормознул.
Аноним 15/01/16 Птн 12:38:43 #609 №626051 
http://ideone.com/1HTJJ2
Объясните, пожалуйста, аутисту, почему с русским Аргентина манит негра и вообще с чем-то русским работать не хочет, хоть и mb_internal_encoding('utf-8'); присутствует.
Аноним 15/01/16 Птн 12:40:32 #610 №626052 
>>626051
http://php.net/manual/ru/function.mb-substr.php
Аноним 15/01/16 Птн 12:40:32 #611 №626053 
>>626051
mb_substr
Аноним 15/01/16 Птн 12:41:31 #612 №626054 
>>626052
>>626053
Спс
Аноним 15/01/16 Птн 15:24:20 #613 №626166 
>>626035
Заебал, шутничок.
Аноним 15/01/16 Птн 15:44:59 #614 №626179 
>>626031
Сделай что-то типа соцсети для универа.
Преподы регистрируются, студентота. Могут выбирать факультет, курс, выкладывать файлы (фотографии, аудио- и текстовые файлы в разных форматах), переписываться друг с другом, подписываться на новости друг друга, ставить лайки и дислайки.
Аноним 15/01/16 Птн 15:48:10 #615 №626182 
Завожу свежий код
Циклы №1 http://ideone.com/AS8oDo
Циклы №2 http://ideone.com/KILTAI или вот так http://ideone.com/XTIYdg
Аноним 15/01/16 Птн 15:53:03 #616 №626185 
>>626179
Велосипед же. Кроме того, ИС универа уже есть итак.
Аноним 15/01/16 Птн 15:56:15 #617 №626189 
14528625756920.jpg
Как такой паттерн называется?
Аноним 15/01/16 Птн 16:16:32 #618 №626194 
Как при помощи ПХП или какими-нибудь другими методами, определить движок сайта? Есть определённый форум, на нём есть блоги, надо узнать какая система используется для блогов.
Аноним 15/01/16 Птн 16:50:50 #619 №626209 
>>626185
На каком-нибудь Moodle, наверное?
Ну, тут у анона была годная идея в одном из тредов: сервис по уборке города.
Суть токова: анон проходит по городу и видит кучку грязи. Он фотает сию кучу, заходит на сайт, постит фотку и указывает место расположения (либо оно автоматически берётся из его данных). Далее анон-дворник берёт заказ - выставляет какую-нибудь плашку "в работе", быстро убирает кучку в этом городе, фотографирует и загружает готовый вариант.
За это другие аноны скидываются ему на пивасик либо лайкают и т.п.
Что-то уровня стартапа, а может даже выше.
Аноним 15/01/16 Птн 16:58:46 #620 №626216 
>>626209
200% не взлетит
Аноним 15/01/16 Птн 17:04:08 #621 №626220 
Вот моя клавиша Shift: http://ideone.com/WQK7H4
С каждой задачей немного яснеет в этой голове. Всё яснее и яснее, что правильно я пошёл 15 лет назад учиться на филологический факультет.
В этот раз регулярки подставляются в preg_replace не через foreach, а просто так.
При этом возникает вопрос: можно ли как-то избежать дублирования... - пока писал вопрос, понял, что можно сделать одну большую регулярку с | и разными знаками, сейчас исправлю.

>>626216
Даже в качестве диплома?
Аноним 15/01/16 Птн 17:11:21 #622 №626226 
>>626220
А зачем в дипломе использовать явно мертворожденную задачу? Куда потом ее развивать в магистерской?
Аноним 15/01/16 Птн 17:20:24 #623 №626230 
>>626226
Например, можно развивать вширь.
Сделать Бюро находок - для каждого города. Вещи, документы, животные.
Фотографировать разрушенные участки дорог, зданий, опасно висящие сосульки и т.п., чтобы можно было обратиться в ЖЭУ для устранения или коллективного обращения, сбора подписей.
Если бы такая система была у самих ЖЭУ, то уже сейчас, скорее всего, многие проблемы решались бы намного оперативнее.
Сейчас в группах по городам в соцсетях такое бывает - жалуются, сообщают о пропаже или находке вещей или животных.
А тут такой анончик со своим проектом.
Это что-то уровня Росямы, но только во всех сферах.
Аноним 15/01/16 Птн 17:25:47 #624 №626232 
>>626230
Да в том-то и дело, что уже есть Росяма, а пожертвования какие-то, это совсем другое, нищая страна, какое куда кто чего платить будет, лол.
>Фотографировать разрушенные участки дорог, зданий, опасно висящие сосульки и т.п., чтобы можно было обратиться в ЖЭУ для устранения или коллективного обращения, сбора подписей.
У нас даже фотографирование хуево стоящих машин не работает. Алсо, есть всякие активные-сердитые гражданины уже давно. От нонейм хуя никому такая система не нужна абсолютно. Алсоалсо, у дворников нет телефонов с камерами, лол. Все эти пропажи-находки итак есть, они не работают, никто туда не ходит, местечковые форумы все сплошняком мёртвые.
Аноним 15/01/16 Птн 17:25:57 #625 №626233 
>>626226
Вот какой момент ещё: есть такой сайт vsezverushki.ru, на нём только по одной Москве можно отдать в дар или продать любое животное.
Посещаемость в районе 2к человек, что не особо и много.
Внимание, вопрос: во сколько такой сайт оценивается на известной бирже сайтов Telderi.ru?
Внимание, ответ: в 3 миллиона рублей.
Доход от размещения объявления на главной странице, месячный доход - выше 120 тысяч рублей. И это только Москва, а есть ведь и другие города.
А у вас всё ещё нет идей для собственных проектов.
Аноним 15/01/16 Птн 17:27:09 #626 №626235 
>>626232
Один проект для всего.
Покажи аналог, кроме Росямы, там же только ямы, ну ты понял.
И чтобы на всю Россию по городам.
Аноним 15/01/16 Птн 17:32:43 #627 №626240 
>>626233
Чтобы не быть голословным про зверюшек: http://www.telderi.ru/ru/viewsite/198901
Человеку давали больше миллиона рублей за него, но он же не дурак, чтобы продавать за годовую окупаемость.
Аноним 15/01/16 Птн 17:37:03 #628 №626245 
>>626235
Активный гражданин, сердитый гражданин, всякие прочие собянинские прожекты и начинания путиноидов.
>И чтобы на всю Россию по городам.
Паблосы вк. Кто сейчас пойдет на сторонние сервисы и как вообще узнает про них?
>>626233
Но есть же авито и ирр.ру, чем этот лучше?
И вконтакт тоже есть.
Аноним 15/01/16 Птн 17:42:49 #629 №626247 
>>626245
Я не пойму, чего тебе от нас то надо? Ты ждешь, что тебе кто-то предложит супер-уникальную и прибыльную идею?
Аноним 15/01/16 Птн 17:47:26 #630 №626249 
>>626245
Активный гражданин и т.п. - это не то, что я имею в виду. Там какие-то предложения по улучшению и тому подобное.
Нужен простой и удобный сайт для всякого такого - всего, что цепляет внимание сознательного гражданина.
>чем этот лучше?
Наверное, ничем. Про него знают разные крупные заводчики, питомники и прочие люди с деньгами (один какой-нибудь котёнок с родословной стоит от 15к рублей - самый дешёвый). Поэтому для них 200р за рекламу питомника или зверька в день на главной странице сайта - мелочи, окупающиеся с лихвой.
Но я тебе и говорю, что в соцсетях многое есть, что как раз даёт пищу для размышлений.
Аноним 15/01/16 Птн 17:50:59 #631 №626251 
>>626245
И да - в соцсетях всё смывает ещё получше, чем в /b, ну ты понял.
Сейчас есть новость, а через пять минут потонула среди кучи других, очень неудобно.
А тут разделение по толковым группам, всё на виду и понятно.
Я просто так это говорю, не пытаюсь что-то доказать. Просто мне кажется, что это вполне хорошая идея для приложения сил как для диплома, так и для последующей работы.
Но поступай как знаешь, конечно.
Аноним 15/01/16 Птн 17:56:56 #632 №626254 
>>626182
Ух ты, не совсем начинающий в треде?
Калькулятор Айфона считает верно, но там много повторов, ОП не одобрит.
$creditBalance = ( $creditBalance * $percent ) + $servicePayment - $monthlyPayment; - вот это повторяется, можно от этого избавиться.
В расчёте вклада анончика 10к под 10% недочёт - в первый год анону 16 лет, хотя он клал в 16, а прошёл уже год. Так, мелочь, остальное верно считает, однако дождись ОПа, он даёт делает отличные замечания.
Аноним 15/01/16 Птн 17:57:44 #633 №626255 
*даёт хорошие советы и делает отличные замечания
Аноним 15/01/16 Птн 18:03:47 #634 №626257 
>>626247
Про прибыльность вообще речи не шло, если затраты небольшие, то даже на самоокупаемость похер. Но так да - какую-то оригинальную идею хочу, которую анону самому лень реализовывать, а я возьму в качестве дипломной работы.
>>626249
>Но я тебе и говорю, что в соцсетях многое есть, что как раз даёт пищу для размышлений.
Не очень понял. Вытащить из соц-сетей идею в качестве отдельного проекта? Троллейбус из хлеба какой-то.
>>626251
Спасибо, подумаю.
Аноним 15/01/16 Птн 18:16:03 #635 №626264 
>>626257
>Вытащить из соц-сетей идею в качестве отдельного проекта?
Соцсеть - это показатель интересов, проблем и желаний людей же. У людей проблемы - часто теряют вещи, видят разор или неустройство, хотят как-то повлиять на это, попивая чай у себя на кухне.
В соцсетях, как и на имиджборждах, можно орать, сколько душе угодно - почти никто не услышит, пока журналисты не сделают репортаж, например.
А тут сайт, который собирает всё в себя, каким-то образом формирует инициативные группы либо привлекает непосредственных исполнителей за какие-либо профиты (не обязательно, денежные). Например, меня вот лично сейчас раздражает, что дорожка у дома с обратной стороны не расчищена от снега. Идти ругаться в ЖЭУ мне не хочется, напишу-ка я на сайте, что вот такое есть, готов заплатить 100р анону-школьнику, если уберёт. На счету резервируются деньги, кто-нибудь выполняет, ну ты понял.
Это можно в любую сферу растянуть же.
Сломалась дверь в квартире, нужно поклеить обои, вынести строительный мусор и тому подобное - различные услуги - создаёшь заявку, находятся исполнители.
Привязка к региону, резервирование денег на самом сайте, чтобы исполнитель был уверен.
Короче, фриланс, но связанный с реальной работой или услугами.
Я не в курсе, есть ли именно такое на Авито? Чтобы не искать заявку, а создавать?
Так или иначе - идея имеет право на жизнь, как считаешь?
https://github.com/fxsloker/Student Аноним 15/01/16 Птн 18:49:13 #636 №626291 
>>622965

> А еще я подумал, если у меня нужно работать с одной моделью почему бы и не использовать только один контроллер
Ты случайно не думаешь ли что число моделей = числу контроллеров? Если так то ты плохо понял зачем они нужны. Контроллер = раздел сайта или страница, модель = сущность в БД. между ними не обязательно должно быть соотношение 1 к 1.

Далее: http://pastebin.ru/vKfLkBPw
Аноним 15/01/16 Птн 18:49:46 #637 №626292 
>>623029

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

>>623227

Что сложного в том чтобы сверстать что-то? Не за бесплатно же.

>>623239

TDG это просто класс где собраны методы работы с таблицей в БД. Он не обязан выглядеть как в зенде. У меня в уроке про паттерны работы с БД есть более простой пример, без всяких initialize.

> Смотри вот есть класс TableDataGateway, в нем есть метод initialize. Я правильно понимаю, что прямо в этом классе происходит подключение к бд?
Нет, это нелогично. Логичнее передать готовый объект PDO в конструктор. В зенде сделано по-другому - там базовый класс получает объект для работы с БД через какой-то статический метод. Но тебе делать так не стоит. Вот урок по теме: https://gist.github.com/codedokode/e1d31a31b37d5f635057

> Почему не подключаться к бд сразу в конструкторе?
Потому что это не задача класса TDG, подключаться к базе.

> Итак, я так понимаю, что в TableDataGateway я должен реализовать примитивные методы update, insert, where, select, которые будут применимы для всех моделей, а уже работая с каждой моделью, она должна будет наследовать этот класс и использовать эти методы?
Нет не обязана. Наследование впрочем имеет смысл, так как эти классы однотипные и логично им иметь общего предка. Но делать методы типа insert ты не обязан.

> Вообщем объясни мне, ОП, как это все работает? Я хочу применить это в студентах и понять как оно устроено.
Тогда тебе придется самому читать код и документацию. И если что-то непонятно, задавать конкретные вопросы.

ServiceLocator/Manager это классы для создания объектов и передачи им нужных зависимостей, они мельком упомянуты в моем уроке про Dependency Injection.

> Создаю класс TableDataGateway, там создаю все эти "примитивные методы".
Это не обязательно.

> В самой модели Student в конструкторе будет создаваться объект класса UserDataGateway с аргументом "students" (имя таблицы).
Не вижу логики. Student это объект представляющий информацию об одном студенте. зачем в нем должно быть что-то внутри для работы с базой данных? (это вопрос к тебе) Студент вполне может существовать и без нее. И второй вопрос, а если у тебя 10 объектов-студентов, ты внутри них создашь 10 объектов TDG?

Ты пытаешься смешать все в кучу, это не ООП подход. В ООП каждый класс занимается своим делом. Класс Student отдельно, классы TDG отдельно.

> Там будут использоваться такие же методы add, update, edit и т.д., которые будут вызывать аналогичные методы класса UserDataGateway
Это нелогично, зачем каждый метод дублировать в 2 классах?

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

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

Ну и урок по паттернам работы с БД, может ты не видел ссылку: https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md

>>623260

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

cEtegories - опечатка.

>>623281

Не, я чаще видел что таблицы во множественном.
Аноним 15/01/16 Птн 18:50:11 #638 №626293 
>>623358

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

> И еще должны быть классы, которые уже непосредственно работают с БД, типа select, update и т.д. причем опять же для каждого объекта/сущности свой такой класс в котором должны быть описаны все возможны методы для взаимодействия с БД?
Да, все методы которые тебе нужны. Те что не нужны можно не делать.

>>623401

Ты пишешь глупости, анон пока только изучает работу с Бд и хочет разобраться как это вообще делается. А потом и за доктрину возьмется. И кстати чем хорош пропел если есть доктрина? И чем твой совет поможет если анон хочет разобраться в паттернах работы с БД а не получить готовое решение?
https://github.com/nsdvw/file-sharing Аноним 15/01/16 Птн 18:50:37 #639 №626294 
>>623442

> $app->error(function (\Exception $e) use ($app) {
> $app->log->info($e);
А почему уровень логгирования такой низкий (info)? Типа неважная информация? И я не уверен что надо использовать логгер Слима, не лучше ли писать в стандартный лог ошибок PHP?

> Про html5 валидацию слышу второй раз в жизни. Ты имеешь ввиду эти атрибуты типа required и pattern?
Да

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

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

> мне просто не нравится внешний вид этих попапов
Да, поменять его (пока) нельзя: http://stackoverflow.com/questions/5328883/how-do-i-style-the-html5-form-validation-error-messages-with-css/6072950#6072950

Вот тут есть статья по переделке внешнего вида сообщений (сделать их самому), можешь попробовать сделать, но хорошо бы сделать это как-то универсально, чтобы можно было подключить к любому сайту: http://developer.telerik.com/featured/building-html5-form-validation-bubble-replacements/

> Helper\Token::init
Имя метода не говорит о том что он делает

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

> $isAjax =
> $author_id
Стиль наименования надо выдерживать одинаковый

> ($app->request->get('ajax') !== null) ? true : false;
!!$app->request->get('ajax')

> ajaxResponse($app->response, $uploadForm->getFile()->id);
Глобальные функции, нехорошо-то как. можно сделать это статическим или обычнм методом где-нибудь? Можешь кстати посмотреть, нельзя ли расширить слимовский $app->response и всунуть туда свой класс с поддержкой аякса?

https://github.com/nsdvw/file-sharing/blob/master/web/index.php#L55
> if ($isAjax) {
> ajaxResponse($app->response, null, $uploadForm->errorMessage);
Я думаю это надо перенести ниже, туда где идет вывод шаблона $app->render('upload_form.twig',...

> $uploadForm = new Form\UploadForm($app->request, $_FILES, $author_id);
Нужно ли форме ид автора? Может тогда лучше не id а полноценный обьъект передавать?

> $fileUploadService->upload($uploadForm)
Вот надо ли завязывать загрузку файла на форму? Нельзя ли отвязать эти классы, то есть сделать чтобы сервис загрузки ничего не знал о форме? И чтобы например можно было загрузить просто файл с диска, не из формы? Или это усложнит все?

> $loginForm = new Form\LoginForm($app->request);
> if ($app->loginManager->validateLoginForm($loginForm)) {
Опять же, нельзя ли сделать чтобы LoginManager ничего не знал о форме? И вообще ничего не знал ни про HTML, ни про HTTP? Мне кажется это лишние знания. Нехорошо, привязывать внутренний сервис к интерфейсу пользователя. Так мы в LoginManager половину приложения затащим. Он должен только проверять данные ему имя и пароль, а про формы он знать ничего не должен. Пусть уж лучше форма знает о нем, если без этого никак.

Ну и подумай сам: форм логина и способов входа в теории может быть несколько. Ты будешь для каждой методы в LoginManager добавлять?

https://github.com/nsdvw/file-sharing/blob/master/web/index.php#L119
> Helper\Pager( $page, $app->fileMapper->getFileCount(), 15 );
Магическое число 15

> https://github.com/nsdvw/file-sharing/blob/master/web/index.php#L137
> $pageViewService = new Helper\PageViewService(
Сервисы лучше сделать через синглтоны слима наверно.

https://github.com/nsdvw/file-sharing/blob/master/app/Form/UploadForm.php#L11
Хранить текст в константах не очень удобно, например не получится сделать локализацию (перевод на другой язык).

> https://github.com/nsdvw/file-sharing/blob/master/app/Form/UploadForm.php#L66
> private function setFile()
Вот это мне кажется надо бы перенести в файловый сервис, создание объекта на основе файла на диске. Это ведь может не только в форме загрузки пригодиться. а например если ты хочещь с диска загрузить файл.

https://github.com/nsdvw/file-sharing/blob/master/app/Helper/FileUploadService.php#L16
> $this->viewHelper = new ViewHelper;
Логично бы тоже передавать через конструктор. А то завтра ты захочешь например добавить аргументы в конструктор ViewHelper.

https://github.com/nsdvw/file-sharing/blob/master/app/Form/AbstractFormWithCaptcha.php
Странный класс. Нельзя сделать капчу обычным полем, а то так мы дойдем до FormwithTextarea, FormWithHiddenField и так далее.

https://github.com/nsdvw/file-sharing/blob/master/app/Form/AbstractFormWithCaptcha.php#L15
> if ($this->$field != $_SESSION['captcha']) {
Неправильно. Сессия общая для всех вкладок браузера. Что если открыть несколько форм с капчами? Что если на странице несколько форм с капчами?

> class AbstractMapper implements TransactionableInterface
Вот это интересный код, но я не уверен что правильно добавлять транзакции во все мапперы. Создается впечатление что это какие-то независимые транзакции, и непонятно в каком классе надо начинать транзакцию если ты хочешь что-то сделать в нескольких мапперах.

Транзакции лучше сделать на уровне PDO или аналогичного класса. И есть еще интересный способ их сделать через анонимную функцию: http://doctrine-orm.readthedocs.org/projects/doctrine-dbal/en/latest/reference/transactions.html

Смотри функцию Connection#transactional($func). выгода такая: 1) не забудешь сделать коммит 2) при исключении транзакция откатится.

>>623458

Формально ActiveRecord и Datamapper это альтернативные подходы реализации ORM.

> И то и то - частный случай DBAL.
Нет. У нас DBAL это низкоуровневый объект вроде PDO.
Аноним 15/01/16 Птн 18:52:32 #640 №626298 
>>623442

Раз ты не знаешь уровни логгирования то почитай PSR http://www.php-fig.org/psr/psr-3/

Названия уровней придумали не они, эти уровни придуманы много лет назад, я даже не знаю откуда они взялись.
Аноним 15/01/16 Птн 18:53:02 #641 №626299 
>>626264
>1000 рублей за минет, безопасная сделка
>6435 предложений
>исполнитель выбран
>заказ в работе
Аноним 15/01/16 Птн 18:57:00 #642 №626302 
>>626264
Да. you.do или как-то так, уже есть.
Аноним 15/01/16 Птн 19:40:03 #643 №626326 
>>626302
Всё уже создано, до нас.
Впервые о нём узнал.
Неудобный сайт, правда, но всё на нём есть.
Не регистрировался, не вижу города, кроме Москвы и Санкт-Петербурга.

>>626299
Таких сайтов так-то тоже полно.
Аноним 15/01/16 Птн 19:49:20 #644 №626334 
ОП, здравствуй, если доберёшься - проверь, пожалуйста:
1) http://ideone.com/ivV3tG - про клавишу "Shift";
2) http://ideone.com/gXSbfE - про Йоду. Тут я не сохранял знаки препинания внутри предложений, решил, что так подразумевалось (глянул в примере, что их нет). А так вроде бы получилось всё.
Спасибо!
Аноним 15/01/16 Птн 19:59:30 #645 №626339 
>>626220
Я не ОП, но могу сказать, что из-за обилия комментариев читать просто невозможно. Я пишу комменты обычно сбоку, а не между строк, и вообще рекомендуют переменные и функции называть так, чтобы они сами за себя говорили, а комменты - если происходит особая, уличная магия какая-нибудь, неясная без подсказки.
вообще я не программист, можно меня не слушать
Аноним 15/01/16 Птн 20:02:13 #646 №626340 
>>626220
Ну и дам наводку: прогляди ещё раз урок про регекспы, там есть про разбиение предложений.
Аноним 15/01/16 Птн 20:04:20 #647 №626341 
>>626340
Блджад, разумничался, это ж не та задача...
Аноним 15/01/16 Птн 20:20:14 #648 №626347 
>>626339
>Я не ОП, но могу сказать, что из-за обилия комментариев читать просто невозможно.
Кому как. Я это делаю как раз для облегчения понимания кода. Я писал комменты сбоку, но ОП сказал, что лучше сверху, когда со слешами и звёздочками, я сделал так. Можно слешами сбоку, так удобнее смотреть на сам код. Наверное, лучше так буду делать всё-таки, действительно.
>вообще рекомендуют переменные и функции называть так, чтобы они сами за себя говорили
Стараюсь так и называть.
>комменты - если происходит особая, уличная магия какая-нибудь, неясная без подсказки
У меня комменты - это разбитый на части алгоритм написания скрипта. Я обычно сначала пишу алгоритм, а потом пишу скрипт.
Я тоже не программист, поэтому всё пока коряво получается.
Спасибо, что посмотрел.

>>626334
Какое хорошее решение.
Всякие preg_replace_callback применяешь прямо вот так впервые? Так-то несложно вроде, но я бы вообще не додумался до такого.
Я пока оперирую только разложением до простейших шагов: отрезать часть строки, отрезать начальные буквы, поменять регистр у начальных букв, приклеить к предложениям и т.п. Что-то изящное пока неподвластно.
>>626340
Там у меня вроде всё нормально с этим.
Аноним 15/01/16 Птн 20:32:49 #649 №626355 
>>626347
>ОП сказал, что лучше сверху
Ну да, наверное и правда кому как. И алгоритм пока в голове не держится сам, наверное, лучше оформить письменно.
>прямо вот так впервые
Ну нет, про preg_replace_callback() ОП подсказал, когда я граммарнаци делал (вообще долго с ней ковырялся). Теперь если что-то неочевидное надо сделать, ею пользуюсь, не знаю, хорошо это или нет.
Вообще признаюсь, опыт у меня кое-какой есть, потому и быстрее всё выходит.
Аноним 15/01/16 Птн 20:37:11 #650 №626356 
>>626254
Ок, я просто сяду вот тут и подожду ОПа.
Аноним 15/01/16 Птн 21:49:00 #651 №626380 
Если я делаю сайт используя MVC и допустим на разных страницах мне может приходить один и тот же GET или POST запрос (например авторизация, может быть на любой странице сайта), то есть в какой-то определенный контроллер я запихнуть обработку не могу. Где тогда лучше обрабатывать этот запрос?
Аноним 15/01/16 Птн 22:37:56 #652 №626394 
>>626380
Не должно быть такого.
Форма авторизации должна обрабатываться действием авторизации <form action="/login" method="post">
При успешной валидации редирект обратно на ту страницу, с которой был запрос. Если форма не прошла валидацию, подставить сообщение об ошибке и введенные пользователем данные в поля на странице авторизации.
https://github.com/codedokode/pasta/blob/master/forms.md
Аноним 15/01/16 Птн 23:07:08 #653 №626402 
>>626394
Спасибо, почему-то не додумался, что в action="" можно не только путь к конкретной странице указывать
Аноним 16/01/16 Суб 01:21:46 #654 №626466 
Делаю такой запрос.

SELECT name, comment, date, INET_NTOA(ip_address) FROM comments

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

{% for item in data %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.comment }}</td>
<td>{{ item.date }}</td>
<td>{{ ite.ip_address }}</td>
</tr>
{% endfor %}
Аноним 16/01/16 Суб 01:25:20 #655 №626467 
>>626031
Сделай экстремистский сайт, где вскрываются многомиллионные кражи из бюджета, попилы, дебильные указы чинушей, приводящие к разорению предприятий и страны, типа южного потока, заброшенные НЗП, военные преступления пидорах в чечне и украине. Посадят конечно, но зато какой проект.
Аноним 16/01/16 Суб 01:42:43 #656 №626472 
Весело хуярю html-теги через echo "<tag>";. Для разработки вообще никакого бугурта. В исходном коде все выведенное таким образом выглядит как одна очень длинная строка, что затрудняет отладку. Как сделать такие теги форматированными?
Аноним 16/01/16 Суб 02:08:55 #657 №626483 
>>626472
выпились
Аноним 16/01/16 Суб 03:27:12 #658 №626515 
Ладно, попробую вопрос попроще. Почему хтмлспешиалчарс возвращает > в оутпуте вместо тэгов.
Аноним 16/01/16 Суб 11:34:45 #659 №626594 
>>626466
>ite
Аноним 16/01/16 Суб 11:39:40 #660 №626597 
>>625448
Две спасибушки тебе.
Аноним 16/01/16 Суб 12:16:55 #661 №626617 
>>626026
ОП? Почему ты не ответил на мой пост?
Аноним 16/01/16 Суб 12:18:37 #662 №626619 
>>626617
Твое время еще не пришло, анон. Жди смиренно.
Аноним 16/01/16 Суб 12:54:35 #663 №626644 
Не работает bindValue в PDO. Совсем никак. Потратил часа два в гугле, так и не нашел в чем проблема.
http://pastebin.com/kyyA8VQ9
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: :x' in /usr/share/nginx/html/student-list/app/Model/Model_StudentDataGateway.php:24 Stack trace: #0 /usr/share/nginx/html/student-list/app/Model/Model_StudentDataGateway.php(24): PDOStatement->bindValue(':x', 'Testvar', 2) #1 /usr/share/nginx/html/student-list/app/Controller/Controller_Form.php(34): Model_StudentDataGateway->add_student(Object(Model_Student)) #2 /usr/share/nginx/html/student-list/form.php(13): Controller_Form->process_post_request(Array) #3 {main} thrown in /usr/share/nginx/html/student-list/app/Model/Model_StudentDataGateway.php on line 24
Аноним 16/01/16 Суб 13:04:31 #664 №626652 
>>626644
А зачем плейсхолдер в кавычках?
Аноним 16/01/16 Суб 13:07:41 #665 №626654 
>>626652
Блять, не заметил. Спасибо.
Аноним 16/01/16 Суб 13:18:33 #666 №626662 
14529395133850.gif
>>619873 (OP)
Ну что, опунь, я уже какое-то время учусь по твоим урокам, в кодинг уже какое-то время могу, но не в РНР, так что по мелочи не хотел тебя дёргать, но вот настала пора поинтересоваться, насколько грамотно с точки зрения эстетики, так сказать, написан код: http://ideone.com/n9iSCv
То есть, работает он отлично, но вот насколько принято писать вот так, не знаю.
Аноним 16/01/16 Суб 13:33:21 #667 №626671 
>>626662
Банк 1: после месячного взноса она уменьшается до -971.61787934484.
Зачем ты банку переплачиваешь? Остался должен 10 рублей. Плати 10 рублей, а не тысячу.
Аноним 16/01/16 Суб 13:51:00 #668 №626683 
Пропустил одну задачу, но вернулся и сделал.
http://ideone.com/Yjs5K9
Вопрос в том, стоит ли переделать её с использованием switch'а? Или пускай так и остается?
Аноним 16/01/16 Суб 14:02:29 #669 №626690 
>>626683
тебе бы хотя б elseif научиться использовать
Аноним 16/01/16 Суб 14:05:10 #670 №626692 
14529423108010.png
>>626690
Руководствовался этим. Или я чего-то недопонимаю?
Аноним 16/01/16 Суб 14:05:37 #671 №626693 
>>626483
Охуительное решение, но оно мне не подходит. Что делать-то?
Аноним 16/01/16 Суб 14:06:58 #672 №626696 
>>626692
ты не правильно понял. Они не обязательны для существования конструкции в целом. Т.е. if достаточно. Но для компактной записи и вообще для торжества здравого смысла их надо использовать. Ну и плюс в задачах посложней без этого никуда
Аноним 16/01/16 Суб 14:12:15 #673 №626704 
>>626696
Про задачи посложнее я догадывался, а так - спасибо за разжевывание и критику, пойду переделаю.
Аноним 16/01/16 Суб 14:25:59 #674 №626726 
>>626662
>То есть, работает он отлично
Лол, абсолютно неверно всё считает...
Аноним 16/01/16 Суб 14:41:39 #675 №626748 
>>626662
Там у тебя в некоторых местах просто отнимается сумма, которую анон платит в месяц, не прибавляются проценты почему-то. Например, осталось выплатить 41000, а в другой месяц осталось выплатить 36000, такого типа.
Хотя в функции первой есть умножение на проценты, вот это всё.
Подход вообще не верен: там нужна переменная для общих выплат, а её не заметил у тебя. В минус не должно уходить: если после умножения на проценты и прибавления платы за обслуживание счёта остаётся меньше месячной выплаты - необходимо просто выплатить оставшуюся часть.
Также для обхода массива нужно использовать foreach, а не for, ОП пишет об этом на странице "Повторим?".
https://github.com/fxsloker/Student Аноним 16/01/16 Суб 16:18:08 #676 №626817 
>>626291
http://pastebin.com/ufnVLanq
Аноним 16/01/16 Суб 16:38:10 #677 №626839 
>>626472
Бамп вопросу. Просто нахуярить <?php ?> в html-код не выйдет, потому что у меня цикл под них.
Аноним 16/01/16 Суб 19:03:41 #678 №626955 
>>626839
Код вбрось.
Аноним 16/01/16 Суб 19:11:37 #679 №626959 
Как подключится к imap серверу imap.yandex.ru?
Нужно использование ssl. ssl://imap.yandex.ru не работает.
Интересует именно socket_extension.
fsockopen,stream_функции я знаю, но интересует именно то о чем выше писал.
Аноним 16/01/16 Суб 19:52:36 #680 №626987 
>>626472
>>626839
<?php
echo "<p>Больше быдлокода</p>", PHP_EOL;
echo "<h2>Богу быдлокода</h2>";
Надеюсь ОП меня за это не проклянет.
Аноним 16/01/16 Суб 20:32:53 #681 №627012 
>>626839
Цикл в хтмл тоже можно красиво запихнуть, типа
<?php foreach($arr as $key => $value):?>
htmlhtmlhtmlhtml
htmlhtmlhtmlhtml
<?php endforeach;?>
Аноним 16/01/16 Суб 22:10:41 #682 №627075 
>>626959
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, "imap.yandex.ru", 993)
?
Аноним 16/01/16 Суб 23:45:44 #683 №627154 
>>627012
Сделал вот так.
>>626987
Где не получилось, дооформил.
Аноним 17/01/16 Вск 01:04:42 #684 №627207 
Как в jquery избавиться от "очереди" событий?
Например если сделать много кликов по элементу, то сработают все один за другим.
https://jsfiddle.net/3qz5n02q/
Аноним 17/01/16 Вск 03:00:47 #685 №627265 
14529888479720.jpg
14529888479731.jpg
Йода говорит: ideone.com/ipQ2yB
>PHP Notice: Undefined offset: 1 in /home/U8hptw/prog.php on line 12
>PHP Notice: Undefined offset: 1 in /home/U8hptw/prog.php on line 13
Сейчас не соображу, в чём там дело. Тешу себя мыслью, что соображу завтра.
Вроде бы всё у меня там работает и выглядит простым, как табуретка.
Гибкости не хватает мне, в следующий раз попробую совладать с call_back функцией, что ли, позавидовал простому и краткому решению братишки выше.
Аноним 17/01/16 Вск 03:01:21 #686 №627266 
>>627265
http://ideone.com/ipQ2yB
Аноним 17/01/16 Вск 09:57:09 #687 №627357 
14530138297480.png
>>627265
У кого-то горит жёпа от Путина.
Аноним 17/01/16 Вск 11:24:06 #688 №627384 
>>627265
Лол, а я думал это реально путен в адидасе и пиджаке, даже не гуглил толком.
Аноним 17/01/16 Вск 12:17:34 #689 №627411 
>>627265
>>627266
Так и не разобрался, почему там вылезала ошибка. Наверное, передавать из одной функции в другую массив и там из неё сразу доставать значение ($array[n]) не считается правильным.
Также ОП говорит, что вообще неправильно массив раскладывать через for.
Сделал разложение массивов в обеих функциях через foreach - всё теперь без ошибки.

>>627357
Не политоты ради. Просто столкнулся с тем, что эту поделку в Photoshop'е считают реальностью - на полном серьёзе.

>>627384
Оригинал не находится в поиске по картинкам, когда ищешь по какой-нибудь фразе, вылезают только различные варианты подделки.
Аноним 17/01/16 Вск 14:53:28 #690 №627490 
Задача про "лиличку". Нихуя не понимаю, в подсказке идёт "разбить текст по символу \n", но сам текст дан в таком формате, что там нет \n и по нему нельзя разбить. Разбить по \n можно только в случае, если он прописан в самой строке. А там просто энтером отбито. Перепробовал все варианты. Так что же, вручную менять само стихотворение и добавлять \n?
Аноним 17/01/16 Вск 14:57:57 #691 №627492 
>>627490
уже рахобрался. Надо либо по \r\n (хз почему), либо PHP_EOL
Аноним 17/01/16 Вск 15:16:25 #692 №627500 
https://gist.github.com/codedokode/420c8c12a1edae25f0ec
>Пайп (вертикальная черта) позволяет перенаправить выход одной программы на вход другой. Программа ls выводит список файлов в каталоге. Программа head -10 читает строки с клавиатуры и выводит только первые 10 из них. Вот, как можно вывести имена первых 10 файлов:
>
>ls | head -10
>Пайп (вертикальная черта) позволяет перенаправить выход одной программы на вход другой.
А что за Пайп? Может кто-нибудь объяснить на примере как это работает? Я что смогу брать данные, например, из браузера и делать с ними что захочу в другой программе? Как это работает? Я не понимаю.
А причем тут ls и head?
Аноним 17/01/16 Вск 15:41:36 #693 №627520 
>>627500
Все понял.
Аноним 17/01/16 Вск 15:46:02 #694 №627525 
команда 2>&1 > file.txt
А почему синтаксис такой странный? Почему не 2> & 1> file.txt или 2&1 > file.txt? Так же понятней!
Аноним 17/01/16 Вск 16:33:32 #695 №627567 
>>627490
Про какую лиличку еще?
Аноним 17/01/16 Вск 16:37:49 #696 №627576 
>>627567
Аа, увидел и испугался этих задачек, аж ладошки вспотели.
А где предыдущие, почему не по порядку идёшь?
Аноним 17/01/16 Вск 16:50:24 #697 №627581 
>>625456
Я, например, даже когда научусь всему буду продолжать иногда заходить в клуб любителей php и помогать анонам, если буду знать как. Подозреваю, что здесь много таких же как я.
Аноним 17/01/16 Вск 16:56:04 #698 №627584 
>>627581
>Я, например, даже когда научусь
А как ты поймешь, что научился? Когда наступает этот сокровенный момент? Тебе приходит письмо из хогвартса или что?
Аноним 17/01/16 Вск 17:03:59 #699 №627591 
>>627584
Бывает открываешь код анона и становится смешно, и ты сразу понимаешь как правильно сделать. Вот это уже показатель того, что ты можешь поправить анона и дать ему совет.
Аноним 17/01/16 Вск 17:04:25 #700 №627592 
Друзья, а вы уже обсуждали квантовый компьютер от гугла и наса? https://www.youtube.com/watch?v=CMdHDHEuOUE
Это же такие перспективы! Такие как __мгновенная__ передача информации на n ≤ ∞
Аноним 17/01/16 Вск 17:05:32 #701 №627595 
>>627584
Думаю, когда сделаю задачу на файлообменник на slim'е
Аноним 17/01/16 Вск 17:06:43 #702 №627597 
>>627595
А сейчас ты что делаешь?
Аноним 17/01/16 Вск 17:18:02 #703 №627600 
>>627597
Задачу на студентов, а ты?
Пока ОПа нету, сижу читаю про линукс и верстку - настроение просто отличное от того, что я это понимаю и занимаюсь этим. Программирование это жизнь, это сила, это победа человеческого разума над законами природы!
Аноним 17/01/16 Вск 17:23:27 #704 №627602 
>>627600
Тоже задачу на студентов.
Вот моя: https://github.com/fxsloker/Student
Покажи свою.
Аноним 17/01/16 Вск 17:25:31 #705 №627603 
>>627600
Ну я кстати как раз на линупсах сижу, и работаю по большей части версталой.
Аноним 17/01/16 Вск 17:31:30 #706 №627607 
>>627602
А я уже подсматривал в твой гитхаб

>$router->run();
Мне тоже так предстоит делать или это какой-то особенный подход?

https://github.com/someApprentice/Students
Аноним 17/01/16 Вск 17:37:58 #707 №627608 
>>627607
У меня есть роутер, у тебя нет. В этом задании он не обязателен, просто мне интересно еще и роутер пилить. И все приложение у меня с него как раз и начинается, я так понял это паттерн FrontController. Хотя не уверен. Жду ответа ОПа и дизайн пилю пока для списка и формы.

Я в общем-то уже знаю как по-быстрому сделать эту задачу. Но я постоянно ковыряюсь, потому что хочу сделать не быстро, а правильно.
Аноним 17/01/16 Вск 17:43:29 #708 №627610 
>>627607
Кстати я гуглил разные mvc приложения на php. Часто делается так, $app->run(); и поехало. Ну я так сразу к роутеру обратился.
Аноним 17/01/16 Вск 17:44:36 #709 №627611 
>>627608
>Я в общем-то уже знаю как по-быстрому сделать эту задачу. Но я постоянно ковыряюсь, потому что хочу сделать не быстро, а правильно.
Я тоже уже примерно представляю как она делается, думаю сделаю быстро - мне главное понять принцип работы а дальше нужно просто выразить это в коде.
Аноним 17/01/16 Вск 17:45:05 #710 №627612 
>>627610
>Часто делается так, $app->run();
Я видел в слиме так делают еще
Аноним 17/01/16 Вск 17:55:17 #711 №627621 
>>627576
да я по порядку иду, сделал почти все и в треде выкладывал, пропустил 1 только, вроде, т.к. лень было
Аноним 17/01/16 Вск 18:01:48 #712 №627628 
>>627607
У тебя есть LoginController.php, то есть ты будешь делать форму входа? По заданию вроде просто после регистрации сохранять в куках юзера.
Аноним 17/01/16 Вск 18:20:41 #713 №627637 
>>627628
>У тебя есть LoginController.php, то есть ты будешь делать форму входа? По заданию вроде просто после регистрации сохранять в куках юзера.
Почему бы и нет?
Аноним 17/01/16 Вск 18:26:32 #714 №627644 
>>627637
Ну в принципе да, может тоже запилить. Еще я не увидел у тебя полей sex, gender, firstname, surname и т.д. Их не будет?
Аноним 17/01/16 Вск 18:34:41 #715 №627647 
>>627644
Будут, сейчас ОП проверит меня и буду допиливать.
Аноним 17/01/16 Вск 18:52:21 #716 №627655 
>>627581
Я так и делаю сам со своими месячными познаниями: разбираю код новичков. Те задачи, которые сам уже решил.
Аноним 17/01/16 Вск 21:11:25 #717 №627732 
>>627602
Объясните на пальцах, как гитхабом пользоваться?
Аноним 17/01/16 Вск 21:14:40 #718 №627734 
>>627600
Какой лвл?
Аноним 17/01/16 Вск 21:19:47 #719 №627737 
14530547872220.png
Я знаю Джава Скрипт!
Аноним 17/01/16 Вск 21:54:49 #720 №627755 
>>627732
Что именно непонятно?
Качаешь пак с файлами, запускаешь на локалке или хостинге.
Пока не дошёл до БД и прочего - это сложно.
Аноним 17/01/16 Вск 21:55:40 #721 №627757 
>>627737
А он знает тебя?
Аноним 17/01/16 Вск 21:57:42 #722 №627760 
>>627755
я пока только задачи для перехода на второй лвл доделываю. Да вообще непонятно, что за файлы, как качать и как запускать. Пишу на phpstorm
Аноним 17/01/16 Вск 22:08:22 #723 №627766 
>>627760
Скоро дойдёшь, значит, и сам.
Надо локальный сервер установить, базы данных, всё это запустить, архив сайта с Гитхаба распаковать, запустить index.php, создать соединение с БД.
Либо сразу установить Денвер, там всё необходимое уже есть.
Аноним 17/01/16 Вск 22:19:40 #724 №627775 
>>627766
А если расшарить файлы, создать ветку, то по-другому.
Аноним 17/01/16 Вск 23:01:20 #725 №627807 
>>627734
А какая разница?
Аноним 17/01/16 Вск 23:02:16 #726 №627809 
>>627807
Да просто интересно, какой люд тут обитает со мной вместе и бьётся над задачками
Аноним 17/01/16 Вск 23:11:15 #727 №627816 
>>627809
А мне всегда интересно, изучал ли человек программирование прежде, когда припекает от лёгкости решения задач у многих. Сам я бьюсь над задачами уровня клавиши Shift или речи Йоды по нескольку часов.
Благодаря постоянному чтению учебника ОПа, сразу по стилю решения задачи многое становится понятно об общих познаниях человека.
Жаль, что некоторые задорно проходят первые задачки, а потом пропадают.
Куда делся, спрашивается, Олег, где Onyx, которые вроде отлично шли с самого начала.
Аноним 17/01/16 Вск 23:13:08 #728 №627819 
>>627816
>Олег, где Onyx
Потише, братишка, в этой ситуации, ты на АИБ сидишь или в убтном чятике? Какие Олег, какой Оникс? Оглянись вокруг, мы вдвоём. Ты да я
Аноним 17/01/16 Вск 23:18:47 #729 №627823 
14530619280520.jpg
ОП, посмотри, пожалуйста. Задача про Лиличку.

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

http://ideone.com/oZMTZp
Аноним 17/01/16 Вск 23:29:16 #730 №627836 
>>627809
Ты не должен оценивать людей по их возрасту
Аноним 17/01/16 Вск 23:30:11 #731 №627837 
>>627836
дело в том, что я старый и знание, что я не один такой тут меня греет. вот и всё
Аноним 17/01/16 Вск 23:37:58 #732 №627845 
Кто-нибудь читает доп литературу по PHP? В ОП-посте есть несколько книг, но они все 2006 года максимум. Какие книжки можно почитать для вникания?
Аноним 17/01/16 Вск 23:40:41 #733 №627847 
>>627837
Тебя будет греть сильнее денюжки которые ты будешь зарабатывать на программировании
Аноним 17/01/16 Вск 23:41:10 #734 №627848 
>>627847
мало тепла не бывает
Аноним 17/01/16 Вск 23:41:26 #735 №627849 
>>627848
т.е. много, лол, проебался
Аноним 18/01/16 Пнд 00:05:27 #736 №627861 
>>627845
Зандстра из шапки и все. Книг по php нормальных нет. Смирись.
Аноним 18/01/16 Пнд 00:45:00 #737 №627877 
14530671009800.jpg
>>627837
>старый
>меньше 30
Аноним 18/01/16 Пнд 00:46:10 #738 №627878 
>>627877
Тут вроде есть анон, которому 32.
Аноним 18/01/16 Пнд 00:55:06 #739 №627886 
>>627837
Мне твенти сикс.
Аноним 18/01/16 Пнд 01:20:49 #740 №627897 
>>627878
Вэт ваз ми, раз уж мы по-английски.
Аноним 18/01/16 Пнд 02:04:38 #741 №627925 
Ебать я тупой стал, 25 лет ума нет, как можно было эту задач легко решить? я сделал через эпические костыли, но решение должно быть на поверхности.
http://ideone.com/ahVN35
Аноним 18/01/16 Пнд 06:12:21 #742 №627974 
>>627525

2>&1 значит перенаправить данные, из потока №2 (поток ошибок stderr) в поток №1 (поток вывода stdout)

> значит перенаправить stdout в файл

Таким образом и stderr и stdout перенаправлены в один и тот же файл.

Погугли по этим словам.

> 2> & 1> file.txt
и что это должно значить?

> 2&1 > file.txt
и это?

Вообще, синтаксис такой по историческим причинам, написаны миллионы скриптов и никто их уже не переделает.
Аноним 18/01/16 Пнд 06:19:54 #743 №627975 
>>627823

> explode("\r\n", $text);
Лучше разбивать по символу перевода строки \n (Enter как раз вставляет в текст \n или \r\n в зависимости от настроек редактора и способа перевода строк)

На ideone скорее всего перевод строки вставляется как просто \n а не \r\n отсюда и баги.

Скачивание phpstorm (что я не могу сделать, это надо много времени) вряд ли поможет.


Аноним 18/01/16 Пнд 08:06:13 #744 №627985 
>>627592
Какое отношение научная фантастика имеет к PHP? Сука, козёл.
Аноним 18/01/16 Пнд 09:29:18 #745 №627996 
Делаю тут задачу про список студентов, сделал все кроме поиска, не могу понять как реализовать поиск с джоинами в базе. В документе написано
>ля поиска по всем колонкам можно применить оператор LIKE к соединенным через пробел значениям столбцов.
Что это значит? Как их соединить? Или может забить хуй и сделать поиск через OR?
Аноним 18/01/16 Пнд 09:42:02 #746 №627999 
>>627996
Попробовал сделать так
SELECT * FROM student_list JOIN(SELECT id, name || surname concatenated FROM student_list) T ON T.Id = student_list.id WHERE t.concatenated LIKE :pattern_bind ORDER BY student_list.id ASC LIMIT 15 OFFSET :offset_bind
ищет только по первому параметру после id (в моем случае это name)
Аноним 18/01/16 Пнд 10:02:26 #747 №628000 
>>627925
Бро, задача решена неверно.
1. В итоге переменная $paymentTotal должна быть 61270 со многими копейками.
2. Функция intval не нужна, без неё можно обойтись, лучше посчитать со всеми копейками.
3. $creditBalance = ( $creditBalance * $percent ) + $servicePayment - $monthlyPayment; - повторяется в разных местах, а это значит, что может быть вынесено за пределы if с else.
4. Всегда первым делом надо к остатку прибавлять процент и 1000 за обслуживание кредита, после этого проверять, меньше или больше сумма $monthlyPayment.
Аноним 18/01/16 Пнд 10:44:43 #748 №628006 
>>627999
Можно создать поле с ключами, куда заносятся через пробел значения остальных полей, например "Ваня Ерохин А56 Москва 1990 муж", и делать поиск по ней. Это как вариант, ОП может не одобрить. А есть ещё составные индексы.
Аноним 18/01/16 Пнд 10:47:12 #749 №628007 
Как сделать лайки, как вконтакте? Чтобы по айпи запоминался проставленный лай и второй раз с того же айпи его не поставить. Понимаю только как сделать его динамическим через json, а вот как с одного айпи только сделать?
Аноним 18/01/16 Пнд 10:52:13 #750 №628010 
>>628007
А в контакте не с айпи, там аккаунт может один раз лайкнуть.
Аноним 18/01/16 Пнд 10:55:32 #751 №628011 
>>627999
Я нагуглил, полнотекстовый поиск называется. Используется примерно так match (index) against (search_string)
Аноним 18/01/16 Пнд 10:56:06 #752 №628013 
>>628011
Index - полнотекстовый индекс
Аноним 18/01/16 Пнд 10:56:34 #753 №628014 
>>628011
А если индексов несколько? Там же вся суть в том, чтобы искать во всей таблице.
Аноним 18/01/16 Пнд 11:05:57 #754 №628019 
>>628007
Наверное, $_SERVER['REMOTE_ADDR'], при этом сохранять инфу об айпи и лайкнувшем, а дальше условия, чтобы не повторялся или айпи, или сам лайкнувший, если он залогинен.
Аноним 18/01/16 Пнд 11:09:50 #755 №628021 
>>628014
А в нашем случае зачем несколько? У нас один поиск по все полям таблицы. Лучше ОПа дождаться.
Аноним 18/01/16 Пнд 11:14:10 #756 №628026 
>>628014
Кстати а если CONCAT() использовать?
Аноним 18/01/16 Пнд 11:18:24 #757 №628030 
14531051050440.jpg
Забавно наблюдать, как тают fork'и у задач ОПа на Ideone - чем дальше по задачам, тем меньше форков.
Аноним 18/01/16 Пнд 11:47:58 #758 №628051 
>>628030
Тоже заметил. Значит, у тех, кто дойдёт до конца, всё меньше и меньше конкуренции.
Аноним 18/01/16 Пнд 12:01:35 #759 №628060 
>>628000
спасибо. добра
Аноним 18/01/16 Пнд 12:36:38 #760 №628094 
>>628030
>>628051
Правда, но только отчасти. К этому времени я, например, скачал себе IDE, с которой удобно работать и просто копировал код опа
Аноним 18/01/16 Пнд 12:37:13 #761 №628096 
>>628094
К этому времени - имею в виду к более сложным задачам
Аноним 18/01/16 Пнд 12:37:48 #762 №628097 
>>628094
чем пользуешься? Я поставил NetBeans, но что-то не очень нравится.
Аноним 18/01/16 Пнд 12:41:54 #763 №628102 
>>627996
С какими еще джоинами? У тебя там больше одной таблицы?
Аноним 18/01/16 Пнд 12:52:23 #764 №628109 
>>628019
Каждому лайку таблицу с айпи лайкнувших что ли создавать и по ней проверять есть ли лайк у айпи к такойто записи?
Аноним 18/01/16 Пнд 13:00:43 #765 №628112 
>>628109
Я долго размышлял над этой проблемой и решил, что понадобится как минимум три таблицы. Первая это сами публикации или что там у тебя лайкают, второе - таблица айпишников и третье - таблица лайков.
Аноним 18/01/16 Пнд 13:03:14 #766 №628115 
>>628097
Штормом, всё пока нравится.
Аноним 18/01/16 Пнд 13:19:30 #767 №628119 
>>628115
>>628112
А как же таблица с инфой о залогиненных?
Ещё желательна фича: лайк присваивается человеку, если он лайкнул незалогиненным, а потом в этой же сессии залогинился.
Аноним 18/01/16 Пнд 13:19:59 #768 №628121 
>>628115
Случайно процитировал.
Аноним 18/01/16 Пнд 13:22:20 #769 №628124 
>>628119
Я сказал минимум 3, можно и больше, а вот меньшим количеством таблиц не обойтись.
Аноним 18/01/16 Пнд 13:23:35 #770 №628125 
>>628097
>>628115
Я тут попробовал с Дримвивером и Денвером - нещадно жрёт ресурсы ноутбука, не хотет.
Я пока на Идеоне, хотя там не особо удобно всё становится, когда код разрастается.
Аноним 18/01/16 Пнд 13:48:39 #771 №628148 
>>627592

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

Для тех кто не знает - там примерно такая идея: вместо обычных битов которые принимают значение либо 0 либо 1, мы используем кубиты которые могут быть одновременно в 2 состояниях.Например 8 обычных битов могут быть в одной из 256 комбинаций, а вот 8 кубитов могут быть в этих 256 комбинациях одновременно. И соответственно мы можем делать какие-то операции надо ними всеми одновременно. Условно говоря, если есть задача найти пароль, хеш от которого равен x, то обычный компьютер может лишь перебирать пароли по одному, проверяя не имеет ли он нужный хеш. А квантовый может перебирать все возможные пароли одновременно, вычисляя все их хеши одновременно. По крайней мере это я так понимаю.

Ну это пока больше в теории существует. В реальности чтобы манипулировать кубитами нужны большие сложные установки, вакуум, температуры в районе абсолютного нуля (-273 градуса), кубитов там от силы несколько, чуть что все это сложное состояние разрушается. И ни одного пароля пока на квантовом компьютере не взломано.
Аноним 18/01/16 Пнд 13:51:08 #772 №628153 
>>627996

Либо

WHERE name LIKE ... OR surname LIKE ...

либо

WHERE CONCAT(name, ' ', surname, ' '...) LIKE ...

Преимущества и недостатки способов попробй понять сам. Полнотекстовый поиск может и не подойдет так как он рассчитан на поиск по целым словам а не по кускам слов.
Аноним 18/01/16 Пнд 13:55:43 #773 №628158 
>>627999

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

>>628006

Тут можно без этого. Составные индексы никак тут не помогут, они не ищут по части слова.

>>628011

Может не помочь так как он рассчитан на поиск по словам а не фильтрацию по части слова.

>>628030

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

Аноним 18/01/16 Пнд 14:40:58 #774 №628187 
>>628000
короче та же задача но уже с функциями http://ideone.com/WCiRRb
почему то не работает сложение int и float в строке
f ($dolg<$deposite){
$pereplata=$pereplata + $dolg;
break;
}

чтобы прибавить остаток к выплате и закончить выполнения цикла, в предыдущий разя я делал через фукнцию intval тоесть таким образом из флоат в инт перевел.
Аноним 18/01/16 Пнд 14:46:58 #775 №628193 
>>628187
а епта понял свою ошибку, исправил http://ideone.com/WCiRRb , но бля какие то цифры странные мне кажется программа работает некорректно, потому что не выполняется последний шаг, ведь если остается допустим 3000 рублей заплатить, мы же ее не выплачиваем в этот месяц, а ждем следущего, и платим с коммисией вся хуйня
Аноним 18/01/16 Пнд 16:10:08 #776 №628254 
>>628187>>628193
Бро, опять же неправильно считает, я же говорю, какая там цифра в том банке должна получиться: 61270 с копейками. Там как раз для проверки второй банк точно такие же параметры имеет, как в задаче на кредит за Айфон.
Не пойму, для чего так усложнять с float, с этой плавающей точкой?
Там же абсолютно простой алгоритм:
1. Имеем сумму кредита.
2. Умножаем её на 0.0n (сразу прибавляем таким образом процент к сумме кредита) и прибавляем комиссию за обслуживание кредита.
3. Проверяем, получившаяся сумма больше или меньше 5000, которые может выплачивать Анончик в месяц.
4. В соответствии с результатом проверки или продолжаем цикл выплат, или выплачиваем имеющуюся сумму (не забывай, что она у нас уже должна быть умножена на процент и к ней должна быть уже прибавлена комиссия за обслуживание кредита).
Всё.
Ещё замечание: лучше переводить названия переменных, а не писать транслитом.
Я не ОП, он пояснит теперь не скоро, наверное, я вообще недавно начал изучать РНР и возился с задачей на кредит Айфона несколько дней, зато потом сократил до нескольких строк её, изучил нормально работу циклов на ней.
С плавающими точками пока не работал и, честно говоря, не совсем понимаю, для чего она там.
Аноним 18/01/16 Пнд 16:11:23 #777 №628255 
>>628254
*кредит на Айфон
Также усложнения с плавающей точкой особого нет, просто она там абсолютно ни к чему.
Аноним 18/01/16 Пнд 16:33:52 #778 №628267 
>>628254
>>628255
ты можешь просто код исправить http://ideone.com/WCiRRb , или свой прислать как должно быть я не понимаю.
Аноним 18/01/16 Пнд 16:55:00 #779 №628279 
Надо сделать одну работу с API Гугл Аналитикс, для этого подключаю вот эту библиотеку https://github.com/google/google-api-php-client#installation но не могу подключить, если скачиваю полный пакет и подключаю его таким образом:
require_once 'google-api-php-client/src/Google/autoload.php';
Получается такая ошибка:
Fatal error: Uncaught exception 'Exception' with message 'This library must be installed via composer or by downloading the full package. See the instructions at https://github.com/google/google-api-php-client#installation.' in C:\OpenServer\domains\zorge\otc\google-api-php-client-master\src\Google\autoload.php:14 Stack trace: #0 C:\OpenServer\domains\zorge\otc\index.php(2): require_once() #1 {main} thrown in C:\OpenServer\domains\zorge\otc\google-api-php-client-master\src\Google\autoload.php on line 14
Аноним 18/01/16 Пнд 16:56:01 #780 №628281 
ОП, делаю твои задачи на ЖС, застрял на роботе на шестой задаче. Почему мое решение неправильное? Я не так понял условия?
https://jsfiddle.net/kkpjnqc1/2/
Аноним 18/01/16 Пнд 16:56:32 #781 №628282 
>>628255
>>628254
переделал как ты сказал,
http://ideone.com/WCiRRb
все равно получается сумма 60260.891466803
Аноним 18/01/16 Пнд 16:57:39 #782 №628283 
>>628279
Ну а ты композером ставил, или просто скачал и распаковал репозитарий?
Аноним 18/01/16 Пнд 17:00:12 #783 №628286 
>>628282
а все теперь точно исправил получилось
56423.563121625
61268.718210807
51029.365496746,
короче спасибо за помощь, пиздец я долбоеб, ЗАТО АЙТИ ВЫШКА ЕСТЬ.
Аноним 18/01/16 Пнд 17:03:49 #784 №628289 
>>628267
Лучше сам попробуй разобраться, это стоит того, я гарантирую.
>>628282
Бро, я не пойму обозначения у переменных. Почему месячная выплата называется $deposit?
Сейчас с телефона, тогда чуть позже.
>for($dolg;$dolg>=0;$month++)
Вот тут уже не вполне верно всё, там лучше из количества месяцев исходить, а не из общей суммы, потому что она не известна. Месяцы нам тоже не известны, но можно поставить хоть 100 - не суть важно.
Аноним 18/01/16 Пнд 17:04:23 #785 №628290 
>>628286
Аа, ну тогда молодца!
Аноним 18/01/16 Пнд 17:05:53 #786 №628291 
>>628279
Ты неправильно его подключаешь. Там же написано в инструкции как это правильно делать
Аноним 18/01/16 Пнд 17:30:22 #787 №628299 
>>628286
Много лишнего кода, ОП не одобряет такое.
Там можно повторяющиеся части вынести из if и else.
А с привязкой цикла к $dolg > 0 - шикарная идея! А я и не понял сразу.
Теперь пропала зависимость от непонятного и с потолка взятого числа 20 месяцев.
Отличная находка, поздравляю себя, кому ещё это интересно
ОП вроде тоже говорил об ограничении цикла годами жизни, или я что-то путаю. Тоже не подсказал такого почему-то.
Аноним 18/01/16 Пнд 17:40:03 #788 №628304 
>>628283
Скачал и распаковал, там кажется написано что так можно, если качаешь всю папку.
Аноним 18/01/16 Пнд 17:40:23 #789 №628305 
>>628291
Мне сложно разобрать как это делается, можешь подсказать?
Аноним 18/01/16 Пнд 17:53:48 #790 №628309 
>>628305
Ну посмотри, ты же делаешь require_once файла которого не существует. Autoload.php находится в папке vendor
Аноним 18/01/16 Пнд 18:01:57 #791 №628311 
>>628309
В самих скачанных файлах есть autoload.php по тому адресу который я подключаю. И во всех примерах что находил в гугле, подключают именно так.
Аноним 18/01/16 Пнд 18:05:26 #792 №628316 
>>628299
>Там можно повторяющиеся части вынести из if и else.
атвичаю нельзя это вынести, я уже 2 дня думаю как это сделать хз.
вышка-кун.
Аноним 18/01/16 Пнд 18:20:28 #793 №628328 
>>628316
Если два дня, то вот: http://ideone.com/YfN1KR
Мы делаем общую переменную перед условиями с if и else, а далее её подставляем в условия.

А какая специальность, что именно изучал?
Аноним 18/01/16 Пнд 18:21:15 #794 №628329 
>>628309
И даже вот здесь, используется такой пример https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-php?hl=ru
Аноним 18/01/16 Пнд 19:16:19 #795 №628393 
пацаны, насколько важна вышка? Можно ли будет устроиться на работу, без вышки?
Аноним 18/01/16 Пнд 19:44:51 #796 №628431 
>>628393
Вышка в постсовке настолько обесценилась, что всем похуй если скиллы есть. А вот для перевоза жопы в золотой миллиард, нужен диплом приличного места.
Аноним 18/01/16 Пнд 20:40:46 #797 №628490 
Я что то не понимаю, хочу использовать composer, делаю всё как здесь http://open-server.ru/docs/#rabota-s-composer
Ввожу в командной строке путь к проекты C:\OpenServer\domains\mysite\>composer init
мне пишет """"""" не является внутренней или внешней командной и т.д.
Аноним 18/01/16 Пнд 21:03:43 #798 №628516 
>>628490
В переменной PATH прописать путь к композеру.
Аноним 18/01/16 Пнд 21:10:53 #799 №628521 
Написал адаптер для класса генератора превью, чтобы попрактиковать ооп. Правильно сделал?
https://github.com/nsdvw/PreviewGenerator

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

Опо-замечания приветствуются.
Аноним 18/01/16 Пнд 22:01:41 #800 №628558 
>>628328
ну по сути в моем коде нет двух абсолютно повторяющихся строк, но твой чутка покороче да.

изучал МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ И АДМИНИСТРИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ. на первом курсе даже хуярили одновременно задачи на бейсике и на паскале. ЧТО БЫ КОД ЛУЧШИ ПОНЯТЬ. потом всякие с++, с#, ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ, ДАЖЕ ЛИСП был ебать ИСКУСТВЕННЫЙ ИНТЕЛЕКТ. ну все по чуть чуть, тонны матана, геометрии, УРАВНЕНИЯ МАТ ФИЗИКИ, ну в итоге нихуя ни кто ни чего не научился, из 50 человек, человек 5 работают в айти, в том числе и я, эникейщик в хелп деске, получаю 30, рядом сидят 1с получающие по 70-80, меня жопа в клочьях, решил перекатвыаться в кодинг. пока с натягом если честно.
Аноним 18/01/16 Пнд 22:53:21 #801 №628604 
>>628558
Там одни и те же вычисления два раза повторяются, это имел в виду.
РНР вроде верный выбор в этом случае, потом должно быть проще перекидываться на другие языки. Сам надеюсь, что мне потом будет проще изучить уже JS для фронт-энда.
Аноним 18/01/16 Пнд 23:19:20 #802 №628635 
Короче, лайки реализуются через сессии, аякс/json запросы. Так-то, шкальники. Продолжайте сидеть в своих регулярках и плодить таблицы.
Аноним 18/01/16 Пнд 23:20:25 #803 №628636 
>>628635
И что, таблицы-то все равно нужны, долбоёбина. Причем тут json/аякс вообще? Это лишь способ добавления лайка в таблицу.
Аноним 18/01/16 Пнд 23:28:36 #804 №628651 
>>628636
Лайк!
Аноним 18/01/16 Пнд 23:57:07 #805 №628704 
14531506278620.jpg
ОП, не знаю, как скоро ты будешь, но вот решение на Чай с тортиком.
Буду ждать комментарий!

http://ideone.com/NmOdH8
Аноним 19/01/16 Втр 00:07:07 #806 №628709 
Регулярные выражение 1 задача, проверка номер телефона, не смог найти как сделать допущение о том что (скобка, пробел, минус) могут присутствовать а могут и быть в строке, поэтому сделал через такие эпические костыли.
http://ideone.com/6tiLc8
Аноним 19/01/16 Втр 00:07:08 #807 №628710 
Пытаюсь поставить через composer библиотеку с АПИ гугл аналитикс https://github.com/google/google-api-php-client, делаю всё как в документации, мне выводит следующую ошибку:
your requirements could not be resolved to an installable set of packages
Это значит в моём композере чего-то не хватает? Каких-то настроек?
Аноним 19/01/16 Втр 00:24:35 #808 №628727 
>>628636
Одна таблица нужна, а ты бы три наплодил, говношкальник ебаный. задачку решил уже?
Аноним 19/01/16 Втр 00:25:09 #809 №628730 
>>628709
http://ideone.com/S7ja4y - не воспринимает номер.
>([ ]|[-]|[(])
Подумай, как можно упростить это выражение. Квадратные скобки - это "один из указанных символов в любой последовательности".
Также нет ни одного пробела, а они могут там быть.

Вот паста ОПа, как минимум, все эти номера должно проверять верно:
----------

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

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

Вот список номеров:

Правильные: array('84951234567', '+74951234567', '8-495-1-234-567', ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67', '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567', '8 ( 999 ) 1234567', '8 999 123 4567');

Неправильные: array('02', '84951234567 позвать люсю', '849512345', '849512345678',
'8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
'84951a234567', '8495123456a',
'+1 234 5678901', // неверный код страны
'+8 234 5678901', // либо 8 либо +7
'7 234 5678901' // нет +
);
Аноним 19/01/16 Втр 00:25:14 #810 №628731 
>>628704
с хуертиком, анус себе дернул уже мразота?
Аноним 19/01/16 Втр 00:25:35 #811 №628732 
>>628727
Ну давай сюда структуру такой таблицы, нешкольник.
Аноним 19/01/16 Втр 00:25:37 #812 №628733 
>>628730
ахаха тупой шкальник решает регулярку, спешите видеть.
Аноним 19/01/16 Втр 00:26:08 #813 №628734 
>>628732
ОП тебе на ротан давать будет, школомразь тупая.
Аноним 19/01/16 Втр 00:26:40 #814 №628737 
>>628734
Слив защитан, опущенец.
инб4: слил тебе на ротеш
Аноним 19/01/16 Втр 00:28:21 #815 №628739 
>>628558
ахаах бля, долбоеб с вышкой обученный как макака крестам и прочее функциональнищине не может веб и регулярки, вот это потеха.
Аноним 19/01/16 Втр 00:30:05 #816 №628741 
14531526052710.png
>>628709
>как сделать допущение о том что (скобка, пробел, минус) могут присутствовать а могут и быть в строке
Для этого есть один из символов на скриншоте.
Почаще смотри на эту страницу в учебнике ОПа во время решения задач.
Аноним 19/01/16 Втр 00:30:33 #817 №628742 
>>628733

Обзывать окружающих школьниками лучше где-нибудь в /b

>>628732

С такой манерой общаться ты ответа вряд ли дождешься.
Аноним 19/01/16 Втр 00:31:45 #818 №628744 
Не знаю где спросить, спрошу в любимом треде :3

Анон, если ты юзал Vagrant, чем он лучше обычного VirtualBox'a с установленой руками ОС и веб сервером например nginx php-fpm? Есть какие-то профиты для сингл разработчика или нинужно?
Аноним 19/01/16 Втр 00:34:54 #819 №628750 
>>628744

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

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

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


Аноним 19/01/16 Втр 00:36:05 #820 №628751 
>>628750

Там еще докер есть, он отличается от вагранта, но я наверно сейчас не смогу подробно расписать чем именно.
Аноним 19/01/16 Втр 00:41:54 #821 №628756 
>>626817
http://pastebin.com/ufnVLanq
ОП, в дополнение к этому еще бы хотел задать вопрос. Я как понимаю форма будет в action иметь значение "/". Значит мой роутер должен понимать гет у меня или пост и вызывать соответствующий контроллер и метод?

Вообще я хочу переписать свой роутер и сделать как у фреймворков. Где нибудь в index.php прописать все роуты моего приложения:

return array(
'/' => '/base/index',
....
);

Ну или как там делается:

$router = new Router();

$router->add('GET', array('/' => '/base/index'));

Или мне это нафиг не нужно и я все усложняю?
Аноним 19/01/16 Втр 00:44:25 #822 №628757 
>>628750
т.е. вот для меня как сингл разработчика не стоит игра свечь и можно дальше продолжать пользовать настроенную ВБ машину?
Аноним 19/01/16 Втр 00:47:25 #823 №628760 
>>628756

> Я как понимаю форма будет в action иметь значение "/".
Почему? Обычно ПОСТ обработчик формы располагается по тому же URL что и ГЕТ, например /register. Ты читал урок про формы?

> Значит мой роутер должен понимать гет у меня или пост и вызывать соответствующий контроллер и метод?
теоретически роутер может при гет/пост вызывать разные методы. Но я бы не советовал это делать так как это усложняет понимание кода.

> Где нибудь в index.php прописать все роуты моего приложения:
Попробуй, почему нет. Почитай также на досуге про роутинг в сифмони и посмотри как он конфигурируется через yml

> Или мне это нафиг не нужно и я все усложняю?
можно попробоавть если хочешь.

Аноним 19/01/16 Втр 00:48:03 #824 №628761 
>>628757

Да, это инструмент не для тебя. Хотя возможно тебе бы он пригодился если тебе например периодически приходится создавать ВМ например для тестирования.
Аноним 19/01/16 Втр 00:50:06 #825 №628763 
>>628761
Спасибо, анон.
На досуге может быть поиграюсь.
Аноним 19/01/16 Втр 00:50:46 #826 №628764 
>>628757
Я не он, но пользуюсь вагрантом поверх виртуалбокса. Сильно упрощает жизнь. Он может почти моментально поднимать машины из скрипта. После того, как вырубили свет и у меня приказал долго жить мой няшный дебиан я перешел на вагрант.
Аноним 19/01/16 Втр 00:50:55 #827 №628765 
>>628760
ОП, если что по ссылке на пастебин у меня тоже вопросы. На случай, если ты подумал, что там только твои ответы.
Аноним 19/01/16 Втр 00:56:26 #828 №628770 
Кстати, у меня жутко тормозит убунта на виртуалке. Чому?
Аноним 19/01/16 Втр 00:56:58 #829 №628771 
>>628741
блеванул с фронтенда.
Аноним 19/01/16 Втр 01:02:53 #830 №628775 
14531545735150.jpg
Я-таки сделал первые четыре задачи
w1: https://ideone.com/sgIZfu
w2: https://ideone.com/DBu62z
w3: https://ideone.com/7hEeAu
w4: https://ideone.com/rdAHwD
Аноним 19/01/16 Втр 01:03:44 #831 №628776 
>>628770
С иксами?
Аноним 19/01/16 Втр 01:05:08 #832 №628777 
>>628756

> Я все равно не понимаю. Вот есть у меня в контроллере addAction, он создает модель студента и запускает ее метод add, а там вызывается метод класса работы с БД тот же add? Или как? Мне не нравится это дублирование. И я не знаю других способов. Давай вот на этом моменте подробнее остановимся.

Неверно.

- у тебя скорее будет не метод addAction, а метод вроде registerAction. При ГЕТ запросе он выводит форму, при ПОСТ обрабатывает (читал урок про формы? задай вопросы если непонятно)

> он создает модель студента и запускает ее метод add
неверно. У модели студента нет такого метода, она лишь хранит информацию о студенте. Перечитай урок про паттерны работы с БД, задай вопросы.

> а там вызывается метод класса работы с БД тот же add?
Он вызывается из контроллера:

$studentGateway->insert($student);

> Мне не нравится это дублирование.
Интуиция тебя не подвела, это действительно неправильно.

> А еще про 404 ошибку, думаю надо отдельный файл шаблона создать, и чтобы роутер вызывал метод indexAction в контроллере с аргументом '404' например. Верно?
Можно так, можно просто сделать где-то метод вывода 404. Контроллер вряд ли получится назвать цифрами.

https://github.com/fxsloker/Student/tree/master/vendor - папку вендор надо убрать из репозитория и добавить в гитигнор, зачем она? В репозитории должен быть в первую очередь твой код а не сторонний. Скачивающий запустит композер инсталл.

https://github.com/fxsloker/Student/blob/master/public/index.php#L12
> error_reporting(0);
Объясни зачем? Зачем ты включаешь игнорирование любых видов ошибок?

> https://github.com/fxsloker/Student/blob/master/app/students.sql#L33
> `sex` enum('0','1') NOT NULL,
не используй цифры в енумах, http://www.mysql.ru/docs/man/ENUM.html

mysql воспринимает числа как номер элемента и это ведет к трудноотлаживаемым багам.

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

> CREATE TABLE IF NOT EXISTS
чуть надежнее делать DROP + CREATE или только CREATE так ка кв базе может быть не та таблица что надо.

> FrontController это тот же роутер что ли? Он вызывает нужный контроллер и экшен. Значит мой роутер уже FrontController?
примерно так. Фронт контроллер это когда все запросы проходят через этот самый фронт контроллер, а он уже запускает конкретный контроллер действия. Так что у тебя фронт контроллером является Router (не совсем точно названный)

https://github.com/fxsloker/Student/blob/master/app/bootstrap.php#L13
строки длиннее 80 символов надо переносить как описано в PSR

> set_error_handler("exception_error_handler");
можно бы и через анонимную функцию чтобы не загрязнять пространтство имен функций.

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

https://github.com/fxsloker/Student/blob/master/app/Router.php#L17
> strtolower($controllerName)
не очень понятно зачем? в урл регистр букв имеет значение везде кроме протокола и домена.

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

Аноним 19/01/16 Втр 01:07:45 #833 №628782 
>>628756

> $_view;
зачем подчеркивание? так в php4 писали когда не было private/public.
Аноним 19/01/16 Втр 01:40:47 #834 №628800 
Сделал вот за минуту, вообще танцую.
http://ideone.com/M9c7wg
Советы/критика?
Аноним 19/01/16 Втр 01:49:10 #835 №628803 
>>628800
Лол, салага. Там же пару ерундовин прописать в ОПовском коде, какие советы-критика? Всё там у тебя верно, конечно же.
Я когда эти задачки начал в середине декабря решать, был уверен, что дойду до ООП к Новому году.
Сейчас думаю, дойти бы до ООП к началу-середине марта.
Аноним 19/01/16 Втр 01:54:02 #836 №628807 
>>628803
Просто до этого мне приходилось подумать над всякими там кредитными калькуляторами, а так да, очень просто когда-нибудь я дойду до ооп... когда-нибудь
Аноним 19/01/16 Втр 02:03:08 #837 №628812 
>>628807
За пять минут поигрался сейчас: http://ideone.com/eAd4Ye

Дойдём до ООП и перейдём, я базарю и гарантирую.
Аноним 19/01/16 Втр 03:07:38 #838 №628854 
14531620581750.png
>>628812
determination
Аноним 19/01/16 Втр 06:09:18 #839 №628906 
>>627974
>Перенаправить и вывод, и ошибки в файл можно так:
>команда 2>&1 > file.txt
>и вывод, и ошибки
>&
В моем представлении символ > означает перенаправление, а символ & - логическое "и", пробел, опять же повторяюсь, в моем представлении, должен быть "разделителем" не знаю правильно назвать.

Аноним 19/01/16 Втр 06:39:33 #840 №628909 
>>627974
>Перенаправить и вывод, и ошибки в файл можно так:
>команда 2>&1 > file.txt
>и вывод, и ошибки
>&
В моем представлении символ > означает перенаправление, а символ & - логическое "и", пробел, опять же повторяюсь, в моем представлении, должен быть "разделителем" не знаю правильно назвать.
Следовательно, часть выражения 2>&1 мне кажется совершенно не связанной кучемалой. Получается: 2перенаправитьИ1 перенаправить в файл.тхт
По моему, 2перенаправить и 1перенаправить в файл.тхт или 2и1 перенаправить в файл.тхт 2> & 1> file.txt как-то логичней записть представляется представляется.

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

> 2>&1 значит перенаправить данные, из потока №2 (поток ошибок stderr) в поток №1 (поток вывода stdout)
А зачем тут тогда &? И почему первый раз мы не отделяем пробелами символ перенаправления, а второй разделяем? Не понимаю.
Аноним 19/01/16 Втр 07:22:13 #841 №628913 
$app['session']->set($itemid, array('ip' => $ip_address, 'likes' => 0));
Короче в сессии в силексе каждому лайку по уникальному айди создается значение айпи и кол-во лайков. Может быть либо 1 либо 0, т.к. больше одного нельзя ставить.Я так понимаю, что при лайкании с каждого нового айпишника значение айпи и лайк будет заново переписываться для айдишки лайка? Получается без таблиц не обойтись?
Аноним 19/01/16 Втр 07:23:07 #842 №628914 
что-то не понимаю принцип сессий.
Аноним 19/01/16 Втр 07:25:13 #843 №628915 
>>628914
Как кукисы только значения на сервере, а у пользователя только айди сессии.
Аноним 19/01/16 Втр 08:16:53 #844 №628924 
ОП, привет, проверь, пожалуйста
>>625791
>>626334
Аноним 19/01/16 Втр 08:39:42 #845 №628935 
http://namefuctionstar.esy.es/GuestBook/
вот зацените тестовое и лайки.
Аноним 19/01/16 Втр 08:47:17 #846 №628939 
>>628935
А соус где?
Аноним 19/01/16 Втр 09:22:45 #847 №628951 
>>628935
>Allah
>لا إله إلا الله محمد رسول الله
>20 лайков
Обосрался.
Аноним 19/01/16 Втр 10:21:57 #848 №628972 
Вы в курсе, что старый тред на 800 постов ещё посещаем ньюфагами и там даже пишут что-то? Да и в этом скоро 900 ростов. Пилите новый тред и суммоньте опа, а то он редко заходит
Аноним 19/01/16 Втр 10:22:42 #849 №628973 
>>628951
абу ну не сри
Аноним 19/01/16 Втр 10:23:28 #850 №628974 
бля ну нахуй так делать
Аноним 19/01/16 Втр 10:25:03 #851 №628977 
>>628854
http://ideone.com/eAd4Ye - смотри, как я могу.
Я, наверное, слегка поехал уже, но делаю сейчас задачу на числа прописью - она способствует.
Аноним 19/01/16 Втр 10:26:13 #852 №628978 
>>628972
Наверное, официальный тред не переписали в прикреплённом посте раздела.
Аноним 19/01/16 Втр 10:32:15 #853 №628980 
>>628972
Тут бамплимит 500 или 1000? Судя по тому что мы тонем и не всплываем, скорее всего 500.
Аноним 19/01/16 Втр 10:32:36 #854 №628981 
>>628775
С почином! Один маленький шажок для человечества, но зато какой огромный шаг для анона! Точнее, наоборот.
Рекомендуется со строчной буквы писать if, а также слитно писать elseif. А так всё правильно.
Аноним 19/01/16 Втр 12:35:20 #855 №629048 
>>628906

В данном случае он является признаком того что справа от > указано не имя файла, а номер потока. Если написать 2>1 то это значило бы "перенаправить поток ошибок в файл с именем 1"

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

> И почему первый раз мы не отделяем пробелами символ перенаправления
не знаю, по моему это ни на что не влияет

>>628913

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

Касательно вопроса, твоя задача разбивается на 2 независимые части:

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

- как запрещать повторное голосование. Ну тут все просто - надо в БД сохранять факт что пользователь с данным ид проголосовал за данную запись и не позволять голосовать второй раз

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

>>628914

А гуглить пробовал?

https://www.google.ru/search?q=%D1%81%D0%B5%D1%81%D1%81%D0%B8%D0%B8+%D0%B2+php&newwindow=1&gbv=1&sei=5wKeVrHNLsisygOy7ZqYBw

на phpfaq неплохое объяснение

я готов ответить на вопросы, но на конкретные вопросы по какой-то статье, а не вопросы вида "погуглите за меня"

Алсо во многих случаях сессии не требуются. Я вообще не понимаю, почему их везде использовать пытаются. Надо наверно урок про них сделать.
Аноним 19/01/16 Втр 12:36:48 #856 №629049 
>>628972
>>628978

Это потому что в шапке постоянно старая ссылка.

>>628980

500, ночью попробуем перекатиться.
Аноним 19/01/16 Втр 12:44:34 #857 №629059 
>>629048
идентификатор - это идентификатор записи в бд, к которой ставятся лайки. каждому пользователю в сессию свой айпи записываестя. у пользователя нет идентификатора, в глаза долбишься мразь тупая. ой все нахуй иди.
Аноним 19/01/16 Втр 12:50:07 #858 №629061 
14531970072540.png
Вброшу сюда, а потом в новый тред.
https://github.com/foobar1643/student-list
Сделал вот задачу из ОП-поста на список студентов, реализовал все что нужно было, код все равно получился говном (но работает). Подскажите что переделать, что сделано не так.

Поддержки mysql нет потому что мне лень было её ставить на сервер. Взял вместо неё postgresql, хотя в теории если поменять одну строчку в конфиге, то всё должно заработать и с mysql (дамп базы очевидно не подойдет).
Аноним 19/01/16 Втр 12:54:56 #859 №629064 
>>629061

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

Аноним 19/01/16 Втр 12:56:45 #860 №629066 
>>629064
Я насчет текста и подсказок не особо задумывался.
Аноним 19/01/16 Втр 13:02:07 #861 №629070 
>>629061
Мне не нравится код. Как-то читать тяжело.
Аноним 19/01/16 Втр 13:16:23 #862 №629078 
>>628935
Неудобно, что страница после лайка полность перезагружается.
Аяксом или жквери можносделать без перезагрузки.
Аноним 19/01/16 Втр 13:22:19 #863 №629085 
>>629078
А можно аяксом без жеквери.
Аноним 19/01/16 Втр 13:34:21 #864 №629094 
>>629085
А жекверием нельзя?
Аноним 19/01/16 Втр 13:56:51 #865 №629111 
>>629094
Можно и с ним, и без него.
Аноним 19/01/16 Втр 14:01:18 #866 №629116 
Сосач, помоги, пожалуйста. Есть скрипт парсера youtube. В инпут вбиваем ключевые слова, на выходе получаем файл data.txt со списком спаршенных видео по ключам. Проблема в том, что скрипт добавляет несколько видео по кейворду, а нужно, чтобы добавлял только 1 видео. В PHP не шарю, поэтому прошу помощь здесь.
Код парсера:
<?php
//error_reporting();
@ini_set('max_execution_time', 0);
echo "<title>Парсер YouTube V2.1 (с) by Gogres</title>";
echo "<form method = \"POST\" >";
echo "Кейворды (по одному на строку):
медвед
креветка
<br><br>";
echo "<textarea name=\"keys\" cols=\"70\" rows=\"10\"></textarea><br>";
echo "<input name=\"page\" size=5 type=\"text\" value=\"1\"> :Количество страниц<br>";
echo "<input type=\"submit\" value=\"Click & Parse\">";
echo "</form>";

$data=fopen('data.txt','a');
if ($_POST['page']) $pages=$_POST['page']; else $pages=1;
if ($_POST['keys']){
$filename=$_POST['filename'];
$papkaname=$_POST['papkaname'];
$keys=split("\n", $_POST['keys']);

foreach ($keys as $k=>$key){
$key=trim($key);
$reskey=$key;
$key=urlencode($key);
$key=str_replace("%20", "+", $key);

for($i=0; $i<$pages; $i++)
{
$pageparse=file_get_contents("http://www.youtube.com/results?search_type=videos&search_query=".$key."&page=".$page);
if(strpos($pageparse, "/watch?v=")!=false)
{
$matches=array();
$pattern = "/href=\"\/watch\?v=([^\"]*)\"/sU";
preg_match_all($pattern, $pageparse, $matches);
$resultmovies=implode(" ", $matches[1]);
$resultmovies=str_replace("&hd=1", "", $resultmovies);
$resultmovies=str_replace("&feature=browch", "", $resultmovies);
$resultmovies=explode(" ", $resultmovies);
$resultmovies=array_unique($resultmovies);
$moviescount=count($resultmovies);
//$query="http://www.youtube.com/watch?v=".$resultmovies;
foreach($resultmovies as $movielink)
{

$link = trim($movielink);
if ($link!="EMPTY")
{
\t$text='<object width="425" height="350">';
\t$text.='<param name="movie" value="http://www.youtube.com/v/'.$link.'"></param>';
\t$text.='<param name="wmode" value="transparent"></param>';
\t$text.='<embed src="http://www.youtube.com/v/'.$link.'"';
\t$text.='type="application/x-shockwave-flash" wmode="transparent"';
\t$text.='width="425" height="350"></embed></object>';
fwrite($data, $text."\n");
\t}
}
sleep(1);
}

} }

}
fclose($data);

?>
Аноним 19/01/16 Втр 15:21:37 #867 №629158 
Насколько сильно надо знать Гит и Гитхаб? Если научился создавать, добавлять, клонировать репозитарий через командную строку, этого достаточно? Я слышал что целые книги по Гиту выходят, нужно ли знать все эти подробности?
Аноним 19/01/16 Втр 15:24:35 #868 №629159 
>>629158
Для джуниора хватит того что ты описал.
Аноним 19/01/16 Втр 15:24:48 #869 №629160 
>>629158
Научись еще создавать ветки и работать с ними. Потом уже по обстоятельствам.
Аноним 19/01/16 Втр 15:38:07 #870 №629169 
>>629158
А где про это почитать? Вообще ничего не знаю по гиту пока что. И гитхабу(это ж сайт, не?)
Аноним 19/01/16 Втр 15:42:41 #871 №629173 
>>629169
Git - система контроля версий, GitHub - сайт, который работает на основе этой системы контроля версий. Так же существуют и другие системы контроля версий (Apache Subversion, Mercurial), но это уже другая история.

У гитхаба есть серия интерактивных уроков которые помогут понять новичку как это работает.
https://try.github.io/
Аноним 19/01/16 Втр 15:56:23 #872 №629182 
>>629173
Ох щи, я думал, что это просто сайт, на котором все компоненты системы выложены в виде структуры, можно тупо почитать код, скачать его и т.п.
Аноним 19/01/16 Втр 15:58:10 #873 №629184 
>>629182
Это одна из функций системы контроля версий.
Аноним 19/01/16 Втр 16:11:59 #874 №629194 
14532091200470.png
>>629184
Я думал, что единственная...
Тэк-с, тэк-с, ещё и Гитхаб теперь изучать, ну наконец-то!
Аноним 19/01/16 Втр 16:43:14 #875 №629223 
Сделал задачу про айпад и функции, но мне выдают "Превышено ограничение на время".
http://ideone.com/bNsZj2
Аноним 19/01/16 Втр 16:48:48 #876 №629227 
>>629223
Значит попал в бесконечный цикл, проверь условие.
Аноним 19/01/16 Втр 16:58:43 #877 №629239 
>>629223
Ты все время увеличиваешь сумму кредита и ничего не отнимаешь от нее. Т.е. условие < 0 не наступит никогда.
Аноним 19/01/16 Втр 17:50:27 #878 №629279 
14532150278230.gif
Почтото в старый ни кто перекат не кинул? Спасибо доброанону, который написал где новый тред.

PHP-ны. Скажите, как реализовать следующую задачу:(Пожалуйста, подробно, в вебе я вообще ни разу ничего не делал)
1)Создать страницу, на которой есть возможность просмотра видео.
2)На этой странице есть возможность залить видео. После заливки видео обрабатывается(обрезается на половину(тут по подробней распишите, пожалуйста, если можете)). Не знаю куда заливать, посоветовали бесплатное амазноновское хранилище. После заливки идет запись в БД о том, куда залито обработанное видео и есть возможность на странице воспроизвести это видео. Добра вам сразу!
Вектор Аноним 19/01/16 Втр 17:55:38 #879 №629285 
>>625135
>Советую показывать промежуточные варианты.
http://ideone.com/TxblFr - вот, первую часть сделал. Что надо исправить?
Аноним 19/01/16 Втр 17:56:46 #880 №629286 
14532154069720.jpg
>>619873 (OP)
Анончики, помогайте, я застрял в бесконечном мысленном цикле и не могу выбраться. Задачка на проверку грамматики: http://ideone.com/VRhfc0
Почему при проверке в массив выводится только первая ошибка? После долгих размышлений я решил, что само регулярное выражение задано неправильно и вариант с "или-или" в данном случае - неверный выбор. Но если так, то получается, выражение можно заточить лишь под проверку конкретного предложения? Ткните пальцем в страницу из руководства, дайте подсказку, что угодно, я совсем запутался.
Аноним 19/01/16 Втр 17:57:50 #881 №629291 
>>629286
Потому-что preg_match_all
Вектор Аноним 19/01/16 Втр 18:01:17 #882 №629295 
>>629285
Черт! Забыл вывести "Всего" и "Среднее".
Аноним 19/01/16 Втр 18:03:33 #883 №629298 
>>629291
Это что-то новенькое. Но всё сработало, спасибо.
Аноним 19/01/16 Втр 18:06:24 #884 №629302 
>>629298
>Это что-то новенькое
Ты точно по урокам Опа занимаешься?
Аноним 19/01/16 Втр 18:07:36 #885 №629304 
>>629286
Вместо $lowerCase = mb_strtolower($text); можно просто в регулярку добавить модификатор i.
Аноним 19/01/16 Втр 18:09:18 #886 №629306 
>>629302
Там про preg_match_all дальше говорится, же после Граммар Наци.
Сам помню, как тыкался с имеющейся до этого информацией, а потом просто прочитал дальше на странице всё.
Аноним 19/01/16 Втр 18:30:16 #887 №629317 
>>629286
А почему вывод ошибок не сделал нормальный, чего var_dump-то всего лишь?
Если нужна подсказка для этого, то сделай вот так: раскладываешь циклом с foreach массив с ошибками на ключи и значения, другим циклом с foreach раскладываешь значения так же на ключи и значения - там же в массиве $mistakes у нас массивы в массивах. Далее просто выводишь в echo последние значения вложенных массивов. Если не получится сразу, то подсмотри: http://ideone.com/T4ewwV Но лучше сам пробуй сделать, конечно.
Аноним 19/01/16 Втр 19:19:46 #888 №629357 
>>629173
Cпасибо.

Ну что, когда перекатываемся? Тред трещит по швам
Аноним 19/01/16 Втр 19:23:28 #889 №629362 
14532206081790.jpg
>>629357
Не дрейфь, сухопутная крыса. Всем оставаться на своих местах, держим курс в бездну!
https://github.com/MindiMakridi/filehosting Аноним 19/01/16 Втр 19:50:09 #890 №629396 
>>623492

https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L8
> "host" => $host,
Лучше назвать настройку db.host, чтобы было понятно что это за опция. И переменную тогда dbHost.

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

$twig->addFunction(new Twig_SimpleFunction(...);

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

https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L84
> $comment = $file->getComment();
незачем передавать комментарий отдельной переменной, его можно получить в шаблоне через file.getComment()

> $pathToFile = $app->filesHelper->getPathToFile($id . $file->getFileName());
что за ерунда? Почему для функции getPathTofile надо делать какие-то манипуляции? Это ведь верный путь к ошибкам, легко забыть склеить или что-то передать. Плюс ты ухудшаешь код, вынося знание о том как получается путь к файлу из функции и размазывая его по всему коду.

Надо либо функцию принимабщую объект File (не ошибешься) либо по отдельности id и filename. либо обе функции сразу.

Более того, вместо того чтобы передавать 4 переменных вроде pathToFile, relPathToThumb проще тут передать filesHelper в твиг.

> $app->get("/files/:id"
> $app->post("/files/:id",
Эти 2 функции содержат много общего кода и отвечают примерно за одну и ту же страницу, логично их объединить в одну. Также, читал ли ты урок по работе с формами? После успешной обработки формы надо делать редирект (можно на ту же страницу) чтобы при нажатии кнопки обновить запрос не отправлялся. Перечитай урок про формы и проверь соответствует ли твой код написанному там алгоритму.

> $fileName = $app->filesMapper->fetchFileName($id);
> $fileName = $fileName['filename'];
почему бы не возвращать сразу filename, а не массив?

> exit;
в слиме есть $app->stop(), он в отличие от exit корректно вызывает все нужные обработчики завершения скрипта в слиме.

https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L159
Создание папок для превьюшки наверно должно быть не здесь а в функции создания превьюшки.

https://github.com/MindiMakridi/filehosting/blob/master/public/index.php#L178
> if ($_FILES['userfile']['error'] == UPLOAD_ERR_OK) {
а где проверка на размер файла?допустим ли он?

Там еще не все я проверил, если я забуду и не напишу продолжение, напомни мне.
Аноним 19/01/16 Втр 19:58:36 #891 №629405 
>>629396
>незачем передавать комментарий отдельной переменной
Это комментарий для модального окна, он может отличаться от того, что в объекте, например, когда пользователь введет невалидный коммент, он будет там отображаться.
Аноним 19/01/16 Втр 21:13:29 #892 №629522 
Переспрошу >>627804.
Аноним 19/01/16 Втр 21:15:24 #893 №629523 
>>623853
Оп проверь пожалуйста:
http://integer64.github.io/site-layout/exercise/mainTask/index.html
Сделал под ослика.
Можете начать тыкать в мои косяки
Аноним 19/01/16 Втр 21:34:35 #894 №629538 
Аноны, у вас есть ламповая конфа впашке?
ЗАДАЧА ПРО IPAD Аноним 19/01/16 Втр 21:58:19 #895 №629547 
14532298991270.jpg
Анончик, проверь, пожалуйста, задачу про Ipad.

http://ideone.com/E1TKjj
Аноним 19/01/16 Втр 22:50:43 #896 №629589 
14532330440420.png
Анон, выручай.

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

Не прошу ничего делать за меня, а прошу - подкиньте ключевых слов для поиска (интеграция с 1с не предлагать).
Аноним 19/01/16 Втр 23:08:25 #897 №629605 
Учусь, прохожу учебник ОПа.
http://ideone.com/H8NBFd

Получается вывести победу и проигрыш. Когда игрок=компьютер, почему-то не выводится надпись "Ничья!". Что я делаю не так?

} elseif (($anonDice1 + $anondice2) == ($compDice1 + $compDice2)) {
echo "Ничья!";
Аноним 19/01/16 Втр 23:22:27 #898 №629619 
>>629605

Когда сделал вот так, всё получилось. Почему?
http://ideone.com/OuuiCM

$aSum = ($anonDice1 + $anonDice2);
$cSum = ($compDice1 + $compDice2);

} elseif ($aSum > $cSum) {
echo "Проиграл";
Аноним 19/01/16 Втр 23:34:18 #899 №629623 
Можно ли написать скрипт массовой рассылки сообщений в контакте? Вообще написать и используя АПИ контакта, чтобы можно было рассылать например всем участникам определённой группы (админом которой не являешься)
Аноним 19/01/16 Втр 23:34:29 #900 №629624 
>>628981
Спасибо, анон
 Аноним 19/01/16 Втр 23:41:53 #901 №629630 
>>629116
Ну где PHP-макаки то? Элементарщина же.
Аноним 19/01/16 Втр 23:54:01 #902 №629631 
14532368417740.jpg
>>629624
Я-таки сделал задачу про рулетку
w5: http://ideone.com/dSvapD
Аноним 19/01/16 Втр 23:55:18 #903 №629632 
>>629631
Это оказалась задача W4.2, простите
Аноним 20/01/16 Срд 00:04:48 #904 №629637 
>>629547
Считает неправильно.
Ориентир для Софтобанка - 61270 с копейками.
Значит, у тебя и кредит за Айфон рассчитывался неправильно.
>$creditSum = ($creditSum / 100 * (100 + $percent)) + $servicePay - $payout
Забавно, можно проще всё представить.
Ошибка заключается у тебя в том, что ты не обновляешь сумму кредита перед всеми условиями с if и else.
>>629605
Ошибка в написании переменной вот тут: if (($anonDice1 == $anondice2) && ($compDice1 == $compDice2))
Отыщи сам, надо это тренировать тоже.
Подсказка: $anondice2 - должно быть $anonDice2
И эта же ошибка в другой строке, номер 16.
>>629619
Потому что тут переменные в одном месте названы без ошибок, а в 16 строке по-прежнему ошибка.
>>629624
Тебе спасибо, я так повторяю пройденный материал.
Аноним 20/01/16 Срд 00:06:54 #905 №629638 
>>629631
Хорошо.
Аноним 20/01/16 Срд 00:23:31 #906 №629650 
>>629547
Также в самой функции обозначь переменную $paymentTotal, иначе будет вылезать ошибка.
Вот твой исправленный калькулятор - но ни в коем случае не открывай, пока сам не попытаешься сделать: http://ideone.com/jaYrBg
Вот алгоритм:
1. Имеем сумму кредита.
2. Прибавляем к ней нужный процент и прибавляем комиссию за обслуживание кредита.
3. Проверяем, получившаяся сумма больше или меньше 5000, которые может выплачивать Анончик в месяц.
4. В соответствии с результатом проверки или продолжаем цикл выплат, или выплачиваем имеющуюся сумму и обрываем цикл (не забывай, что она у нас уже должна быть умножена на процент и к ней должна быть уже прибавлена комиссия за обслуживание кредита).
Всё.
Аноним 20/01/16 Срд 00:26:35 #907 №629654 
>>629650
>уже должна быть умножена на процент
То есть к ней должен быть прибавлен процент.
Я делал не в скобках, как ты, а через умножение суммы кредита на 0.0n - так всё экономится.
Аноним 20/01/16 Срд 00:44:04 #908 №629663 
14532398445880.jpg
>>629638
Вроде бы получалась задачка про айфон
W5.1: http://ideone.com/AeH9Qm
Аноним 20/01/16 Срд 00:45:59 #909 №629665 
>>629637
Спасибо, добрый человек. Нашёл ошибку без спойлера, как только ты сказал "надо это тренировать тоже". После основной работы учусь, внимание уже не такое. Буду иметь в виду)
Аноним 20/01/16 Срд 00:48:20 #910 №629668 
Привет.
Короче, у меня депресузха походу начинается. Думал на этих каникулах в колледже буду вкалывать - изучать пхп и потихоньку пилить диплом. Диплом должен делаться с базой, которую нам должен был скинуть препод. Я думал что пхначну делать как он скинет базу.
Получилось, что базу он так и не скинул, до конца каникул осталось +-10 дней. Так на каникулах я почти ничего не учил, немного по мелочи пхп и mysql. Еще я расчитывал кстроитьсч на практику, то место куда мне нашли родители, сказали мол там будем погромирование и всё такое, оказалось что там пограммирования нет впринципе. Я понимаю, что каникулы и собственно свободные дни почти проёбаны, а я почти ничего и не делал, диплом даже и не начинал.
Для диплома надо как минимум знания php. Вижу тут у вас есть свои уроки, они норм повышают уровень? Или сразу в какую-то книгу вникать? Помогите пожалуйста. Сейчас почти утро, я сейчас лягу спать и буду вкалывать весь день как проснусь. Мне нужны ваши советы по этому поводу, что дрочить чтоб повышать уровень php. Спасибо, не бросьте в беде.
Аноним 20/01/16 Срд 00:49:40 #911 №629670 
>>629668
Добавлю, не скинул препод потому, что говорит мол траблы с компом. Вот так звёзды неудачно стали.
Аноним 20/01/16 Срд 00:53:28 #912 №629675 
>>629663
Нет, считает неверно. Должно получиться 61270 и много знаков после запятой.
У тебя в последний раз когда $creditBalance участвует в выражении с $paymentTotal - от него уже отнята месячная плата.
Вот тут:
if ($creditBalance < 5000) {
$paymentTotal += $creditBalance;
А нужно просто выплачивать чистый $creditBalance на тот момент.
Аноним 20/01/16 Срд 00:57:27 #913 №629679 
>>629668
Учебник ОПа отлично поможет в освоении синтаксиса, вообще всех основ. Если постоянно работать, то за месяц основы усвоишь, вплоть до БД.
Но писать код придется постоянно.
Аноним 20/01/16 Срд 01:00:54 #914 №629685 
>>629675
>А нужно просто выплачивать чистый $creditBalance на тот момент.
Но к нему уже должны быть прибавлены проценты и комиссия за кредит.
Аноним 20/01/16 Срд 01:13:03 #915 №629700 
14532415840760.jpg
>>629685
Чёт на 8 рублей отличается
http://ideone.com/AeH9Qm
Аноним 20/01/16 Срд 01:22:26 #916 №629711 
>>629700
Проценты от 262 рублей куда-то делись, там как раз будет столько.
Аноним 20/01/16 Срд 01:24:57 #917 №629714 
14532422971660.jpg
>>629711
А, точно, теперь сходится, спасибо
http://ideone.com/AeH9Qm
Аноним 20/01/16 Срд 01:25:39 #918 №629716 
>>629700
>if ($creditBalance < 500)
Странный ориентир.
ОП проверял, подставляя в сумму кредита 1000 - должно выйти 2030 рублей.
А с твоим ориентиром - не факт.
Аноним 20/01/16 Срд 01:27:08 #919 №629717 
>>629714
http://ideone.com/X6MUaK - ноуп, считает неверно, если 1000 подставить.
Он при любых суммах должен считать одинаково правильно.
Аноним 20/01/16 Срд 01:52:10 #920 №629732 
14532439307810.jpg
>>629717
Ну теперь вроде допёр: http://ideone.com/AeH9Qm
Аноним 20/01/16 Срд 02:02:50 #921 №629735 
Привет.
Карочи мне нужен скрипт. Если кому не трудно, то помогите позязя.
Есть страница /redirect.php, есть ссылки на неё вида /redirect.php?id=1 (2,3,4,5 итд).
Нужно редиректить трафик на разные url, в зависимости от значения параметра id (т.е. если id=1 то редирект на url1, если id=2 то на url2 итд).
С меня как и всегда огромное спасибо.
Аноним 20/01/16 Срд 02:04:32 #922 №629736 
>>629732
Хм, нет, бро: http://ideone.com/SvK7TK - если подставить 1000 в кредитбаланс.
Введи дополнительную переменную для суммы кредита, когда она увеличена на проценты и с прибавленной комиссией за кредит.
С ней именно оперируй, когда надо просто её и выплатить.
Просто каждый раз перед if проверяй, не стала ли чистая сумма кредитбаланса со своими 3 процентами и 1000 комиссии меньше 5000 возможной выплаты анончика.
Если стала - сразу выплачиваешь только её и прекращаешь цикл.
Попробуй так базарю, еще захочешь, поцене 38 рублей
Аноним 20/01/16 Срд 02:15:02 #923 №629739 
>>629623

В этом треде не обсуждаются вредоносные программы.
Аноним 20/01/16 Срд 02:23:40 #924 №629749 
Это нормально, что я над таким приложением провозился 18 часов согласно вакатайму?
Сейчас под лайки по айпи таблицы создаю.

https://github.com/toppestkek/GuestBook
Аноним 20/01/16 Срд 02:25:02 #925 №629751 
>>629736
>Просто каждый раз перед if
Просто каждый раз в if, опечатался.
За пределами условий в этом цикле получай сумму кредитбаланса со своими 3 процентами и 1000 комиссии, ну а дальше подставляй её в условия, хоть в if, хоть в else.
Аноним 20/01/16 Срд 02:27:09 #926 №629752 
14532460291190.jpg
>>629749

Аноним 20/01/16 Срд 02:28:03 #927 №629754 
>>629749
>Сейчас под лайки по айпи таблицы создаю.
Сломался-таки?
Аноним 20/01/16 Срд 04:33:23 #928 №629785 
>>629754
Нет, работает, но чувство мне подсказывает, что каждый раз заново переписывать лайку сессию по идентификатору на новый айпи неправильно.
Аноним 20/01/16 Срд 05:16:58 #929 №629795 
Переката не было?
https://github.com/MindiMakridi/filehosting Аноним 20/01/16 Срд 06:30:21 #930 №629808 
>>629795

Скоро будет

>>623492

https://github.com/MindiMakridi/filehosting/tree/master/templates
для шаблонов лучше поставить расширение вроде file.html.twig чтобы было видно что это шаблон, чтобы редактор подсвечивал синтаксис и тд

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html#L20
сделай-ка вывод даты в виде "12:00 Jun 12, 1991"

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html#L23
> {% if canEdit(token, file.getToken()) %}
странный набор аргументов у функции. По моему логичнее бы смотрелось if canEdit(file) или if canEdit(user, file). возможно эта функция спроектирована неверно?

https://github.com/MindiMakridi/filehosting/blob/master/templates/layout.html#L6
> <meta name="viewport"
у тебя верстка адаптирована под мобильные устройства? Если нет, зачем тег?

> https://oss.maxcdn.com/respond/1.4.2/respond.min.js
зачем это? Также, почему держишь файлы на каком-то левом стороннем сайте, а не у себя?

https://github.com/MindiMakridi/filehosting/blob/master/templates/layout.html#L39
> <a href="http://filehosting.ru
Не надо вписывать тут имя домена. Как твой сайт выгрузить на другой домен не правя код? Если нужно имя домена, его надо вынести в конфиг, но лучше бы определять его автоматически через хттп заголовок HOST. Хотя тебе по моему оно вообще не нужно.

> https://ajax.googleapis.com
Почему скрипты на стороннем сайте?

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

https://github.com/MindiMakridi/filehosting/blob/master/templates/filePage.html#L34
> <textarea
может тут стоит какие-то HTML5 атрибуты для валидации поставить, например что это обязательное поле или ограничение на длину, или не требуется?

https://github.com/MindiMakridi/filehosting/blob/master/public/css/style.css#L1
> input[type="file"]{
Этот стиль применяется ко всем файловым инпутам на сайте. Наверняка ты хотел тут сделать стиль только для инпута в форме загрузки. Если так, то надо исправить.

> textarea.form-control
> .modal
То же самое. Ты хочешь стили воообще к любым модальным окнам применять или к одному конкретному?

https://github.com/MindiMakridi/filehosting/blob/master/lib/config.php
Странное название папки lib что значит "библиотеки"

https://github.com/MindiMakridi/filehosting/tree/master/models
не очень удалчное название так как в эту папку куча разных классов сброшена, не только модели

https://github.com/MindiMakridi/filehosting/blob/master/models/FilesMapper.php#L15
строки длиннее 80 символов рекомендуется переносить

https://github.com/MindiMakridi/filehosting/blob/master/models/FilesMapper.php#L71
логичнее назвать функцию editFileComment

> $STH
> DBH
переменные и поля принято писать с маленькой буквы

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L10
> $this->rootDirectory = $root;
одинаковые вещи лучше называть одинаково

https://github.com/MindiMakridi/filehosting/blob/master/models/helpers/FilesHelper.php#L39
> return md5($salt1 . $cypher . $salt2);
Эта функция не добавляет ничего к токену, а лишь увеличивает его объем. На входе мы имеем комбинацию из 20 символов (20 ^ 36 вариантов, гугл говорит что это 6.87194767 × 10^46). На выходе получаем 128-битный хеш, 2^128 вариантов (2^128 = 3.40282367 × 10^38). То есть ты уменьшаешь число возможных вариантов, снижаешь стойкость ключа (хотя 2^128 тоже много), да еще и увеличиваешь длину (md5 генерирует 32 символа на выходе). Объясни-ка, с какой целью это делается?



http://integer64.github.io/site-layout/exercise/mainTask/index.html Аноним 20/01/16 Срд 06:30:40 #931 №629809 
>>623518

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

Надо бы сделать адаптивную версию, например для устройств меньше 800 по ширине. Протестировать можно в отладчике браузера, нажав иконку с смартфоном или на реальном устройстве, если оно у тебя есть. Размеры экранов: http://mydevice.io/devices/

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

В HTML коде нет метатега, переключающего режимы совместимости ИЕ.

Фраза digital & branding выделена у тебя ариалом, а на макете - курсивным шрифтом.

В бледно-сером блоке с 4 колонками Consectetur у тебя нет паддинга снизу, а на макете есть.

Над надписью Our Featured Works маргин у тебя намного меньше макета.

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

Маргин под портфолио у тебя намного меньше чем на макете. зато над Get in Touch больше чем надо.

На html, body не задан основной стиль и размер шрифта (в данном случае как мне кажется, основной это шрифт которым написано Vestibulum id ligula porta euismod semper...).

> font-family: "Lato-Black"
> font-family: "Lato-Regular"
Неправильно подключен шрифт. Это одно семейство - Lato, просто с разеым весом и начертанием.

> <i class="logo-icon"></i><span class="logo-text">ebpaint
неудачно получилось, поисковик не проиндексирует настоящее название компании. Также, я думаю тут проще лого целиком сделать картинкой чем подключать шрифт ради нескольких букв.

> <i class="service-block-icon icon-android"></i>
Лишний тег, не несущий никакого смысла. Иконку можно сделать просто фоном на псевдоэлементе ::before

> data-all="All"
Не очень понятен смысл атрибута, ведь по кнопке All мы показываем все?

> data-id="Graphic"
А как работу отнести в несколько категорий? Сделай-ка лучше атрибут чтобы там через пробел или другой символ перечислялись категории (но я не знаю есть ли в ксс поддержка для разделителей кроме пробела. По моему еще дефис поддерживается).

> <span class="phone"
Сделай-ка телефон ссылкой с протоколом tel: чтобы она была кликабельна и звонибельна. А адрес - ссылкой на любой картографический сервис (например open street map, яндекс карты, гугл карты).

Также, разметь блок адреса по микроформату hcard https://yandex.ru/support/webmaster/hcard/general.xml . Микроформаты позволяют роботам извлекать информацию в понятном им виде. Проверь свою разметку валидатором, например http://hcard.geekhood.net/

> & # 64 ;
есть же & copy ;

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

Насчет эффекта при наведении на картинки портфолио - ты используешь изменение opacity, но я его уже кучу раз видел, так неинтересно, нельзя ли сделать тут немного другой эффект? Например картинки выводятся чуть более темными пока на них не наведена мышь (и по моему это реально сделать даже без ксс фильтров). Или при наведении снизу плавно выезжает название работы (его можно хранить в атрибуте, чтобы не создавать новых тегов в разметке). Подумай, можно ли тут что-то такое сделать. Может можно как-то CSS3 фильтры применить: http://habrahabr.ru/post/144852/
Ответы 10-17 января Аноним 20/01/16 Срд 06:31:10 #932 №629811 
>>623576

> $originalamount
Надо писать $originalAmount

> if ($bills[5000] > 0) {
> if ($bills[1000] > 0) {
> if ($bills[500] > 0) {
Во-первых это копипаста, а копипаста - зло. Во-вторых, из-за этого очень сложно поменять номиналы купюр не переделывая половину кода. Надо избавиться от этих недостатков, например использовать цикл.

> if ($bills[5000] >= floor($amount / 5000)) {
> $count5000 = floor($amount / 5000);
> } else {
> $count5000 = $bills[5000];
> }
Это короче и удобнее записать через min/max

> echo "\n\nWe are temporarily unable to give you amount of money you asked.
Ты выводишь это уже после того как вывел вариант выдачи, нехорошо. Если сумму выдать нельзя, не надо выводить вариант выдачи.

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


https://github.com/toppestkek/Test Аноним 20/01/16 Срд 06:34:13 #933 №629813 
>>623601

https://github.com/toppestkek/Test/blob/master/data.js#L2
> function Formdata
Название похоже на объект FormData из DOM, это верный путь к ошибкам и опечаткам. Надо назвать по-другому, также, функции надо называть начиная с глагола: сделайЧтоТо.

> div.inne rHTML = '';
> div.inne rHTML += 'Заполните поле "Пароль. Пароль должен быть длиннее 6 символов."';
Лучше сделать чтобы функция возвращала результат проверки, а уже другая функция его выводила.

> data.age.value.match(/^[-\+]?\d+/
Почему разрешен отрицательный возраст? И почему разрешено вводить мусор после цифр?

Далее тут http://pastebin.ru/YE0nSJpt спам фильтр не пропускает
Ответы 10-17 янв Аноним 20/01/16 Срд 06:34:41 #934 №629814 
>>623605

> $regexpSegment = array (
> '/A/u' => '[А]',
> '/a/u' => '[а]',
> '/B/u' => '[В]',
> '/C/u' => '[С]',
многовато копипасты. Попробуй-ка сделать эту замену одним выражением.

> $regexpSegmentClean = array (
> '/\\[А\\]/u' => 'А',
> '/\\[а\\]/u' => 'а',
> '/\\[В\\]/u' => 'В',
Это что-то неправильное. Зачем удалять ранее поставленные скобки? И как ты отличишь скобки в тексте от поставленных тобой?

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

>>623617

> строка if($foundAnimals["Dog"]) { превратилась в if (isset($foundAnimals["Dog"]) && $foundAnimals["Dog"])
if (!empty(...))

> abstract protected function setSymbol($symbol);
По моему это неправильно. Вот как надо понимать это надпись? Я читаю ее так: "если ты наследуешь мой класс ты обязан сделать метод который принимает на вход иконку животного, то есть позволяет ее поменять". А должно быть так: "если ты наследуешь мой класс то обязан ответить какая иконка у твоего животного". То есть должен быть метод getSymbol() возвращающий иконку животного в данный момент. А поле protected $symbol; можно выпилить вообще.

>>623632

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

>>623635

А погуглить?

>>623778

Очевидно надо прописать натсройки соединения с твоей БД чтобы он из нее брал данные либо отключить эту штуку.

>>623782

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

>>623808

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

>>623826

Задачи на вектор и кошки-мышки решил? Из учебьника в Оп посте? Они помогут с основами, а дальше читай про SOLID, изучай фреймворки и смотри как в них все сделано. Была какая-то большая книга про ООП но я ее название забыл.
Ответы 10-17 янв Аноним 20/01/16 Срд 06:35:11 #935 №629815 
>>623853

Ну давай начнем со скриншотов: https://www.browserstack.com/screenshots/6142c07ae33e5f6bb20e6fc9c2966da93984392b

Я как минимум вижу проблемы со шрифтами так как ты выбрал один формат woff который поддкрживают не все браузеры. Надо больше форматов, включая форматы для ИЕ и Сафари. На fontsquirrel есть хороший конвертер.

>>623930

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

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

>>623933

> нужно ли городить такие выражения $d = isset($arr['d']) ? $arr['d'] : '' если можно обойтись $d = $arr['d']
Нельзя, будет ошибка обращения к несуществуюшему элементу. Тут лучше сделать функцию которая проверяет наличие элемента в массиве.

>>624192

Нужно

>>624248

Так трудно сказать. Может браузер пережевывает яваскрипт и рисует страницу, а может что-то еще виновато. Может например он какие-то данные на диск сохраняет, а тот медленный или занят. Хорошо бы в Хроме запустить внутренний инструмент для трассировки ( chrome://tracing/ ) и попробовать разобраться в результатах.

Вообще конечно дырка огромная, подозрительно. Можешь еще глянуть диспетчером задач, кто и сколько ест процессора в процессе загрузки. Если Хром ест 100% во время паузы - значит проблема именно в обработке скачанных данных.

Также можешь выложить это на какой-нибудь хостинг - я или аноны скажут тебе сколько у них времени грузится.
Ответы Аноним 20/01/16 Срд 06:35:47 #936 №629816 
>>624281

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

А что насчет raw? Это отмена автоматического экранирования (применения функции htmlspecialchars) к выводимым данным. По стандартам ХТМЛ в теге скрипт и стайл данные интерпретируются как записаны, то есть например амперсанд пишется как амперсанд, а не & amp ; Потому требуется отменить автоэкранирование. Правда, в этом случае в данных не должно быть последовательности </скрипт, но джейсон_энкоде экранирует все слеши в виде \/ и потому защищает нас и от этого, от закрытия блока скрипт.

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

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

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

>>624325

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

>>624331

> if (!Object.create) {
Лучше вместо этого сделать свою функцию, а в ней вызывать либо Object create, либо замену. А ты понимаешь как работает функция-замена?

> if (arguments instanceof NetworkElement) {
> this._elements.push(arguments);
А если нет то что? Проигнорируем ошибку и притворимся что все верно? Почитай про принцип fail fast.

> if (this._elements instanceof Generator) {
Нехорошо это, закладывать в программу ограничение что только наследники Generator генерируют ток. Лучше просто сделать метод в элементе сети который возвращает 0 для не генерирующих сущностей. Или сделать метод отвечающий на вопрос, генерирует ли этот элеимент энергию. То же и с потребителями.

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

> if (powerExcess === 0) {
> break;
> powerExcess -= lines.getPowerAccumulated();
А мы в минус тут не уйдем?

> PowerLine.prototype.countDailyProfit = function(powerExcess) {
> this._powerAccumulated = this._powerCapacity;
Вот это хорошая мина замедленного действия. Из названия метода можно подумать, что он просто что-то считает, а он еще и меняет внутреннее состояние объекта. И вообще это поле _powerAccumulated оно плохое, так как оно никак не привязано ко времени, например оно само не сбросится на следующий день. Да и линия передачи не копит энергию, она ее передает - тут явно несоотвествие модели и реального объекта. Это поле надо выпилить.
Аноним 20/01/16 Срд 06:36:10 #937 №629817 
>>624896

> function makeFirstLetterUppercase($text) {
Название функции не соответствует тому что она делает

> $text = preg_replace('/\.[\s](\w)/u', '. $1', $text);
> $text = preg_replace('/(\w)\.(\w)/u', '$1. $2', $text);
> $text = preg_replace('/(\w)\,(\w)/u', '$1, $2', $text);
> $text = preg_replace('/(\w)[\s?]\,[\s?]*(\w)/u', '$1, $2', $text);
Нельзя ли это в одну замену сделать? Можно.

> foreach ($text as $key => $value) {
Нужно другое название для value, key надо удалить если ты ее не используешь.

> $text = explode('.', $text);
$sentences = explode(....);

>>624901

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

>>624935

Живой просто был занят

>>625054

Можно но лучше бы создание каких-то сервисов вообще вынести из контроллеров. Если это большой проект то стоит использовать DI Container, например от Симфони. Если маленький - можно сделать самописный ServiceLocator.

>>625126

Почитай алгоритм обработки форм https://github.com/codedokode/pasta/blob/master/forms.md

>>625339

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

> просто не понимаю почему сейчас лучше процедурно
Потому что проект очень маленький и так проще и быстрее и написать и прочитать.

> Я бы классом сделал и внедрял её статически __construct(PDO Init::$pdo).
Не понял о чем ты. В аргументе нелзя писать PDO Init::$pdo.

>>625424

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

>>625791

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

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

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

> if (preg_match('/^([а-яё.,;?!]+)([a-z]+)/ui'
По моему непрвильная проверка на язык слова, надо провеять только язык первой найденной буквы. То есть что-то вроде ^(русская буква).

>>625846

1) начни с презентации http://lib.custis.ru/WebAppCaching (при желании можно нагуглить и запись выступления). Вообще кеширование это попытка снизить нагрузку на систему ценой расхода памяти.

Вот еще статьи: https://www.google.ru/search?q=ruhighload+%D0%BA%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&ie=UTF-8&gws_rd=cr&ei=KvGeVtWYEuv4ywORpKPQAQ

2) Вот так было бы неплохо для начала (информация о запросе, время, стектрейс):

[12-01-2015 12:00:00] GET /some/page
IP: 10.10.10.x.
User-Agent: googlebot/1.2
Exception: the hell broke out
Stack:
#1 SomeClass::someMethod(123, "test") at file.php:12
#2 someFunction() at index.php:13
Аноним 20/01/16 Срд 06:36:47 #938 №629818 
>>625985

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


>>626026

Код мутный, чего только это стоит

> catch (com_exception $e) {}

>>626051

Урок по теме https://gist.github.com/codedokode/ff99e357e9860ea169b8

>>626182

> Циклы №1

Код слишком сложно записан, надо сократить и упростить.

> ( $creditBalance x $percent ) + $servicePayment
Это повторяется много рз, попробуй избавиться от повторов

Если поставть долг = 1000 http://ideone.com/q0Zljl то считает неверно (ответ 2030р).

> Циклы №2

>$newAmount = ( $amountM = $percent );
Это 2 отдельных команды, надо писать в 2 строки.

Считает верно.

> или вот так
> $newAmount = ( $amountM $percent );
> $amountM = $newAmount;
Почему бы сразу в amountM и не класть результат? И кстати что значит M? Неудачное название.

>>626189

Я не слышал про такой паттерн. Алсо где гарантия что в массиве реквест есть нужный ключ?

>>626194

Погугли, есть сайты

>>626220

> function makeFirstLetterUppercase($text, $regexpCut, $bigRegexp, $bigReplacement)
Тут $regexpCut, $bigRegexp, $bigReplacement явно не аргументы, а постоянные значения, значит они не дложны быть в скобках, а просто внутри функции определены.

> [\\.!?\\.\\.\\.]
Что это значит? От того что ты точку вписал 4 раза ничего не меняется. Кваждратные скобки значт "любой из символов"

Название переменной это существительное, а не глагол $cutTheText -> $sentences
findTheFirstLetters -> firstLetter
upTheFirstLetters -> firstLetter или head (голова)
countAllTheLetters -> letterCount
cutTheLittleFirstLetters -> tail (хвост)
theRightSentence -> correctSentence
implodeOnlyRightSentences -> text, result


Голова и хвост - традиционные названия для таких вещей.

> as $keys => $sentence
Если не исплоьзуешь keys то не надо ее писать

> $findTheFirstLetters = mb_substr($sentence, 0, 1);
замену первой буквы на большую в строке стоит вынести в отдельную функцию, а то у тебя большая простыня кода получается

> mb_substr($sentence, 1, $countAllTheLetters);
Можно просто mb_substr($sentence, 1), глянь мануал по этой функции

> mb_strlen($text, "UTF-8");
кодировку не надо указывать если ты задал mb_internal_encoding

> (\\.|!|\\?|\\.\\.\\.)
Тут проще написать "один или более идущих подряд любых знаков препинания". Также непонятно зачем для запятой сделана отдельная регулярка.

Это решение пока что не годится и требует доработки.
Аноним 20/01/16 Срд 06:37:10 #939 №629819 
>>626240

Так он получил за сайт 3 млн?

>>626254

Да, про 16 лет это верно

>>626334

> про клавишу "Shift";
> '/([а-яёa-z]+)\\s([.,;:!?])\\s([а-яёa-z]+)/ui'
Сложновато, я думаю лучше записать просто "знак препинания, за которым идет буква"

> [.]\\s|\\A
А где гарантия что там ровно 1 пробел?

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

> 2) про Йоду.

> $yodaText = [];
лишняя строка

В общем, верно.


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


>>626339

Пусть пишет, он еще учится.

>>626347

Длинные комментарии лучше сверху

>>626380

Надо вынести авторизацию на отдельный УРЛ, например /login

>>626394

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

>>626472

Либо \n либо переходи на шаблоны

>>626515

Потому что она для этого и предназначена

>>626617

Отвечаю: код мутный
Ответы 10-17 янв Аноним 20/01/16 Срд 06:37:34 #940 №629820 
>>626662

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

>>626683

Сделано верно, если хочешь можешь еще сделать через свитч или массив.

>>627207

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

>>627411

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

>>627490

Перевод строки это и есть либо символ \n либо 2 символа \r\n в зависимости от настроек редактора и операционной системы.

То есть

$a = "1
2";
$b = "1\n2";

это одинаковые строки если в редакторе конец строки кодируется с помощью \n

>>627500

Это работает только с консольными командами, выводящими данные в виде текста. ДА, можно брать результат и делать с ним что хочешь. В этом и сила командной строки.

>>627655

Ты молодец что помогаешь другим анонам.

>>627732

А ты гит изучил? Если нет, почитай git book для начала.
Аноним 20/01/16 Срд 06:37:57 #941 №629821 
>>628112

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

>>628119

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

>>628125

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

>>628281

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

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

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

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

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

Этот тред закрыт.
Аноним 23/01/16 Суб 08:39:41 #943 №632587 
Аноны, которые оставили посты 18 и 19 января, с поста >>628328 по пост >>629306 !

Ответы на ваши ответы в новом треде:

>>632579
>>632580
>>632581
>>632582
>>632583
>>632586

Аноним 24/01/16 Вск 04:38:28 #944 №633212 
Аноны, с постами за 20 января, вам тоже всем ответил в новом треде: >>633207

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

Аноним 25/01/16 Пнд 19:22:47 #945 №634221 
14537389675240.png
И так, нужна помощь, я не знаю в какой раздел программирования идти, но мой вопрос связан с сайтами.
К делу:
Есть один сайт, как пример прbведу этот https://csgofast.com/. Я хочу его рипнуть и поставить к себе на хост с одной целью, но мне нужно что бы с этого сайта https://csgofast.com/ парсилась инфа "топ игроков, история" и т.п, ко мне на сайт, точнее на мой рип/шаблон.
Молю о помощи
Аноним 02/02/16 Втр 21:34:19 #946 №641418 
Как вариант, через preg_match
http://ideone.com/xiI6Hq
comments powered by Disqus

Отзывы и предложения