• Чем плохо написание кода функциями?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Зачем нужен ООП?
    Кратко зачем ооп вместо функций:
    1) Снижение сложности кода(да, звучит странно, но на самом деле именно так и есть - сложные вещи пишутся 1 раз, а далее вы пользуетесь практически предложениями естественного языка и описываем реально существующие манипуляции с реальными объектами, например $user->getName(), $image->rotateLeft()...)
    2) Инкапсуляция - все что делает объект изолированно внутри одного инстанса, вы работаете по сути с отображением реальных объектов в цифровой мир(+ этот объект может быть сколь угодно сложным внутри, наружу он смотрит простыми методами для возможности операций над ним).
    3) Снижение затрат памяти - классы подгружаются только в необходимом объеме и в нужно месте, в процедурном подходе все функции грузятся сразу.
    4) Локализация кода - всегда логика одной сущности доступна в одном месте, не размазана по функциям и коду. Это такой нехилый бонус к инкапсуляции, и при рефакторинге вам не надо переписывать кучу кода, если объект был изначально правильно построен, максимум поменять немного логику внутренней обработки данных.

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

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

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    1) Сокеты - более дорогое по ресурсам соединение, ибо занимает слот и не умирает, оно выгодно там где в нем есть необходимость. В спа такой необходимости нет.
    2) Писать код (и потом его обслуживать) как на фронте так и на бэке проще(читай дешевле) в классическом стиле, нежели оборачивать все в сокет. А бизнес не любит тратить лишние деньги. Это и к п. 1 относится.
    3) Stalker_RED пишет что с кешированием могут возникнуть нюансы, я сходу не могу сказать так ли это, имхо в этом проблем не будет, если вы будете тащить сокетом только разметку, а статику брать по православному хттп. В случае статики по сокету конечно же вы хапнете этой беды по полной. Больше меня смущает как будет видеть страничку поисковый бот, но тут уже не узнаешь пока не построишь.
    Ответ написан
    Комментировать
  • Как найти в базе похожие записи?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    разовая, когда из импорта приходят данные,
    Тогда достаточно банально,
    селект где pid = 0 и width = 0,
    затем уже в пыхе перебор строк,
    експлодим name пробелом,
    выбираем все строки где name теперь массив длинной 1(это будут корни) в отдельный массив
    и ключами в этом массиве делаем name.
    Еще один раз перебираем массив строк с проверкой или массив длинной более 1 в name,
    после чего из name[1] вытаскиваем чистую цифру(убираем скобки), записываем в width,
    из name[0] получаем ключ к массиву корней, из которого достаем id, и кладем в pid.
    Всё, строчки упдэйтнуть в базу.

    Вполне возможно где-то можно улучшить алгоритм, но "в лоб" - это самый очевидный вариант.
    Ответ написан
    2 комментария
  • Реален ли поиск палиндромов в огромном тексте на js в браузере?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    пару замечаний:
    // remove all special characters - вероятно сделать 1 раз для всего текста будет эффективнее чем дергать каждый раз в цикле.

    function reverseString(str) {
        return str.split("").reverse().join("");
    }
    скорее всего (не факт) будет работать быстрее развернуть всю строку и проверить на равенство.
    Ответ написан
  • Как исправить ошибку iconv?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - зачем конвертить православный UTF-8 в богомерзкий Windows-1251 в 2019 году?
    Во вторых - это не ошибка, а нотис
    В третьих - в UTF-8 овердофига символов которые не влазят в 1251, что в итоге и дает такое предупреждение. Если просто вас раздражает нотис который агрится на некий непонятный символ пишите iconv('UTF-8', 'Windows-1251//IGNORE', $line)
    Ответ написан
    2 комментария
  • Как сделать бонус каждые 24 часа?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если пользователь зарегистрирован, заводим в бд поле datetime получения бонуса, при получении заносим текущую дату-время. При следующем нажатии проверяем прошли ли сутки и посылаем или даем бонус.
    Ответ написан
  • Как распределить прибыль от приложения или игры?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если у вас уже была договоренность - то согласно ей и делайте, если вы с ней не согласны - аргументируйте и договаривайтесь.
    Можете ориентироваться на цены за час работы например, или хотя бы установить равную цену за час и посчитать отношение трудозатрат.
    Если договоритесь на 1% - значит 1%, договоритесь 50% - значит 50%. Что за вопрос глупый? Все решается переговорами, можете вообще выплатить ему стоимость работ и забрать прибыль себе если другого не оговаривалось.
    Ответ написан
    Комментировать
  • Как передать куки другому домену с POST запросом?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    браузер отсылает куки только домену, с которого открыт документ, для вашего случая нужно использовать не браузерный скрипт, а например cURL.

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

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    Вы привязываете стили к id, а кнопке добавляете класс, будьте внимательнее.
    Ответ написан
    Комментировать
  • Оцените пожалуйста вёрстку?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    первый хорош, но 2 момента смущают:
    во первых меню гамбургер в десктопе
    во вторых - чего то не хватает в визуале, вроде стиль "много воздуха и пятна", но он как то не смотрится... Короче чисто личное восприятие, без конкретики, увы.
    Вторй - субъективно нравится, однако именно отсутствие адаптива - огромный минус. Сделайте хоть под вьюпорт скэйл...
    Ответ написан
    Комментировать
  • Как сделать постраничную навигацию после поиска через ajax?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    вводим страну(в базе есть англия, германия, франция, испания, италия) и результатом будут города, всё это дело работает через ajax
    ниче не ясно, дохрена кода, нихрена не понятно. Возвращаете вы что? Список городов принадлежащих стране? Листаете постранично как? Через линки или тоже аяксом?
    Ответ написан
  • Как реализовать добавление клиента при добавлении задания?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Если же данные клиента не полные, то данные сохранять только в заданиях (таблице 2).
    Почему? Чем обусловлена такая хитропопая логика? Вам от клиента по сути нужен уникальный номер, дальше привязывать к нему какие-то данные или нет вообще вопрос вторичный. Данные во вторй таблице(`customer_name`, `customer_phone`, `customer_email`) вообще не нужны, это нарушает 3 нормальную форму.
    Ответ написан
    7 комментариев
  • Как прочесть файлик при помощи PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если формат верный, и это действительно XML - new SimpleXMLElement($data);
    Ответ написан
    2 комментария
  • Почему не работает субдомен, переброс на главную страницу?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    TL;DR
    теги лишние уберите.
    1) Расставьте вардамп и ексит в ключевых точках кода, посмотрите как идет выполнение и где что срабатывает не так
    2) Откройте в хроме панель нетворк и посмотрите какие заголовки приходят на переадресацию.
    3) Выключите/включите директивы переадресации в хтаксесе.

    Кароче классический дебаг проведите.
    Ответ написан
    Комментировать
  • Как получить товар с несколькими картинками?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Мой вам совет - не гонитесь за крутизной а ля "я выбрал все одним запросом", в данном случае это не лучшее решение, как ни странно. Я не знаю как у вас организованна работа с коллекциями объектов, в моем случае любой объект наследуемый от базового(итем, брэнд, пост, юзер...) имеет поле $haveImages, и при формировании коллекции объект коллекции получает все id выборки в отдельный массив, а массив выбранных и инициализированных данными объектов имеет индексы равные id объекта. После чего проверяется, если у объекта $haveImages = true; вызывается метод appendImages(), который уже делает выборку по картинкам где objectid in( ... ) и по результатам раскидывает их в объект $images(это коллекция картинок) каждому объекту из коллекции итемов (или юзеров или чего другого). В итоге каждый объект имеет в составе коллекцию изображений.
    Ответ написан
    2 комментария
  • Как на Mac Os сделать так, чтобы я мог разрабатывать в разных папках и эти папки относились к разным хостам?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    поднять докер - самый простой вариант, или потрахаться с настройками родного апача - сделать виртуалхосты и прописать в хостс их имена.
    Ответ написан
  • Как сайт работает без index.php?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    индексный файл должен лежать в document_root, ваша папка public_html для вашего скрипта являлась документ рутом, на хостинге эта папка может называться иначе. Соответственно все что лежит в public_html кладете в документ рут хостинга, остальные файлы(если есть) должны лежать иерархически так же как в исходных папках.
    Ответ написан
    3 комментария
  • Как увеличивать/уменьшать изображения по клику?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    гугл отключили за неуплату?
    js zoom plugin
    Ответ написан
    1 комментарий
  • Что мешает мне загрузить картинку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    логи, первым делом логи
    так как опыта у вас мало - включите вывод ошибок в браузер
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

    для работы с файлами на сервере ВСЕГДА используются полные пути до папок, от корня сервера.
    Ответ написан
    1 комментарий
  • PHP, регистрация, проверка полей?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) нет смысла хэшить пароли для сравнения, тем более не нужно использовать hash для шифрования паролей, есть специальные функции для этого.
    2) Для логина используются проверки регулярками, в соответствии с вашими условиями(длинна, символы, латиница, тире...) + наличие такого логина в базе(на занятость)
    3) нормальные сервисы требуют емэйл для подтверждения регистрации.
    4) как верно заметил BD_ l3ftoverZ!, правильнее создать вначале пустой массив ошибок, а затем его в конце проверить, если он пуст - все ок, если есть ошибки - передать в представление и вывести в форму регистрации.
    Ответ написан
    1 комментарий