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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что почитать

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

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

Если тебе лень выравнивать код руками, закачай его на http://beta.phpformatter.com/ и нажми «format». Робот исправит выравнивание и отступы в мгновение ока (да, прогресс не стоит на месте). Если ты используешь мощную IDE вроде PhpStorm, там тоже есть функция форматирования кода.

Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть стандарты PSR-1 и 2. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт или slovari.yandex.ru и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)

Вот ссылка на стандарты, где все это описано подробнее и даны примеры оформления:

PSR-1: https://github.com/php-fig/fig-standards/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/php-fig/fig-standards/blob/master/accepted/ru/PSR-2-coding-style-guide.md


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

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

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

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

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

Объясняй

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.menu__list {
padding: 0;
}

.menu__list > li {
...
}

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

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

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

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

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

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

Например картинка новости это img. А какое-нибудь украшение которое есть на всех страниых это фон.
Аноним 2016/01/06 21:35:18  №620339 69
Аноним 2016/01/06 21:36:22  №620340 70
>>619907

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<?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";
}
Аноним 2016/01/07 17:40:32  №620903 133
>>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";
}
}

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

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

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

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

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

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

Ну и ошибки что он ожидает всегда ровно 1 пробел после «но».
Аноним 2016/01/08 03:33:19  №621353 157
>>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' // нет +
);

Аноним 2016/01/08 03:41:51  №621357 158
>>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 мы удваиваем каждй бекслеш:

\\\\

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

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

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

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

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

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

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

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

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

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

>>620903

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

arrayOfPossibleVariants -> possibleVariants
value -> variant

>>620899

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

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

Аноним 2016/01/08 04:24:07  №621371 162
>>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.
Аноним 2016/01/08 04:36:01  №621380 163
>>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



Аноним 2016/01/08 04:41:52  №621381 164
>>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 и за ней нет ничего, отсюда и проблемы.
Аноним 2016/01/08 04:44:44  №621383 165
>>620754

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

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

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

Функцию расчета кредита в одном банке.
ООО Вектор Аноним 2016/01/08 05:17:16  №621393 167
>>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-го ранга на один ранг с целью расширить их полномочия.

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

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

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

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

>>621413

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

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

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

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

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

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

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

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

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

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

....

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


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

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

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

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

>>621442

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

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

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

>>621449

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

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

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

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

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

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

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

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

~=
*=
^=
|=
$=

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



Аноним 2016/01/08 09:41:18  №621465 181
>>621462

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

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

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

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

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

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

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

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

MVC не в том что ты создаешь ровно 3 папки, а в том что приложение можно логически разбить на M, V и C.
Аноним 2016/01/08 12:15:00  №621511 185
Ответы в старом треде Аноним 2016/01/08 12:28:38  №621521 186
Ответил на все вопросы и проверил все что было в старом треде.

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



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


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

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

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

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

>>621511

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

также,

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

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

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

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

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

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

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

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

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

private $obj;

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

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

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

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

>>621575

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


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

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

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

В этом коде есть ошибки, тут действительно проверку так просто не вставить. Лучше всего его переписать заново с нуля.
Аноним 2016/01/08 15:18:02  №621602 220
Аноним 2016/01/08 15:20:12  №621607 221
Аноним 2016/01/08 15:20:32  №621608 222
>>621532

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

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

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

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

http://ideone.com/fpRAtk

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

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

http://ideone.com/jY00kx
Аноним 2016/01/08 19:25:54  №621786 245
Переписал файлообменник почти с нуля. Заменил смарти на твиг, подключил 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, рассчитанный на то чтобы грохнуть ссылку, убьет и сабмит формы. Форму не охота вытаскивать из дерева комментариев, она должна открываться под тем комментарием, на который юзер отвечает.
А, блин, наверное придется делать через абсолютное позиционирование.

Аноним 2016/01/08 20:07:07  №621820 246
У слима есть встроенный логгер.
>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
Аноним 2016/01/08 21:22:30  №621853 247
http://ideone.com/3muueO
Прошу проверить задачу, указать на недостатки кода.
Аноним 2016/01/08 21:23:51  №621854 248
Посмотрите на облочка на этих двух сайтах:
http://aqua.dreamtown.ua
http://dreamtown.ua
Они как бы по определённому закону реагируют на действия мышки вблизи, как называет такой эффект?
Аноним 2016/01/08 21:39:41  №621860 249
>>621854
>Посмотрите на облочка, как называет такой эффект
jquery parallax
Аноним 2016/01/08 21:39:58  №621861 250
Аноним 2016/01/08 22:31:02  №621878 251
Аноним 2016/01/08 22:36:34  №621883 252
>>621514
>Задача на тесты: https://gist.github.com/codedokode/8733007 - как тебе?
Отлично. За неё, думаю, и возьмусь в скором времени. Спасибо.
Раньше там Symfony не было в предлагаемых технологиях.

