• Используем высокие разрешения на неподдерживающих их видеокартах

      Засматриваетесь на 4K UHD-мониторы, но ваш лаптоп не поддерживает высокие разрешения? Купили монитор и миритесь с частотой обновления в 30Гц? Повремените с апгрейдом.

      TL;DR: 3840×2160@43 Гц, 3200×1800@60 Гц, 2560×1440@86 Гц на Intel HD 3000 Sandy Bridge; 3840×2160@52 Гц на Intel Iris 5100 Haswell.

      Предыстория


      Давным-давно, когда все мониторы были большими и кинескопными, компьютеры использовали фиксированные разрешения и тайминги для вывода изображения на экран. Тайминги были описаны в стандарте Display Monitor Timings (DMT), и не существовало универсального метода расчета таймингов для использования нестандартного разрешения. Мониторы отправляли компьютеру информацию о себе через специальный протокол Extended display identification data (EDID), который содержал DMT-таблицу с поддерживаемыми режимами. Шло время, мониторам стало не хватать разрешений из DMT. В 1999 году VESA представляет Generalized Timing Formula (GTF) — универсальный способ расчета таймингов для любого разрешения (с определенной точностью). Всего через 3 года, в 2002 году, его заменил стандарт Coordinated Video Timings (CVT), в котором описывается способ чуть более точного рассчитывания таймингов.

      Оба стандарта были созданы с учетом особенностей хода луча в электро-лучевой трубке, вводились специальные задержки для того, чтобы магнитное поле успело измениться. Жидкокристаллические мониторы, напротив, таких задержек не требуют, поэтому для них был разработан стандарт CVT Reduced Blanking (CVT-R или CVT-RB), который является копией CVT без задержек для CRT, что позволило значительно снизить требуемую пропускную способность интерфейса. В 2013 году вышло обновление CVT-R c индексом v2, но, к сожалению, открытого описания стандарта в интернете нет, а сама VESA продает его за $350.

      История


      Наконец-то настала эра высокой плотности пикселей и на ПК. На протяжении последних нескольких лет, нас встречал театр абсурда, когда на мобильные устройства ставят пятидюймовые матрицы с разрешением 1920×1080, полки магазинов уставлены большими 4K-телевизорами (хоть на них и смотрят с расстояния 2-4 метров), а мониторы как были, так и оставались с пикселями с кулак. Подавляющее большинство говорит, что Full HD выглядит «достаточно хорошо» и на 27" мониторе, забывая, что предыдущее «достаточно хорошо» чрезвычайно быстро ушло после выхода iPad с Retina. Вероятнее всего, такая стагнация произошла из-за плохой поддержки высокой плотности пикселей в Windows, которая более-менее устаканилась только к выходу Windows 8.1.
      Читать дальше →
    • Запоминаем просмотренные видео на youtube





        Столкнулся с тем, что youtube.com «забывает» видео, которые я просмотрел.
        Приходится смотреть много образовательных каналов, а потом вспоминать, видел я это или нет.
        Посмотрел какую-нибудь лекцию и через несколько дней (месяцев, лет) статус "просмотрено" пропадает.
        Или, наоборот, посмотришь 2 минуты какой-нибудь лекции, ляжешь спать, а на утро лекция имеет статус «просмотрено».

        Вот и решил взять под контроль информацию о просмотрах на youtube в свои руки.
        И хранить эту информацию вне зависимости от ютюба.

        Чтобы смотреть видео на ютюбе с разных устройств и быть не привязанным к локальному компу, я выложил сайт в онлайн:
        http://memtube.com
        И смотрю все оттуда.
        У кого есть желание, пожалуйста, присоединяйтесь. На сайте в любой момент можно скачать Excel файл с историей просмотров:


        Если хотите сделать свой собственный сайт, то подробности под катом.
        Подробности
      • Как легко расшифровать TLS-трафик от браузера в Wireshark

        • Перевод
        Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

        image

        Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

        Логгирование сессионных ключей спешит на помощь!


        Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
        Читать дальше →
      • Опыт маскировки OpenVPN-туннеля с помощью obfsproxy

        • Tutorial

        Преамбула


        В связи с наметившимися тенденциями решил я обфусцировать свой скромный OpenVPN-туннель, просто чтобы набить руку — мало ли пригодится…

        Дано: дешевая VPS с белым IP, работающая под Ubuntu Trusty Server Edition и служащая OpenVPN сервером.
        Требуется: по-возможности скрыть OpenVPN туннель, желательно без изобретения велосипедов.
        Ну и что дальше?
      • Бесплатные SSL-сертификаты на 2 года от WoSign

          Доброго времени суток, уважаемые товарищи Хабра.
          На написание статьи заметки, меня побудила статья: «Мигрируем на HTTPS».

          Напоминаю, что китайцы в лице компании WoSign до сих пор раздают бесплатно сертификаты и теперь не обязательно знать китайский язык для того, чтобы его получить. Метод по статье «Бесплатные SSL-сертификаты на 2 года с поддержкой до 100 доменов» на данный момент не работает и за сертификат китайцы хотят от ¥488.

          Читать дальше →
        • Как Linux работает с памятью. Семинар в Яндексе

            Привет. Меня зовут Вячеслав Бирюков. В Яндексе я руковожу группой эксплуатации поиска. Недавно для студентов Курсов информационных технологий Яндекса я прочитал лекцию о работе с памятью в Linux. Почему именно память? Главный ответ: работа с памятью мне нравится. Кроме того, информации о ней довольно мало, а та, что есть, как правило, нерелевантна, потому что эта часть ядра Linux меняется достаточно быстро и не успевает попасть в книги. Рассказывать я буду про архитектуру x86_64 и про Linux­-ядро версии 2.6.32. Местами будет версия ядра 3.х.



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

            Термины


            Резидентная память – это тот объем памяти, который сейчас находится в оперативной памяти сервера, компьютера, ноутбука.
            Анонимная память – это память без учёта файлового кеша и памяти, которая имеет файловый бэкенд на диске.
            Page fault – ловушка обращения памяти. Штатный механизм при работе с виртуальной памятью.
            Читать дальше →
          • Многозадачность в ядре Linux: прерывания и tasklet’ы

              Котейка и младшие братьяВ предыдущей своей статье я затронула тему многопоточности. В ней речь шла о базовых понятиях: о типах многозадачности, планировщике, стратегиях планирования, машине состояний потока и прочем.

              На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:
              1. Многозадачность в ядре Linux: прерывания и tasklet’ы
              2. Многозадачность в ядре Linux: workqueue
              3. Protothread и кооперативная многозадачность

              В третьей части я также попробую сравнить все эти, на первый взгляд, разные сущности и извлечь какие-нибудь полезные идеи. А через некоторое время я расскажу про то, как нам удалось применить эти идеи на практике в проекте Embox, и про то, как мы запускали на маленькой платке нашу ОС с почти полноценной многозадачностью.

              Рассказывать я постараюсь подробно, описывая основное API и иногда углубляясь в особенности реализации, особо заостряя внимание на задаче планирования.
              Читать дальше →
            • «Воскрешаем» HDD

              Хочу поделиться опытом восстановления жесткого диска Seagate Barracuda 7200.11 ST3500320AS после сбоя. Короткая предыстория: один мой друг решил сделать полное форматирование своему жесткому диску, после чего тот больше не определялся в BIOS. Выкидывать 500-гигабайтный винчестер было жалко, и он отдал жесткий диск мне на растерзание. Забегая наперед, скажу, что прокачанные навыки «гугление» и «очумелые ручки» позволили добиться отличных результатов.
              Читать дальше →
            • Нейронная сеть против DDoS'а

                Предисловие


                Некоторые из вас наверняка недавно проходили Stanford'ские курсы, в частности ai-class и ml-class. Однако, одно дело просмотреть несколько видео-лекций, поотвечать на вопросики quiz'ов и написать десяток программ в Matlab/Octave, другое дело начать применять полученные знания на практике. Дабы знания полученые от Andrew Ng не угодили в тот же тёмный угол моего мозга, где заблудились dft, Специальная теория относительности и Уравнение Эйлера Лагранжа, я решил не повторять институтских ошибок и, пока знания ещё свежи в памяти, практиковаться как можно больше.

                И тут как раз на наш сайтик приехал DDoS. Отбиваться от которого можно было админско-программерскими (grep / awk / etc) способами или же прибегнуть к использованию технологий машинного обучения.

                Далее пойдёт рассказ о создании нейронной сети на Python 2.7 / PyBrain и её применении для защиты от DDoS'а.

                Читать дальше →
              • Альтернативная среда сборки для N900

                  На текущий момент существует единственный официальный способ компиляции под N900 — через Scratchbox. Чем он мне не угодил? Да вот чем. Во-первых, он есть только под i386, со всеми вытекающими из этого весёлостями в виде необходимости держать кучу 32-хбитных библиотек. Во-вторых, ставится оно вопреки всем канонам зачем-то в /scratchbox, попутно прописывая свои модули для binfmt и, вытворяя прочую похабщину, разрушает стройную структуру дистрибутива. В-третьих там достаточно древний qemu, что даёт отнюдь не рекордную скорость компиляции. Ну и в-четвёртых, ставится это чудо очень медленно (я не знаю, где они хостятся, но установщик качал полгига пакетов довольно-таки длительное время. Кстати говоря, весит оно в установленном виде тоже изрядно. А поверх него ещё идёт SDK.
                  Ну и самое важное. qemu-user не поддерживает весь набор системных вызовов ядра. А, значит, часть софта (в частности, mono), банально не сможет работать. Проблему можно было бы решить, chroot'ясь в окружение из arm-ной системы в режиме полной эмуляции, но см. пункт первый.
                  В общем, убогое поделие, вообще не представляю, у кого рука поднялась его использовать в серьёзном проекте.

                  По-идее ещё можно компилить непосредственно на устройстве. Но тут проблема в том, что там стоит busybox, c которым очень плохо дружит тот же dpkg-buildpackage. Соответственно, при переносе rootfs c устройства и попытках оную использовать, эти грабли никуда не исчезают. А заменить его на coreutils не так-то просто, ибо это сломает часть зависимостей и отвалится полсистемы.



                  И что делать? А мы пойдём другим путём. Изобразим из себя ярых последователей барона Мюнхгаузена и в лучших традициях процедуры bootstrap (поднятие самого себя за шнурки ботинок) установим систему с нуля из пакетов. Как именно, читайте под катом.
                  Читать дальше →