Pull to refresh
-5
0
Сергей Зорин @Kemet

Пользователь

Send message

Визуализация при помощи генеративных алгоритмов: дифференциальная сетка (2D и 3D) и трещины

Reading time6 min
Views4.5K
image

Это развитие идей из публикации Визуализация при помощи генеративных алгоритмов: гифа, деревья, повторяющиеся и дифференциальные линии (на Python), однако вам необязательно читать ее — все проекты, описанные здесь самодостаточны.

Все что вам необходимо знать: последнее время автору были особенно интересны биологические образы и дифференциальный рост. В посте есть результаты экспериментов с различными биологическими и физическими закономерностями, в частности дифференциальной сеткой, в том числе в 3D, и трещинами.
Осторожно, тяжелые красивые картинки
Total votes 18: ↑18 and ↓0+18
Comments1

Ещё один велосипед: храним юникодные строки на 30-60% компактнее, чем UTF-8

Reading time15 min
Views13K


Если вы разработчик и перед вами стоит задача выбора кодировки, то почти всегда правильным решением будет Юникод. Конкретный способ представления зависит от контекста, но чаще всего тут тоже есть универсальный ответ — UTF-8. Он хорош тем, что позволяет использовать все символы Юникода, не тратя слишком много байт в большинстве случаев. Правда, для языков, использующих не только латиницу, «не слишком много» — это как минимум два байта на символ. Можно ли лучше, не возвращаясь к доисторическим кодировкам, ограничивающим нас всего 256 доступными символами?

Ниже предлагаю ознакомиться с моей попыткой дать ответ на этот вопрос и реализацию относительно простого алгоритма, позволяющего хранить строчки на большинстве языков мира, не добавляя той избыточности, которая есть в UTF-8.
Читать дальше →
Total votes 92: ↑90 and ↓2+88
Comments85

Очередная статья: STM32 для начинающих

Reading time10 min
Views22K
Всех приветствую!

Это моя первая статья на Хабре, поэтому прошу не кидаться тяжелыми предметами. Заранее спасибо.

Начнем с предыстории. Когда-то мне пришлось перейти на микроконтроллеры ARM фирмы ST. Это было связано с тем, что PIC и AVR уже не хватало и хотелось новых приключений. Из доступного в хлебобулочных магазинах и большого количества статей о «быстром старте» выбор пал именно на STM32F100.

Я привык работать в IAR. Да, есть другие IDE, но мне хватает возможности IAR: относительно удобный редактор, не плохой отладчик и достаточно удобно работать с регистрами во время отладки.

Когда я попытался сделать первый проект меня ждало разочарование — CMSIS! Кому как, но для меня это было (и остается) ужасом: много буков, длинные и для меня не понятные структуры. Вникать во все это было не интересно. Попытался скомпилировать пару примеров и понял — это не наш метод.
Читать дальше →
Total votes 29: ↑22 and ↓7+15
Comments49

Подсказки по микросервисной автоматизации процессов

Reading time12 min
Views15K

Camunda Microservice Workflow Automation 1


Возможно, ваша компания захочет перейти на архитектуру микросервисов и автоматизировать рабочие процессы (в этом посте блога я не вдаюсь в мотивацию, но вы, возможно, захотите прочитать о 5 Workflow Automation Use Cases You Might Not Have Considered или BizDevOps — the true value proposition of workflow engines). Это ставит вас в ряд со многими нашими клиентами. Как правило, у вас возникнут вопросы:


  • Область применения и границы — какой рабочий процесс вы хотите автоматизировать и как он ложится на несколько микроуслуг, или разраниченный контекст в вашем ландшафте. Я ограничен объемом этого поста, поэтому я не затрону эту тему сегодня, но вы, возможно, захотите прочитать Avoiding the «BPM monolith» when using bounded contexts или Real-Life BPMN.
  • Стек и инструменты — какой движок процессов я могу использовать?
  • Архитектура — я запускаю движок процесса централизованно или децентрализованно?
  • Управление — кто владельцы модели рабочего процесса и как ее развертывать?
  • Операции — как мне сохранить контроль?
Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments4

Продолжение очередной статьи: STM32 для начинающих. Интерфейсы

Reading time2 min
Views6.6K
Предыдущая публикация: «Очередная статья — STM32 для начинающих»

И как этим пользоваться?