>Если хочешь что-то попроще - сделай клон ютуба. видео надо будет перекодировать с помощью очереди задач, сделать регистрацию, загрузку, просмотр, лайканье, дислайканье и комментирование видео.
Тоже может быть.
Аноним 2016/01/09 00:18:28  №621945 253
>>621781
А где твоя задача на поиск и исправление ошибок в тексте?
Аноним 2016/01/09 01:11:42  №621966 254
>>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
Вот тут у меня получилось записать свое сообщение, это мне нравится.
Аноним 2016/01/09 02:45:04  №621997 255
14522967048250.jpg (66, 1032x783)
783x1032
Тэкс-тэкс, что тут у нас? Ещё одно топорное и неказистое решение от гуманитария? Ну наконец-то!
https://ideone.com/XYyTBQ - даже Идеоне говорит, как XYyёво быть TоBQй.
Задача на проверку и исправление ошибок.
Все замечания ОПа вроде бы учёл.
Аноним 2016/01/09 10:05:55  №622055 256
>>621997
For не переделал в foreach.
Аноним 2016/01/09 12:32:11  №622088 257
Какие книги по пхп полезно было бы себе купить почитать? В ОП-посте даны две: одна 2006, другая 2009 года. Староваты ведь, не?
Аноним 2016/01/09 12:33:07  №622089 258
Аноним 2016/01/09 12:45:25  №622092 259
14523327256130.jpg (400, 1918x782)
782x1918
>>622055
Вот переделал, спасибо за напоминание: https://ideone.com/hZQ6Gk
Также добавил условие для текста, в котором нет ошибок.
Вопрос: как прерывать выполнение всего скрипта, когда переменная соответствует определённому условию?
У меня исправление ошибок идёт отдельным циклом с foreach, он запускается и тогда, когда в предыдущем срабатывает
else {
echo "Ошибок не найдено.";
break;}
И получается, что ошибок не найдено, а текст исправляется.
Как скрипт остановить в этом случае?
Аноним 2016/01/09 12:50:58  №622093 260
>>622092
Сразу в голову гуманитарию приходит муть с ещё одной проверкой текста в этом последнем цикле всеми регулярками сразу, в соответствии с которой текст либо меняется, либо не меняется.
Но пока гоню от себя первую пришедшую мысль, подожду советов.
Аноним 2016/01/09 12:56:11  №622094 261
14523333716080.png (713, 1366x768)
768x1366
OP, ты же вроде знаешь японский? Почему в ниппонию не перекатишься, лучше же чем в рашке?
Аноним 2016/01/09 12:58:52  №622095 262
14523335324440.jpg (63, 400x637)
637x400
>>621997
Развивай привычку мыслить логически, вот годный учебник по логике.
Аноним 2016/01/09 13:23:34  №622113 263
>>622094
>в рашке
ОП вряд ли мыслит подобными петушиными категориями.
Это видно и по его сайту, и по его ответам.
Аноним 2016/01/09 13:24:45  №622117 264
Добрый день, после полугода работы в местной конторе у меня развилась стойкая неприязнь к верстке особенно на сайтах где по тз есть адаптивность. Как не скатиться в быдловерстальщики, а продолжить путь бэкенд программиста? На данный момент знаком с несколькими CMS, sql слабоват, но для уровня работы с cms пока-что хватало, js на таком уровне чтобы пользовать jquery/ajax. Так вот, в какую сторону дальше смотреть?
Аноним 2016/01/09 13:29:28  №622122 265
>>622117
Ты это я, бро. Я тоже спустя полгода продолжил выполнять задачи ОПа. И тоже работаю в быдлоконторе.
Аноним 2016/01/09 13:33:00  №622126 266
>>622122
Наверное как и мне ещё и зп маленькую платят, при том что приходится тянуть по несколько проектов самому?
Аноним 2016/01/09 13:39:20  №622132 267
>>622126
Я как на конвеере. Мне дают заказ, я и дизайн спизжу и верстку сделаю, и заполню. И получаю за это 30к. И все это быстро сделать.
Аноним 2016/01/09 13:42:49  №622135 268
>>622132
Тоже такое ощущение, если по началу я делал по проекту в месяц, и сильно нервничал по поводу того, что я не успеваю что-то, на выходных иногда работал и допоздна засиживался. Сейчас же уже какой-то похуизм выработался когда висит по 3-4 сайта на мне и дедлайн близко - всё равно стараюсь не сидеть дольше положенного, и голову не забиваю этим. Хотя иногда бывают интересные задачи, но в основном чувствую что скатывается в рутину, и всё больше дают сайтов под верстку+настройку функционала по мелочи. Грусть.
Аноним 2016/01/09 13:50:33  №622146 269
>>622113
Ну ок, в россии. Климат и уровень сервиса лучше, еда лучше, ЗП тоже выше..
Аноним 2016/01/09 13:53:55  №622151 270
Аноним 2016/01/09 13:54:55  №622153 271
>>622151
Кстати, тоже анимешник, как и ОП.
Аноним 2016/01/09 15:10:41  №622205 272
>>622151
сша - говно, у вована(vovanjapan - видеоблогер рассказывающий о японии) есть запись с русским ученым который жил в японии а потом переехал в сша, тот говорит что в сша в общем примерно как в россии, но не такая разруха.
>боюсь пхп-макаке о таком и мечтать нельзя
PHP-developer'у можно как раз таки, вон Шамов(тоже блог о японии) вообще сисадмином работает, а это имхо уровень ниже, если сравнивать с грамотным разработчиком.
Аноним 2016/01/09 16:17:48  №622257 273
>>622088
бамп вопросу. И кстати, где ОП?
Аноним 2016/01/09 16:45:03  №622273 274
14523471037180.jpg (98, 445x600)
600x445
>>622093
Ну вот то, что и пришло тогда в голову: https://ideone.com/b7y9Pf
К ОПобоязни добавилась ещё и говнокодобоязнь, хотя тут всё изначально связано.

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

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

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







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

Я ведь уже делал загрузку файла в методе класса файла, ты сказал, что этот код должен быть в контроллере, а не в модели. Так в какие методы её выносить? Хелпер это ведь тоже модель.
Аноним 2016/01/09 17:51:13  №622308 282
Аноним 2016/01/09 17:56:13  №622314 283
Какова длинна поля txt в mySQL. Могу я туда 3 томник войны и мира засунуть?
Аноним 2016/01/09 18:05:11  №622318 284
>>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()

Аноним 2016/01/09 18:06:28  №622319 285
>>621786

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

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

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

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

Аноним 2016/01/09 18:43:53  №622346 290
>>622094

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что-то дороговато, мне кажется можно экономней найти варианты.
Аноним 2016/01/10 01:14:54  №622646 342
Решал тут задачу и для меня всё выглядит нормально, но $newAmount не высчитывается больше одного раза, поэтому прошу помочь.
Айдион http://ideone.com/h1bjyG
Аноним 2016/01/10 01:19:59  №622647 343
>>622646
Почему не высчитывается? Высчитывается. Только ее составные части - $amountM * $percent не меняются в цикле.
мимо не пишу на пхп
Аноним 2016/01/10 02:47:37  №622670 344
>>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
И еще чтобы была встроенная валидация форм и можно было грабить корованы.
Аноним 2016/01/10 02:52:31  №622676 345
>>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>

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

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

Итого:
1. Заквотить в цикле элементы массива, как у aura
или
2. Юзать Slim-PDO с плейсхолдерами-вопросиками?
Аноним 2016/01/10 04:47:14  №622739 347
>>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
Аноним 2016/01/10 10:28:38  №622820 348
14524109190240.jpg (70, 600x449)
449x600
Окей, вкатываюсь в PHP.

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

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

>>622638
Да, всё верно, братишка, столкнулся с подобным как раз.
Мне ещё, наоборот, пытаются подсунуть готовые решения по цене написанных с нуля. Вот как с тем модулем регистрации. А то, что там нет ничего из ТЗ, кроме собственно связи профиля в соцсети с личным кабинетом, - не беспокоит.
Натолкнулся на многое за этот год на фрилансах.
>>622640
Связывался с фрилансерами, которые имели кучу положительных отзывов и рейты около 1к рублей за час, были зарегистрированы и по 10 лет, - всё равно. Поэтому иногда так и хочется сказать сомневающимся анончикам, что фриланс - это совсем не так страшно, когда ты исполнитель, но не хочется плодить безответственных фрилансеров.
Аноним 2016/01/10 10:43:51  №622827 350
>>622646
Неверно то, что у тебя переменная с общей суммой не меняется.
Думаю, одно это должно помочь.
>>622647
Сначала написал ответ, а потом прочитал твое сообщение...
Аноним 2016/01/10 10:45:54  №622828 351
>>622646
Также сразу дам ориентир - 49 лет.
Аноним 2016/01/10 10:59:01  №622830 352
>>622828
На получение суммы, большей 1 млн.
Также у тебя через год после вклада анончику 16 лет по-прежнему.
Аноним 2016/01/10 12:18:49  №622857 353
Господа, когда будет ОП?
Аноним 2016/01/10 12:30:01  №622862 354
>>622332
>>622857
Ну перестань ты уже тред засирать, ОП не вернётся быстрее от этого. Это вообще редкость, что кто-то готов тратить своё время на то, чтобы так часто проверять чьи-то левые хеловорды.
Аноним 2016/01/10 12:41:35  №622868 355
>>622862
Я понимаю, но у меня больше вообще не к кому обратиться. Ладно, буду смиренно ждать опа молча.
Аноним 2016/01/10 12:43:43  №622869 356
>>622868
Делай дальше, у тебя же всё работает в задачах.
ОП потом проверит, ты потом поправишь.
Аноним 2016/01/10 13:11:22  №622879 357
На локальном сервере всё работает
Заливаю на хостинг и...
Fatal error: Call to a member function real_query() on a non-object in
Ну что за фигня такая то?
Аноним 2016/01/10 13:18:07  №622883 358
>>622879
Значит ты в эту функцию пытаешься передать не объект, а она ждет объект. Перед функцией сдампь переменную которая в неё идет. Посмотришь, видимо у тебя ошибка раньше. Ну и если все работает на локалхосте, то мб проблема в настройке mysql на серве.
Аноним 2016/01/10 13:26:57  №622890 359
>>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());
}
?>

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

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

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

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

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

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

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

{{ getDownloadUrl() }}

или так:

{{ viewHelper().getDownloadUrl() }}

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

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

Аноним 2016/01/10 14:21:52  №622922 368
>>622691

