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

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

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

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

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

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

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

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

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

Виктор Волков

самоучка
  • 1
    вклад
  • 20
    вопросов
  • 10
    ответов
  • 30%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Почему не рефакторится компонент?

    rockon404
    Антон Спирин @rockon404 Куратор тега React
    Frontend Developer
    1. Почитайте про иммутабельность.
    2. Никогда не изменяйте state напрямую.
    3. По возможности не делайте bind в render.
    4. Рефакторинг не имеет никакого отношения к перерисовке компонента.

    createItem(task) {
      this.setState(prevState => ({
        tasks: [
          ...prevState.tasks,
          { name: task, status: false },
        ],
      }));
    }


    Весь остальной код по-хорошему бы переписать, но то, как это сделать выходит за рамки вашего вопроса.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему в одних и тех же браузерах на мобильной платформе и на компе по разному срабатывают директивы .htaccess?

    shambler81
    Виктор Таран @shambler81 Куратор тега htaccess
    попробуй так
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !/index.php$
    RewriteRule  .+ index.php [L]
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как сверстать данную секцию?

    aliasst @aliasst
    а может сделать два больших блока флексами по 50%, а внутри каждого мелкие блоки просто идущие друг под другом в столбик
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Какие единицы измерения лучше использовать при верстке адаптивных сайтов и почему?

    rafamont
    Олег Коменда @rafamont
    Junior BackEnd
    em,vh,vw,%
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как работает .htaccess?

    dodo512 @dodo512
    Основные моменты при составлении правил mod_rewrite хорошо разжёваны в статье https://habr.com/company/sprinthost/blog/129560/

    Многие современные браузеры не требуют явного указания <link rel="icon" href="/someimage.ico" />
    и сами пытаются найти иконку в корне сайта.
    RewriteCond %{REQUEST_URI} !/test\.php
    RewriteRule .* test.php

    При обращении к /favicon.ico будет вызван test.php.
    В этом легко убедиться, добавив в скрипт простейшее логирование.
    $log = date('H:i:s ') . $_SERVER['REQUEST_URI'] . PHP_EOL;
    file_put_contents('log.txt', $log, FILE_APPEND);
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Не работаю шрифты на хосте, что не так?

    Vlad_IT
    Владимир Проскурин @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Смотрите консоль браузера. Там будут ошибки загрузки ресурса
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Не работаю шрифты на хосте, что не так?

    tyzberd @tyzberd
    декларация не соответствует синтаксису пуленепробиваемого шрифта
    https://habr.com/post/113136/
    https://www.kobzarev.com/makeup/the-new-bulletproo...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как передать массив из JS в PHP?

    Анатолий Медведев @balamyt92
    ; select * from users; --
    https://secure.php.net/manual/ru/function.urldecode.php

    А вообще правильнее предавать как параметр, например:
    var res = [
                32,
                32,           
                132,
                13.2,
                118.8,
                'слово на русском'
            ];
            var  arr = JSON.stringify(res);
            location.href='http://INSPECTION/CALCMARsaveOk/?arr='+ arr;

    var_dump($_GET);
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как работает promise?

    BenderLib
    Robot Chappie @BenderLib
    JS
    не совсем понял задачу, но если нужно печатать строки по очереди и с задержкой, которую вы сами можете регулировать, то можно сделать так:

    window.tablo = document.getElementById('tablo');
    
            var screen = {
        
                '0': {
                    'str' : '<pre>        Вычислительный комплекс <br><br>',
                    'next': '1'
                },
        
                '1': {
                    'str' : '         <span id="Marintec" class="word_box">1. Калькулятор Маринтека:</span><br>',
                    'next': '1'
                },
        
                '2': {
                    'str':  '         расчет точки росы <br><br>',
                    'next': '1'
                },
        
                '3': {
                    'str':  '         <span id="DWFT" class="word_box">2. Расчет толщин ЛКП:</span> <br>',
                    'next': '1'
                },
        
                '4': {
                    'str':  '         расчет DFT/WFT <br><br>',
                    'next': '1'
                },
        
                '5': {
                    'str':   '         <span  id="Convect" class="word_box">3. Конвектор:</span> <br>',
                    'next': '1'
                },
        
                '6': {
                    'str':  '         выберите величины:',
                    'next': '0'
                }
        
        
            };
            var last = Promise.resolve();
    
            function timer(ms) {
              return new Promise(resolve => {
                setTimeout(() => {
                  resolve()
                }, ms)
              })
            }
    
            for (var i in screen) {
              printing(screen[i]).then(res => {
                last = last.then(() => timer(500).then(() => window.tablo.innerHTML += res))
              })
            }
        
            function printing (screen) {
                return new Promise (function (resolve, reject) {
                    if (screen['next'] == 1) {
                      resolve(screen['str']);
                    } else {
                      reject('дальше строчек нет');
                    }
                });
            }
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему при загрузке изображения php меняет его ширину с высотой на друг друга?

    KorniloFF
    Павел Корнилов @KorniloFF
    Работаю по font-end / JS
    Из-за exif-информации в файле изображения. Удаляйте exif при загрузке на сервер - проблемы, думаю, исчезнут.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать, чтобы PHP Storm ставил табуляции, а не пробелы?

    zelenin
    Александр Зеленин @zelenin
    clip2net.com/s/irxLL9
    на всякий случай - по PSR нужно использовать 4 пробела
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как динамически указать селектор в JS?

    Vlad_IT
    Владимир Проскурин @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Ну типа так будет строится селектор:
    var selector = '.' + this.name;
    $(selector).html(data);
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как правильно организовать лайки?

    Arman @Arik
    фреймворки не используете? они очень хорошо реализуют Отношения моделей.
    А так:
    1.достаю сам массив;
    но ведь left join'ом или подзапросом можно поцепить статусы лайка/дизалайка тек юзера

    2.проверяю не был ли лайк уже поставлен (у каждой статьи!!!)
    что мешает собрать все ID статей на странице и одним запросом спросить все лайки/дизлайки тек юзера?

    3.чтобы вывести общее количество лайков у статьи опять запрос.
    опять же можно или отдельным запросом собрать все кол-во для тек статей или left join или подзапрос

    4. ну и если лайкнул тоже запрос.
    это уже действие, запись, тут не грех пожертвовать ресурсами
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему JSON.parse не может строку взять в json объект?

    archakov06
    Archakov Dennis @archakov06
    Frontend-разработчик (ReactJS)
    Сервак тебе выдает левые данные, вместо массива. У тебя возвращается не только массив, но и string(92) .... Поправь свой бэкэнд и возвращай только JSON без лишних строк.

    Тебе нужно возвращать только массив (т.е. не экранированый JSON).
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Что это за конструкция?

    Mx21
    Максим @Mx21
    Software engineer
    Тернарный оператор.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Что это за конструкция?

    0example
    Алексей Скляров @0example
    Это тоже что и:
    if($url) {
    $this->params = array_values($url);
    } else {
    $this->params = [];
    }


    Краткая запись if условия: (expression) ? true : false;
    Можете полистать тут: https://davidwalsh.name/php-ternary-examples
    Ответ написан более трёх лет назад
    13 комментариев
    13 комментариев
  • Что это за конструкция?

    Максим Осадчий @waspmax1
    Альтернативный синтаксис if else
    Если $this->params = $url - вернуть array_values($url), иначе - пустой массив
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему не работает return?

    gromdron
    Андрей Николаев @gromdron
    Работаю с Bitrix24
    Ну так все правильно!
    Вы же получаете результат для своей строки на второй итерации, а return на первой не работает.
    Заменяем:
    encrypt($text, $m);
    На
    return encrypt($text, $m);

    И видим результат: s eT ashi tist!
    Можно конечно еще и функцию упростить:
    function encrypt($text, $n)
    {
    	if ( $n < 1 )
    	{
    		return $text;
    	}
    	$str1 = $str2 = "";
    	for($i = 0, $len = strlen($text); $i < $len; $i++)
    	{
    		if ( $i%2 == 0 )
    		{
    			$str2 .= $text[$i];
    		}
    		else
    		{
    			$str1 .= $text[$i];
    		}
    	}
    
    	return encrypt( $str1.$str2, ($n-1));
    }
      
    echo encrypt('This is a test!', 2);
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему не работает return?

    twobomb
    twobomb @twobomb
    У вас что вывода ошибок нет?
    function encrypt($text, $n) {	
    $str1 = $str2 = "";
    for($i = 0; $i < strlen($text); $i++)
    	if($i%2 == 0)
    		$str2 .= $text[$i];
    	else
    		$str1 .= $text[$i];
    if($n > 0 )
    	$text = encrypt($str1.$str2, $n - 1);	
    return $text;
    }
    echo encrypt('This is a test!', 2);
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как вывести порядковый номер элемента через цикл for of?

    Lumore
    Lumore @Lumore
    Front-end developer
    elems.map((item, index) => {
      item.textContent = index
    })

    ==============================
    elems.forEach(function(val, index) {
      elems[index].textContent = index;
    });
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • mayton2019
    • 19 ответов
    • 0 вопросов
  • FOUREX
    • 9 ответов
    • 1 вопрос
  • jenki
    Станислав Бодро́в
    • 5 ответов
    • 0 вопросов
  • Rsa97
    Rsa97
    • 5 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

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

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