• Sherbet: эргономичная игровая клавиатура

    • Translation
    Перевод статьи из блога самодельщика Billiam

    Через некоторое время после того, как мою Logitech G13 перестали выпускать, она у меня сломалась, и я решил разработать для неё замену, которую назвал Sherbet.

    Сначала – что получилось:


    Клавиатура с джойстиком

    Файлы для печати и инструкция по сборке: www.prusaprinters.org/prints/5072-sherbet-gaming-keypad

    Проектирование


    Мне хотелось сделать аналоговый джойстик под большой палец, как и у G13, а ещё я решил включить в проект несколько эргономических улучшений от других клавиатур — Dactyl keyboard, Dactyl Manuform, Kinesis Advantage и Ergodox. Конкретно – смещение клавиш от вертикали, смещения по высоте, кривизна столбцов и более удобный наклон.
    Много фоток
  • Домашний кинотеатр на Raspberry

    • Tutorial
    Так случилось, что решил я упростить себе вопрос он-лайн просмотра фильмов, вариант стандартного смарт ТВ меня не устраивал, а постоянно торчащий кабель HDMI для подключения к ноутбуку раздражал. Решение моей проблемы я увидел в приобретении Raspberry Pi 4, который можно аккуратно спрятать за корпусом телевизора.
    Читать дальше →
  • Мобильный UX-дизайн в 2018 году: тенденции и прогнозы

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


      Читать дальше →
    • Wireshark для просмотра трафика в реальном времени

      • Tutorial
      Иногда мне необходимо было залезть на linux-сервера и иметь возможность просматривать текущий трафик в реальном времени. Как я делал до этого? На целевом сервере устанавливался tcpdump, выхлоп которого писался в файлик. Далее файл через scp тянулся на локальный компьютер под Windows и открывался в Wireshark.

      В определенный момент мне захотелось более удобного решения и я, найдя возможность запустить Wireshark на винде (локально) в связке с tcpdump-ом на сервере (удаленно) на просторах интернета, и немного подпилив эту реализацию, решил поделиться с Вами.
      Читать дальше →
    • ECMAScript 6. Регулярные выражения с поддержкой Unicode

      • Translation

      В ECMAScript 6 представлены два новых флага для регулярных выражений:


      1. y включает режим «липкого» сопоставления.
      2. u включает различные связанные с Unicode опции.

      В данной статье объясняется влияние флага u. Эта статья будет Вам полезна, если Вы знакомы с Unicode-проблемами в Javascript.

      Читать дальше →
      • +15
      • 7.8k
      • 3
    • Выбираем бесплатный сервер в облаке для тестовых целей, домашних проектов и т.д

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

        Статья будет полезна тем, кто ещё не пользовался облачными серверами.


        Читать дальше →
      • Зачем использовать статические типы в JavaScript? (Пример статической типизации на Flow)

        • Translation
        • Tutorial
        Как разработчик JavaScript вы можете целый день программировать, но не встретить ни одного статического типа. Так зачем думать об их изучении?

        Ну, на самом деле изучение типов — это не просто упражнение для развития мышления. Если вы вложите некоторое время в изучение статических типов, их преимуществ, недостатков и примеров использования, это может чрезвычайно улучшить ваши навыки программирования.

        Заинтересованы? Тогда вам повезло — именно об этом наша серия статей.

        Во-первых, определение


        Проще всего понять статические типы — это противопоставить их динамическим. Язык со статическими типами называют языком со статической типизацией. С другой стороны, язык с динамическими типами называют языком с динамической типизацией.
        Читать дальше →
      • jQuery Deferred Object (подробное описание)

        31 января вышел релиз jQuery 1.5, одним из ключевых нововведений которого стал инструмент Deferred Object. Именно о нём я и хочу рассказать подробнее в этой статье.

        Эта новая функциональность библиотеки направлена на упрощение работы с отложенными (deferred) вызовами обработчиков (callbacks). Deferred Object, аналогично объекту jQuery, «цепочный» (chainable), но имеет свой набор методов. Deferred Object способен регистрировать множество обработчиков в очередь, вызывать зарегистрированные в очереди обработчики и переключать состояние на «завершено» или «ошибка» для синхронных или асинхронных функций.
        Подробности и примеры далее
      • DroidShoter — скриншоты приложения на разных разрешениях экрана, используя одно устройство и Adb

          Как известно, Андроид устройств существует много… очень много. Это дает нам огромное число экранов, с различным сочетанием разрешения и плотности пикселей, что значительно усложняет разработку приложений. В определенный момент захотелось постараться упростить проверку приложения на разных экранах и избежать запуска на многих устройствах и эмуляторах. Анализ проблемы показал, что все необходимое для решения проблемы есть и, используя Adb, можно обойтись одним подключенным устройством. В итоге была разработана кроссплатформенная утилита для автоматического сохранения скриншотов приложения на разных параметрах экрана одного устройства, не требующая никаких дополнительных манипуляций с исходным кодом приложения (с эмуляторами также все работает). После работы утилиты получаются скриншоты приложения в том виде, в каком оно выглядит на различных устройствах. В дальнейшем, используя полученные скриншоты, можно выявлять артефакты отображения приложения и анализировать оптимальность лэйаутов.
          Читать дальше →
        • Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

          Содержание курса



          Улучшение кода






          Official translation (with a bit of polishing) is available here.




          Постановка задачи


          Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

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



          Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
          Читать дальше →
        • Управление приватными данными классов ES6

          • Translation
          В этой статье рассматриваются 4 подхода к управлению приватными данными классов ES6:

          1. Хранение данных в конструкторе класса.
          2. Маркировка приватных свойств через соглашение об именовании (например, префиксное подчеркивание).
          3. Хранение приватных данных в WeakMaps.
          4. Использование символов в виде ключей для приватных свойств.

          Первый и второй подходы широко использовались в ES5, а третий и четвертый – появились только в ES6. Давайте поочередно рассмотрим каждый на одном примере.


          Читать дальше →
        • [ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

          • Translation
          Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



          Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
          Читать дальше →
          • +140
          • 82.2k
          • 15
        • Грандиозное тестирование аккумуляторов AA/AAA

            После моего грандиозного тестирования батареек многие просили провести такие же основательные тесты NiMh-аккумуляторов. За четыре месяца я протестировал 198 аккумуляторов (44 модели AA и 35 моделей AAA).



            Читать дальше →
          • Linux в кармане — на службе у фотографа

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

              Недавно поставил себе задачу, как бы еще порадовать своих клиентов. Вспомнил многочисленные просьбы клиентов на свадебную съемку: «Как хорошо было бы, если бы на банкете вы смогли показать коротенькое слайдшоу из фотографий, которые отсняли за день». На эти просьбы приходилось отказывать, по нескольким причинам: лень таскать с собой ноутбук для сборки слайдшоу, нет времени на отбор пары десятков снимков из сотен, из raw опять же нужно конвертировать, и самое главное — на это все нужно время, которого нет.

              Это рассказ, о том, как мне удалось сделать для себя инструмент, который с минимальным моим участием и минимальным дополнительным весом в рюкзаке, помогает сделать красивые слайдшоу. И конечно же рассказ о python, ffmpeg и linux на android.
              Читать дальше →
            • Работа с освещением в Unity — теория и практика

                В видеоиграх красивое освещение в реальном времени сильно бьёт по производительности, что особенно заметно на мобильных устройствах. Таким образом, разработчики вынуждены искать методы обхода этой проблемы. Lightmapping — технология, сохраняющая информацию об освещении в текстуру, что позволяет высвободить вычислительные ресурсы под другие нужды.
                В этой статье я познакомлю читателя с теорией освещения в играх, опишу процесс создания “лайтмапа” в Unity 5 и поделюсь рядом советов.
                image
                Читать дальше →
              • Опыт WPS Office на российской почве

                Чего только не клонировал Китай, у них есть свои аналоги Facebook и Twitter, реплики на известные бренды смартфонов, программное и аппаратное обеспечение. А как часто в своей повседневной жизни вы встречаете «Made in China»? Но сейчас не об этом.



                Программа импортозамещения

                К импортозамещению можно относиться по-разному.
                Читать дальше →
                • +9
                • 13.2k
                • 1
              • Material Design: на Луну и обратно

                • Tutorial
                “Это унылое диалоговое окно действительно нужно?”



                В этой статье я изложил главные принципы Material Design и дал советы по их воплощению. Текст написан по следам мастер-класса для разработчиков, который мы, Роботы, устраивали совместно с российским офисом Google (Think Mobile).


                Когда-то все продукты Google выглядели по-разному плохо. Даже один продукт на разных платформах выглядел неконсистентно.

                Все стало меняться в 2011 году, когда в Google начали усиленно работать над унификацией визуальной части экосистемы своих продуктов и назвали все это Project Kennedy.

                При чем тут Кеннеди?
                Легенда такова: президент Кеннеди инициировал программу полёта человека на Луну (если верить, что этот полёт когда-либо был). А большой начальник в Google Ларри Пейдж исповедует принцип, что продукты нет смысла улучшать на 10% — они должны быть в 10 раз лучше, чем у конкурентов. Если уж запускать продукт, то сразу на Луну. Вот и здесь было решено круто всё переделать.

                Читать дальше →
              • Тестирование аккумуляторов: первые выводы

                  После моего Грандиозного тестирования батареек многие просили меня заняться таким же подробным тестированием аккумуляторов.

                  Уже две недели практически круглосуточно идёт процесс тестирования. За это время я успел протестировать 22 вида аккумуляторов АА десяти брендов: IKEA, Ansmann, GP, Duracell, Energizer, Robiton, Panasonic, Panasonic Eneloop, Varta. На подходе аккумуляторы Turnigy, Космос, Camelion.



                  Пока не протестированы все аккумуляторы, я не буду приводить подробные результаты, но некоторыми интересными выводами уже могу поделиться.

                  Читать дальше →
                • Что я узнал о будущем после прочтения 100 научно-фантастических книг

                  • Translation
                  Что я узнал о будущем после прочтения 100 научно-фантастических книг

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

                  Я начал читать научную фантастику, просто чтобы скоротать время. У меня остались хорошие воспоминания о прочтении «Парк Юрского периода» в детстве. Я продолжил читать, потому что я заметил, что эта книга дала мне кое-что: сильное воображение, нелюбовь к обыденности.

                  Я поймал себя на том, что мои идеи отличаются от тех, которые множество черпают из тех же статей TechCrunch, Hacker News, Хабрахабра и других «ежедневных» сайтов жителей Силиконовой (Кремниевой) долины. Мой бизнес — это продажа идей, а эти книги одновременно настоящее сокровище и мой инструментарий.

                  Как говорит футуролог Джейсон Сильва:
                  «Воображение позволяет нам ощущать восхитительные будущие возможности, выбрать наиболее удивительную, и двигать настоящее вперед, чтобы в конце-концов встретить её.»

                  Я думаю, что чтение этих книг помогло мне и в создании идеи и в движении к ней.

                  Каждая хорошая научная фантастика, по сути, это мысленный эксперимент, и я хотел бы запустить свой собственный прямо сейчас:
                  Ещё две тысячи слов