Для массива наверно нет смысла генерировать 100500 плейсхолдеров и передавать 100500 значений - проще на стороне PHP заквотить все и вставить в запрос. Я конечно не знаю точно, но подозреваю что иначе можно упереться в какой-нибудь лимит на число плейсхолдеров если элементов в массиве много.
Аноним 2016/01/10 14:23:47  №622923 369
Аноним 2016/01/10 14:30:43  №622925 370
>>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

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


Аноним 2016/01/10 16:35:01  №622965 371
Аноним 2016/01/10 18:09:10  №623029 372
Бывает ли вакансия погромиста Пхп не- верстальщика? как ни ищу на HH, всё сводится на совокупность ПХП+ДЖС+КСС = вёрстка сайтов. Не дно ли это?
Аноним 2016/01/10 20:43:12  №623154 373
>>623029
Одногруппник рассказывает, что в конторе, в которой он работает, есть версталы и дизайнеры. Но PHP-программисту нужно уметь натягивать ГОТОВУЮ вёрстку.
Аноним 2016/01/10 21:48:36  №623227 374
>>623029
Если ты из Мухосрани, то ты обречен. Работодатель захочет одну мартышку, которая будет делать все. Возможно будешь переставлять винду в том числе.
Аноним 2016/01/10 22:09:37  №623239 375
ОП, дело вот какое. Я начал гуглить про 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 и вызывать аналогичный метод модели. Но пугает меня то, что во всех трех классах будут одинаковые методы, которые по цепочке будут вызывать другу друга до обращения в базу. Правильно ли это?
Аноним 2016/01/10 22:50:31  №623260 376
14524554312250.jpg (71, 865x496)
496x865
ОП, я по поводу своего шопа по которому ты мне много чего написал здесь - http://pastebin.ru/mzp3Ex5d
Начал с разработки нормальной БД, почитал про нормализацию, связи. Пришел к такому варианту как на пикче, вот еще в текстовом варианте - http://ideone.com/JmbBSV

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

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

Аноним 2016/01/11 01:33:30  №623321 381
>>623260

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

>>623278

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

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

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

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

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

Ещё читаю книгу Савельевой о РНР - как же тёте далеко до нашего ОПа. Там курс лекций, вроде более-менее доступно излагается, дочитаю.
Аноним 2016/01/11 23:31:30  №623606 403
>>623350
ага, мотивация, пока я безуспешно делаю тестовые задания на днище вакансии по 20 т.рублей в месяц, читать такие вот истории в ваших говноконфах про шлюх, работающих тимлидами за 90к, которые "ну я толком ни жиес ни пхп ни знаю)) ну на рабипитоне и шотот там накалякать магу))" - пригорает пиздец.
Аноним 2016/01/11 23:51:13  №623611 404
>>623606
А откуда ты? Как вообще себя опишешь, свои скиллы?
Аноним 2016/01/12 00:03:19  №623617 405
>>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?
Аноним 2016/01/12 00:05:20  №623619 406
Помните, как-то говорили о сайтах для портфолио на фрилансе? Помимо каких-нибудь магазинов и блогов вот такая чушь вызывает интерес, если хорошо оформлена: http://howmuchdoyoucost.xyz/
Я базарю.
Аноним 2016/01/12 00:11:18  №623621 407
>>623619
у успешных менеджеров? мб
Аноним 2016/01/12 00:11:52  №623622 408
Пиздос, написал в старом треде, и удивляюсь, почему никто не пишет.

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


Аноним 2016/01/12 01:08:48  №623645 419
>>623622

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

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

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

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

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

Например:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>624024

Да.

>>624023

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

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

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

>>624051

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

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

Аноним 2016/01/12 14:51:07  №624077 456
14525994672700.png (55, 941x781)
781x941
>>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вно какое-то.
Аноним 2016/01/12 14:58:02  №624083 457
>>623804
Какую альтернативную ide посоветуешь? Пека и правда у меня слабая.
Аноним 2016/01/12 15:00:28  №624084 458
ОП, сколько можно зарабатывать с помощью пыхи, если я допустим, не гений-математик, а обычныйкун? Как ты думаешь, насколько переспективный данный язык, сильно ли соснёт начинающий через 5-6 лет или всётаки сможет прокормить кота и себя?
Аноним 2016/01/12 15:09:37  №624092 459
>>624077
Ну и всё пиздец? Не робити больше? Скажи оп ты тоже запердолился?
Аноним 2016/01/12 15:28:00  №624106 460
>>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.
Аноним 2016/01/12 15:29:49  №624110 461
>>624084
PHP соснет очень не скоро. Это как спрашивать: когда соснет Facebook или Двач.

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

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

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

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

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

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

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

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

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

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

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

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

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

насчет массивов вы ошиблись, как раз если в массиве елемента не будет это не критично, хотя не хорошо, но если в обьекте это уже может быть критично.
как вы собираетесь проверять существование переменной в обьекте - очень неудобно, и обьекты больше жрут памяти и медленней обрабатываются.
Имхо я за массивы - минимум расходов максимум полезности, все легко проверить isset(ar[d]) и т.д.
Аноним 2016/01/12 20:03:25  №624350 480
>>624342
Что-то вообще тебя не понял. Про какие объекты ты говоришь?
Аноним 2016/01/12 20:27:03  №624365 481
Человек, с которым мы договорились о переделке сайта дня 3 назад в этом треде, только что отписался на почту тебе, по поводу этого задания. Скинул ссылку на сайт, который выложил на бесплатный хостинг.
Аноним 2016/01/13 02:04:48  №624558 482
А что автолоадер в Silex опять не работает? Снова классы вручную что ли подключать?
Аноним 2016/01/13 08:14:16  №624624 483
>>624199
Суть в том, что отплавливает хсс, а что еще еадо для счастья?
Аноним 2016/01/13 08:55:43  №624632 484
Посоны, поясните за тупой вопрос.
Я например, в функции создаю объект
$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);
}
Аноним 2016/01/13 09:06:51  №624639 485
>>624632
Смысл в том, все вычисления по пересчете суммы заказа я хочу вынести в отдельную функцию calc_sum_func(), чтобы можно было вызывать ее из других частей программы, просто передавая Id заказа. Но опять же получается, что в основной функции some_func() я создаю экземпляр , и создаю еще один в calc_sum_func() ?

Конечно, все расчеты можно сделать в some_func() и обойтись одним экземпляром заказа, но теряется гибкость.
Аноним 2016/01/13 09:34:13  №624650 486
>>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.

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

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

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

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

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

Все верно, но задача стоит в написании что-то в виде плагина, который сможет сделать кастомный расчет, без изменения уже имеющегося класса.
Аноним 2016/01/13 11:45:08  №624720 490
>>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 и обратно. Начинай писать, я могу проверить. Если что-то еще непонятно - уточняй.



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

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

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

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

>>624739

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


Аноним 2016/01/13 13:14:13  №624763 497
>>624739

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

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

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

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

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

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

Есть мнение что файловая система NTFS использует кодировку символов UTF-16, но я пробовал опять таки делать конвертацию из UTF-8 в UTF-16 и тоже крякозябры.
Аноним 2016/01/13 13:33:02  №624785 499
>>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-битные функции.
Аноним 2016/01/13 13:34:11  №624786 500
Аноним 2016/01/13 14:00:44  №624795 501
>>624785
>>624786
>Нет.
Разговора тогда нет, спасибо что попытался помочь.
Аноним 2016/01/13 17:00:08  №624896 502
Аноним 2016/01/13 17:43:24  №624901 503
Пальцаны, делаю тестовое задание на php, до этого не учил его.
В общем нужно сделать срипт, который принимает данные через get запрос, решает задачку и выводит ответ на страницу.

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

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


