• Почему много людей в IT недовольны своей работы?

    У каждого своя причина. Кто-то выгорел, кто-то просто устал. Со временем понимаешь что зп это не главное, да и зарплата в IT не такая уж и большая. И что ты каждый день сидишь по 14, 16 а иногда по 18 часов в день перед монитором. Никакой физической активности. Решаешь какие-то странные хочухи клиентов. Результат твоей деятельности мало кто увидит, большая часть твоего кода уйдет на помойку. Что каждый день выходят новые языки, фреймворки. Что количество данных, которые нужно пропускать через мозг, растет с каждым днем. А мозги только стареют. Помнишь Ваас рассказывал про безумие? Так вот, это оно. Каждый день ты залипаешь перед монитором, пытаясь решать кем то придуманную проблему. У тебя уже искривление позвоночника, зрение -5, туннельный синдром где-то не за горами. А ничего, кроме как пялиться в монитор, ты не умеешь.
    Ответ написан
    31 комментарий
  • Как запретить слать запросы, если нажали на определенную кнопку в течение какого то времени?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Судя по тому, как вопрос сформулирован - то есть без понимания того, как работает веб-сайт, то самое простое решение - это тупо заблокировать кнопку.

    Нормальным же решением будет использование очереди.
    Нажатие на кнопку помещает задачу в очередь, причем сначала проверяет - есть ли такое задание. Если есть - возвращает ошибку, "задание уже выполняется".
    Ответ написан
    Комментировать
  • Как можно защитить верстку?

    @anton99zel
    29а класс средней школы №7
    Крайне удивлен, что не увидел до сих пор ответа:
    Ничто так не внушает доверие, как предоплата!
    Ответ написан
    5 комментариев
  • Как и где лучше хранить документы на сайте?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    1) создаете папку для документов за пределами публичной папки (той, в которой index.php и статика)
    2) создаете экшен для загрузки файлов, помещаете туда эти файлы, привязываете файл к пользователю на уровне базы данных
    3) отдача файла для просмотра должна производиться только через экшен (чтобы не было прямого доступа к файлу методом подбора урла), с проверкой, что только юзер и админы могут его просматривать
    Ответ написан
    Комментировать
  • Где сисадмину хранить информацию?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Посмотрите этот продукт (документация).
    Ответ написан
    Комментировать
  • Опасно ли давать удаленный доступ к ноутбуку?

    @tukreb
    Разумеется опасно.
    Вы бы ещё спросили, опасно ли давать ключи от дома незнакомцу на улице.
    Ответ написан
    1 комментарий
  • Как программисту отдыхать и организовать распорядок дня?

    @podde
    самый младший сисадмин
    Не вините себя. У вас объективно очень много времени уходит на дорогу.
    Совершенно серьёзно думаю, что в такой ситуации надо попробовать поговорить с руководителем на предмет хотя бы частичной (пару раз в неделю) удалённой работы. А лучше попробовать вообще выпросить удалённый режим.
    Если нет – пробовать искать другую работу (поближе к дому или удалённую).
    Ну, действительно, по пять часов в день на дорогу – это не дело.
    Ответ написан
    Комментировать
  • Как восстановить БД MySQL из файла /var/lib/mysql/ibdata1 ??

    tegrato
    @tegrato Автор вопроса
    Долгое гугление и приставание к различным экспертам дали следующие результаты:

    1. Без наличия хотя бы старого дампа базы данных не восстановить.

    2. Просмотреть содержимое файлов /var/lib/mysql/ib_logfile0, /var/lib/mysql/ib_logfile1 и /var/lib/mysql/ibdata1 можно, в принципе, и без дополнительных преобразований, например, с помощью Notepad++ (но это жутко не удобно, Notepad++ будет дико тормозить при размере файлов 40М+).
    Поэтому желательно предварительно их преобразовать в более-менее читабельный вид с помощью команды:


    strings /var/lib/mysql/ib_logfile0 > /var/lib/mysql/ib_logfile0.txt


    Потом скачать полученные текстовые файлы, их размер будет меньше в 3-4 раза.
    Если не знать, что было в БД, то будет не просто разобраться в этом массиве строк. Но, в целом, часть информации можно будет легко распознать.
    Ответ написан
    Комментировать
  • Какую php библиотеку использовать для работы с БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для начала надо определиться, о каком инструменте речь.
    Есть три вида инструментов

    1. DBAL - просто класс для выполнения запросов. PDO практически на 90% покрывает задачи такого класса.
    Запросы пишутся вида
    $user = $db->prepared_query("SELECT * FROM users WHERE id = ?", [$id])->fetch();

    2. Query builder - построитель запросов.
    $user = $db->select('*')->from('users')->where('id', $id);

    3. ORM - запросы скрыты внутри, мы пишем только штуки типа $user = User::load($id);

    Максимально гибким, разумеется, является первый.
    Ответ написан
  • Стартап. Устройство для лиц с инвалидностью по зрению. Как реализовать?

    Проведите для начала эксперимент: дистанционно вести незрячего с одним лишь смартфоном на груди (камера показывает, что впереди) и наушниками. Через Skype, Duo или FaceTime или что угодно с видеозвонком. Только по настоящему дистанционно, чтобы диспетчер сидел где-то далеко.
    Ответ написан
    3 комментария
  • Альтернатива Singleton?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    То, что Singleton - антипаттерн, всем известно

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

    Все смогут рассказать про его отрицательные стороны.

    Как и про любой другой паттер / инструмент.
    Ответ написан
  • Как можно сократить данный код?

    0xD34F
    @0xD34F Куратор тега CSS
    Всем элементам добавляете общий класс menu__item, ну и вперёд:

    .opacity {
      opacity: 0.4;
    }

    const $items = $('.menu__item')
      .mouseenter(e => $items.not(e.target).addClass('opacity'))
      .mouseleave(e => $items.removeClass('opacity'));
    Ответ написан
    Комментировать
  • Как можно сократить данный код?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    А js обязательно? Без js это легко можно сделать так:
    Ответ написан
    Комментировать
  • Как найти ссылку в строке включая домен РФ и прочее?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    https://tools.ietf.org/html/rfc3986#appendix-B официальная версия, вообще хз зачем тебе регулярка, проверка URI делается filter_* функциями (FILTER_VALIDATE_URL, FILTER_VALIDATE_DOMAIN), разбор - parse_url
    Ответ написан
    Комментировать
  • Как учить программирование без пк?

    ReaverJS
    @ReaverJS
    Ну, можете попробовать установить приложение SoloLearn C#. Там хоть практические задачки есть.
    Еще, как снизу написали, CodeWars - классный задачник с online IDE.
    Ответ написан
    Комментировать
  • Как учить программирование без пк?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - есть книги. в том числе всьма авторитетные. мало того - есть онлайн и книги, и курсы, и задачники
    book.lib.rus.ec
    https://metanit.com/sharp/tutorial/
    https://www.codewars.com/
    2 - онлайн IDE и близкие к ним инструменты
    https://sharplab.io/
    https://dotnetfiddle.net/
    https://ideone.com/
    https://rextester.com/

    ps
    - это далеко не все. дружите с поисковиками
    - а вот на экран телефона вероято влезет не все
    - если кто то под баном, опять же поисковики подскажут
    Ответ написан
    Комментировать
  • Откуда появился логотип Хабр Q&A?

    glaphire
    @glaphire
    PHP developer
    "Хабр Q&A" как название не отображает сути сервиса, звучит как раздел "F.A.Q". "Toster.ru" закрепился как бренд и теперь потеряет большую долю своей репутации
    Ответ написан
    9 комментариев
  • Как вам такое решение задачки?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Предложу свой велосипед на костылях. Без сортировки!
    const zip = arr => arr
      .reduce((agg, c) => {
        const iR = agg.indexOf(c + 1);
        const iL = agg.lastIndexOf(c - 1);
        if (!!~iR && !!~iL) agg.splice(iL, 2); // закрыли дырку
        else if (!!~iR) agg[iR] = c; // сдвинули границу
        else if (!!~iL) agg[iL] = c; // то же
        else { // вставляем сироту - найти позицию сразу после меньшего
          let pos = 0;
          while (pos < agg.length  &&  agg[pos] < c) pos++;
          agg.splice(pos, 0, c, c); // вставляем дважды
        }
        return agg;
      }, [])
      .reduce((agg, c, i, arr) => {
        if (!(i&1)) agg.push(arr[i+1] === c ? c : [c, arr[i+1]].join('-'));
        return agg;
      }, [])
      .join(', ')
    ;

    Массив границ диапазонов, в нём всегда чётное число элементов.
    Очередное число вставляем в массив: ищем, есть ли его ближайшие соседи слева и справа.
    • Если есть оба, число закрывает «дырку», надо просто убрать этих двух соседей.
    • Если нашёлся только один – заменяем его собой, сдвигая границу.
    • Если ни одного соседа, значит, число пока сирота, вставляем его дважды,
      как будто это и левая и правая граница диапазона.
    Так из первого примера получается [ 0, 5, 8, 9, 11, 11 ]
    Остаётся форматирование. Смотрим только чётные элементы. Если текущий и следующий элементы равны, это «одинокое» число. Если не равны — это диапазон через дефис. И склеиваем через запятую-с-пробелом.

    Учитывая сортированность собираемого массива, можно ускорить, заменив indexOf() и lastIndexOf() на самописный поиск, останавливающийся на элементе, бОльшем или меньшем искомого.

    Fiddle с тестами

    Ответ написан
    2 комментария
  • Стоит ли хранить зашифрованные данные пользователя в Local/Session Storage на клиенте?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это просто идеальная иллюстрация к известному высказыванию Дональда Кнута "Преждевременная оптимизация - корень всех зол".

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

    После этого начинаем проблему решать.
    Значит, чтобы сэкономить время на запросе к базе, которая обычно лежит локально и обычное обращение занимает микросекуны, мы решаем закэшировать данные на клиенте. Который может быть в тысяче километров, а пинг в сотни миллисекунд - не редкость. И вот мы решаем что клиент будет с каждым запросом отправлять массив данных. Причем таких данных, которые на сервере и так. есть. Гениально!

    Стоит ли так делать и почему;
    не стоит потому что не надо высасывать проблемы из пальца.
    Какой будет прирост производительности
    Отрицательный
    Как Вы решаете подобные вопросы.
    МЫ ИХ НЕ РЕШАЕМ.
    Мы решаем реальные проблемы, объективно существующие.
    А воображаемые проблемы высосанные из пальца решать не следует.
    Ответ написан
    Комментировать
  • Как ко времени например "10:30" прибавить 10 минут в php?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    $time = new \DateTime('10:30');
    $time->add(new \DateInterval('PT10M'));
    echo $time->format('H:i');

    sandbox.onlinephpfunctions.com/code/9d8a644a8c06fa...
    Ответ написан
    Комментировать