• Механические клавиатуры

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

    А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

    Итак, некоторое время назад я озаботился сбором информации о клавиатурах, и даже начал готовить информацию для статьи, но к сожалению (к счастью?) нашлась исчерпывающая статья о всех нюансах сразу, которую я решил перевести.

    Механические клавиатуры. Путеводитель.

    Читать дальше →
  • Notion Ink Adam или почему я жду Нового Года


      В первую очередь я должен сказать, что никак не связан с компанией Notion Ink. Этот пост порождён желанием, в первую очередь, нарушить информационный вакуум на хабре, сформировавшийся вокруг планшета Adam, который разрабатывается компанией Notion Ink в течение последнего года. Среди аудитории Хабра, как оказалось, существует достаточно большое число заинтересованных в приобретении планшета людей, но банально не знающих ни о чем, кроме iPad и не желающих рассматривать в качестве кандидата для покупки что-нибудь еще. Ну, и конечно, данный пост — своеобразный ответ данному посту и желание выразить свое негодование аспектам, указанным там в качестве основопологающих при выборе планшета.

      Читать дальше →
    • Руководство по магическим методам в Питоне

      • Перевод
      • Tutorial
      Это перевод 1.17 версии руководства от Rafe Kettler.


      Содержание


      1. Вступление
      2. Конструирование и инициализация
      3. Переопределение операторов на произвольных классах
      4. Представление своих классов
      5. Контроль доступа к атрибутам
      6. Создание произвольных последовательностей
      7. Отражение
      8. Вызываемые объекты
      9. Менеджеры контекста
      10. Абстрактные базовые классы
      11. Построение дескрипторов
      12. Копирование
      13. Использование модуля pickle на своих объектах
      14. Заключение
      15. Приложение 1: Как вызывать магические методы
      16. Приложение 2: Изменения в Питоне 3


      Вступление


      Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
      Читать дальше
    • CSS3 поддержка в браузерах

      • Перевод
      imageХотя CSS3 ещё не является стандартом W3C, последние версии браузеров имеют его частичную поддержку. Можно встретить примеры реализующие те или иные свойства CSS3. Но вместе с восторгом многих не покидает также чувство опасения. Связано это в первую очередь с тем, что нет чёткого понимания в поведении браузера при обработке этих свойств. Под катом собрана таблица в которой сравниваются поддерживаемые CSS3 свойства во всех основных браузерах. Кроме этого указывается версия браузера и префикс для кодирования. Шпаргалка в форме изображения, поэтому её удобно скачать к себе на компьютер или мобильное устройство для дальнейшего использования.

      Показать таблицу
    • Улучшение субъективной скорости работы сайта при помощи подсказок браузеру

      Я удивлен, что эта техника упоминалась на Хабре только один раз и вскользь — если верить поиску, конечно.
      Меня не покидает ощущение, что на самом деле все про это знают, но я всё же расскажу.

      Суть в том, что браузеру можно подсказать, какую страницу пользователь откроет следующей — и он начнет её загружать заранее.

      Делается это несложно — нужно всего-то добавить пару мета-тегов в head:

      <link rel="prefetch" href="NEXT PAGE URI" />
      <link rel="prerender" href="NEXT PAGE URI" />
      


      Теперь подробнее про ограничения и нюансы.
      Читать дальше →
    • Как обезопасить исходники своего python-приложения

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

      Читать дальше →
    • Вещи, о которых следует помнить, программируя на Python

        Дзэн Питона



        Изучение культуры, которая окружает язык, приближает вас на шаг к лучшим программистам. Если вы всё еще не прочли «Zen of Python», то откройте интерпретатор Python и введите import this. Для каждого элемента в списке вы найдете пример здесь

        Однажды моё внимание привлекло:
        Читать дальше →
      • Простая кастомизация Checkbox и Radio

          Вместо вступления


          Всем доброго времени суток!

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

          К сожалению, одного только CSS частенько не достаточно, чтобы с легкостью оформить тот или иной элемент формы. Наверное поэтому многие используют штуки вроде Uniform для своих форм. Лично я всегда стараюсь сократить количество Javascript, используемого в подобных целях, поэтому хочу рассказать о совершенно нативном HTML+CSS методе кастомизации радио-кнопок и чекбоксов.

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

          Поехали!


          Итак, сразу поставим цель: оформить чекбоксы и радио-кнопки, чтобы внешне они были похожи на js-магию Uniform, но сделать это максимально простым, нативным по отношению в HTML и CSS способом, а также избежать применения лишних тегов, сохраняя семантику. Как-то так.
          Читать дальше →
        • Как правильно сортировать контент на основе оценок пользователей

          • Перевод


          В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

          Постановка проблемы


          Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

          Неправильное решение №1

          Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
          

          Читать дальше →
        • Введение в CSS3 Multicolumn. Работаем с колонками

          • Tutorial
          apples

          Как расположить текст на странице в несколько колонок? И можно ли это делать автоматически? Наверняка, многие из тех из вас, кто занимается или занимался раньше веб-разработкой, сталкивались с такой задачей — и часто упирались в сложные решения, требующие хитрых стилей, либо применения дополнительных библиотек на JavaScript (см. например Columnizer-плагин для jQuery).

          Многоколоночная верстка контента (не путать с задачей общей многоколоночной верстки страницы, которая скорее ближе к проблеме расположения блоков по сетке) долго пробивала себе дорогу в мире веб-стандартов и, наконец-то, не просто достигла статуса Candidate Recommendation в виде соответствующего модуля CSS3 Multi-column Layout, но и получила достаточно широкую поддержку в браузерах: где-то с префиксами (-moz- или -webkit-) и где-то в актуальных (Opera 11.1+) и планируемых версиях (IE10+), причем сразу без префиксов.
          Читать дальше →
        • Полиномиальные хеши и их применение

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

          Введение


          Начнем с определения. Пусть у нас есть строка s0..n-1. Полиномиальным хешем этой строки называется число h = hash(s0..n-1) = s0 + ps1 + p2s2 +… + pn-1sn-1, где p — некоторое натуральное число (позже будет сказано, какое именно), а si — код i-ого символа строки s (почти во всех современных языках он записывается s[i]).

          Хеши обладают тем свойством, что у одинаковых строк хеши обязательно равны. Поэтому основная операция, которую позволяют выполнять хеши — быстрое сравнение двух подстрок на равенство.
          Читать дальше →
        • Понимаем декораторы в Python'e, шаг за шагом. Шаг 2

          • Перевод
          • Tutorial

          И снова доброго времени суток всем читателям!
          Спасибо, за проявленый интерес к первой части перевода, надеюсь, вторая вас так же не разочарует.


          Итак, в первой части данной статьи мы совершили базовое знакомство с декораторами, принципами их работы и даже написали свой вручную.
          Однако, все декораторы, которые мы до этого рассматривали не имели одного очень важного функционала — передачи аргументов декорируемой функции.
          Что ж, исправим это недоразумение!
          Читать дальше →
        • Имена людей и интерфейс

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

            image

            Заинтересованная аудитория: авторы HTML-контента, разработчики скриптов серверных приложений (PHP, JSP и т.д.), менеджеры веб-проектов и любые другие люди, так или иначе связанные с дизайном форм ввода данных, дизайна баз данных и онтологий, которые затрагивают личные имена людей.

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

            Читать дальше →
          • Что такое «асинхронная событийная модель», и почему сейчас она «в моде»

            Сейчас в тематических интернетах модно слово «Node.js». В этой небольшой статье мы попробуем понять («на пальцах»), откуда всё это взялось, и чем такая архитектура отличается от привычной нам архитектуры с «синхронным» и «блокирующим» вводом/выводом в коде приложения (обычный сайт на PHP + MySQL), запущенного на сервере приложений, работающем по схеме «по потоку (или процессу) на запрос» (классический Apache Web Server).
            Читать дальше →
          • Events bubbling и events capturing

              intro
              Представьте, что на странице есть два блока, и один вложен в другой, как это показано на рисунке. В разметке страницы это выглядит так:
                 <div id="block_outer">
                    <div id="block_inner"></div>
                 </div>

              А теперь представьте, что к блоку #block_outer привязано событие onClickOuter, а к блоку #block_inner, соответственно, событие onClickInner. И ответьте на вопрос, как сделать так, чтобы при клике на блок #block_inner, событие onClickOuter не вызывалось? И будет ли оно вообще вызвано? И если будет, то в каком порядке события будут вызываться? И знаете ли вы, как работает метод jQuery.live или подобные в других библиотеках (events delegation в ExtJS, например)?
              Если я хоть немного заинтересовал, добро пожаловать под кат.
            • Кроссбраузерный inline-block

              • Перевод
              Разрешите представить вам перевод статьи «Cross-Browser Inline-Block», написанной Райном Доэрти холодным февралем 2009 года. В статье рассказывается о верстке элементов списка с установкой для свойства display значения inline-block. Статья об этом, а также о трудностях, возникающих в процессе достижения результата и о методах их «лечения».

              Узнать метод Райна Доэрти
            • Монады с точки зрения теории категорий

              • Перевод

              Введение

              Кажется, монады в программировании стали загадкой века. И для этого есть две причины:
              • недостаточное знание теории категорий;
              • многие авторы стараюстся не упоминать категории вообще.
              Это как говорить об электричестве не используя мат. анализ. Достаточно для замены предохранителя, не хватит, чтобы спроектировать усилитель.

              Мы начнём с простого введения в категории и функторы, затем дадим определение монады, приведём простые примеры монад в категориях и в конце приведём монадическую терминологию используемую в языках программирования.

              Я уверен, что монады с точки зрения категорий почти элементарны.

              Содержание

              1. Категория
              2. Функтор
              3. Естественное преобразование
              4. Монада
              5. Монады исключения и состояния
              6. Монады в программировании
              7. Ссылки
              Читать дальше →
            • Свойства CSS, влияющие на рендеринг шрифта

              • Перевод
              Когда дело доходит до рендеринга шрифта на Вебе, дизайнер может сделать не слишком многое. То, как шрифт выглядит на экране, по большей части зависит от операционных систем, браузеров, дизайна гарнитур, шрифтовых файлов и от того, дополнены ли эти файлы инструкциями для самых неожиданных сценариев рендеринга. Но иногда свойства CSS могут повлиять на то, как выглядит шрифт.



              Читать дальше →
            • Siege — утилита для нагрузочного тестирования веб-серверов

              • Перевод
              Надеюсь, что данный материал будет кому-нибудь полезен.

              Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы.

              UPD: спасибо за плюсы, перенес в тематический блог.
              Читать дальше →