Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
OAPrilepa

Олег Прилепа

Frontend developer
  • 51
    вклад
  • 1
    вопрос
  • 74
    ответа
  • 35%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как убрать все нули из начала строки?

    dodo512 @dodo512
    ltrim($str, '0')
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как в переменной PHP передаваемой AJAX в JS передать перенос в alert?

    maddog670
    maddog670 @maddog670
    ."\n";
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как получить элементы одного массива, отсутствующие в другом?

    0xD34F
    0xD34F @0xD34F
    $ids = array_unique(array_column($arr, 'user_id'));
    $result = array_filter($arr2, fn($n) => !in_array($n['users_id'], $ids));
    Ответ написан более года назад
    8 комментариев
    8 комментариев
  • Есть ли бесплатный аналог гугл таблиц с разграничением доступа?

    dimonchik2013
    Dimonchik @dimonchik2013
    non progredi est regredi
    При этом есть требование, чтобы видели они только свои части таблицы, например, у каждого свой лист в таблице

    такого нельзя

    делаешь 10 таблиц, щаришь доступ себе и одному к каждому

    потом скриптом соединяешь данные в один файл для начальства
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как вы реализуете взаимодействие frontend и backend?

    IonDen
    Денис Инешин @IonDen
    JavaScript developer. IonDen.com
    Смотрите, сервер не просто возвращает JSON, он возвращает тот JSON который запрашивает клиент в соответствии с определенным API.

    Т.е, если клиент говорит:
    - Передай мне данные о товарах
    - Версия API 1.0

    То сервер всегда возвращает товары в том виде, как это указано в API версии 1.0.

    Если вы делаете изменения на сервере и сервер должен отдавать данные в новом виде, то вы должны лишь добавить новую версию.

    Если клиент скажет скажем:
    - Получить данные о товарах
    - Версия API 2.0
    -> Вернуть новый JSON

    Но если клиент скажет 1.0, вы должны вернуть старый.

    Именно таким образом разрабатывается взаимодействие клиента и сервера. Сервер один, а клиентов может быть много и обновлять клиенты можно в разное время. Главное поддерживать все старые версии API.
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Заведение бага или возвращение стори?

    freiman
    Андрей @freiman
    Тестировщик 12+
    Однозначно заводить баги отдельно от стори, но линковать их с исходной задачей для трекинга статуса. Как вариант - делать подзадачи, если система такое позволяет, если вам не нравится идея закрывать сторю с непофикшенными багами :)

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

    В общем, на борде очень скоро наступит неразбериха, а стендапы могут быть в стиле
    - Почему стори не двигается?
    - Баг все еще чиним!
    - Который?
    - Ну который там в 7 и 13 и 15 комментах был описан..
    - Эээ.. (открывает комменты, читает, пытается понять).. Про что там?
    - Ну про [вот эту ерунду]
    - А, ок!

    А если баги отдельно:
    - Почему эту стори не подвинули?
    - Чиним баг WTF-512
    - Так, "Не работает [вот эта ерунда]".. а, понятно!
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Telegram бот не выводит месседж?

    nokimaro
    nokimaro @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Если длина итогового сообщения больше 4096 символов (utf8), то разбиваем его на несколько сообщений и отправляем каждое отдельно.

    case
        ('Промо'):
            $sql = 'SELECT * FROM promo';
            $result = mysqli_query($link, $sql);
            $array = array();
            while($row = mysqli_fetch_array($result))
            {
                $item['promo_name'] = $row['promo_name'];
                $item['promo_descr'] = $row['promo_descr'];
                $item['promo_link'] = $row['promo_link'];
                $cod[] = $item;
            }
            
            $text = ''; // <---
            foreach($cod as $v)
            {
                $new_line = $v['promo_name'].' - '.$v['promo_descr'].' <a href="'.$v['promo_link'].'">перейти к акции</a><br/>';
                
                if(mb_strlen($text) + mb_strlen($new_line) > 4096) // <---
                {
                    file_get_contents($GLOBALS['api'].'/sendMessage?chat_id='.$chat_id.'&reply_markup='.$keyboard.'&text='.urlencode($text));
                    $text = '';
                }
                
                $text .= $new_line; // <---
            }
            
            if($text != '') // <---
            {
                file_get_contents($GLOBALS['api'].'/sendMessage?chat_id='.$chat_id.'&reply_markup='.$keyboard.'&text='.urlencode($text));
            }                
            // file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id='.$chat_id.'&reply_markup='.$keyboard.'&text=' . urlencode("Код ".$row['promo_name']." \n ".$row['promo_descr']." \n Ссылка ".$row['promo_link']." "));
        break;
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему прямая ссылка на сайт работает, а при проксировании через proxy_pass - нет?

    Алексей @alenov Автор вопроса
    Программист
    Разобрался. Нужно было явно установить заголовок Host:
    proxy_set_header Host api.site.ru
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как с помощью Cypress отследить запрос на сервер ??

    Николай @izheme
    Познаю мир
    Например, вот так:
    it('Request', () => {
        cy.server()
        cy.route("POST", '/oauth/token').as('getToken')
    
        cy.get(['data-cy="button-get-token"]').click()
    
        cy.wait('@getToken').its('status').should('eq', 200)
      })
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как перенаправить все ссылки такого вида?

    dodo512 @dodo512
    Если нужен редирект с кодом 301.
    RewriteCond %{QUERY_STRING} (?:^|&)wordfence_lh=
    RewriteRule ^ /404.php? [R=301,L]


    Если нужно внутреннее перенаправление.
    ErrorDocument 404 /404.php
    
    RewriteCond %{QUERY_STRING} (?:^|&)wordfence_lh=
    RewriteRule ^ - [R=404,L]


    Или
    RewriteCond %{QUERY_STRING} (?:^|&)wordfence_lh=
    RewriteRule ^ /404.php? [L]
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как отследить изменения размера экрана?

    Seasle
    Александр @Seasle Куратор тега JavaScript
    \( ゚ヮ゚)/
    window.addEventListener('resize', function () { // Можно принимать объект события
        // Если width глобальная переменная
        width = screen.width;
    });
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как через css поменять цвет png изображения?

    Seasle
    Александр @Seasle Куратор тега CSS
    \( ゚ヮ゚)/
    img {
        transition: filter 0.25s ease-in-out;
    }
    
    img:hover {
        filter: grayscale(1);
    }


    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как изменить значения массива на основе значений другого массива?

    SilenceOfWinter
    Антон Шаманов @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    array_merge_recursive/array_replace_recursive ?
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как мониторить процент загрузки при использовании AJAX?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    https://stackoverflow.com/questions/19126994/what-...
    $.ajax({
        xhr: function() {
           var xhr = new window.XMLHttpRequest();
    
           xhr.addEventListener("progress", function(evt) {
               if (evt.lengthComputable) {
                   var percentComplete = evt.loaded / evt.total;
                   //Do something with download progress
               }
           }, false);
    
           return xhr;
        },
        type: 'POST',
        url: "/",
        data: {},
        success: function(data){
            //Do something on success
        }
    });
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Что если не использовать компонент Switch из пакета react-router?

    XaveScor @XaveScor
    необходим чтобы рендерить только первый подходящий роут из списка. Если не будет, то будут отрендерены все роуты, которые подходят под передаваемые условия.

    <Switch>
      <Route path="/" component={A} /> // <-- будет отрендерен только этот роут
      <Route path="/" component={A} />
    </Switch>


    <>
      <Route path="/" component={A} /> // <-- будет отрендерен этот роут
      <Route path="/" component={A} /> // <-- и этот так же будет отрендерен
    </>
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как компилировать ES6 налету?

    Athanor
    Athanor @Athanor
    Лайк + Решение: не жмись, нажми
    У babel на оффсайте есть онлайн транспилер, если открыть консоль, видно, что никакие запросы при транспиляции на сервер не улетают. Далее идем в гитхаб бейбеля и находим там исходники их сайта, ищем там функцию, которая вызывается для транспиляции. Находим и радуемся)
    Ответ написан более трёх лет назад
    7 комментариев
    7 комментариев
  • Где можно посмотреть структуру базы данных для реализации RBAC и ABAC?

    Иван Мельников @immelnikoff
    Изучаю БД
    Ну, вот, недавно делал:
    5e2ea00187b6b014934216.png
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как в 1С делать CRUD-запросы к некому REST-сервису с учетом bearer authentication?

    fosihas
    Константин @fosihas
    Автоматизации учета на 1С.
    Да

    Поиск )))
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как в 1С делать CRUD-запросы к некому REST-сервису с учетом bearer authentication?

    Дмитрий Кинаш @Dementor
    программист, архитектор, аналитик
    У объекта HTTPЗапрос (HTTPRequest) есть свойство Заголовки (Headers), посредством которого можно задавать все необходимые хедеры включая токены и basic-авторизацию.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Где можно посмотреть структуру базы данных для реализации RBAC и ABAC?

    SilenceOfWinter
    Антон Шаманов @SilenceOfWinter
    та еще зажигалка...
    ну рбак это же совсем просто :
    CREATE TABLE IF NOT EXISTS `roles` (
      `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `description` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `uniq_name` (`name`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    INSERT INTO `roles` (`id`, `name`, `description`) VALUES(1, 'login', 'Login privileges, granted after account confirmation');
    INSERT INTO `roles` (`id`, `name`, `description`) VALUES(2, 'admin', 'Administrative user, has access to everything.');
    
    CREATE TABLE IF NOT EXISTS `roles_users` (
      `user_id` int(11) UNSIGNED NOT NULL,
      `role_id` int(11) UNSIGNED NOT NULL,
      PRIMARY KEY  (`user_id`,`role_id`),
      KEY `fk_role_id` (`role_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE IF NOT EXISTS `users` (
      `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `email` varchar(255) NOT NULL,
      `username` varchar(255) NOT NULL DEFAULT '',
      `password` varchar(255) NOT NULL,
      `logins` int(11) UNSIGNED NOT NULL DEFAULT 0,
      `last_login` int(11) UNSIGNED,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `uniq_username` (`username`),
      UNIQUE KEY `uniq_email` (`email`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    CREATE TABLE IF NOT EXISTS `user_tokens` (
      `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `user_id` int(11) UNSIGNED NOT NULL,
      `user_agent` varchar(255) NOT NULL,
      `token` varchar(255) NOT NULL,
      `created` int(11) UNSIGNED NOT NULL,
      `expires` int(11) UNSIGNED NOT NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `uniq_token` (`token`),
      KEY `fk_user_id` (`user_id`),
      KEY `expires` (`expires`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    ALTER TABLE `roles_users`
      ADD CONSTRAINT `roles_users_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
      ADD CONSTRAINT `roles_users_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;
    
    ALTER TABLE `user_tokens`
      ADD CONSTRAINT `user_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • Drno
    • 8 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • AUser0
    • 5 ответов
    • 0 вопросов
  • scoffs
    Семён Окулов
    • 5 ответов
    • 0 вопросов
  • sasmoney
    sasmoney
    • 4 ответа
    • 0 вопросов
  • dimonchik2013
    Dimonchik
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации