• Почему перестает отвечать Ubuntu server 16.04.5?

    hint000
    @hint000
    у админа три руки
    В первой строчке лога видно, что процесс apport вызвал segfault; при следующем сбое посмотреть, будет ли это снова процесс apport. Если снова будет проблема из-за него, то попробовать удалить пакет apport sudo apt remove apport (без этого пакета прекрасно можно жить)
    Если в следующий раз в логах будет указан другой процесс, то велика вероятность, что это проблема с железом. А среди железа - в первую очередь подозрение на оперативку. Т.е. нужно будет прогнать полный тест оперативки.
    Ответ написан
    Комментировать
  • Программа для настройки VPS?

    Zoominger
    @Zoominger
    System Integrator
    Судя по владению терминологией, объяснять придётся очень много и долго.
    Начните с чтения этого: https://timeweb.com/ru/community/articles/nastroyk...
    Ответ написан
    Комментировать
  • Как удалить/обновить программу, которая была создана из исходников?

    KodyWiremane
    @KodyWiremane
    Пони, Debian, LEMP, LAN, любитель
    В пингвиньей тусовке частенько похваляются простотой мантры ./configure && make && make install, но звучит и здоровая критика этого метода, направленная на неудобство удаления (не все озабочиваются реализацией make uninstall) и путаницу с файлами при обновлении.

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

    Исходники, боюсь, таки придётся скачать. make install превращает файлы из папки билда в обычные файлы, разбросанные по вашему диску. Частично, наверно, можно с этим бороться, указывая префикс пути для установки.
    Ответ написан
    Комментировать
  • В чем отличие между двумя созданиями объекта?

    ivan_zhuck
    @ivan_zhuck
    В далеком 2010 году перед разработчиками PHP встала задача предоставить поддержку вызова методов и доступа к свойствам созданного объекта одной строкой, поскольку ранее этого делать было нельзя. Также было предложено два варианта синтаксиса new foo->bar() и (new foo())->bar(), из которых был был выбран второй и реализован в 2011 году в PHP 5.4.0. Так что это просто часть синтаксиса языка.

    Подробности: https://wiki.php.net/rfc/instance-method-call
    Ответ написан
    Комментировать
  • Как понять эту функцию js?

    Zoominger
    @Zoominger
    System Integrator
    Ответ написан
    Комментировать
  • Почему не изменяется значение state-объекта?

    0xD34F
    @0xD34F Куратор тега React
    setState выполняет лишь поверхностное слияние, если вам требуется обновлять вложенные объекты - следует копировать все их свойства:

    this.setState({
      productToCart: {
        ...this.state.productToCart,
        color,
      },
    });
    Ответ написан
    1 комментарий
  • Zabbix на Raspberry или в Облаке? У кого есть опыт реальной эксплуатации связок?

    Zoominger
    @Zoominger Куратор тега Системное администрирование
    System Integrator
    Берите вариант 1, только не на Распберри, а на нормальном сервере.
    Ответ написан
    8 комментариев
  • Как использовать кириллицу в js?

    rockon404
    @rockon404
    Frontend Developer
    <meta charset="utf-8">
    Ответ написан
    Комментировать
  • Как правильно перенаправить?

    Stalker_RED
    @Stalker_RED
    Если в пределах одного сайта, то достаточноwindow.location.href = '/thanks'
    Ответ написан
    Комментировать
  • Какой запрос показывает конкретную ошибку в скрипте?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Лучше пользоваться новым API для добавления в корзину:
    Bitrix\Main\Loader::includeModule("catalog");
    
    $fields = [
        'PRODUCT_ID' => 98, // ID товара, обязательно
        'QUANTITY' => 2, // количество, обязательно
        'PROPS' => [
            ['NAME' => 'Test prop', 'CODE' => 'TEST_PROP', 'VALUE' => 'test value'],
        ],
    
    ];
    $r = Bitrix\Catalog\Product\Basket::addProduct($fields);
    if (!$r->isSuccess()) {
        var_dump($r->getErrorMessages());
    }

    Источник: https://mrcappuccino.ru/blog/post/work-with-basket...
    Ответ написан
    Комментировать
  • Как убрать фиксацию номера последней страницы в навигации?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    <?
    // Пример запрещает сохранение в сессии номера последней страницы 
    // при стандартной постраничной навигации.
    // По умолчанию в сессии запоминается последняя открытая страница постраничной навигации. 
    // Если вы хотите изменить такое поведение для данной текущей страницы, 
    // то до вызова метода CDBResult::NavPrint необходимо воспользоваться следующим кодом:
    CPageOption::SetOptionString("main", "nav_page_in_session", "N");
    
    // Для того чтобы вернуть режим по умолчанию:
    CPageOption::SetOptionString("main", "nav_page_in_session", "Y");
    ?>

    https://dev.1c-bitrix.ru/api_help/main/reference/c...
    Ответ написан
    1 комментарий
  • Как удалить последний вложенный пустой элемент массива?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    array_filter
    Ответ написан
    Комментировать
  • Почему не работает ALT-CTRL-Fx?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Захожу в консоль по SSH через Putty. Хочу переключиться к примеру на TTY2. Нажимаю CTRL+ALT+F2, но в консоли только [12~
    Что я делаю не так?

    ctrl-alt-f2 -- это сочетание клавиш для драйвера виртуального терминала. Соответственно, оно работает только при вводе через виртуальный терминал.

    Под простым юзером ввожу chvt 2:
    Если под рутом, то команда выполняется и всё
    Что я делаю не так?

    В графической консоли вводишь? С помощью strace легко понять что происходит:
    от простого юзера:
    $ strace -iv chvt 2
    ...
    [00007f96b99d56f0] open("/proc/self/fd/0", O_RDWR) = 3
    [00007f96b99da80a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f96b99db017] ioctl(3, KDGKBTYPE, 0x7fff06db6d67) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f96b99d5f30] close(3)             = 0
    [00007f96b99d56f0] open("/dev/tty", O_RDWR) = 3
    [00007f96b99da80a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f96b99db017] ioctl(3, KDGKBTYPE, 0x7fff06db6d67) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f96b99d5f30] close(3)             = 0
    [00007f96b99d56f0] open("/dev/tty0", O_RDWR) = -1 EACCES (Permission denied)
    ...

    Т..е. stdin и /dev/tty не поддерживают ioctl переключающий терминал (вернее, до него даже не доходит), потому что твоя консоль -- это псевдотерминал, а открыть /dev/tty0 не хватает привилегий.
    А от рута:
    $ sudo strace chvt 2
    ...
    [00007f591848c6f0] open("/proc/self/fd/0", O_RDWR) = 3
    [00007f591849180a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f5918492017] ioctl(3, KDGKBTYPE, 0x7fffe5e72d17) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f591848cf30] close(3)             = 0
    [00007f591848c6f0] open("/dev/tty", O_RDWR) = 3
    [00007f591849180a] ioctl(3, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f5918492017] ioctl(3, KDGKBTYPE, 0x7fffe5e72d17) = -1 ENOTTY (Inappropriate ioctl for device)
    [00007f591848cf30] close(3)             = 0
    [00007f591848c6f0] open("/dev/tty0", O_RDWR) = 3
    [00007f591849180a] ioctl(3, TCGETS, {c_iflags=0x5, c_oflags=0, c_cflags=0xbf, c_lflags=0, c_line=0, c_cc[VMIN]=1, c_cc[VTIME]=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
    [00007f5918492017] ioctl(3, KDGKBTYPE, 0x7fffe5e72d17) = 0
    [00007f5918492017] ioctl(3, VT_ACTIVATE, 0x2) = 0
    [00007f5918492017] ioctl(3, VT_WAITACTIVE, 0x2) = 0
    ...

    Т.е. stdin и /dev/tty -- то же самое, но /dev/tty0 открывается и ioctl VT_ACTIVATE проходит.
    Ответ написан
    Комментировать
  • Как должен вести себя нормальный PM?

    @Phantomrus
    Project Manager в крупной финтех компании
    Добрый вечер!

    Для начала обращу внимание, что при подобной текучке на проектах, можно считать, что PM вообще отсутствует и хаос ожидаем. Проблемы, которые всплывают: недочеты в управлении орг структурой и, собственно, некачественное управление проектами.

    Если пройтись по конкретике:

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

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

    3) Как было замечено выше, хорошим решением будет начать пользоваться трекером, который будет показывать текущую загруженность и планы на ближайшее время. Также по нему можно будет отслеживать историю выполнения задач и использовать её в качестве подкрепления для оценок.
    В идеале, трекером должны начать пользоваться и пиэмы, чтобы можно было в рамках него проставить приоритет по проектам и задачам. Но в крайнем случае можно начать пользоваться им единолично и даже это поможет улучшить ситуацию. Часть времени будет уходить на управление своими задачами, а не их реализацию, но даже несмотря на это, структурирование задач очень поможет. Даже если трекером начнете пользоваться только Вы, всегда можно направлять менеджеров в него для мониторинга ваших текущих задач.

    4) В описанной структуре между несколькими менеджерами проекта и программистом явно не хватает промежуточного слоя. Это может быть и ИТ-менеджер и куратор разработчиков и тимлид. Понятно, что в некоторых компаниях не могут позволить себе нанять отдельного сотрудника, координирующего действия. В таком случае явно возникает (а точнее уже возникла) проблема в оргструктуре, когда один разработчик должен выполнять работу для нескольких менеджеров.

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

    6) Однозначно надо описать сложившуюся проблему (она же риск нереализации проектов в срок) вышестоящему руководству. Не надо думать, что им всё равно. Речь об их деньгах и им предлагают митигировать риски.

    7) Неадекватность может встретиться всегда. Главное не отвечать на отсутствие логики или хамство тем же. Конктетизируйте и структурируйте свою позицию. В случае, если диалог заходит в тупик, говорите, что вы в данный момент не видите решения сложившегося конфликта. Можно предложить менеджеру два варианта: первый - сформулировать свой вариант решения проблемы. Если не поможет - идем ко второму варианту. Второй вариант - эскалировать решение вопроса на руководство или на любого другого сотрудника, имеющего право решать подобные вопросы.

    Нюансов и вариантов решения сложившейся проблемной ситуации много и они зависят от конкретной компании, её размера, гибкости орг структуры, руководства и т.п. К сожалению, универсального решения таких проблем для любой компании - нет. Но развить культуру управления проектами никогда не будет лишним.
    Ответ написан
    Комментировать
  • Как ассоциативный массив в PHP перегнать в JSON массив?

    Feaxer
    @Feaxer
    Программист-фрилансер
    $buttons = [
    ["action" => [
    "type" => "location"
    ]]
    ];
    Ответ написан
    Комментировать
  • Как перенести часть заказов с битрикса на битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    В 2019 году переносить новые заказы в интернет-магазине с подключенной ККМ нельзя.
    На практике придется учесть слишком много тонкостей, а в итоге все равной придете к тому, что перенести ваши наработки (инфоблоки, код, правила корзины и т.п.) будет на порядок быстрее чем перенести информацию с одного сайта на другой.

    Что касается переноса: категорически нельзя переносить отдельные записи из таблица - либо всю таблицу, либо ничего. Особенно если не знаете архитектуру 1С-Битрикс
    Ответ написан
    Комментировать
  • Как перенести сайт bitrix 1c c локалки на хостинг?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Комментировать
  • Как получить список заказов с товарами из определенного каталога?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Можно одним запросом получить массив с ID всех таких заказов.
    \Bitrix\Main\Loader::includeModule("iblock");
    \Bitrix\Main\Loader::includeModule("catalog");
    \Bitrix\Main\Loader::includeModule("sale");
    
    $ordersIds = array_column(\Bitrix\Sale\Internals\BasketTable::getList([
        "select" => [
            "ORDER_ID"
        ],
        "filter" => [
            "!ORDER_ID" => false,
            "PRODUCT.IBLOCK.IBLOCK_ID" => $IBLOCK_ID//Тут надо задать ID вашего каталога
        ],
        "group" => [
            "ORDER_ID"
        ]
    ])->fetchAll(), "ORDER_ID");
    Ответ написан
    Комментировать
  • Скрол на десктоп сайте левой кнопкой мышкой как на телефоне/планшете, в чем сложность?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    Никто вам не мешает юзать подобный функционал, написав его самому или воспользовавшись готовыми библиотеками, например hammer.js. Но мышкой мы не только скролим. А как же перетаскивание элементов используя drag and drop? А как же выделение контента? Как вы это будете учитывать?

    Я вот вообще не вижу удобства скролить таким способом, это отвратительный способ для постоянного применения на десктопной платформе, очень геморойный. Крутить колёсико и постоянно зажимать кнопку мыши и возить ей вверх и вниз такое себе занятие. Такое может быть применимо лишь в определённых местах, где контент отображается не по одной оси, например карты. А как же тачпады? Это мне что, нажать кнопку и по маленькому тачу возить пальцем? При условии его размеров!!!! Я замучаюсь скроить сайт
    Ответ написан
    6 комментариев