Задать вопрос
  • Каким образом и где определяется свойство isNewRecord класса BaseActiveRecord в Yii2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    это свойство по идее устанавливается сразу после загрузки данных из базы (в oldAttributes и в attributes). Так, перед сохранением мы можем проверить что мы изменили, так как изменениям будет подвержен только attributes. Ну а для новоиспеченной модели oldAttributes всегда будет пустым.
    Ответ написан
    Комментировать
  • В чем разница обьявлений функций js?

    TheSunwave
    @TheSunwave
    Я
    В первом случае функция называется Function Expression, во втором Function Declaration, отличаются тем, что Function Declaration, создаются интерпретатором до выполнения кода, а значит функция выполнится в момент инициализации, а не в момент ее явного вызова.
    Ответ написан
    2 комментария
  • Кто-то пользуется разделением рабочего времени?

    @Artisanka
    Я где-то так работаю, только в режиме 11-15, а потом с 21 и до упора (упор глубоко после полуночи). Ну что - нормальный график, никогда не считала это каким-то "особым режимом". Вообще пришла к выводу, что учитывать надо не отработанное время, а выполненные задачи, причем не просто список чего попало, а выстроенные по приоритету. Все остальное - от лукавого.
    Ответ написан
    2 комментария
  • Как красиво склеить GET параметры из разных ссылок(категория + сортировка)?

    kimono
    @kimono
    Web developer
    $url = 'http://mysite.com/hello/world?look_at=me';
    $query = parse_str(parse_url($url, PHP_URL_QUERY));

    <a href="?<?= http_build_query(array_merge($query, ['category' => 'val'])) ?>">Категория каталога</a>
    <a href="?<?= http_build_query(array_merge($query, ['sort' => 'price'])) ?>">Сортировать по цене</a>
    Ответ написан
    1 комментарий
  • Как в yii2 сделать rules зависимый от другого поля?

    vyachin
    @vyachin
    Ищу работу
    1. написать свой валидатор
    2. использовать www.yiiframework.com/doc-2.0/yii-validators-valida...
    Ответ написан
    Комментировать
  • Как убедить начальство отказаться от велосипедов?

    newross
    @newross
    Product owner
    evnuh на 100% прав.

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

    Если же хотите переубедить владельца бизнеса, то научитесь считать выгоду не как разработчик, а как бизнесмен. На какую аудиторию заточена CMS, какие текущие расходы на продажи и на разработку(в деньгах, а не абстрактных человеко-часах), во сколько обойдется переход, как изменятся расходы\прибыль при приходе на стандартные CMS? Это всего лишь малая часть вопросов. Предоставьте владельцу веер решений, из которого можно будет выбрать лучшее для бизнеса.
    Ответ написан
    Комментировать
  • Как убедить начальство отказаться от велосипедов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Все можно сделать.... (как бы странно это не звучало....)
    1. Нужно составить схему архитектуры, создать список классов и их методов, функций и т.д..
    2. Наложить файлы на архитектуру, чтобы понимать где что делается.
    3. Затем, рефакторинг архитектуры и кода (если необходимо и есть время).
    Продолжать работу.

    PS: не очень приятная работа, однако без неё однозначно всё встанет в ближайшем будущем на этом решении без необходимого понимания и документации разработчика.
    Ответ написан
    Комментировать
  • Как записать php файл с массивом?

    @djay
    Для этого есть встроенная функция var_export()

    Для решения твоей задачи, пропиши что-то аналогичное с этим:

    $filename = __DIR__.'/data.php';  // Путь куда записать содержимое файла
    
    $string = "<?php\n return ".var_export($data, true).';';
    file_put_contents($filename, $string);


    Где $data - это текущий либо текущий и модифицированный считанный массив.
    Ответ написан
    3 комментария
  • Какой из способов безопасного хранения критически важных переменных оптимален?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Поймите, все утечки которые происходят - в 99% это не exploit, а тупо человеческий фактор.
    Все решения с конфигами сервера, ORM и прочим - абсолютно бессмысленны когда вашему сисадмину подарят новый X6 и он сольет дамп сервера целиком.

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

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

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

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

    Решение 2:
    Разделяем каждый пароль от внешнего сервиса на N частей (N >= 3)
    Дублируем решение 1 на N серверов, каждый пароль получается размазан на N серверов.
    Первоначальная хранимка занимается тем что собирает данные из N хранимок с N серверов.
    У каждого сервера - свой ответственный человек. Доступ к каждому серверу есть только у ответственного и у bigboss (на случай внештатных ситуаций).

    Решение достаточно дорогое и по людям и по железу и по скорости работы - но я за всю свою трудовую деятельность, так и не увидел ничего лучше.
    Ответ написан
  • Как сравнить день (дата +24 часа)на php?

    Writerim
    @Writerim
    Заполнить позже...
    $a = new DateTime();
    $a->modify('+1 day');
    
    $b = new DateTime();
    $b->setTimestamp( /* value database */ );
    
    var_dump( $a->getTimestamp() > $b->getTimestamp()  );
    Ответ написан
    1 комментарий
  • Кого читаете на тостере?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Читаю не кого-то а интересные для себя вопросы и ответы.
    Ответам не обязательно верить, но в них можно найти полезные ссылки, идеи и формулировки по которым уже можно накопать то, что нужно.
    Ну а если ответ такой, что не нужно никуда лазить, просто ставлю лайки.
    Ответ написан
    Комментировать
  • Кого читаете на тостере?

    Sanes
    @Sanes
    Ответ написан
    Комментировать
  • Какой алгоритм оптимальнее?

    @IceJOKER
    Web/Android developer
    Без проверок(на кол. символов и т.д.):
    $str = "я люблю тостер, каждый день отвечаю и задаю вопросы здесь";
    $words = explode(' ', $str);
    $num = 2; //кол. слов
    $first_line = implode(' ', array_slice($words, 0, $num));
    $second_line = implode(' ', array_slice($words, $num));
    
    var_dump($first_line, $second_line);
    Ответ написан
    2 комментария
  • Какие будут советы начинающему YII программисту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может кто-то даст хорошие советы для изучения.

    Еб*ашь код.
    Ответ написан
    1 комментарий
  • Лучшая IDE для PHP, HTML5, CSS для Mac OS X?

    На macos пользовался phpstorm. Потом работал с ubuntu, сейчас на windows - везде пользуюсь этим замечательным продуктом от jetbrains
    https://www.jetbrains.com/phpstorm/
    Ответ написан
  • Есть аналоги checkio или codewars для PHP?

    @Def123 Автор вопроса
    Отвечу сам на свой же вопрос: аналогов пока что нет, но на том же codewars.com PHP заявлен в разделе coming soon, также, там есть голосовалка (в меню, где надо выбрать язык для вступительного теста). По этой голосовалке выходит, что php стоит в очереди на реализацию на 3 месте. Так что кому не лень, зайдите и проголосуйте за PHP, до C там рукой подать, может реально побыстрее зарелизят))

    Ну а по поводу сайтов с задачами и решениями, то что нагуглилось:
    www.w3resource.com/php-exercises
    phpexercises.com
    Ответ написан
    Комментировать
  • Как доработать маленький код на JS?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    1. Ссылки не нужны, используйте спаны в пагинации
    <form method="get" id="testForm">
      <input type="text" name="name" class="page" />
      <input type="submit" name="search" id="search" value="Поиск"/>
      <input type="hidden" name="current_page" id="current_page" value="{current_page}">
    </form>
    
    <span id="pagination">
      <span class="toPage" data-num="1">1</span>
      <span class="toPage" data-num="2">2</span>
      <span class="toPage" data-num="3">3</span>
      <span class="toPage" data-num="4">4</span>
      <span class="toPage" data-num="5">5</span>
      <span class="toPage" data-num="6">6</span>
      <span class="toPage" data-num="7">7</span>
    </span>


    2. Такой JS:
    $(document).on("click", ".toPage", function () {
        var num = $(this).data("num");
        $(".page").prop("value", num);
        $("#testForm").trigger("submit");
    });
    Ответ написан
    6 комментариев
  • Периодически не подгружаются картинки на сайте, почему?

    @xtreme
    Снимаю порчу по SSH :)
    Pending - это ожидание. Если у курильщика Chrome - тогда он ограничен 6 одновременными соединениями к одному ресурсу. Ты установил коннект, получил страницу и браузер начинает подгружать статику. И судя по браузеру "некурильщика" - у тебя там мелкие картинки, и на каждый файл надо установить соединение. С ограничением в 6 соединений, если у тебя сверху заливается нечто тормозящее - остальные будут курить до освобождения очереди.

    Включаю телепатический шлем...

    Как один из вариантов - объединить мелкие картинки в спрайты и грузить их одним коннектом, отображая с помощью CSS нужные участки в нужных местах. (Google PageSpeed тебе то же самое подскажет)
    Второй, как полумера - использовать кеш браузеров клиента, чтобы не грузить картинки каждый раз с сервера. Но в первый раз все равно придется загрузить их со страницы в любом случае.
    Далее, судя по всему у тебя либо подрезана скорость на доступ к веб-серверу, либо сервер откровенно тормозит. Картинку размером в 80КБ грузить секунду - это долго.
    Рискну предположить, что у тебя в качестве веб-сервера стоит апач. В таком случае рекомендую увести его например на 127.0.0.1:80, а перед ним на этом же сервере на внешний интерфейс воткнуть nginx с простым конфигом:
    (Естественно, путь до проекта и внешний IP-адрес подставить свои)
    server {
      listen 192.168.0.1:80;
      server_name my-super-puper-project;
      
      location ~ ^.+\.(jpg|png) {
        root /home/www/your-project-name;
        expires 1d;
      }
      location / {
        proxy_pass http://127.0.0.1:80;
      }
    }


    В этом случае картинки (jpg|png) будет отдавать легковесный nginx без участия apache, что значительно разгрузит твой сервер, а на apache будет уходить все остальное (в т.ч. и ЧПУ-ссылки). Если у тебя css и js также отдаются прямо с диска, а не генерятся на каждый запрос динамически, как сумасшедшие - можно их включить в конфиг к картинкам.
    Если с сетью порядок - браузер станет получать статические файлы гораздо быстрее, а значит время Pending тоже уменьшится, что благоприятно скажется на быстродействии.
    Ответ написан
    2 комментария
  • Как дебажить в yii2 (конкретно rbac)?

    kompi
    @kompi
    nullstack devoops
    Универсальный вариант - xdebug и ставить нужные watcher'ы.
    Ответ написан
    Комментировать