• Прибавить секунду к дате?

    27cm
    @27cm
    TODO: Написать статус
    <?php
    
    $interval = new DateInterval('PT1S'); 
    $start = new Datetime('2016-05-24 00:00:01');
     
    $period = new DatePeriod($start, $interval, 3 * 24 * 60 * 60);
    foreach ($period as $date) { 
        echo $date->format('d-m-y | H:i:s') . PHP_EOL; 
    }


    Если хотите пошустрее, забив на то, что в сутках не всегда 24 часа, то можно вот так:
    <?php
    
    $interval = new DateInterval('P1D'); 
    $start = new Datetime('2016-05-24');
     
    $period = new DatePeriod($start, $interval, 3);
    foreach ($period as $date) {
        $day = $date->format('d-m-y');
        for ($H = 0; $H < 24; $H++) {
            for ($i = 0; $i < 60; $i++) {
                for ($s = 0; $s < 60; $s++) {
                    echo sprintf('%s | %02d:%02d:%02d', $day, $H, $i, $s) . PHP_EOL; 
                }
            }
        }
    }


    php.net/manual/ru/dateperiod.construct.php
    Заблуждения программистов относительно времени
    Ответ написан
    2 комментария
  • Что лучше для бекапа dump или dd?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    dump умеет понимать что такое файлы, и не будет выполнять чтение каждого байта в пустых секторах. Размер образа сделанного через дамп будет меньше (в зависимости от утилизации диска). Но для dump нужно либо монтировать файловую систему в readonly или шатдаунить и перегружаться, чтобы дамп был выполнен вне рабочей системы.
    Можно делать dump и онлайн, но со всеми рисками потери консистенции.

    dd - это побайтное копирование. Это может быть конечно полезно, но долго.
    dd можно делать в идентичный размер диска, в меньший - нет. Онлайн копирование может быть с потерей консистенции файловой системы.

    Еще есть rsync и обычный tar+gzip, оба сохранят флаги доступа, правда inodes будут другие.

    Лучше нужно выбирать по вашей ситуации.
    Ответ написан
    Комментировать
  • Что лучше для бекапа dump или dd?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Это немного разные вещи. DD работает на уровне блоков ФС, ему пофиг содержимое. Им можно бэкапить флэшки, DVD, черта лысого - он просто тупо читает блок и пишет блок, как скомандовали. Для бэкапа его конечно можно применять, но не системы, а чего-нибудь мелкого - были времена, дискеты им бэкапил. Можно конечно им и систему бэкапить - если безразмерные винты - потому что dd создает образ ровно такого же размера, как раздел. Ну и восстанавливать нужно на точно такой же винт, что обычно маловероятно. Dump/Restore работает на уровне ФС и создает на выходе файл, в котором только данные. Если на разделе 100Gb занято 1Gb, то выходной файл от dd будет 100Gb, а от dump - 1Gb или меньше.
    Ответ написан
    Комментировать
  • Стоит ли брать заказ по wordpress если знаешь только front-end и php?

    @The_end
    Какое нафиг "Ничего не бойся - бери"?!
    А не парит, что можете человека подвести? Или интересы заказчика вам до голубой звезды? Не самое хорошее начало.
    Готов поспорить, что с таким уровнем знаний большинство задач будет решено костыльно.
    Сначала для себя повыполняйте какие-то работы, аналогичные тем, что народ заказывает.
    Ответ написан
    3 комментария
  • Реально ли выполнить данное тз средствами веб языков?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Какая разница какой язык? Чисто технически то, что можно сделать на C, Java, PHP можно так же сделать на Brainfuck.
    Любой полноценный веб-язык способен такое сделать, вопрос сам по себе не имеет смысла в принципе, к тому же ответ на него вам по сути ничего не даст, а исходя из постановки вопроса - тем более...
    Ответ написан
    Комментировать
  • Фрилансер, хочу открыть фирму. Ваш опыт?

    CrewCut
    @CrewCut
    Коплю силы на переезд в тропики
    Доброй ночи.

    1. Касаемо CRM - попробуйте разные решения, на вкус как говорится. Рекомендую обратить внимание на Мегаплан, есть еще teamer.ru/about он проще, но в принципе норм. Для старта хватит бесплатной версии CRM, а там уж видно будет

    2. Начать нужно с подсчета расходов, примерного плана доходов, точки безубыточности и прочих неинтересных вещей. Важно понимать, что Вы переходите в бизнес, а значит будете отвечать не только за себя, но и за сотрудников. Не рекомендую читать тонны статей про успешных предпринимателей, секреты бизнеса и прочую хрень - это индивидуальные вещи, сами все поймете, когда начнете. Посчитайте что к чему, если хватит средств - снимайте офис (работа по удаленке или из дома отдельная тема, не для всех). Насчет сотрудника на удаленке - если он не слишком важен, то это нормальный вариант - дешевле выйдет. Если Вас всего двое, то пропажа этого человека будет серьезным ударом, стоит ли рисковать? Понятно, что его присутствие в офисе не гарант, но так в любом случае надежнее.

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

    3. Насчет бухгалтерии - попробуйте Эльбу или МоёДело, для начала бизнеса - отличные сервисы. Касаемо распределения обязанностей - идите от выгоды. Например, есть премиум-клиент, который Вам очень дорог - следите за этим проектом тщательно. Проекты проще и слабее можно передать сотруднику. Учитесь обращать внимание только на важные вещи, иначе загнетесь.

    А вообще, кризис - время действия. Удачи Вам!
    Ответ написан
    2 комментария
  • Как сравнить два массива в js?

    Stalker_RED
    @Stalker_RED
    Обновил ответ, старая реализация была с багом.
    function diff(a1, a2) {
        return a1.filter(i=>a2.indexOf(i)<0)
        .concat(a2.filter(i=>a1.indexOf(i)<0))
    }
    function compare(a1, a2) {
        return a1.length == a2.length && a1.every((v,i)=>v === a2[i])
    }

    jsfiddle.net/Stalk/7h5ahq5k/2

    upd: в ES7 (2016) появился метод includes
    const diff = function(a1, a2) {
        return a1.filter(i=>!a2.includes(i))
        .concat(a2.filter(i=>!a1.includes(i)))
    }
    https://jsfiddle.net/Stalk/7h5ahq5k/9/
    Ответ написан
    2 комментария
  • Java и Vim - реально ли?

    Singaporian
    @Singaporian
    Не надо вам это. Поверьте. Сам люблю vim, но любой любви должен быть предел.
    Ответ написан
  • Альтернатива checkbox или как его заставить возвращать false если он не активен?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Был старый-старый хак, думаю, что он работает и сейчас
    <input type = hidden name = cbx value = 0>
    <input type = checkbox name = cbx value = 1>


    Работает, как я понимаю, за счет того, что последующее значение затирает предыдущее.
    То есть, запрос выглядит как
    ..&cbx=0&cbx=1&...
    в итоге в скрипте получается что-то вроде идущих подряд
    $_GET['cbx'] = 0;
    $_GET['cbx'] = 1;

    И в итоге остается только один.

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

    feligz
    @feligz
    JS/TS developer
    ReactJs можно применять в связке с Flux ( есть варианты, типа Reflux). Flux это архитектура построения сложный приложений, так же предоставляет набор методов для организации этой архитектуры.
    Где применять. Однозначно там, где нужно обрабатывать большой массив данных в реальном времени. Рендеринг на React до сих пор самый быстрый из всех фреймворков.
    React проще, чем Angular и Ember например, изначально работает на компонентах, причем шаблоны уже встроены в компоненты, что может быть весьма удобно. Компонентная архитектура это вообще будущее и вторая версия Angular потихоньку движется в этом же направлении. Есть так называемые mixin, готовые компоненты, которые уже можно встроить в приложение. Есть роутинг. В целом конечно Angular больше фиче комплит, огромная армия разработчиков постоянно добавляет что то, да и сама команда активно работает над фреймворком. Кроме того туча туториалов и готовых решений делает Ангуляр лучшим универсальным решением для всего фронтэнда на сегодняшний день.
    Ответ написан
    4 комментария
  • Разъясните суть кода?

    Lynn
    @Lynn
    nginx, js, css
    Вообще говоря sortArr и Boolean не эквивалентны. Впрочем для значений true и false они действительно будут выдавать одинаковый результат.

    Любой конструктор в JS это функция. Boolean не исключение. Если его вызывать как функцию, а не как конструктор (т.е. без new), то он приведёт переданный аргумент к true или false, так же как и выражение !!x.
    Ответ написан
    Комментировать
  • Разъясните суть кода?

    @SlivTime
    filter возвращает список тех элементов, для которых переданная ему функция вернет true, Boolean(true) == true, Boolean(false) == false. Того же эффекта можно было бы добиться, передав в filter функцию, просто возвращающую данный элемент. В es6 вообще красиво будет:
    arr.filter(x => x).length;
    Ответ написан
    Комментировать
  • Как повторить структуру treeview в menu?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Рекурсия:
    private void button1_Click(object sender, EventArgs e)
    {
      // создаем меню
      var menu = new MenuStrip();
      menu.Items.Add("Меню");
    
      // перебираем узлы
      foreach (TreeNode n in treeView1.Nodes)
      {
        // создаем элемент меню
        var menuItem = new ToolStripMenuItem();
        menuItem.Text = n.Text;
        // перебирем детей
        ConvertNodeToMenu(menuItem, n);
        // добавляем элемент в меню
        ((ToolStripMenuItem)menu.Items[0]).DropDownItems.Add(menuItem);
      }
          
      // добавляем меню на форму
      this.Controls.Add(menu);
    }
    
    private void ConvertNodeToMenu(ToolStripMenuItem menuParent, TreeNode node)
    {
      foreach (TreeNode n in node.Nodes)
      {
        // создаем элемент меню
        var menuItem = new ToolStripMenuItem();
        menuItem.Text = n.Text;
        // перебираем детей
        ConvertNodeToMenu(menuItem, n);
        // добавляем элемент в меню
        menuParent.DropDownItems.Add(menuItem);
      }
    }

    Вариант с LINQ:
    private void button1_Click(object sender, EventArgs e)
    {
      // создаем меню
      var menu = new MenuStrip();
      menu.Items.Add("Меню");
      // берем первый элемент меню
      var menuItem = (ToolStripMenuItem)menu.Items[0];
      // получаем узлы и добавляем в меню
      menuItem.DropDownItems.AddRange
      (
        treeView1.Nodes.Cast<TreeNode>().Select
        (
          n => new ToolStripMenuItem(n.Text, null, ConvertNodeToMenu(n))
        ).ToArray()
      );
      // добавляем меню на форму
      this.Controls.Add(menu);
    }
    
    private ToolStripMenuItem[] ConvertNodeToMenu(TreeNode node)
    {
      return node.Nodes.Cast<TreeNode>().Select
      (
        n => new ToolStripMenuItem(n.Text, null, ConvertNodeToMenu(n))
      ).ToArray();
    }
    Ответ написан
    6 комментариев
  • Как сделать запрос, чтобы было по одному последнему результату за каждый день?

    SELECT * FROM table t WHERE NOT EXISTS (
        SELECT 1 FROM table WHERE sell = t.sell AND DATE(created) = DATE(t.created) AND created > t.created
    )
    Ответ написан
    Комментировать
  • Нужно ли использовать структуры в C#?

    @Sumor
    Используйте классы, если вы не видите преимуществ использования структур в вашем коде.
    Не уверен, что использование структуры со строкой внутри в листе быстрее использования аналогичного класса. Особенно по сравнению со временем доступа к СУБД.
    Подробнее про структуры в MSDN
    Структуры можно использовать:
    1. Если у вас связь с неуправляемым кодом, где ожидается подобная структура.
    2. Если вам критично использование value-типов.
    При этом нужно не забывать об особенностях их использования, например, что при присваивании или передачи в функцию структура копируется. Наверняка можно написать пример, где из-за этого производительность работы с большой структурой будет ниже, чем с классом.
    Ответ написан
    Комментировать
  • Для чего нужен внутренний класс?

    AlPsc
    @AlPsc
    Java/high load/big data
    В Java невозможно множественное наследование (речь в тексте именно о реализации, так что интерфейсы не в счёт), поэтому внешний класс может быть потомком только одного класса (назовём его A). Но если нужно повторно использовать поведение какого-то другого предка (назовём его B), то нужен, соответствено, и другой потомок – его роль и будет выполнять внутренний класс. А, будучи внутренним, он будет также иметь доступ ко всем членам внешнего класса, что и позволит в итоге использовать возможности и от A, и от B.
    Ответ написан
    2 комментария
  • Сколько понадобиться времени на создание сайта уровня toster одному человеку?

    opium
    @opium
    Просто люблю качественно работать
    у меня ушло примерно час поднять на cms
    qa.pumainthailand.com
    Ответ написан
    Комментировать
  • Как запретить сторонним сайтам извлекать информацию со страниц моего сайта?

    tzlom
    @tzlom
    Трюк прост - заведите куку которая выставляется посетителю при первом заходе на сайт, если куки нет - выставляйте куку и отдавайте страницу где редирект будет оформлен как JS или средствами html , но не 403. Для пользователя заметно не будет, а для робота можно сделать целый лендинг.
    Только надо будет предусмотреть чтобы поисковики не умирали от этого, но это уже проще - они не прячутся.
    Ответ написан
    2 комментария