• Делаем WX-Mouse в корпусе Nova Slider 600

      image

      WX-Mouse — это создание, в каком либо корпусе, мышки с уникальным функционалом и отличным качеством работы сенсора. В этой заметке я расскажу как сделать WX-Mouse в необычном корпусе — Nova Slider 600.
      Читать дальше →
    • Вы работаете не в том месте (если у вас офис открытого типа)

      • Translation

      Что такое физическое пространство?


      На последней работе всё самое лучшее я сделал дома. Я активно пытался избегать офиса насколько возможно. Дома у меня два стола и полный контроль над окружением. Альтернатива — отвлечения и помехи.


      Мой домашний офис — крепость производительности

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

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

      Я осознал, что ненавижу офисы открытого типа.
      Читать дальше →
    • Великолепная подборка бесплатных шрифтов: лучшие из лучших

      • Translation
      В этой статье — великолепная подборка из 55 бесплатных шрифтов, которые были отобраны из тысяч предлагаемых на сегодняшний день в сети Интернет. Коллекции шрифтов, перечисленных ниже, можно скачать и использовать в различных проектах.



      Для удобства шрифты поделены на 8 категорий, вы можете выбрать необходимую из списка:

      Читать дальше →
    • Повышаем производительность кода: сначала думаем о данных

      • Translation


      Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

      В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


      Быстрый обратный квадратный корень в Quake

      Но в последнее время, особенно в свете перехода на 64 бита, я заметил рост количества неоптимизированного кода, словно в индустрии стремительно теряются все накопленные ранее знания. Да, старые трюки вроде быстрого обратного квадратного корня на современных процессорах контрпродуктивны. Но программисты не должны забывать о низкоуровневых оптимизациях и надеяться, что компиляторы решат все их проблемы. Не решат.

      Эта статья — не исчерпывающее хардкорное руководство по железу. Это всего лишь введение, напоминание, свод базовых принципов написания эффективного кода для CPU. Я хочу «показать, что низкоуровневое мышление сегодня всё ещё полезно», даже если речь пойдёт о процессорах, которые я мог бы добавить.

      В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
      Читать дальше →
    • USB MIDI-контроллер на Arduino

      image

      В очередной раз играя на гитаре и управляя звуком через Peavey ReValver и прочие Amplitube, задумался о приобретении MIDI-контроллера. Фирменные устройства, вроде Guitar Rig Kontrol 3, стоят около 13 000 рублей, и обладают только напольным исполнением. То есть оперативно менять положения нескольких регуляторов весьма проблематично.

      Различные контроллеры DJ направленности выглядели интереснее за счет обилия фейдеров и энкодеров. Решено было совместить приятное с полезным и сделать MIDI-контроллер самому.
      Читать дальше →
    • Памятка по базовой верстке статьи для Хабра без использования Markdown-разметки

      • Tutorial
      На Хабре, по меркам старожилов, я совсем недавно, всего два года, но пишу активно, по возможности каждый день. Так вот, читая статьи, да и просто прокручивая ленту свежих публикаций как на Хабре, так и на GT, я понял, что многие просто не могут совладать с версткой текста и, как следствие, достаточно часто годные публикации хоронятся их же авторами из-за нечитабельности текста. Или отпугивает кривая КДПВ, или еще что произойдет.

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

      Картинка Для Привлечения Внимания и выравнивание по левому краю


      Так уж сложилось, что вся лента Хабрахабра выровнена по левому краю. По этой причине опытные авторы небольшие изображения оставляют слева или используют картинки шириной в 800-1000 px. Отдельно хочется заметить, что чуть ли не лучшим является соотношение КДПВ 2 к 1, т.е. изображения 800х400 px. Подобная пропорция позволяет SMM-щику соц. сетей не изгаляться с вашей картинкой (а то и вовсе искать что-то другое, более подходящее по размерам), а использовать оригинал, не нарушая задумки автора.
      Читать дальше →
    • 21 бесплатный учебный ресурс для разработчиков игр

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


      Читать дальше →
      • +30
      • 100k
      • 7
    • Fungi hunting – подозрительное хобби

      • Tutorial
      Скажи англичанам, что любишь собирать грибы, и тебя не поймут. Зачем рисковать, когда в магазинах есть простые-понятные шампиньоны & трюфели? Дикие грибы и выглядят, и пахнут подозрительно, а тот, кто их ест и ходит живой, – либо невероятный везунчик, либо тот-кто-знает-все-секреты – что тоже, в общем-то, подозрительно.

      Понять осторожных британцев поможет грибной фольклор и тест на выживаемость в английских лесах. Поехали!
      Читать дальше →
    • Глубина резкости в компьютерной графике

      • Translation
      DoFВ отличии от человеческого глаза, компьютер рендерит всю сцену в фокусе. И камера, и глаз же имеют ограниченную глубину резкости вследствие конечного диаметра апертуры зрачка или объектива. Для достижения большего фотореализма рекомендуется использовать эффект глубины резкости в изображениях, получаемых на компьютере. Кроме того, управление глубиной резкости помогает раскрыть художественный замысел автора, выделив важный по смыслу объект.
      До сих пор задача изображения реалистичной глубины резкости в компьютерной графике полностью не решена. Существует множество решений, обладающих плюсами и минусами, применимых в разных случаях. Мы рассмотрим самые популярные на сегодняшний момент.
      Читать дальше →
    • AsyncCollections: история одного велосипеда

      С давних времён я был большим поклонником System.Collections.Concurrent и BlockingCollection в особенности. Сколько раз это чудо инженерной мысли выручало в самых разнообразнейших ситуациях — не счесть.

      С чуть менее давних времён в обиход прочно вошли async/await. Казалось бы, жизнь прекрасна, но есть одно «но»: асинхронный код миксовать с блокирующим кодом как-то не очень-то хочется. А BlockingCollection, как несложно догадаться (хотя бы из названия), в ряде случаев поток блокирует.
      Что же делать?