Спасибо.
Аноним 2016/01/13 23:27:13  №625122 510
>>625108
Спасибо анончик, я почитал пасты ОПа по твоим вопросам и понял как дальше делать студентов. Я тоже пилю с TableDataGateway.
Аноним 2016/01/13 23:31:40  №625126 511
Пацаны, вот у меня есть кнопка сенд, она собирает данные с текстбоксов потом что-то там делается и выводятся новые данные на той же странице.
При этом после нажатия на кнопку сенд данные в текстбоксах пропадают, как сделать, чтобы они оставались?
Аноним 2016/01/13 23:37:56  №625128 512
>>625122
Можно подсмотреть у тебя?
Ответы за 8-9 января Аноним 2016/01/13 23:40:21  №625131 513
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);
Это лучше вынести в отдельную функцию

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

Я бы проверил исходники, поискал эту настройку там и проверил, можно ее передавать как конфиг или нет.
Задачи про ошибки Аноним 2016/01/13 23:42:28  №625133 515
>>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 и не исправлять если их ноль.
Вектор, паттерны, задача про ошибки Аноним 2016/01/13 23:43:25  №625135 516
>>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».
Аноним 2016/01/13 23:43:59  №625136 517
>>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

Можешь сделать и так, и так, можешь сделать функцию для заквочивания массивов, можешь подключить квери билдер. Но не стоит генерировать тысячи плейсхолдеров для каждого элемента массива.
Аноним 2016/01/13 23:45:08  №625137 518
Если вы что-то написали до 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




Аноним 2016/01/14 13:37:33  №625405 554
>>625401

только почему-то многие верстальщики и php-разработчики даже эту «примитивную» технологию освоить не смогли и верстают наугад переставляя свойства. Быдлокодеры, в общем.
Аноним 2016/01/14 13:46:50  №625408 555
>>625405
>php-разработчики
Примитивнее относительно даже скриптовых языков я имел в виду. Но говноедом PHPшника так или иначе нельзя назвать, если он верстает на похуй.
Аноним 2016/01/14 13:48:26  №625409 556
14527685064020.png (241, 563x522)
522x563
14527685064081.jpg (57, 540x360)
360x540
14527685064092.jpg (74, 600x450)
450x600
14527685064113.jpg (39, 377x604)
604x377
>>625384
>>>625378
>Такс, такс, с такими нервишками ты много денег не заработаешь.
Да какой-то поехавший чсв в вкатился в тред что-то требует от нас. Его интеллигентно посылают нахуй, а он питушится от того что тут его величесивупетуху никто ничего не должен. Таким как он здесь не рады, мы тут обсуждаем кошек-мышек и аниме!
Аноним 2016/01/14 13:51:10  №625413 557
>>625409
Человек просто запланировал зарабатывать много денег программированием.
Аноним 2016/01/14 14:28:30  №625424 558
Есть ли какие-нибудь книги в которых рассматривается архитектура? Когда начинаю писать что-то крупнее сайта визитки все превращается в какую-то ебучую кашу. Что читать чтобы научиться писать красивый, понятный, структурированный и соответствующий принципам ООП код? Где на гитхабе можно посмотреть интересную реализацию того же MVC?
Аноним 2016/01/14 14:39:27  №625427 559
>>625413
Не обращай внимание на тупого семена
Аноним 2016/01/14 15:00:04  №625440 560
>>625413
Его поведение все равно не приемлемо.
Аноним 2016/01/14 15:05:48  №625443 561
14527731490470.jpg (149, 432x640)
640x432
Ткните, пожалуйста, носом в гайд, мануал или готовый простой скрипт, обрабатывающий хтмл форму и отсылающий писмо на заданное мыло.

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

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

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

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

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

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



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

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

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

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

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

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

Далее: http://pastebin.ru/vKfLkBPw
Аноним 2016/01/15 18:49:46  №626292 637
>>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

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

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

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

>>623401

Ты пишешь глупости, анон пока только изучает работу с Бд и хочет разобраться как это вообще делается. А потом и за доктрину возьмется. И кстати чем хорош пропел если есть доктрина? И чем твой совет поможет если анон хочет разобраться в паттернах работы с БД а не получить готовое решение?
https://github.com/nsdvw/file-sharing Аноним 2016/01/15 18:50:37  №626294 639
>>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.
Аноним 2016/01/15 18:52:32  №626298 640
>>623442

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

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

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

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

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 %}
Аноним 2016/01/16 01:25:20  №626467 655
>>626031
Сделай экстремистский сайт, где вскрываются многомиллионные кражи из бюджета, попилы, дебильные указы чинушей, приводящие к разорению предприятий и страны, типа южного потока, заброшенные НЗП, военные преступления пидорах в чечне и украине. Посадят конечно, но зато какой проект.
Аноним 2016/01/16 01:42:43  №626472 656
Весело хуярю html-теги через echo "<tag>";. Для разработки вообще никакого бугурта. В исходном коде все выведенное таким образом выглядит как одна очень длинная строка, что затрудняет отладку. Как сделать такие теги форматированными?
Аноним 2016/01/16 02:08:55  №626483 657
Аноним 2016/01/16 03:27:12  №626515 658
Ладно, попробую вопрос попроще. Почему хтмлспешиалчарс возвращает > в оутпуте вместо тэгов.
Аноним 2016/01/16 11:34:45  №626594 659
Аноним 2016/01/16 11:39:40  №626597 660
>>625448
Две спасибушки тебе.
Аноним 2016/01/16 12:16:55  №626617 661
>>626026
ОП? Почему ты не ответил на мой пост?
Аноним 2016/01/16 12:18:37  №626619 662
>>626617
Твое время еще не пришло, анон. Жди смиренно.
Аноним 2016/01/16 12:54:35  №626644 663
Не работает 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
Аноним 2016/01/16 13:04:31  №626652 664
>>626644
А зачем плейсхолдер в кавычках?
Аноним 2016/01/16 13:07:41  №626654 665
>>626652
Блять, не заметил. Спасибо.
Аноним 2016/01/16 13:18:33  №626662 666
14529395133850.gif (1127, 320x240)
240x320
>>619873 (OP)
Ну что, опунь, я уже какое-то время учусь по твоим урокам, в кодинг уже какое-то время могу, но не в РНР, так что по мелочи не хотел тебя дёргать, но вот настала пора поинтересоваться, насколько грамотно с точки зрения эстетики, так сказать, написан код: http://ideone.com/n9iSCv
То есть, работает он отлично, но вот насколько принято писать вот так, не знаю.
Аноним 2016/01/16 13:33:21  №626671 667
>>626662
Банк 1: после месячного взноса она уменьшается до -971.61787934484.
Зачем ты банку переплачиваешь? Остался должен 10 рублей. Плати 10 рублей, а не тысячу.
Аноним 2016/01/16 13:51:00  №626683 668
Пропустил одну задачу, но вернулся и сделал.
http://ideone.com/Yjs5K9
Вопрос в том, стоит ли переделать её с использованием switch'а? Или пускай так и остается?
Аноним 2016/01/16 14:02:29  №626690 669
>>626683
тебе бы хотя б elseif научиться использовать
Аноним 2016/01/16 14:05:10  №626692 670
14529423108010.png (3, 566x36)
36x566
>>626690
Руководствовался этим. Или я чего-то недопонимаю?
Аноним 2016/01/16 14:05:37  №626693 671
>>626483
Охуительное решение, но оно мне не подходит. Что делать-то?
Аноним 2016/01/16 14:06:58  №626696 672
>>626692
ты не правильно понял. Они не обязательны для существования конструкции в целом. Т.е. if достаточно. Но для компактной записи и вообще для торжества здравого смысла их надо использовать. Ну и плюс в задачах посложней без этого никуда
Аноним 2016/01/16 14:12:15  №626704 673
>>626696
Про задачи посложнее я догадывался, а так - спасибо за разжевывание и критику, пойду переделаю.
Аноним 2016/01/16 14:25:59  №626726 674
>>626662
>То есть, работает он отлично
Лол, абсолютно неверно всё считает...
Аноним 2016/01/16 14:41:39  №626748 675
>>626662
Там у тебя в некоторых местах просто отнимается сумма, которую анон платит в месяц, не прибавляются проценты почему-то. Например, осталось выплатить 41000, а в другой месяц осталось выплатить 36000, такого типа.
Хотя в функции первой есть умножение на проценты, вот это всё.
Подход вообще не верен: там нужна переменная для общих выплат, а её не заметил у тебя. В минус не должно уходить: если после умножения на проценты и прибавления платы за обслуживание счёта остаётся меньше месячной выплаты - необходимо просто выплатить оставшуюся часть.
Также для обхода массива нужно использовать foreach, а не for, ОП пишет об этом на странице "Повторим?".
https://github.com/fxsloker/Student Аноним 2016/01/16 16:18:08  №626817 676
Аноним 2016/01/16 16:38:10  №626839 677
>>626472
Бамп вопросу. Просто нахуярить <?php ?> в html-код не выйдет, потому что у меня цикл под них.
Аноним 2016/01/16 19:03:41  №626955 678
Аноним 2016/01/16 19:11:37  №626959 679
Как подключится к imap серверу imap.yandex.ru?
Нужно использование ssl. ssl://imap.yandex.ru не работает.
Интересует именно socket_extension.
fsockopen,stream_функции я знаю, но интересует именно то о чем выше писал.
Аноним 2016/01/16 19:52:36  №626987 680
>>626472
>>626839
<?php
echo "<p>Больше быдлокода</p>", PHP_EOL;
echo "<h2>Богу быдлокода</h2>";
Надеюсь ОП меня за это не проклянет.
Аноним 2016/01/16 20:32:53  №627012 681
>>626839
Цикл в хтмл тоже можно красиво запихнуть, типа
<?php foreach($arr as $key => $value):?>
htmlhtmlhtmlhtml
htmlhtmlhtmlhtml
<?php endforeach;?>
Аноним 2016/01/16 22:10:41  №627075 682
>>626959
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, "imap.yandex.ru", 993)
?
Аноним 2016/01/16 23:45:44  №627154 683
>>627012
Сделал вот так.
>>626987
Где не получилось, дооформил.
Аноним 2016/01/17 01:04:42  №627207 684
Как в jquery избавиться от "очереди" событий?
Например если сделать много кликов по элементу, то сработают все один за другим.
https://jsfiddle.net/3qz5n02q/
Аноним 2016/01/17 03:00:47  №627265 685
14529888479720.jpg (79, 604x453)
453x604
14529888479731.jpg (39, 368x420)
420x368
Йода говорит: 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 функцией, что ли, позавидовал простому и краткому решению братишки выше.
Аноним 2016/01/17 03:01:21  №627266 686
Аноним 2016/01/17 09:57:09  №627357 687
14530138297480.png (160, 466x243)
243x466
>>627265
У кого-то горит жёпа от Путина.
Аноним 2016/01/17 11:24:06  №627384 688
>>627265
Лол, а я думал это реально путен в адидасе и пиджаке, даже не гуглил толком.
Аноним 2016/01/17 12:17:34  №627411 689
>>627265
>>627266
Так и не разобрался, почему там вылезала ошибка. Наверное, передавать из одной функции в другую массив и там из неё сразу доставать значение ($array[n]) не считается правильным.
Также ОП говорит, что вообще неправильно массив раскладывать через for.
Сделал разложение массивов в обеих функциях через foreach - всё теперь без ошибки.

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

