Добро пожаловать в наш уютный чатик. Тут мы не флудим, а изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко. Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).Предыдущий тред был тут: >>649329 (OP) (больше 1000 постов!)Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в 2-3 дня, не жди его, решай задачки дальше.У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.- Для начала установи Апач + PHP (советы ниже) и читай туториал http://php.net/manual/ru/tutorial.php- Учи HTML/CSS и SQL, хотя бы основы- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007- После нее можно изучать автоматизированное тестирование- Если ты все решил, переходи к Symfony 2/Doctrine 2 Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:https://gist.github.com/codedokode/10774100https://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) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Код тут нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.Если тебе лень выравнивать код руками, закачай его на 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.mdPSR-2: https://github.com/php-fig/fig-standards/blob/master/accepted/ru/PSR-2-coding-style-guide.md------------------Итак, ты зашел в тред и решил помочь какому-то анону, дав ему совет или подсказку. Спасибо! Но прочти сначала эти напоминания, чтобы твоя помощь действительно была полезной.Будь доброжелателенНе годится: «Ты мануал хоть раз в жизни открывал, обезьяна?»Не годится: «В гугле забанили?»Не годится: «Твой код плохой»Хорошо: «Вот, как можно улучшить этот код: ...»Хорошо: «Ты неправильно используешь функцию abc(). Вот ее описание: ссылка, и как видишь ей надо передать строку, а не массив»Не придирайся к знанию английского языка. ОбъясняйНе очень хорошо: «сделай как в этом коде»Хорошо: «если ты вставляешь текст от пользователя в SQL запрос, то получается SQl-инъекция, которая позволяет взломать твой сервер (ссылки). Чтобы этого избежать, надо вставлять данные с помощью плейсхолдеров (ссылки)»Хорошо: «Помни, что код пишется для людей. Если писать такие большие функции, то в них становится трудно разобраться...»Не проповедуйМы учим использованию самых распространненных подходов, стандартов, библиотеки фреймворков. Если ты не любишь ООП, пробелы в коде, jQuery, сам PHP, то рассказать об этом стоит в каком-нибудь другом треде.Не придирайся к знанию английского языка, анон пишет как умеет.Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
В прошлом треде >>649329 (OP) я все поверил, всем дал ответы. Зайдите и поищите ответы в конце треда. Если я вас пропустил или не ответил - напишите тут.Я помню, у анона было сложности с синусами и косинусами - надо все же с ними разобраться.По поводу https://github.com/foobar1643/student-list - ты еще переделваешь код или все уже исправил?
>>664704Всё, разобрался. Спасибо
Но при чем тут Сендзёгахара?
>>662476Благодарю за ответ.>А почему ты один репозиторий используешь для 2 проектов?Думал, что так будет удобнее. Ошибался. Пока оставлю как есть.> используй абсолютные (идущие от корня диска), например с использованием константы __DIR__Типа такого: require_once(__DIR__ . '../src/init.php') ?> По моему тут может быть ситуация когда переменная не определена. Как можно писать надежный код если неизвестно существует переменная или нет?Поясни, пожалуйста. isset($_GET['registered']) недостаточно?> А почему так много статических методов?У меня в хелперах нет полей, так что не увидел резона делать нестатические методы. В UrlHelper есть смысл параметры ($sort, $dir и прочее) сделать членами класса и передавать в конструктор? Видимо да, т.к. это улучшит читаемость кода вьюхи А в TokenHelper - $token?> Однако тогда надо обеспечить инкапусуляцию, то есть чтобы никто другой напрямую к этой куке не обращался.Не очень понял, как это можно сделать.Что-то типа такого:$myCookie = $_COOKIE;unset($_COOKIE);// используем функции хелперов, которые работают с $myCookie$_COOKIE = $myCookie;>> public static function fromRow($row)> Маппингом студента на строчку базы данных должен заниматься класс для работы с базой данных.Но это же по сути конструктор. В языке с перегрузкой методов, я бы их и использовал, а тут приходится так извращаться.>> $characters[rand(0, $charactersLength - 1)];> Квадратные скобки не будут работать если мы добавим нелатинские символы, например кириллицу.Я понимаю, но зачем нам здесь поддержка кириллицы?
Задача 11: https://jsfiddle.net/dqv3ngz8/
>>664839>$myCookie = $_COOKIE;>unset($_COOKIE);>// используем функции хелперов, которые работают с $myCookie>$_COOKIE = $myCookie;Что-то я фигню написал.
>>664843Желательно учитывать требования стандарта:>If comparefn is not undefined, it should be a function that accepts two arguments x and y and returns a negative value if x < y, zero if x = y, or a positive value if x > y.http://www.ecma-international.org/ecma-262/6.0/index.html#sec-array.prototype.sort
>>664854https://jsfiddle.net/dqv3ngz8/1/Пофиксил
https://ideone.com/lqLSPchttps://ideone.com/ccwxQHhttps://ideone.com/ZuRDo8https://ideone.com/7g3WwD
Серьезный вопрос к ОПу или крутым версталам. Есть ли какая-то продуманная стратегия назначения всех размеров? Особенно в ем-ах. Ну например я читал про одну идею назначить html {font-size:10px;} а уже от него брать все производные в ем, например h1 {font-size:2em;} // получится 20рхh2 {font-size:1.6em;} // 16рх и т. д.Правда геморрой в том что размер шрифта наследуется и на третьем-четвертом уровне вложенности будет далеко не так наглядно все вычислять, но там можно и rem применить.А вот как быть с размерами блоков, отступов, паддингов? Смутно себе представляю как вычислить размер паддинга в процентах или ем.Сейчас буквально везде вижу в тестовых заданиях mobile-first или 'все должно быть адаптивно'.
>>664890Исходя из логики. Если ты делаешь элемент, высота которого зависит от размера шрифта - используй em, если от пикселей - то пиксели.Ну к примеру, возьмем такой элемент как "текст написанный уменьшенным/увеличенным шрифтом". Очвеидно что тут размер должен быть в процентах от родителя, чтобы маленький текст в заголовке и маленький текст в абзаце имели разный размер. Паддинг на кнопке может зависеть от шрифта на ней."все в em" это какой-то нездоровый фанатизм. Еще нездоровее - идея указывать размеры в процентах от ширины окна, так, что функция увеличения и уменьшения масштаба перестает работать. Много лет назад процентные размеры шрифта имели смысл, так как в ИЕ6 при увеличении масштаба менялся размер шрифта на body или html, и если размер бы указывался в пикселях, то текст не увеличивался. Но это было очень давно, у современных браузеров такой проблемы нет (но верстальщики придумали верстать в процентах от размера окна и функция масштабирования снова сломалась).Ну и помни что везде где можно обойтись вообще без указания размеров и без дублирования цифр в css. Например если надо сделать блок на 20 px уже родителя, это можно сделать маргином, а не вычитая из ширины родителя 20. > можно и rem применить.Я плохо представляю когда нужен rem . Наверно для страниц где можно менять размер шрифта программно? Все равно не очень понимаю.> Сейчас буквально везде вижу в тестовых заданиях mobile-first или 'все должно быть адаптивно'.Это тут вообще не при чем.
Оп написал, что в список студентов не тащить кучу плагинов бутстрапа. Тот, кто делал список студентов с версткой на бутстрапе или сам Оп, подскажите, что не нести в проект? Очевидно все что с яваскриптом, верно?http://bootstrap-3.ru/customize.php
Хочу хранить уникальные объекты в коллекции. Для этого есть паттерн?
Sup php'ач. Последнее время нужда заставила установить Xdebug 3 часа ебли с настройками (сперва по сетке на Ubuntu + phpstorm, потом переехал на локальную машину Openserver+ PHPstorm). Так вот, в ПХПсторме в консоли Debugger'а пишет: Waiting for incoming connection with IDE key "PHPSTORM". В инете единственное что пишут - что в пхп ини то же самое должно быть и у меня сейчас там: xdebug.idekey = "PHPSTORM", пробовал уже разные комбинации, и другие слова-цифры, и без кавычек в пхп.ини . В общем тест выдает что всё ок (пикрелейтед), но входящих коннектов в phpstorm нету и соответственно на брейкпоинтах не происходят остановки
>>665184Ты php скрипт в браузере или консоли запускаешь? В обоих случаях надо передать параметр который включит отладку.Так же не забудь в php.ini включить отладку. И перезапустить Апач.
>>665184Так что за вопрос-то?
>>665184> что в пхп ини то же самоеА ты тот файл который нужно редактируешь? Настройки видны в phpinfo() ?
>>665216Тот, до этого я менял другие настройки (порта сменил с 9000 на 9005 так как ругалось на то, что он занят в Шторме) после этого ошибка с занятым портом пропала и появилось ожидание коннекта с ключом>>665213Как побороть проблему чтобы шторм увидел входящий коннект от дебагера.>Ты php скрипт в браузере или консоли запускаешь? В обоих случаях надо передать параметр который включит отладку.Ставлю брейкпоинты в скрипте, перезапускаю страницу в браузере
>>665230Страницу нужно открывать из Шторма. Он дабавит GET параметр в адресс, что бы дебагер видел что пора конектится.
>>664772Спасибо, ОП, большое за комментарии по кошкам-мышкам. Очень дельные замечания, сейчас сижу правлю код свой. >Явное нарущение инкапсуляции. Животные не должны ковыряться во внутренностях Поля, а должны просить его переместить их значок. Ну или, что еще лучше, можно вообще убрать там массив с картой и тогда это не требуется.Согласен, теоретически можно было сделать вообще без визуального массива, но, когда начинал делать задачу, это казалось наиболее логичным. Надо перекраивать будет тогда решение. Вообще, я уже студентов тихонько подбиваю с разных сторон, сейчас про PDO читаю. Думаю за них взяться на днях, кошки-мышки и антикризисные меры сообразно твоим комментариям исправлю, но навряд ли стану загружать снова(ошибки понял, лишний раз мучить тебя смысла мало), если только вопросы появятся новые. Теперь уже студентов жди, опушка!
>>665232Эммм, если у меня цмска и мне нужно отследить определенный скрипт на определенной странице каким образом мне запустить из IDE'шки определенную страницу. Нет, я точно видел в нетбинсе работу дебаггера в таком виде: установка брейкпоинтов по скрипту, отдельный запуск браузера, в браузере открывается нужная страница - срабатывают брейкпоинты и в самом нетбинсе отображается отладочная инфа. Если запускать скрипт в браузер из иде'шки это пиздец
Также добавлю:>>664772> endswitch;>Это для шаблонов, тут используй фигурные скобкиПоясни за это, ты намекаешь, что лучше использовать обычный синтаксис, ок, понял, но о каких шаблонах говоришь и почему? > $move1 = new Movement($this->y, $this->x);> $move2 = new Movement($this->y + 1, $this->x);...> $move6 = new Movement($this->y + 1, $this->>Копипаста, убираймного ломал голову, как от копипасты-перечисления ходов избавиться ещё когда решал задачу, но не придумал. Подкинь совет?
>>665246Расширение для браузера.The easiest Xdebug для Firefox например. Но опять же, все должно быть нормально настроено.
>>665260Запустил в браузере через Закладки полученные на сайте шторме (/marklets) страница перезагрузилась, в шторме всё равно висит та же надпись что нет входящих подключений с таким то ключом
>>665276Ну вот xdebug на гостевой убунте сконфигурированный. Можно запускать дебаг из броузера (расширение ставит куку), можно из IDE (добавляется переменная в GET). Х.з. чем тебе еще помочь.
Ньюфаг репортинг ин. Застопорился на решении третьей задачи отсюда http://archive-ipq-co.narod.ru/l1/arrays.htmlВерно ли я понял что мне в $random мне нужно использовать mt_rand (1,6) ?И ещё я немного не вьехал как достать вариант с выпавшим числом из массива.Пытался зделать так http://codepad.org/taLdglSx но получил fatal error: Function name must be a string
>>665302$answers[]. Квадратные скобки для массивов бро
>>665302И еще нумерация в массиве начинается с 0.т.е. пятый элемент это $answers[4]
>>665307Хотя у тебя там ключи руками прописаны, так что все нормально. Мой косяк, не глянул.
>>665291>192.168.56.1 - это на отдельном сервере или на локалхосте? мне на localhost ругалось, поставил просто http://fashion и вроде тест прошел норм
>>665304>>665307Спасибо, поправил, но теперь получаю вот что http://codepad.org/5zzzeHW6
>>665309Это хост. ВиртуалБокс создает виртуальный сетевой интерфейс. Виндовс в нем 192.168.56.1. Убунта с виртуалки коннектится к 192.168.56.1.>>665311Убери ' ' вокруг $random
>>665319Благодарю, бро, всё заработало. Значит вокруг переменной не нужны кавычки?
>>665320php парсит то, что внутри " " и не парсит то что внутри ' '.$answers["$random"] и $answers[$random] сработает. А $aswers['$random'] нет. В первых двух случаях он поставит значение переменной и будет искать собственно это значение. В третьем будет искать в массиве ключ строку '$random'.
ОП слышал про Laravel Homestead?Думаю годная штука, которая подойдет новичкам и любителям видны для запуска своих приложений без ебли и без денверов
Кароче решил вашу задачку, ловите мой драндулет:http://codepad.org/pKoJDIJP
>>665338Нет, там в echo должно быть:> слово1 слово2 слово3> слово1 слово2 слово3> Я слово4 слово5А не так, как у тебя.Чтобы добиться верного решения, можно пропустить всё через цикл.Первые два раза выводится строка "слово1 слово2 слово3", а во время третьего прохождения цикла выводится строка "Я слово4 слово5" и цикл обрывается.
>>665338>Я хз почему random лишь один раз рандомит и остаётся таким навсегда, по этому пришлось пустить рандом второй раз.Потому что один раз становится переменная определённой, а потом ты её выводишь в эхо.Чтобы этого не было, надо изменять переменную перед каждым выводом, как я выше написал про цикл.
>>665341у меня так и идёт word1 2 31 2 3я 4 5.я делал циклы и рандом все равно оставался одним и тем же.
>>665347У тебя идёт:echo "$randomText1 $randomText2 $randomText3\n";echo "$randomText4 $randomText5 $randomText6\n";echo "Я $randomText7 $randomText8.\n";А желательно всё-таки вот так:echo "$randomText1 $randomText2 $randomText3\n";echo "$randomText1 $randomText2 $randomText3\n";echo "Я $randomText4 $randomText5.\n";Но так-то задача на строки, вывод их из массивов, так что вполне можно и твоё решение посчитать правильным. Но ты подожди ОПа, что он тебе скажет.А, хотя, нет: он как раз скажет что-нибудь про копипасту, там же её у тебя много.
>>665353он скажет все переделывай. ведь нельзя было делать такие штуки1 => 'блабла',А я не додумал как по другому отдельные слова вытаскивать. Могу через count пронумеровать и зарандомить число, но мне слово же нужно. хотя, если как нибудь word1[....].
>>665358Цикл жи есть.Я объяснил же в первом сообщении этот момент.Цикл с $i, делает три круга. В первом и втором круге изменяются randomText1 $randomText2 $randomText3 и выводится echo "$randomText1 $randomText2 $randomText3\n";. А в третьем круге выводится echo "Я $randomText4 $randomText5.\n"; (а изменяться они могли и раньше, допустим).
Анон, которому был необходим средне PHP со знанием мультикурл, я написал на почту тебе, тебе ещё надо?
>>665126Алсо, вопрос по бутстрапу. Разбираюсь с макетами, почему вместо результата выше, у меня получается то, что ниже. Колонки длиннее чем должны, не вкладываются друг в друга и переносятся на новую строку.
http://ideone.com/ZlpjocПосоны, как собрать кусочки воедино? Никак не могу вдуплить.
>>665381http://ideone.com/Rxj3Gb
>>665407Спасибо. На стаковерфлоу мне ещё вот так посоветовали https://ideone.com/i38mbX
Решил написать свою борду на PHP. Ну, традиционная история.Где лучше хранить тексты постов? Нормально хранить в базе данных, или можно хранить в текстовых файлах?Что будет, когда к текстовому файлу будут обращаться несколько посетителей одновременно?
>>665420В вузе рассказывали, что когда несколько пользователей обращаются к базе данных, то всё будет в порядке.
>>665230Ты порт и в IDE и в php поменял? В phpinfo этот порт виден? С настройками явно что-то не то, кем может быть занят этот порт? Запости конфиг относящийся к xdebug из phpifno(), а также настройки ИДЕ (если там есть что-то кроме того что выше на скриншоте).И посмотри эту страницу, https://xdebug.org/docs/remote
Привет, пхпач, не бей. Мне надоело бездельничать и я решил выучить хтмл/ксс/пхп. Уже скачал денвер и сделал базу данных. Как я понимаю, мне лучше начать с html. Посоветуйте литературы для чайников, по которой сами учились. Моя цель - написать простенький сайт за 3 месяца. Верстка, связь с БД, etc.
>>665446Тебе нужно следовать пути в ОП-посте описанном. При должном усердии извояешь свой файлообменник ты.
>>665239Там еще могут быть замечания ведь. Лучше бы с ООП на этих задачах разобраться. А студентов можешь делать параллельно, я все равно вряд ли сразу проверить смогу.>>665246Там надо либо GET параметр приписывать либо куку ставить. Расширения к браузеру делают именно это. Почитай документацию по xdebug чтобы понимать как это работает.>>665248> ок, понял, но о каких шаблонах говоришь и почему? http://www.phpinfo.su/articles/practice/shablony_v_php.html> как от копипасты-перечисления ходов избавитьсяциклами>>665291Лучше показывать настройки из phpinfo(), чтобы он вывел текущие. Вот почему у тебя стоит порт 9000 если ты в IDE его поменял?
>>665453>Вот почему у тебя стоит порт 9000 если ты в IDE его поменял?Что куда поменял? Я не анон с проблемой. У меня все работает.
Ребят , в 19 поздно уже пытаться что-то учить?:D
>>665468Да.
>>665335> Думаю годная штукаПочему ты так думаешь? какие ты видишь преимущества и недостатки? Вот что я вижу: - образ виртуальной машины тяжелее чем Апач с PHP, ему надо больше диска, ОЗУ, процессора- там могут быть чужие настройки. Например вместо легкого дебиан какая-нибудь тормозная убунта с кучей сервисов. Вместо нормального редактора какой-нибудь вим. А у меня например есть виртуальная машина где все привычно- там может быть высокое потребление памяти По идее для PHP хватило бы 192 Мб, но там в образе куча сервисов и вряд ли он в эту цифру уложится. Ну и в любом случае напрямую PHP будет работать быстрее чем с виртуализацией- для вагранта надо ставить руби в систему. Где гарантия что он не попрописвает себя всюду и не будет с чем-нибудь конфликтовать? Да и тащить огромный интерпретатор как-то нелогично по моему.- без виртуалки PHP напрямую читает файлы с диска. В случае виртуалки приходится испоьзовать какие-нибудь общие папки которые работают медленнее- куча лишего хлама: зачем мне редис, постгрес и какой-то непонятный beanstalkd. что это вообще такое? - странные перенаправления портов - это зачем? Почему нельзя 80 использовать например? - как я понимаю образ там read-only, и установить новый пакет через apt-get install не выйдет? А посмотрим, как подают авторы этот образ? Легко развернуть? Ну не знаю, с одной стороны можно поставить апач + php + mysql и настроить их, а с другой ставить виртуалбокс, руби, вагрант, образ, и настраивать все в нем. Не сказал бы что это легче.Ну и если нужен линукс, лучше установить в виртуалку дебиан. Хоть устанавливать дебиан научишься.Ну то есть у использования вагранта наверно где-то есть преимущества. Хотелось бы про них услышать, а пока у тебя только личное мнение что это "годная штука".
>>665335Ну и начинающим вредны сборки. Хоть раз в жизни Апач или дебиан стоит установить самостоятельно.
>>665373Открой инспектор в Хроме (Ctrl + SHift + I) и посмотри какие стили применены к элеиенту. Про dev tools много статей в интернете.>>665420В реляционной БД вроде mysql. На текстовых файлах ничего нормально работать не будет.
>>665473>и установить новый пакет через apt-get install не выйдет?Как раз таки выйдет. Вообще, как по мне, ключевое удобство Vagrant'а - это песочница (можно откатываться, юзая снапшоты в virtualbox) + последующий беспроблемный деплой на VPS. Зачем это новичку - вообще без понятия. Я не поддерживаю >>665335-анона. Homestad - так вообще уже готовый box с полностью настроенным под работу линуксом. Это плохо для новичков - слишком высокий уровень абстракции; возникнет незначительная легко устраняемая проблема, а новичёк с ней не справится по причине отсутствия элементарных знаний в более низкоуровневых вещах.
>>665482> новичёкБля, не пинайте.
>>665445Вот мои настройки текущие
>>665497и остача
>>665449Абу йода-спик ввел в пхп-треде?
>>665502Я пропустил слово и мне лень было педалить backspace. А дальше уже стилистические требования.
>>665497>>665498Встроенный сервер php настраивается на 8000 порту, тащемта.
>>664787Я все замечания исправил, просто там еще несколько багов с отображением поисковых результатов нашел и исправил, из-за этого имя коммита такое странное получилось.
>>665568Ну 9015 тоже свободен был, разве сыграет такую большую роль?
Почему$i = 015;echo $i;Выдаёт 13?https://ideone.com/60JSl5
>>665637http://php.net/manual/ru/language.types.integer.phphttp://www.reshinfo.com/vosmerichnaja_systema.phphttps://ru.wikipedia.org/wiki/%D0%92%D0%BE%D1%81%D1%8C%D0%BC%D0%B5%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8FЧисло с нуля считается восьмеричным.
Знаком с PHP, OOP, MVC. Решил освоить yii2, начал искать инфу и понял, что хоть и инфы много, но что-то успехов нет. Начал читать документацию, и понял, что там не очень доходчиво объясняется. Анон, как вкатиться в свой первый фреймворк ?
>>665709Попробуй сделать какую-нибудь задачу из ОП-поста с использованием Yii. Тех же студентов или файлообменник.
>>665709Курсы на ютабе посмотри, так проще вкатишься.
>>665713С ООП знаком, такие слова, как абстрактный класс или интерфейс не вызывают у меня страха. Но я открываю директорию yii и охуеваю о того, сколько всяких методов, что пока для меня остаются загадкой.
>>665724Все херня. Учи классические алгоритмы. А всякую лабуду типа обсерверов, абстрактных строителей и мостов нагонишь по мере надобности, когда к этому придешь.
>>665373С этим разобрался. Спаны со старой версии бутстрапа. Вопрос >>665126 в силе.
Привет. Может кто рассказать как правильно юзать printf?Есть кусок кода >https://ideone.com/w0LcUwПри попытки вывести его с помощью этого >https://ideone.com/b7UIktПолучаю ошибку yntax error, unexpected T_STRING.Так вот..Как правильно пихать html код в printf что бы все работало?
>>662476>> if (FormHelper::isFormSent()) {>> else if ($_SERVER['REQUEST_METHOD'] == "GET") {>А что если ни одно из условий не сработает? Отдастся пустая страница с кодом 200. Это плохо?
>>665850>Как правильно пихать html код в printfНикак. Если очень хочется, то нужно разобраться с кавычками Лучше делать как написано здесь http://www.phpinfo.su/articles/practice/shablony_v_php.html
>>665953Уже разобрался , но , спасибо
ОП, спасибо за все ответы в прошлом треде.Если я не отвечаю, то это не значит, что я не читаю твои подробные ответы и разборы или не стараюсь исправиться.Просто чаще всего нечем ответить, настолько всё разобрано.Аноним
ОП, спасибо тебе за курс. Вот, я попытался решить задачек.То, что, что легко:W1. https://ideone.com/r93YE8W2. https://ideone.com/8BIRn7W3. https://ideone.com/yqbFo1W4.1 https://ideone.com/Yikc7RW4.2 https://ideone.com/gipbSXНадо было напрячь мозг:W5.1 https://ideone.com/MwfLmzW5.2 https://ideone.com/cVgjxuW5.3 https://ideone.com/iFv71dW5.4 https://ideone.com/jMJLFMW5.5 https://ideone.com/kVp3j3W5.6 https://ideone.com/QcFU0mW5.7 https://ideone.com/Eh48abC
В каком возрасте вы начали учить пхп?
>>665446Бамп
>>666028Лёгкие вроде бы все правильно решены.Задача W5.1 решена неверно, там должно быть 61270 с копейками. Это непростая задача, многие на ней подолгу сидят.Задача W5.2 решена неверно, там должно получиться 1060 тысяч в последний год и он должен быть 50-ым по счёту. Если я не путаю сейчас.W5.6 решена неверно, там у тебя функция mt_rand(1, count($letters)) выдаёт слоги из массива с 1 по 16, тогда как должна выдавать слоги с 0 по 15. Автоматически нумерация в массиве идёт с 0, а count($letters) считает, начиная с 1. В итоге у тебя нулевой слог никогда не появится и будет ошибка, когда выпадет 16-ый слог.W5.7 - там ничего нет.>>666035В возрасте тридцати одного года.>>666038Ab-w.net, с него начинал учить HTML, CSS, там же учился устанавливать Wordpress.
https://ideone.com/bUy2YN
>>666128$creditSum - $payout < 0 преобразуем в $creditSum < $payout. Убирается лишнее действие.$creditSum <= 0 должно быть == 0. Если у тебя возникает ситуация, что баланс кредита меньше нуля, значит алгоритм работает неверно и Ванька переплачивает банку.Так вроде все отлично.
>>665938Да. Думаю надо сделать так: - либо метод = POST и мы принимаем данные формы- во всех остальных случаях выдаем страницу для GETЯ как минимум HEAD могу вспомнить который ведет себя как GET но прибивает скрипт при попытке выдать текст.>>666043Да, там странная строка: > if ($sum > 1000000) {> $y++;Зачем дополнительно плюсовать? Также, $y лучше назвать нормально и поставить вместо $i в шапку цикла.
Пользуясь случаем напомню: В прошлом треде >>649329 (OP) (OP) я все поверил, всем дал ответы. Зайдите и поищите ответы в конце треда. Если я вас пропустил или не ответил - напишите тут.
Анон, на работе, бывает, появляется свободное время, хотел бы обмазаться каким-нибудь видеокурсом для начинающих. Хотелось бы руками что-нибудь делать, но такой возможности нет. Что посоветуешь? На трекерах, тытрубе и в интернетах дохуя всего, даже не знаю, что попробовать, может, анон чего порикаминдует?
>>666303http://nnm-club.me/?q=%F1%EF%E5%F6%E8%E0%EB%E8%F1%F2+php&w=title
>>666310Спасибо.Он хороший, стоящий? А то у меня основная проблема - сомнения.
>>666314Ну это выбор анона можно сказать. Хотя практически все видеокурсы длинное нудное скакание по верхам. Иначе они просто не будут продаваться.
>>666303Не забывай и про то, что без написания кода ничего не выйдет. Тут толковый учебник (вроде ОПовского) намного больше тебе даст, чем простое смотрение на то, как кто-то разбирает или пишет код.
>>666336Это само собой разумеется. Была бы на работе пека, на которой можно кот пейсать, этим бы и занимался. А так рабочая машина сейчас в ФЗС за ДМЗ и пиздец. Разве что браузер есть, но я не хочу жабаскрипт.
>>666338Можно писать на http://ideone.com - хоть с планшета, был бы Инет и браузер.
>>666343А также есть "облачные" IDE вроде https://www.google.ru/search?q=cloud+php+ide&newwindow=1&gbv=1&sei=bP_OVtCsGMScsgHfjIzoAw
>>666343Инета нет, в том и дело. Есть вайфай и планшет, но я заебусь же там набирать кот.
Как перестать прокрастинировать? Сажусь заниматься, и всегда делаю не то, что нужно. То на ютубе зависну, то на дваче. Как взять себя в кулак?
>>666371Иди в перезвоним тред или куда-нибудь в /b/. Тут задачи решают.
>>666371Никак.
>>666346Понятно. Ну тогда не пиши код. Занимайся чем-нибудь другим.
>>666371Настойчивость. Усидчивость. В последнее время с какого-то хуя стало популярным слово "мотивация".- Мне чтобы учиться/работать/дрочить хуй нужна мотивация, - пиздят на каждом шагу. Какого хуя вообще? Вы хоть знаете, что такое мотивация? Что под постоянной мотивацией ваши межушные нервные узлы свернулись бы в трубочку?Если за тобой в лесу бежит медведь, а ты убегаешь, вращая глазами и бросаясь в него собственным говном - вот это мотивация. Если вычислили по IP, где ты живешь, и идут ебать твою мамку, а ты, пытаясь предотвратить неизбежное, превращаешь свой подъезд в храм тиpeча и смазываешь входную дверь свиным эякулянтом - это твоя ёбаная мотивация. Она есть, а через минуту медведь сгорел в машине, мамку выебали, и её больше нет. И что дальше будешь делать? Мотивация, блядь. На этом говне далеко не уедешь. Все делается при помощи упорства и настойчивости, которые должны стать качествами твоей личности, анон, а не при помощи мотивации.
>>666346Купи клавиатуру к планшету.Я поначалу просто так набирал код на Идеоне в планшете.Если есть возможность и желание - купи недорогой нетбук, установи на него Апач и РНР, так пиши.Сервер даже и на планшет можно установить, ОП как-то приводил пример, какие-то приложения для Андроида.
>>666394Годная мысль. Наверное, так и сделаю.
Хороший тред, люблю васУшел учить.
>>666389Неа, страх и мотивация - это разные вещи. Это как кнут и пряник. Просто разумный человек понимает, что программирование, как и любая другая работа - это просто инструмент. А какая цель? Как правило, у нормального человека цель - хорошо провести время. Программирование иногда помогает в этом, но чаще всё-таки нет. Это зависит от индивидуальных предпочтений, и от того, сколько человеку надо денег. Я бы сказал, мотивация - это связь между чем-то неосвоенным и целью, без которой непонятно, нафига оно тебе надо.
У меня проблемы с математикой, анон. И вот вчера внезапно решил освоить php, а тут фраза "Возвращает абсолютное значение (abs(-5) => 5)"как понимать эти вещи? Сильно будет мешать в будущем незнание? В общем, я в ступоре
>>666470Абсолютное значение это просто положительное число, что тут можно не понимать?
>>666470Абсолютное значение - это модуль числа.Представляй модуль числа как расстояние от нуля до числа на числовой прямой. У расстояния знака нет, так что это просто положительное число.Модуль 5 равен 5. Модуль -5 равен 5.> |5| = 5> |-5| = 5> abs(5) == 5> abs(-5) == 5Как-то так.
>>666476>>666473спасибо, друзья. Догнал
>>666470>Сильно будет мешать в будущем незнаниеНа уровне 9 классов математику знать весьма желательно, т.к. это будет мешать не только в PHP.
>>666344Интересная штука, жалко, платно там всё после тестового периода.
Думаю, не написать ли генератор рифм? Будет ли это плюсом, если при устройстве на работу, или это слишком примитивно? Я так понял суть генератора рифм в том, что надо сравнивать окончания введённого слова со словами которые хранятся например в файле и выводить эти слова. Сделать так, чтобы ещё учитывать и ударения наверное нельзя? Точнее можно, но для этого надо проставить правильное ударение всем словам что есть в файле (а их более 100К) вряд ли, кто-то будет таким заниматься.
>>666493>Будет ли это плюсом, если при устройстве на работуПесенником-балалаечником на средневековую ярмарку, если только
>>666499Тамадой еще можно
>>666493>Будет ли это плюсом, если при устройстве на работуПлюсом при устройстве на работу будет если сможешь перевернуть бинарное дерево, или написать квиксорт.
>>666493Вполне годная задумка.Любой хороший собственный проект на Гитхабе или на своём домене будет характеризовать твои способности только положительно.
>>666493Ты хочешь написать генератор рифм или генератор стихов?
Я говно, я не понимаю ничего в разработке на php.
>>666549>>/b/
>>666551Что?
>>664784 (OP)Приветствую. Задачка лишь косвенно связана с PHP. Но тем не менее.Есть объект(помещение) с двумя свойствами: мин. площадь(building_area_min) и макс. площадь(building_area_max)Пользователь вводит начальную($s_from) и конечную площадь($s_to)Формируется запрос на вывод помещений по этим двум полям.Общий запрос: $args['meta_query'][] = array( 'relation' => 'OR', array( 'key' => 'building_area_min', 'value' => array($s_from, $s_to ), 'type' => 'NUMERIC', 'compare' => 'BETWEEN' ), array( 'key' => 'building_area_max', 'value' => array($s_from, $s_to ), 'type' => 'NUMERIC', 'compare' => 'BETWEEN' ), array( 'relation' => 'AND', array( 'key' => 'building_area_min', 'value' => $s_from, 'type' => 'NUMERIC', 'compare' => '<=' ), array( 'key' => 'building_area_max', 'value' => $s_to, 'type' => 'NUMERIC', 'compare' => '>=' ) ) );Допустим пользователь вводит ($s_from=20) и конечную площадь($s_to=100)Должны отображаться1) помещение от 22 до 80 срабатывает array( 'key' => 'building_area_min', 'value' => array($s_from, $s_to ), 'type' => 'NUMERIC', 'compare' => 'BETWEEN' ),2) помещение от 50 до 120 срабатывает array( 'key' => 'building_area_max', 'value' => array($s_from, $s_to ), 'type' => 'NUMERIC', 'compare' => 'BETWEEN' ), 3) помещение от 5 до 120 срабатывает array( 'relation' => 'AND', array( 'key' => 'building_area_min', 'value' => $s_from, 'type' => 'NUMERIC', 'compare' => '<=' ), array( 'key' => 'building_area_max', 'value' => $s_to, 'type' => 'NUMERIC', 'compare' => '>=' ) )Все работает как надо, но последний вложенный запрос создает дикие тормоза.Может есть какой-то другой способ сделать выборку пересекающихся массивов ? В sql не особо понимаю.
>>666562Со вторым случаем ошибся, сработает тоже первое условие. Для второго случая найдется помещение допустим от 20 до 50
>>666567>от 20 до 50от 19 до 50
>>665291Спасибо за идею, сегодня поставил на виртуалку убунту сервер, настроил, установил xdebug, настроил phpstorm и всё заработало, проблемы были только с айпишниками но в итоге спустя 5 часов ебли всё заработало, я счастлив!
Объясните смысл инкапсуляции: 1. мы объявляем переменную класса protected $x;2. мы делаем два метода, если хотим работать с этим $x из других классов - сеттер и геттер. Геттер - просто даёт переменную, сеттер даёт возможность установить новую. Как же мы защитили её в таком случае? Ведь сеттер-геттер это же полный контроль над переменной, не?
>>666576Ты можешь в геттере и сеттере производить любую валидацию.Кстати, для твоей ситуации достаточно private.Напримерprivate $age;private $no_u_cant;public function get_age() { if (!$this->no_u_cant) return $age;}public function set_age($age) { if ($age >= 18 && $age <= 99 && !$this->no_u_cant) $this->age = $age;}
>>666576Представь ситуацию что тебе в большом приложении дали задачу сделать какую-нибудь верификацию объекта которы используется по всему приложению. Ты будешь открывать кучу файлов и по пол часа разбираться как именно и где именно используется твой объект. При инкапсуляции верификацию можно сделать в сеттере, отредактировав при этом один файл.
>>666389Этому два чая.Сам лишь только недавно это понял.
>>666588>>666584логично, не думал про ИФ-ы в функциях. Так да, теперь понимаю.
>>666599И не только ифы.Можно еще переопределить __set() и __get() и возвращать значения в ответ на любой рандомный член класса, которого у тебя даже нет, допустим.Самый простой пример.class GetSet {private $storage = array();public function __get($index) {if (array_key_exists($index, $this->storage))return $this->storage[$index];elsereturn false;}public function __set($index, $value) {$this->storage[$index] = $value;}}$obj = new GetSet();$obj->lalka = 'dicks';echo $obj->lalka; // dicks
Я понял. Фраза "black mesa" составлена из букв разных раскладок. Вот ОП-хитрюга такая.
>>666619Объясни-ка, пожалуйста, что ты в примере сделал.
>>666636Описал объект, определил геттер и сеттер для всего объекта.Это значит, что любое обращение к непубличному свойству объекта (даже если оного не существует) улетит в функцию __set(), где мы уже решаем, что делать.В примере мы складываем всё в массив $storage и вынимаем оттуда же.Пример синтетический, поэтому пусть так, например:class NewsItem {private $newsTitle;private $newsRawText;public function __construct($newsTitle, $newsRawText) {$this->newsTitle = $newsTitle;$this->newsRawText = $newsRawText;}public function __get($property) {switch ($property) {case 'title':return $this->newsTitle;break;case 'text':return strip_tags($this->newsRawText);break;}}}$someNews = new NewsItem('Битард повесился в прямом эфире', '<b>На месте дежурит бригада <i>траллей</i> из /b/</b>');echo $someNews->text; // На месте дежурит бригада траллей из /b/ (тегов нет)
Мимо проходил.Я вообще не занимаюсь этой вашей пыхой, но хочу сказать следующее для ньюфагов - пыха нужна всегда и везде,так что не ссыте вкатываться. мимо-ява-адепт
>>666655>$someNews = new NewsItem('Битард повесился в прямом эфире', '<b>На месте дежурит бригада <i>траллей</i> из /b/</b>');>echo $someNews->text; // На месте дежурит бригада траллей из /b/ (тегов нет)>$obj->lalka = 'dicks';>echo $obj->lalka; // dicksно ведь эти выражения в любом случае, не зависимо от всего твоего кода, будут выводиться так, как показано. Я чего-то упускаю?
>>666670насчёт echo $someNews->text проебался, да, но пример с диком - он всегда и будет диком же, и без __set() с __get(0
>>666655А почему у тебя вернулся case 'text'? Почему не case 'title'?
>>666658Как будто ява не везде нужна. 80% энтерпрайза на ней написано. Хотя порог вхождения там выше конечно.
>>666670>>666681Суть не в выводе текста или его метаморфозах. У тебя внутри объекта есть некоторые данные внутри приватных свойств. Этих данных целиком и полностью хватает для описания объекта.Но там, снаружи, тебе не нужны эти данные в сыром виде. Они тебе нужны, возможно, как-то переработанными, и под другими именами.>>666688Слушай, ну серьезно. Тебе для начала надо выучить синтаксис языка.
>>666691Это да, порог действительно выше.По работе приходится часто общаться с пыхокодерами, и уяснил что готовы брать ребят даже без знания фреймворков.Простите, я не знаю как отклеить сажу. Ёбаная вакаба
>>666693кажется, я начал понимать твой пример, спасибо. >>666696>Простите, я не знаю как отклеить сажу.и ещё погромист называется
>>666701Если сажа решила подружиться с постом - разве я должен им мешать?
>>666696База у любых программистов должна быть, я считаю. Это первым делом оценки сложности алгоритмов, линейная алгебра, основы анализа и т.д.У многих начинающих просто отсутствуют эти базовые знания, хотя они умеют формочки на симфони делать.
>>666666...
>>666704Слыш я в погромисты пошел потому что у меня с матешей плохо
>>666724Тебя на работу ни один уважающий себя работодатель не возьмет. Пока не выучишь математику хотя бы до уровня первого курса ВУЗа будешь работать в шарагах за 15к\мес.
>>666733Да беда в том, что я это уже осознаю, лол.У меня вообще больно тугой ум, очень трудно все дается.Искренне хуею с постоянных репортов уровня "я выучил HTML+CSS+JS+PHP за 6 месяцев, че дальше".Я уже 7 лет PHP-макака, и до сих пор быдлокожу за еду. Сложные алгоритмы повергают мозг в ступор.
Как свардампить локальную переменную функции? global $var не помогает.
>>666752Очевидно же, дампь внутри функции, а потом вызывай её.
>>666043Спасибо большое. Вот, исправил ошибки:W5.1 https://ideone.com/94782zW5.2 https://ideone.com/MCoNPHW5.6 https://ideone.com/qhdVJ8W5.7 https://ideone.com/Eh48abВот, еще порешал. W5.8 https://ideone.com/WNN6jpW5.9 https://ideone.com/QNB4l9
>>666733Я могу в матешу первого курса медвуза, достаточно? Проходили матрицы, теорию вероятности и прочие задачки.>>666744Ты это я в течение будущих семи лет.
>>666752Конечно, переменная из функции видна только в функции.Вардампь внутри функции.Если жизненно важно сделать это снаружи, добавь еще один ссылочный аргумент.function doSomething($regularArg1, $arg2, &$ref) {// че-то происходит$ref = твоя_переменная;}var_dump($ref);
>>666754Лол, и правда ведь.
>>666756Лол, я даже не знаю алгебры уровня 9 класса.После дискриминанта и системы уравнений я просто пинал хуи вплоть до выпускного.
>>666758Спасибо за костыль, браток.
>>666761>Лол, я даже не знаю алгебры уровня 9 класса.>После дискриминанта и системы уравнений я просто пинал хуи вплоть до выпускного.Я вообще учился в школле с гуманитарным уклоном и проебывал матешу как только мог. Так что ты хоть что-то знаешь. А я могу только в первый курс мед. вуза.
>>666763>школлеШколе. Ебаный немецкий.
>>666763Матрица и тервер куда круче a^2 - 4bc, или как там дискриминант решается.
Посмотрите как вам?https://ideone.com/aK0ryI
>>666504А зачем это для разработчика ПХП?
>>666756В алгоритмы можешь? Оценку сложности алгоритмов, оценку времени исполнения, потребления памяти и прочее?
>>666772Язык программирования лишь средство, ты должен в принципе уметь в алгоритмы.
>>666767БЭ В КВАДРАТЕ МИНУС ЧЕТЫРЕ АЦЭВыучил эту формулу наизусть, идя в школу на контрошу по алгебре. Хоть я и не помню, что она означает, но саму формулу помню, хек.
>>666775Книг computer science достаточно будет?
Нюфаги, го сюда. Будем делиться опытом, помогать с лабами, выискивать баги.
>>666797Вкатился. Как тут зарегистрироваться?
https://telegram.me/joinchat/AFkjiQbZ-ih1sNDznEmoxQНюфаги, го сюда. Будем делиться опытом, помогать с лабами, выискивать баги.
>>666799https://telegram.me/joinchat/AFkjiQbZ-ih1sNDznEmoxQ
>>666771Грязно.Почему inclineWord возвращает такую парашу?> $result = " (".$number.") ".$result;> declensionMillion11 миллион? 12 миллиона?> declensionThousands11 тысяча? 12 тысячи?Тебе не кажется, что делаешь однородные действия?Что число можно разбивать в цикле бесконечно?Что можно написать код, работающий на числе любой длины, входящего в конфиг вида:$largeNumbersNames = array(array('тысяча', 'тысячи', 'тысяч'), array('миллион', 'миллиона', 'миллионов'), array('триллион', 'триллиона', 'триллионов'), array('квадриллион', 'квадриллиона', 'квадриллионов'), ...);Причем при изменении конфига (удалении названия степени, добавления) код должен работать.
trim() работает с мультибайтовыми кодировками?
>>666855Работает.У меня другой вопрос.Работает ли trim() в массиве?foreach($textArr as $key => $value){ trim($value); }
>>666860Конечно работает, $value же обычная строка.
>>666870https://ideone.com/AJaH1SПочему у меня не работает?
>>666920https://ideone.com/2FX1ouВот так попробуй.
>>666828Благодарю за критику.Да не могу я в универсальность, делаю всё в лоб, да еще и через жопу. Про такой вариант $largeNumbersNames даже и не подумал.Походу хуже моего говнокода уже быть не может.
>>666944Ну и что? Она все равно не обрезает проблелы.https://ideone.com/AJaH1S
>>666983>пробелы
>>666920Ну ты даешь.Что ты вардампить собрался, если после ретурна функция прекращает работу?https://ideone.com/Yc0sGK
>>666983Пробелы сначала надо удалить с помощью preg_replace(). Ставишь регулярки, которые удаляют лишние пробелы и запятые, заменяя их на один пробел.
>>666983А вот тебе с удалением пробелов.https://ideone.com/P9PgzE
Ко всем относится - регулярные выражения сами по себе очень мощный инструмент.Если вы сначала че-то там режете по регулярке, а потом еще что-то перебираете и проверяете - вы что-то делаете направильно.А конкретно этот кадр вдобавок не понимает, что в foreach значения передаются не по ссылке. И что надо их присвоить. Вот так:foreach ($array as $var => $val) {$array[$var] = trim($val);}
>>667001Мы тут учимся вообще-то, а не просим решить за нас задачи!Не делай так больше!Тем более, что ни черта непонятно в твоем коде
>>666485Вроде были и бесплатные - стоит изучить несколько разных вариантов. Там конечно могут быть ограничения вроде "не больше N файлов", но для учебы их должно хватить.Вот например тут https://c9.io/pricing/webide (взял первого попавшегося провайдера услуг) есть план free - единственный недостаток в нем это ограничение по памяти (1GB RAM, 5 GB HDD) и публичность всех выкладвааемых файлов. Для учебы - хватит.Проверял в Хромиуме, выпущенном в этом, 2016 году, на ноутбуке с core2duo. Можно логиниться через гитхаб, если тебя не напрягает что они могут за тобой и на гитхабе теперь следить. PHP есть, версии 5.5 (увы): https://docs.c9.io/docs/supported-languages (обещают подсветку синтаксиса и отладчик). Есть полноценная (линуксовая) консоль без прав рута.PHP7 доступен, но параллельно с его установкой придется поучиться консольной магии: https://community.c9.io/t/how-to-upgrade-to-php7/1379MySQL версии 5.5.44-0ubuntu0.14.04.1, пользователь root без пароля.Редактор примитивный, слабее Sublime, но может кому-то его возможностей хватит.В углу физиономия основателя или разработчика,которая там появляется сама собой.Можно запускать код в консоли, через встроенный в PHP сервер и через Апач. Во втором и третьем случае дают публичный адрес, где можно увидеть ваш проект. Логи выводятся в вкладке Апача - удобно!Ну, проектов у меня под рукой полно - взял первый попавшийся гитхаб ( https://github.com/V3N0m21/StudentList ) и не стал его устанавливать так как там нет папки public и инструкций по установке. Позор автору.Вместо него взял https://github.com/V3N0m21/Uppu4В ридми кстати не написано что надо править конфиг.Композер есть (не то чтобы это было проблемой, но удобно).Вот приложение: https://venom21-students-codedokode-1.c9users.io/что-то не работает? Скажите спасибо V3N0m21, который не осилил настроить корректно файловый кеш и не добавил нужные папки в репозиторий. Аноны, может кто-нибудь проверит на себе эту ИДЕ? Правда, помните что это веб-приложение и вам нужен современный браузер и свободная память (я бы рассчитывал на 400-800 Мб только под вкладку с IDE, это не мерял, а интуитивно посчитал. Померял - вроде пишет 150 Мб, но я редактор почти не использовал, толкьо консоль).Также, вам нужен большой экран - чем больше, тем лучше. На 1280x720 работать можно, но тесновато - приложение явно расчитано на огромные комьютерные мониторы. Аватарка меняется через gravatar, если у вас есть на гитхабе то там будет такая же.Вот команды которые пришлось сделать для установки приложения:------ 13 git clone 'https://github.com/V3N0m21/Uppu4' uppu 14 cd uppu 15 composer install 16 mysql -uroot -e 'CREATE DATABASE uppu CHARSET=utf8' 17 mysql -uroot -e < Uppu4.sql 18 mysql -uroot < Uppu4.sql # наконец-то! 19 mysql -uroot uppu < Uppu4.sql 20 nano app/config.ini # поменять документ рут в апаче 21 sudo nane /etc/apache2/sites-available/001-cloud9.conf 22 sudo nano /etc/apache2/sites-available/001-cloud9.conf # поправить кривокод 23 nano app/bootstrap.php 24 mkdir public/upload 25 chmod 0777 public/upload 26 # почему папки нет в репозитории? 27 mkdir upload/resize 28 mkdir public/upload/resize 29 chmod 0777 public/upload/resize/---------В общем, в плане скорости работы облачная ИДЕ сильно зависит от браузера и процессора и проигрывает саблайму. Редактор слабый. В плане удобства - очень удобно, все уже установлено, настроено и "just works". Считайте что cloud9 это как хостинг, только бесплатно и без рекламы и почти все настроено.Я советую тем, кто хочет опубликовать свое учебное приложение, попробовать. И тем кто не хочет - тоже попробуйте, очень интересная штука. Ну сами подумайте, насклоько ОПу удобнее когда ему дают не только ссылку на код, но и на работающее приложение. И другие анончики смогут протестировать ваше приложение. Сделайте файлообменник, выложите ссылку в /b - вам мигом найдут все баги и уязвимости.
>>667009Вот тебе задание - разберись.Если ты не понимаешь, как работают красивые верные решения, ты так и будешь писать говнокод.Всегда читай чужой код, разбирайся, как он работает.
>>667010Хоят вру - сервер работает не постоянно, а только пока открыта вкладка с IDE в браузере. ну да ладно, кто хочет посмотреть файлообменник венома - сделайте аккаунт, склонируйте мой проект https://ide.c9.io/codedokode/venom21-students и запускайте сколько влезет. Несмотря на все недостатки, технология очень интересная. Советую посмотреть хотя бы из любопытства.Алсо, если кто-то может зайти с андроида/айпада - отпишитесь, как работает, не тормозит ли. 150 Мб памяти вроде для планшета приемлемо, а вот справится ли АРМ процессор - не знаю.
>>667019Алсо, файлы не скачиваются так как автор кода V3N0m21 не предусморел отдачу средствами PHP при отсутствии расширения, а ставить его мне лень.
Что такое колбэк функция простыми словами и как она работает?
>>667030Функция, предназначенная для вызова для другой функцией.callback дословно - обратный звонок.
Обратный вызов точнее.
>>664784 (OP)>>666920Завёл твой код, всё работает. Проблема не в коде
/((?:^|[.?!])\)?)\s*\b(.)/ - как понять эту регулярку?Там ведь даже скобка не закрыта, а всё работает.>>667010Интересно, схоронил.
Какие плюсы перехода на php7?
>>667042Это скобка - литерал. Она заэкранирована, видишь?Эта штука матчит ситуацию:начало строки или .!? - (^|[.?!]), символы ?: говорят, что эту группировку не надо сохранять в памяти;дальше закрывающая скобка (которой может не быть) - \)?дальше пробельные символы (которых может не быть) - \s*дальше граница слова, дальше первый символ слова.
>>667031>callback дословно - обратный звонок. И какой смысл вкладывается во фразу "обратный вызов"? Она ничего не говорит интуиции. Зачем придумали эту фразу вместо "лямбда"?
>>667059Коллбэк не обязательно должен быть лямбдой (анонимной функцией).Код из примера можно записать так:function myStrtoupper($matches) { return $matches[1] . ' ' . mb_strtoupper($matches[2]); }echo preg_replace_callback('#((?:^|[.?!])\)?)\s*\b(.)#su', 'myStrtoupper', $challengeText);
>>667053Спасибо, но я ни хера не понял, я туп.Где можно так надрочицца в регулярных выражениях?
>>667064И что такое обратный вызов? Почему он обратный?
>>667064Долго php учишь? Что знаешь, кроме него?
>>667069Коллбек - это функция, которая передается в качестве аргумента в другую функцию (а та ее вызывает). Коллбек значит "обратный звонок".Вот пример: $files = ['file.txt', 'file.jpg'];$images = array_filter($files, function ($file) {return preg_match('/\.(jpg|png)$/u', $file);});Здесь мы передаем коллбек в функцию фильтрации массива. Она вызывает ее для каждого файла и решает оставить его в массиве или нет. Таким образом, управление передается то функции array_filter, то обратно нашему коду.
>>667075Почему он обратный?
>>667082Потому что функция array_filter делает обратные вызовы назад в наш код.
>>667083Вот ведь сука какая. Обратные вызовы она делает, блять..Простите
>>667066Практика.Напиши, например, граббер сообщений с сосача с помощью регэкспов.Тебе сейчас скажут, что нельзя парсить html регулярками, но все так делают. И еще смеются над теми, у кого DOM-парсеры падают на невалидном html.>>667069Ну вот функция preg_replace_callback передает в твою функцию свои находки. Ты их обрабатываешь и возвращаешь preg_replace_callback.>>667072Я выше отмечался, я веб-макака без алгебры со стажем 7 лет.Знаю JS.>>667075Модификатор u лишний. Здесь он не имеет значения.Алсо, есть более элегантное решениеreturn in_array(pathinfo($file, PATHINFO_EXTENSION), array('jpg', 'png'));
>>667083#define обратные вызовы
>>667088>Ну вот функция preg_replace_callback передает в твою функцию свои находки. Ты их обрабатываешь и возвращаешь preg_replace_callback.Так почему такие вызовы называются обратными?
>>667091Если ты передаешь одну функцию для исполнения как параметр для другой функции, такая функция называется callback.Она тебе звонит обратно. В эту функцию.Аналогия с реальным миром - ты оставляешь просьбу перезвонить по такому-то номеру.Ты оставляешь функции просьбу вызвать такую функцию.По-английски call - звонить и вызывать.
>>667098>Она тебе звонит обратно. В эту функциюНу так это стандартная процедура вызовов функций, когда после выполнения со стека снимается адрес возврата. Зачем давать этому процессу название, которое применимо только когда вызов похож на использование лямбд?
>>667115Она звонит тебе не после выполнения, а во время выполнения, понимаешь?
Кроме того, callback-функция в стеке будет выше вызвавшей ее функции.Адрес возврата у тебя будет находиться в стеке ниже исполняемой функции.Ты неправильно понимаешь, что такое callback. Значит, тебе это пока не нужно.
>>667118>звонитВ смысле просто использует функциональный контекст вызывающей процедуры, и этому дали глупое название?
>>667123Я вопросов твоих не понимаю. Этот приём должен был остаться безымянным?
>>667115потому что названия придумывали гуманитарии. им понятия "перезвонить", "фабрика", "наблюдатель" и прочие абстрактные бобы понятней.
>>667123Что значит "использует функциональный контекст "? Нет, неверно, она вызвает функцию которую ты ей дал.>>667120Вы зря переходите к стекам. Стек - это всего лишь одна из возможных реализаций такой вещи, никто вам не гарантировал что интерпретатор PHP будет его использовать (например оптимизирующий компилятор может заменить вызов функции переходом или заинлайнить ее). Да и я не понимаю, какой смысл обсуждать реализацию когда нам важна общая идея как это работает.
>>667132>Что значит "использует функциональный контекст "?Переданные аргументы и локальные переменные вызвавшей функции.
>>667135>Переданные аргументыЭто не функциональный контекст.>локальные переменные вызвавшей функцииКакие? Из нативного C-кода?Это не javascript, в PHP у функции только свой скоп.
Походу, обратный вызов это как несущественное состояние в цепи Маркова или канонический подъем в задачах алгебраических кривых. Программистишки не могут объяснить, какой интуитивный посыл несут эти определения и просто кукарекают баззвордами.
>>667148Тебе объяснили. Однако ты пытаешься (вяло и безрезультатно) раздуть тут пустую дискуссию ни о чем. Это пхп тред, функциональные языки можно обсудить в других тредах, прокрути до 4-5 страницы и обсуждай.
Как лучше делать: писать трудночитаемый, но компактный код или все расписывать, чтобы все поняли?
Сап всем, решил обмазаться и сразу же попал в просак. Не знаю почему, но сегодня у меня появилось желание заняться чем-нибудь интересным. Наткнулся на этот тред и заинтересовало. В общем решил попробовать. Завис на третей задачи W5.2(циклы), нихуя не понял. Как-то всё достаточно резко переменилось, до этого решалось легко. Собственно вопрос, к погромистам, как решить её? И что повторить чтобы не возникало проблем с этой темой? Потому что у меня такое ощущение, будто я вообще ничего не усвоил за предыдущие темы.
................00000000000..............00,,,,,,,0,,,,,,00 .............0,,,,,,,,,0,,,,,,,,,0 ............0,,,,,,,,,,0,,,,,,,,,,0 ...........0,,,,,,,,,,,0,,,,,,,,,,,0 ...........0,,,,,,,,,,,,,,,,,,,,,,,,0 ...........0,,,,,,,,,,,,,,,,,,,,,,,,0 ...........0,,,,,,,,,,,,,,,,,,,,,,,,0 ............0,,,,,,,,,,,,,,,,,,,,,0 .............000000000000000 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .............0,,,,,,,,,,,,,,,,,,,0 .........000,,,,,,,,,,,,,,,,,,,,,,000 .......00,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,00 ......0,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 .....0,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 ....0,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 ...0,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 ...0,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 ...0,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 ....0,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,,0 .....0,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,,0
>>667236Про айфон в кредит? На ней все спотыкаются.Попробуй переписать код внутри цикла примерно так:- прибавляем проценты и комиссию к остатку долга (!не вычитаем ничего пока!)- если остаток маленький, выплачиваем сколько осталось и уходим- иначе платим 5000«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.Также, ты читал замечания под задачей? > Подсказка: мало кому удается решить эту задачу с первого раза. Попробуй сделать так: для начала, поменяй сумму кредита на 4000, так как он выплачивается за 2 месяца и его легко посчитать вручную (всего выплачено 6123). Также, добавь в цикл if, выводящий значения всех переменных и попробуй понять, правильно ли они считаются. Разобравшись с этой суммой, можешь поставить назад число 40000.
>>667238Спасибо анончик, сейчас попробую.
Аноны, напомню что есть интересная облачная IDE - PHP, Апач, MySQL,отладка - все уже настроено и установлено, код можно править и запускать прямо в браузере или брать с гитхаба, бесплатно, мой обзор: >>667010Зайдите, попробуйте, кому интересно.
>>667242Твоя IDE? Я уже зарегистрировался.
В общем, я дописал программу "пиши правильно".Но мне кажется, что я тут велосипедов нагородил.Оцените, в общем.https://ideone.com/AJaH1S
Сап.Есть дефолтный загрузчик изображений на сервер.При попытки загрузить изображение с именем:CuteLittleGirl проблем не возникает , но если написать на русском языке , он сохраняет его с таким именем: сиваятян , при этом , в бд отправляется нормальное имя тобишь КрасиваяТян.jpg , да конечно я понимаю что проблема в кодировке , но , как ее решить?..https://ideone.com/3aFoEt
>>667284И еще , не подскажите как можно вытащить уже измененное mt_rand имя, что бы я мог его потом запихнуть в БД? ><Вот код:https://ideone.com/AJJ62O
>>667290разобрался с генерацией случайного имени.
>>667188Если ты пишешь по стандартам, твой код будет понятен в любом случае.http://getjump.me/ru-php-the-right-way/https://github.com/getjump/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.mdhttps://github.com/getjump/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md>>667284>copy($_FILES['uploadfile']['tmp_name'], $uploadfile)Нельзя так, используй move_uploaded_file(). Эта функция проверяет, действительно ли этот файл загружен через POST.>он сохраняет его с таким именем: сиваятянДело происходит под Windows? Придется конвертить имя из utf-8 в win-1251.$winFilename = iconv('utf-8', 'windows-1251', $filename);
>>667348Спасибо , но , опять уже со всем успел разобраться :D
Палиндромне могу понять как это сделать "проходим от края до середины посимвольно"http://ideone.com/bpHlPB
Оп, проверь задачу из прошлого треда, пожалуйста.> Лучше просто передавать в функцию 3 формы слова через аргументы, а у тебя зачем-то в нее уже заложено несколько вариантовНе понял этот момент. То есть вместо функции inclineWord сделать тоже самое в функции smallNumberToText?ОП, проверь, пожалуйста. Может на 3й раз получится.http://ideone.com/f2IIDk
>>667361Я бы решил это так, например.http://ideone.com/cey5pI
>>667369ну это все конечно круто,но мне бы понять как это работает все
>>667372Починил твой пример, разбирайся.http://ideone.com/sNrb6L
Помогайте снова, я тот анон с дебаггером, начальном скрипте норм дебажит, но вот когда программа выполняется по 10ку скриптов, и я где то в глубине ставлю брейкпоинты - оно их просто не видит, но в файле конфига или индекса нормально стопается.
Сорян за оффтоп, не бейте ногами.Подбираю второй монитор для веб-макакинга.Первый: 20" квадрат, 1400 х 1050.Кандидаты во второй: 22" 1980 х 1020 22" 1680 x 105020" 1600 x 90019" 1366 x 768Больше 22 ставить негде. Зрение так себе, боюсь что фулл хд буду рассматривать через лупу. И ваще как у вас все устроено где на каком мониторе иде, браузер, все дела?
>>667432>22" 1920 х 1080 конечно же
>>667432FullHD и шрифты большие ставь и всё.То что какие-то какеры себе ставят 9pt это их личная проблема, тебе нужно не весь код сразу видеть, а строк 30-40, больше мозгом всё равно не объять.
>>667432> 1400 х 1050.А что это за странное разрешение? Оно родное? Если нет то пиксели будут размытые, вредно для зрения.
>>667432У меня тоже зрение говно, 23 дюйма, 1920 на 1080.В браузерах и иде шрифт увеличенный.
>>667449Родное, довольное редкое.
>>667432Взял себе DELL 24" 1920х1200, вроде норм
>>667400Дебажишь через расширение? С кукой он должен все видеть в пределах домена. >>667432Квадрат 17 1280 на 1024 в треде. Ну я сначала взял 22 TN. Потом поменял на 22 ips. Потом на 24. Теперь 2 по 24, я бы и 3-й взял, но цены в моих пердях и в долларах повырастали. Весь этот путь я прошел за месяц.
Пожалуй, лучший из тредовОтносительно недавно я сделал все задания из шапки (по моему был сайт на народе) но по какой то причине забросил этот чудо язык кажется я ебался с настройками лампа, ксампа и вообще заебался с этими линуксамиАлсо. Хочу сразу сесть на хуй работать с базами MySQL. Подскажите простейший пример чего нибудь, чтобы я просто начал, а потом уже ебался с остальным.Там ведь всего лишь - соедениться, записать в базу, удалить базу, выполнить запрос MySQL, верно? Стало быть мне надо учить MySQL или продолжать ебаться с пхп?Моя цель - написать элементарный сайт и пердолить его. ПРОСТО ДЛЯ ДУШИ. Мне все таки 20 ёбаных лет, а я не умею в пхп и БД. Это меня крайне унижает. Анон, поставь на путь истиный.
мда
>>667552Мне 23 года, у меня диплом программиста, я не умею в ПХП и БД. Обнимемся?
>>667574Ну го учить, хули! Я думаю ты знаешь что нибудь другое
>>667574Мне 23, у меня диплом экономиста, и я только начинаю учить Пхп, чтобы перекатиться в пограминг
>>667518Покажи пожалуйста все свои настройки в PHPstorm связанные с дебаггом и если не сложно в виртуалке как ты сетевое соединение настраивал (я через мост сделал и на убунте поднял вебмин) Я вот счас ребутнул машину, всё запустил с нуля, и теперь у меня даже в первом скрипте шторм не видит дебаггер
>>667636в файле пхп.ини пропиши путь к дебаггеру и всё, в шторме не надо настраивать, оно само найдёт
>>667648[xdebug]zend_extension="/usr/lib/php5/20121212/xdebug.so"xdebug.default_enable = Onxdebug.var_display_max_depth=6xdebug.remote_enable=1xdebug.remote_host=127.0.0.1xdebug.remote_port=9005xdebug.remote_handler=dbgpxdebug.idekey=PHPSTORMxdebug.remote_mode = reqxdebug.remote_autostart=1xdebug.remote_log=/tmp/xdebug.logxdebug.profiler_enable_trigger=1xdebug.profiler_enable=0xdebug.profiler_output_dir="/var/www/debugger/"xdebug.profiler_output_name = "callgrind.%u.%H_%R"xdebug.show_local_vars=1xdebug.overload_var_dump=1xdebug.max_nesting_level = 200Вот настройки пхп.инименя смущает строчка xdebug.remote_host=127.0.0.1что именно здесь должно быть?
>>667661почему ссылка на файл .so? Хдебаг идёт как .dll
>>667576Я думаю, он знает такое, что ему твоя пыха обоссаная нахуй не нужна.
>>667666
>>667671откуда это?
>>667696Sql.
>>667661Должен быть ip по которому твоя убунта видит виндовс.>>667666Потому что dll это виндовс библиотека.
>>667696>>667739Webmin на ubuntu
>>667636Дык выше уже все что где то менял выложил. У убунты нужно 2 сетевых интерфейса что бы ты к ней мог приткнуться и она к тебе. Паста от ОПа:Алсо, если ты ставишь линукс в виртуалке в Oracle Virtual Box, то наткнешься на проблемку: линукс может лезть в интернет, а ты к нему подсоединиться не можешь. Это по той причине, что Vbox подсоединяет сетевую карту твоей виртуалки к NAT. Чтобы в нее коннектиться, надо будет добавить вторую сетевую карту, выставить ей примерно такие настройки как на пикрелейтед (обрати внимание на слово host-only network).Ну и потом в самом дебиане перенастроить эту карточку, естественно, сама она себя не настроит. Вот что надо дописать в /etc/network/interfaces:auto eth1iface eth1 inet static address 192.168.56.2 netmask 255.255.255.0 gateway 192.168.56.1 metric 100Ну надеюсь ты понимаешь, что тут указан Ip-адрес и шлюз.После этого, перезапусти сеть через sudo service networking restartЕсли все ок, то ты сможешь пинговать виртуалку с хоста через ping 192.168.56.2 .Если не ок — читай записи в /var/log/messagesВозможно, твой фаерволл или антивирус может заблокировать пинг или попытку соединиться с виртуалкой. Придется его перенастроить.Чтобы обращаться к виртуалке через имя, пропиши его в файл hosts.Работать через консоль виртуалки неудобно, так что включи ssh и коннекться через программу вроде putty. По ssh можно также передавать файлы (например программой WinSCP) так что все это тебе пригодится.Проблемы? Смотри логи командой tail -30 /var/log/messages (понядобятся права админа).
>>667834Всем спасибо кто помогал, в общем всё работало ещё вчера, я не учел что у меня vqmod на сайте, и брейкпоинты в оригинальных файлах не влияли на работу сайта, он просто работал с закешированных файлов.
Проблемы со стилями для принтера, делаю отдельный файл css и пишу там следующее:@media print {Копирую сюда весь css код}При этом ничего не выравнивается по центру, когда выводишь документ на печать, выравнивается только если проставить вручную все выравнивания в самом HTML, но это само собой долго и неудобно.
Пишу<?foreach($arr as $key=>$val) {?><tr><td><?=$key?></td><td><?=$val?></td></tr><?}?>Выдает Undefined variable val и key. Что за дела?
>>667876Всё понял. Короткая запись <? не работает.
>>667883Попробуй так. <?foreach($arr as $key=>$val) {<tr><td><?=$key?></td><td><?=$val?></td></tr>}?>
>>667886<?foreach($arr as $key=>$val) {<tr><td>$key</td><td>$val</td></tr>}?>А лучше так.
>>667883Так ты сначала определи сами переменные-то, лалка.
>>667888Так они определены в foreach
>>667890А ты сам массив $arr разве определил?Откуда они у тебя возьмутся, из воздуха?Или ты не весь код показал.
>>667892Я мимопроходил вообще.
>>667892Это кусок кода, $arr определен ранее.
>>667894Вот такое что-то тебе нужно было: http://ideone.com/wigFKJ ?Или что? Я просто не работал с HTML в PHP пока, стало интересно.
>>667896Спасибо, но я уже написал, что разобрался.
>>667899А для чего это было нужно, что-то в задаче ОПа?
>>667902Нет. Решал задачу на расчет набора монет для суммы сдачи, используя mvc.
Карач, все ваши калбэки превращаются в банальный call eax. Шах и мат, абстрактные долбоебы. Следующими для унижения будут замыкания и комбинаторы
>>667916А почему на фоне не члены и членики, большие и маленькие?
>>667916>root
>>667916Кто-то очень не любит php и репостит вам из ньюфаг-треда.
Короче, делаю манячат, как мне отображать нормально сообщения с тегами типа <div> <script> и тд? Я сделал автозамену на спецсимволы, но думаю что есть какой то более простой вариант, например прописать что то в css или завернуть текст сообщения в какой нибудь текст. Так как сделать?
>>668089>завернуть текст сообщения в какой нибудь тег
>>668089В PHP есть функция htmlspecialchars.И почитай урок про XSS.https://github.com/codedokode/pasta/blob/master/security/xss.md
Подмогни немножечко :) как сделать так, чтобы депозит перевалил за лям?
ссылку потерялhttps://ideone.com/klAllR
>>668116Поставь $deposit *= 1.1 в тело цикла.После каждой итерации проверяется условие в цикле, поэтому как только становится больше миллиона - всё обрывается, не срабатывает echo.
>>667916Ты дурак? Это пхп тред, ты постишь скомпилированный неизвестно каким компилятором код на Си и пытаешься что-то доказать.Алсо чтобы увидеть ассемблерный листинг скопилированной функции, незачем запускать отладчик. Можно попросить компилятор сгенерировать ассесблер. Иди мануалы читай, а не демонстрируй свое невежество.
>>665473Ну главным плюсом считал скорость развертывания, имхо подразумевая то что на винде вообще не удобно работать.Установить что либо на него можно.Вагрант ставится из экзешника и ни с чем не конфликтует.Хотя возможно из за того в нем уже все настроено, новичок упустит большой пласт знаний по настройке и пердолинге, но он обычно юзает всякие денверы, что то же не лучше
Вечер в хату, помогите с задачей про айфоны. Я только начал осваиваться в погромирование. Но вроде туповат. Я не совсем пойму условие задания. Мне нужно, чтобы в конце этой задачи не было отрицательного значения? Но тогда у меня остаётся долг в банке и я не пойму что писать в теле цикла.
>>668284Запости что уже осилил.
>>668285http://ideone.com/P8593d
>>668287Алгоритм. Считаем сколько сейчас васян должен банку.Если васян должен больше чем 5000 то платим 5000. Иначе платим сколько нужно.Проверяем. Кредит баланс = 0 ? тогда выходим из цикла.Обрати внимание: сначала считаем долг за текущий месяц. А потом платим сколько нужно/можем. А не в одну строчку как в исходном алгоритме.
>>668296Спасибо, я решил её. Не знаю, такое решение принимается? Или это не верно?http://ideone.com/P8593d
>>668308Не принимается.Если, конечно, ты не захотел профинансировать банк лишними тремя тысячами.
>>668311Вроде исправилсяили всё же нет?http://ideone.com/P8593d
Когда я читаю этот тред, у меня чаще всего появляется ощущение вроде BOMBANOOLO, потому что я понимаю, насколько я мало знаю и насколько я тупой в принципе. Но когда читаю ньюфагов, я понимаю, что я уже далеко продвинулся. Но все же нагоняет уныние то, что эти ньюфаги после пары задачек сливаются, а я так и остаюсь самым последним.
Не получается сделать отладку в NetBeans. Вроде настройку xdebug сделал, phpinfo его показывает. При запуске отладки в строке адреса к адресу добавляется ?XDEBUG_SESSION_START=netbeans-xdebug. ПишетObject not found!The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.В чём может быть дело?
>>668372Да ты заебал со своей отладкой! Хуярь как есть, блять!
>>668331Держи нас в курсе.
>>668372Проверь URL в адресной строке браузера - он скорее всего неправильный.
>>668376Для человека достаточно важно формулировать свои проблемы в словах, а также быть услышанным, пусть это и мимокрокодилы в интернете.
Не спал сутки. Помогите, пожалуйста, с говнокодом.Почему в этом http://ideone.com/xpUiVh случае в форыче строка склеивается как положено, а тут http://ideone.com/xpUiVh она дублирует сама себя, и получается 3 строки, вместо одной? Код один и тот же ведь. Ну как мне кажется.
>>668446Вот тут https://ideone.com/bCxecz дублирует.cамофикс
По тестированию есть уроки или самому искать надо?
Знатоки вордпресса есть? Мне нужно добавить несколько фильтров (add_filter, изменение заголовков, метатегов и контента) только на конкретной странице. Или зная ID страницы, или когда срабатывает шорткод. Так вот, есть ли варианты это сделать, не запуская сам фильтр и не проверяя ID внутри него?К примеру, грубо говоряfunction edit_the_title($title){ If (get_the_ID()=="69"){ return $title." Edited title"; } return $title;}add_filter('wp_head','edit_the_title');Работает, но в этом случае проверка происходит на каждой странице вообще, а это не есть хорошо, как по мне - так как этих проверок у меня несколько а вопдпресс и так лагает.If (get_the_ID()=="69"){ add_filter('wp_head','edit_the_title'); }И тому подобное не работает, я полагаю что станица еще не успевает получить ID на момент обработки основного уровня плагина. Вообще не могу найти в гугле примеров работы add_filter внутри других функций и хуков.
>>668331я это ты, братюня, ты это я
Анон, поясни, нахуя кодить сайты если уже полно CMS и конструкторов? Не кажется ли тебе, что это умирающая тема уже?
А кто сказал, что мы сайты кодим? Мы веб-приложения пилим.
>>668555Какие ты веб приложение на пыхе пилишь? На жсе можно расширение браузерное сделать, игру, да что угодно. А на пыхе только сайтики.
>>668557Веб-приложения, где нужна связка php+mysql.
>>668560Пример веб-приложения приведешь?
>>668564Яндекс.толока.
>>668477Есть такое https://gist.github.com/codedokode/a455bde7d0748c0a351a>>668547Изучай CMS и конструкторы. Но они ориентированы на тех кто хочет делать сайты через админку мышкой или слегка доработать существующий код.
>>668446>>668447Умоляю, помогите мне.
>>668582Так у тебя var_dump внутри foreach, вот он на каждой итерации тебе и показывает содержимое строки.https://ideone.com/8unvtR
>>668597Ещё у тебя $yoda не инициализирован был.https://ideone.com/nSzDeW
>>668599>>668597Пиздец, мозги совсем атрофировались за ночь. Спасибо огромное. Пойду спать.
Чего-то веб оказывается сложнааа. И сервера какие-то, и апачи, и мускулы, и фронт надо знать. Я даже не знаю за что браться прямо сейчас. Я нуфаг, хочу вкатиться в программирование. Скажите за что браться сейчас и посоветуйте лит-ру где хотя бы будут объяснять что это за серверы и как вообще сам веб работает.
>>668613Чтобы не отбить желание кодить можешь пока писать на http://ideone.com/ и делать задачки из оп-поста.
>>668620Или в онлайн-IDE с уже настроенным Апачом, MySQL и PHP, про которую я писал выше: >>667010
>>668312Нет, там должна сумма выплат быть 61270.Конкретно в этом твоём варианте вот что неверно: когда $creditBalance у тебя становится меньше $monthlyPayment, то у тебя следует вот это выражение: $creditBalance = ( $creditBalance х $percent ) + $servicePayment - $monthlyPayment;. И в какой-то момент это уходит в минус, от чего дальше всё идёт неверно.Подсказка: попробуй ввести отдельную переменную для подсчёта $creditBalance = ( $creditBalance х $percent ) + $servicePayment, ведь именно когда этот момент становится меньше $monthlyPayment, нам и надо просто его выплатить и приплюсовать к $paymentTotal.>>668331Не всё сразу, бро.Я вот уже третий месяц постепенно иду.Есть братишки, которые одну за одной решали задачи, а потом слились на подступе к ООП.У меня так-то тоже ПРИГОРАЕТ постоянно. Смотрю на "Кошки-мышки", "Сапёра" на JS, на "Вектор" - просто ПОЛЫХАЕТ, потому что пока ни черта не могу понять. Вот со следующей недели к ООП подступаю, только начал читать Зандстру и ОПа.
>>668498Вордпресс не станет больше тупить из-за одного-единственного if.>>668547Без базара, братиш.Разрабатывай сайты на CMS, греби бабло лопатой.>>668613Купи себе хостинг за 12 рублей в месяц и забудь про все это. http://host-food.ru
>>668547Есть сайты, а есть веб-приложенияСайты наполняются текстом и jquery при помощи мышки, веб-приложения — нетВсе зависит от задач
Правильно я понимаю, что в задаче "Числа прописью" нельзя обработать число больше PHP_INT_MAX?Если я большое число буду обрабатывать как строку т.е. для разбиения использовать substr, а уже выделенные сотни, тысячные обрабатывать как числа это нормально или так делают только быдлокодеры?
>>668723Лучше использовать вот такие конструкции:if ($number >= 999 || $number <= 999999) {}if ($number > 999999 || $number <= 999999999) {}Это всё облегчит нахождение чисел для переработки "троек" (сотен, сотен тысяч и сотен миллионов).
>>668730Ой, то есть в первом варианте:if ($number > 999 || $number <= 999999) {}А до этого нужен вариант:if ($number <= 999) {}Там будет просто сама функция, которая раскладывает минимальное число, тройное.
>>668733>>668730А если я хочу обрабатывать числа больше 999999999?На моём комплюхтере с шиндовс echo PHP_INT_MAX выдаёт 2147483647 все что больше преобразуются в float.
>>668723Для работы с числами надо использовать математические методы.В задаче не требуется обрабатывать суммы больше миллиарда, однако, если тебе хочется чуть усложнить задачу, то есть специальные библиотеки для работы с числами неограниченной разрядности: http://php.net/manual/ru/book.gmp.phphttp://php.net/manual/ru/book.bc.php
>>668723Тип float нельзя использовать для денег так как он имеет ограниченную точность http://php.net/manual/ru/language.types.float.php(около 16 знаков)
сап, не могу настроить апач 2.2 в опенсервере. http://pastebin.com/z2JZFxxz конфиг апача. В настройках в опенсервере слушает все ip, в hosts алиасы на оба(127.0.0.1 и 192.168.1.8) ведут на localhost. С локального компа могу зайти на сайт только через локалхост, тогда как по обоим ип выдает ошибку пикрил
>>668757отвалился
>>668723Конверти в строку, используй substr.(Здесь можно, цифры занимают 1 байт.)Проверить, что на вход тебе пришли сугубо цифры, можно при помощи ctype_digit(string $string);
>>668723Ты задания с регулярками пропускаешь априори?
>>664839> Типа такого: require_once(__DIR__ . '../src/init.php') ?Да>> По моему тут может быть ситуация когда переменная не определена. Как можно писать надежный код если неизвестно существует переменная или нет?> Поясни, пожалуйста. isset($_GET['registered']) недостаточно?Речь по $msg. Она у тебя создается внутри 2 ифов выше этой строки: https://github.com/disbeliever/php_training/blob/master/students/src/ControllerStudent.php#L23Следовательно если ифы не сработают, переменная не будет существовать. Если ты создаешь переменную внутри ифа - ты должен только внутри его ее и использовать. То есть переменную надо использовать только в пределах того блока (области), в которой она создана. > В UrlHelper есть смысл параметры ($sort, $dir и прочее) сделать членами класса и передавать в конструктор? Это нелогично. Конструктор для тех параметров которые обязательны для создания объекта. С какой это стати нам нужно указывать сортировку чтобы создать класс генерации URL? >> Однако тогда надо обеспечить инкапусуляцию, то есть чтобы никто другой напрямую к этой куке не обращался.> Не очень понял, как это можно сделать.В данном случае надо просто убрать обращения к этой куке (токену) из других мест кода если они там есть.> unset($_COOKIE);// используем функции хелперов, которые работают с $myCookie> $_COOKIE = $myCookie;Это вообще что-то странное, зачем уничтожать стандартный массив PHP? >>> public static function fromRow($row)>> Маппингом студента на строчку базы данных должен заниматься класс для работы с базой данных.> Но это же по сути конструктор. В языке с перегрузкой методов, я бы их и использовал, а тут приходится так извращаться.Перегрузка придумана не для того чтобы нарушать принципы разделения кода. Ты невнимательно прочел, то, чт я написал, давай я еще раз повторю: - каждый класс должен заниматься своим делом. Взаимодействием с базой данных должен заниматься предназначеннный для этого класс. Модель студента не должна знать ничего о базе данных. Очевидно что статический конструктор нарушает это так как выносит знание о структуре базы данных из гейтвея в модель студента. Очевидно это неправильно.> Я понимаю, но зачем нам здесь поддержка кириллицы?Поддержка не нужна, но проще везде поступать единообразно и использовать mb-функции. Давай посмотрим с другой стороны. А какая выгода использовать здесь strlen? Чтобы сложнее было понять правильный код или нет? strlen это не функция подсчета числа символов. Это функция подсчета числа байт, а в твоем коде очевидно считается число символов - следовательно ее использование тут не очень логично.
>>664870> https://ideone.com/lqLSPcВсе верно> https://ideone.com/ccwxQHТут тоже все правильно.> https://ideone.com/ZuRDo8> echo $string = "Я {$worПрисваивание (=) и echo это 2 отдельных команды и они должны быть на 2 отдельных строках. Но в данном случае вообще непонятно зачем тут переменная и что мешает сразу вывести строку.в остальном верно> https://ideone.com/7g3WwDвсе правильно.>>665126Попробуй прикинуть какие фичи тебе понадобятся, а какие нет. Например если ты не используешь "хлебные крошки" (breadcrumbs) то можно их не включать. Вообще я думаю, тебе не понадобится большинство фич.
>>665163В PHP для этого есть SplObjectStorage.
>>668757Я не разбираюсь в опенсервере, так как он накручивает там что-то свое для конфигурирования Апача.
>>668808Ну, напрямую я не мог конфиги править, после перезапуска он их стирал. Нужно править только через настройки самого опенсервера, но а сами параметры доступа вроде верны. Я везде поставил Allow All, в чем проблема?
>>668810Обычно в Апаче в блоке VirtualHost указывается основное имя и алиасы, для которых применим данный блок, и иногда IP (но это не требуется указывать)https://httpd.apache.org/docs/2.4/ru/mod/core.html#virtualhostСоответственно если он иногда работает а иногда нет, что-то не так настроено. Надо смотреть какой там конфиш и сравнивать с докуентацией.Не понимаю какая выгода мучаться с настройками опенсервера и разбираться что он делает с конфигами когда можно не ставить сборки, а ставить чистый Апач который работает как описано в документации.
>>668779Нет, всё сделал. Только причем тут эти задачи? Разбивать регулярками? Так суть вопроса не в том, как разбивать, а можно ли с числом в данной задаче работать на этапе разбиения как с строкой.
>>664784 (OP)http://ideone.com/jwSIEZНичего не понимаю. В туториале команда ucfirst, кажется, не упоминалась, но почему она не работает? Если вставляю простую строку - делает первую букву заглавной, если строка из массива - игнорирует.
>>668832Да ни при чем. Просто я думал, что я тут один такой тупой сижу и не могу решить задачу с регуляркой, а вы все их тупо пропускаете.
Хочу сделать сайт-визитку. Мне для этого cms какую брать или самому писать?
>>668848Wordpress/drupal/joomla
Не пойму, в слиме нельзя что-ли заголовки через header указывать, только через $app->response()->header?
Надо написать счётчик для вордпресс, есть определённая кнопка на записях одной категории, по которой вызывается определённое действие (без перезагрузки страницы и без аякса, обыкновенный яваскрипт), мне надо подсчитать сколько раз нажималась эта кнопка на каждой записи. Судя по всему, следует использовать аякс. Первое что приходит в голову это использовать шорткод (в котором будет скрипт счётчика), но в таком случае шорткод надо будет проставлять на каждой записи, а это я думаю не очень удобно, хотя на каждой записи уже есть шорткоды, которые подключают скрипт. Как можно сделать так, чтобы шорткод или функцию можно было бы подключить только для этой категории записи? Данные счётчика мне надо хранить в формате:id - название страницы - количество нажатийСтоит ли создавать для этого новую таблицу в вордпресс или постараться как-то обойтись существующими?
Есть два стула $a = -12;$b = 1;$c = 1;$discr=$b$b-4$a$c;$dva_a = $a 2;$x1=(-$b+sqrt($discr))/$dva_a; //ответ -0.25(правильный)$x1=(-$b+sqrt($discr))/$a * 2; //ответ -1(неправильно)ЧЯДНТ?
>>668943> $dva_a = $a 2;$dva_a = $a*2; быстрофикс
>>668943там должно быть /($a2) а не /$a2 это разные выражения
>>668666>Вордпресс не станет больше тупить из-за одного-единственного if.Бля, точняк, протер глаза - это у меня ORDER BY RAND() в таблицах по несколько десятков тыщ записей отжирает время.>>668894Шорткод со скриптом счетчика - так себе решение, лучше подключи JS файл со скриптом (через wp_enqueue_script() или как его там), который будет смотреть, та ли категория у страницы (я давно не делал ничего с JS на WP, но кажется там есть JS объект какой-то с информацией о посте) и навешивать действия на твои кнопки со счетчиком. Хранить данные лучше в таблице вордпресса - кажется, wp_postmeta тебе должна подойти идейно.
<div class="main">.main{ Background: url(images/1.jpg);Height: 300px; Weight: 100%; Background-size: cover ; }</div> Не получается вставить фон в css.Далее вставляю его в html <link rel="stylesheet" type="text/css" href="style3.css">Что я делаю не так?
>>669015Background-image, а не background
Сап, как посоветуете начать изучать PHР?
>>669029Шапка для кого написана?
>>669018Изменил.Все равно фон не менятся, где еще может быть ошибка?
сап, аноны! я прочел несколько книг по пхп от орайли и теперь решил сесть и попробовать написать какое-нибудь тестовое задание шоб опыта набраться. сделал задание на базу студентов от опа, но больше ничего не лезет в голову. накидайте мне средних заданий, чтобы реально можно было попрактиковаться
>>669055Файлообменник смотри, это следующая задача от ОПа. Так же можешь попробовать написать свою борду или блог, но это уже посложнее будет.
>>669065кстати, интересно, неужели все треды в борде хранятся в бд? или есть какой-нибудь механизм автоочищения таблиц? как думаете?
>>669069Конечно есть механизм автоочищения. То же самое происходит и с файлами в этих тредах, если тред тонет, то все картинки которые были туда загружены будут доступны на сервере какое-то время (в /b/ это обычно пару часов, за тематику не знаю).
>>669054Ты уверен, что путь правильно прописал? Судя по картинке, у тебя в папке с файлом .css есть папка, где лежит искомый фон, так?
>>669098Ой, судя по коду, то есть.
>>669098Не-а, фон (картинка) в другом месте. В этом фейл?
>>669054Открой код страницы в хроме (я надеюсь у тебя хром) выбери body в колонке стилей справа смотри на ссылку со стилем, где прописан background-image и пройди по ссылке.
>>669107По изображению? не переходит
>>669109Почему не переходит? Полную ссылку в студию и местоположение картинки относительно корня сайта.
Посмотрите доработанный вариант. Нормально?http://ideone.com/gckE38
>>669103Ну вообще-то, да. Гугли пути в css.
>>668743Да хоть 9999999999999999999999999999999.Просто соответствующее количество if'ов для этого будет нужно.Ты же будешь в строку переводить, а не математически.Про математически анон тебе подсказал уже.
>>669141Все равно не выходит, перенес в папку css со стилями, в папку images.
>>669157Алсо, тут вроде бы тоже все чисто<link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" type="text/css" href="style3.css"> <meta charset="utf-8"/>
>>669103>>669141https://github.com/codedokode/pasta/blob/master/network/urls.mdУ ОПа есть урок про абсолютные и относительные ссылки, рекомендую почитать.
Лол. Решал задачку по генератору имён. Ну скопировал код, а про название ф-ции что берёт рандомный индекс массива и не увидел. Решил всё способом, когда был$random = rand(count($letters)-count($letters),count($letters));
>>669198Де код?
Чувак, который решал проблему про пути в css, решил уже?
http://ideone.com/gvUha4 -5.3(оценки)http://ideone.com/P526Ry -5.4(рост)http://ideone.com/6F7GME -5.5(ответ на вопрос)http://ideone.com/gU18qG -5.6(генератор имени)
>>669208Вот - >>669219.Только там небольшая ошибка с этим способом была и я всё же поставил нормальную ф-цию.
Поясните за задание "Шифровка" http://archive-ipq-co.narod.ru/l1/strings.htmlЧто-то не пойму, в чём стоит задача - нужно допилить для всех букв шифрующие символы или как?
>>669271>Что-то не пойму, в чём стоит задача - нужно допилить для всех букв шифрующие символы или как?Да.
Почаны, только начал.Как в echo складывать две переменные? echo "$a+$b" выводит 1+1, а не 2. Нужно создавать третью переменную для результата?
>>669382http://ideone.com/MxIlKo
>>669384Оу, извиняюсьСпасибо
>>668894>>668956Я думаю, проще всего в шаблоне вывода записи сделать условие: если (категория == нужной категории):<скрипт>запуститьСчетчик()</скрипт>endif>>668943/ $a * 2 значит поделить на a и умножить на 2, надо скобки ставить>>668956> Хранить данные лучше в таблице вордпресса - кажется, wp_postmeta тебе должна подойти идейно.Да, если надо только хранить число нажатий и не надо хранить каждое нажатие отдельно>>669015<div class="main">.main{ Это вообще что? Смесь CSS и HTML в одном файле? >>669158Залей свой HTMl и CSS код на jsfiddle.net>>669198> count($letters)-count($letters)Это такой хитрый способ записать число 0? Алсо, используй mt_rand - она надежнее и случайнее. Алсо тут ошибка, в массиве нет элемента с индексом равным count(...)
я идиот и нихуя не понимаю <div class="form-group required"> <label class="control-label" for="input-payment-lastname"><?php echo $entry_lastname; ?></label> <input type="text" name="lastname" value="<?php echo $lastname; ?>" placeholder="<?php echo $entry_lastname; ?>" id="input-payment-lastname" class="form-control" /> </div>есть форма, как отправить в ластнейм готовое значени и скрыть элемент формы удалить? json жалуется
>>669451Изучить HTML, в частности скрытые поля форм. Если ты не знаешь HTML то надо читать учебники, а не копипастить куски кода из интернета.
>>669457спс за совет, сделал костыль гореть мне в аду
хелпЕсть скрипт входа на сайт с сессиями , все вроде бы ОК , но , при попытки извлечь из БД что-то кроме поля username я получаю..нихуя. просто пустое поле , можете пожалуйста ткнуть на ошибку? Там немного , всего 5 файлов. https://dropmefiles.com/p7XUK
>>668789>Это нелогично. Конструктор для тех параметров которые обязательны для создания объекта. С какой это стати нам нужно указывать сортировку чтобы создать класс генерации URL?ОК. У нас есть класс, в котором нет данных, и методы которого зависят только от своих аргументов. Почему я не могу сделать эти методы статическими?
Никак не пойму как писать грамотно тесты. Ну вот допустим у программа считает сумму двух чисел и реализован паттерн мвц. То есть у меня есть класс модели в котором содержится метод sum($a, $b), класс контроллера который передает пользовательские данные из представления в модель и класс представления, который подключает шаблоны страниц, выводит данные которые были получены из модели. Если речь идет о модульном тестировании, то мне нужно тестировать все методы всех классов, а не только метод суммы в котором содержится основная логика приложения? А как их можно тестировать?
>>669731У тебя модель active record? Ну хуево тебе значит.Если выделить слой сервисов то будет намного проще и тестить и мокать.В правильных контроллерах логики быть не может поэтому и тестить там нечего.Хотя конечно можно написать интеграционные тесты чтобы проверить те же роуты и что все заводится в продакшен-конфигурации.
Посоны, нужно выбрать 20 случайных уникальных строк из таблицы размером около 30 000 строк. Сейчас у меня тупоSELECT `ID`, `NAME`, `CITY` FROM `TABLE` ORDER BY RAND() LIMIT 20ID- авто инкремент праймери ки.Поковырял это чуть-чуть, понял что это дохуя медленный запрос.В качестве промежуточного варианта решил следующее:1. Отдельным запросом узнать минимальный и максимальный ID2. Нагенерить с mt_rand 20 случайных чисел между мин и макс ID3. SELECT `ID`, `NAME`, `CITY` FROM `TABLE` WHERE `ID` IN ($random_range_string)Эта ебота получилась у меня, ясен хрен, быстрее первой раз в 8. Но существует вероятность что некоторые ID будут удалены, что делает эту конструкцию какой-то ненадежной. Подумал, что в качестве костыля можно добавить еще один автоинкремент столбец в таблицу, который будет пересчитываться при каждой вставке/изменении/удалении значений. Происходят эти операции довольно редко, поэтому производительность этих запросов не так важна.Короче, это разумный подход? Или существует какой-нибудь простой чудо-запрос, который сделает все красиво без этой еботы?
>>669741Сделать индексированную колонку с цифрами от 1 до N и выбирать по условие x > R LIMIT y
>>669741Написать хранимку которая будет дергать N раз SELECT FROM table WHERE key >= FLOOR(RAND()MAX(id)) LIMIT 1
Ребятки, такая ситуация: допустим, я хочу начать разрабатывать некую йобу. Но создание гуёв хочу отложить на потом.Вопрос: есть инструменты, которые помогут мне в тестировании функционала без пользовательского интерфейса?
>>669753Десктопную на пхп? Мсье знает толк.Во-первых оформляешь свою либу в пакет, пишешь юнит-тесты.Потом можешь написать CLI как отдельный проект из которого дергаешь либу.Потом делаешь свою гуйню, опять подтягиваешь либу, ибо нехуй держать яйца в одной корзине.
>>669756>Десктопную на пхп?Нет, это будет веб-приложение. Гуями я назвал html-шаблоны и js, и там тоже будет потом достаточно работы. Не хочу распыляться, хочу сначала сервер сделать, потом клиент.
>>669760Т.е. SPA но сервер на пхп?Но зачем если есть более приспособленные под это языки?Ну в любом случае начинать надо со спецификаций, см. BDD или TDD что тебе больше вкатит.
>>669774>Т.е. SPA но сервер на пхп?Да, наверное SPA. Гуи буду пилить на этом: https://www.sencha.com/products/extjs/>Но зачем если есть более приспособленные под это языки?Потому что я изучаю пхп.
>>660204Снова вбрасываю исправленную версию Grammar Naziвот из этого поста >>653722Поправил некоторые моменты, как вывести только часть строки с ошибкой я так и не уловил.http://ideone.com/SHG6hF
>>669935Всё плохо.Ты собери свой текст, сделай его без абзацев - увидишь, что именно там плохо.http://ideone.com/yAVftjОбъясняли же ведь уже этот момент тебе.И да, надо выводить не с помощью var_damp, а с помощью переменной. Для этого надо доставать из массива $match соответствующие значения (ошибки, которые туда набиваются).
Как научиться понимать чужой код? Может есть какие-нибудь книги или практические советы?
>>669935>как вывести только часть строки с ошибкой я так и не уловил.Надо захватывать соседние слова, только и всего.Регулярка вида: "слово, пробел есть или нет, ошибка, пробел есть или нет, слово".Ты не понял, как найти слово? Там же объясняется это несколько раз: [а-яё] - а дальше знак, который при следующем пробеле оборвёт это вырезание. В итоге регулярка захватит только соседнее слово.
>>669943С опытом должно прийти.Пока проверяй все задачи анонов, которые сам уже решал, пытайся исправить и помочь.
>>669120Что-то все игнорируют. Все неправильно что ли?http://ideone.com/gckE38
>>669950Мне лень проверять.
>>669950Я ещё прежде работу проверял, всё переводило правильно. Толкового посоветовать ничего не могу.Жди ОПа и его разбора.
Задачи из раздела "Функции".http://ideone.com/fVLFtB
>>6701441. В функцию можно подставлять непосредственное значение переменной: countMoney($creditSum,7777, $percent, 0, 0, $payout); - все те переменные, которые одинаковые, вставляются переменными. А те, которые отличаются, - вставляются числами.2. В СофтоБанке должно получиться 61270 с копейками - как в задаче про Айфон. Здесь ошибка в расчётах. В последнем банке должно получиться 53 тысячи с чем-то. Ну это и естественно, что ошибки будут, раз контрольный средний банк считает неверно.3. $creditSum х $percent / 100 + $comission - повторяется несколько раз. Лучше заведи отдельную переменную для этого.4. $payment = $i х $payout; - неожиданное выражение, впервые в этих задачах встречаю такое. Вроде бы всё нормально в этом случае. Обычно просто плюсуют $payout к $payment.
Парни, накидайте мотивации. Я вот делаю-делаю задания, я желания нету никакого. Хоть умом я понимаю, что программирование для такого как я - это выгодный путь. Я просто не знаю для чего я всё это делаю? Что я смогу дальше, для чего мне эти задания, для чего вообще нужен пхп, как я потом деньги буду зарабатывать? Оп этого всего не объясняет.Вот например - на гитаре когда учился, то я точно знал, что щас задрачу эту мелодию, а потом покажу друзьям/семье и они меня похвалят. Тут же, непонятно. Можете расписать, примерно, что будет происходить с моей жизнью, через месяц-три-полгода етц, если я продолжу обучение? В планах php->html,css->js->mysql.Заставлю то я себя в любом случае, но если вы меня поддержите, то будет легче :3
Проясните за gulp, bower, grunt, вы пользуетесь этой дичью?
>>670193>Можете расписать, примерно, что будет происходить с моей жизнью, через месяц-три-полгода етц, если я продолжу обучениеТы инфантил и надеешься, что программирование преобразит твою жалкую жизнь. Но это не так, и ты просто будешь сосать хуй, не понимая, что происходит.
>>670161Спасибо. Исправил расчет, а 3-й пункт не получилось, к сожалению.http://ideone.com/bxYnHn
>>670219да хули ее преображать? она и так прекрасна. Просто скоро придется деньги зарабатывать, а я не хочу утром вставать и идти выполнять приказы левых людей. Просто пример приведи.Гитара: первую неделю пытаешься попасть пальцами в струны, постоянно сбиваешься с ритма, не можешь играть больше получаса изза болей в пальцах; месяц - умеешь играть одну песню, сыграл ее уже - 1000 раз, но все равно стесняешься показать людям, пытаешься что-то напевать при игре; 3месяца - умеешь играть несколько песен, готов тренироваться днями на пролет, горланишь на всю хату пока никого нету дома, аноны с сосача обоссали за кривой вокал; пол года - играешь 10+ песен, ни слушаешь никаких советов и уверен в том, что сам все знаешь, аноны пару раз похвалили пение, показал пацанам со двора - разцеловали; год - начинаешь изучать супер сложные композиции сам незная зачем ИТД.Вот так нельзя?
>>670237>Вот так нельзя? Один раз можно.Извэни тора гой но йА не готов засирать своим нытьём ещё и этот тред.
>>670254чат же все таки
Пытаюсь в древовидные комментарии. Не могу найти или придумать такое решение, в котором можно было бы обойтись без вывода хтмл кода прямо в функции(методе).
>>670312Урок ОПа читал?https://github.com/codedokode/pasta/blob/master/db/trees.md
>>670193Научившись всему из гайдов в оп посте ты сможешь устроиться джуниором за почти нихуя в неприхотливую веб контору. Потусовавшись там с годик сможешь перекатиться во фриланс и работать из старбакса, попивая тыквенный латте и бугуртя на индусов.
>>670317Нет. Пробежался по статье, там написано как хранить древовидные структуры в бд, у меня по сути в таком же виде организована таблица (кроме глубины). Мне нужно именно отображение этих данных.
>>670237Всё можно. Сначала разберись во всех задачах ОПа, никуда не торопись, помогай новичкам, которые появляются и пропадают. Месяца за 3-4 натренируешься в задачах до высокого уровня, сможешь не глядя их решать, будешь читать чужой код и предчувствовать даже по описанию задачи, в чём человек ошибся.Дальше - переходишь дальше.Всё возможно, если изучаешь для удовольствия.Ты же гитарой зарабатывать не собирался, наверное.
>>670226Хм, в какой-то момент у тебя $creditSum уходит в минус.Например, в какой-то момент $creditSum становится равен 260 рублей. Тут же происходит следующее: $creditSum = $creditSum х $percent / 100 + $comission - $payout;. Это всё становится отрицательным значением.А далее у тебя if ($creditSum х $percent / 100 + $comission < 5000), то есть эта отрицательная $creditSum в этом условии даёт положительное и нужное число.Это не вполне верно. Поэтому и не получится выделить отдельную переменную выражению $creditSum х $percent / 100 + $comission.ОП не будет доволен, он всё это видит насквозь.Расчёты не должны нырять в минус в этой задаче.
>>670333*равен 260-ти рублям
>>670320Это твой личный опыт или влажные мечты?
>>670347Человек попросил накидать мотивации, ему и накидали. какая разница правда это или нет, главное замотивировать
Допустим, есть чат. Нужно реализовать сохранение его логов для пользователей в виде картинки, как это сделать?
>>670193Если начнешь хуярить, то через 4-8 месяцев найдешь работу (если ты не из пердей каких-нибудь).Если не найдешь, значит плохо хуярил.
>>670193Сколько тебе лет?
>>665709>Знаком с OOPБери тогда Symfony. Без проблем должно зайти, коли не врешь.
>>666504>перевернуть бинарное деревоЭто же совсем не трудно.
>>670328Ты просто опыта набрался или книжки какие-то читал?
>>67036620, а что?
>>670432Короче, просто хуярь, и будет тебе счастье.Отныне день, когда ты не напишешь ни строчки кода, не прочитаешь ни одной статьи про теме, будет прожит для тебя зря.Уделять обучению надо не менее четырех часов в день.Помни: главное - хуярить. Ты же не работаешь, верно? Значит времени и возможностей до хера.
>>670422Многие в этом треде даже не знают что это такое.
>>670457ок, спс.
Всем доброго вечера!Проверьте задачку на правильные мобильные номера, пожалуста.https://ideone.com/8fJqR0
>>670462Многие в этом тебе много чего не знают. Новички же совсем.Зато многие претенденты на позицию джуна знают.
>>670466>ок, спс.Правильно писать: "Ок, спс, ушел хуярить".
>>670472>Многие в этом тебеМногие в этом треде
>>670467Вот это несколько раз скопировано: "\ ?".Попробуй использовать квадратные скобки, которые означают "любой указанные символ в любом порядке", а также кое-какой символ после них - чтобы дать понять, что скобок, минусов и пробелов там может быть неограниченное количество.
>>670503Сделал.
>>670514https://ideone.com/2c6hDp - такого номера нет у ОПа (первый в правильных), но он вполне реален. Сможешь ли ты совладать с ним, не разрушив правильности проверки других номеров?
>>670514Также к чему обратные слэши ставишь перед любым символом в квадратных скобках? Они там не выполняют свои функции, меняют своё значение. Символ пробела надо указывать символом.
>>670533>>670527Сделал, правда с квардратными скобками не работало чомусь, вида: ([ (-]+)?
>>670575А теперь смотри, какие интересные номера у тебя верные.https://ideone.com/mgkIba
>>670475Воистину так, сука мля, ебаныврот.
>>670603Согласен, но если мы принимаем что>'8 ( 495 ) 1 - 2 - 3 - 4 - 5 - 6 - 7'правильный, то почему>'8 911 415 (16) (13)'нет? Да и я на подсказку ОПа ориентировался>сначала идет +7 или 8, за ними ровно 10 цифр, между которыми может быть любое число скобок, минусов, пробелов.Но тем не менее я пофиксил(старая ссылка - актуальна) и сразу в догонку то-же только с заменой проверь, пожалуйста.https://ideone.com/AG9xvk
>>670655И ещё про замену слова "дурак"https://ideone.com/jh6Jiq
>>670655Одно пофиксил, другое сломал.У тебя там два некорректных номера прошло проверку.Вот мое решение, а то я сам не решал еще.http://ideone.com/b2tQKacheckPhoneNumber - это с выебонами, скобки могут быть только у кода города (код 3-5 цифр), дефисы не могут соседствовать со скобками (кроме дефиса после закрывающей скобки, чтобы пройти тест ОПа)checkPhoneNumberIRL - как будет в настоящем проекте, тесты ОПа тоже проходит. Разница в первой строке массива incorrectNumbers, добавленной мной.Алсо, кто сможет прочитать мою регулярку - тот герой.
>>670725>+7-(812)-567-55-67 неверный кафир>+7-(812)1234567 неверный кафирС какого такого перепугу? Это верные номера.
>>670686Забыл четвертую букву к.Не экранируй пробелы.Алсо, вместо пробела можно использовать символьный класс \s - любой пробельный символ (почти любой).Алсо-2. Здесь тебе не нужна группировка в скобках - [дД] идентично (д|Д) для одного символа. Но здесь уже обязательно надо поставить модификатор u - utf-8.Алсо-3. Если ты группируешь что-то в скобках, но запоминать результат тебе не нужно - пиши так: (?:раз|два). ?: - не делать ссылку, не запоминать эту группировку.>>670728А для меня - нет.
>>670734>А для меня - нет.Пааапрошу пояснить.ОП как раз и предлагал эти номера как правильные.
>>670740Это я их туда добавил. У ОПа в тестах их не было.Энивей, базара нет - http://ideone.com/7xEGiD
>>666493>>666493мне кажется, лучше будет не просто сравнивать окончания, а учитывать транскрипции и исключенияударения конечно маст хэв
>>670734>4ая кНет, англ к выглядит по другому поэтому я её и не писал, наказал так сказать.>Алсо-3 Не понил если честно.
>>670781Все, что группируется в круглых скобках, автомат регулярных выражений запоминает. Ты можешь потом использовать ссылку на этот результат в этой же регулярке или в строке для замены.Например, /<(div|span)>.*?</\1>/ найдет только <div></div> или <span></span>, но не <div></span>. \1 - ссылка на первую сохраненную группу.Если тебе не надо ничего сохранять - ты ставишь ?: после скобки. Так экономится память, а также не засирается итоговый массив с результатами, например.
>>670784Спасибо
Так.Посоны, каким-то блядь расчудесным образом надо вникнуть в jquery и научиться хуярить в бутстрапе за месяц.Есть где-нибудь такая хуйня, чтоб я прочитал и охуел от пиздатости материала?
>>670793На codeacademy пробани для начала, вдруг охуеешь. Не от пиздатости, так от чего другого.
Зашёл в список сообщений в контакте, посмотрел его разметку, а он таблицей сделан, это нормально?
>>670794Да, нормально. Учитывая гомоеблю с разной поддержкой стандарта в разных браузерах
>>670237Точно так же все и будет, твои навыки будут развиваться если ты будешь прикладывать усилия. Только вот работа и хобби это разные вещи, представь например что тебе надо каждый день по 8 часов играть одни и те же песни. Ну, никто и не обещал что будет легко. > а я не хочу утром вставать и идти выполнять приказы левых людей.Это никого не волнует. Не хочешь выполнять приказы - сиди дома гордый и свободный, питайся дошираком. Впрочем, мир на программировании клином не сошелся - есть и другие коммерчески востребованные навыки, но в любом случае быстро ты их не освоишь. А работа не требующая особых навыков, обычно плохо оплачивается и еще менее интересна чем программирование. Хочешь залезть повыше - докажи, что ты лучше других.Ну и на гитаре каждый может научиться играть, а попробуй теперь клавиши освой.Ну и вообще это тред про программирование, давайте ближе к теме держаться.>>670312Метод в классе TableGateway возвращает отсортированный массив комментариев. Шаблон приходится по ним циклом и выводит. Вообще тут есть 2 варианта прелставления: - плоский список: верстка такого списка будет представлять собой просто список дивов, у которых отступ слева пропорционален глубине комментария. При этом древовидная структура не отражена в HTML коде - в коде это просто идущий последовательно список дивов- дерево: каждый комментарий содержит список своих детей, те содержат списки своих детей и тд. Вывод дерева делается рекурсивной функцией, а верстка отражает структуру дерева: дочерние комментарии в HTML находятся внутри родительских. Второй способ семантичнее и имеет некоторые преимущества (скрыв один див можно скрыть комментарий со всеми потомками), но первый намного проще в реализации и предпочтительнее тут.Я думаю, тебе надо больше изучать и практиковаться со структурами данных и рекурсией, ты их плохо знаешь. Для этого можно попросить у меня задачи, и одну я придумаю сразу. Для решения этой задачи надо изучить что такое деревья. Почитай про них в википедии или где-то еще, изучи термины (корень, ребенок, потомок, предок, родитель, брат), изучи алгоритмы обхода дерева (в ширину, в глубину), оценки их сложности. Реши задачу:Есть некое дерево. Реализуй это дерево средствами ООП. Узел дерева должен быть представлен объектом, поддерживающим такие методы: - определение числа непосредственных детей- определение общего числа потомков - определение является ли узел корнем дерева- определение глубины узла от корня дерева- получение списка детей- получение родителя- добавление, удаление ребенка- проверка, является ли данный узел потомком другого, проверка, является ли он его предком- получение следующего и предыдущего брата (брат = узел имеющий того же родителя)- перенос узла, чтобы он был N-м по очереди среди братьев- перенос узла со всем содержимым к другому родителюСделав это дерево, реализуй на нем дерево кателога товаров. Сделай его вывод в таком виде, указывая в скобках число категорий-потомков: Бытовая техника (5)....утюги....пылесосы....телевизоры (3)........LCD телевизорыИ еще там выше пишут про задачу "перевернуть бинарное дерево". Реши ее, сделав класс для бинарного дерева. "перевернуть бинарное дерево" значит поменять местами всех левых и правых детей. Также, ответь, можно ли наследовать бинарное дерево от обычного? Обычное от бинарного? Почему? Также, почитай в википедии про красно-черные деревья и зачем они нужны. Так как я добрый, то не буду предлагать тебе самому написать алгоритм балансировки двоичного дерева.Вот кстати я помню, тут кто-то ныл что алгоритмы и структуры данных не нужно знать, задачки из раздела "повторим" не надо решать. Вот видишь, без этого у тебя сложности с выводом комментариев - вполне практической задачей. Так что давай изучать деревья.>>670320Повеселил. Вообще, аноны, подумайте чуть чуть своей головой. Если какая-то работа простая и любой может ее делать, на такую вакансию выстраивается очередь кандидатов, и работодатель может устроить среди них обратный аукцион (кто меньше попросит). Подумайте сами, какая будет зарплата и условия труда на работе не требующей никаких навыков. Вы точно хотите участвовать в таком аукционе? >>670361Сохранить логи и вывести на картинку с помощью какой-нибудь графической библиотеки.
>>666504Вот ты тут пытаешься намекнуть что знание "теории" (алгоритмов и структур данных) не нужно в реальной работе и требуется только на собеседовании. Но вот выше анон не может разобраться с вполне реальной задаче - выводом комментариев. Значит, все-таки это знание нужно? Видимо нужно.>>670467Посмотри что пишет твоя программа: > + 849512345678 Это неправильный номер - тут 12 цифр> - 8 911 415 (16) (13) А это правильный. Надо исправить ошибки в регулярке. Сейчас там у тебя она состоит из 2 частей (в первой 3-4 цифры, во второй 6-7). Это неправильно так как ты не можешь гарантировать что после 8 будет ровно 10 цифр - у тебя их может быть от 9 до 11.>>670655> 8 911 415 (16) (13)Это правильный номер.>>670725> Алсо, кто сможет прочитать мою регулярку - тот герой.Это как раз неправильно. Вот смотри, твою регулярку не разобрать - а как проверить что она правильная? Тесты ведь не покрывают все возможные варианты (да и не должны). А если окажется что у тебя там баг - как его исправить, не сломав регулярку? Код должен быть понятен без необходимости разбирать твою регулярку на кусочки и анализировать все возможные сочетания символов. Код в фукнции checkPhoneNumber потому надо переделать.Если ты хочешь добавить дополнительные ограничения (например разрешить ставить скобки только в коде города и соблдать их баланс) - ты должен сделать это не переусложняя регулярку, а каким-то понятным кодом. Ну например как-то разбить номер на части (со скобками и без) и анализировать их. Потому твой вариант регулярки - не годится.Код в checkPhoneNumberIRL в общем годится после улучшения оформеления кода. str_replace я бы заменил на preg_match ради краткости, и вынес бы ее на отдельную строку. Вывод результатов по моему сделан не очень удачно - трудно понять пройдены тесты или нет. Я бы сделал так: (крестик или галочка показывающие правильно ли определен ответ) (номер) (текст результата проверки)Тогда бросив взгляд на левый край можно увидеть все ли ок.
>>670734Модификатор u надо ставить всегда (конечно еще лучше было бы если PHP это делал сам - в PHP6 это должно было быть, но не осилили). А то потом люди приходят в тред и спрашивают почему у них регулярка не работает.>>666493Там ударения надо знать и учитывать произношение: например чёлен-волн или "и горний ангелов полет, и гад земных подземный ход" (я мог пару слов перепутать конечно, вряд ли в оригинале было земных и подземных рядом). У Маяковского по моему есть рифма "блюда" - "буду". А если брать более поздние произведения - там еще более сложные рифмы могут быть. Также, в стихах по моему допускается переставлять ударение ради рифмы. Если тут есть гуманитарий-куны, они наверно лучше знают. >>670784> ты ставишь ?: после скобки. Так экономится память, а также не засирается итоговый массив с результатами, например.Но удлиняется и зашумляется регулярка, так что лучше все же не ставить без надобности. >>670793Бутстрап какое отношение имеет к jQuery? Это разные вещи. Алсо, то что тебе нужно выучить это JS/DOM, HTMl/CSS. В ОП посте есть задачи, но за месяц ты вряд ли справишься. Но это потому что верстка и яваскрипт не такие простые вещи как некоторым кажется.>>670794Кодеакадеми это ознакомительный уровень. Годится чтоб понять, хочешь ты это изучать или нет, но верстальщиком ты вряд ли хорошим станешь с их курсов.>>670796Возможно разработчики вконтакте не очень сильны в верстке. Возможно, там есть практические соображения - display: table и многие вещи из CSS2.1 и CSS3 не работают IE6, 7, 8, а они долгое время поддерживались.В современных браузерах дивы можно заставить вести себя как таблицу с помощью display table, если требуется такая раскладка блоков.Я могу сказать что старая страница гугла, которую он показывает не новым браузерам тоже сделана на таблицах.Однако является ли факт использования таблиц гуглом и вконтакте причиной не изучать современные семантичные методы верстки? Наверно лучше всего знать и новые и старые подходы и уметь выбирать оптимальный. Ну и помни что таблицы очень плохо дружат с адаптивностью. Таблицу из 3 колонок нельзя превратить в высокую тонкую ленту.
>>670860> Бутстрап какое отношение имеет к jQuery? Это разные вещи.Библиотека js и фреймворк разные вещи? Серьёзно? Не ожидал.> Алсо, то что тебе нужно выучить это JS/DOM, HTMl/CSS.хтмл/ксс уже более-менее, нативный JS придется осиливать по пути.В оп-посте дохуя задач на пхп, а мне кроме того, что это такое в общих чертах и как оно работает знать пока что не особенно нужно, ибо я тупо не успею выучить пхп за месяц.Пока что думаю пройти курсы кодакадеми js, jqeury, потом с помощью аллаха связывать всю эту хуйню пока что где-нибудь в иде, далее уже конкретно изучать бутстрап, чтоб иметь общее представление и оттуда уже комплексно углубляться в less, js и дрочить ксс сколько успею.
ОП, как работают днс-записи для случая: домен куплен у оффициального селлера, перенаправлен на сторонний днс, а оттуда уже на нужный сайт? На офф-селлере NS запись, на стороннем - А?Зачем нужна CNAME запись, если итак дохуя способов редиректа?
>>670855>твою регулярку не разобратьНе разобрать регулярку e-mail из RFC.Есть волшебный модификатор /x, который позволит записать это весьма удобно и понятно.Например, так:http://ideone.com/7xEGiD>str_replace я бы заменил на preg_matchВредные советы поехали. PCRE всегда медленнее любой строковой функции.>>670860>Модификатор u надо ставить всегдаГригорий Остер, вам пора залогиниться.Пикрелейтед, специально для вас.Совет: если вы понимаете, что вы делаете (только если понимаете), - не используйте модификатор u. Грубо говоря, он нужен лишь тогда, когда:- в символьном классе вы используете не-ASCII символы,- когда вам важно заматчить именно символ, который выходит за рамки ASCII.Проще говоря, в выражении типа #<title>(.+?)</title># модификатор u не нужен. Вам не важны символы внутри title, вам важен сам текст, набор байтов.А вот в выражении #<title>[^>]+</title>#u модификатор нужен, так как [^>] может наткнуться на байт, который является частью другого символа, но сам по себе равен >.Нововкатившийся, если тебе непонятно, что тут написано - забей. Это немного запутанная магия.
Зачем было делать, чтоб надо было try\catch прописывать в PDO, почему исключения нельзя переделать по умолчанию чтоб включались? Намного красивей код стал бы, нет, хотим лепить эти {} } { { { }
>>670945> домен куплен у оффициального селлера, перенаправлен на сторонний днс, а оттуда уже на нужный сайт? На офф-селлере NS запись, на стороннем - А?Да. "Покупка домена" если я не путаю, значит что ты получаешь право указать NS для него. Покупка домена не подразумевает DNS-хостинг, хотя реселлеры могут предлагать такую услугу. > Зачем нужна CNAME записьПогугли: > https://en.wikipedia.org/wiki/CNAME_record> A Canonical Name record (abbreviated as CNAME record) is a type of resource record in the Domain Name System (DNS) used to specify that a domain name is an alias for another domain, the "canonical" domain. All information, including subdomains, IP addresses, etc., are defined by the canonical domain.> This can prove convenient when running multiple services (like an FTP server and a webserver; each running on different ports) from a single IP address. One can, for example, point ftp.example.com and www.example.com to the DNS A record for example.com, which in turn points to the IP-address. Then, if the IP-address ever changes, one only has to record the change in one place within the network: in the DNS A record.> CNAME records must always point to another domain name, never directly to an IP-address.Чтобы упростить конфигурирование когда у сервера много имен, как я понял. Если меняется IP достаточно поменять одну запись. Плюс, ты фиксируешь что этот домен является синонимом другого. > если итак дохуя способов редиректа?Интернет не ограничивается протоколом HTTP, а в других протоколах редиректов нет. Правда, можно прописать дляобоих доменов один и тот же IP. Также, редирект и алиасы - разная вещь. В первом случае у тебя один сервер редиректит на другой, во втором у тебя один и тот же контент доступен на 2 доменах (что обычно плохо).Ну и такие вещи лучше проверять на практике. Бери линукс и утилиту dig (если нет то поищи онлайн утилиты), и делай например такой запрос: ....продолжение поста: http://pastebin.ru/gLpkVrdPИ еще про точку в конце адреса. Она значит что имя домена окончательное. Без нее в случае неудачи клиент будет приписывать к нему "суффикс DNS" который задается в настройках сетевого интерфейса. То есть если в настройках прописан домен example.com и ты пытаешься разрешить имя server то сначала он будет искать домен server., а при неудаче - server.example.com.Точка позволяет отключить этот механизм.
где можно почитать про exception? У ОПа есть где-нибудь инфа про это?
>>670948> PCRE всегда медленнее любой строковой функции.как насчет пруфов? как работает pcre внутри? > Пикрелейтед, специально для вас.разница с/без u = 20 микросекунд против 14? То есть ради 6 микросекунд ты предлагаешь исплоьзовать не-юникодный режим в котором сам черт ногу сломит и с которым разработчик будет тратить часы на поиски ответа "почему регулярка странно работает"? А вредные советы даю я? Тебе бы не помешало вместо изучения всяких си и ассемблеров немного почитать про экономику, менджмент там.Что касается 206 микросекунд при добавлении флага i - я думаю, такую проблему надо решать оптимизацией этого случая в pcre. А не превращением кода в нечитаемое месиво из скобочек.А как насчет такого выражения: /кот+собака/Оно сработает без модификатора u? А такое: /кот\b/А как насчет такого? /кот/iТвои советы это закладывание мин в код, ждущих новичка. Может это хорошая идея если ты увольняешься и хочешь насолить злодеям не признающим гения.> Есть волшебный модификатор /x, который позволит записать это весьма удобно и понятно.> Например, так:Комментарии это хорошо, но понятный без них код лучше. Ну и поддерживать выражение будет не очень удобно. Вот например это: > (?(1) Имеет тот недостаток что при добавлении новых скобок нумерация меняется. В данном случае правильнее вынести часть проверки из регулярки в код. А такие регулярки пишут те, кто хочет похвастаться что они прочитали мануал по pcre. Но подумай сам: а что если в команде с тобой окажется такой умник, который прочел мануал по какой-то другой библиотеке которую ты плохо знаешь, тебе понравится разбирать то что он там зашифровал? Я думаю, гораздо приятнее работать с человеком который пишет простой код, а рабочее время тратит на решение рабочих задач а не чтение мануалов.Ну и я регулярки и посложнее видел: https://habrahabr.ru/post/171667/Вдохновленный этой статьей, я тоже пытался сделать парсер чего-то, не помню уже чего, помню только что потратил много времени, скачал отдельно утилиту из pcre для отладки регулярки, но она в итоге так и не заработала - н езнаю, из-за моей ошибки или бага в pcre.>>670963Их и не надо писать. Их пишут только неграмотные авторы не понимающие как работают исключения. Исключения автоматически сами вылетают наверх. Они как раз и придуманы чтобы не надо было результат каждой функции проверять на ошибку.
>>670948Насчет замены str_replace на регулярку - я исходил из того что она будет компактнее и позволяет писать более сложное выражение. Разумеется, это не обязательно, и str_replace тут тоже годится. Насчет производительности - не уверен так как не помню как именно работает pcre, а лезть в документацию лень.
>>670972https://gist.github.com/codedokode/65d43ca5ac95c762bc1a
>>670988tusend tak
>>670974>как насчет пруфов?Пикрелейтед.preg_replace в 5,5 раз медленнее str_replace.>как работает pcre внутри?Например, хотя бы парсит шаблон, чего не делает str_replace.>разница с/без u = 20 микросекунд против 14? То есть ради 6 микросекундВ программировании нет микросекунд, есть производительность, возрастающая или падающая в разы. Если производительность падает в 1,5 раза, это значит, тебе нужно 4 сервера, а не 3. На те же объемы работы.Действительно, мне стоит почитать про экономику и менеджмент.> /кот+собака/> /кот\b/> /кот/iНе сработает ни одно.>Твои советы это закладывание мин в код, ждущих новичка.>новичка>если вы понимаете, что вы делаете (только если понимаете), - не используйте модификатор uТем не менее, новичку это тоже полезно узнать. В школе никто не учит, что зыбиться и зиждиться - глаголы первого спряжения, однако, узнать об этом как минимум интересно, думаю, ты со мной согласишься.Я не призываю ньюфага использовать столь хардкорные оптимизации. Просто неплохо бы знать - u может в разы замедлить регулярное выражение, что и есть ответ на твой вопрос, почему же php не ставит этот модификатор автоматически.
>>670853http://ideone.com/iX1g2y сделал дерево с каталогом
>>670948>А вот в выражении #<title>[^>]+</title>#u модификатор нужен, так как [^>] может наткнуться на байт, который является частью другого символа, но сам по себе равен >.Кстати, я обосрался, в чем спешу признаться. utf-8 устроен так, что у любого байта не-ASCII символа старший бит - 1. У ASCII - 0.Приведенная мной ситуация невозможна.
>>671003>public function getNextSibling(){>$parent = $this->parentNode;>$previous = NULL;>foreach ($parent->getChildNodes() as $child) {>getPreviousSiblingЧто будет, если $this->parentNode = null?> public function __construct($nodeName,$parent = NULL){> $this->nodeName = $nodeName;> $this->parentNode = $parent;> }> public function moveNode($parent){> $this->parentNode->removeChild($this->nodeName);> $this->parentNode = $parent;> $this->parentNode->addChild($this);> }Не кажется ли тебе, что назнание родителя - неотъемлемое действие для метода addChild?Не кажется ли тебе, что свойство parent в конструкторе - лишнее, а его должен задавать родитель в методе addChild?
>>671000> Если производительность падает в 1,5 раза, это значит, тебе нужно 4 сервера, а не 3. На те же объемы работы.Только если основная функция твоего приложения это обработка текста регуляркой.> Просто неплохо бы знать - u может в разы замедлить регулярное выражение, что и есть ответ на твой вопрос, почему же php не ставит этот модификатор автоматически.Не поэтому, а потому что PHP "агностичен" по отношению к кодировкам, что в итоге приводит к куче неудобств и сложностей для новичков. Потому что для человека строка это цепочка символов, а не байт, и потому что когда человек хочет найти букву а с двумя точками, он хочет найти ее как бы она не была закодирована.Ну и если подумать, в большинстве случаев нам нужны не только ascii. Мы ведь не в США живем.
>>671027У него parent сделан опциональным, его можно не указывать, но мне тоже больше нравится идея разделить создание узла и прикрепление его к родителю.
>>671029>Потому что для человека строка это цепочка символов, а не байтА для программиста это должны быть байты.>когда человек хочет найти букву а с двумя точками, он хочет найти ее как бы она не была закодированаЭто извечная борьба высокоуровневости с низкоуровневостью.Хочешь меньше думать? Готовься выложить больше процессорного времени и памяти.Я согласен с тем, что для такого простого языка, как PHP, мудрености с модификаторами - это лишнее. Но в то же время, не давай PHP спуститься на уровень ниже, это был бы громоздкий фреймворк для лоу-лоада (имплаинг, что php может в хайлоад).
>>671031Так ведь когда мы создаем объект, он так и так не имеет родителя.Корректно добавлять объекту родителя лишь через метод addChild родителя.
Алсо, меня смущает, что addChild происходит по объекту, а removeChild - по его имени. Все ООП по пизде.
>>671038http://ideone.com/01vujw исправил>>671040Согласен, глупо получилось.
>>671042А нужно ли имя? Если делать абстрактное дерево то оно должно быть просто абстрактным деревом, от которого наследуется уже например класс "дерево категорий"С другой стороны, с именем проще отлаживать код конечно.> public function addChild(TreeElement $child){Нет проверки не является ли добавляемый элемент частью этого или другого дерева> public function removeChild($node){> if($child == $node){Почитай про разницу == и === для объектов. == не ищет тот же самый объект, а лишь похожий на него.> public function setChildNodes($newNodes){Не выставляются корректные значения parent для старых и новых детей> public function isDescendant($node){> if($node->findDescendant($this->nodeName)){Ты опираешься на предположение что у узлов есть имена и они уникальны. Это не так. Идентичностью объекта является сам объект.> public function getNextSibling(){> $parent = $this->parentNode;А если там null? > for($i = 0; $i<count($parent->getChildNodes()); $i++){> if($n===$i){> $newArray[] = $this;Сложновато.А нельзя ли использовать array_splice? Аналогично, в удалении можно использовать array_search.> public function moveNode($parent){> $this->parentNode->removeChild($this->nodeName);А если parentNode = NULL? > public function displayAsCatalog(){Это не должно быть в классе дерева. Дерево лишь хранит информацию, а не выводит.
>>671059>Не выставляются корректные значения parent для старых и новых детейНе понял. Свойства у детей не меняются, они только меняют свой порядок в массиве.>Сложновато.А нельзя ли использовать array_splice? Хотел сначала так сделать, но потом перестал понимать что вообще происходит и переписал без него. В пхп не хватает джаваскриптовского сплайса, чтобы просто засунуть нужный элемент в середину массива.
>>671079Функция setChildNodes позволяет ведь в нее любые объекты передать, не обязательно детей того же родителя. И она публичная, а из названия следует что она позволяет заменить всех детей на узлы из переданного массива.> Хотел сначала так сделать, но потом перестал понимать что вообще происходит и переписал без него. В пхп не хватает джаваскриптовского сплайса, чтобы просто засунуть нужный элемент в середину массива.Вообще-то есть. Надо разобраться в этой функции, почитай мануал.
какой же благородный дон станет писать на досуге на Scala или Clojure? Ведь всякие Scala, Clojure, F#, OCaml и прочие эрзацы нормальных языков програмирования нужны благородным донам только для того, чтобы использовать их работе, где им приходится считаться с мещанскими вкусами остальных работяг-програмистов. поэтому на досуге благородный дон будет пописывать на Хаскелле, Агде или Эпиграмме, и почитывать алгебраическую топологию или теорию категорий. А на Scala и Clojure на досуге пишут только некоторые представители люмпен-пролетариата, котрые подсмотрели это занятие за благородными донами на работе, и думают, что ритуальное копирование поведения благородного класса делает их самих благороднее.
Решая задачки из ОП-поста, можно придти к мысли, что mysql с её слоупочными table locks и transactional safety и с её возможностью масштабирования только при помощи анальных расширителей не очень-то, собственно, и нужна в большинстве задач.
Когда делал задачку про генерируемый стишок, не смог придумать ничего, кроме как этого нагромождения лишнего кода. Но я чувствую, что тут можно проще и быстрее все сделать.http://ideone.com/Nt2kce
self this parentЧем они отличаются и когда что применяется?
>>671135Можно использовать одну переменную, а не 8.
>>671153Ага, переменные можно вообще не инициализировать, а объявлять непосредственно по ходу кода, но за такую хуйню тебе твои коллеги голову оторвут.
>>671135Копипаста много.И должно быть так:> слово1 слово2 слово3> слово1 слово2 слово3> Я слово4 слово5А не так, как у тебя - под каждое слово своя переменная..Чтобы добиться верного решения, можно пропустить всё через цикл.Первые два раза выводится строка "слово1 слово2 слово3", а во время третьего прохождения цикла выводится строка "Я слово4 слово5" и цикл обрывается.Цикл с $i, делает три круга. В первом и втором круге изменяются randomText1, $randomText2, $randomText3 и выводится echo "$randomText1 $randomText2 $randomText3\n";. А в третьем круге выводится echo "Я $randomText4 $randomText5.\n"; (а изменяться они могли и раньше, допустим).
>>671151$this указывает на текущий объект, а self на текущий класс.
>>670974>Их и не надо писать. Их пишут только неграмотные авторы не понимающие как работают исключения. Исключения автоматически сами вылетают наверх. Они как раз и придуманы чтобы не надо было результат каждой функции проверять на ошибку.У ОПа приведены две ссылки на изучение PDO - официальный мануал и статья на хабре. В обоих сказано, что необходимо писать всегда трай-кеч.
Что-то вдруг стало жалко времени, потраченного на выполнение заданий на HTML и CSS.Почти две недели постепенно делаю задачи ОПа, осталось две штуки, а ещё вот отсюда: https://dash.generalassemb.ly - сделал три больших урока (все эти шаблоны и робота на CSS+jQuery, который чому-то не заработал).Так-то интересно, вникаю, но как-то жалко времени именно на это, чувствую, что не так это всё важно лично для меня.Скорее бы уже к ООП перейти, шаловливые ручонки трясутся и так и чешутся.
>>671096http://ideone.com/8lr92l теперь нормально?
Посмотрите, вот я запилил задачку йода-спик.https://ideone.com/qTl9u2ОП хотел, чтобы я запилил функцию, которая будет висеть в коде отдельно. Я понимаю, что в каком-то более серьезном коде нужно будет такие часто используемые функции выводить в одну отдельную, но в такой чисто академической задачке не считается ли моветоном мой метод решения? Или все же нужно именно с пеленок себя приучать к такому стилю?
>>671341Имею ввиду функцию, которая делает первую букву большой, заглавной.
Я вот не пойму, в materialized path чтобы добавить запись в таблицу, мне придется делать еще один запрос просто для того, чтобы узнать номер пути последней записи? Я ведь не могу использовать авто инкремент для строки.
>в этом задании нельзя использовать свойство overflow и positionДа едрить же твою мать...........
>>671351display: inline-block - сразу нахожу ответ, стоит только гряяяязно выругаться.
>>671348>materialized pathСколько времени ты потратил, что перенести огромную смердящую кучу наваленных друг на друга небольших пакетиков с говном из mysql на mongodb?
Анон, я может что - то пропустил, но зачем эти скобки
>>671364Ccылка на переменную (как и сама переменная) не читается в двойных кавычках. Чтобы ее прочитал эхо, переменную нужно взять в фигурные скобки.
>>671369
>>671375Ой, что-то я попутал. Естественно, в одинарных кавычках не читаются переменные. Просто некоторые люди любят писать в одинарных, и для этого придумали фигурные скобки в эхе.
>>671364Здесь они не обязательны.Вот здесь есть про разные варианты подстановки переменных в строки:http://php.net/manual/ru/language.types.string.php#language.types.string.parsing
>>671387>>671388Понял, спасибо
Аноны, серьезный вопрос. Как думаете, в пыху когда-нибудь завезут поддержку юникода? Так, примерно, можете почувствовать?
>>671387Нет. В одинарных не происходит подстановки переменных (и escape-последовательности выводятся как есть)php > $a = "test";php > echo '$a';$aphp > echo '{$a}';{$a}
>>671405Ну тогда я понятия не имею.
Такой вопрос по Mysql (список студентов). У меня есть уникальное поле (unique) email. Когда студент редактирует свои существующие уже в базе данные(имя, фамилия, номер группы, баллы etc), я через оператор UPDATE пытаюсь их занести в базу данных вместо старой записи, но если он не редактирует свой емэйл, а только имя, фамилию, например - ничего не происходит, потому что данный емэйл существует, я так понял. Что делать?
>>669753Ребятки, бамп.
>>671569Тебе вроде бы уже ответили, нет? Десктоп на пыхе писать - долбоебизм, имхо.
>>671573Может он других не знает, а написать что-то очень хочется.
>>671579Если тебе что-то очень хочется написать, то учи что-нибудь другое. У тебя времени нет что-то новое учить? Или ты просто неосилятор?
>>671573>Десктоп на пыхе писать - долбоебизмА почему, знаешь?
>>671685Потому что нет интерпретатора.
>>671686Чому не запилят? Такой распространённый язык - и нет интерпретатора.
>>671431Тебе же сказали в прошлом треде - вбей несколько известных значений и интерполируй линией.
>>671736Путаешь меня с другим аноном. Не я тут один решаю список студентов. Можешь подробней объяснить?
>>671881Алсо я конечно могу покопаться в том треде, но боюсь заспойлерю себе многие моменты из правильного решения.
>>671431При проверке надо исключать редактируемого студента из числа записей по которым идет поиск.
>>671431> например - ничего не происходит, потому что данный емэйл существует, я так понял. У тебя не выводятся причины ошибок? Тогда тебе надо разобраться с этим.
Анончик выручай, решил, что пришло время изучить YII2 (до этого вообще не имел дело с подобными фреймворками) Читаю книгу Разработка веб-приложений в Yii 2 Марка Сафронова. Не понимаю почему там предлагают вместо создания приложений первым делом идет тестирование. В общем нужен совет. С чего начать. Книгу-то добью, но вкрадывается сомнение что пойму не многое
Добрый день, может не совсем по теме треда но всё же, я знаю тут есть шарящие люди: есть 3 поля с автокомплитом, суть в том, что при автокомплите мне запрос возвращает помимо лейбла (текста который выводится в поле после выбора) ещё и уникальный код этого лейбла, который я использую в инпуте с автокомплитом который под ним. Так вот, насколько я понял отключить браузерный автокомплит уже нельзя, это делается только в настройках браузера и повлиять я на него не могу: поверх моего автокомплита вылезает автокомплит юзера с его вариантами, так вот соответственно если юзер не выбрал из моих вариантов, а выбрал свой - айдшишник лейбла соответственно не появился и в автокомплите снизу я уже его использовать не могу то же самое случается и когда юзвер вводит весь текст города руками и соответственно при поиске улицы я уже не могу использовать айдишник города, а только текст. Как выходить из такой ситуации и есть ли какой то алгоритм построений автокомплитов, или если кто-то делал решения такого - поделитесь опытом. Алсо, извините за неровный почек и скудный слог.
>>672137https://www.youtube.com/watch?v=R-yQux1S63wВроде даже новичкам понятно.Фоном послушай, специально не трать время.Для начала должно быть нормально.
>>672143Отключить можно - гугли атрибут autocomplete. А что если юзер не будет ничего выбирать, а руками введет вариант? Ты бы мог просто использовать не кривую самоделку, а специально написанный виджет вроде chosen или select2. Если
>>672143Не дописал. То что тебе нужно - не инпут с автокомплитом (как у тебя), а селект с фильтром. Выкинь свою кривую поделку и прикрути нормальный виджет.
>>672183Спасибо, я предложил заказчку перепилить всё в селекты с фильтрацией но сказали что и так норм и нет объективных причин якобы, хотя я вижу что селект бы решил объективно все частные моменты для которых я изобретал и ещё буду изобретать велосипеды.
>>672314как костыль можно попробовать сделать дополнительные проверки вроде того, что если юзер ввел текст и покинул инпут не выбрав вариант то искать этот текст в имеющемся списке - но это может работать не очень надежно. Ну и тогда надо сделать индикацию, того что город успешно выбран или что такого города в базе нет.
>>672314Главная проблема которая у тебя сейчас - как я понимаю, отствие обратной связи, то есть пользователь не видит скрытое поле с id, и не понимает реальное состояние программы - какой город там выбран. И то что написанный в инпуте текст может отличаться от выбранного города в скрытом поле.
>>672322>>672319Главная проблема в том, что события типа отображение двух других инпутов с автокомплитом которые скрыты по умолчанию, привязаны к автокомплиту: при селекте показывает следующее окно, записывает в сессию выбор и тл, просто тупой юзвер может ввести руками до конца и сидеть тупить, или ввести с ошибками - если не будет лень допишу потом валидацию поля при нажатии enter/tab и отображении следующего поля,
>>672359> что события типа отображение двух других инпутов с автокомплитом которые скрыты по умолчанию, привязаны к автокомплиту: значит это была не лучшая идея> просто тупой юзвер может ввести руками до конца и сидеть тупитьЭто не пользователь тупой, а программист тупой> потом валидацию поля при нажатии enter/tab Там есть событие потери фокуса. Лучше изучить теорию прежде чем браться за практику.
Прочел все подсказки ОПа, но я вместо уроков геометрии ходил с почонами в комплюхтерный клуб за углом. Подскажите где я обосралсяна лекции https://ideone.com/2vEntq .
>>671348Бамп вопросу. Я вот-вот напишу самый уродливый велосипед в своей жизни, если не узнаю ответ.
>>671348>>672467Не можешь, да, придется делать. Хорошо бы еще и блокировки на нужные строки сделать чтобы невозможно было из 2 параллельных потоков создать запись с одним и тем же path
Анончики привет. Вкатывается мамкин прохрамист из шаражки , второкурсник. В этом семестре первый раз буду писать курсач. Все выбрали преподов, у которых полегче. А я выбрал которые дает задание приближенные к реалиям. Так вот, он спросил чего я хочу. И сказал, что хочу веб-приложение (т.к. копал в эту сторону и написал, что-то вроде задачи про студентов с ОП-поста), он сказал, что принеси покажи, что у тебя есть. Я принес, показал. И он сказал, что бы я сделал такое же, только на джаве... А я просто не знаю в какую сторону копать. Помоги, анончик.
bump
>>672559>543>bump
ОП нас покинул и больше не проверяет задачки.
>>672564У ОПа пинг иногда и 5 дней может быть.
>>672561пох, а друг тут бамплимит в косарь.
>>664784 (OP)slack, jabber, skype конфа изучающих есть какая нибудь?на канале пхп в 2chpr.slack.com тухло
>>672671Нет, мы нормальные люди а не пидорасы какие-нибудь.
>>664858В общем верно, но если ввести число больше чем число городов, вылетает с ошибкой Uncaught TypeError: Cannot read property 'country' of undefined>>665327 > $answers["$random"] Хотя ошибки тут нет, но писать кавычки тут не надо так как они лишние.>>665338> почему random лишь один раз рандомит и остаётся таким навсегда,Потому что ты сохраняешь в переменную значение, а не превращаешь ее в генератор случайных чисел. Чтобы получить новое случайное число надо вызвать функцию mt_rand() еще раз.> {$randomText1 = $word1[$randomWord1];Скобка тут лишняя. Она ничего не делает, значит ее тут не должно быть.Также, в массиве не обязательно писать все индексы, достаточно первого: 1 => ...,....,....А то у тебя если менять массивы надо руками индексы пересчитывать.Ну и да, код можно было бы чуть сократить, использовав цикл для первых 2 строк, так как они генерируются по одному и тому же принципу.>>665358> ведь нельзя было делать такие штуки> 1 => 'блабла',Делать-то можно, но наверно проще не указывть индексы, а использовать автоматически проставленные с нуля.
>>666028 > W1. https://ideone.com/r93YE8Верно> W2. https://ideone.com/8BIRn7Верно> W3. https://ideone.com/yqbFo1правильно> W4.1 https://ideone.com/Yikc7RНе учтен случай когда число очков одинаковое, а числа на кубиках разные, должна быть ничья: https://ideone.com/N9JmkW> W4.2 https://ideone.com/gipbSXТут все верно> W5.1 https://ideone.com/MwfLmzОтвет неправильный, должно получиться 61270. Код также запутанный, например код в ифе зачем-то повторяет код который написан перед ифом. > W5.2 https://ideone.com/cVgjxuОтвет вроде будет 49 лет, а не 50. Также, зачем там второй раз $y++? Также, зачем делать переменную $y если у нас уже есть счетчик в цикле $i? > if ($sum > 1000000) {А если ровно миллион? > W5.3 https://ideone.com/iFv71dВерно> W5.4 https://ideone.com/jMJLFMтут тоже верно> W5.5 https://ideone.com/kVp3j3Правильно> W5.6 https://ideone.com/QcFU0m> $random = mt_rand(1, count($letters)); > $randomText = $letters[$random];Ошибка, в массиве индексы начинаются с нуля, а не единицы> W5.7 https://ideone.com/Eh48abCСсылка не открывается>>666128 > if ($creditSum < $payout) {Это кстати можно заменить на min/maxА так, верно>>666473 Оп тоже виноват, забыл что в школе абсолютное значение числа называют "модуль".>>666479Он прав, возьмешь кредит и не сможешь понять сколько ты переплатишь.
>>666562Чтобы понять почему медленно работает, изучай индексы в базе данных, ну и вообще разберись как выполняется запрос. EXPLAIN сделай. Из твоего кода понять как выглядит SQL запрос невозможно. Вот ты дал кусок кода от какого-то велосипеда, а как понять какой запрос он генерирует? Ты думаешь тут телепаты сидят? > В sql не особо понимаю.Это значит что ты не квалифицирован для той работы которой занимаешься. Изучай SQL пока тебя не выгнали.И еще. Это не имеет отношения к сути вопроса, но вот этот вот код - это ад, и от него надо избавляться. Почитай что ли про Query Builder, посмотри фреймворки Юи 2 и Симфони 2. Увы, в нашей сфере многие не хотят учиться, а хотят сразу бежать что-то делать при том, что у них нет достаточноых знаний. Алсо, набор условий для поиска надо делать не массивом, а объектом-моделью.> Общий запрос: > $args['meta_query'][] = array(> 'relation' => 'OR',> array(> 'key' => 'building_area_min',>>666576 В случае с публичным полем оно доступно из любой точки кода. В случае с закрытым - только из одного класса. Меньше кода надо прочесть чтобы разобраться. Плюс, использование мтетодов нам поменять внутреннюю реализацию не меняя весь остальной код.Ты всегда должен стараться ставить минимальную область доступности переменной. Может в некоторых случаях тебе вообще поле не нужно, а хватит обычной локальной переменной.Ну и паста: ----Инкапсуляция. У этого слова есть разные определения, в том числе такие что ничего не понять, потому объясню простыми словами.Суть инкапсуляции в том, что класс скрывает (инкапслирует) в себе логику работы с данными и сами данные, а наружу выставляет методы. Пользователю этих методов не важно, как класс устроен внутри, как он хранит данные, ему достаточно вызвать нужный метод чтобы получить результат.Это упрощает понимание кода: тебе не надо читать и разбирать код класса, достаточно прочитать название метода (и может быть комментарий к нему). Также, это упрощает изменение кода: если какое-то свойство имеет уровень private то доступ к нему возможен только из того же класса и тебе не надо бегать по всему коду и смотреть что там с этим свойством делается, тебе достаточно просмотреть один файл с этим классом. Инкапсуляция это хорошо. Так как весь код, который занимается одной задачей, оказывается заключен внутри одного класса. Противоположный случай это когда код (или знание о его внутреннем устройстве) вылезает из класса и размазывается по всей программе.Если проводить аналогии, то можно представить кофе-машину. Ты нажимаешь кнопку (=вызываешь публичный метод) и получаешь кофе (=результат вызова этого метода), при этом ты не видишь что происходит внутри нее и тебе не надо в этом разбираться.----
>>666584 У тебя в коде тоже есть ошибки, смотри: > if (!$this->no_u_cant)> return $age;А если нельзя, то что вернется? В чем смысл функции которая иногда вернет правильный результат, а иногда неправильный? Это получился неудачный пример. Лучше было бы сделать пример, где у нас сначала было поле $age и метод getAge() { return $this->age; }, а после мы решили вместо хранения возраста сделать поле $birthday и вычислять возраст из текущей даты и дня рождения. Благодаря инкапсуляции нам было достаточно лишь один класс, не трогая весь остальной код. А что если бы инкапсуляции не было? То-то.> public function set_age($age) {> if ($age >= 18 && $age <= 99 && !$this->no_u_cant)> $this->age = $age;Это тоже плохой пример. У тебя на вход функции дается неправильное значение и ты ничего не делаешь, а молча его игнорируешь. Отлично, а как программист узнает о том что он сделал ошибку? Если функции дают неправильные параметры, надо не молчать а выбрасывать исключение, иначе ошибку придется искать намного дольше.>>666619 Магических методов лучше избегать. Они для всяких фреймворков и библиотек, а в обычном коде их использовать не надо. Явное лучше неявного - с магическими методами код разбирать гораздо дольше.>>666625 Вряд ли бы я стал так специально делать. Может опечатался.>>666655Неудачный пример кода. strip_tags зачем-то внутри модели (зачем он вообще нужен? почему я не могу в тексте новости угловые скобки использовать?), какие-то сеттеры-геттеры. В твоем случае нужны нормальные сеттеры вместо switch. Вообще не логично, ставишь в новость один текст, а там оказывается другой. Отлично, долго придется искать почему так происходит.Я тут подумал и так и не смог вспомнить нормальные примеры с методами get/set. Может в каких-то очень абстрактных штуках, когда мы не знаем заранее какие поля у нас будут в объекте- ну например в базовом классе формы, от которого наследуются конкретные классы, мы можем сделать с помощью get доступными элементы формы: $form = new LoginForm;$form->login->setValue('Ivan');....И то я не уверен что это такой уж хороший пример - что мешает просто нормальные поля тут использовать?То есть они нужны только для создания абстракций, когда мы заранее не знаем список полей. В обычном коде они почти никогда не нужны.
>>666733 Неправда. >>666744Попросил бы у нас задачи. Алгоритмы и структуры данных надо изучать начиная с простых вещей, а не браться сразу за сложное.>>666755 > W5.1 https://ideone.com/94782zХотя ответ верный, код дублируется. Одни и те же вещи написаны 2 раза. Почему бы не упростить его? > W5.2 https://ideone.com/MCoNPH> if ($sum > 1000000) {А если равно? Алсо можно перенести условие в шапку цикла.> W5.6 https://ideone.com/qhdVJ8> $random = mt_rand(1, $massiveCount);Неверно, нумерация с нуля начинается а не с единицы> W5.7 https://ideone.com/Eh48abХорошо сделано> W5.8 https://ideone.com/WNN6jpХотя программа работает верно, ее можно было бы упростиь за счет цикла, убрав повторы> W5.9 https://ideone.com/QNB4l9> $length--;Название неудачное. Если это длина строки, почему она уменьшается? Ну попробуй сам это прости: "уменьшить длину на один". Можно вообще убрать переменную и выислять позицию из значения $i> if ($palindrome = false) {Ты перепутал = и ==. У тебя всегда будет срабатывать else.>>666779Вот видишь какая у нас хорошая в стране система образования!
>>666771> function inclineWord($number) {> function declensionMillion($millions) {Это однотипная копипаста. Копипаста - зло. Надо сделать универсальную функцию склонения любых слов, работающую например так: echo declense(4, '%d кот', '%d кота', 'аж %d котов', 'ни одного кота')Универсальные функции почти всегда лучше и дают более чистый код. Так как мы разделяем сущности и отделяем выбор формы слова от списка самих слов.Более того, ты при копипасте забыл дописать проверку на 11-19 для тысяч и миллионов, я же говорю что копипаст зло и ведет к ошибкам.> if($number%100 <= 20){Это условие проще переписать как "если число заканчивается на 11-19 то вернуть нужную форму слова"> if(isset($spelling[$number])){А стоит ли это выносить как особый случай? > fmod(floor($number/1000), 1000);Можно использовать знак процента для получения остатка> trim(preg_replace('/\s{2,}/u',Чтобы не мучаться с пробелами, лучше сделать массив в который складвать слова, а в конце объединить его в строку.>>666855Да, при условии что это utf-8 (то есть только с ней, а не с UTF-16 например).>>666860Ты никуда не сохранил результат функции trim. Она не меняет переданную ей переменную.
>>667001> \b(.)Короче будет написать \w> \)?А что за странное условие? Разве можно предложение с точкой на конце в скобки прятать? > echo preg_replace_callback('#((?:^|[.?!])\)?)\s*\b(.)#su', function ($matches) {Тут хватило бы preg_replace с $1 и $2>>667066Например решая задачи на регулярки из учебника в Оп посте, а потом еще дополнительных попросить.>>667045 Гугли что нового - там много интересного.>>667088 > что нельзя парсить html регулярками, но все так делают.> но все так делаютА если все с крыши прыгать будут - ты тоже прыгнешь? > И еще смеются над теми, у кого DOM-парсеры падают на невалидном html.Потому что надо использовать HTML-совместимый парсер а не XML. Потому что то что там матчится простым Xpath или CSS выражением, ты на регулярках вообще не реализуешь (ну или замучаешься реализовывать, я подзабыл теорию, могут ли регулярки распарсить HTML).>>667088> Модификатор u лишний. Здесь он не имеет значения.Он имеет значение и позволяет не бескопоиться о юникоде. Потому что другим программистам надо работать а не шарады в твоем коде решать. > Алсо, есть более элегантное решение> return in_array(pathinfo($file, PATHINFO_EXTENSION), array('jpg', 'png'));Согласен, так наверно даже лучше, но ради этой функции надо было лезть в мануал, чтобы вспомнить название константы. Алсо строка длинная, я бы разбил на 2 действия.
>>667128"боб" же вполне хорошее слово - этакий кирпичик, хранящий какие-то данные, моделька. AbstractFactoryBean = базовый класс для создания фабрик по произодству бобов. Если кто-то спотыкается на таких названиях, это значит что у них маловато знаний ООП и всяких там SOLID и паттернов. Отличный тест.>>667188 Погугли "самодокументируемый код". Это код который понятен даже без комментариев: хорошие имена функций и переменных, аккуратное оформление, никаких подвохов и неожиданных вещей вроде пропущенного флага u у регулярки.Cloud IDEПропиарю хороший проект еще раз: бесплатная IDE в браузере >>667010 - не требует установки, просто регистрируешься и получаешь уже настроенную систему с линуксом, PHP, Апачом, MySQL. Никаких SSH, все работает из коробки включая HTTPS. У меня вот тут есть ссылка - можете туда зайти, там уже настроен и развернут проект файлообменника >>667019>>667247Нет, ко мне никакого отношения, я просто зашел и удивлся до чего прогресс дошел.
>>672690Почему неправда? Ты же писал выше что без знания "теории" будут возникать проблемы, как у того анона с древовидными комментариями.
>>672697Знание алгоритмов и структур данных, хотя бы минимальное - полезно. Вузовская "математика" (линейный анализ и прочая ерунда) мало где нужна, разве что немного геометрии в 3D графике. Ну и может еще нахождение минимумов/максимумов, но это уже в машинном обучении наверно нужно.
>>672701Ну все равно я замечал что люди без знаний алгоритмов затрудняются решить задачи на собеседованиях, из-за этого им часто не перезванивают.
>>672705Смотря какие задачи.
Друзья, кто может пояснить за разделение php и html, если проект в силу того, что он совсем небольшой, не требует никаких шаблонизаторов. Я просто тот еще говнокодер и делаю так — есть один .php файл с классом, в котором описаны все методы, и в этих методах есть вывод по типу echo "код html", и есть index.php, где каркас html, всякие условия/проверки на php и вызов этих самых методов. Но мне стыдно за свой код, потому что кажется, что так он получается слишком грязным и непонятным. Как делать правильно и чистенько?
>>672854Делай по шаблону на каждую страницу. Потом в контроллере эти шаблоны подключай через include.>index.php$a = 1;$b = 2;include("index.html");>index.htmla is: <?= $a ?><br> <!-- Выведет 1 -->b is: <?= $b ?><br> <!-- Выведет 2 -->Если не хочешь строить таких велосипедов в приложениях покрупнее, посмотри на шаблонизатор Twig, он небольшой, бесплатный и позволяет удобно создавать простые и не очень простые шаблоны.
>>672854http://www.phpinfo.su/articles/practice/shablony_v_php.html
>>672854Также прочти https://github.com/codedokode/pasta/blob/master/security/xss.md
>>672865>>672873>>672876Спасибо, почитаю!
http://ideone.com/w464xH
>>672943Неправильно считает, должно быть 61270 с копейками.
>>672943Конкретно в этом твоём варианте вот что неверно: когда $creditBalance у тебя становится меньше $monthlyPayment, то у тебя следует вот это выражение: $creditBalance = ( $creditBalance х $percent ) + $servicePayment - $monthlyPayment;. И в какой-то момент это уходит в минус, от чего дальше всё идёт неверно.Подсказка: попробуй ввести отдельную переменную для подсчёта $creditBalance = ( $creditBalance х $percent ) + $servicePayment, ведь именно когда этот момент становится меньше $monthlyPayment, нам и надо просто его выплатить и приплюсовать к $paymentTotal.
Собрал инфу с hh по кол-ву вакансий и указанных зп. Почему в вакансиях PHP зп указана в 58%, а в других вакансиях строго < 50% ? Что бы это могло значить? Может быть рынок перенасыщен спецами PHP? Или наоборот?Алсо кресты sosnooley.Ruby Найдено 190 вакансийУказана 72от 80 000 руб. 60от 115 000 руб. 34от 155 000 руб. 12от 195 000 руб. 5от 230 000 руб. 4Php Найдено 1 314 вакансийУказана 762от 45 000 руб. 641от 75 000 руб. 418от 105 000 руб. 192от 140 000 руб. 96от 170 000 руб. 54Java Найдено 1 393 вакансииУказана 353от 65 000 руб. 303от 130 000 руб. 145от 195 000 руб. 70от 260 000 руб. 39от 325 000 руб. 19Javascript Найдено 497 вакансийУказана 206от 55 000 руб. 181от 100 000 руб. 119от 145 000 руб. 34от 185 000 руб. 17от 230 000 руб. 12Python Найдено 362 вакансииУказана 109от 85 000 руб. 76от 140 000 руб. 37от 190 000 руб. 27от 245 000 руб. 21от 300 000 руб. 20C# Найдено 684 вакансииУказана 279от 30 000 руб. 277от 65 000 руб. 218от 95 000 руб. 128от 130 000 руб. 58от 160 000 руб. 21.net Найдена 1 021 вакансияУказана 388от 45 000 руб. 361от 80 000 руб. 306от 120 000 руб. 206от 155 000 руб. 53от 195 000 руб. 18c++ Найдено 729 вакансийУказана 331от 70 000 руб. 269от 140 000 руб. 151от 205 000 руб. 113от 270 000 руб. 27от 340 000 руб. 25
>>673109>Может быть рынок перенасыщен спецами PHP?Спецов PHP как раз не хватает, как и в других областях. На PHP много джуниоров или просто девелоперов-макак, из-за того что пхп как продукт доступнее и порог вхождения в него ниже чем в джаву или кресты.
>>673113Чем отличается "спец" от "макаки"? Есть ли жесткие критерии? А что если таких критериев просто не существует, как и прослойки спецов среди php-программистов, а работодатели сами не знают чего хотят?
>>673109Чому Пистон столь ценен?Он же вроде как проще РНР?Обычно его советуют новичкам.
>>673109А ты еще посмотри для интереса, что именно за вакансии на Питон (к примеру) с макс. з/пhttp://hh.ru/search/vacancy?text=python&clusters=true&enable_snippets=true&salary=310000&only_with_salary=true&from=cluster_compensationhttp://hh.ru/vacancy/16016299?query=python> Big Data Engineer/ Python&Hadoop (Tokyo, Japan)> Experience with at least three of the following technologies: Hadoop, Hive, Pig, Zookeeper, Cassandra, Spark, Kafka> Good understanding of software and hardware performance as well as familiarity with the Linux kernel> Java programming experienceЭто не совсем Питон вакансияhttp://hh.ru/vacancy/15969455?query=python> от 1 500 до 5 000 USD> In an interesting project (New application for an active lifestyle) required Engineering Manager.> Ruby-on-rails is the most important skill,> Exceptional coding skills in two or more general purpose programming languages including but not limited to: Java, C/C++, C#, Objective C, Python, JavaScript, .Net skills in Go, Swift - interest and ability to learn other coding languages as neededЭто не Питон вакансия. Причем диапазон з/п подозрительно широкий.http://hh.ru/vacancy/16162999?query=python> Java&Python Software Engineer> Strong mathematical background;> Expertise in Machine Learning;> Advanced knowledge of Java.Это не совсем ПИтон вакансияДалее> C++ & Scala Software Engineer (Apache Mesos project)> от 250 000 руб. > C/C++ developer> 2 000-5 000 USD(вакансия продублирована 14 раз)Ну и так далее. По моему данные изначально неправильные, там просто попадаются все вакансии где упомянуто слово, а не вгде язык является основным. Ну и ты ленив, даже не глянул результаты.> Алсо кресты sosnooley.Только в списке высокооплачиваемых вакансий на Питоне 14 вакансий Си++ программиста.И что с рынком случилось? До кризиса вроде з/п в 300к для программистов не было даже у аутсорсеров.
>>673123Ты описания вакансий не пробовал читать? >>673190Потому что данные собраны неправильно - высокооплачиваемые вакансии найднные по слову Питон - это не Питон разработчики. Он там как вспомогательный язык.
>>673196>KafkaХоть что-то знакомое.
<script>if('673179' != '673179') {if($.cookie('makabadmin')) {$('a[name=673179]').html('673179')} }</script>lolАлсо, попалось интересное задание на апворке, не хотите совместно сделать? Короче делаются скриншоты с гугл мапс, а потом сортиурются по категориям.
>>673220А что в нем интересного? Слили на апворк то с чем сами возиться не хотят.
Доделываю макет на HTML+CSS из задач ОПа.Согласен с той заменой последовательности уроков, когда ОП вперёд пустил ООП, а HTML+CSS поместил после.Потому что ужасно жалко потраченного на это всё времени, что ты будешь делать. Понимаю, что потом что-то в шаблонах править будет удобнее, потому что понимание многого пришло. При этом многое, чувствую, там не вполне верно решил.Макет отличный, мне нравится, потом сам смогу сверстать подобную landing page для своего проекта, это неплохо. Но сколь далече уже продвинулись те, кто не стал решать бонусные задачи, кто не стал решать вот эти задачи на HTML+CSS.Жалко времени, душа требует ООП уже, БД и фреймворков.Постараюсь держать вас в курсе.
аноны, дошел до сессий и кук, наткнулся на такое "javasсript:document.write(document.сооkiе);" что после ввода в адресную строку должно показать все куки с сайта. В силу своей рукожопости я несколько раз загуглил это ибо обработчик джаваскрипта не хотел подхватывать код после копипасты, потом я стер "javascript" перед "javasсript:document.write(document.сооkiе);" и написал обратно, тогда я увидел куки с вк, но они отличались от описания кук на самом сайте вк , но после проведения подобной процедуры на другой странице вк я получаю "undefined". Что произошло?
>>673263зашел в консоль ctrl+shift+j, там выполнил код. Не понятно, почему в первый раз у меня из строки выполнилось, а потом перестало. Алсо, котаны, кто по специалисту учил джаваскрипт. Саму контору эту тут не очень любят, но мб кто-нибудь даст рецензию на их работу? Сам курс пхп у них просматриваю, ставя скорость видео х1,5, а то это же пиздец 4 часа аутировать и пытаться все запомнить
Робин Никсон - Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд - 2015Норм книга для новичка?Хочу перейти к мускулю как-нибудь плавно.
>>673287Не очень. Старьё.
>>673286Какой смысл в таких курсах без обратной связи?Сужу по учебнику ОПа и новичкам, который на 2-3 элементарной задаче начинают спотыкаться.
>>673294>2015 год>старьёВ плане подхода, методов и прочего?
>>673296Не знаю, как тебе, но там есть неплохие истории от самого автора. Вроде как первых байтов в кодировки УТФ-8, которые только в пхп не работаю и прочих историй. ты взлольнешь, но мне страшно вообще что-то писать, а простота и юмор автора расслабляют и страх уходит
>>673301>мне страшно вообще что-то писатьТы - это я.Мне иногда не по себе от того, что я уже достаточно далеко продвинулся, а иногда смотрю на чужие решения предыдущих задач - и не могу ничего понять. Потом разбираюсь, конечно, когда всматриваюсь или изменяю код.Надеюсь, с опытом пройдёт, когда багаж знаний пополнится. Как с задачами про Айфон, Айпад и многими другими: сначала рвал и метал, а сейчас не глядя могу записать решение.
Язык Вакансии Резюме Вак/Рез Ruby 190 6638 2,86 Php 1314 149182 0,88Java 1393 75690 1,84Javascript 497 95235 0,52Front-end 1654 12301 13,44Python 362 24 074 1,50 //анон сказал, что данные не корректыC# 684 62 147 1,10 .net 1 021 128 502 0,79c++ 729 124 259 0,58678028 резюме - 7844 вакансий = 670184 причин бросить айти
>>673304Это патологическое неосиляторство, которое наблюдается у 95%двощеров в той или иной степени. В сфере погромистов есть отдельное название ХЕЛЛОУВОРЛДЩИКИ Вкатился в ваш ламповый чат под ником NEOSEELYATOR228 Странно, почему тут не неймфажат. Наверняка меня обоссут мамкины ононимы
>>673310Пофиксил678028 резюме - 7844 вакансий = 670184 причин бросить айти
>>673314>считал ручками в блокноте и на калькуляторе>причины бросать айти
Пхпач-помогач. У меня в таблице хранятся значения, они могут быть с двойными и одинарными кавычками, при этом мне нужно сделать валидацию - идет запрос есть ли такая запись в базе: в тексте запроса у меня после real_escape_string - "почтомат "приватбанк" " и соответственно не находит, как можно решить проблему?
>>673329вставляет вместо двойных кавычек " ;
>>673337сделал htmlspecialchars_decode, результат есть, но я думаю это неправильно
Посоны, подскажите.Почему не меняется переменная currentPosition?Как её вывести из области видимости функции? Перепробовал через return и так далее, но почему-то не прокатило.Читал в учебнике, что должно работать так:a = 1function go() { a = 6}go()alert(a) // => 6но бля, почему не работает? http://ideone.com/6S1BI7
Гайс, вк что-то поменял? Вот мои кукис, вот то(4-я пикча), что по мнению вк должно у меня быть. ЧЯДНТ?
Анон, проверь пожалуйста.W1 - http://ideone.com/PaOLUGW2 - http://ideone.com/sAZs0AW3 - http://ideone.com/7FUXeBW4.1 - http://ideone.com/xN81k7W4.2 - http://ideone.com/hDB9f4W5.2 - http://ideone.com/b46oYSW5.1 - http://ideone.com/isOeeQ
>>673317ты меня раскусил
>>673355Используй всё-таки возврат значения:function getCurrentPosition() {var currentPosition;// тут твой кодreturn currentPosition;}var currentPosition = getCurrentPosition();console.log(currentPosition);Так не работает?
>>673384Всё отлично, но W5.1 решена неправильно:>if ($creditBalance < 0)Такого никогда не должно быть в правильном решении, чтобы $creditBalance был меньше нуля. Ведь так ты допускаешь, что в какой-то момент банк становится должен Анончику, чего быть не должно.>$creditBalance = 0;А вот тут надо просто отнимать от $creditBalance оставшуюся выплату. Имей в виду, что $creditBalance к этому моменту уже должен быть помножен на процент и с прибавленной комиссией за кредит.
Пыханы, есть вопрос.Сам буду студентом 4 курса, предлагает мне местная контора перекатиться в РНР, хотя я сам занимаюсь явой.Стоит ли бежать учить этот ваш РНР, при условии что живу в мухосранске 100к, и при этом везде нужны пхпшники, а заводить трактор в ДС я поку не буду?
>>673402>W5.1 решена неправильноГотов с тобой поспорить.>Такого никогда не должно быть в правильном решенииТы неправ. И смотри почему: школьник пришёл в последний месяц отдавать 5000р. Он их отдал банку. Банк смотрит на купюру и даёт школьнику сдачу.
>>673407Это самая изощрённая отмазка, чтобы не переделывать задачу, из тех, что бывали! Браво!
>>673450Зачем переделывать то, что и так правильно?
>>673456То, что правильно переделывать не надо. У тебя неправильно.
>>673458Предоставь пример, когда программа работает неправильно.
>>670333Так ведь там есть условие, если оставшаяся сумма кредита следующего месяца меньше 5000. Прости, если я чего-то не понимаю и за задержку с ответом.
>>673467У тебя $creditBalance в последнем действии механически приводится к нулю, что тоже можно посчитать дурным тоном. Вот ОП приедет, он тебе всё скажет. Хотя к этому времени ты уже уйдёшь дальше и не захочешь возвращаться к этой задаче.Так или иначе, ты сейчас заложил мину в своё обучение программированию, которая однажды сработает.
>>673488То есть предоставить контрпример ты не можешь.
>>673491Что сделать, я недопонял?Изменить твой код, чтобы выдало ошибку?
Ты с двумя людьми говоришь, кстати.
>>673504С одним. Я по ошибке сказал, что в коде ошибка. На самом деле ничего такого я там не увидел. Я подумал там действительно в минус уходит долг и так и остаётся до следующего месяца: распространенная ошибка для этой задачи, но тут такого нет.
Посоны, нужен учебник по PHP. Чтоб с задачами блять в конце каждой главы например. Чтоб я не просто прочел, гы прикольно, а делал согласно навыкам, которые я получил в процессе чтения конкретной главы.
>>673517http://archive-ipq-co.narod.ru/ не благодари
>>673500>Что сделать, я недопонял?Предоставить начальные условия, при которых моя программа неправильно рассчитывает то, что она должна рассчитывать.Из постановки задачи есть ограничения на начальные условия:$creditBalance > 0$monthlyPayment > 0$rate > 1$servicePayment >= 0$payed total = 0К тому же, исходя из постановки задачи(небольшой кредит с быстрой выплатой), эти переменные точно не выйдут из допустимого для данного типа переменных диапазона значений.Если на перечисленных выше начальных условиях программа выдаёт правильный ответ - она работает правильно.А теперь предоставь такие начальные условия, при которых она работает неправильно.>Так или иначе, ты сейчас заложил мину в своё обучение программированию, которая однажды сработает.Не понимаю, о какой мине идёт речь. Выражайся яснее, пожалуйста.
>>673519дай бог здоровья
>>673520>$payed total$payedTotalселффикс
Анон, я чего-то, кажется, напердолил, кажется, сильно. Создал три папки, в каждой сайт. В одной из папок вместе с сайтом лежит его .htaccess, который рулит всякой хуйней.Для каждого сайта запись в hosts и виртуалхост в хттпд.конф.Пытаюсь зайти на один сайт - заходит нормально (на него же заходит при попытке зайти просто на 127.0.0.1, а не по имени)Пытаюсь зайти на другие - хтассес этого первого сайта перехватывает запросы и отправляет меня нахуй.Удаляю этот файл хтассесс, пытаюсь зайти на эти вот другие сайты - нот фаунд (даже при попытке открыть конкретную html страницу, хотя она-то уж точно "фаунд"). Все это пытаюсь пердолить на сборочке вертриго сервер. До этого говно вертелось на ксампе, там не было никаких хтассесов и вирт хостов и все работало (например, 127.0.0.1/макаба - заходило на www/макаба/индекс.пхп). Что я сделал не так, где перепердолил, как исправить и можно ли, на будущее, как-то попроще? А то я уже заебался - удалять хтассесы при переходе с реального сервера на локалхост, иметь две разные версии хтассесов, записывать каждый новый проект в хостс и httpd.conf... Можно все это попроще как-то? Инбифо, написать скрипт Сорян за сумбурность, уже руки трясутся.
>>673542Ах да, при всем при этом, например, 127.0.0.1/phpmyadmin вполне себе работает, а вот сайты - нихуя. И раз уж я такой мудак, посоветуй, мб, годную книжку (рашн) по админству, ну, все эти хттпд.конфы, хтассесы, май.ини, настройки-настроечки...
>>673520Судя по всему, ты что-то изучал и раньше.Но если ты сейчас взялся за изучение РНР, то, скорее всего, прежде не всё у тебя было гладко в программировании. Либо в нём ты не продвинулся далеко, раз сейчас начал с лёгких задач из учебника ОПа.Ничего личного, просто обозначаю своё вИдение ситуации.Ты не задавался вопросом, почему именно всё не было гладко?>Если на перечисленных выше начальных условиях программа выдаёт правильный ответ - она работает правильно.Вот именно, что уверенность в этом закладывает мины в твоё обучение программированию. Представь, что реальная программа по расчёту кредита в реальном банке сделает допущение, что банк в какой-то момент оказывается должен что-то заёмщику, - думаешь, кто-то на такое согласится?У нас есть чёткая формулировка задачи: прибавлять к сумме кредита процент и комиссию, отнимать месячную выплату и прибавлять результат к общим выплатам. Когда сумма кредита с прибавленными процентами и комиссией становится меньше месячной выплаты - выплачиваем её и заканчиваем цикл выплат.Из недочётов в твоём решении:1. $creditBalance в последнем условии механически приводится к нулю, желательно по-иному всё сделать. И без излишнего копирования.2. Не выводится в конце "С меня хватит!". Таково было условие.3. Нельзя будет в любой момент работы скрипта утверждать, что все переменные можно с одинаковым успехом вывести в echo. Например, попробуй сделать вывод реального $creditBalance до прибавления процентов и комиссии - не будет верного решения в этой ситуации, в какой-то момент будет отрицательное число в суме кредита, это нонсенс.Можно жутким говнокодом решить эту задачу, с кучей копирования и прочим - и программа тоже работала бы правильно. Только не к такому надо стремиться.>>673506Ну ты и есть второй.Долг уходит в минус, а потом отрицательное число умножается на положительное число, а к этому прибавляется ещё одно положительное число (умножается на 1.03 с прибавлением процентов к долгу и затем прибавляется 1000 комиссии). Это неправильный подход.
>>673600* в сумме кредита
>>673600>потом отрицательное число умножается на положительное число, а к этому прибавляется ещё одно положительное число (умножается на 1.03 с прибавлением процентов к долгу и затем прибавляется 1000 комиссии).Нет, у тебя там другое.У тебя в какой-то момент Анон платит больше, чем должен, банк становится должен Анону:$payedTotal += $monthlyPayment; Если вывести в этом месте $payedTotal, то там будет тысяч 65.А далее уже отрицательный $creditBalance отнимается от этих 65 заплаченных Аноном тысяч, получается верная цифра.Вот это всё лишнее и вообще представляет собой нонсенс. Неверный подход.
Новая партия.W5.3 - http://ideone.com/jWpMfHW5.4 - https://ideone.com/hZNNWfW5.5 - https://ideone.com/kwBJKl НИКОГДА>>673600>Судя по всему, ты что-то изучал и раньше.Математику и физику изучал и продолжаю изучать. Захотелось научиться программировать в вебе. Всё-таки в России не самые лучшие времена, а в случае чего хочу, чтобы на хлеб с маслом хватало. Уезжать не хочу.>в какой-то моментОтрицательный баланс там виртуальный и нужен для удобства расчёта и чтения кода.>Представь, что реальная программа по расчёту кредита в реальном банке сделает допущение, что банк в какой-то момент оказывается должен что-то заёмщику, - думаешь, кто-то на такое согласится?Про black box ни разу не слышал?>У нас есть чёткая формулировка задачи: прибавлять к сумме кредита процент и комиссию, отнимать месячную выплату и прибавлять результат к общим выплатам. Когда сумма кредита с прибавленными процентами и комиссией становится меньше месячной выплаты - выплачиваем её и заканчиваем цикл выплат.Ничто не мешает смоделировать этот процесс так, как я сделал выше. На данных начальных условиях(которые гарантируются условиями задачи) модель соответствует действительности.>>673616>Вот это всё лишнее и вообще представляет собой нонсенс. Неверный подход.Ну охуеть теперь.
>>673633>Отрицательный баланс там виртуальный и нужен для удобства расчёта и чтения кода.Стремиться надо к такому, чтобы в любой момент можно было вывести правильное значение переменной, которое соответствует действительности - как минимум. Твой скрипт не позволит этого.>Про black box ни разу не слышал?Слышал, конечно, сам практикую.Но и довольно часто встречались фрилансеры с таким же, как у тебя, упорством в оправдании своего желания работать меньше, не переделывать детали в соответствии с элементарным ТЗ - и прочее. Всегда не особо приятные ощущения от такого.
>>673644>в любой моментУ меня момент времени - месяц. Внутри него никаких делений на нуль и подобного непотребства не происходит. Все вычисления корректны. На выходе из месяца все переменные содержат то, что и должны содержать.>с элементарным ТЗВ задании ни слова не сказано про то, какими должны быть переменные во время выполнения.>упорством в оправдании своего желания работать меньшеКраткость - сестра таланта.
Хочу попрактиковаться в написании плагинов для вордпресс, пока только повторяю чужие плагины, слегка их изменяя, хочу написать полностью свой, но не могу придумать, что он должен делать. Может кто подскажет?
>>673650Важно не только "что", но и "как".>В задании ни слова не сказано про то, какими должны быть переменные во время выполнения.ОП об этом говорил неоднократно просто так.Поскольку неправильное решение у многих сразу получается, а с правильным приходится сидеть дольше.>Краткость - сестра таланта.Тот самый случай, когда с точки зрения грамматики или культуры речи всё абсолютно правильно. А впечатление производит не самое приятное, согласен. Вот так и в твоём варианте той задачи: за вроде бы правильным решением скрывается нечто такое, чего допускать ни в коем случае нельзя.
>>673663Да там нет ничего неправильного, нету такой ситуации после которой функция вернет ложный результат.
>>673663> нечто такое, чего допускать ни в коем случае нельзя.Что конкретно? Мне уже надоело это хождение вокруг и около.>вроде бы правильным решениемДай определение правильного решения. Мы с тобой говорим на разных языках, походу.
>>673665>>673666Так надо стремиться к универсальности. Чтобы не было таких отмазок и условий: когда месяц закрывается, то переменная правильная, а когда он ещё не закрылся, то она становится неправильной. Несмотря на то, что конкретно в этом решении этого и не произойдёт.Стремиться-то надо к правильному пути, когда переменные в любой момент не противоречат логике и реальности.>Что конкретно? Мне уже надоело это хождение вокруг и около.Требования к себе не вполне верны в этой ситуации. Подобные решения не приветствуются, у задачи может быть несколько правильных решений без ухода в минус. И лучше попробовать именно их отыскать, чем тратить время.>Дай определение правильного решения.Ну вот, например:>прибавлять к сумме кредита процент и комиссию, отнимать месячную выплату и прибавлять результат к общим выплатам. Когда сумма кредита с прибавленными процентами и комиссией становится меньше месячной выплаты - выплачиваем её и заканчиваем цикл выплат.Это самой прямой и логичный алгоритм решения задачи.
*самый прямой
>>673678По твоему определению получается, что все решения, которые отличаюстя от твоего - неверные. Извини, но тут уж ты неправ.
>>673678Да ты поехавший какой-то. Вот тебе задача: написать функцию, которая переворачивает строку. Ты берешь аргумент-строку разбиваешь на массив символов, делаешь array_reverse и склеиваешь обратно в строку и возвращаешь. Задача решена. И тут я такой "НЕ УНИВИРСАЛЬНА, А ВОТ НА ЭТОЙ СТРОЧКЕ ПЕРЕМЕННАЯ СТАНОВИТСЯ МАССИВОМ А ДООЛЖНА БЫТЬ ВСЕГДА СТРОКОЙ ТУТ ОНА ПРАВИЛЬНАЯ А ЗДЕСЬ НИПРАВИЛЬНАЯ", хотя по факту нужно смотреть лишь результат функции, то, что она возвращает, а какие метаморфозы она претерпевает на пути к этому результату не так важно.
>>673685Вот этого двачую.
>>673681Чому? Все решения, в которых логика выплат сохраняется, - правильные. А когда в какой-то момент анон выплачивает банку ~65к, а потом банк ему возвращает около 4к, - не вполне правильные. Мне кажется это естественным.>>673685>Да ты поехавший какой-то.Yep, и уже довольно давно. >по факту нужно смотреть лишь результат функции, то, что она возвращает, а какие метаморфозы она претерпевает на пути к этому результату не так важно.Если логике не противоречит - всё нормально.Есть обязательные шаги, а есть такие, которые неверны либо не обязательны.Представь, что кассир или менеджер в банке ручками всё рассчитывает для Анона. Логика в этом случае обязательно будет нормальной, а не такой, при которой менеджер скажет или укажет что-то такое: "Вот тут проценты и коммиссия на каждый месяц и твои выплаты. А вот тут в последний месяц ты нам платишь свои прежние 5к рублей, банк становится должен тебе, а потом отдаёт тебе часть долга". Это-то и неверно.Послушаем, что скажет ОП через пару дней.
>>673697>Все решения, в которых логика выплат сохраняетсяСмоделируй мне большие(миллиарды) частицы из первых принципов. Ой, а ты не можешь.
>>673704>большие количества частицФикс.
>>673697Да этот поехавший про сдачу не слышал.
>>673704Хочу оставить свой отзыв о фрилансере под ником >>673704>>673704 обещал сделать работу в срок и по ТЗ, сдал всё довольно быстро, но результат, мягко говоря, не соответствовал ожиданиям.Что неприятно поразило: не хотел признавать свою неправоту, пытался оправдать свою работу, которая не выдерживает никакой критики.Работали по Безопасной сделке, в итоге по решению арбитража мне вернули сумму полностью.Но есть и положительные стороны у >>673704: берётся за работу с воодушевлением, делает всё достаточно быстро, код на выходе вполне аккуратный.В общем, если вам нужны какие-то несложные вещи типа натягивания шаблона на вротперс или поправить вёрстку, то >>673704 вполне подойдёт. Только перед началом работы убедитесь, что он понял важные пункты из ТЗ.Если же нужно чёткое следование логике и техническому заданию, то не советую вам связываться с ним. Потратите только зря деньги, нервы и силы, а в результате получите не то, на что рассчитывали.Работайте с ним только по Безопасной сделке на коротких сроках, если не найдёте других вариантов.Для себя я выводы сделал: работать с >>673704 больше не буду.Почти копипаст с одной биржи фриланса>>673715Тогда там надо предусмотреть такие переменные, а пока там такого нет.
>>673722
>>673722Я не твой работник, поехавший.
>>673722Мань, я не фрилансер, а ты не работодатель. Ты просто идёшь нахуй.
>>673724"Почти" там только номер поста, поставленный на место ника.>>673726Как так? А кому я только что оставил отрицательный отзыв?Ситуация узнаваемая, вполне.>>673728Бугурт приобретает отчётливые очертания.
>>673729>Как так? А кому я только что оставил отрицательный отзыв?Анониму, который учится программировать и не собирается делать вещи так, как хочешь ты, но так, как правильно. Не выдержав критики этого анонима, ты придумал какие-то отношения фрилансер-работодатель, коих между вами нет, для перехода в другую плоскость спора, где ты уже был прав.Но он не фрилансер. А ты не работодатель.
>>673734Да вы, батенька, ещё более поехавший, чем я, если всё это всерьёз.>не собирается делать вещи так, как хочешь ты, но так, как правильно.ОП рассудит, я гарантирую, подскажет, как правильнее.>Но он не фрилансер. А ты не работодатель.Просто знакомая ситуация, характерная для фриланса. Когда исполнитель находит кучу нелепых отмазок, чтобы просто от него отстали и приняли работу. Специально для подобных случаев есть БС и арбитраж.
>>669753Ребятки, двойной(!) бамп.
В моем городе ДС-2 главная плеяда программирования ИТМО устраивает различные курсы погроммистов, в которых изучают различные языки с упором на трудоустройство. Также есть курс html/css/js/php/sql в одном флаконе за три месяца или полгода по-моему, не помню. Хочу пойти после того, как решу задачки из ОП-поста, все правильно сделаю?
>>673769Для разнообразия можно.
W5.6 - http://ideone.com/NWkl7P
>>673791Шикарное решение, респект.
>>673793Это ещё не всё сделано, кстати.
>>673791Хорошая задумка с количеством слогов.
Ананасы, дайте подсказку тупому анонимусу, что делать дальше. Числа прописью:https://ideone.com/UMDGcw
>>673791http://ideone.com/sR4QhzНемного допиленная версия.Не впилил правило с маленькой っ, как-нибудь потом доделаю.
Можно как-то передавать между php файлами значения переменных по типу POST, не хуяря их в куках/сессии/адресной строке? Например, результат работы одного файла возвращается в другой.
Аночик выручай. Задали написать курсач. Веб приложение с использование МВС на джавке. Есть опыт такого рода только на пыхе. Я как понимаю надо копать в сторону сервелетов и jsp. Но инфы очень мало, посоветуйте литературу,пожалуйста.
>>673542Да, вот еще что: скажем, на http://сайт заходит (это пака www/сайт), а вот на http://localhost/сайт - нет. Или так и должно быть?
>>673862//main.php$a = include('kek.php');echo "Hello, {$a}!"; //output: Hello, Yoba!//kek.php/.../return 'Yoba';
>>673384>>673402По поводу решения задачи про кредит. Вот анон говорит что программа всегда выдает правильный результат. Но ведь мало чтобы программа давала правильный результат, надо чтобы еще ее легко было прочесть и понять как она работает. Потому что если код не понятен, то нужно больше времени чтобы в нем разобраться и проще сделать ошибку. Вот попробуем прочитать алгоритм, который заложен в коде: Каждый месяц пока долг больше нуля:- прибавить к долгу проценты и комиссию и вычесть 5000 (макс. ежемесячную выплату)- прибавить к общей сумме выплаченного 5000- если долг стал меньше нуля, то прибавить к общей сумме выплат остаток долга (?) и сделать долг равным нулюВот этот вот последний кусочек - он по моему не очень логичный. Причем в коде никаких пояснений, почему сделано так хитро и запутанно, нету. Непонятно - то ли автор тут закладывает какую-то логику, то ли он ошибся и что-то перепутал.Если бы код просто не переплачивал и не уходил ниже нуля, то алгоритм выглядел бы так: - прибавляем проценты и комиссию к остатку долга - если остаток маленький, выплачиваем сколько осталось и уходим- иначе платим 5000Кстати, если использовать min/max, то задача решается без использования if, решение получается простое и короткое.Это конечно простая задача и тут разобраться можно в любом случае. Но реальные задачи - они все намного сложнее и там запутаться в коде очень просто. Потому важно уметь писать код наиболее прямолинейно, пусть даже это учебная задача на 5 строк.Ну и собственно хотелось бы узнать у автора кода, а какие преимущества дает изменение алгоритма, когда мы сначала платим больше чем надо, а потом компенсируем уход долга в минус? И аноны, давайте обсуждать исключительно код и способ решения и не добавлять эмоций в спор, только аргументы почему один способ лучше или хуже. И уж тем более давайте не будем никого ни в чем обвинять. >>673681Конечно, такого нет, что есть какой-то стандартный ответ и надо написать код с точностью до запятой так же. Но с другой стороны, в данном случае для начала хочется понимать почему тут написано так, а не иначе. >>673685> Ты берешь аргумент-строку разбиваешь на массив символов, делаешь array_reverse и склеиваешь обратно в строку и возвращаешь. По моему ты перегибаешь палку. Я никогда не говорил что нельзя так решать, и были люди которые делали такие решения. Но если ты решил как-то все усложнить, ну к примеру, разбил слово на массив символов, пересортировал его хитрым образом и берешь каждый второй символ, то конечно возникает вопрос, а с какой это целью это сделано? >>673722Вот ты тоже перегибаешь палку. Один анон решает задачи, другой помогает найти ошибки, не надо пытаться тут искать виноватых. Даже если кто-то сделал ошибку в задаче (или сделал ошибку при проверке задачи), в этом нет ничего плохого. Давайте спокойно и без лишних эмоций приведем свои аргументы. Я в принципе настаивать на той или иной точке зрения не буду. Я привел свои аргументы по поводу решения, а возражать или нет, исправлять или нет, или это уже личное дело анона. Мы тут только даем советы, а воспользуются ими или нет, это уже не наше дело.
>>673715Если ты хочешь добавить в программу моделирование процесса выдачи сдачи (говоря по-умному), то хорошо бы пояснить, какие это преимущества добавит программе.>>673746Фриланс наверно не лучший ориентир. Там много профессионализма присутствует с обоих сторон. Не особо советую в этом участвовать.>>669753Это называется юнит-тесты. Почитай урок https://gist.github.com/codedokode/a455bde7d0748c0a351aПреимущество юнит-тестов в том, что их можно использовать многократно. Вот сделал ты год назад какой-то класс, предоставляющий какието полезные методы, написал тесты для этих методов - и эти тесты защищают полезный функционал. Если ты при правке кода что-то сломаешь, тесты тебе скажут хотя может к тому времени ты уже сам забудешь что такой функионал был.
>>673906Спасибо за пояснения.>Вот этот вот последний кусочек - он по моему не очень логичный. Причем в коде никаких пояснений, почему сделано так хитро и запутанно, нету. Непонятно - то ли автор тут закладывает какую-то логику, то ли он ошибся и что-то перепутал.Я как-то даже и не задумался, что этот момент будет неясен. Спасибо, в следующий раз оставлю комментарии к возможно неясным местам.>Ну и собственно хотелось бы узнать у автора кода, а какие преимущества дает изменение алгоритма, когда мы сначала платим больше чем надо, а потом компенсируем уход долга в минус?А я не менял алгоритм. Немного подумал и написал то, что написал.>если использовать min/maxЧто-то типа такого? http://ideone.com/rfef0Q>давайте обсуждать исключительно код и способ решения и не добавлять эмоций в спор, только аргументы почему один способ лучше или хуже. И уж тем более давайте не будем никого ни в чем обвинять. Извиняюсь.
>>673905А если массив хочу вернуть?
>>673791> $letters = array(> 1 => 'а',> 2 => 'и',> 3 => 'у',Не стоит проставлять нумерацию вручную - неудобно будет править список (и неудобно проверять что у тебя все номера стоят правильно). Достаточно поставить только первый индекс 1 => '...','...','...'А еще можно вообще не ставить индексы - PHP их сам расставит начиная с нуля. >>673843 Тот же совет про индексы.> правило с маленькой っТам придется учесть что она перед некоторыми буквами не ставится (ну то есть поставить то можно но выглядеть будет странно).И еще составные символы вроде ぎゃ можно конечно было оптимизировать как-то, чтобы при выпадении ぎ с определенной вероятностью добавлялась бы маленькая буква.И ゞ тоже не после каждого символа логично ставить.Вот это вот не очень хорошая идея: > ($random >= 46)&&($random <= 101))Представь мы захотим поменять символы в массиве - все эти цифры придется пересчитывать. Поддерживать такой код неудобно. Проверить его тоже не очень легко. Более того, сокуон っ например не должен идти в конце слова (ну то есть иногда там его пишут, но для того чтобы указать на особенности произношения слова). У тебя вроде нет такой проверки.Мне кажется, надо как-то написать код так, чтобы потребности пересчитывать вручную индексы не было. Ну например, можно сделать несколько массивов: массив гласных, массив составных слогов, массив слогов с звонкими согласными, массив специальных символов. Имея их, мы всегда можем с помощью in_array проверить к какой категории относится символ, не мучаясь с номерами.Также, можно сделать переменные, показывающие может ли сейчас выпасть специальный символ или нет, и написать их в таком виде, чтобы условия были легко понятны: // сокуон разрешен только если текущий символ начинется с согласной$isSokuonAllowed = !in_array($character, $specialCharacters);$isDuplicatorAllowed = ....;Это облегчит написание условий: if ($isSokuonAllowed && $random < $sokuonProbability) {$text .= $sokuon;}Возможно, что спецсимволы имеет смысл генерировать не отдельно сами по себе, а в добавление к обычному символу. В общем, давай, подумай сам, как сделать код более простым, чтобы правила было легко читать и легко менять.
>>673941Не знаю как в PHP, но обычно возвращается указатель на первый элемент массива.
>>673940> Что-то типа такого? http://ideone.com/rfef0QДа. Использование min тут имеет то преимущество что код чуть компактнее получается и мы обходимся без ветвлений.
Как сделать, чтобы функция могла юзать переменные всякие там, массивы и прочее из другой функции (из мейна)? А то вот делаю войдовую функцию по рисовке тайлов из массива, хочу её отдельно вынести чтоб использовать когда хочу как собстна функцию, а там чтоб нарисовать что-то нужно делать команду окнонейм.draw(спрайт), которая работает только в мейне (потому что там определено окно, спрайт, вот это всё).
>>673943>>673941>>673905Бля, не, нихуя не то. Наоборот, файл завершает работу и передает некоторую инфу в другой, вызывая его (или переадресуя), а не наоборот, тот первый подключает второй.
>>673943В PHP переменные могут хранить массивы. Если ты хочешь намекнуть на Си то там такое решение - большая проблема, так как в 99% случаев нам нужен не указатель на массив в памяти, а еще и длина (чтобы избежать переполнения). Удивительно, что хотя проблема с переполнениями буфера известна уже 30 лет, программисты на Си все езе их допускают. Это происходит из-за нежелания борьбы с проблемой системно - например, используя определенные правила или абстракции.
>>673946Хватит изобретать велосипеды. Тебе нужны функции.
>>673942>Тот же совет про индексы.Индексы я оставил для того, чтобы было удобнее смотреть, где начинаются "звонкие" символы, символы, с которыми маленькая цу не работает и всё в этом духе. Не думаю, что это что-то криминальное.За советы по программе с хираганой - большое спасибо, допилю.
>>673942> // сокуон разрешен только если текущий символ начинется с согласной> $isSokuonAllowed = !in_array($character, $specialCharacters);Ой, тут комментарий не соответствует коду, но надеюсь мысль понятна. Условия лучше писать в таком виде, потому что условие вида if ($random > 46) читается хуже- надо лезть в список и пытаться понять что хотел сказать автор.
>>673949Индексы имеют тот недостаток что их надо поддерживать при изменениях. Это лишняя ручная работа. Лучше будет сделать несколько отдельных массивов для разных категорий символов. А в коде ты потом можешь объединить их в один общий массив если надо.То есть простановку индексов все же лучше оставить компьютеру - у него это получается лучше.
>>673952А вот что подскажи - как объединить несколько массивов в один?
>>673953Создаешь текстовый файл и записываешь туда двумерный массив, тебе необходимо поменять минимальный и максимальный элемент в этом массиве В ФАЙЛЕ!
>>673948Нет же!Файл, например, обрабатывает данные формы, после чего редиректит на главную админки с определенным месседжем и статусом.
>>673965Тащемта, месседж можно выполнить с помощью обычного аллерта.
>>673966Опять же, если инициатор - главная - да. СмотриФорма использует обработчик.пхп. По завершению своей работы обработчик.пхп должен редиректить на главная.пхп и передавать последней некоторые параметры.
>>673953array_merge - вроде же было в уроке про массивы? Если нет, информация есть в мануале.>>673965Почитай про MVC. Как сделать обработку формы - давно уже известно. Тебе надо не изобретать велосипеды, а изучить накопленный опыт.
>>673981Хотя я подумал, если ты сейчас пойдешь гуглить про MVC, то наверняка найдешь не то или запутаешься. По хорошему тут надо изучить какой-нибудь фреймворк вроде Юи 2 или Симфони 2, или например решать нашу задачу про студентов, в общем быстро это не объяснить.
>>673945Обычно все, что функции нужно, передается ей явно через аргументы.> А то вот делаю войдовую функцию по рисовке тайлов из массива, хочу её отдельно вынести чтоб использовать когда хочу как собстна функцию,Ну давай подумаем, что нужно такой функции для выполнения работы? Очевидно, надо дать ей какой-то "холст", на который она должна нарисовать изображение, исходную картинку и может какие-то дополнительные параметры, показывающие какую часть картинки взять и какие преобразования сделать. > а там чтоб нарисовать что-то нужно делать команду окнонейм.draw(спрайт), которая работает только в мейне (потому что там определено окно, спрайт, вот это всё).При чем тут "окно нейм"? Какой это язык? По моему твое окнонейм - это обычный объект, который можно передавать.
Объясните где взять sphinx.api.php? Нагуглил только установку дополнения для PHP через PECL, но там нужно еще и оригинальный сфинкс с исходников собрать, а я этого не очень хочу.
>>674002Извиняюсь, нашел папку api в бинарниках для win32. И почему нельзя было сделать ссылку на api отдельно для других ОС?
>>667269> mb_strtoupper(mb_substr(trim($value),0,1)) . mb_substr(trim($value),1)Вот эту сложную конструкцию стоит вынести в отдельную функцию. > foreach($text as $key => $value){value лучше переменовать в sentence, а text хранящий массив - в sentences> \\s*?Квантификаторы нельзя применят друг к другу напрямую. Квантификатор можно писать только после символа или круглых/квадратных скобок. Нельзя написать a+? - можно писать (a+)? но это довольно бессмысленно (какой смысл задавать число повторений дважды?) и проще заменить на звездочку. Знак вопроса после звездочки управляет жадностью звездочки (мануал http://php.net/manual/ru/regexp.reference.repetition.php ) и это вряд ли то, что ты имел в виду.Вместо var_dump надо возвращаеть результат с помощью return и далее выводить его через echo.>>667284 Если речь о Windows - в функции работы с файлами в нем надо передавать имена в win1251.>>667361 Берем 1-й символ с начала и с конца и сравнвиаем. Не равны - не палиндром. Равны - продолжаем сравнение.Берем 2-й символ с начала и с конца и сравниваем. Не равны - не палиндром. Равны - продолжаем сравнение.....В твоем коде ты всегда берешь только первый и последний символ. А номер символа дложен меняться на каждом шаге цикла.
>>667362 > function inclineWord($key, $word) {Неудачно спроектирована функция. Вот я допустим хочу ее использовать - что такое key? что такое word? Почему word хранит число, хотя переводится как "слово"? Ну и ты зачем-то заложил в нее список слов, лучше убрать его из функции и передавать формы слова снаружи. Эту функцию надо переписать целиком.Вот пример хорошей функции: echo declense(4, '%d кот', '%d кота', 'аж %d котов', 'ни одного кота');> function parts($number) {Имя функции должно начинаться с глагола, сделатьЧтоТо, напримр splitToParts> $score = mb_strlen($number);> $thousand = mb_substr($number, -6, 3);Для работы с числами надо использовать математические операции (деление, остаток от деления). Более того, ты в этой функции скопипастил 3 почти одинаковых блока. Это плохо, но если перейти на математические методы, эти ифы будут не нужны, потому оптимизировать их не надо.> function smallNumberToText($number) {> if ($number == 0) {> echo "На вашем счету ноль рублей\n";> exit;Плохо спроектирована функция. Почему она самовольно выводит что-то на экран, да еще и завершает всю программу? А если я хочу вызвать ее несколько раз? При этом если число не равно нулю, то она ничего не выводит. Тут нет логики.> if (mb_strlen($discharge) == 3) {Используй математические методыВ функции smallNumberToText слишком глубокая вложенность кода. Вот я вижу 5 уровней вложенности: foreach -> if ($discharge > 0) -> else -> for. Как минимум ту можно избавиться от одного уровня, переделав if ($discharge > 0). Когда у тебя весь код заключен в один if - это плохо и надо переворачивать такой иф. > .$spelling[mb_substr($discharge, 0, 1) * 100];слишком сложное выражение в скобках - выноси в переменную с понятным именем.> $regexp = array('/один тысяча/', '/два тысячи/', '/ ноль/', '/^[ ]/');> $replacements = array('одна тысяча', 'две тысячи', '', '');Это костыли. Надо изначально выбирать правильную форму слова. В общем, убирай все mb_strlen и mb_substr. >if ($number % 1000 == 000) { 000 это то же самое что просто 0. Подумай в чем разница между 0, "0", 000, "000".
>>667369 Это не очень хорошее решение. Ощущение что ты не пытался написать простой и понятный код, а пытался его запутать. Почему ты думаешь что это хорошо? Как ты думаешь, что хочется другим людям - быстро понять как работает код, или разгадывать шарады и проверять по мануалу особенности языка? Вот например: > while($symbols > 0) {> $reversed .= mb_substr($string, --$symbols, 1);Это закамуфлированный цикл со счетчиком, то есть for. Почему ты пытаешься его замаскировать? > $reversed .= mb_substr($string, --$symbols, 1);Это 2 отдельных действия и должно писаться так: $reversed .= mb_substr($string, $symbols, 1);$symbols--;Если ты хочешь сказать что видел такое в Си коде, я тебе сразу отвечу что именно у любителей запутывать код потом находят уязвимости вроде переполнения буфера. Работа со строками в Си сделана отвратительно, и поощряет написание тяжелочитаемого кода с ошибками. В PHP она гораздо лучше, тут строка является полноценной сущностью, а не указателем в произвольную точку памяти.Перевернуть строку проще, разбив ее на массив символов ($letters = preg_split("//u", $text, null, PREG_SPLIT_NO_EMPTY);)> return mb_substr($text, 0, ceil($textLength / 2)) == reverseString(mb_substr($text, floor($textLength / 2)));Не очень понятно зачем эти странные манипуляции с делением на 2? Что тебе мешает перевернуть строку целиком? И что еще хуже, почему там стоит ceil и float? Не лучше ли справа писать то же число что и слева, только со знаком минус? >>667374 Он наверно еще функции не изучал.
>>667552 В ОП посте есть ссылка на задачи по SQL и там же ссылка на туториал для начинающих.Для отправки запросов к базе из PHP удобно использовать встроенное расширение PDO.Чтобы писать сайты, мало знать PHP и SQL. Надо еще изучать HTML/CSS (в ОП посте есть задания), архитектуру веб-приложений, работу с формами, MVC (ее изучают например в задаче про студентов). Без этого ты можешь сделать сайт, но код скорее всего будет очень плохим и уродливым - так что для себя можно сделать, но на собеседовании показывать не стоит.Алсо если тебе хочется побыстрее что-то написать на PHP и запустить в браузере, поставь Апач с PHP (инструкции в Оп посте) и следуй туториалу http://php.net/manual/ru/tutorial.phpЛинукс не обязателен - можно запускать Апач и под виндой - но в перспективе линукс освоить все равно придется.>>667666 Под линуксом динамические библиотеки имеют другое расширение>>667871> Копирую сюда весь css кодЗачем копировать? Там нужны только дополняющие правила для печати.> При этом ничего не выравнивается по центру, когда выводишь документ на печать, А почему оно должно?
>>667912 Тогда тебе лучше называть переменные правильно, а не key и value.>>668117У тебя не выводится строчка где сумма превышает миллион.>>668273> имхо подразумевая то что на винде вообще не удобно работать.Спорно. Если тебе не нужна консоль то Апач и PHP вполне нормально работают и тратят меньше ресурсов чем виртуалка + не надо пока разбираться в линуксе.>>668312 Ответ должен быть 61270. Ты сильно усложнил код, из-за чего трудно даже понять что там не так. Придется переписать его заново. Тот код, который дан в учебнике, специально содержит ошибку - потому возможно не стоит его копировать.Алгоритм должен быть примерно такой: - прибавляем проценты и комиссию к остатку долга (!не вычитаем ничего пока!)- если остаток маленький, выплачиваем сколько осталось и уходим- иначе платим 5000«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.>>668375Кыш
>>668498Число 69 лучше сделать констаной с понятными именем.>>668832Нет, надо использовать математические методы. Если нужны огромные числа то использовать библиотеку для работы с огромными числами.>>668844 ucfirst работает только с некоторыми символами вроде латиннциы. Не рекомендую ее использовать никогда. С utf-8 она несовместима и может ломать символы кириллицы. Советую почитать https://gist.github.com/codedokode/ff99e357e9860ea169b8>>668884 Лучше использовать стандартные средства фреймворка - тогда например какие-то плагины для работы с заголовками смогут их видеть.
>>669120>>669950 > function inclineWord($number, $word1, $word2, $word5) {> $test = $number%100;Лучше называть вроде last2digits (2 последние цифры)> $test = $test%10;лучше сделать новую переменную чтобы не было путаницы> if($test==0 && $number != 0){Зачем второе условие ? Для нуля тоже используется форма word5> if(isset($spelling[$number])){Зачем это условие? Числа вроде 5 или 11 можно обрабатывать в общем порядке.> if(isset($femaleSpelling[$tens]) && $isFemale == 1){Чтобы не писать это несколбько раз, можно просто менять массив с написанием, если пол женский то заменять в нем элементы на элементы из femaleSpelling> $numberStr = $numberStr." ".$femaleSpelling[$units];Лучше сделать массив и добавлять слова в него, будет более аккуратный код и не надо помнить с какой строны ставить пробел. Или хотя бы использовать .= здесь> $saveNumber = 0;> $saveNumber = $number;Первая строка не имеет смысла> $indexName = 0;> $indexName = 0;То же самое> $word = inclineWord($numericDigit, $largeNumbersNames[$indexName][0], $largeNumbersNames[$indexName][1], $largeNumbersNames[$indexName][2]);не надо копипастить $largeNumbersNames[$indexName], вынеси в переменную. Также, возможно аругменты стоит записать вертикально.> if($indexName == 0){> $word = "(".$saveNumber.") ".$word;Это можно просто поставить после / перед циклом и иф будет не нуженЧтобы не мучаться с пробелами, складывай части фразы в массив.Коду надо улучшить читабельность - пока читать тяжеловато.
>>669149Не советуй вредное, нужны математические методы.>>669219> http://ideone.com/gvUha4 -5.3(оценки)верно> http://ideone.com/P526Ry -5.4(рост)Верно> http://ideone.com/6F7GME -5.5(ответ на вопрос)Да, правильно.> http://ideone.com/gU18qG -5.6(генератор имени)все правильно>>669382 Попробуй понять разницу: echo $a+$b; - вычисляет выражение, получается число, оно выводитсяecho $a . $b; - числа склеиваются как строки и выводятсяecho "$a+$b"; - в строку подставляются значения a и b но не складываютсяecho '$a+$b'; - ничего не вычисляется, строка выводится как есть
>>669532 Скачивать 5 файлов, распаковывать, изучать код? Что-то лень. Можешь запостить ключевые места кода и выложить например на pastebin, может кто-то глянет, но обещать не могу.> при попытки извлечь из БД что-то кроме поля username я получаю..нихуя. просто пустое полеНу вот и написал бы: как выглядит код отправки запроса, чему равны переменные до его выполнения и после (выведи их через var_dump)>>669731> Никак не пойму как писать грамотно тесты.Читал мой урок? https://gist.github.com/codedokode/a455bde7d0748c0a351a> Если речь идет о модульном тестировании, то мне нужно тестировать все методы всех классов, а не только метод суммы в котором содержится основная логика приложения?Нет. Ты не обязан тестировать все. В данном случае стоит тестировать юнит-тестами именно модель. Контроллер и вью (вместе с моделью) можно тестировать end-to-end (gui) тестами, то есть посылать HTTP запрос и смотреть ответ на него. ну то есть определись, что именно ты хочешь протестировать? - что модель правильно складывает числа? - что контроллер при получении запроса вызвает правильнй метод модели (довольно сомнительный тест)- что вью правильно подставляет результат в HTML код (тоже сомнительный)Тестированием ты пытаешься проверить что написанный тобой код работает корректно, и защищаешь его от попыток сломать. На практике вью не тестируют из-за того что в них почти нет логики, а контроллер - потому что его трудно отвязать от других частей приложения и усилия того не стоят. Ну и конечно контроллер должен быть тонким.>>669735 При чем active record в тестировании чисел? Ну и думаю при большом желании базу в AR можно заменить моком или использовать тестовую базу, хотя конечно спутанность модели и кода работы с базой чуть усложняет тестирование.Интеграционные и юнит-тесты нужны оба, почитай например https://habrahabr.ru/post/168451/ (я советую пролистать весь блог яндекса на хабре - там много интересного по тестированию)>>669744Не надо использовать хранимые процедуры. Они неудобны , надо их поддерживать, неудобно отладивать, логгировать и тд.Ну и твой запрос можно сделать и с клиента, сделав 20 юнионов.
ОП, а список студентов >>664787 посмотришь? Я уже давно все исправил.
Не могу запустить тесты в netbeans. Сейчас всё сделал как на этом видео https://www.youtube.com/watch?v=R0uh6fr8v-I.Получаю такой ответ:Возможно, произошла ошибка. Обратитесь к окну результатов.В чем проблема?
>>674056Во первых найди окошко с логом, где написано какой файл запускается, что вывелось и тд.Во-вторых, проверь настройки - указан ли путь к PHP правильно.В-третьих, для начала стоит научиться запускать тесты ручками, а потом уже использовать запуск одной кнопкой. Открой командную строку, перейди в папку с тестами и запусти тесты нужной командой phpunit (я напишу пример наугад) вроде такойphp c:/tmp/phpunit.phar run
>>674056Алсо поле object надо переименовать в calculator.
>>674056Также, у phpunit есть режим, кога он пишет подробно что именно делается. Там добавляется к команде опция вроде -v или --debug, не помню. Ты можешь ее использовать для того чтобы понять что не работает.
>>674065>>674067>>674069>В-третьих, для начала стоит научиться запускать тесты ручкамиЭто хороший совет. Спасибо.>Во-вторых, проверь настройки - указан ли путь к PHP правильноА вот здесь крылась главная проблема.В общем теперь всё работает за что большое тебе спасибо. Я уже дня два не мог разобраться в чём беда.
>>674074Я еще добавлю, что если урок учит именно запускать тесты через IDE то это неправильно. phpunit это консольная программа, и соответственно он рассчитан в первую очередь на запуск в ней, а не в нетбинсе. Так что лучше начинать с ручного запуска тестов, научиться писать phpunit.xml, а когда освоишься, узнать какой кнопкой это делается в IDE.
>>674074Вот у меня в уроке про phpunit немного написао: https://gist.github.com/codedokode/a455bde7d0748c0a351a#phpunitНадо все же знать сам инструмент, а не только кнопку для его запуска из иде.
Есть CSV след. содержания:[code]1;.1;.10;;;К;;;Шайба увеличенная 8 ГОСТ 6958-781;.1;.11;;;П;;;"Заклепка резьбовая М8 MFX 23-VG?№23М08VG1"1;.2;;;;СБ;;КИУТ1501.01.01.000-01;Стойка1;.2;.2;.5;;М;;;"Труба 40х40х2 ГОСТ 8639-82В 10 ГОСТ 13663-86 L=0770 мм"1;.2;.4;;;К;;;Винт М6х16 ГОСТ 11738-84[/code]Суть в чём. Когда есть перенос строки в экселе идёт добавление \n в описании как в строке 2(заклепка) и 5(труба). И когда считываю файл через fgetcsv он разбивает описание и переносит на отдельную строку. Обычно это закавычивается. Надо как-то по маске брать то что в кавычках с новой строки например перед /n" тут текст с переносом и кавычками "/n и убирать /n в описание, которое в кавычках. Как сделать? пытался через регулярку но там ругается на маску по каждому поводу.
>>674112У меня кровь из глаз пошла от этого говна.
>>674114http://pastebin.com/aeqLkHnk
аноны, тут можете помочь с валидацией в yii на строне клиента?я пытаюсь создать форму с помощью CActiveFormhttp://pastebin.com/3TjqMetBно при вводе в текстовые поля, не происходит никакой валидации. Только срабатывает AfterValidation при загрузке страницы. ЧЯДНТ?
Помогите разобраться, что делает следующий код:class Template { //класс шаблонизатора function __construct($file = null) { //функция конструктора $this->file = $file; //переменная $file в новом классе = null $this->vars['null'] = ''; //обнуление значения элемента null в массиве $file в новом классе ??? } function set($name, $value) { //вызываем функцию с аргументами типа $tpl->set('items',$cats); $this->vars[$name] = is_object($value) ? $value->fetch() : $value; //присваиваем значение $cats элементу items в массиве $vars } function fetch($file = null) { // в file передается файл /main.tpl, это html шаблон if(!$file) $file = $this->file; //если $file false, то присваиваем $file значение $this->file, т.е. null extract($this->vars); //вот тут, и далее, совершенно не понятно, что происходит ob_start(); include($file); $contents = ob_get_contents(); ob_end_clean(); return $contents; //возвращает что-то... }}вызывается вот так $content = $tpl->fetch("./main.tpl");
>>674156Мануал по extract и по буферизации читал?
>>674055Нахуя ты память в цикле выделяешь?И вообще тут не тужен четырехмерный массив. У тебя что имя и фамилия в целых числах описывается?Определяешь класс с соответствующими полями, затем суешь его в вектор.
>>674241В вектор? И что значит память в цикле выделаешь? в PHP нет функций явного выделения памяти.
>>673983Да с формами я работать умею. Бля, это вообще не для какого-то годного кода. Мне вот просто нужно из одного php файла передать в другой (инициатором запуска этого второго является первый, он же передает) некоторые данные. Через глобалки, гет и куки/сессии делать не хочу, спрашиваю, можно ли еще как-то?Наоборот, это для хуйни на сто строк, когда надо что-то затестить по-быстрому или набросать красивую лабу.
>>674268$argv ?Ты хочешь странного
Нужен скрипт перевода числового количества денег в прописной на яваскрипт. Все что нахожу, переводят только рубли в слова, но не переводят копейки. Например, при вводе значения 460.34 скрипт выводит - четыреста шестьдесят рублей 34 копейки, а мне нужно - четыреста шестьдесят рублей тридцать четыре копейки. Может кто-то видел где-нибудь такой скрипт?
Объясните, пожалуйста, что такое Твиттер Бутстрап, которым предлагает пользоваться ОП для студентов. Это, как понимаю, просто набор шаблонов(файлов ХТМЛ) для более удобного создания собственного проекта? Т.е., чтобы упростить написание кода вручную, правильно?
>>674299Странного? Ну хз. Возможно. А как заюзать $argv? Я же перехожу от выполнения одного файла к выполнению другого (через header(location...)
>>674308Набор готовых CSS правил + несколько простых JS плагинов (не нужны в задаче).
>>674308> росто набор шаблонов(файлов ХТМЛ) нет
>>674311Ну тогда только> гет и куки/сессииОзвучь, почему ты не хочешь/можешь их использовать?
Как вы боретесь с тем, что всё забывается? Сделал перерыв на неделю вынужденный, возвращаюсь к занятиям - забылсь даже совсем простые вещи
>>674312то, что нужно. терпеть не могу CSS и пердолиться с ним.
Возможно тупой вопрос, но будет ли выводить пыхокод прямо в браузер из openserver?
~<?phprequire('sql_bd.php');$query1=$mysqli->query("UPDATE testov SET n1 = REPLACE(n1, '.', '')");function gogogo() { $query=$mysqli->query("SELECT DISTINCT n2 FROM testov WHERE n2>0"); while ($row = $query->fetch_assoc()) { echo $row[0]; } return false;}gogogo();?>~Fatal error: Call to a member function query() on a non-objectпочему так? если пихну файл с коннектом в функцию то всё заработает?
>>674358Глаза уже болят? Или лень одолевает?>>674372Конечно.
>>674318>Озвучь, почему ты не хочешь/можешь их использовать?Потому что юзер может изменить гет/куки, если даже они зашифрованы, первый засерает адресную строку. А сессии, я так понимаю, создают дохуя лишнюю нагрузку на сервер, если клиентов много, выполнений скриптов много, в сессии хранится много данных...да и ее можно подменить.
>>674376лень и работа
>>674382работа, ессно, донная
>>674358Лютейше двачую этот вопрос.>>674376Дело не в лени. Сегодня ты пытаешься учить пых, завтра у тебя последний день перед контрольной в вузе, через неделю дедлайн по курсачу на тему лоу-левела, потом ты заебываешься с ява-лабами, а в свободное время балуешься фотошопом, английским и перками в вовке. Ну и бухать не забываешь. Через пару месяцев вернулся - и пиздец, не помнишь, как запрос к базе сформулировать, какие параметры за что отвечают в конфиге, не понимаешь, чего от тебя хочет иксдебаг, если ты честно перегрузил функцию и почему length($arr) выдает ошибку. Каждый раз заново все гуглить...а уж редкая хуета типа трейтов и необходимости заключать в хуевинки регексп, разница в наличии-отсутствии всяких прег-сплитов и прег-тестов... Ебааать
>>674389А еще нереально трудно помнить больше 1-2 языков, все в башке мешается, особенно фреймворки, библиотеки и та их часть, которая используется нечасто.
>>674369Ещё вопрос по bootstrap имею. Смотрю туториалы на ютубе по нему: так там готовый КСС полностью прописанный, юзай не хочу, никакого пердолинга. Теперь вопрос: версталы опытные на работе только этим и пользуются? В таком случае для чего превозмогать ОП-овский урок по КСС, так, для общего развития?
>>674358Новичкам в треде помогаю решить то, что сам уже решил, смотрю на любой вариант решения, переделываю, чтобы заработало.Думаю, что ОП и по этой причине тоже всем нам помогает, - лишний раз всё освежить в памяти.
>>674399Принципы понять.Хотя сам жалею, что на две недели затормозил с этими задачами.
>>674399Ещё у ОПа там годный макет, который надо сверстать из PSD.
Сижу за пекой 24/7. Всю жизнь сидел за ЭЛТ-монитором, но теперь моя няша сгорела, и пришлось пересесть за ЖК. Сижу уже полгода, начали лопаться сосуды и уставать глаза от этого. Что делать? Бывают ли хорошие ЖК-мониторы, от которых глаза не вытекают?
киньте пример страниц для задачи с студентами для верстки.
>>674590Ну в смысле скрины для примера.
>>674374Ты не можешь из функции получить доступ к внешней переменной. Да, должно заработать, но этой плохой путь (у тебя создаётся два соединения).Пусть знающие аноны меня поправят, но в порядке возрастания кошерности, возможны следующие варианты:1) глобальные переменные (всё ещё не очень)2) передача $mysqli в функцию параметром3) класс для работы с БДНу и более современным и универсальным будет использовать PDO.
>>674379У тебя то наколеночный код, то хайлоад. Опиши конкретнее свой юз-кейс.
Как экспортировать базу? Прописываю команду пикрелейтед, получаю результат пикрелейтед, файла с базой не нахожу.
Подскажите годные скринкасты по верстке сайтов из макетов с нуля. Желательно с использованием sass и БЭМ. Можно на английском Вот вроде понятны все преимущества но когда сам пытаюсь получается тот же самый css и длинные классы вместо каскадности.
>>674579Ты разделом не ошибся?У меня глаза текли от нище-ТН и плохого освещения. Переехал на IPS и включил мягкий свет за монитором все прошло.
>>673006>>673006http://ideone.com/Wc7MdYспасибо, разобрался
>>674590>>674604У ОПа же в условии задачи примерно описано как это должно выглядеть. Вот мое.
>>674308>elseif ($creditBalance < 0)Такого не должно получиться при верном решении задачи, так что это лишнее.>echo "{$month} месяц спустя: долг = {$creditBalance} руб, выплачено всего {$paymentTotal} руб. \n";Это повторяется в двух основных условиях, поэтому может быть вынесено в основной цикл.
>>674805 >>> >>674708
Привет! Пытаюсь запилить дефолтненькое добавление в друзья , друзей то отображает если я их вношу в БД , а вот заявки в друзья , или кому я отправил заявку , нет. В чем проблема гайз?http://ideone.com/aQOxyd
>>674852Точнее , даже если я в БД вношу данные о отправке заявки - мне все равно предлагается "отправить" ее. То есть , он просто пропускает это , и это.echo 'Add or No';echi 'Otmena zayavki';
>>674805Если я выношу его в основной цикл, то у меня после последней оплаты заканчивается цикл и оно не пишет о оплате в 13 месяце. Вынести break чет не получается
http://ideone.com/iHxlWJ
>>674858Попробуй другое условие поставить в цикл.Подсказка: обрати внимание на $creditBalance в этой ситуации, ведь цикл должен работать, пока $creditBalance не потратился до конца.
Я недавно задавал похожий вопрос про гит. Теперь про композер и нпм. Допустим я создал папку с проектом и дичайше там устанавливал все подряд пакеты. Пушил на гитхаб, потом под другим логином пулил в другую папку и разворачивал из зависимостей. Ну для теста, понять как это все работает. Достаточно ли просто удолить папки с проектами руками чтобы нигде никакого мусора не осталось? Или лучше через npm uninstall?Я говорю про локальные пакеты, с глобальными все ясно.
>>674673Ну, хз. В админ.пхп есть форма удаления поста с форума, там его номер, причина удаления, возможность забанить автора, этц. Адмит вводит данные, нажимает сабмит. Форму обрабатывает delete.php, который в результате своей работы рапортует об успешном или неуспешном выполнении операции и редиректит обратно на админ.пхп
>>674604Что делает добавить и заполнитель ?
>>674796Спасибо, а что делает "добавить" и "заполнитель" ?
>>674937Добавить - добавление \ редактирование информации о себе.Заполнитель - отключаемая вещь которая заполняет базу данных рандомными данными. Сделал для тестирования, потом решил оставить.
>>674967Ага, а если пользователь авторизирован, то поля уже заполнены или все поновой ?
>>674967И выход это завершение сессии ?
>>674972Заполнены, все соответствует условию.>>674974Там не сессии а куки. Исходники можешь тут посмотреть https://github.com/foobar1643/student-list
>>674981Не хочется готовое решение смотреть. Надо самому все. Можно лишь советы просить.
http://ideone.com/rciJYx
>>674981Сойдет ?
>>674981Бугурт у меня. Понятия ведь я не имею как эту ебанину посмотреть.
>>675034Чет не понял.
>>674967А как с работой. Пробовал уже на собеседование пойти ?
>>675049Нет, не пробовал. Я считаю что мне не хватает опыта и знаний, еще мой код плохой и я очень часто делаю глупые архитектурные ошибки. Стараюсь работать над этим, параллельно изучая фреймворки и делая файлообменник.
>>675058Образование математическое и сколько уже вкатываешься в веб ?
>>675061Образование у меня 11 классов школы, учусь в ВУЗе на специальности Программное обеспечение систем. Начал заниматься всем этим еще в 15 - 16 лет, тогда я понятия не имел что такое эти ООП и паттерны, просто пробовал писать говнокод по разным туториалам в интернете, параллельно с этим изучая администрирование серверов. В том возрасте это было обычным увлечением, я часто забрасывал на пару месяцев, потом возвращался. Примерно год назад решил стать мамкиным вкатывальщиком в веб и заняться этим серьезно, и вот теперь я здесь.
>>675071Я тоже на Программной инженерии учусь. Какой курс ? Я думаю, тебе все же стоит попробовать сходить на собеседования. Хуже точно не будет. Окажут - получишь опыт. А возьмут - так оно и к лучшему.
>>675037Без обид, что назвал ебаниной работу, эт у меня бугурт на то, какой я тупой и ничего не пойму, как там что посмотреть. а посмотреть сука хочется
>>675077Второй курс.>Хуже точно не будетЯ читал истории в соседнем треде про черные списки в некоторых конторах. Это когда тебя один раз не взяли из-за нехватки знаний и после этого добавляют в черный список. Потом все последующие походы к ним на собеседования заканчиваются отказом уже на стадии отправки резюме. Да и с одним маленьким проектом сделанным за три дня как-то неудобно идти будет.
>>675089Какой фреймворк пытаешься осилить ?
>>675089Не удержался и посмотрел.$student->gender = Student::GENDER_MALE; // Sexism?Проиграл с этого.
>>675093Yii2, так же почти доделал файлообменник на слиме.
>>675089Расскажи подробнее о ходе интенсивного обучения за год.
Аноны-похаперы, хочу задать вам вопрос, ответ на который я обязан знать.Поможет ли хеллоувордлщику этот http://itcenter.ifmo.ru/razrabotka_web_-_saytov_3 курс? Или 60к на ветер, потому что не буду успевать? Курс 3 месяца длится.
>>673542>>673558>>673879ОП, поясни всю эту хуйню плес.
Подскажите плес почему так работает http://ideone.com/kvTwv6 ,а так не работаетhttp://ideone.com/VQjYYn ???
>>675248>$i >= 2Условие для работы цикла неверное.
>>675255Спасибо, теперь все работаетhttp://ideone.com/VQjYYn
>>675030Я конечно не дизайнер, но думаю лучше будет хотя бы пол сделать списком с выбором (select).
>>675327И хорошо что ты не дизайнер, никогда им не становись пожалуйста.
>>674693Чтобы сдампить базу надо использовать mysqldump а не mysqlmysqldump -uxxx -pxxx database > file.sqlЕсли в PATH нет этой команды, то придется написать полный путь перед mysqldump (если ты читал мой урок по командной строке то уже это знаешь).Дамп это текстовый файл с SQL командами. Загружается дамп с помощью mysql: mysql -uxxx -pxxx database < file.sql
>>675327Со списком такая история. Список позволяет экономить место на экране, однако имеет недостатки: - добавляется лишний клик для выбора- возможные варианты не видныРадиокнопки не имеют этих недостатков, но могут занимать больше места. Когда пунктов всего несколько, радиокнопки могут быть выгоднее.>>675339К чему писать такие посты? >>675030Форма поиска кривая, высота кнопки и поля ввода не совпадаютПоля на мой взгляд слишком длинные. Нужно бы укоротить их. Поля вроде номера группы или года рождения можно сделать совсем небольшими.Радиокнопки расположены не очень удачно в том плане что нарушается закон близости (относящиеся друг к другу вещит находятся близко). Смотри, у тебя "мужской" и "женский" далеко, а "мужской" и "местный" близко и можно подумать что они связаны как-то.Кнопка "очистить форму" не нужна, мне кажется, не могу представить ситуацию где она полезна. Можно заменить ее ссылкой "вернуться на главную".
>>675399>К чему писать такие посты? Для человека не очевидно что 1 раз тыкнуть мышкой проще, чем кликнуть, прочитать список, кликнуть, скролить дальше, но при этом он пытается навязать свою точку зрения другим. Да, уменя бомбит от того, что каждый день мне приходится работать с такими интерфейсами. Выпадающими списками на 1 пункт, галочками на 30 пунктов.
>>675402Он ничего не навязывал. Незачем переходить на личности. Ты бы мог дать ссылку на статью по теме или что-то такое.
>>675403Ты прав, наверное я слишком токсичен.Ссылку не дам, но гугл в помощь.Дизайн Для Реального Мира
>>675399Спасибо, буду править
Гайс, вопрос актуален >>674880
>>674880>>675452Композер создет файл composer.lock, и ставит пакеты в vendor. Также он устраивает кеш где-то в твоем профиле в ОС, но это мешать не должно. npm аналогично ставит все в node_modules
>>674922Простых способов нет.Если нужна авторизация, то для наколеночных поделок можешь посмотреть в сторону basic/digest аутентификации.Но вообще от кук/сессий ты никуда не денешься, т.к. в вебе это по сути единственный способ сохранять состояние между запросами.Поправьте, если я ошибаюсь.
>>675483Ну то есть можно просто удалить корневую папку FacebookKiller в которой лежат все эти node_modules, package.json, composer.lock, bowerrc, bower.json, .gitignore, .git? И не получить проблем в будущем, если например я заново создам папку с таким же именем.
>>675519Да. Более того, в случае с композером ты можешь например убрать зависимости из composer.json и сделать команду которая удалит более не нужные зависимсти (наверно, я не проверял).
>>675402>Для человека не очевидно что 1 раз тыкнуть мышкой проще, чем кликнуть, прочитать список, кликнуть, скролить дальше>выбор полаOh you!..
>>673319 (OP)Господа, что за хрень?Устанавливал опенкарт на винде, все норм работало, на линуксе 404 ошибку выдает (пхп ламп апаче все есть и работате). Надо какие-то депенденсис в апаче писать?
>>6667555.9 неправильно же, проверяет только 1ю букву, для примера вставил в твой код набор буков с одинаковыми в начале и конце http://ideone.com/n9xgYF, в результате говорит что полиндром, хотя таким не является
>>675605https://ideone.com/HuI7Zi
>>675398Я наверное глупый вопрос задам, но это делается не через MySQL 5.7 Command Line Client, а через mysqldump.exe? У меня проблема с экзешками из папки из пикрелейтед - они все сразу вылетают, вот успел заскринить окно только. Поэтому работал со студентами через комманд клиент только.
>>675615Они не вылетают. Это программы для командной строки, ты их при клике запускаешь без аргументов, они об этом пишут и окно закрывается.Надо запускать из командной строки. > это делается не через MySQL 5.7 Command Line ClientНет, он только для выполнения запросов к базе.
Прислали в кач-ве тествого им на сайт функционал добавить, какой-то кусок цмс который не открывается. ппц, как будто чел просто хочет, чтобы я работу за него сделал.
>>675618Спасибо за быстрый ответ, Оп. Раз ты здесь еще хотел спросить. Второй день не могу найти баг. Появляется когда настраиваешь количество записей на странице. Когда их меньше 20 - все ок. Когда 20 - ошибка 500. Когда их больше - не хватает некоторых кусков html или вообще всего, когда их примерно 30 - львиная часть записей отсутствует. С чем это может быть связано? Или ты без полного кода какие-то предположения сделать не сможешь.
>>675631Такое бывает, кстати.Потому что соискателей много, а делать работу надо. Сделаешь хорошо - могут взять. Сделаешь не очень - откажут, поправят код, работа сделана.Такое делают с SEO-специалистами постоянно. Требуют полный аудит сайта компании или нескольких сайтов, а потом отказывают. А аудиты корректируют и отправляют владельцам сайтов.
>>675633Ошибка 500 это обычно ошибка веб-сервера Апача (а не PHP кода). Причины в таких случаях записаны в логе веб-сервер - найди и прочитай.Обычно у Апача это из-за проблем в URL страницы и в htaccess.Правда у тебя почему-то эта страница подписана phpstorm. Раз ты используешь не стандартный Апач, а что-то что идет в комплекте с phpstorm то я в нем не разбираюсь и тебе надо читать их документацию - в каикх случахя он выдает ошибки, где логи, что у них за веб-сервер и тд.
>>675633Алсо почему ты настраиваешь число записей на странице тут, а не там где задается $recordsPerPage? Ну и вообще, покажи потом код, там наверно будет много чего можно исправить.
>>675643Ну у соискателя всегда есть право отказаться делать задание. Да и сомнительный подход - я бы побоялся то что кандидаты присылают, на реальный сайт ставить. Замучаешься потом баги исправлять.
>>675654Ну так я для примера чтобы не скринить еще тот кусок где функция вызывается. Так то у меня все как на самой верхней пикче. Покажу, конечно, сейчас доделывать css буду и комментарии писать.
Объясните мне внятно про сетки. Курсю хтмлакадеми на пару с кодакадеми и на сетках какой-то ступор. То делай псевдоэлементы с распорками, то просто задавай блокам размеры и маргины, то дисплей: тейбл.Почему не остановиться на одном способе построения? Я запутался в этой херне, короче.Или где внятно можно почитать.
>>675643Так эти куски я опять даже на локалке развернуть не могу, админки нет, структура папок не та, что в опенкарте, не говоря о содержимом, там еще и куски ноды есть, пиздец, я только осваивать эту новую чудную самописную легаси цмс буду месяц.
>>675658Сетка - это для дизайнеров, они по ней расставляют элементы, чтобы страница смотрелась аккаратно и пропорции были правильные. Верстальщика это не должно беспокоить - его должно беспокоить праильное позиционирование всех элементов. От чего зависит ширина того или иного элемента? Как она меняется при изменении размеров окна? Как он располагается относительно других? Как верстка меньяется на маленьких экранах? В CSS есть такие способы позиционирования: - блоки (которые идут вертикально)- инлайн-блоки- флоаты- относ., абсол. и фикс. позиционирование- display: table для случаев когда надо заставить блоки вести себя как ячейки и строки таблицыСоответственно тебе глядя на макет надо решать где какой способ применить. > То делай псевдоэлементы с распорками, Бред какой-то, либо ты не так что-то понял. Распорки никто не использует с 2000 года.> Почему не остановиться на одном способе построения?Потому что ситуации разные. Иногда надо выстроить блоки вертикально, иногда горизонтально, иногда вырвать блок влево или вправо из потока.Не знаю, что еще можно посоветовать почитать, посмотрри задания на cSS в ОП посте, там есть например ссылка на учебник на сайте softwaremaniacsИ конечно тебе надо больше внимания уделить изучению CSS. Описанные выше способы позиционирования надо знать наизусть, также знать все их особенности.
>>675686> я только осваивать эту новую чудную самописную легаси цмс буду месяц.Может это значит что ты не подходишь на эту вакансию? Если ты развернуть проект не можешь, как ты будешь его поддерживать и правки вносить?
>>675686Ну и вообще, ты бы мог спросить инструкции по установке.
Я, кстати, давно уже проходил курс верстки от ОПа, сейчас уже подзабыл и когда верстаю что-нибудь, постоянно использую везде абсолютное позиционирование и мне стыдно.
>>674358>>674389>>674390Вот, люто бампую за себя и братишку, ОП, советуй!
>>675733Абс. поз-е используется очень редко, только для случаев вроде прибить крестик в углу попапа. В обычной верстке его использовать неудобно так как оно вырывает блок из потока и он не может расталкивать идущие за ним блоки, то есть верстка получается прибита гвоздями и не подстраивается под содержимое. >>675736Ежедневная практика.
>>675175Поможет, покупай.
class PostForm {public login;public password;public function __construct($post) {$this->setLogin(isset($post['login']) ? $post['login'] : '');$this->setPassword(isset($post['password']) ? $post['password'] : '');}...}$form = new PostForm($_POST);С этим всё хорошо?
>>675731зачем присылать проект, который невозможно равзернуть? почему сразу на хостинге админку не дать тогда уж?
>>675846>зачем присылать проект который нужно фиксить, пришлите полностью рабочий и заплатите мне за то что я нихуя не сделал
>>675851+--classes - здесь у меня классы|+--functions - здесь скрипты обработчиков для форм|+index.php - здесь у меня autoloadЯ хочу в скриптах обработчиков в functions использовать классы из classes для которых autoload в index.php. Как мне сделать, чтобы классы были видны во всех папках проекта? Просто если у меня будет много обработчиков, то будет проблематично каждому подключать классы индивидуально.
>>675870Это не сюда >>675851Это просто вопрос.
>>675871Вынеси автолоад в отдельный файл (bootstrap.php например).Подключай это файл в начале обработчика.
Короче мне элементы ангуляр кода как в пхп выполнить? это обычная иде, там нет ангуляра, только пхп. убунта, вот устанавливаю ангуляр, а как проверить, что он работает? там запрос должен на сервер роутер идти.
почему умение разворачивать легаси код на локалке не прописывается в условиях и не считается отдельным, заслуживающим уважения скилом?
Не могу найти ошибку, вроде все проверил, но все равно не то заранее спасибо. http://ideone.com/vkznhK ссылка на код
>>675940Сначала расскажи, как ты ее искал.Просто там большими буквами на чистом английском языке написано, в чем причина и даже на какой строке ошибка, не понимаю, как это можно не увидеть.
>>675940http://php.net/manual/ru/function.mt-rand.php
>>675953Спасибо. Прочитав раза три понял в чем ошибка.
https://ideone.com/cyeyJt>stdout>1Что значит 1? Должен быть null!
>>675965http://php.net/manual/ru/language.operators.precedence.php
Что нужно сделать в пикрилейтед задаче? Допилить шифровочные символы для всех букв алфавита?
>>675986Цель этой задачи - закрепить твои знания. Серьёзность подхода к её решению - твой личный выбор.
>>675997Я уточнил задачу. Она состоит в том, чтобы допилить шифровку всего алфавита?
>>675998Нет, она состоит в том, чтобы ты немного поработал с массивом.
>>676002>немного поработал с массивом.Имеется в виду забить в массив остальной алфавит и его шифр или что?
>>675986
>>676006Что такое "нормальный уровень"?Ссылку на определение этого термина в студию.
>>676004Ты меня тралиш? Задание ты выполнил (если тебя интересует решение), но у тебя возникла мысль доработать свой код. И это хорошо, поэтому если у тебя есть желание, ты можешь пушить этот массив хоть спецсимволами. Цель этой задачи, как и всех остальных, закрепить твои знания.
>>676008Два чаю. Вот это и создало затруднение, как читал условие.
>>676008>>676012уровень /б
>>675870Должен быть отдельный скрипт, bootstrap.php который инициализирует приложение, в том числе настраивает автозагрузку. >>675921Ангулар это JS фреймворк вообще-то. Ты не можешь выполнить яваскрипт код в PHP (с оговорками).>>675923Потому что оно входит в "умение читать и понимать чужой код" и "умение настроить рабочее окружение">>675965Скобки надо ставить>>675986Да и расшифровку>>676008Подумаем потом над формулировкой. Имеется в виду то, что шифруются не все буквы и часть текста видна.
>>676012В этой задаче конечно очевидно, что ты догадался правильно. Но при реальной работе с заказчиками обязательно нужно упрямо переспрашивать, что они имели ввиду, потому что на кону деньги и репутация. Чтобы потом не оказалось, что он "не то имел ввиду".>>676010>Задание ты выполнил (если тебя интересует решение)Сам понял что сказал?>>676026Нет, ты.
>>665607>>674055> Установите необходимые зависимости используя composer (composer install).> Сгенерируйте файлы автозагрузки используя composer (composer dump-autoload).install генерирует файл автозагрузки> Загрузите файлы приложения в корневой каталог вашего веб-сервера.Наоборот, надо настроить чтобы корень сервера был в publicФраза "введите часть имени, фамилии..." не помещается в поле поиска. Плохо что поле поиска исчезает при поиске - нельзя подправить содержимое.Поиск регистрозависимый - "ива" не находит имя "Иван"По форме - не очень удачное решение с расположением полей и лейблов, лейблы находятся между полями и непонятно к чему - верхнему или нижнему полю он относится. Для такой схемы надо добавлять отступы, чтобы рядом с лейблом было только одно поле. Или, что лучше, вынести лейблы влево.Если таблица пуста, то только шапка выглядит довольно бессмысленно. Надо выводить либо внутри, либо вместо таблицы фразу "Список студентов пуст" (в случае поиска лучше писать "Не найдено ни одного студента")При сортировке надо показывать что сортировка включена с помощью стрелочки или треугольника у выбранной колонки."Форма успешно заполнена" - странный текст, лучше "Вы успешно зарегистрированы"/"Информация обновлена".Алсо, что за выбор между приезжим и иногородним? Это не одно и то же? Не написано что имя должно начинаться с большой буквы.> type = pgsqlА твой проект поддерживает другие базы данных? Если нет то этот параметр конфига лишний.> enableFiller = falseСкрипт заполнения БД лучше сделать скриптом для командной строки. Тогда не нужна защита от запуска, также мы получаем независимость от ограничений по времени для веб-скриптов, полчаем возможность прервать скрипт, можем передавать параметры и тд. Такие вещи надо делать через командную строку. И вынеси скрипт из веб-папки тогда. Ну и контроллер тогда ему не нужен - нужный код можно написать прямо в скрипте, если он простой.мануал в помощь http://php.net/manual/ru/features.commandline.phphttps://github.com/foobar1643/student-list/blob/master/public/logout.phpДля логаута должен быть метод где-то в менеджере авторизации. И его стоит вызывать.> names.txtНа будущее: есть мощная библиотека php faker для генерации чего угодно. В том числе русские имена там есть по моему.> function runApp($app) {Тайп хинт бы сюда.> } catch(PDOException $e) {> } catch(FatalException $e) {Почему тут только эти 2 исключения ловятся? Как ты составил список этих исключений, по каким принципам? Что делать с исключениями других классов? > $c["config"]->getValue('db', 'type') . ":dbname=".> $c["config"]->getValue('db', 'name') . ";host=".Не очень хорошо читается. Можно $c["config"] заменить на переменную, и использовать sprintf для подстаноки параметров в строку.> https://github.com/foobar1643/student-list/blob/master/app/Controller/ControllerIndex.php#L27> if($_GET) {Этот иф тут лишний по моему и не несет никакой пользы> $currentPage = $_GET['page'];Стоит добавить intval - на всякий случай (и min/max чтобы нельзя было указать число меньше 1)> if(trim($_GET['search']) != "") {> $linkBuilder->searchPattern = $_GET['search'];А почему второй раз trim не делаетяс? Почти всегда для данных из форм надо делать trim.> get_total_students(> getValueЧто-то нет единообразия в стиле> https://github.com/foobar1643/student-list/blob/master/templates/index.html#L10> if(!isset($linkBuilder->searchPattern)):Разве в обхекте может отсутсвовать поле? Или это такая закамуфлированная проверка на null? https://github.com/foobar1643/student-list/blob/master/templates/index.html#L33По идее ссылки надо экранировать через htmlspecialchars, в частности символ & в них> if($_POST) {Проверять лучше проверкой REQUEST_METHOD в _SERVERВот тут у тебя слишком большая простыня: https://github.com/foobar1643/student-list/blob/master/app/Controller/ControllerForm.phpМного вложенных ифов, очень трудно понять логику. Надо бы как-то это упростить, может что-то вынести в отдельные методы. Важно уметь разбивать код на отдельные части, а не писать стеной.> if(!$tokenHelper->checkCsrfToken($_POST['csrf_field'], $_COOKIE['token'])) Эти элементы могут отсутствовать, будет ошибка обращения к несуществующему индексуhttps://github.com/foobar1643/student-list/blob/master/app/Controller/ControllerIndex.php#L41> $error = true;Эта переменная создана в блоке else, значит использовать ее можно только в нем - снаружи она может оказаться не определена.> https://github.com/foobar1643/student-list/blob/master/app/Helper/FormHelper.php#L42> public function getAllowedFields() {> return ['id',id разрешено редактировать? Обновление студента безопаснее делать по-другому. Надо загрузить студента из БД, а потом обновлять его из POST если там присутсвует поле. Тогда в случае если из формы уберут часть полей, ничего не сломается. У тебя в этом случае при редактирвоании отсутствующие поля обнулятся.И ведь ты все равно потом в конце загружаешь этот студента. Надо это делать в начале. Не знаю, упомянуто ли это в моем уроке про формы, если упомянуто, то перечитай его.> $errors = $formHelper->validateStudent($student);> if($dataGateway->checkEmail($student->email, $student->id) != 0) {Непонятно почему проверка емайла не входит в функцию валидации> !isset($error)) {Что это? переменная может существовать, а может и не существовать? Также, я не понимаю логику работы с куками auth и token. Работать с ними лучше не напрямую, усложняя код, а вынеся в отдельные методы с понятными именами. Например для csrf можно сделать один класс, для авторизационной куки - другой. Какие в них должны быть методы, подумай сам. Также, подумай над таким вопросом: допустим у тебя будет еще одна таблица, модель и форма ее редактирования. Сколько кода тебе придется скопипастить во второй контроллер? Весь код работы с куками придется многократно дублирвоать - это признак что что-то неудачно спроектировано.https://github.com/foobar1643/student-list/blob/master/app/Helper/PaginationHelper.php#L23> for($i = 1; $i < $page; $i++) {> $offset += $this->recordsPerPage;Умножение не годится? https://github.com/foobar1643/student-list/blob/master/app/Helper/LinkHelper.phpНазвание плохое. Можно подумать это хелпер для любых ссылок, на самом деле только для ссылок на страницу с таблицей. > в формате [email protected]На будущее: для примеров есть специальный домен example.com (и его русская версия испытание.рф по моему)> [А-ЯЁA-Z]{1}А зачем {1}?> Год рождения должен быть не меньше 1900 и не больше 2000.> не больше 2000.Ой ли? Менять ведь скоро придется.> [1][9]Зачем квадратные скобки? Может тебе задачки на регулярки вспомнить стоит? https://github.com/foobar1643/student-list/blob/master/app/Model/Student.phpКонстанты принято ставить в самом начале. Порядок такой: Константы, публичные поля, остальные поля, конструктор, магические методы, публичные методы, остальные. https://github.com/foobar1643/student-list/blob/master/app/Exception/ExceptionHandler.phpЭто не исключение, наверно лучше в другую папку поместить.https://github.com/foobar1643/student-list/blob/master/app/Exception/FatalException.phpХотелось бы комментарий чем исключение этого типа отличается от других> if($names && $surnames) {> while(($line = fgets($names)) !== false) array_push($names_array["names"], trim($line));Попробуй сделать это же через file(), array_map(), array_filter() и trim()Также, вместо функции readNames читающей 2 файла лучше было сделать читающую файл с указанными именем..... продолжение ниже ...
.....> $data["names"][mt_rand(0, count($data["names"])-1)];Стоило сделать метод выбирающий 1 случайное значение массиваhttps://github.com/foobar1643/student-list/blob/master/templates/form.html#L21Не надо в шаблоне лезть в куки, дожна быть переменная $isEdit> value="<?php if($student->name): ?><?= htmlspecialchars($student->name); ?><?php endif; ?>"Не нужен if > if($student->gender == 'male'Лучше бы константой> Exception message: <?= $e->getMessage() ?></center>Лучше через __toString() выводить - деталей большеИ что за тег center? Он устарел много лет назад. Советую пройти уроки по HTML/CSS, ну или если ты их прошел, найти актуальный список тегов. У меня только на английском есть: https://en.wikipedia.org/wiki/HTML_elementhttps://www.w3.org/TR/html-markup/elements.htmlhttps://developer.mozilla.org/en-US/docs/Web/HTML/ElementНу и давай уже доделывать эту задачу и переходить к фреймворкам, изучать twig и что там еще есть.
Подскажите, ошибка в коде? Или я пошел по неправильному пути? Если да, подтолкните в нужное русло http://ideone.com/3yhicB
>>676030>В этой задаче конечно очевидно, что ты догадался правильно. Но при реальной работе с заказчиками обязательно нужно упрямо переспрашивать, что они имели ввиду, потому что на кону деньги и репутация. Чтобы потом не оказалось, что он "не то имел ввиду".Да я всегда привык переспрашивать, пока на 100% не пойму что от меня хотят. Часто это многих бесит, кто-то считает тупым, но для меня лучше переспросить и знать что от меня нужно а не угадывать.
>>676030>Сам понял что сказал?Ну я жопой читал немношк
>>676036>подтолкните в нужное руслоУстанови нормальную иде с подсветкой и автодополнением.Набирай в ней и копируй на идеоне, когда хочешь выложить код.Скобка там пропущена, легко не заметить.unexpected end of file всегда говорит, что где-то не закрыт блок.
>>676028Т.е. мне нужно подключать отдельный модуль ангуляра и прописывать пути, да?
>>676052Нет, тебе нужно либо выучить ангуляр, либо не брать задания с ним.
>>676036Если бы разобрался с предыдущей задачей на Айфон, как я тебе подсказывал, то сейчас не было бы этой проблемы.Нам же тут делать нечего больше, мы поэтому подсказываем, ты так думаешь? Как раз предостерегал от долгой возни с задачей на Айпад, всё это проходили сто раз.Как раз именно устранение прошлого недочёта тебе сейчас бы помогло.
>>676060ну че впадлу сказать что ли? у меня уже залит ангуляр на убунту, у меня этот сраный ангуляр работатет netbeans html, ну нету нету его сраного модуля в нетбинс php я что сдела м уеба?
>>676060какая же ты тупая высокомерная мразь это просто пиздец. прям каждый раз противно заходить в этот тред и что-то спрашивать. убейся плз
>>6760361. $compulsoryPayment = ( $credit х $percent ) + $service; если стоит вне цикла, то к чему приводит, как ты полагаешь? В цикле должно всё обновляться, а этого не происходит.2. $credit = $credit - $monthly; - а к чему тогда вообще введена дополнительная переменная $compulsoryPayment, если она нигде не принимает дальше участия?
>>676114Дак я и так переделал с айфоном http://ideone.com/ZMFABV
>>676126Перечитай свой вопрос:> Короче мне элементы ангуляр кода как в пхп выполнить? это обычная иде,Ангулар код выполняется в браузере, а не в ИДЕ. И перед тем как браться за него надо очень хорошо изучить JS, DOM. Судя по твоим вопросам ты пока не очень понял что это вообще такое.
>>669935У тебя в регулярке с жы/шы за счет точек со звездочкой захватывается вся остальная часть строки и больше таких ошибок не находится. Надо ограничить число захватываемых символов.> [!,;:?.]\\SНадо допилить чтобы не реагировало на многоточиеи и многовопросие.> {1,}Это то же самое что плюс> (а|но){1,}Зачем там разрешено повторение? Искать слова вроде "нононо" или "аноано"? > здел(ал|аю|ан)А "зделаешь" найдет? > var_dump($match);Разберись в формате массива результатов и сделай нормальный вывод циклом (читай мануал по функции). Например "зделал" почему-то 2 раза вывелось.>>670144 Нету точки с запятой в строке перед break>>670215Погугли. Это больше для фронтендщиков.
>>676220Так-то нормально, конечно.Тогда посмотри на подсказки выше - у тебя там просто самих по себе ошибок много в задаче про Айпад (просто напутал ты там в самом коде).
>>670226> $creditSum x $percent / 100 + $comission Это аж 3 раза скопировано. Попробуй убрать повторы. Также, считает неправильно, если поставить суму в 1000 р - должно быть 2030 р во втором банке, а у тебя 2940: http://ideone.com/LRhmsn>>670686Я бы только вместо одного пробела разрешил любое число, а так верно.>>670728Верные - код праивльный, число цифр тоже.>>670746> (?:-?\d){5} # и еще пять цифр с опциональными дефисами. кiнец.А почему пробелы не разрешены? Вроде "8 900 123 45 67">>670937 > пройти курсы кодакадеми js, jqeuryТам по моему js очень ознакомительный, надо DOM хорошо изучить прежде чем браться за jquery. У нас есть задачки, но быстро их не пройти.> далее уже конкретно изучать бутстрап, чтоб иметь общее представлениеперед ним надо хорошо изучить HTML/CSS> оттуда уже комплексно углубляться в lessЧто там углубляться-то? Это всего лишь надстройка над CSS. И странная идея изучать LESS до CSS.И jquery до js.
>>671037 > Хочешь меньше думать? Готовься выложить больше процессорного времени и памяти.1) разница не всегда значительна 2) взамен за экономию проц. времени придется расплачиваться большей тратой человеческого времени. Что более ограниченный ресурс? > не давай PHP спуститься на уровень нижеОн и не дает. Там нет ни указателей ни работы с памятью напрямую. Это просто архитектурные недостатки языка, отсутсвие прозрачной поддержки кодировок, они являются источником сложностей для начинающих и багов для неначинающих. Разработчики PHP сэкономили свое время - мы тратим свое. >>671133 Транзакции не нужны? Ты это серьезно? > слоупочными table locksТы ничего не путаешь? Это в nosql продуктах есть collection lock, а в innodb используется MVCC.>>671135Можно генерацию 2 первых строк сделать циклом из 2 шагов, чтобы не копипастить код.>>671151 В мануал с этим вопросом плиз
>>671177 Да, ссылок лучше я не нашел. try/catch там используется может чтобы просто показать что пдо выбрасывает исключения? Или автор плохо знает эту тему? В любом случае так писать неправильно, как там. Попробуй разобраться в исключениях и сам это поймешь.>>671204 Можно делать верстку и PHP параллельно. Да и как не важно? Как ты будешь HTML писать? >>671223 > public function addChild(TreeElement $child){> if($this->getRootElement()->findDescendant($child->getNodeName())){Не годится, лучше искать не по имени а по совпадению с самим объектом. Объект сам по себе уникален и не требуются имена чтобы найти такой же.> public function addChild(TreeElement $child){> if($this->getRootElement()->findDescendant($child->getNodeName())){А что если он в другом дереве? Надо проверять родителя элемента. Алсо не надо возвращать false, какой смысл если ты ничего другого все равно не возвращаешь? Лучше исключение выбросить либо напритмер сделать правило что в этом случае элемент отдельяется от старого родителя.> public function setChildNodes($newNodes){Смысл функции непонятен> setParentNode($node){Тайп хинт бы сюда> if($node->isAncestor($this)){> return true;return $node->isAncestor(...);> if($this->parentNode){> $depth++;> $depth+= $this->parentNode->getDepth();if (...) { return $this->parentNode->getDepth() + 1;}> foreach ($children as $key => $child) {> $element = array_splice($children, $key, 1);тут указывается номер элемента, а не ключ. У тебя при удалении появляются дырки в индексах и ключ не равен номеру.
>>671341> Или все же нужно именно с пеленок себя приучать к такому стилю?Нужно сразу приучать. Чтобы не писать стену текста, а разделять код на отдельные действия. Сам полдмай, что лучше читается: слово вроде makeLetterUppercase() или длинное сложное выражение? Переменные названы неудачно: text -> sentencesvalue -> sentenceИз-за таких названий код хуже читается.>>671354Если это задача про верстку поста форума, то точно не оно, так как инлайн-блок не растянется на 100% по ширине. Там в замечаниях же написан совет - использовать клеарфикс. >>671402 Не факт. Но работать с utf-8 можно, просто это не делается автоматически.>>672465> for ($q = 0; $q < $height; $q++){Этот цикл тоже можно заменить array_fill> M_PI/180;Есть готовые функции deg2rad и наоборот.Также, цикл выглядит странно: > foreach ($screen as $screen){Ты по моему переменную перезаписываешь собой. > implode(' ', $screen);У тебя строки получаются очень длинные и переносятся на новую строку. Также, так как буквы не квадратные, надо x или y домножать на коэффициент чтобы эллипс превратить в круг>>672519Изучи явуИзучи коллекции в явеИзучи веб-сервер в явеИзучи средства работы с БДИзучи шаблонизаторИзучи какой-нибудь веб-фреймворк (например play)
>>676205>>676114>>676051Всем спасибо, разобрался http://ideone.com/w0hHSz
Что делать, если задача ну вообще никак не идет? Числа прописью. Пропустить ее или сидеть над ней и думать? Уже дня 4 сижу.
>>676258Вбрасывай код или пиши на чем остановился.
ОП дает задачи типа "Найти кратчайший маршрут от одной станции метро до другой" или просит написать "Сапер", но ни разу не заикается об NP-полноте. Это так предполагается?
>>676290Это тред PHP, а не алгоритмов.
Решил написать о своем сегодняшнем совокуплении с фреймворком yii. Не знаю зачем, но вы тут такую ахинею пишете, что хуже не будет.Так вот, задача была такова. Некоторые страницы запрещены для просмотра незарегистрированными пользователями. Для этих целей в yii есть такая штука как "фильтр" accessControl.http://www.yiiframework.com/doc/guide/1.1/ru/topics.auth#sec-5Если коротко, то можно выставить при выполнении каждого действия (action) определенную проверку (фильтр доступа), который в качестве конфига берет массив из метода accessRules.При попытке незарегистрированного пользователя запросить недозволенный url его перекидывает на страницу логина, это хорошо. Проблема в том, что нужно же как-то сообщить пользователю, что произошло, а не молча редиректить.Хочется видеть сообщение вида "Вы не имеете доступа к странице $url. Требуется авторизация".В yii такого (вроде) не предусмотрено.Что у нас есть из инструментов? Есть HTTP_REFERER, и есть такая штука как Yii::app()->user->returnUrl с довольно странной реализацией.Если посмотреть исходники, то окажется, что этот метод возвращает сохраненную в сессию переменную, либо (если сессия умерла) базовый url, тупо адрес главной страницы.http://www.yiiframework.com/doc/api/1.1/CWebUser#getReturnUrl-detailДокументация у yii мутная и бессвязная, некоторые места вообще вводят в заблуждение:http://www.yiiframework.com/doc/guide/1.1/ru/topics.auth#sec-6>Если браузер был перенаправлен на страницу входа и вход удачный, вам может понадобиться перенаправить пользователя к той странице, на которой неудачно прошла авторизация. Как же узнать URL той страницы? Мы можем получить эту информацию из свойства returnUrlНеправда. Как видно из исходного кода, returnUrl выгребает данные из сессии, а кладутся данные в сессию при редиректе. Значит если после того как юзера перекинет на страницу авторизации он вручную походит по другим страницам, а потом вернется назад на страницу логина, то returnUrl по-прежнему будет хранить последний адрес запрещенной страницы.Но не адрес страницы, с которой пришел пользователь.Короче, если я напишу в шаблоне страницы логина что-то вродеif (isset(Yii::app()->user->returnUrl)) { вывести флеш-сообщение с объяснениями причины редиректа }это не будет работать. returnUrl всегда установлен, как минимум он указывает на главную страницу. Ну и вообще эта фишка задумывалась именно для того чтобы после успешного логина отредиректить пользователя обратно, а не для того чтобы выводить сообщение.Так как getReturnUrl возвращает по-дефолту адрес главной страницы, можем взять более низкоуровневую вещь, то есть проверить прямо в сессии, есть ли там такая переменная.Yii::app()->user->getState('__returnUrl'). Если ее там нет, то пользователь сам пришел на страницу логина, и не нужно ему выводить всякие ворнинги.Проблема в том, что если пользователь сначала запросит запрещенную страницу, его перекинет на логин, он с него уйдет и походит по другим страницам, а потом вернется на страницу логина, ему по-прежнему будет показано сообщение о том, что он когда-то пытался получить доступ к некоей странице.В общем, сообщение должно быть показано только при редиректе на страницу логина. Если пользователь зашел на нее самостоятельно, никаких сообщений быть не должно.Решил этот вопрос костылем с реферером. То есть если реферер == returnUrl, тогда показать ахтунг, иначе не показывать.Грустно как-то, вроде стараюсь писать хороший код, изучаю всякие исходники, а все равно говно какое-то получается. То ли у меня не хватает опыта, то ли yii кривой.Может выучить симфони, говорят там все там хорошо сделано, что просто нельзя писать плохой код. Правда освоить его непросто, черт знает получится ли, если у меня проблемы даже с yii.>>676290Тут все самоучки, в наших деревнях таких страшных слов не слыхивали.Ну и оп пытается подтолкнуть к тому, чтобы люди учились самостоятельно думать, а не заучивать всякие готовые алгоритмы.
>>676269>>673827Ну вот. Я не знаю, что делать дальше.
>>676330Блин.https://ideone.com/UMDGcwПодсказочки из ОП-поста какие-то ироничные.
>>676032Спасибо за замечания, попытаюсь исправить в ближайшие пару дней. По поводу фреймворков - у меня есть почти готовый файлообменник на слиме и твиге, но работа над ним продвигается медленнее чем я планировал.
>>676377Держи нас в курсе.
>>676330Теперь пиши функцию, которая будет склонять тысячи. Принцип такой же.Можно было разбить регулярками число на порядки (трех порядков достаточно) и прогнать их через функцию, которая пишет прописью это трехзначное число для каждого порядка, ну и потом через функции, склоняющие миллионы, тысячи и рубли.Но у тебя интересное решение и оно получится гораздо компактнее, просто подумай немного.
>>676252>calculatePayments(39999, 1.02, 0, 5000, 0) + 7777;Лучше 7777 прибавить к сумме кредита. ОП объяснял это тем, что ведь у Анона нет изначально этих 7777, поэтому он и на них вынужден оформить кредит. В итоге там всё равно самые выгодные условия будут, потому что нет комиссии каждый месяц.
>>676382И не забывай, что числа 11 - 20 нельзя склонять по последней цифре, так что твою функцию рублей нужно доработать. Это касается и тысяч и миллионов.
>>67639510-20 фикс
Застрял на задаче про айпад, нашел тред, а тут она.Решал по-другому, укажите на ошибку, анончики :3 проверил, переменные в цикле крутятся, а вот лавеха в банке не мутитсяhttp://ideone.com/P4vMiG
>>676402В этом твоём варианте вот что неверно: когда $creditBalance у тебя становится меньше $monthlyPayment, то у тебя следует вот это выражение: $creditBalance = ( $creditBalance х $percent ) + $servicePayment - $monthlyPayment;. И в какой-то момент это уходит в минус, от чего дальше всё идёт неверно.Подсказка: попробуй ввести отдельную переменную для подсчёта $creditBalance = ( $creditBalance х $percent ) + $servicePayment, ведь именно когда этот момент становится меньше $monthlyPayment, нам и надо просто его выплатить и приплюсовать к $paymentTotal.
>>676388ok
>>676399>>676382>>676395Спасибо большое, буду думать.
>>676411ХмВроде $creditBalance * $percent + $commission < $monthlyPayment выполняется, когда $creditBalance < 0, и значения поглядел, без минусов. Покурю и подумаю про новую переменную с утра сижу думаю, как решить эту задачку, лол Спасибо, анон.
>>676473Нет-нет, у тебя же в теле цикла безо всяких условий стоит $creditBalance = $creditBalance * $percent + $commission - $monthlyPayment;Это значит, что когда $creditBalance становится, например, 260 рублей, он умножается на проценты, к нему прибавляется комиссия, а потом отнимается 5000 месячной выплаты.Тут всё уходит в минус.А дальше срабатывает это условие: if ($creditBalance <= 0) {break;}
>>676479Добра тебе :3
Зачем нужен "use"?
>>676550Позволяет использовать определенный неймспейс (или несколько неймспейсов).Читал урок ОПа про автозагрузку и неймспейсы? Если нет, почитай https://github.com/codedokode/pasta/blob/master/php/autoload.md
Как искать на гитхабе правильно? Хочу найти там реализацию админ панели для сайта, через которую можно например создавать новости и добавлять на главную страницу на них гиперссылки, как это в новостных сайтах реализуется.
Этот вопрос >>675801 заключается в том, что у меня стоит такая проблема:Перед тем как значения отправятся в класс формы, значения $_POST пока не существуют, и, соответственно, в контроллере не имеет смысла пока что создавать этот класс. Очевидным решением напрашивается, то что нужно делать проверку перед этим, но этим у меня занимается вспомогательный метод getPost() { if ($_SERVER['REQUEST_METHOD'] == 'POST') { foreach ($_POST as $value) { $value = is_scalar($value) ? $value : ''; $value = trim($value); } } return $_POST; }Стоит ли выносить проверку в класс контроллера?
Хочу обратиться к определенному значению массива в foreach и перезаписать его значением внешнего массива:$arr = [1 => 1, 2 => 2];$extra=[1 => "a", 2 => "b"];foreach($arr as $key => &$value){\t $arr[1] = $extra[2];}Но мой велосипед не работает. Что я делаю не так?
>>676800>к определенному значению массиваКак узнать какое определение значения массива?
>>676800$arr = [1 => 1, 2 => 2];$extra=[1 => "a", 2 => "b"];foreach($arr as $key => &$value){$arr[1] = $extra[2];}var_dump($arr);array(2) { [1]=> string(1) "b" [2]=> &int(2)}Ну хуй знает.
Посмотрите как вам такой калькуляторhttp://ideone.com/ERuDLR
что не так ??http://ideone.com/hhWMn7
>>677058$letter2 = mb_substr($a, - $i, -1, 1);неправильно, попробуй заменить на $letter2 = mb_substr($a, -($i+1), 1);
>>677097Попробуй анус свой заменить, пес. Мы тут помогаем, а не решаем за других.
>>677097ну эт помогло пасибки
>>677097>>677102только почему в скобках ? и в каких случаях мне их использовать ?
>>677097Ты видишь, пидр, што ты наделал?7>>677105 >>677107>только почему в скобках ? и в каких случаях мне их использовать ?
>>677109бля лучше помогите вместо того что бы ругаться
>>676550>>677110он все правильно говорит, я неправильно сделал что просто ответ написал(
суууук мне кто-нибудь объяснит >только почему в скобках ? и в каких случаях мне их использовать ?
>>677113ой знак вопроса забыл,вот он - ?
>>677110>>677113Разобрался ли ты с функцией mb_substr?Почитай у ОПа, какие ей нужны символы для правильной работы, что нам дают отрицательная $i в этой функции или положительная.Тебе нужно брать по символу с начала строки и с конца.У тебя это>$letter1 = mb_substr($a, $i, 1)>$letter2 = mb_substr($a, -($i+1), 1)В последнем тебе надо добиться отрицательного значения у $i. Представь, что ты к -1 прибавляешь 1 - что получается? 0 получается.А теперь вспомни, что нам дают скобки? Подсказка: сначала производятся действия в скобках, а затем другие в выражении.Чтобы избежать всех этих скобок, достаточно в начале цикла поставить не $i = 0, а $i равно кое-чему другому, догадайся. Тогда не придётся из нуля делать -1 для первого символа с конца фразы, достаточно будет поставить просто минус перед $i.
>>677126окей все было на много проще чем я думалспасибо
>>677126но если заменить $i на "$i равно кое-чему другому" то первую букву будет брать не с того места которое нам надо
>>677133первую букву -> $letter1
>>677133Попробуй сделать из этого изменённого $i 0.Чтобы брало с первого символа начала фразы.
>>677136Сделать это в самой функции, разумеется.
>>677136>>677138тогда это почти ничем не будет отличатся от >$letter1 = mb_substr($a, $i, 1)>$letter2 = mb_substr($a, -($i+1), 1)
>>677144Как ты сделал, покажи?Всё там намного внятнее должно получиться.
>>677145http://ideone.com/eGEybu
>>677150Так тут то же самое, только другое сокращено.Я же советовал немного упростить ориентиры для отрывания символов с начала и конца строки, избавиться от этих скобок и -($q+1).
>>677159Ну да, в предложенном тобою варианте будет немного понятнее, но смысл останется прежним
>>677167Важно делать всё минималистично.Чего можно избежать - нужно избежать.
>>677167Так как ты сделал с той моей подсказкой?Мне интересно, правильно ли ты меня понял, понял ли принцип работы цикла и функции mb_substr.
>>677174Я не тот анон))
>>677174наверно эт мне ?если да то вроде понял
>>677182Как. Ты. Сделал.Я слишком многого прошу, что ли?
>>677185да я так все и оставил http://ideone.com/hhWMn7
>>677185просто теперь он работает и я доволен
>>677193Я не уверен чому-то, что ты меня понял.Ну да ладно, отстаю.
>>666619Я один раз синглтон из документации переписал и в ответ на тестовое задание отправил.Мне сказали что он не правильный и там были переопределен гетер и сеттер, так они подумали что я не знаю про магические методы.
http://archive-ipq-co.narod.ru/l1/finals.htmlРешение Калькулятор-кун! работает не совсем корректноhttp://ideone.com/VeXs82
>>666666
Анончики, а есть смысл заменять несколько if на switch? Или кроме написания это ничем не отличается?
Как бороться с ленью? Иногда одолевает чувство что вообще ничего не хочется и хочется повеситься.
>>677549Никак.Оставайся в жопе.
>>677549Спать не менее 8 часов в сутки.
ахаха а бутстрап изобрел
>>677607А зачем?
>>677607
>>677549https://www.youtube.com/watch?v=mbtVeca7jss
>>677658Забавно.Жаль, проект не взлетел, похоже.
>>677665Ну они выпустили курс разработки под андроид, а потом что-то затухло всё. Может еще что-то выкатят.
Сколько будет стоить написать вот такое: http://blankionline.ru/servisy/2760.html ?
Анончики, объясните кто-нибудь, пожалуйста, что значит %d d строке "echo declense(4, '%d кот', '%d кота', 'аж %d котов', 'ни одного кота')@". И как вообще это работает?
>>677719А зачем писать если уже за тебя написали?Просто спизди это
>>677721Откуда это? Это напоминает спецификаторы printf https://ru.wikipedia.org/wiki/Printf
Парни, я прошел курс PHP на Codecademy.Я теперь Джуниор?
>>677730Да, можешь устраиваться на работу.
Посоны, что с моим пхпстормом?
>>677727ОП написал
>>677730Нет. Ты теперь один из >>673314
>>677734Если отсюда >>672691 то да - это спецификаторы по аналогии printf.%d - заменяется на целое число.
>>673314Что это за бред в последнем столбце? Если это вакансии делить на резюме, то это какая-то хуйня.
>>677732>>677735А если серьезно? Где та планка, что вот, ты Джуниор?
>>677741когда джуном устроишься на работу тогда им и станешь
>>677741Когда ты станешь в себе уверен. Некоторые и без знаний но с высокими амбициями ПРОСТО идут и устраиваются и по ходу дела учатся.
>>677721Это плейсхолдер куда подставляется цифра. %d выбран так как он уже используется в функции sprintf.
>>677723Нет, я это написал, и хочу узнать, сколько такое может стоить.
Есть у кого-нибудь архивчик тредисов? Я бы почитал.
>>677768Что ты там читать собрался, поехавший? Вопросы про решение задачи на кредит?
>>677773Ты токсичный (
>>677774Это отчего же у тебя сложилось такое мнение обо мне?
>>677761Теперь не сколько, потому что это можно спиздить у тебя.Тем более это мерзкий вордпрес.
>>677768Порылся по сусекам: http://www.mediafire.com/download/5o7mmd25bvn2o9d/%D0%B0%D1%80%D1%85%D0%B8%D0%B2-%D1%82%D1%80%D0%B5%D0%B4%D0%BE%D0%B2-%D1%81-%D0%BC%D0%B0%D1%80%D1%82%D0%B0-2015.ziphttp://www.mediafire.com/download/kgzl1f9366gc6ed/threads-archive-11..20.ziphttp://www.mediafire.com/download/gza5360wdzqd743/threads-archive-pr-1..17.zipНе помню что именно в них. Тот, котрый 11..20 - это совсем старые треды из /b
>>677781Ты можешь сказать, сколько мне запросить за эту работу? Такое украсть не очень то и просто.
>>677789Яваскрипт-тред вообще-то где-то там, снаружи.Код лапшевидный, суматошный, уровня ньюфага. Дизайн хуевый. И проблема в том, что его сердце ты спиздил. http://blankionline.ru/wp-content/themes/Impreza/libs/propis/sum.jsРублей 200-300 твоя "работа" стоит.
>>677792Теперь понятно, а в чём сама суматошность кода? Я с яваскрипт если честно не очень, больше по ПХП.
>>677817У меня есть подозрение, что основная проблема, это не использование each (сейчас только вспомнил про такую функцию в jQuery), используя её, можно значительно сократить код.
>>677817Хреновые названия классов и переменных.Теги option, которые красиво сверстать труднее, чем кастомные выбиралки на блоках.Утонувшие отступы в коде.Цепочки if, когда есть switch.>jQueryУчи читый JS, писать на jQuery то же самое, что писать на Бейсике и мнить себя программистом.
>>677825>Теги option, которые красиво сверстать труднее, чем кастомные выбиралки на блоках.Заказчику нужно было так как сейчас, в смысле без выпадающих списков.>Учи читый JS, писать на jQuery то же самое, что писать на Бейсике и мнить себя программистом.Ясно, я на JS вообще редко пишу, я и учил его всего лишь в районе месяца, просто быстро пробежался по самому основному, чтобы разбираться как делать простенькие эффекты, как бы дополнительный скилл для ПХП-пограммиста. Просто подумал, что такое скрипт на ПХП писать нет смысла. Но JS конечно надо подтянуть.
>>677831>Заказчику нужно было так как сейчас, в смысле без выпадающих списков.Ну так и верстал бы блоками. Или ты html+css тоже месяц назад узнал?>я на JS вообще редко пишуКакая разница? Я бы не хотел обслуживать написанный тобой PHP-код.
>>677733Попробуй в правом нижнем углу windows-1251 поменять на UTF-8.
Оп, я разобрался наконец-то с sql дампами, гитхабом и прочими невиданными ранее вещами и прошу тебя посмотреть мой список студентов https://github.com/greenTea242/Student-list. Интересно, сколько раз мне придется его переделывать. Мои кошки мышки ты только на четвертый раз одобрил.Вопросы до первой проверки не хочется задавать, но все же. В задании написано:> "Для поиска по всем колонкам можно применить оператор LIKE к соединенным через пробел значениям столбцов".Я не понял как написать подобный запрос, появлялись ошибки. Поэтому использовал:> Другой вариант — искать в нескольких колонках через OR, например name LIKE '%hello%' OR surname LIKE '%hello%'.Как примерно должен выглядеть запрос из первого варианта?Еще я не понял как вставить в код класс pager с его методами кроме как для получения свойств. Мой View-Helper::getSortedLink справляется со ссылочной работой. Это неправильно?Заранее извиняюсь, если что-то не правильно оформил на гитхабе, буду его изучать постепенно. Вот смотрю сейчас страницу своего проекта и там под php комментариями код превращается в сплошной коммент, даже не знаю правильно это или нет.
>>677912https://github.com/greenTea242/Student-listбыстрофикс влезшей точки в ссылку
Надо получить такую html структуру как я здесь получил https://jsfiddle.net/dq6j13m4/ но мне кажется я неправильно как-то сделал это, не поясните как можно сделать правильно?
>>676235>Ты по моему переменную перезаписываешь собой.Нет, но всеравно исправил.>У тебя строки получаются очень длинные и переносятся на новую строку. На самом деле, нужно было запилить перенос на следующую строку.ОП, чому оно у меня такое кривое?с коэффициентами баловалсяhttps://ideone.com/D3cmbK
>>677913>Я не понял как написать подобный запрос, появлялись ошибки.В SQL несколько столбцов можно соединить функцией CONCAT. Если соеденить их через пробел - получится неплохой результат, с помощью которого можно написать простой поиск. Например SELECT CONCAT(name, ' ', last_name) FROM student_list выдаст результат в одной колонке вида "Имя Фамилия". Если сделаешь то же самое с WHERE и LIKE - получишь поиск.>Еще я не понял как вставить в код класс pager с его методами кроме как для получения свойств.Pager наверное должен считать еще оффсет для выборки из базы данных и считать общее кол-во страниц. Но тут я особо код не смотрел, поэтому могу быть не прав, лучше ОПа дождись.>Вот смотрю сейчас страницу своего проекта и там под php комментариями код превращается в сплошной коммент, даже не знаю правильно это или нет.Это не правильно, такого быть не должно. Заметь что такое происходит только после первой строки с любым комментарием.Еще я думаю лучше будет readme оформить в markdown формате, это специальный формат для таких вещей. Подробнее почитать и посмотреть примеры можешь тут:https://guides.github.com/features/mastering-markdown/
>>677741Студентов и файлообменник из ОПовского учебника сделай - на джуниора точно сможешь претендовать.Хотя на работу им устраиваются и без этого, зависит от самих работодателей и прочего.
>>677719Рублей 500 - от силы.А в качестве пункта в портфолио - очень даже неплохо.
>>677941Домножать надо синус и косинус.
>>677968Домножение синуса и косинуса дает коррекцию по горизонтали и вертикали. Вопрос был в том, что некоторые буквы расположены криво по отношению друг к другу.
>>677970>>677941Не посмотрел что кинул по ссылке, вот то что хотел https://ideone.com/WNMkGT
Другой вариант калькулятора. Имеет право на жизнь?https://ideone.com/O4dz3u
>>677741Это не официальная планка. Где-то сидит человек, например, на позиции мида, в другой компании его в джуны определят, а куда-нибудь может и сеньором-помидором залезть. Джун, мид и прочее - это попугаи, планки, устанавливаемые для того, чтобы решать некоторые организационные моменты в плане делегации ответственности и полномочий, а также оплаты, роста и мотивации работника. Как-то так.
Посоны, для более-менее приемлемой "правильной" работы с композером и фреймворками (ларавел в моем случае) на живом сайте нужен ВПС с SSH? Есть ли какие-нибудь максимально нищебродские варианты для этого?Сейчас я ковыряю все это добро на локалке в нетбинсе с заливанием файла по ФТП на обычный shared хостинг при сохранении, и когда приходит время композер апдейтов и прочей многофайловой шняги я запускаю синхронизацию, которая длится хуй знает сколько времени потому что этот уебский ларавел состоит из 5000 файлов. Это, конечно, большое уебанство, учитывая то, что вожусь я с фреймворками исключительно в образовательных целях, а умение придумывать какие-то дикие костыли мне вряд ли поможет.
Какая же windows 7 тормозная и как долго грузится, как медленно работает, по крайней мере внутри виртуалки. Буду принципиально на XP сидеть.
>>678118Ты можешь при синхронизации закачивать не все файлы а только изменившиеся. Также, можно сделать аккаунт на cloud9 ide, там бесплатно доступна и командная строка, и можно просматривать сайт, но только пока ты залогинен в браузере. Надо знать линукс.> с заливанием файла по ФТП на обычный shared хостинг при сохраненииНеправильно, это вообще глупая затея и медленно. Лучше сделать скрипт который будет запускаться вручную, находить и загружать изменившиеся файлы. Может есть для этого программы с интерфейсом, я не знаю, я скрипты пишу.
>>673237 Что ты за ерунду пишешь. Вот смотри, веб-приложение фактически состоит из 2 частей: той, что работает на сервере (PHP, SQL) и той что на клиенте (HTML, CSS, JS). Как можно одну из этих частей убрать? Никак, нужны обе. Значит и изучать надо и то и другое.Также, есть очень нездоровая вещь - так как HTML простой, люди ограничиваются тем что изучают синтаксис по даунским видеоурокам и на этом останавливаются. Они же изучают jQuery не зная толком JS. Хуже того, некоторые неосиляторы на этом останавливаются и называют себя фронтендерами. Я не знаю сколько таких людей сейчас в идустрии, иногда мне кажется что много. Надеюсь в будущем их выставят за дверь - с таким отношением они все равно ничего хорошо не сделают.Вообще, мне это не нравится. Я думаю, надо бы в задаче студентов начинать более строго проверять HTML. Неосиляторы, которым лень 3 недели потратить на верстку, не нужны.> жалко потраченного на это всё времени,Сколько же ты времени потратил на изучение основ CSS? Полгода? год? 2 года? На другие специальности люди в вузах учатся по 4-6 лет, к слову. Справедливо и программистов хотя бы года 2-3 заставить учиться.> Но сколь далече уже продвинулись те, кто не стал решать бонусные задачи, кто не стал решать вот эти задачи на HTML+CSS.Как можно продвинуться дальше не зная HTML? > душа требует ООП уже, БД и фреймворков.Изучай параллельно.>>673287Я рассматривал одно из предыддущих изданий, автор учит неправильным вещам. Не учебник, скорее пособие по быдлокодингу.>>673301 BOM? Там у разработчиков вроде мнение что он в utf-8 не нужен, просто виндоредакторы вроде блокнота любят его вставлять. Хотя я не знаю, может лучше было бы и поддерживать его прозрачно. Но PHP пытается быть агностичен к кодировкам, и в другой кодировке эти байты могут что-то осмысленное означать.>>673310 Бросай, не мучайся уже.
>>673337Разберись откуда этот quot берется. Также, у меня подозрения что тебе надо больше времени уделять изчении теории - ты явно что-то делаешь очень неправильно.Подозреваю что это из-за того что ты в коде делаешь "очистку" входных переменных с помощью htmlspecialchars, как советую в быдлокодерских учебниках и видеоуроках. Не читайте их, решайте лучше нашу задачу про студентов. >>673352 Да, неправильно.>>673355 Что значит "не работает"? >>673379 В чем твой вопрос? Что на 4-м скриншоте? Может статья устарела? >>673384> W1 - http://ideone.com/PaOLUGВерно> W2 - http://ideone.com/sAZs0AВерно> W3 - http://ideone.com/7FUXeBправильно> W4.1 - http://ideone.com/xN81k7верно> W4.2 - http://ideone.com/hDB9f4Хорошо> W5.2 - http://ideone.com/b46oYSВерно, хотя тут цикл со счетчиком - наверно for подошел бы лучше.> W5.1 - http://ideone.com/isOeeQЭто мы выше проверили
>>673403Не знаю>>673407 Но там ведь нет сдачи. Со сдачей код бы выглядел примерно так: требуемая плата = ....;полученная плата = 5000;сдача = требуемая плата - полученная плата;>>673542 Ты не настроил правильно виртуальные хосты. > Для каждого сайта запись в hosts и виртуалхост в хттпд.конф.Видимо неправильно. Или сервер забыл перезапустить.> А то я уже заебался - удалять хтассесы при переходе с реального сервера на локалхост, иметь две разные версии хтассесовТакие вещи можно автоматизировать скриптами, например на Баш (если линукс или cygwin) или Питоне, или даже на PHP. Зачем руками файлы копировать? > Можно все это попроще как-то?Написать скрипт
>>673558Я не знаю никаких книг. Есть оф. документация на англ по апачу- там все описано же https://httpd.apache.org/docs/2.4/vhosts/index.htmlhttps://httpd.apache.org/docs/2.4/vhosts/examples.htmlАлсо ты даже свой httpd.conf не запостил>>675220 Нужен конфиг Апача>>673633> W5.3 - http://ideone.com/jWpMfHВерно> W5.4 - https://ideone.com/hZNNWfВерно> W5.5 - https://ideone.com/kwBJKlВсе правильноИ насчет этой злополучной задачи про кредит. Там в учебнике я специально написал неправильный код, вычитая 5000 каждый месяц без проверки баланса. Почему-то люди принимают его на веру и никто не пытается задуматься, а правильно ли это написано и не надо ли исправить. Видимо, надо будет более толсто намекнуть - написать что-то совсем неправильное. >>673657лайки для комментариев >>673827> function inclineWord($num){> function inclineThou($thou){> function inclineMill($mill){Это копипаста одной и той же функции - избавься от нее. Алсо, старайся не сокращать так слова. Поставь нормальный редактор с автодополнением, если тяжело печатать так. > floor($thou%100) <= 11 && floor($thou%100) >= 19 ? $value = " тысяч " : (> floor($thou%10) == 1 ? $value = " тысяча " : (Это же кошмар. Надо пытаться писать как можно более простой и логичный код, а не соревноваться кто сможет сложнее его запутать. Это надо переписать ифами. > function assemblyFunc($num){> global $units, $from11To19, $tens, $hundreds, $thousands, $millions;Хорошая функция получает все, что ей надо на вход через аргументы. То, что ты прибегаешь к глобальным переменным говорит о том что ты не смог правильно спроектировать эту функцию. Подумай, что тут будет входными параметрами. Также, название функции должно начинаться с глагола.> $numericArr = str_split($num, 3);Число это не строка, надо использовать математические методы (деление на 10, 100 и тд). Ну и у тебя тут будут потенциальные ошибки. Что если число содержит всего 1 цифру? Вот https://ideone.com/s9ZuhK тут твой код дает ошибку обращения к несуществующему элементу массива.> foreach($numericArr as $key => $triple){> global $units, $from11To19, $tens, $hundreds, $thousands, $millions;Зачем ты второй раз тот же самый глобал пишешь? Ты по моему что-то путаешь. > $numericArrDoubleОчень неудачное название - непонятно что там хранится> return $partNumStr;> }return $partNumStr;Зачем ты 2 раза return написал? В общем, пока не годится. Ты забыл что копипаста это зло, что код должен легко читаться.
>>673862Нет, но в 99% случаев это и не требуется.>>673873Лучше наверно в ява или ньюфаг треде спросить.>>673946через query string (GET)>>673965Код статуса передавай через GET (/?notify=success). Если сообщение зависит от статуса, передавать его не надо, если там дополнительные данные - либо черз GET либо через сессии (гугли реализацию flash messages) но сессии имеют тот недостаток что разделяются между всеми вкладками браузера + при ошибке загрузки страницы и перезагрузке страницы сообщение потеряется. Традиционный способ все же лучше.>>673966 > месседж можно выполнить с помощью обычного аллерта.Не надо так, жутко бесит окно блокирующее страницу
>>674002А на оф сайте его не скачать отдельно? В линуксе он скорее всего есть в пакете сфинкса и ставится куда-нибудь в /usr/share>>674003Он скорее всего есть в пакете сфинкса либо отдельеым пакетом. Отдельно неудобно так как версии могут не совпадать.>>674112 Если эксель генерирует файл с нарущением правил CSV, значит придется разбирать файл вручную или как-то преобразовывать.Также, можно попробовать опеноффис - может он лучше CSV поддерживает.Также, у меня ощущение что ты что-то напутал, у меня с опенофисом и CSV все работало.>>674119Проверь какой получается HTML код, какие там обработчики ставит Юи - по моему там валидация делается то ли аяксом то ли яваскриптом. Так непонятно в чем проблема.>>674268 Через строку запроса в URL>>674299Это только в командной строке
>>678118>Есть ли какие-нибудь максимально нищебродские варианты для этого?Сделать себе локальный сервер. Я не знаю зачем ты заливаешь свои образовательные эксперименты в интернет, но в php есть команда exec которая сможет выполнить любую команду. Таким образом, в теории, можно будет скачать композер через wget и запустить его, но я думаю что такие вещи админы бесплатных хостингов запретили. Конечно, никто тебе не запрещает при синхронизации заливать только те файлы которые изменились.Ну и для сравнения самый нищебродский вариант на DigitalOcean за пять долларов дает тебе SSH, это если ты смотришь в сторону платных хостингов.
>>674358 Если каждый день писать код, то не забудешь. Ну то есть ты поначалу будешь лезть в мануал или учебник, но постепенно запомнишь самые нужные функции. Мозг видит что какая-то вещь тебе нужна и запоминает ее.Алсо, если ты натыкаешься на что-то что изучал ранее, то скорее всего вспомнишь даже если думаешь что забыл. А вообще, я не разбираюсь в этом. Я например изучаю кандзи и забываю их, запоминаю только те, которые встретил много раз или у которых есть интересные особенности или которые как-то связаны (вроде того что слово "молодость" состоит из "зеленый" и "весна", а "осень" = "дерево" + "огонь") и тд. Видимо все дело в повторении и взаимосвязях. >>674382Тогда думай как меньше времени тратить на работу, или может можно как-то читать уроки по дороге на работу или еще как-то. Я когда-то работал, а после работы приезжал домой и фрилансил, тяжеловато конечно постоянно так жить.>>674389Не помнишь - вспоминай и заново читай мануалы. Закладки делай в браузере. Рано или поздно запомнишь. >>674390 Надо писать больше кода>>674399 Бутстрап это набор готовых элементов. Изучать CSS все равно надо, сначала ты в совершщенстве изучаешь CSS а только потом верстаешь.
>>674579 Освещение, настройки яркости/контрастности крути. У тебя монитор через цифровой выход подключен? Разрешение родное? Алсо, бывают (раньше были) плохие матрицы, где очень низкая контрастность, то есть темные цвет не очень темный - это тоже плохо. Сейчас вспомнил что у меня в университете тоже когда-то глаза от тамошних ЖК мониторов уставали.> Бывают ли хорошие ЖК-мониторы,Бывают. >>674698> Вот вроде понятны все преимущества но когда сам пытаюсь получается тот же самый css и длинные классы вместо каскадности.БЭМ вообще то этого и требует. И ничего хорошего в "каскадности" нет, сколько я не видел кода на less - быдлокод где идет каскад вроде .some-class div span div span. Не надо так писать. Изучай БЭМ лучше.>>674708 > if ($compulsoryPayment > $monthlyPayment) {> elseif ($compulsoryPayment < $monthlyPayment) {А что если они равны друг другу? Это не учтено.> elseif ($creditBalance >= 0) {Он тут никогда не сработает так как для этого надо чтобы 2 предыдущих условия не выполнялось. Брейк надо делать в ветке где долг маленький.Алсо, подумай как можно заменить if на функции min/max.>>674852> if(mysqli_num_rows($from_query) ==1)> elseif(mysqli_num_rows($to_query) ==1)Почему ты решил что там ровно 1 запись? Советую переучиваться - код ужасного качества, так писать нельзя. Ужасно, все написано стеной без разбиения на функции, SQL код перемешан с логикой, про плейсхолдеры и обработку ошибок ты не слышал, SQL инъекции присутствуют.Ты выбрал какой-то плохой учебник - код надо полностью переписывать.
>>674858 брейк надо в ту ветку где долг маленький>>674865 Норм, хотя если все фразы различаются только цифрой то лучше было бы только эту часть поместить в массив. Не надо копипастить. >>674922Гет параметры используй>>674974 Он просто удаляет авторизационные куки.>>675021> http://ideone.com/rciJYxВсе правильно сделал>>675030Для формы поиска в бутстрапе есть готовый компонент.>>675089Обычно через 6-12 месяцев (cooldown) можно повторить попытку. Ну и такой вопрос можно прямо задать компании - напиши что подучился и хочешь снова попробовать, когда можно будет повторить попытку?
>>675220нужен конфиг апача>>675276> if ($i == 2) {> break;Неправильно сделано. Надо в шапке цикла прописать "продолжать цикл только пока i меньше 2", а так делать не надо.> for ($i = 1; $i > 0; $i++) {Какой смысл имеет $i > 0? Продолжать цикл вечно? >>675402 Если ты не читал об этом, для тебя бы тоже возможно было неочевидно.>>675497Куки нужны для хранения каких-то постоянныех параметров или настроек, тут подходят параметры в query string.>>675586Для начала нужно смотреть логи Апача.>>675608Можно бы вместо уменьшения length вычислять позицию последней буквы или использовать отрицательные числа.
>>675801Название странное. Почему PostForm? Если это форма логина - так и называй ее.>>676220> if ($compulsoryPayment > $monthlyPayment) {> elseif ($compulsoryPayment < $monthlyPayment) {А что если они равны? Также, подумай как можно объединить похожий код в 2 ветках if, тут поможет функция min или max.>>676252> 39999 + 7777,Лучше бы передавать 7777 отдельным аругментом, это же как бы отдельное условие для кредита. Подумай как убрать повторяющийся код в ветках if>>676298Изучал бы уже 2-ю версию. > При попытке незарегистрированного пользователя запросить недозволенный url его перекидывает на страницу логина, это хорошо. Проблема в том, что нужно же как-то сообщить пользователю, что произошло, а не молча редиректить.Можно использовать GET парамтетр: /login?from=/some/page&reason=need_login> Что у нас есть из инструментов? Есть HTTP_REFERERНеправильно. реферер по стандарту не обязан передаваться и не стоит на него завязываться. Более того, мой способ надежнее. > и есть такая штука как Yii::app()->user->returnUrl с довольно странной реализацией.Лучше не использовать тут сессии так как сессия одна на много вкладок.> Документация у yii мутная и бессвязная,читай исходники> Значит если после того как юзера перекинет на страницу авторизации он вручную походит по другим страницам, а потом вернется назад на страницу логина, то returnUrl по-прежнему будет хранить последний адрес запрещенной страницы.Потмоу надо использовать query string. В общем, ты там себе голову сломал, а все из-за непоимания того как работает протокол HTTP.> Решил этот вопрос костылем с реферером.Это именно что кривой костыль> То ли у меня не хватает опыта,Не хватает знания HTTP и того какие в нем есть средства для передачи данных (куки, URL итд). Ну и опыта, да.>>676648Не знаю. Может тебе CMS искать? >>676693> Перед тем как значения отправятся в класс формы, значения $_POST пока не существуют,POST существует всегда, только может быть пуст. Использовать его надо если HTTP метод == POST> foreach ($_POST as $value) {> $value = is_scalar($value) ? $value : '';> $value = trim($value);Это не меняет значения в POST, также ты не должен пытаться их менять. Вообще, тут все неправильно. Ты читал мой урок про работу с формами?
>>67812310 пробовал на виртуалке? 8 шустрее, чем 7, 10 шустрее, чем 8. Видимо, научились оси пилить наконец.
>>673314>>673310>бросить айтиИ дальше что? Ты, видимо, не в курсе ситуации в других профессиональных сферах - там она намного хуже. Ойтишники просто не представляют себе, насколько они охуели и зажрались.
>>678148Ей вроде нужна какая-то фича в процессоре, которой у меня то ли нет, то ли в виртуал боксе нет. Она наверно в 32-разрядной системе и не пойдет. А вообще семерка мне понадобилась только ради анализа снятых xperf трейсов.
>>678150>там она намного хужеВ том числе и по зарплатам. Особенно по зарплатам. Нигде больше не будут платить ни за хуй собачий. Я безмерно рад тому, что живу во время обезумевшего IT-хайпа, и не знаю, что бы ленивая жирная свинья вроде меня делала, родись она лет на 20 раньше. Наверное, я бы повесился нахуй.
>>678127>Неправильно, это вообще глупая затея и медленно. Лучше сделать скрипт который будет запускаться вручную, находить и загружать изменившиеся файлы.При сохранении в нетбинсе заливается только конкретный сохраняемый файл. А синхронизация, опять же, должна затрагивать только измененные файлы, но на медленном хостинге это, конечно же, тоже очень небыстро.>>678136>Я не знаю зачем ты заливаешь свои образовательные эксперименты в интернетхочу поковырять всякие социальные АПИ, им вроде как обычно нужен адрес до которого они могут достучаться.
>>678155А бизнесом нельзя каким-нибудь заниматься? Неужели все дело в айти? Варламов пишет он 3д моделированием первые деньги заработал.
>>678157В кремлевской кормушке твой Варламов зарабатывает. А 3д моделирование это чтобы ничего такого не подумали.
>>678157Ойти можно рассматривать как бизнес, почему нет? Пока IT-бизнес у нас еще не задавили, хотя поползновения имеются. По крайней мере, ситуация здесь куда лучше, чем в каком-нибудь продуктовом, где к тебе выстроится огромная очередь проверяющих с протянутой рукой.>ВарламовНе говорит, сколько ему Потупчик перечисляет? Ну и правильно.
>>678142>Куки нужны для хранения каких-то постоянныех параметров или настроек, тут подходят параметры в query string.Ему там авторизация нужна, как я понял. Для неё использовать куки.
>>673310До тех пор пока нам не закроют интернет окончательно, проблем с айти вакансиями не будет. В западных странах полно контор, в которых управляющие мечтают заменить разжиревших местных программистов получающих $100/час на неприхотливых дикарей, для которых и 15/час - заоблачные суммы.
>>678162А что делать людям, которым неинтересно программирование или надоело? Хотя это конечно оффтопик.Алсо на западе та же ерунда, непрограммисты живут довольно бедно, https://vc.ru/p/yelp-fired
>>678163Нет, ему надо выводить сообщение почему пользователя перебросило на форму логина. И сохранять обратный адрес для возврата.
>>678175>что делать людям, которым неинтересно программирование или надоелоНе знаю.>непрограммисты живут довольно бедноНу, блджад, это охуеть пример, конечно - Сан-Франциско и СИЛИКОНОВАЯ ДОЛИНА с охуевшими работодателями и риэлторами, дерущими по три шкуры. Работодатели там могут предложить зарплату ниже среднерыночной, т.к. там на каждую вакансию толпа народу, жаждущего работать в ТАКИХ-ТО КОМПАНИЯХ, и это еще касается IT-персонала. Как там жить понаехавшей обслуге типа курицы из статьи по ссылке, я не знаю. Это как понаехать в Москву из мухосрани и жаловаться, что 30 тыщ за работу кассиром в Ашане хватает только на съем халупы в трех километрах от метро - у нас-то это никого почему-то не удивляет.
Переходите в новый тред >>678185 (OP) На посты за 4-6 марта, на которые я пока не ответил, я отвечу тут. Не пишите здесь больше. Переходите в новый тред.
+--classes - тут у меня родительский класс Class.php||+--subclass - тут у меня класс наследующий класс /classes/Class.php с именем Subclass||+index.php - а тут я создаю экземпляр SubclassКак мне сделать, чтобы всё это автоматически подключалось и не нужно было бы при добавлении новых классов писать бесконечные include
>>678183> Это как понаехать в Москву из мухосрани и жаловаться, что 30 тыщ за работу кассиром в Ашане хватает только на съем халупыМожно не ехать в Москву, аренда жилья дешевле но и зарплаты намного ниже. Думаю и в США так же - в СФ минимальная з/п $12.15, а в других штатах может быть 6-8 в час. Алсо пост в оригинале читать интереснее, и комментарии тоже.Переходите в новый тред >>678185 (OP)
>>678190В новый тред плиз.Тебе же выше написали про файл boostrap.php >>675906 АЛсо читай пост про автозагрузку https://github.com/codedokode/pasta/blob/master/php/autoload.md
Первая задача по css https://jsfiddle.net/a0a7e51v/ если есть время, можете проверить?
>>678175>Алсо на западе та же ерунда, непрограммисты живут довольно бедноНа западе врачи и юристы например, получают куда больше программистов, а эта тян могла бы снимать квартиру с кем-то вдвоём и у ней бы не было проблем тогда.
>>664784 (OP)Упражнение "Клавиша Шифт" в "Повторим?":http://ideone.com/g82wBbЧто-то мне подсказывает, что есть метод получше.
Вторая задача по css https://jsfiddle.net/aeqp2pq5/
>>678130>Что ты за ерунду пишешьБратишка, ОП, согласен со всем, именно поэтому и не пропустил эти уроки на HTML и CSS.Но я ведь изучаю только для своего проекта, мне кажется, вполне хватило бы и поверхностных знаний для такого.Однако решаю все эти задачи ещё и просто из-за уважения к тебе - ты плохого не посоветуешь. Также хочу после того, как достигну кондиции, сделать сервис для братишек и себя по твоим урокам, который будет позволять отслеживать овладение предметом. Список с простановкой "галочек" и заполнением общего прогресс-бара изучения, возможность хранить ссылки на Идеоне со своими решёнными задачами, а также твои ответы и разборы задач - чтобы переработать свою задачу, когда захочется вернуться и сделать всё по-человечески. Думаю, вполне будет мне по силам через некоторое время.Ну и просто есть Bootstrap, есть готовые шаблоны для фреймворков - для моего проекта, ради которого стал всё изучать, этого всего было бы достаточно.Пока всё доделываю главное задание - шаблон страницы. Всего ушло на это три недели, многими решениями не доволен, кое-какой момент не удалось решить (data-ref в задаче про "непредсказуемость непредсказуема").Просто пытаюсь оправдаться перед тобой: я жалуюсь, но ведь делаю. Многие, кто не жалуется, - и не делали ничего, просто перешагнули.
Четвёртое задание по CSS https://jsfiddle.net/j3hsp8bg/
Пятая задача https://jsfiddle.net/smpwuf8k/
>>678212 $clearedSentence = preg_replace('/[ ]{2,}/', "", $currentSentence); $noSpaceComas = preg_replace('/[ ],/', ",", $clearedSentence); $addSpaceComas = preg_replace('/,/', ", ", $noSpaceComas); $clearSpaces = preg_replace('/[ ][ ]/', " ", $addSpaceComas);Вот это всё - жуткий быдлокодинг.Тут надо два массива с регулярками и заменами, всё пропустить через одну функцию preg_replace.
>>678250>>678255===> >>678188
Задание 6 https://jsfiddle.net/t03a2v4q/ что-то я не смог справиться без вот этого селектора * { } в рекомендациях написано его не использовать, но а как скинуть все стандартные отступы?
>>678176Смешались в кучу кони, люди…Речь вот об этом >>674922
>>678132>>678142ОП, спасибо, читаю кинутые тобой доки, в который раз понимая свое неумение гуглить и важность сначала посмотреть на сайте авторов апача/пыха, а не на васянских.Только я не совсем понимаю:1) Есть ли какая-нибудь разница между<VirtualHost _default_:80> и <VirtualHost :80>Результат работы какой-то одинаковый у обеих.2) Если :80 или _default_:80 указаны НЕ самым первым виртуальным хостом, но по умолчанию (например, по 127.0.0.1 или белому ip) все равно откроется тот виртуальный хост, что прописан первым, а не этот дефолтный. Какой тогда смысл? Перезагружал, три раза.3) Я хотел попробовать разместить разные сайты на разных портах (один виртуал хост на 80ом, другой на 81ом), но соснул хуйца. Это из-за того, что 81ый порт не слушается апачем или потому, что он закрыт? Как исправить? Можно ли наоборот вообще запретить апачу и мускулу работать с внешней сетью, будучи доступными только для локалки (типа безопасность тестового сервера)?
>>679042ПЕРЕСПРОСИЛ В НОВОМ ТРЕДЕ
привет анончик, сейчас закончу книгу Кевина Янка по пхп и ворвусь сюда писать файлообменничек. Пока реквестирую ваше резюме. Обезличьте плз, мне интересны вот какие моменты:1) Курсы и вебинары всякие вы записываете в резюме?2) Книги?3) Как оформляли портфолио проектов своих?А резюме в целом нужно для понимания как программист себя представляет на рынке.Спасибо, анончикмимо-сеошник/верстальщик-переходящий-в-кодеры
>>679502>кевин янкЭто книга для энтри левела или как?
>>679751да, я прошел кодакадеми и теперь взялся за Кевина. Просто поэтапно поясняют за пхп, ооп и скл и потом на основе знаний заставляют писать свою небольшую цмску. Дальше лежит Мэтт Зандстра.
>>679751единственное, что меня в ней смущает, так это конструкции try-catch. Когда я гуглил про pdo (http://phpfaq.ru/pdo)в этой статье такой метод обоссали - использование try-catch. Их очень дохрена выходит. Вообще какой в них смысл? Ошибка если есть то и так вываливается. В книге аргумент, мол, зайдет юзер, а у тебя кусок кода с паролем-юзером БД вывалится.
Мы 2 дня уже сидим в новом треде >>678185 (OP) Не пишите тут ничего, пишите в новом треде.На посты с 4 по 6 марта я напишу тут ответы - может вечером, может завтра, как время будет.
Привет.Джва вопроса:1. Почему \n не переносит строку? Использую Апач+пхп, т.е. запускаю файлы с программой в броузере.2. Зачем в еcho переменные пишутся в скобках: echo "Foo {$bar}" ?
Анончик, а почему ОП ругается из-за занесения в функцию массива, содержащего слова?
>>676924 > define( 'UNDEFTOK', '0' );Лучше испьзовать константы класса. Имена лучше давать полные, например TOKEN_UNDEFINED, чтобы не надо было расшифровывать сокращенияТо же касается и переменных, не надо сокращать так: tok, tok_type> private function isoperator($tok){> return preg_match_allДля проверки на соответсвие выражению нужен preg_match, незачем искать все совпадения. Более того, тут наверно проще было бы проверять через in_array по массиву знаков.Слова в имени функции надо разделять: isOperatorКласс спроектирован плохо, это не ООП а просто свалка из функций. Вот смотри, какие есть публичные поля и методы: class Calculator {public $parse_string = "";function __construct($str);public function get_token();public function compute();public function addOrSubtractMembers(&$result);public function multiplyOrDivide(&$result);public function processingDegree(&$result);public function unaryOperation(&$result);public function processingBrackets(&$result);public function receiveValueNumber(&$result);}Вот теперь попробуй по списку понять какие методы надо вызывать и в каком порядке. Я не понимаю, например. Публичными должны быть только методы, которые должны вызываться с наружи. Их можно вызывать в любом порядке и они должны всегда возвращать корректный результат. Также, класс называется Калькулятор и можно подумать что он может вычислить несколько выражений. Но тогда почему ему в конструктор (один раз) передается какая-то строка? Если он вычисляет только одно выражение, то как минимум он должен называться по-другому.Вот как в моем понимании выглядит класс Калькулятор: class Calculator { public function compute($expression)}Вот как может выглядеть класс, представляющий одно Выражение: class MathExpression { public function __construct($expression); public function compute();}Посмотри на эти примеры и сравни со своим кодом. Более того, тут можно было бы вынести наружу класс, делающий токенизацию и отделить его от парсинга. Например так: class Tokenizer { __construct($expression); public function fetchNextToken();}Также по моему опыту, иногда бывают полезными дополнительные методы, например peekToken (посмотреть следующий токен не поглощая его), consumeToken($type) (вызывает ошибку если идущий далее токен не такого типа). Около констант токенов стоит написать комментарии. У тебя же токенизация и парсинг смешаны в один класс. У тебя я вижу используется recursive descent. Стоило бы упомнянуть это в комментарии.> public function unaryOperation(&$result)Почему аргумент передается по ссылке, а не возвращается через return? Зачем усложнять? Также, имя функций начинается с глагола.> private $token_type = 0;Разве тип токена не константами должен обозначаться? Почему ноль? > private $token_type = 0;> $this->tok_type = ENDPARSE;Название поля написано по-разному.> echo "Выражение отсутствует";Почему класс что-то выводит на экран без разрешения? > echo "Делим на ноль";> exit(-1);Для этого есть исключения> $this->get_token();> if($this->token == ""){Странно что функция не возвращает значение напрямую через return, а используется более сложный способ в котором мы обращаемся к не связанному на первый взгляд с функцией полю. > public function multiplyOrDivide(&$result){> $temp = 0.0; > А правильно что тут начальное значение ноль? А, оно не используется. Но все равно странно смотрится.В общем, я вижу что с алгоритмом парсинга ты разобрался, а с ООП и оформлением кода пока все плохо. Давай исправим программу.
>>682802Потому что можно сделать универсальную функцию склоняющее любое слово. То есть нет никакой необходимости вообще закладывать конкретные варианты слов в функцию. А те кто закладывают делают функцию менее универсальной и усложняют код непонятно с какой целью. Надо делатьт проще.
>>677113Потому что у mb_substr 3 аргумента, а не 4.Скобки тут работают так же как в математике - задают порядок выполнения операций.>>677225Брр, синглтоны, я думал мода их писать везде давно уже прошла.>>677257Да, ты прав. Знаешь, как исправить? наверно сделать еще проверку что стек не пуст - не поможет так как там минус идет как оператор с 2 аргументамиТакже, я заметил еще одну вещь, которую можно улучшить: > protected $associative = null;> if (is_null($this->associative)){> throw new Exception('Associative is empty');Это проверка, не забыли ли при наследовании класса определить поле. Такие вещи лучше делать через абстрактные методы: abstract function getAssociativity();> '+' => 'add',В новом PHP можно исплоьзовать сразу имя класса (и получить проверку интерпретатором что оно правильное): '+' => AddOperator::class>>677457Надо смотреть как читается лучше.>>677919Зависит от задач. Можно использовать display: table или float. А вот зачем ты в кучу мешашь флоаты и инлайн-блоки - не очень понятно.
>>677984centerX/Y лучше бы вычислять из ширины/высоты, а не прописывать руками. Коэффициент не очень точно подобрал - у меня круг получился сплюснутый по вертикали слегка - хотя может у меня просто другим шрифтом отображается, из-за этого.Так, в общем, верно решено.>>677998 Тебе я выше написал замечания по предыдущей версии, посмотри их сначала. > global $token, $token_type, $exp_ptr;Это плохо. Глобальные переменные плохи тем что с ними непонятно вообще кто и где их модифицирует. Вообще, код как-то весь перемешан и в нем трудно разбираться.Использование регулярок по моему неудачная идея. Вот как это проверить? Как гарантировать что оно во всех случаях будет правильно работать? Если ты уж хочешь использовать регулярки - используй их на полную мощь как описано тут https://habrahabr.ru/post/171667/ . > /(^-[\d\.]{1,})Это не увидит унарный минус внутри скобок> if(preg_match_all("/(\()/u", $stringExpression, $match) != preg_match_all("/(\))/u", $stringExpression, $match))лучше substr_count> "/([\/\*\-\+\^\(])(\-[\d\.]{1,})Это заменяет некорректное выражение вроде --6 на корректное -0-6В общем, мне кажется подход выбран не очень удачный. > function convertReversePolishNotation(&$stringExpression){Что за наркоманство? Почему аргумент по ссылке? Надо думать, что функция получает на вход, что дает на выходе - у тебя этого нет, ты передаешь половину данных через аргументы, другую половину через глобальные переменные и не умеешь пользоваться ретурном.> function compute(&$stringExpression){Почему передача по ссылке? Функция при вычислении еще и ломает исходное выражение? не могу представить зачем это нужно.В одной функции ты используешь стек, а в другой все валишь в массив. нужно единообразие наверно. > if($stack->count() == 0){> $stack->push($token);> } else {> if(returnPpiopitet($token) > returnPpiopitet($stack->top())){Некрасиво. Надо сделать функцию возвращающую можно ли положить токен в стек или нет.Функция function convertReversePolishNotation(&$stringExpression) слишком длинная. Надо разбивать на части.В общем, надо переделывать код.>>678209> width: 66%;> border: 1px black solid;> margin-left: 34%;Одно из 2 тут лишнее - либо margin-left либо width. Также, с учетом бордера в сумме получилось на 2 пикс больше чем 100%. Ты учел что блоки автоматически растягивают свою ширину и ее можно не указывать.
>>678212> [ ]можно писать просто пробел или \\s> = preg_replace('/[ ]{2,}/', "", $currentSentence);Это склеит слова если между ними 2 пробела.> $noSpaceComas = preg_replace('/[ ],/', ",", $clearedSentence);> $addSpaceComas = preg_replace('/,/', ", ", $noSpaceComas);Это надо объединить в одну регулярку, зачем две? Тут достаточно 2 регулярок: первая для исправления пробелов вокруг знаков препинания, вторая для исправления многократных пробелов.> $clearSpaces = preg_replace('/[ ][ ]/', " ", $addSpaceComas);Ну ты ведь уже удалял пробелы, тут достаточно делать это один раз.Так как текст тут один и тот же, можно не создавать переменную после каждого преобразования, а использовать одну и ту же.>>678226> max-height: 600px;Почему 600? Откуда эта цифра? И зачем это? Там максимальная ширина должна быть 600, а не высота. Также, ты не сделал зеленый фон. Почему? Не умеешь определять цвета по картинке? Возьми инструмент пипетка в графическом редакторе.В общем, задача требует доработки.>>678230 > я ведь изучаю только для своего проекта, мне кажется, вполне хватило бы и поверхностных знаний для такого.Может да, а может и нет и ты много времени потреяешь на исправлении верстки например> Ну и просто есть Bootstrap, есть готовые шаблоны для фреймворков - для моего проекта, ради которого стал всё изучать, этого всего было бы достаточно.Да не факт. Бутстрап не заменяет знания КСС и ты это поймешь как только захочешь сделать чуть не так как в примерах.> кое-какой момент не удалось решить (data-ref в задаче про "непредсказуемость непредсказуема").Там надо использовать псевдоэлемент и функцию attr. погугли.Ну и смотри, это ты сейчас думаешь что тебе только для совего проекта, а потом тебя например позовут куда-нибудь в реальнй проект, а ты ксс не знаешь.
>>678250 расстояние между желтыми блоками больше 10 пикс - изучи подсказки к задаче.Также, цвета хорошо бы сделать как на картинке.>>678255> span {> display: inline-block;Вообще-то это неправильно. Вот смотри что будет если выделенный текст занимает несколько строк: https://jsfiddle.net/smpwuf8k/1/ - этот текст вырывается в отдельный блок. Изучи как ведет себя свойство display: inline, чем инлайн-элементы отличаются от инлайн блоков - это важно. И конечно читай учебник на сайте softwaremaniacs если ты его еще не читал. >>678285тебе не надо сбрасыать все отступы у всех элементов. Надо исправить только то что нужно тебе. Потому звездочка тут и не нужна. Звездочка почти всегда признак неграмотности верстальщика. Отступы между пунктами меню надо сделать больше.Шрифт не тот - там требушет. Цвет заголовка не тот.Почему заголовок сделан тегом h3? Почему ты именно его выбрал? Что значит цифра 3 тут? > div {> padding: 5px 10px;Это неправильный селектор. Вот захочет кто-то доабвить на страницу новый блок, а к нему твои паддинги применятся. Надо применять правила только к своим элементам, а не ко всему подряд.> <div class="title">> <h3>ООО АГРОСЕРВИС</h3>Зачем тут div.title? Если текста много, он заваливается на меню: https://jsfiddle.net/t03a2v4q/3/Если в тексте есть цветной див, он проваливается под меню: https://jsfiddle.net/t03a2v4q/4/Если убрать меню, текст уедет влево. Нужно исправить все эти недостатки и сделать более надежную и прочную верстку.>>678439 Да, я мог перепутать.
>>6795021) не пишу. Если курсы серьезные то можно указать.2) не пишу, бред же. 3) скриншот + краткое пояснение что я делал >>680264 Тебе надо разобраться в обработке ошибок и исключениях. Как по твоему надо обрабатывать ошибки? Читай урок про исключения, https://gist.github.com/codedokode/65d43ca5ac95c762bc1a>>680581### переносы строк и brЧтобы переносы строк нормально работали и в браузере и в ideone (и в консоли), можно использовать для этого \n, а в начале программы поставить header("Content-Type: text/plain; charset=utf-8");Это заставит браузер воспринимать то, что выводит твоя программа, как обычный текст, а не HTML, и уважать переносы строк в нем (так как в языке HTML перенос строки равносилен пробелу).Иначе перенос строки будет в исходном коде страницы (его можно увидеть нажав Ctrl + U), но на самой странице его не будет.> Зачем в еcho переменные пишутся в скобках:мануал http://php.net/manual/ru/language.types.string.php#language.types.string.parsing
Не пишите больше тут, переходите в новый >>678185 (OP)Если я вас пропустил, напомните о себе в новом треде.
Более адекватной шапки и ОПа я не видел, наверное, никогда на дваче за 5 лет. Моё уважение всему, что ты здесь делаешь, это очень и очень здорово.Не обоссывайте только, решил намазаться веб-кодингом, нашёл видеокурсы Евгения Попова по html и css, сейчас на завершающей главе html, делаю всё за ним, разумеется, пока получается, ибо тут только дурак не справится. Этот Попов вообще норм чел? И по какому пути следовать при обучении:1)HTML > CSS > JavaScript (+JQuery) > PHP+MySQL;2)HTML > CSS > PHP+MySQL > JavaScript (+JQuery);3)HTML > PHP+MySQL > CSS > JavaScript (+JQuery)?Сейчас объясню, что мне хочется. Я просто сам по себе пока не получу первый мало-мальски годный результат, не смогу углубиться полностью в изучение. В каком порядке мне лучше изучать всё это, чтобы я как можно быстрее смог заработать первые доллары? Это не значит, что я сразу полезу везде орать, что я у мамы программист, просто после этого я буду уверен, что время трачу не зря и заработать ТОЧНО смогу и буду углублённо изучать каждый элемент. В общем, в какой последовательности мне это учить для достижения быстрого результата? И в какой лучше с точки зрения рациональности и вашего опыта?
>>689172И да, по времени, если можно, проконсультируйте меня, сколько дней уйдёт на обучение по двум моим веткам (быстрой и рекомендованной). Я просто учусь и подрабатываю немного, хотелось бы рассчитать, могу ли дропнуть работу, чтобы потратить всё время на обучение и уже начать зарабатывать на жрат.
Где взять какой-нибудь пак задач, которые похожи на те, которые на сайте в шапке? Хочу научиться пользоваться стандартными функциями как гуру. Спасибо
>>664784 (OP)Ребят, как настроить xdebug в open server на phpstrom? Что бы можно было по людски выделять строчку, и нажимать жучка и видеть в консоли что хрониться в переменной, делать пошаговую отладку?
А как вообще в жизни выглядит написание сайта?1)Берётся WordPress, вставляются туда свои данные, картиночки, ???????, PROFIT!2)Берётся WordPress, делается основной каркас, затем открывается код, плюётся на индусопись, стирается, пишется руками на пхп.3)Сразу берётся и пишется руками на пхп?4)Берётся уже написанный ранее сайт, редактируются css-стили, вставляются новые картиночки, новый сайт готов?
>>689922От задач зависит, так делаются сайты - визитки
Пограммисты-пограммистушки, поясните за кодhttp://ideone.com/OWQsMAСначала нужно проверять имя, это чекЗатем номер - чекЗатем в номере только цифры - не чек.Если ввести буквы - выводит что номер превысил 13 символов.Как бы вы сделали и в чем упущения?До этого вообще проверки с регулярками не юзал, только на ограничение символов.
Подскажи, Двач, я уже охуел искать что не так! Всё установил - нихуя не могу запустить!
В чём преимущество пхп? Почему стоит учить его, а не другой?
Вот решил задачу в "Объекты в PHP, часть 2"Правильно все ли я сделал?Есть замечания?Код по ссылке.http://pastebin.com/bFdzVPWWЗаранее спасибо
Выручайте, няши, запарололся на самой простой задаче в регулярных выражениях.http://ideone.com/e.js/wAJYbGНужно проверить соответствует ли текст нужному шаблону.
>>664784 (OP)Аноны, помогите! Выкатил сайт, а в нем такая проблема:Allowed memory size of 134217728 bytes exhausted (tried to allocate 80732160 bytes)на такой строчке echo file_get_contents('filename.7z');Так вот вопрос: есть ли способ из пхп выдать файл клиенту не загрузив его в память? Редирект не катит сразу. Щас склоняюсь к варианту настроить htaccess чтоб если правильный айпи то отправляло сразу на файл в обход пхп.Какие есть идеи?