Задать вопрос
  • Как удалить последний вложенный пустой элемент массива?

    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С-Битрикс
    Ответ написан
    Комментировать
  • Как получить список заказов с товарами из определенного каталога?

    Можно одним запросом получить массив с 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 комментариев
  • Как задать постоянный путь к файлам в битрикс?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    1. вариант вы прикрепляете данные файл в контенте, и ложите их в файловую структуру.
    2. файлы одинаковые и яндекс правильно делает, прикрепляйте к каждому товару свою инструкцию, если это один и тот же товар тольоко разница в цене цвете и тд мелких свойствах, то это Не товар А "торговое предложение SKU" и У этого товара всего одна ссылка.
    3. мифический вариант это не СКУ но это тот -же товар, тут придется крутить и мутить, поскольку битрикс не парится урлами до медиа материалов и генерит им разные ссылки, и даже при импорте товаров с 1с каждый раз одним и тем же твоарам он будет давать разные урлы картинок ( при полной загрузке).
    4. ссылочку на сайт.
    5. запретите индекс подобных файлов в принципе
    6. не париться вообще.
    Ответ написан
    Комментировать
  • После смены пароля через CUser::Update вход по CUser::Login на 20 минут перестает работать. Что делать?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Надеюсь меня тут поругают и ответят как надо было побороть эту проблему.


    Конечно поругают: вы ведь делаете кривой велосипед, вместо того чтобы взять и использовать штатную CUser::ChangePassword (ее описание в API).

    Если уж хотите изобретать собственные велосипеды, то хотя бы изучите как работает стандарт, а потом уже изобретайте свое.
    Ответ написан
    Комментировать
  • Есть ли в PHPStorm инструмент для просмотра того, какие файлы инклюдят друг друга?

    Adamos
    @Adamos
    Теоретически в Шторме есть пункт контекстного меню Find Usages в дереве файлов проекта.
    Но РНР позволяет заинклюдить файл через такие хитрые задницы, что IDE тут бессильна.
    Если же вы предпочитаете не мудрить и сохранять суровую простоту и порядок - выше про PSR уже сказали.
    Ответ написан
    Комментировать
  • Выбор фреймворка для нового проекта - Angular? React? Vue?

    dom1n1k
    @dom1n1k
    Лично для меня Vue - это такой "фреймворк с человеческим лицом".
    В целом JS-мир похож на поле боевых действий, где постоянно то налеты авиации, то кононада гремит, то хипстерская конница с новым логотипом на знамёнах проскачет.
    А "обычный" человек сидит в подвале, обхватив голову руками, и думает - мама дорогая, куда я попал, и чё ваще вокруг происходит?
    Какие-то новые паттерны, подходы, языки... Раньше, чтобы начать, достаточно было блокнота и браузера. Пишешь hello world и сразу его видишь. Теперь нужно поставить ноду, овер 9000 пакетов, десять транспиляторов, таск-менеджеров и бандлеров. Пока увидишь рабочий результат - поседеешь.
    И вдруг какая-то добрая душа взяла у хипстоты всё самое лучшее и разумное, что та родила, но очистив от лишних абстракций и усложнений - и выкатила велосипед в виде велосипеда, а не турбо-космолета с инструкцией толщиной как "Капитал". И снова можно писать в блокноте и смотреть в браузере. При этом почти не проигрывая в возможностях.
    Ответ написан
    1 комментарий
  • Как определить эмоциональное состояние через голосовой ввод?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    Если вы ищете готовое - забудьте, такого нет;
    Если вы хотите написать свое - забудьте, с такими вопросами пока не суждено
    Ответ написан
    4 комментария
  • Есть апп, задающий ребёнку развивающие задачки, а в случае успешного решения задачки ставящий мультик с ютуба?

    Adamos
    @Adamos
    Ваш "компромисс" не решает проблему, а обостряет ее. Решая задачки ради мультиков, ребенок их возненавидит (задачи, а не мультики). Вы ее просто превращаете в крысу, которой нужно давить на рычажок, чтобы стимулировать центр удовольствия в мозгу.

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

    Моей сейчас семь, мультики любит, но без фанатизма. Мы успешно прошли все подшивки "Школы семи гномов", рекомендую. Из развивающих игрушек использовали разве что GComprix, и то очень умеренно. Зато настольных игр у нее полный шкаф. Для вашего возраста уже кое-что можно брать - "Доббль", например.

    В четыре года мы взяли букварь, и дочь читала по странице каждый вечер. Потом - мы читаем сказку на ночь. До сих пор последний час перед сном - час чтения. Сначала дочь, потом мы. К семи годам читает бегло, с выражением, а главное - с удовольствием. Школьные уроки - в охотку и с интересом.

    Нельзя приставить к ребенку автомат и рассчитывать, что он будет развиваться. Ничего так не выйдет. Воспитание такого ребенка, каким хочешь его видеть - это труд, ежедневный и упорный. Если же вам всего лишь хочется, чтобы ребенок не мешал - ну, это-то устроить несложно. Сложности будут потом.
    Ответ написан
    6 комментариев
  • Как на один IP повесить несколько сайтов на разных VM?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Настроить в nginx апстрим на адресные пары виртуалок.
    Ответ написан
    1 комментарий
  • Как принято именовать столбец "количество"?

    @sunrails
    group_count
    Ответ написан
    Комментировать
  • Как менять цвет картинки при наведении курсора?

    Defman21
    @Defman21
    CSS: filter, не?
    UPD: посмотрел сайт. У них просто одно большое изображение с цветным и серым лого. https://www.cybermarketing.ru/images/conf2015/cm-s...
    При таком подходе надо просто менять сдвиг background.
    Ответ написан
    Комментировать
  • Как зашифровать так, чтоб проверить правильность набора пароля?

    miraage
    @miraage
    Старый прогер
    Не изобретайте велосипеды. Уже давно есть надёжные функции.

    password_hash
    password_verify
    Ответ написан
    2 комментария
  • Чей код чище и удобнее расширятся битрикс или модх?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Здесь как нельзя кстати подходят суждения господина Эскобара из группы Бредор.
    CMS как праило заточены под конкретные use-case. MODx например хорош для визиток, Битрикс - наверное тоже чем то хорош.
    Любая система, даже не на базе CMS может иметь правильную структуру, код или наоборот, но это зависит от требований к разрабатываемой системе.
    Ответ написан
    2 комментария