>>627384
Оригинал не находится в поиске по картинкам, когда ищешь по какой-нибудь фразе, вылезают только различные варианты подделки.
Аноним 2016/01/17 14:53:28  №627490 690
Задача про "лиличку". Нихуя не понимаю, в подсказке идёт "разбить текст по символу \n", но сам текст дан в таком формате, что там нет \n и по нему нельзя разбить. Разбить по \n можно только в случае, если он прописан в самой строке. А там просто энтером отбито. Перепробовал все варианты. Так что же, вручную менять само стихотворение и добавлять \n?
Аноним 2016/01/17 14:57:57  №627492 691
>>627490
уже рахобрался. Надо либо по \r\n (хз почему), либо PHP_EOL
Аноним 2016/01/17 15:16:25  №627500 692
https://gist.github.com/codedokode/420c8c12a1edae25f0ec
>Пайп (вертикальная черта) позволяет перенаправить выход одной программы на вход другой. Программа ls выводит список файлов в каталоге. Программа head -10 читает строки с клавиатуры и выводит только первые 10 из них. Вот, как можно вывести имена первых 10 файлов:
>
>ls | head -10
>Пайп (вертикальная черта) позволяет перенаправить выход одной программы на вход другой.
А что за Пайп? Может кто-нибудь объяснить на примере как это работает? Я что смогу брать данные, например, из браузера и делать с ними что захочу в другой программе? Как это работает? Я не понимаю.
А причем тут ls и head?
Аноним 2016/01/17 15:41:36  №627520 693
Аноним 2016/01/17 15:46:02  №627525 694
команда 2>&1 > file.txt
А почему синтаксис такой странный? Почему не 2> & 1> file.txt или 2&1 > file.txt? Так же понятней!
Аноним 2016/01/17 16:33:32  №627567 695
>>627490
Про какую лиличку еще?
Аноним 2016/01/17 16:37:49  №627576 696
>>627567
Аа, увидел и испугался этих задачек, аж ладошки вспотели.
А где предыдущие, почему не по порядку идёшь?
Аноним 2016/01/17 16:50:24  №627581 697
>>625456
Я, например, даже когда научусь всему буду продолжать иногда заходить в клуб любителей php и помогать анонам, если буду знать как. Подозреваю, что здесь много таких же как я.
Аноним 2016/01/17 16:56:04  №627584 698
>>627581
>Я, например, даже когда научусь
А как ты поймешь, что научился? Когда наступает этот сокровенный момент? Тебе приходит письмо из хогвартса или что?
Аноним 2016/01/17 17:03:59  №627591 699
>>627584
Бывает открываешь код анона и становится смешно, и ты сразу понимаешь как правильно сделать. Вот это уже показатель того, что ты можешь поправить анона и дать ему совет.
Аноним 2016/01/17 17:04:25  №627592 700
Друзья, а вы уже обсуждали квантовый компьютер от гугла и наса? https://www.youtube.com/watch?v=CMdHDHEuOUE
Это же такие перспективы! Такие как __мгновенная__ передача информации на n ≤ ∞
Аноним 2016/01/17 17:05:32  №627595 701
>>627584
Думаю, когда сделаю задачу на файлообменник на slim'е
Аноним 2016/01/17 17:06:43  №627597 702
>>627595
А сейчас ты что делаешь?
Аноним 2016/01/17 17:18:02  №627600 703
>>627597
Задачу на студентов, а ты?
Пока ОПа нету, сижу читаю про линукс и верстку - настроение просто отличное от того, что я это понимаю и занимаюсь этим. Программирование это жизнь, это сила, это победа человеческого разума над законами природы!
Аноним 2016/01/17 17:23:27  №627602 704
Аноним 2016/01/17 17:25:31  №627603 705
>>627600
Ну я кстати как раз на линупсах сижу, и работаю по большей части версталой.
Аноним 2016/01/17 17:31:30  №627607 706
Аноним 2016/01/17 17:37:58  №627608 707
>>627607
У меня есть роутер, у тебя нет. В этом задании он не обязателен, просто мне интересно еще и роутер пилить. И все приложение у меня с него как раз и начинается, я так понял это паттерн FrontController. Хотя не уверен. Жду ответа ОПа и дизайн пилю пока для списка и формы.