В предыдущей статье создали класс для работы с портами ввода-вывода, проверили. И что дальше? Зачем это все запихивать в класс?

Возьмем для примера простенький опрос кнопок:


Для этой схемы в простейшем случае опрос будет выглядеть так:

int GetKey()
{
  volatile uint32_t* addr = reinterpret_cast<uint32_t*>(GPIOA_IDR);
  uint32_t ret_val = *addr;
  return ret_val & 0x0F;
}
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments13

SIP телефон на STM32F7-Discovery

Reading time6 min
Views12K
Всем привет.

Некоторое время назад мы писали о том как нам удалось запустить SIP телефон на STM32F4-Discovery c 1 Мб ROM и 192 Кб RAM) на базе Embox. Тут надо сказать, что та версия была минимальной и соединяла два телефона напрямую без сервера и с передачей голоса лишь в одну сторону. Поэтому мы решили запустить более полноценный телефон со звонком через сервер, передачей голоса в обе стороны, но при этом уложиться в как можно меньший размер памяти.

Total votes 38: ↑36 and ↓2+34
Comments9

Разбираемся в особенностях графической подсистемы микроконтроллеров

Reading time14 min
Views14K
Привет!

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

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments46

Обновление для IDE EmBitz 1.11

Reading time3 min
Views8.4K
На официальном форуме появилось обновление для IDE EmBitz 1.11. Оно включает в себя расширенный список поддерживаемых микроконтроллеров STM32, обновленные версии библиотек CMSIS, SPL, HAL и LL, а также текущую версию компилятора gcc-arm-none-eabi-9-2020-q2-update и GDB сервер EBlink, необходимый для прошивки и отладки микроконтроллеров.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments24

Go: Как использовать nil-значения без использования ссылочных типов

Reading time5 min
Views6.7K


Создано на базе изображений gopherize.me


Довольно часто из Go кода нам приходится работать с различными HTTP API или самим выполнять роль HTTP сервиса.


Один из частых случаев: получаем данные в виде структуры из базы данных, отправляем структуру внешнему API, в ответ получаем другую структуру, как-то её преобразуем и сохраняем в базу.


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


Для API нормальна ситуация, когда в структурах запроса и ответа есть поля, которые могут быть nil и могут принимать какие-то не-nil значения. Такие структуры выглядят обычно так

Читать дальше →
Total votes 14: ↑9 and ↓5+4
Comments6

Отзывчивый размер шрифта

Reading time4 min
Views79K

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


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


Но потом появились они — vw, vh, vmin, vmax — единицы измерения, которые базируются на viewport. У нас появился шанс на отзывчивую типографику.


Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments20

Мандатная модель распределения прав в FreeBSD v.2.0

Reading time5 min
Views3.1K

Введение


В данной публикации пойдёт речь о мандатной модели bsdextended, на handbook её описывают как брандмауэр файловой системы. Преимущество данного подхода над тем который я описывал в данном руководстве является тот факт, что не имеет значения какая файловая система используется, так как ограничения будут происходить не по меткам на файлах, а по uid и gid пользователей.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments9

Aнглийский для демо (структура, фразы, Q&A, грамматика, советы)

Reading time6 min
Views9.3K


Демо в конце спринта (будь то внутреннее, заказчику или крупному клиенту) — это настоящая проверка знания английского для не носителя языка, так как эта небольшая презентация показывает:

  • беглость речи (fluency)
  • точность (accuracy) — много или немного ошибок в речи в целом
  • спонтанность языка (особенно, когда задают вопросы)
  • произношение
  • владение грамматикой
  • богатство или бедность лексики
  • насколько правильно человек умеет составлять предложения (структуры русского и английского предложения отличаются)
  • умение структурировать речь с помощью связующих слов (linking devices: e.g. firstly, secondly, finally, in addition, what concerns, etc.).
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments4

Телефонный номер через ГосУслуги

Reading time4 min
Views15K
Если во время удаленной работы вам все равно нужно звонить и принимать звонки, без виртуального номера не обойтись. Но что делать, если нет возможности идти в офис оператора, или желания отправлять ему сканы документов?
Все, у кого есть подтвержденный аккаунт в ГосУслугах либо в крупных банках, могут включить себе виртуальный номер и бесплатную АТС за несколько минут — без загрузки документов или посещения офисов. Как это сделать быстро и просто опишем ниже.



Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments12

