• Хеш пароля, уникальная соль?

    Anton_from_Amber
    @Anton_from_Amber
    Намедни статью переводную опубликовали. Как раз про использование соли.
    Если у вас паранойя, то соль лучше не хранить, а высчитывать на основе относительно доступных данных. Возьмите, к примеру артикул первой покупки пользователя, допишите сумму товара, добавьте общую константную соль и заверните это всё в MD5. Если покупок не было, то первый просмотенный товар (думайте сами). Если у вас данные по деньгам хранятся в другой БД получится достаточно стойко.
    Можно генерить соль и новый хеш на основе последней записи в микроблоге или логине прикреплённого менеджера. фантазируйте.
    Главное, ограничить возможность доступа к этим данным злоумышленника при частичной компроментации системы. К примеру у него естьтаблица с логинами и хешем, есть доступ к контенту сайта, но не получилось получить БД билинга. Или нет доступа к файловой системе, а вы завязались на параметры аватары. Уже будет сложнее.
    Ответ написан
    Комментировать
  • Что то вроде макроса, google chrome

    для запроса — wget, для периодического запуска cron или если вы на Win — планировщик at
    Ответ написан
    2 комментария
  • Порекомендуйте такое средство дистанционного управления компьютером (под Windows), которое наиболее безопасно для управляемого?

    Clouded
    @Clouded
    Разнообразные VNC клиенты и серверы вполне справятся с подобной задачей.
    Большая часть из них open-source.
    Ответ написан
    Комментировать
  • HTML, пробелы сдвигают блок

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Третий или четвертый символ с конца в этих пробелах — символ с номером 65279. Не знаю что это, и как он туда попал, но если его удалить, то остальные пробелы перестают играть роль, как и задумано.
    Ответ написан
    Комментировать
  • Автообновление flash плеера?

    Если браузер Chrome, то там флэш обновляет Гугл, как и браузер.
    Ответ написан
    1 комментарий
  • Лицензирование кода web-приложения?

    @Mox
    Team Lead, RoR, React/React Native
    90% если он и будет писать что-то для конкурента, то скорее другую версию, с учетом всего наработанного опыта. Типа «версию 2.0»
    Ответ написан
    Комментировать
  • Лицензирование кода web-приложения?

    opium
    @opium
    Просто люблю качественно работать
    выложите под gpl
    Ответ написан
    1 комментарий
  • Браузер под андроид, который умеет сворачиваться

    @edogs
    Стандартный родной IE на SGSII помнит все вкладки и заново не начинает грузить…
    Ответ написан
    1 комментарий
  • Почему хабр отказался от %username%.habrahabr.ru

    @lesha_penguin
    Все равно никто ничего не скажет. Поэтому мои предположения:

    1) Снижение нагрузки на DNS.
    за: на каждое обращение к профилю юзера выполняется лишний ресолвинг. вносит задержки. лишняя нагрузка на сеть.
    против: новость «как DNS лег под хабрэффектом» хорошо опубликовать первого апреля.

    2) >9000 виртуальных хостов сильно огорчили сервер.
    за: очень возможно, особенно если они были «брутально» прописаны в конфиге апача.
    против: сильно сомневаюсь что оно так. Сотни-то хостинговых кампаний предлагают услуги виртуального хостинга, когда и поболее доменов висит на одном сервере, и чем хабр отличается? Да и высоконагруженные проекты с кучей поддоменов: тоже есть хорошие примеры, ЖеЖешечка например, так же, работает себе, и ничего!

    3) Виртуальные поддомены вначале планировались для чего-то еще, типа возможности для хабраюзеров создать свой мини-сайт на хабре. Но потом решили так не делать. А сейчас просто «выпилили нахрен столетний рудимент» во время очередной итерации рефакторинга.
    за: иногда код следует перебирать и архитектурно. куча заведомо мертвого кода в проекте — путь в никуда, как жизнь в городе-призраке!
    против: только зачем? если рудимент не мешает, то святой принцип: работает-не трогай!

    4) Поддомены *.habrahabr.ru хотят дать компаниям под корпоративные блоги (посолидней как-то ведь), а юзеров просто передвинут /users/username/.
    за: очень даже возможно. Маркетингово совершенно нелогично когда «компания» имеет какую-то «домашнюю страничку» /companies/thecompany/ а «юзер» получает целый «домен».
    против: а компаниям на это пофиг, у каждой из них есть свой корпоративный сайт.

    5) Поддомены *.habrahabr.ru хотят отдать под тематические блоги. Каждая тематика-свой поддомен.
    за: да, вообще-то логично! более логичнее, чем для юзеров!
    против: а смысл?

    6) Распределение нагрузки за счет наращивания количества обслуживающих серверов.
    за: если определенные юзерские данные были связаны с определенными серверами, то логично.
    против: все равно непонятно, если запрос проходит через rewrite то пофиг что домен что кусок пути.

    7) Юзеры стали злоупотреблять пиаристыми поддоменами username.habrahabr.ru.
    за: а что, *.habrahabr.ru — возможно попробовать как инструмент для раскрутки.
    против: «малокалиберно» слишком. тянет на материал для новости на первое апреля.

    8) Выкатывание какой-то принципиально новой фишки, где поддомен будет только мешать.
    за: неизвестно что это за фишка, может поддомены и сильно будет мешать!
    против: а неизвестно что это за фишка, может поддомены и не будут мешать;)

    9) Хабр собирается выкатить пачкой сразу кучу хабра-сервисов. Логичное предположение, если ХабраСторадж — только начало, а завта планируется уже ХабраБлекджек.
    за: habrastorage.habrahabr.ru для Хабрастораджа более правильно, чем постоянный риск «фишинг-батхертов» вида ha6past0rage.ru. Да и проще с одной кукой авторизации в одном домене.
    против: ну, а если какой-то проект предусматирвает «столь тесную интеграцию с хабром», то почему бы не habrahabr.ru/projectname/?
    Ответ написан
    Комментировать
  • Существует ли библиотека для организации кроссбраузерности html страниц

    DanielWolf
    @DanielWolf
    У меня такая «Библиотека» получает 20$ в час…
    Ответ написан
    Комментировать
  • JQuery parents().get(2) против parent().parent().parent()?

    Smileek
    @Smileek
    Спасибо, веселенькая задачка получилась.:)
    Тестим вот на этом:
    <div id="i1"><div id="i2"><div id="i3"><div id="i4"></div></div></div></div>
    <div id="info"></div>

    Вот так:
    var x, dt, dt2;
    var iter = 100000;
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
        x = $("#i4").parent().parent();
    }
    dt2 = new Date();
    $("#info").text(dt2 - dt);
    				
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
        x = $("#i4").parents().get(2);
    }
    dt2 = new Date();
    $("#info").text($("#info").text() + ":" + (dt2 - dt));
    

    На заданном примере выигрывает parents().get(2). 3398:2910
    Далее делаем 12 вложенных элементов и прогоняем пример из комментария — пять parent()-ов против parents().get(5): с огромным перевесом выигрывает get(5) — 5374:3954.
    А вот get(3) проигрывает parent().parent().parent() — 3406:3880.

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

    Наконец, вернемся к первому варианту с четырьмя элементами, и попробуем воспользоваться полученным родителем.
    var x, dt, dt2;
    var iter = 10000; /* <-- В 10 раз уменьшим, а то зависнем */
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
       $("#i4").text($("#i4").parent().parent().attr("id")); /* <-- Запишем id родителя в текст потомка */
    }
    dt2 = new Date();
    $("#info").text(dt2 - dt);
    				
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
       $("#i4").text($("#i4").parents().get(2).attr("id"));  /* <-- Попробуем сделать то же самое */
    }
    dt2 = new Date();
    $("#info").text($("#info").text() + " " + (dt2 - dt));
    

    И вот тут нас ждет сюрприз: $("#i4").parents().get(2).attr is not a function
    arr.get(i), по сути, то же, что и arr[i], то есть мы получим просто Object.
    Для того, чтобы воспользоваться jQuery-функциями, придется обернуть его в денежный знак:
    $("#i4").text( $( $("#i4").parents().get(2) ).attr(«id»));
    От этого мы и потеряем в производительности: 2665:2973.

    Мораль:
    1) Всегда найдутся варианты использования, которые лучше для одного варианта и хуже для другого.
    2) Эффект от производительности или ее потери будет только на больших числах — в самом первом примере мы выиграли 0,4 секунды за 100000 (!) итераций.
    3) Поэтому поступайте, как велит эстет внутри Вас: мне, скорее всего, в реальном примере было бы удобнее получить jQuery-объект и дважды воспользоваться parent()-ом. С другой стороны, восемь раз я бы писать parent() не стал: религия не позволяет.
    Ответ написан
    2 комментария
  • Скорость загрузки ОС на SSD?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    > Windows XP
    > Acer Revo 3600
    Воткните SSDшку во что-либо с i3, загружайте убунту 10.хх-11.хх или Win 7. И будет вам счастье.
    Ответ написан
    Комментировать
  • Что делать, если люблю компьютер, но плохое зрение?

    Kindman
    @Kindman
    Заведите себе ученик (в подмастерье) и кормите его крекерами с пивом.
    Он поможет вам набирать код, а Вы его будете наставлять на путь истинный!
    Ответ написан
    Комментировать
  • Можно ли делать коммерческие плагины для Gimp

    @vadiml
    Если я правильно помню, то там лицензия GPLv2+, т.е. продавать можно, но при этом обязательно придётся прикладывать исходники плагинов.
    Без исходников можно было бы при LGPL
    Ответ написан
    4 комментария
  • Как сделать разлинованную таблицу (html, css)?

    Vas3K
    @Vas3K
    Может я не до конца понял вопрос, но почему бы не подложить полосатую картинку фоном?
    Ответ написан
    2 комментария
  • Firefox 5 отображает сайты в чёрно-белом виде

    m08pvv
    @m08pvv
    Под XP у лисы вообще "множественные проблемы гуя".
    Ответ написан
    Комментировать