Я в общем-то уже знаю как по-быстрому сделать эту задачу. Но я постоянно ковыряюсь, потому что хочу сделать не быстро, а правильно.
Аноним 2016/01/17 17:43:29  №627610 708
>>627607
Кстати я гуглил разные mvc приложения на php. Часто делается так, $app->run(); и поехало. Ну я так сразу к роутеру обратился.
Аноним 2016/01/17 17:44:36  №627611 709
>>627608
>Я в общем-то уже знаю как по-быстрому сделать эту задачу. Но я постоянно ковыряюсь, потому что хочу сделать не быстро, а правильно.
Я тоже уже примерно представляю как она делается, думаю сделаю быстро - мне главное понять принцип работы а дальше нужно просто выразить это в коде.
Аноним 2016/01/17 17:45:05  №627612 710
>>627610
>Часто делается так, $app->run();
Я видел в слиме так делают еще
Аноним 2016/01/17 17:55:17  №627621 711
>>627576
да я по порядку иду, сделал почти все и в треде выкладывал, пропустил 1 только, вроде, т.к. лень было
Аноним 2016/01/17 18:01:48  №627628 712
>>627607
У тебя есть LoginController.php, то есть ты будешь делать форму входа? По заданию вроде просто после регистрации сохранять в куках юзера.
Аноним 2016/01/17 18:20:41  №627637 713
>>627628
>У тебя есть LoginController.php, то есть ты будешь делать форму входа? По заданию вроде просто после регистрации сохранять в куках юзера.
Почему бы и нет?
Аноним 2016/01/17 18:26:32  №627644 714
>>627637
Ну в принципе да, может тоже запилить. Еще я не увидел у тебя полей sex, gender, firstname, surname и т.д. Их не будет?
Аноним 2016/01/17 18:34:41  №627647 715
>>627644
Будут, сейчас ОП проверит меня и буду допиливать.
Аноним 2016/01/17 18:52:21  №627655 716
>>627581
Я так и делаю сам со своими месячными познаниями: разбираю код новичков. Те задачи, которые сам уже решил.
Аноним 2016/01/17 21:11:25  №627732 717
>>627602
Объясните на пальцах, как гитхабом пользоваться?
Аноним 2016/01/17 21:14:40  №627734 718
Аноним 2016/01/17 21:19:47  №627737 719
14530547872220.png (300, 853x480)
480x853
Я знаю Джава Скрипт!
Аноним 2016/01/17 21:54:49  №627755 720
>>627732
Что именно непонятно?
Качаешь пак с файлами, запускаешь на локалке или хостинге.
Пока не дошёл до БД и прочего - это сложно.
Аноним 2016/01/17 21:55:40  №627757 721
Аноним 2016/01/17 21:57:42  №627760 722
>>627755
я пока только задачи для перехода на второй лвл доделываю. Да вообще непонятно, что за файлы, как качать и как запускать. Пишу на phpstorm
Аноним 2016/01/17 22:08:22  №627766 723
>>627760
Скоро дойдёшь, значит, и сам.
Надо локальный сервер установить, базы данных, всё это запустить, архив сайта с Гитхаба распаковать, запустить index.php, создать соединение с БД.
Либо сразу установить Денвер, там всё необходимое уже есть.
Аноним 2016/01/17 22:19:40  №627775 724
>>627766
А если расшарить файлы, создать ветку, то по-другому.
Аноним 2016/01/17 23:01:20  №627807 725
Аноним 2016/01/17 23:02:16  №627809 726
>>627807
Да просто интересно, какой люд тут обитает со мной вместе и бьётся над задачками
Аноним 2016/01/17 23:11:15  №627816 727
>>627809
А мне всегда интересно, изучал ли человек программирование прежде, когда припекает от лёгкости решения задач у многих. Сам я бьюсь над задачами уровня клавиши Shift или речи Йоды по нескольку часов.
Благодаря постоянному чтению учебника ОПа, сразу по стилю решения задачи многое становится понятно об общих познаниях человека.
Жаль, что некоторые задорно проходят первые задачки, а потом пропадают.
Куда делся, спрашивается, Олег, где Onyx, которые вроде отлично шли с самого начала.
Аноним 2016/01/17 23:13:08  №627819 728
>>627816
>Олег, где Onyx
Потише, братишка, в этой ситуации, ты на АИБ сидишь или в убтном чятике? Какие Олег, какой Оникс? Оглянись вокруг, мы вдвоём. Ты да я
Аноним 2016/01/17 23:18:47  №627823 729
14530619280520.jpg (1120, 1799x1199)
1199x1799
ОП, посмотри, пожалуйста. Задача про Лиличку.

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

http://ideone.com/oZMTZp
Аноним 2016/01/17 23:29:16  №627836 730
>>627809
Ты не должен оценивать людей по их возрасту
Аноним 2016/01/17 23:30:11  №627837 731
>>627836
дело в том, что я старый и знание, что я не один такой тут меня греет. вот и всё
Аноним 2016/01/17 23:37:58  №627845 732
Кто-нибудь читает доп литературу по PHP? В ОП-посте есть несколько книг, но они все 2006 года максимум. Какие книжки можно почитать для вникания?
Аноним 2016/01/17 23:40:41  №627847 733
>>627837
Тебя будет греть сильнее денюжки которые ты будешь зарабатывать на программировании
Аноним 2016/01/17 23:41:10  №627848 734
>>627847
мало тепла не бывает
Аноним 2016/01/17 23:41:26  №627849 735
>>627848
т.е. много, лол, проебался
Аноним 2016/01/18 00:05:27  №627861 736
>>627845
Зандстра из шапки и все. Книг по php нормальных нет. Смирись.
Аноним 2016/01/18 00:45:00  №627877 737
14530671009800.jpg (109, 910x512)
512x910
Аноним 2016/01/18 00:46:10  №627878 738
>>627877
Тут вроде есть анон, которому 32.
Аноним 2016/01/18 00:55:06  №627886 739
Аноним 2016/01/18 01:20:49  №627897 740
>>627878
Вэт ваз ми, раз уж мы по-английски.
Аноним 2016/01/18 02:04:38  №627925 741
Ебать я тупой стал, 25 лет ума нет, как можно было эту задач легко решить? я сделал через эпические костыли, но решение должно быть на поверхности.
http://ideone.com/ahVN35
Аноним 2016/01/18 06:12:21  №627974 742
>>627525

2>&1 значит перенаправить данные, из потока №2 (поток ошибок stderr) в поток №1 (поток вывода stdout)

> значит перенаправить stdout в файл

Таким образом и stderr и stdout перенаправлены в один и тот же файл.

Погугли по этим словам.

> 2> & 1> file.txt
и что это должно значить?

> 2&1 > file.txt
и это?

Вообще, синтаксис такой по историческим причинам, написаны миллионы скриптов и никто их уже не переделает.
Аноним 2016/01/18 06:19:54  №627975 743
>>627823

> explode("\r\n", $text);
Лучше разбивать по символу перевода строки \n (Enter как раз вставляет в текст \n или \r\n в зависимости от настроек редактора и способа перевода строк)

На ideone скорее всего перевод строки вставляется как просто \n а не \r\n отсюда и баги.

Скачивание phpstorm (что я не могу сделать, это надо много времени) вряд ли поможет.


