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

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

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

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

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

Рейтинг IT-брендов 2020
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

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

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

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

Rsa97

Для правильного вопроса надо знать половину ответа
  • 3981
    вклад
  • 1
    вопрос
  • 4750
    ответов
  • 45%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Почему PHP не принимает символы / ' ` и смайлики в строке input и textarea для записи в БД MySQL?

    FanatPHP
    FanatPHP @FanatPHP
    Чебуратор тега PHP
    Чтобы смайлы не вызывали ошибку надо выставить правильную кодировку
    чтобы никакие символы не мешали запросу, все переменные надо передавать в БД отдельно от запроса

    // правильно соединяемся
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli($host, $user, $pass, $db, $port);
    $mysqli->set_charset("utf8mb4");
    // правильно вставляем
    $sql = "INSERT INTO users (name, email, password) VALUES (?,?,?)";
    $stmt= $conn->prepare($sql);
    $stmt->bind_param("sss", $name, $email, $password);
    $stmt->execute();
    Ответ написан 20 нояб. 2020
    Комментировать
    Нравится 4 Комментировать
  • Практичное ядро сети будущего офиса на 200человек, какой опыт посоветуете из современных решений?

    CityCat4
    CityCat4 @CityCat4
    Если я чешу в затылке - не беда!
    Хотите проблем - ну делайте "модно-стильно-молодежно". Не хотите проблем - делайте кабелем. wifi был придуман для носимых устройств и оправдан там, где прокладка сети уже невозможна - в старых офисах, на арендуемых площадях, в исторических зданиях.
    При проектировании сети всегда стоит закладывать на каждое место на одну розетку больше, чем было посчитано :) Узловые свитчи вязать оптикой. Серверную располагать так, чтобы "чужие здесь не ходят".
    Ответ написан 10 нояб. 2020
    7 комментариев
    Нравится 16 7 комментариев
  • Можно ли считать JavaScript полноценным языком программирования?

    Adamos
    Adamos @Adamos
    Когда-то Голубицкий в Компьютерре прекрасно ответил на весь класс подобных вопросов.
    Там был срач о профессиональной фототехнике и профессионалах-фотографах.
    Так вот, он указал на мужика с обезьянкой на сочинском пляже и тот очевидный факт, что он именно фотографией профессионально зарабатывает, и люди ему за нее платят. Хотя дело тут не в профессиональных навыках мужика и уж тем более не в профессиональности его фототехники. А в обезьянке.
    На JS пишут тонны кода. Будете вы лепить на него свой ярлычок со словом "полноценный" или нет - это исключительно ваши половые трудности. А караван идет.
    Ответ написан 01 нояб. 2020
    9 комментариев
    Нравится 12 9 комментариев
  • Как заставить браузер скачать pdf-файл вместо его открытия во вкладке?

    dyuriev
    Денис Юрьев @dyuriev
    A posteriori
    отдавайте с заголовком Content-Type: application/octet-stream
    Ответ написан 29 окт. 2020
    13 комментариев
    Нравится 5 13 комментариев
  • Каков шанс попадания в группу 2 из 10 человек?

    AnT @TheCalligrapher
    Если идти "длинным" комбинаторным путем, то можно вычислить количество "благоприятных" размещений 10 человек по 10 позициям и разделить их на полное количество размещений (то есть на 10!).

    "Благоприятными" будут размещения

    (1, 2) (...) (...) (...) (...)
    (2, 1) (...) (...) (...) (...)
    (...) (1, 2) (...) (...) (...)
    (...) (2, 1) (...) (...) (...)

    и т.д, всего 10 вариантов. Количество размещений в каждом варианте очевидно равно 8!

    Итого, вероятность равна (10 * 8!) / 10! = 1/9

    Хотя на самом деле ответ 1/9 очевиден. Без потери общности можно считать, что сначала мы помещаем куда-то человека №1, а затем в одно из свободных мест человека №2. Вероятность, что человек №2 окажется в одной группе с человеком №1 очевидно равна 1/9. Другое дело, что следует показать, что в таких "очевидных" рассуждениях мы не теряем общности, т.е. показать, что не нужно еще отдельно рассматривать варианты, когда первым мы размещаем человека №3, вторым - человека №5 и только затем человека №1 и т.д.
    Ответ написан 18 окт. 2020
    9 комментариев
    Нравится 6 9 комментариев
  • Реализация игры "Морской бой" на серверной части?

    firedragon
    Владимир Коротенко @firedragon
    Senior .NET developer
    I’d
    Row
    Column
    UserId
    State
    Gameid
    И никакого джисона
    Ответ написан 08 окт. 2020
    29 комментариев
    Нравится 2 29 комментариев
  • Почему PDO выдаёт фатальную ошибку?

    MaLuTkA_UA @MaLuTkA_UA
    С помощью подготовленных запросов нельзя вставлять колонки. Прочтите документацию как использовать PDO
    Ответ написан 29 сент. 2020
    Комментировать
    Нравится 1 Комментировать
  • Почему не правильно закрывается тег в xml?

    scottparker
    scottparker @scottparker
    $t1 = $t1->addChild ( 'Товар' );
    вот в этом (этих) переприсваиваниях переменной t1
    Ответ написан 25 сент. 2020
    2 комментария
    Нравится 1 2 комментария
  • Как на javascript замерить время выполнения функции (в наносекундах)?

    Robur
    Robur @Robur
    Знаю больше чем это необходимо
    точное время выполнения одного вызова функции получить довольно сложно.

    во первых - performance.now возвращает дробное число, поэтому там в принципе может быть наносекундная точность. однако стандарт определяет что точность должна быть 5 микросекунд. Плюс браузеры могут специально занижать точность чтобы бороться с некоторыми атаками.

    поэтому правильно вызывать функцию много раз и считать среднее.
    так же в ноде есть process.hrtime которая дает наносекунды.

    оба этих метода "в лоб" не дадут нормального результата. Почему? потому что в реальности происходит много всего интересного при выполнении кода.

    в движке есть неимоверное количество оптимизаций, и функция вызванная 10 раз будет иметь совершенно другой код чем функция вызванная 100 раз. То же касается и типов параметров - например вы можете передавать целые или дробные числа.
    На одну вашу написанную js-функцию движок сгенерирует несколько функций которые это реализуют. У этих функций может быть совершенно разный код с разной произодительностью.

    Переключение происходит на лету и в общем виде вы не знаете когда это происходит.

    поэтому само по себе замерение скорости "функции" имеет мало смысла, так как там их несколько внутри. Если интересны детали - погуглите JIT, AOT и v8 optimizations.
    Сейчас важно то что есть "холодные" функции которые работают медленее но надеждее и как правило используются сразу и есть "горячие" варианты, которые компилятор начинает использовать когда видит что код вызван много раз, и условия не меняются. "Горячие" работают быстрее.

    при прогоне цикла сначала будет работать "холодный" вариант, затем в какой-то момент срабатывает оптимизация, он переключается на более быстрый. Таких переключений может быть несколько.

    зная это, код можно сначала разогреть а потом померять скорость. скорее всего на разогретом коде будет работать один и тот же вариант.

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

    И тут самый главный момент - даже если вы замерите эту скорость, что вы будете делать с этим знанием? В реальной программе при выполнении этого кода скорость может быть совсем не такая как вы намеряли. Эти тесты годятся только для своего общего развития

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

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

    FanatPHP
    FanatPHP @FanatPHP
    Чебуратор тега PHP
    Это частая ошибка новичков, которые путают транзакции с блокировками.
    Тебе нужно последнее

    вот так и формулируй - как заблокировать таблицу на чтение
    а не какой-то абстрактный "участок кода"
    Ответ написан 13 сент. 2020
    4 комментария
    Нравится 1 4 комментария
  • Как правильно зарегистровать/лицензировать код?

    gbg
    Фокс Йовович @gbg
    Баянист. Тамада. Услуги.
    Все уже сделано. При создании интеллектуальной собственности вы автоматически становитесь единоличным обладателем всех авторских и смежных прав. Никто без вашего письменного разрешения не имеет права ваше произведение даже использовать, не то что распространять

    Главное - иметь возможность доказать авторство. Можете CD с исходниками положить в банковскую ячейку, засвидетельствовав этот факт нотариально.

    Приложите к вашей программе текст лицензионного соглашения (тут может потребоваться консультация юриста)
    Ответ написан 08 сент. 2020
    6 комментариев
    Нравится 1 6 комментариев
  • Как запретить пользователю доступ к php,json файлам через .htaccess, чтобы работали ajax запросы?

    inoise
    Иван Шумов @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    На самом деле никак. Пользователь это браузер, браузер должен через Ajax обращаться к скрипту. Ajax это по сути и есть прямой запрос. Можно поиграться с CORS, но результата будет ноль ибо он не спасет от такого.

    Стоит подумать какую проблему вы пытаетесь решить этим. Что это за скрипт и почему надо его ограничить?
    Ответ написан 25 авг. 2020
    4 комментария
    Нравится 4 4 комментария
  • Как записать несколько значений в одном поле MySQL?

    FanatPHP
    FanatPHP @FanatPHP
    Чебуратор тега PHP
    Тебе надо освоить базовые принципы реляционных баз данных
    и освоить такие понятия как "отношение один ко многим" и join

    Поскольку ответ на вопрос "Как записать несколько значений в одном поле MySQL?" звучит так:

    завести ещё одну таблицу, в которую писать нужные значения на разных строках, вместе с id строки из основной таблицы


    после этого делаешь запрос к этой таблице, передавая ид пользователя, и получаешь все его курсы

    и я очень, очень очень очень очень очень очень надеюсь что видеокурсы не по программированию.
    Ответ написан 14 авг. 2020
    2 комментария
    Нравится 3 2 комментария
  • Найти среднее число в разнице между 2-мя числами?

    AnT @TheCalligrapher
    Ым... Зачем понадобилось все это, если для вычисления среднего можно проcто сделать (70.05 + 62.43) / 2 и вообще не беспокоиться о том, какое число меньше?

    Я не вижу в вашей постановке задачи даже малейшего объяснения того, почему вы решили вот так "чесать правое ухо левой ногой", то есть идти по какому-то странному длинному обходному пути через "половину разности" и "сложение с минимальным". Зачем вам это понадобилось?
    Ответ написан 04 авг. 2020
    1 комментарий
    Нравится 2 1 комментарий
  • Как зашифровать пароль пользователя для хранения в БД?

    usdglander
    Lander @usdglander Куратор тега PHP
    Yipee-ki-yay
    https://www.php.net/manual/ru/function.password-hash
    https://www.php.net/manual/ru/function.password-ve...
    Ответ написан 02 авг. 2020
    15 комментариев
    Нравится 4 15 комментариев
  • Как узнать когда пользователь покинул мой сайт на php?

    FanatPHP
    FanatPHP @FanatPHP
    Чебуратор тега PHP
    1. на РНР - точно нельзя.
    2. Если страница открыта, то это совсем не значит, что пользователь её читает. Он может быть в другой программе или вообще на кухне
    3. Идея заведомо дурацкая и не стоит ни одной минуты времени, затраченной на неё.
    Ответ написан 29 июл. 2020
    1 комментарий
    Нравится 3 1 комментарий
  • Debian 9. Proftpd и vsFTPd. Почему пользователь может переименовывать и удалять root папки/файлы?

    galaxy @galaxy
    Конечно, может. Чтобы удалить или переименовать элемент в директории (будь-то файл или подкаталог), нужны права на запись в саму директорию, т.е. в данном случае на запись в каталог пользователя
    Ответ написан 04 июн. 2020
    5 комментариев
    Нравится 2 5 комментариев
  • Способствуют ли СУБД экономии ресурса жесткого диска по сравнению с хранением (небольшого количества) данных в json-файлах?

    gbg
    Фокс Йовович @gbg
    Баянист. Тамада. Услуги.
    мы должны перезаписать весь файл целиком
    Если смотреть с этой стороны, то да, что JSON, что XML - абсолютно дурацкие форматы, когда речь идет о хранении данных в процессе их обработки - стоит поменять одно поле, и нужно переписывать весь хвост файла, так как все записи имеют переменную длину.

    С другой стороны, СУБД хранят свои данные в так называемых страницах, размер которых, как правило, кратен размеру кластера на жестком диске. Следовательно, изменение одной записи приведет только к перезаписи группы страниц, относящейся к этой записи, но не к перезаписи всей БД.

    Однако, с практической точки зрения, важно смотреть не на износ, а на быстродействие. СУБД, например, хранит числа в двоичном представлении, в то время как JSON, XML и прочая требуют преобразования чисел в строки и наоборот при каждой записи и чтении, что естественно, создает дополнительные тормоза и обогрев атмосферы.

    Проектировать ПО с учетом возможного износа накопителей данных - это уже попытка учесть эффекты третьего порядка (первый порядок - ПО работает с ошибками, второй порядок - работает правильно но медленно, третий - работает быстро и правильно, но создает косвенные затраты на оборудование), что имеет мало практического смысла.

    То есть да, хранить данные в СУБД оптимальнее и быстрее. Еще там есть схема данных, которая проследит за их целостностью, а также функционал фильтрации и агрегации, которые не придется писать заново.
    Ответ написан 18 мая 2020
    Комментировать
    Нравится 7 Комментировать
  • Можно ли запрограммировать самодельное устройство счетчика денег?

    inoise
    Иван Шумов @inoise
    Solution Architect, AWS Certified, Serverless
    это называется касса)
    Ответ написан 18 мая 2020
    Комментировать
    Нравится 10 Комментировать
  • Почему значения всех свойств класса "затираются" в конструкторе?

    BoShurik
    BoShurik @BoShurik
    Symfony developer
    У вас ошибка
    class Decoder{ 
        private $inputStr; 
        private $pos; 
        private $out; 
        private $length; 
         
        public function __construct(string $str) {
            $this->inputStr = $str;        
            $this->pos = 0; // Было $this->$pos
            $this->out = ''; // Было $this->$out
            $this->length = mb_strlen($str); // Было $this->$length
        }   
        public function decode(): string {
            return $this->out; // // Было $this->$out
        }    
    }


    В вашем случае $this->$length = mb_strlen($str); => $this->null = mb_strlen($str);
    Таким образом return $this->$out; => return $this->null // 6
    Ответ написан 20 апр. 2020
    Комментировать
    Нравится 2 Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • SoreMix
    SoreMix
    • 12 ответов
    • 0 вопросов
  • sergiks
    Сергей Соколов
    • 7 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 7 ответов
    • 0 вопросов
  • DevMan
    DevMan
    • 6 ответов
    • 0 вопросов
  • delphinpro
    Сергей delphinpro
    • 5 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

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

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