Ответы пользователя по тегу Веб-разработка
  • Нужно ли солить хеш длинного случайного сессионного ключа в БД?

    @Mercury13
    Программист на «си с крестами» и не только
    Для чего вообще солят хэши? Против сливов БД: если хэши ушли, по ним сложно восстановить пароли.
    • Если при подозрении на слив мы можем перегенерировать ключи или объявить их просроченными;
    • Если ключи держатся где угодно, только не в БД;
    • Если ключи настолько длинны и случайны, что сложновато будет обратить алгоритм объединёнными хакерскими силами
    — то зачем?

    Впрочем, не забывайте, что хэшируя, вы автоматически снижаете криптостойкость вашего алгоритма до длины хэша. А может, проще изначально делать ключи такой длины?
    Ответ написан
    Комментировать
  • Как хапустить exe в веб брвузере?

    @Mercury13
    Программист на «си с крестами» и не только
    На клиенте — как уже было сказано, это невозможно. Производители браузеров затягивают и затягивают гайки, чтобы даже плагины неугодные не работали, давая попущение только Флэшу. Что уж говорить про машинный код.
    Но существует несколько обходов.
    Первый применён в службе GoToMeeting. Без программы под вашу ОС не обойтись, но по обычной HTTP-ссылке запускается эта программа. Как технически — не исследовал.
    Второй обход. Существуют службы, которые запускают EXE на своих виртуальных машинах и транслируют наружу результат. Спрошу у босса, какой пользуемся конкретно мы.
    Третий — часто в браузере делают игры для DOS и старых приставок через эмулятор, написанный на Java.
    Ответ написан
    1 комментарий
  • Языки программирования для работы с API?

    @Mercury13
    Программист на «си с крестами» и не только
    Любой, работающий с HTTP.
    Привязки к cURL — а именно он в большинстве случаев используется для HTTP — есть практически везде.
    Проверено: есть сайты, где Indy (стандартная сетевая библиотека Delphi) не пройдёт, а cURL — за милую душу. Видимо, криптография + «Indy слишком вумный и скрытно корректирует сообщение».
    Ответ написан
    Комментировать
  • Как посчитать угол по 2-м координатам?

    @Mercury13
    Программист на «си с крестами» и не только
    Как я понял, вам нужен угол вектора (x1,y1)→(x2,y2).
    Любой школьный «арк», если им действовать в лоб, в определённом диапазоне углов не определён или неустойчив.
    Но именно для этого в большинстве языков присутствует функция
    atan2(y2 - y1, x2 - x1)
    Ответ написан
    Комментировать
  • Что означает открыть/закрыть соединение и почему это операция дорогая?

    @Mercury13
    Программист на «си с крестами» и не только
    1. Любой поток данных реального времени (в том числе сетевое соединение) содержит буферы ввода-вывода, где данные передерживаются, пока принимающая сторона не будет готова их принять. В общем, при подсоединении выделить память, при отключении вернуть её.
    2. Открытие соединения происходит в три этапа: «превед-медвед-готов». Есть такое понятие, как «полуоткрытое соединение»: на инициирующей стороне мы послали «превед», но не получили «медвед». На принимающей — послали «медвед», но не услышали «готов». Количество полуоткрытых соединений общее на всю систему и обычно велико, но тоже может исчерпаться.
    3. Любая передача через сеть не мгновенна. Соединение с нашей стороны будет считаться открытым, когда в сеть ушло «готов», так что если пинг 100 мс — то вот спустя 100 мс соединение и будет открыто.
    4. Процедура логина (ну и рукопожатие TLS, если таковой используется) задействует сильную криптографию, которая тоже медленна. А в TLS есть и своя тройка «превед-медвед-готов».
    5. При закрытии соединения компьютер также пытается послать пакет «я закрываюсь».
    6. Анти-DDoS’овские меры, наконец.
    Ответ написан
    Комментировать
  • Как производить вычисления ip-адресов силами только sql?

    @Mercury13
    Программист на «си с крестами» и не только
    IpAddress & Mask = IpAddr
    (при условии, что IP гарантированно настоящий и не надо узнавать, это настоящий адрес или один из сервисных, связанных с сетью)
    Возможно — я не знаю, каких размеров таблица — БД держат в таком виде ради индексирования.
    Ответ написан
  • Не понимаю, что такое модульная сетка?

    @Mercury13
    Программист на «си с крестами» и не только
    Первое определение говорит о вёрстке вообще. И даже второе слишком общее. Более-менее правильное такое.

    Есть некая базовая единица измерения — модуль. Это может быть шаг строки, размер картинки или что-нибудь ещё. И все размеры на сайте выставляют исходя из нескольких таких единиц. Пошло оно из архитектуры, где модули — толщина перекрытия, высота этажа, расстояние между окнами…

    Сами направляющие невидимы. Но мы видим границы блока текста, границы картинок, начало или конец одинокой строчки. И глаз радуется, когда эти элементы выстраиваются по горизонтальным и вертикальным линиям. И не просто выстраиваются, а вдруг оказывается, что размер А равен размеру Б.

    На ватмане эти направляющие рисовали, потом стирали. На компьютере — они находятся где-то на непечатаемом слое и блоки к ним прилипают.

    Всегда следовать модульной сетке? Нет, конечно. Дизайнов разных куча. Где он академичнее, там модули; где закос под что-то неформальное — стараются модули делать там, где пишущий краской на стене действительно сделал бы две вещи одинакового размера. А иногда выровнять одно с другим — это натянуто.

    Я бы дал такие правила.
    1. Не впихивай невпихуемое. Если не получается выровнять по художественным или техническим причинам — зачем это прокрустово ложе?
    2. Не мельчи модуль. Если не видно, что размеры кратны — пропадает смысл.
    3. Модуль не обязательно один. Высота картинки и высота строки могут быть некратны, например, если нет обтекания картинок текстом.
    Ответ написан
    3 комментария
  • Как открыть в мобильном браузере сайт на localhost?

    @Mercury13
    Программист на «си с крестами» и не только
    Если мобильное устройство не использует прокси-браузер (Opera Mini и прочие) и висит на той же радиоточке, что и стационарник — 1) настраиваем радиоточку так, чтобы с WiFi-клиентов был доступ в локальную сеть; 2) поднимаем на стационарном компьютере веб-сервер. Доступ — http://192.168.1.2:3000/site, внутренний IP-адрес компьютера можно узнать программой ipconfig; порт (3000) определяется настройками веб-сервера.

    Если либо используется прокси-браузер, либо смартфон в интернете через ОпСоСа, надо поднять веб-сервер и сделать, чтобы он был виден из интернета. Либо залить на хостинг, либо пробросить порт на маршрутизаторе. Доступ — http://12.34.56.78:3000/site, внешний IP-адрес можно узнать через 2ip.ru. Порт (3000) зависит от настройки перенаправления портов, и для безопасности его крайне нежелательно делать стандартными 80, 3128 и 8080.

    Как пробросить порт на маршрутизаторе — гуглите уж сами; состоит из двух вещей: как зафиксировать IP и как вбить в NAT новое правило перенаправления.
    Ответ написан
    Комментировать
  • Как убрать раскладку клавиатуры на мобильном устройстве?

    @Mercury13
    Программист на «си с крестами» и не только
    Так работает браузер: ставишь курсор в поле — появляется клавиатура. И ничего с этим не сделаешь, надо искать обходы. Вот на выбор несколько вариантов.
    1. Сделать поле невидимым, как минимум на мобильных платформах.
    2. Сделать так, чтобы выбор даты не требовал постановки курсора в поле.
    3. В HTML5 есть несколько специализированных полей ввода специально для дат. WebRef говорит, что работает с большими ограничениями и потому желательно всё-таки сделать календарь на JS — но они есть.

    ЗЫ. Проверил специализированные элементы управления на мобильных Chrome и Firefox, вышло вот что.
    Number: Cr cool, Fx заглючивает тултип, если цифра не в диапазоне
    Date: Cr cool, Fx вылет
    Color: Cr работает (хотя можно наставить побольше предопределённых цветов), Fx выбор из десятка цветов
    Range: оба cool
    Month: Cr cool, Fx вылет
    Week: Cr недостаточный интерфейс, Fx вылет
    Time: оба cool
    Datetime: Cr не работает, Fx вылет
    Datetime-local: Cr недостаточный интерфейс, Fx вылет
    Search: ничем, кроме вида кнопки OK, не отличаются
    Tel: оба cool
    Url: оба cool
    Ответ написан
    Комментировать
  • Как передать музыку с сайта на микрофон?

    @Mercury13
    Программист на «си с крестами» и не только
    Вам нужно записать звук, идущий с сайта?
    Гуглить надо «audio loopback [ваша ОС]».
    У меня, допустим, сработало вот это.
    manual.audacityteam.org/man/tutorial_recording_com...
    Трещит страшно (у меня в «продвинутой» звуковой каналы переключаются тёплыми электромагнитными релюшками), но работает.
    Работает ли Protected Media Path и как он поведёт себя на закопирайченных данных — шут его знает. Проверял на банальном YouTube, там никакой защиты от копирования нет.

    Если же хотите не просто записать звук, а средствами JavaScript… Гуглите «javascript sound recording». Правда, на JS нет автоматического выбора, какое устройство считать микрофоном — так что пользователь должен убедиться, что в драйверах есть loopback-устройство, включить звукозапись и в качестве микрофона взять loopback (у меня оно «из коробки» и называется Stereo Mix). Без вмешательства пользователя, получается, никак. Сделано это специально: устройств звукозаписи бывает много, и одни задачи, например, выполняются студийным микрофоном с USB-платой, другие — наушниками с микрофоном, третьи — вебкой. К тому же окружающий звук — это очень-очень чувствительная информация, и без согласия пользователя писать что бы то ни было недопустимо.
    У меня сработали не все звукозаписывалки, вот эта, например, сработала (одна вкладка «лисички» проигрывала, вторая писала): https://p5js.org/examples/examples/Sound__Record_S...
    Повторяю, пользователь должен в качестве микрофона выбрать loopback-устройство, и без этого никак! Устройство должно существовать, и пользователь его должен выбрать.

    А если воткнуть колонки в порт микрофона и выдать на них звук — надо разбираться с аудиоустройствами и аудиодрайверами, и JS этого точно не может.
    Ответ написан
    Комментировать
  • Есть ли таблица числовых диапазонов для слова комментарий?

    @Mercury13
    Программист на «си с крестами» и не только
    Я, конечно, опоздал, но для всех языков есть вот такая таблица.
    cldr.unicode.org/index/cldr-spec/plural-rules
    www.unicode.org/cldr/charts/latest/supplemental/la...
    Ответ написан
    Комментировать
  • Как подключить libcurl к Qt?

    @Mercury13
    Программист на «си с крестами» и не только
    Подключать надо libcurldll.a в таком виде.
    -LC:\Qt\curl-7.49.0-win32-mingw\lib -lcurldll

    Вот кусок, взятый из реального проекта.
    win32|win64: LIBS += -lws2_32 -lshlwapi -lodbc32 -lpsapi -lcomdlg32 \
                         -L$$PWD/../../Common/cURL/lib/ -lcurldll -lole32 \
                         -loleaut32


    Кроме того, тебе не хватает OpenSSL — найди libeay32.dll и ssleay32.dll, лучше скомпилированные старой версией MSVC и не требующие новых runtime’ов, которые есть не везде. Ах да, есть версии libcurl, которые скомпилированы без SSL — им этого, разумеется, не нужно.

    Подожди, сейчас посмотрю, что будет, если вкомпилировать в программу библиотеку cURL статически, без DLL.

    UPD. Попробовал. Почти работает, но надо разобраться, как подключить winsock и OpenSSL — раньше-то ими занимался тот, кто компилирует DLL, а сейчас это будет моя забота.
    Ответ написан
  • Что есть такое "встроенные вложения" в письме?

    @Mercury13
    Программист на «си с крестами» и не только
    Встроенный файл.
    Заголовок: Content-Disposition: inline;filename=somefile.ext
    Назначение: быть в тексте письма, почтовик его покажет прямо в окошке.

    Вложение.
    Заголовок:
    Content-Disposition: attachment;filename=somefile.ext

    Назначение: быть прикреплённым к письму файлом; почтовик покажет его где-то вверху или внизу, а если мэн щёлкнет на нём — предложит скачать-сохранить.

    Некоторые файлы (например, zip) почтовик показать не может, они всегда будут вести себя как вложения.

    Почтовики, конечно, ведут себя как хотят, и мой Thunderbird всегда выводит всё, что может вывести, хоть attachment, хоть inline.

    Сейчас inline не в фаворе (почтовик OSX на нём подглючивает), ни одного такого не нашёл по своей почтовой базе.
    Ответ написан
    Комментировать
  • Общие шрифты для всех систем?

    @Mercury13
    Программист на «си с крестами» и не только
    Таковых в принципе нет. На открытой системе открытые шрифты, на проприетарной — свои проприетарные. К тому же есть устаревшие версии ОС, на которых набор шрифтов ýже.

    У меня на рабочей 10-ке Source Sans Pro нашёлся. Систему ставил не я, шрифт явно гугловский, и есть подозрение, что его поставили вместе с Хромом. На домашней 7-ке, которая никогда с Хромом не контактировала, скорее всего, не будет.

    А на Андроиде список шрифтов ещё и зависит от браузера. На 8,9" FullHD единственный браузер, на котором хоть что-то видно,— это Лисичка, и там шрифт немного другой.
    Ответ написан
  • Какую видеокарту купить для работы с web?

    @Mercury13
    Программист на «си с крестами» и не только
    Что угодно с выходом на DVI/HDMI. А сдачу приберегите — пригодится на хороший монитор.
    Ответ написан
    Комментировать
  • Зачем нужен Total Commander?

    @Mercury13
    Программист на «си с крестами» и не только
    Буду говорить не про Total Commander, а про весь класс программ — двухпанельные файловые менеджеры.
    1. Удобная работа без мыши.
    2. Привычка со времён «Нортона».
    3. Просмотрщик и редактор.
    4. Простой вызов чего-то из командной строки.
    5. (сейчас уже неактуально, было на Windows XP) Как один из двух «презервативов» против заражения autorun-вирусом (второй — отключённый автозапуск).
    6. Лёгкий доступ к важным каталогам.
    Ответ написан
    Комментировать
  • СЕО. Не будет ли хуже от таких ссылок?

    @Mercury13
    Программист на «си с крестами» и не только
    Кроме того, правьте орфографию!
    Ответ написан
    Комментировать
  • Есть ли смысл в соли из хеша пароля?

    @Mercury13
    Программист на «си с крестами» и не только
    Для чего вообще нужна соль? А для того, чтобы md5(password)+salt было достаточно длинным, чтобы его нельзя было получить из хэша по предвычисленным таблицам. Таблица-то даст что-то, но нет никакой гарантии, что в конце будет именно ваша соль.

    По-моему, криптостойкость одна и та же: тот же уровень противодействия перебору и та же защита от таблиц.
    Ответ написан