• Как перезаписать файл UNIX?

    Сергей а для чего делать конвейер? мне кажется, что корректнее использовать ; или &&
  • Почему LAMP такой быстрый?

    Артем: согласен, но я тоже заметил, что тот же WAMP на основе OpenServer работал гораздо медленнее, чем поднятый LAMP в VirtualBox на той же виндовой машине, на который сейчас крутится Docker под убунтой. Потому я делаю вывод, что запускать WAMP под виндой для разработки будет чревато его медленной работой
  • Почему LAMP такой быстрый?

    Артем контрпример: на ноутбуке [8G RAM (6.4 забито)
    Intel® Pentium® Dual-Core Processor, SSD] в docker поднят LAMP, на котором крутится сайт для разработки (поднято таких несколько штук в паре с mysql-контейнерами для разработки разных проектов) и при этом сайты для разработки летают
    совпадение? не думаю
    наверное, дело в винде
  • Reflux: для чего нужны методы action.completed и action.failed?

    dvapelnik
    @dvapelnik Автор вопроса
    Андрей Антропов если я правильно понимаю, то это будет выглядеть примерно так:
    var someAsyncAction = Reflux.createAction({
      children: ['completed', 'failed']
    });
    
    var someStore = Reflux.createStore({
      data: [],
      init: function () {
        this.listenTo(someAsyncAction, this.onAsyncAction);
        this.listenTo(someAsyncAction.completed, this.onAsyncCompleted);
      },
      onAsyncAction: function (url) {
        $.ajax({
          url: url,
          type: 'get',
          success: function (data) {
            someAsyncAction.completed(data);
          },
          error: function (jqXHR, textStatus, errorThrown) {
            someAsyncAction.failed(errorThrown);
          }
        })
      },
      onAsyncCompleted: function (data) {
        //to do something with data and store is
        this.trigger({
          data: this.data
        });
        console.log('someStore.onAsyncCompleted');
      }
    });
    
    var progressStore = Reflux.createStore({
      init: function () {
        this.listenTo(someAsyncAction.completed, this.onAsyncComplete);
        this.listenTo(someAsyncAction.failed, this.onAsyncFailed);
      },
      onAsyncComplete: function (data) {
        console.log('progressStore.onAsyncCompleted');
      },
      onAsyncFailed: function (error) {
        console.log('progressStore.onAsyncFailed');
      }
    });
    
    someAsyncAction('/');
    someAsyncAction('/sadasd');
  • Где хранятся задания cron?

    Дмитрий: если их там нет, то это не значит, что их туда нельзя добавить. задания добавляюсь в файлы с описанием заданий в виде
    00 01 * * * rusty /home/rusty/rusty-list-files.sh
    [schedule] [user] [command]
    удобство в том, что Вы можете из коммандной оболочки bash (прямо из баш-скрипта) копировать-удалять подготовленные файлы заданий
    в случае же если Вам руками можно/нужно редактировать задания для cron, то лучше использовать crontab
    на самом деле можно делать как-угодно и как удобно, но советую делать так и опыт показывает, что удобнее телать так
  • Где хранятся задания cron?

    Дмитрий: если вы имеете права рута, то используйте директорию /etc/cron.d
  • Где хранятся задания cron?

    это не самый корректный способ редактирования заданий для cron поскольку в этой директории хранятся
    1. в CentOS - по одному файлу на пользователя с его заданиями, которые он добавил с помощью команды crontab
    2. с Debian/Ubuntu - папки для каждого пользователя
    Настоятельно не рекомендую влезать в эту директорию и править что-то там руками. Это все равно, что править файл /etc/sudoers без visudo
  • Какой базовый набор знаний для frontend developmenta?

    не хочу разводить холивар и не то, что бы я был не согласен с высказываением о том, что ReactJS - не фреймворк, но хотелось бы узнать по каким критериям Вы отделяете фреймворки от библиотек?
  • Чем проще и лучше делать инкрементальный бекап?

    ShamblerR не могли бы Вы показать пример как сделать ежедневный инкрементный бекап с помощью rsync таким образом, чтобы можно было получить состояние за позавчерашний день?
  • (Yii2) Как убрать web с url?

    whiteleaf: да, если Вы будете переносить сайт на хостинг, то доступа к конфигам апача у Вас не будет, но разработчики панели должны были предусмотреть интерфейс изменения `DocuumentRoot` на требуемый для работы приложения. В люьом случае у Вас не получится изменить `DocumentRoot` с помощью `.htaccess` поскольку директива `DocumentRoot` должна указываться в конфиге апача для того, чтобы он нормально запустился.
    Если я верно Вас понимаю, то Вы имеет в виду перенос скриптов ниже `DocumentRoot` в плане безопасности. Некоторые приложения и строятся таким образом, чтобы в `DocumentRoot` у вас лежало только то, что нужно отдавать пользователю (входящий скрипт (`index.php`) и статика (js, css, картинки, видео)), а все остальное (скрипты, требуемые для работы приложения) лежало ниже `DocumentRoot`. В Yii1 папка с фреймворком лежала в `DocumentRoot`, но доступ к ней по HTTP был закрыт с помощью директив в `.htaccess`. В Yii2 все просто вынесли за пределы `DocumentRoot`, хотя Вам ничего не мешает занести обратно, изменив соответствующие пути
  • (Yii2) Как убрать web с url?

    whiteleaf: если Вы прописывали в .htaccess, то этого делать не нужно было. OpenServer сам все пропишет в свои конфиги когда Вы будете создавать домен руками через интерфейс его (OpenServer) настроек. .htaccess - это как дополнение к конфигу апача и его можно изменять налету без перезапуска сервера, здесь обычно пишутся настройки реврайтов и другие некотороые нюансы.
    Если Вы это DocumentRoot прописываете в конфиге апача, то следует писать полный путь, а не относительный. Но это за Вас сделает OpenServer если Вы будете делать настройку через его интерфейс. Погуляйте по интерфейсу настроек - там много интересных кнопушек, но запоминайте что Вы изменяли дабы не убить его полностью.
    На счет безопасности: не совсем понял что имеется в виду
  • (Yii2) Как убрать web с url?

    whiteleaf: к сожалению OpenServer под рукой нет, но в руководстве OpenServer пишут следующее (линк):

    Создание домена в ручном режиме
    Чтобы создать домен или поддомен перейдите в раздел [Меню → Настройки → Домены] и создайте запись вида: домен => папка. В качестве папки домена можно выбрать уже существующую папку на диске или создать её непосредственно в окне выбора каталога. После создания домена сохраните настройки.


    На сколько я помню из опыта использования, в OpenServer можно указать путь к папке с проектом - укажите путь к папке, которая содержит входящий скрипт (index.php). Пускай Вас не пугает то, что некоторые php-скрипты будут находиться ниже DocumentRoot - главное чтобы опция open_basedir в php.ini позволяла апачу достучаться к ним. Я подозреваю, что с этим проблем не должно возникнуть
  • А как вы смотрите на то, чтобы авторы качественных ответов получали денежное вознаграждение?

    я тоже об этом подумал. вижу два выхода:
    1. искать мецената
    2. монетизировать сервис - оплачивает тот, кто ставит вопрос
    если рассматривать второй вариант, то решение вопроса должно быть закрыто от всех, кто не оплатил его и открываться для других только по оплате каждого. проясняю что я имею в виду: я ищу решение некой задачи, в поисковой выдаче попадаю на нужный ресурс, вижу решенную аналогичную задачу, но ответ на нее могу получить только по факту оплаты ответа.
    личне мне ни первый вариант, ни второй не нравится. суть сервиса в том, чтобы научить людей и при этом поднять общий уровень профессионализма
  • (Yii2) Как убрать web с url?

    можно и в апаче перенести DocumentRoot, но можно еще поиграться с настройками UrlManager в случае если нет возможности изменить DocumentRoot
  • События добавления\удаления\изменения данных в коллекциях angularjs?

    tatarin: а в бекбоне свои макароны. как по мне так лучше ангуляре допилить то, что нужно так, как будет удобно и дальше использовать ангуляр
  • Как разрешить доступ к некоторым IP мимо OpenVPN?

    dvapelnik
    @dvapelnik Автор вопроса
    Владимир: тоесть, взять роуты с "проводного" или "беспроводного" подключения без активированного VPN и добавить их в роуты VPN-подключения? в таком случае мне придется иметь два подключения на работе (wired, wireless) и то я не уверен, что упомянутый вариант работоспособен
    в плане рабочей альтернативы я напишу скрипт с настройкой роутов и буду его запускать при подключении к VPN на рабочем месте
    спасибо за желание помочь
  • Как разрешить доступ к некоторым IP мимо OpenVPN?

    dvapelnik
    @dvapelnik Автор вопроса
    Владимир:
    >>> 192.168.0.0 255.255.255.0 не_трогать 0
    кажется же настроил. или это не оно?
  • Как разрешить доступ к некоторым IP мимо OpenVPN?

    dvapelnik
    @dvapelnik Автор вопроса
    Владимир: Спасибо. прописал как Вы сказали, но в роута следуюющее (я убрал лишние записи)
    route -n
    192.168.0.1 0.0.0.0 255.255.255.0 U 0 0 0 tun0
    123.45.67.89 192.168.0.1 255.255.255.255 UGH 0 0 0 tun0

    видно, что запросы все равно направляються на интерфейс `tun0`, что также подтверждает traceroute
    если же после подключения к OpenVPN прописать роуты руками
    sudo ip route add 123.45.67.89 via 192.168.0.1
    то в роуте указывается нужный интенфейс wlan0 или eth0 в зависимости подключен ли ethernet-кабель и тогда traceroute показывается ожидаемый трейс
    делаем вывод, что роуты, добавленные через NM добаввляются в таблицу роутов с указанием интерфейса. потому я и поставил вопрос на счет указания интерфейса