Задать вопрос
  • Как прикрепить commit к issue?

    @Ictiss
    Попробуйте в description к коммиту написать номер issue ( git commit -m "bag fix. close issue #1")
    Ответ написан
    Комментировать
  • Как организовать таймлайны(историю) и их хранение в БД (и вообще взаимодействие)?

    @grinat
    Если логи, то mysql сразу отпадает, там довольно быстро набегают сотни миллионов записей, бери elastic, обычно хранить достаточно id, дату, тип в и json нужные данные.
    Ответ написан
    3 комментария
  • October CMS и тысячи страниц?

    На jurist.by около 1 000 000 уникальных страниц профилей юридических лиц. Полет нормальный. =)
    Ответ написан
    Комментировать
  • Как сделать выборку по двум периодам?

    #Первая половина месяца
    SELECT * 
    FROM `table ` 
    WHERE 
    MONTH(date) = MONTH(NOW()) 
    AND 
    YEAR(date) = YEAR(NOW()) 
    AND 
    DAY(date) <= 15
    ORDER BY date;
    
    #Вторая половина месяца
    SELECT * 
    FROM `table ` 
    WHERE 
    MONTH(date) = MONTH(NOW()) 
    AND YEAR(date) = YEAR(NOW()) 
    AND 
    DAY(date) > 15
    ORDER BY date;
    Ответ написан
    Комментировать
  • Как правильно внедрить git?

    Papazian
    @Papazian
    Изучаю webdev
    Внедрять не гит надо, а процессы, гит это про другое. Если не в курсе процессов, можно смело начинать с https://danielkummer.github.io/git-flow-cheatsheet...
    Ответ написан
    Комментировать
  • Нормально ли так проверять авторизацию?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Всё печально. Давай по-порядку:

    Одной из ключевых задач ООП является абстракция, что требует декомпозиции кода. Следовательно, первым шагом для причёсывания кода будет:
    class Worker extends User // <- Не стоит забывать о PSR
    {
        public function __construct(array $data)
        {
            if (empty($data)) {
                header(....);
                exit;
            }
    
            // В конструкторе нет ретурна, так что это ошибка
        }
    }


    Шаг 1 Результат: Мы отвязались от кукисов и можем эту же логику переиспользовать вообще с чем угодно.

    Теперь мы больше не связаны с окружением (ещё header надо убрать) и имеем код, позволяющий переиспользовать себя в различных ситуациях:
    $worker = new Worker($_COOKIE);

    Ну и так далее.

    При этом есть фатальные косяки (отвечая на твой вопрос "Нормально ли так проверять авторизацию"): Что если я возьму, открою консоль в браузере и заменю кукис id=1 на id=42?

    Решаем эту проблему:
    $worker = new Worker($_SESSION);

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

    Помимо этого - сам процесс входа в систему называется "аутентификацией", а не "авторизацией". Авторизация - это процесс проверки прав доступа к какому-то функционалу.

    Результат не идеален и содержит ещё кучку проблем, но с фатальными мы вроде разобрались.

    Твоя задача далее, разу уж ты поставил тег "ООП" - смотреть на код, который ты написал и попробовать его перенести в другие условия. Если он там уже работать не будет без изменений его внутренностей - значит в коде есть набор косяков. Пример:
    1) Можно ли использовать твой код, получая данные не из БД, а из файлов?
    2) Можно ли создать нового "рабочего" не передавая туда ID, чтобы он сгенерировался сам на основе, например, auto increment поля в БД?
    3) Можно ли добавить условия в запрос к БД (например, что "рабочий" не забанен)?
    4) и т.д.
    Ответ написан
    7 комментариев
  • Подключение к базе не в каждой функции класса?

    @Mysterion
    Создайте приватное свойство $_db в классе, например, и в конструкторе этого класса сохраняйте в это свойство подключение к базе.
    И будете в методах класса использовать как $this->_db.
    Или наследуйте классы от другого, в котором сделано тоже самое, чтобы не создавать каждый раз свойство.
    Ответ написан
    Комментировать
  • Подключение к базе не в каждой функции класса?

    Подключайтесь к базе в __construct и используйте соединение $this->db.
    Ответ написан
    Комментировать
  • Paper.js и Three.js - аналоги или разные вещи?

    Paper - это ведь 2d-фреймворк против 3d-фреймворка Three.js. Совершенно разные вещи. Плюс бумага - очень слабый фреймворк.
    Ответ написан
    3 комментария
  • Тестовое задание (Junior Frontend), приемлемое ли?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    При чём тут какая-то связка с php? Как php вообще относится к вёрстке? Если вы там адаптивности боитесь, то, лично моё мнение, вам ещё нужно подтянуть знания и вы себя в оценке переоценили))

    Что насчёт самого макета, то я бы сказал, слишком лёгкий. Чё тут делать то? Карту вставить? Подвигать стрелочки при наведении через css? Сделать кнопку с раскрытием меню?

    P.S. Я никак не хочу обидеть или оскорбить вас, но я не понимаю, сути вашего вопроса. У вас навыки 70% х 30%, а вы вместо того, что бы начать верстать, пришли сюда с глупым вопросом, а не слишком ли сложно!
    Ответ написан
    2 комментария
  • Как сделать маску для input с кириллицей?

    MyMac
    @MyMac
    Задать свою маску, смотря какой плагин, или

    $.mask.definitions['Z'] = "[АВЕКМНОРСТУХ]";
    $('.gosnomer').mask('Z000ZZ000?');

    или
    $('.gosnomer').mask('Z000ZZ009', {
        translation: {
          'Z': {
            pattern: /[АВЕКМНОРСТУХ]/, optional: false
          }
        }
      });

    только наверное в маске еще стоит их латинский вариант продублировать.
    Ответ написан
    Комментировать
  • Вопрос верстальщикам. Как сверстать такую косую раму?

    Грубый набросок, но можно как-то так
    Пример
    Ответ написан
    Комментировать
  • Что это за предупреждение от провайдера?

    MDiMaI666
    @MDiMaI666
    Талантливый программист
    привет
    Вы получаете это электронное письмо, потому что мониторинг CERT-EE обнаружил вашу сетевую уязвимость

    оборудование. Служба разрешений MS-SQL Server с поддержкой Интернета, которая предоставляет обзор клиента

    из сети и позволяет открывать устройства с помощью службы

    Сдерживающие устройства (DDoS).

    https: //kb.iweb.com/hc/en-us/articles/230268308-Gu ...

    Ice-Amplification-Access Проблемы

    Мы рекомендуем либо:

    - Порт 1434 / UDP-трафик на брандмауэре

    - ограничить доступ к службе, чтобы услуга была доступна только им от IP-адреса

    требуемые адреса

    - закрыть службу браузера SQL Server
    Ответ написан
    Комментировать
  • Как вывести ссылку?

    DeLaVega
    @DeLaVega
    Верстаю, фронтэндю =)
    Потому что textarea предназначен для вывода простого текста, а не тэгов. Если вам нужно вывести именно ссылки, то логируйте их просто в div.
    Ответ написан
    2 комментария
  • Как вернуть результат из php скрипта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    обычно обратно возвращают json в примерно таком виде:
    if($someError){
      echo json_encode( array('data' => '', 'error' => 5, 'errortext' => 'something goes wrong!');
      exit;
    } 
    else {
      echo json_encode( array('data' => 'some useful data', 'error' => 0, 'errortext' => '');
      exit;
    }

    В js меняем:
    .done(function(response){  // я обычно использую не .done а  .success
       if(response.error == 0){
            swal('Оплачено!', '22222222','success');
            return;
       }
       else {
          alert(responce.errortext);
          return;
      }
    })
    Ответ написан
    1 комментарий
  • Как заменить переменные в формуле на свои данные?

    BuriK666
    @BuriK666
    Компьютерный псих
    $x = 1;
    $y = 2;
    echo eval("return $x / $y;");

    Но это небезопасно, если формулы приходят из вне.
    Ответ написан
    3 комментария
  • Куда можно устроиться junior удаленно с таким стеком технологий?

    PlugIN
    @PlugIN
    A Little Programmer
    Доброго дня!

    Никакой критики, я только поддерживаю вас. И ниже три совета.

    1) Респект вам за решимость постигать программирование и фронтэнд в частности.
    2) Не слушайте тех, кто говорит о критичности работы в офисе для скорейшего проф. развития. Да, это основной вариант, если у человека плохо с самообучением, т.е. он просто не может собраться и сам изучать дисциплины, гуглить, яндексить, задавать вопросы на спец. ресурсах. Это явно не ваш случай. Поэтому, если брать во внимание отсутствие тяги к высокой массовой доли беспредметных разговоров в офисах, и желание оставаться собой, т.е. интровертом, все хорошо. В будущем, если захотите, и коммьюнити найдете и поспорить о технологиях сможете, и даже вещать, будучи каким-нибудь евангелистом ))
    3) Предлагаю такой роадмэп на ваше рассмотрение: у вас сейчас только один лэндинг, поэтому сделайте еще один-два хороших проекта для себя, создайте хороший сайт-портфолио, найдите в своем городе еще пару-тройку заказов на лэндинги/сайты-каталоги. Положите и их в портфолио. Тогда можно будет обновить резюме везде, в том числе и на hh.ru и на МоемКруге, в поле "О себе", кроме указания на высокую мотивированность, хорошо бы, если есть, упомянуть про свои смежные компетенции (дизайн интерфейса, психология, бэкэнд, математика и пр.). Кстати, на том же hh.ru вполне можно найти работу в удаленном формате для Junior. Есть довольно много небольших и неизбалованных контор, на которых "продвинутые ребята" не обращают внимания. И они просматривают отклики таких специалистов, как вы (т.е. как вы после вышеописанного). И этот путь недолгий, т.к. у вас уже есть, как понимаю, довольно много навыков.

    Удач! *___*
    Ответ написан
    12 комментариев
  • Как лучше всего вести интерактивный лог в админке?

    @rPman
    Все зависит от цели логирования, т.е. что хотите добиться?

    Без относительно этого, чем легче будет фильтровать лог (т.е. больше машиночитаемых атрибутов) тем удобнее будет разрабатывать новые инструменты по его анализу. Т.е. анализировать plain text это дикий геморой.

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

    p.s. пример лога - дублирование структуры базы данных, с добавлением новых ключевых полей, таким образом чтобы любое изменение в таблице порождало новую запись в логовой. Добавьте понятие пользовательская сессия и записывайте в каждую таблицу отдельным полем ее id (сессия это кто, с какой машины, когда залогинился, когда завершил работу) дополнительно дату изменения и собственно тип изменения (create/modify/delete). В некоторых случаях можно оптимизировать хранение данных, если modify записи будут хранить только измененные поля а delete - только идентификаторы, но работать с такой структурой сложнее.

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

    Такая log-база данных это write once, позволяет подобрать технологии хранения максимально эффективные именно для этого. Никто не мешает на время анализа копировать интересующие данные в отдельную базу (in memory например, за последние сутки-неделю) и работать с этим подмножеством эффективнее. Однозначно напрашивается отдельное размещение базы на другом железе (как минимум другом диске).
    p.s. совет, храните рядом с этой базой, в оперативной памяти (при включении компьютера ее можно восстановить из лога), слепок (а лучше много, по ключевым событиям) идентификаторов таблиц последних изменений (просто список id, например в виде таблицы {event_id, table_id, id_value}) тогда состояние на ключевые моменты сможете вытаскивать запросом с трудоемкостью O(1) а не n или n^2 (от количества изменений в таблице).

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

    Скорость роста такой базы на порядок выше (подобный подход использовался выборочно для некоторых таблиц в продакшне, сотни пользователей, 10-гигабайтная БД, лог - в 8 раз больше). Не жалейте места на дисках, оно дешевле чем проблемы, которые оно поможет решить.
    Ответ написан
    2 комментария
  • Как обрезать ФИО при выводе?

    @morricone85
    $data = 'Trump Donald';
    $mass = explode(' ', $data);
    $new_data = $mass[0]. ' '. substr($mass[1], 0, 1).'.' ;
    Ответ написан
    1 комментарий
  • Как обрезать ФИО при выводе?

    @Evgeny57
    Через explode дели строку по пробелу, далее имя через substr сокращая до одного знака и добавь точку в конце
    Ответ написан
    Комментировать