Аноним 2016/01/18 08:06:13  №627985 744
>>627592
Какое отношение научная фантастика имеет к PHP? Сука, козёл.
Аноним 2016/01/18 09:29:18  №627996 745
Делаю тут задачу про список студентов, сделал все кроме поиска, не могу понять как реализовать поиск с джоинами в базе. В документе написано
>ля поиска по всем колонкам можно применить оператор LIKE к соединенным через пробел значениям столбцов.
Что это значит? Как их соединить? Или может забить хуй и сделать поиск через OR?
Аноним 2016/01/18 09:42:02  №627999 746
>>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)
Аноним 2016/01/18 10:02:26  №628000 747
>>627925
Бро, задача решена неверно.
1. В итоге переменная $paymentTotal должна быть 61270 со многими копейками.
2. Функция intval не нужна, без неё можно обойтись, лучше посчитать со всеми копейками.
3. $creditBalance = ( $creditBalance * $percent ) + $servicePayment - $monthlyPayment; - повторяется в разных местах, а это значит, что может быть вынесено за пределы if с else.
4. Всегда первым делом надо к остатку прибавлять процент и 1000 за обслуживание кредита, после этого проверять, меньше или больше сумма $monthlyPayment.
Аноним 2016/01/18 10:44:43  №628006 748
>>627999
Можно создать поле с ключами, куда заносятся через пробел значения остальных полей, например "Ваня Ерохин А56 Москва 1990 муж", и делать поиск по ней. Это как вариант, ОП может не одобрить. А есть ещё составные индексы.
Аноним 2016/01/18 10:47:12  №628007 749
Как сделать лайки, как вконтакте? Чтобы по айпи запоминался проставленный лай и второй раз с того же айпи его не поставить. Понимаю только как сделать его динамическим через json, а вот как с одного айпи только сделать?
Аноним 2016/01/18 10:52:13  №628010 750
>>628007
А в контакте не с айпи, там аккаунт может один раз лайкнуть.
Аноним 2016/01/18 10:55:32  №628011 751
>>627999
Я нагуглил, полнотекстовый поиск называется. Используется примерно так match (index) against (search_string)
Аноним 2016/01/18 10:56:06  №628013 752
>>628011
Index - полнотекстовый индекс
Аноним 2016/01/18 10:56:34  №628014 753
>>628011
А если индексов несколько? Там же вся суть в том, чтобы искать во всей таблице.
Аноним 2016/01/18 11:05:57  №628019 754
>>628007
Наверное, $_SERVER['REMOTE_ADDR'], при этом сохранять инфу об айпи и лайкнувшем, а дальше условия, чтобы не повторялся или айпи, или сам лайкнувший, если он залогинен.
Аноним 2016/01/18 11:09:50  №628021 755
>>628014
А в нашем случае зачем несколько? У нас один поиск по все полям таблицы. Лучше ОПа дождаться.
Аноним 2016/01/18 11:14:10  №628026 756
>>628014
Кстати а если CONCAT() использовать?
Аноним 2016/01/18 11:18:24  №628030 757
14531051050440.jpg (56, 524x700)
700x524
Забавно наблюдать, как тают fork'и у задач ОПа на Ideone - чем дальше по задачам, тем меньше форков.
Аноним 2016/01/18 11:47:58  №628051 758
>>628030
Тоже заметил. Значит, у тех, кто дойдёт до конца, всё меньше и меньше конкуренции.
Аноним 2016/01/18 12:01:35  №628060 759
Аноним 2016/01/18 12:36:38  №628094 760
>>628030
>>628051
Правда, но только отчасти. К этому времени я, например, скачал себе IDE, с которой удобно работать и просто копировал код опа
Аноним 2016/01/18 12:37:13  №628096 761
>>628094
К этому времени - имею в виду к более сложным задачам
Аноним 2016/01/18 12:37:48  №628097 762
>>628094
чем пользуешься? Я поставил NetBeans, но что-то не очень нравится.
Аноним 2016/01/18 12:41:54  №628102 763
>>627996
С какими еще джоинами? У тебя там больше одной таблицы?
Аноним 2016/01/18 12:52:23  №628109 764
>>628019
Каждому лайку таблицу с айпи лайкнувших что ли создавать и по ней проверять есть ли лайк у айпи к такойто записи?
Аноним 2016/01/18 13:00:43  №628112 765
>>628109
Я долго размышлял над этой проблемой и решил, что понадобится как минимум три таблицы. Первая это сами публикации или что там у тебя лайкают, второе - таблица айпишников и третье - таблица лайков.
Аноним 2016/01/18 13:03:14  №628115 766
>>628097
Штормом, всё пока нравится.
Аноним 2016/01/18 13:19:30  №628119 767
>>628115
>>628112
А как же таблица с инфой о залогиненных?
Ещё желательна фича: лайк присваивается человеку, если он лайкнул незалогиненным, а потом в этой же сессии залогинился.
Аноним 2016/01/18 13:19:59  №628121 768
>>628115
Случайно процитировал.
Аноним 2016/01/18 13:22:20  №628124 769
>>628119
Я сказал минимум 3, можно и больше, а вот меньшим количеством таблиц не обойтись.
Аноним 2016/01/18 13:23:35  №628125 770
>>628097
>>628115
Я тут попробовал с Дримвивером и Денвером - нещадно жрёт ресурсы ноутбука, не хотет.
Я пока на Идеоне, хотя там не особо удобно всё становится, когда код разрастается.
Аноним 2016/01/18 13:48:39  №628148 771
>>627592

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

Для тех кто не знает - там примерно такая идея: вместо обычных битов которые принимают значение либо 0 либо 1, мы используем кубиты которые могут быть одновременно в 2 состояниях.Например 8 обычных битов могут быть в одной из 256 комбинаций, а вот 8 кубитов могут быть в этих 256 комбинациях одновременно. И соответственно мы можем делать какие-то операции надо ними всеми одновременно. Условно говоря, если есть задача найти пароль, хеш от которого равен x, то обычный компьютер может лишь перебирать пароли по одному, проверяя не имеет ли он нужный хеш. А квантовый может перебирать все возможные пароли одновременно, вычисляя все их хеши одновременно. По крайней мере это я так понимаю.

Ну это пока больше в теории существует. В реальности чтобы манипулировать кубитами нужны большие сложные установки, вакуум, температуры в районе абсолютного нуля (-273 градуса), кубитов там от силы несколько, чуть что все это сложное состояние разрушается. И ни одного пароля пока на квантовом компьютере не взломано.
Аноним 2016/01/18 13:51:08  №628153 772
>>627996

Либо

WHERE name LIKE ... OR surname LIKE ...

либо

WHERE CONCAT(name, ' ', surname, ' '...) LIKE ...

Преимущества и недостатки способов попробй понять сам. Полнотекстовый поиск может и не подойдет так как он рассчитан на поиск по целым словам а не по кускам слов.
Аноним 2016/01/18 13:55:43  №628158 773
>>627999

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

>>628006

Тут можно без этого. Составные индексы никак тут не помогут, они не ищут по части слова.

>>628011

Может не помочь так как он рассчитан на поиск по словам а не фильтрацию по части слова.

>>628030

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

Аноним 2016/01/18 14:40:58  №628187 774
>>628000
короче та же задача но уже с функциями http://ideone.com/WCiRRb
почему то не работает сложение int и float в строке
f ($dolg<$deposite){
$pereplata=$pereplata + $dolg;
break;
}