Работа с SD-картой по интерфейсу SPI. Реализация на VHDL

Reading time17 min
Views30K
Привет, Habr! Однажды на работе мне досталась задача оценить возможность реализации хранения данных на SD-карте при подключении ее к FPGA. В качестве интерфейса взаимодействия предполагалось использование SPI, так как он проще в реализации. Полученным опытом хотелось бы поделиться.


Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments39

Популярные ошибки в английском среди IT-специалистов. Часть 2: Произношение

Reading time3 min
Views20K


Моя статья «Популярные ошибки в английском среди IT-специалистов» собрала много комментариев с полезными дополнениями. И я решила выпустить вторую часть, теперь посвященную Произношению.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments69

Легкий способ выучить язык (любой)

Reading time7 min
Views11K
Хочу побыть санитаром леса хабра и описать мой опыт и опыт других людей, которых я знаю лично по изучению иностранного языка (любого). Критерий успеха в этом деле я вижу один — когда переводчик не нужен уже (99% времени), ни словарь, ни контекстный. И постараюсь показать как пройти этой же дорогой, до того уровня, который вам нужен.
Без регистрации, СМС, выбрасывания денег (часто больших) и кучи времени. Настолько легко и приятно, насколько это в принципе возможно.

Чтобы таким образом постов с разного рода помощью в изучении языка стало как можно меньше (в идеале ноль). Я не нашел ничего в таких постах за прошлые годы, что бы было как максимум интересно мне, или как минимум (исходя из опыта) полезно тем, кто изучает языки. В 99% это фантазии непонятно кого о том, как «можно было бы» изучать язык, но толку от этого нет, как показывает практика (или это даже вредно).

image
Читать дальше →
Total votes 14: ↑5 and ↓9-4
Comments27

Языковая механика стеков и указателей

Reading time10 min
Views10K

Прелюдия


Это первая из четырех статей в серии, которая даст представление о механике и дизайне указателей, стеков, куч, escape analysis и семантики значения/указателя в Go. Этот пост посвящен стекам и указателям.

Оглавление цикла статей:

  1. Language Mechanics On Stacks And Pointers
  2. Language Mechanics On Escape Analysis (перевод)
  3. Language Mechanics On Memory Profiling (перевод)
  4. Design Philosophy On Data And Semantics

Вступление


Не буду лукавить — указатели трудны в понимании. При неправильном использовании указатели могут вызвать неприятные ошибки и даже проблемы с производительностью. Это особенно верно при написании конкурентных или многопоточных программ. Неудивительно, что многие языки пытаются скрыть указатели от программистов. Однако, если вы пишете на Go, вы не сможете избежать указателей. Без четкого понимания указателей вам будет сложно писать чистый, простой и эффективный код.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments7

Минисериал: троичный компьютер своими руками

Reading time7 min
Views32K

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


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


Читать дальше →
Total votes 141: ↑141 and ↓0+141
Comments148

Программирование троичного вычислителя: играем с эмулятором

Reading time6 min
Views9.2K

Как я и говорил, я потихоньку строю очень простой, но функциональный и при этом бескомпромиссно троичный вычислитель, основанный на сбалансированной троичной системе счисления. В этой статье я описываю эмулятор моего вычислителя, который мне поможет в отладке железа. Если вам интересно, не стесняйтесь писать под него программы, я их обязательно запущу на настоящем железе как только оно будет готово! Это очень просто, Триадор понимает обычный очень примитивный императивный язык, схожий с ассемблером или brainfuck :)



— Жуткий кошмар! Нули и единицы повсюду. И кажется, я видел двойку.
— Это просто сон, Бендер. Двоек не бывает.

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

Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments59

Как я отказался от вычисления квадратного корня

Reading time14 min
Views47K


Очень часто при цифровой обработке сигналов необходимо вычислить длину вектора, обычно это делается по формуле A=SQRТ(X^2+Y^2). Здесь возвести в квадрат значение не сложно, но операция вычисления квадратного корня не является простой операцией, особенно для микроконтроллеров. Кроме того, алгоритмы вычисления корня выполняются не стабильное время, и для алгоритмов, в которых таких вычислений много, становится сложно прогнозировать время, необходимое для вычислений.

С такой задачей столкнулся и я. О том, как я отказался от процедуры вычисления корня, читайте ниже.
Читать дальше →
Total votes 126: ↑119 and ↓7+112
Comments93
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity