• Введение в D3

    • Tutorial

    D3.js (или просто D3) это JavaScript-библиотека для обработки и визуализации данных. Она предоставляет удобные утилиты для обработки и загрузки массивов данных и создания DOM-элементов. Эта заметка описывает работу с основными методами библиотеки, она подойдёт для изучения основ библиотеки и погружения в её логику и возможности.

    Для понимания статьи пригодятся знания JS, HTML и CSS.

    Читать дальше →
    • +55
    • 125k
    • 7
  • Оптимизация преобразования HSV в RGB для микроконтроллеров


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

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

      Хранится и передаётся цвет пикселя в 24-bit RGB, но значительная часть этого цветового диапазона (ненасыщенные и яркие цвета) не слишком репрезентабельна в отдельных светодиодах. Кроме того, строить симпатичные градиенты в модели RGB не получится — смешивание RGB-цветов даёт не интуитивно-очевидный результат (жёлтый + синий = серый, а хочется — зелёный). Модели HSL и HSV подойдут лучше, но стандартные реализации используют нецелочисленную арифметику. Удобно будет использовать модель, которая сможет компактно хранить параметры цвета и быстро считать их RGB-значения, не используя числа с плавающей запятой и деление на произвольное число — речь идёт о микроконтроллере и сложные алгоритмы нам ни к чему, а деление (кроме небольших степеней двойки) и вовсе противопоказано.
      Читать дальше →
    • Давайте сядем и подумаем

        После оглашения результата по дело TPB, в который раз повсюду (в том числе и на хабре) вновь вспыхнули холивары на тему «копираст vs. пиратство». Оба термина звучат не слишком приятно, но используются повсеместно. А что будет, если мы всё-таки отложим копья и топоры войны и попытаемся внимательно осмотреть её участников и понять, почему никому из них не удаётся сдвинуть друг друга с места?
        Ну давай попробуем...
      • Познаём Java. Третья чашка: примитивные типы, и объекты. Базовые конструкции

          Типа реальные типы


          Думаю, после краткого экскурса в возможности Java и прочитывания пары десятков строк кода примеров, вам захотелось узнать, чем должен уметь оперировать каждый Java-программист. Что ж, давайте поговорим о примитивных типах, классах (в том числе нескольких основных), сравнении, передаче параметров и простых структурах в Java.
          Поехали!
        • Познаём Java. Вторая чашка: собираем классы в кучки. Пробуем апплеты

            Чем обусловлена структура Java?


            Как вы уже слышали, Java проектировалась с рассчётом на совместимость со всем, чем только можно. Такое ограничение вынудило разработчиков Java сделать её такой, чтобы максимально упростить развёртывание приложений, при этом обеспечив логическую стройность языка.

            Как происходит загрузка классов?


            Читать дальше →
          • Познаём Java. Первая чашка

              Что да как


              Я решил поддержать начинание MaxElc и DarwinTenk, и начать потихоньку рассказывать про Java. Текст буду подавать «чашками» потому, что один из символов Java — чашка кофе. Большую часть я буду писать сам, изредка поглядывая в википедию и на официальный сайт языка — java.sun.com (раздел /docs).
              Далее в тексте стоит разделять понятия «Java как язык» и «Java как платформа».
              Читать дальше →