чтобы прибавить остаток к выплате и закончить выполнения цикла, в предыдущий разя я делал через фукнцию intval тоесть таким образом из флоат в инт перевел.
Аноним 2016/01/18 14:46:58  №628193 775
>>628187
а епта понял свою ошибку, исправил http://ideone.com/WCiRRb , но бля какие то цифры странные мне кажется программа работает некорректно, потому что не выполняется последний шаг, ведь если остается допустим 3000 рублей заплатить, мы же ее не выплачиваем в этот месяц, а ждем следущего, и платим с коммисией вся хуйня
Аноним 2016/01/18 16:10:08  №628254 776
>>628187>>628193
Бро, опять же неправильно считает, я же говорю, какая там цифра в том банке должна получиться: 61270 с копейками. Там как раз для проверки второй банк точно такие же параметры имеет, как в задаче на кредит за Айфон.
Не пойму, для чего так усложнять с float, с этой плавающей точкой?
Там же абсолютно простой алгоритм:
1. Имеем сумму кредита.
2. Умножаем её на 0.0n (сразу прибавляем таким образом процент к сумме кредита) и прибавляем комиссию за обслуживание кредита.
3. Проверяем, получившаяся сумма больше или меньше 5000, которые может выплачивать Анончик в месяц.
4. В соответствии с результатом проверки или продолжаем цикл выплат, или выплачиваем имеющуюся сумму (не забывай, что она у нас уже должна быть умножена на процент и к ней должна быть уже прибавлена комиссия за обслуживание кредита).
Всё.
Ещё замечание: лучше переводить названия переменных, а не писать транслитом.
Я не ОП, он пояснит теперь не скоро, наверное, я вообще недавно начал изучать РНР и возился с задачей на кредит Айфона несколько дней, зато потом сократил до нескольких строк её, изучил нормально работу циклов на ней.
С плавающими точками пока не работал и, честно говоря, не совсем понимаю, для чего она там.
Аноним 2016/01/18 16:11:23  №628255 777
>>628254
*кредит на Айфон
Также усложнения с плавающей точкой особого нет, просто она там абсолютно ни к чему.
Аноним 2016/01/18 16:33:52  №628267 778
Аноним 2016/01/18 16:55:00  №628279 779
Надо сделать одну работу с 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
Аноним 2016/01/18 16:56:01  №628281 780
ОП, делаю твои задачи на ЖС, застрял на роботе на шестой задаче. Почему мое решение неправильное? Я не так понял условия?
https://jsfiddle.net/kkpjnqc1/2/
Аноним 2016/01/18 16:56:32  №628282 781
Аноним 2016/01/18 16:57:39  №628283 782
>>628279
Ну а ты композером ставил, или просто скачал и распаковал репозитарий?
Аноним 2016/01/18 17:00:12  №628286 783
>>628282
а все теперь точно исправил получилось
56423.563121625
61268.718210807
51029.365496746,
короче спасибо за помощь, пиздец я долбоеб, ЗАТО АЙТИ ВЫШКА ЕСТЬ.
Аноним 2016/01/18 17:03:49  №628289 784
>>628267
Лучше сам попробуй разобраться, это стоит того, я гарантирую.
>>628282
Бро, я не пойму обозначения у переменных. Почему месячная выплата называется $deposit?
Сейчас с телефона, тогда чуть позже.
>for($dolg;$dolg>=0;$month++)
Вот тут уже не вполне верно всё, там лучше из количества месяцев исходить, а не из общей суммы, потому что она не известна. Месяцы нам тоже не известны, но можно поставить хоть 100 - не суть важно.
Аноним 2016/01/18 17:04:23  №628290 785
>>628286
Аа, ну тогда молодца!
Аноним 2016/01/18 17:05:53  №628291 786
>>628279
Ты неправильно его подключаешь. Там же написано в инструкции как это правильно делать
Аноним 2016/01/18 17:30:22  №628299 787
>>628286
Много лишнего кода, ОП не одобряет такое.
Там можно повторяющиеся части вынести из if и else.
А с привязкой цикла к $dolg > 0 - шикарная идея! А я и не понял сразу.
Теперь пропала зависимость от непонятного и с потолка взятого числа 20 месяцев.
Отличная находка, поздравляю себя, кому ещё это интересно
ОП вроде тоже говорил об ограничении цикла годами жизни, или я что-то путаю. Тоже не подсказал такого почему-то.
Аноним 2016/01/18 17:40:03  №628304 788
>>628283
Скачал и распаковал, там кажется написано что так можно, если качаешь всю папку.
Аноним 2016/01/18 17:40:23  №628305 789
>>628291
Мне сложно разобрать как это делается, можешь подсказать?
Аноним 2016/01/18 17:53:48  №628309 790
>>628305
Ну посмотри, ты же делаешь require_once файла которого не существует. Autoload.php находится в папке vendor
Аноним 2016/01/18 18:01:57  №628311 791
>>628309
В самих скачанных файлах есть autoload.php по тому адресу который я подключаю. И во всех примерах что находил в гугле, подключают именно так.
Аноним 2016/01/18 18:05:26  №628316 792
>>628299
>Там можно повторяющиеся части вынести из if и else.
атвичаю нельзя это вынести, я уже 2 дня думаю как это сделать хз.
вышка-кун.
Аноним 2016/01/18 18:20:28  №628328 793
>>628316
Если два дня, то вот: http://ideone.com/YfN1KR
Мы делаем общую переменную перед условиями с if и else, а далее её подставляем в условия.

А какая специальность, что именно изучал?
Аноним 2016/01/18 18:21:15  №628329 794
Аноним 2016/01/18 19:16:19  №628393 795
пацаны, насколько важна вышка? Можно ли будет устроиться на работу, без вышки?
Аноним 2016/01/18 19:44:51  №628431 796
>>628393
Вышка в постсовке настолько обесценилась, что всем похуй если скиллы есть. А вот для перевоза жопы в золотой миллиард, нужен диплом приличного места.
Аноним 2016/01/18 20:40:46  №628490 797
Я что то не понимаю, хочу использовать composer, делаю всё как здесь http://open-server.ru/docs/#rabota-s-composer
Ввожу в командной строке путь к проекты C:\OpenServer\domains\mysite\>composer init
мне пишет """"""" не является внутренней или внешней командной и т.д.
Аноним 2016/01/18 21:03:43  №628516 798
>>628490
В переменной PATH прописать путь к композеру.
Аноним 2016/01/18 21:10:53  №628521 799
Написал адаптер для класса генератора превью, чтобы попрактиковать ооп. Правильно сделал?
https://github.com/nsdvw/PreviewGenerator

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

Опо-замечания приветствуются.
Аноним 2016/01/18 22:01:41  №628558 800
>>628328
ну по сути в моем коде нет двух абсолютно повторяющихся строк, но твой чутка покороче да.

изучал МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ И АДМИНИСТРИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ. на первом курсе даже хуярили одновременно задачи на бейсике и на паскале. ЧТО БЫ КОД ЛУЧШИ ПОНЯТЬ. потом всякие с++, с#, ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ, ДАЖЕ ЛИСП был ебать ИСКУСТВЕННЫЙ ИНТЕЛЕКТ. ну все по чуть чуть, тонны матана, геометрии, УРАВНЕНИЯ МАТ ФИЗИКИ, ну в итоге нихуя ни кто ни чего не научился, из 50 человек, человек 5 работают в айти, в том числе и я, эникейщик в хелп деске, получаю 30, рядом сидят 1с получающие по 70-80, меня жопа в клочьях, решил перекатвыаться в кодинг. пока с натягом если честно.
Аноним 2016/01/18 22:53:21  №628604 801
>>628558
Там одни и те же вычисления два раза повторяются, это имел в виду.
РНР вроде верный выбор в этом случае, потом должно быть проще перекидываться на другие языки. Сам надеюсь, что мне потом будет проще изучить уже JS для фронт-энда.
Аноним 2016/01/18 23:19:20  №628635 802
Короче, лайки реализуются через сессии, аякс/json запросы. Так-то, шкальники. Продолжайте сидеть в своих регулярках и плодить таблицы.
Аноним 2016/01/18 23:20:25  №628636 803
>>628635
И что, таблицы-то все равно нужны, долбоёбина. Причем тут json/аякс вообще? Это лишь способ добавления лайка в таблицу.
Аноним 2016/01/18 23:28:36  №628651 804
Аноним 2016/01/18 23:57:07  №628704 805
14531506278620.jpg (1019, 1199x1799)
1799x1199
ОП, не знаю, как скоро ты будешь, но вот решение на Чай с тортиком.
Буду ждать комментарий!

http://ideone.com/NmOdH8