Как стать автором
Обновить
12
0
Александр Коновалов @neit_kas

UI программист

Отправить сообщение

Лазерный диод: зажечь и не сжечь

Время на прочтение11 мин
Количество просмотров43K


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

Читать далее
Всего голосов 92: ↑92 и ↓0+92
Комментарии48

Каково это — быть разработчиком в России, когда тебе сорок

Время на прочтение37 мин
Количество просмотров161K
Привет всем, я — сорокалетний программист-самоучка, а это моя история.

Пару недель назад я наткнулся на график распределения людей, интересующихся технологиями, ИТ и программированием. И он заставил меня задуматься о моей карьере.



Через каких-то 20 лет мне стукнет 60. И вероятность того, что я еще смогу заниматься тем, для чего был создан, составляет очень крошечную величину. Эти размышления привели меня туда, откуда все начиналось.

Я дебютировал в роли разработчика программного обеспечения в 1990 году, через год после того, как мне на 14-тилетие родители подарили ПЭВМ «Микроша».
Читать дальше →
Всего голосов 353: ↑338 и ↓15+323
Комментарии788

Самая нужная программа на свете

Время на прочтение20 мин
Количество просмотров166K
image
Какими программами постоянно пользуются люди? Если подумать над этим вопросом, то окажется, что список этот не такой уж большой. К постоянно используемым программам можно отнести: саму операционную систему, файловый менеджер, текстовый редактор, браузер, мессенджер. Это именно тот базовый набор, которым пользуется на компьютере практически каждый человек. Требования к таким программам должны быть высокими: безотказная работа, быстрое выполнение всех функций, понятный и удобный интерфейс.

Можно сказать, что вышеперечисленный набор программ — это самые нужные программы, которыми пользуется человек в цифровую эпоху. Этот список покрывает все базовые потребности человека-пользователя. Или не все? Есть ли еще одна базовая потребность, которая не учтена в вышеприведенном списке самых необходимых программ? Является ли эта потребность самой важной из тех, что должен автоматизировать компьютер? Для меня такая потребность есть, но в списке самых используемых программ ей места не нашлось. Что же это за потребность?
Ранее компьютер считался устройством для проведения вычислений...
Всего голосов 115: ↑111 и ↓4+107
Комментарии303

C++26 — прогресс и новинки от ISO C++

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров20K

Работа в комитете по стандартизации языка C++ активно кипит. Недавно состоялось очередное заседание. Как один из участников, поделюсь сегодня с Хабром свежими новостями и описанием изменений, которые планируются в С++26.

До нового стандарта C++ остаётся чуть больше года, и вот некоторые новинки, которые попали в черновик стандарта за последние две встречи:

  • запрет возврата из функции ссылок на временное значение,
  • [[indeterminate]] и уменьшение количества Undefined Behavior,
  • диагностика при =delete;,
  • арифметика насыщения,
  • линейная алгебра (да-да! BLAS и немного LAPACK),
  • индексирование variadic-параметров и шаблонов ...[42],
  • вменяемый assert(...),
  • и другие приятные мелочи.

Помимо этого, вас ждут планы и прогресс комитета по большим фичам и многое другое.
Рассмотрим новинки на примерах
Всего голосов 66: ↑64 и ↓2+62
Комментарии118

Без про-v-ода. Поднимаем точку доступа ловушку, тестируем сети на проникновение

Время на прочтение4 мин
Количество просмотров10K

Снова рад приветствовать всех читателей статьи! Продолжаю рубрику "Без про-v-ода" в которой я рассказываю про беспроводные технологии, сети, устройства, их эксплуатацию и тестирование на безопасность. Сегодня хочу рассмотреть с вами так же некоторые инструменты для тестирования на безопасность, а так же любопытный инструмент против любителей халявы.

Дисклеймер: Все данные, предоставленные в данной статье, взяты из открытых источников, не призывают к действию и являются только лишь данными для ознакомления, и изучения механизмов используемых технологий.

Читать далее
Всего голосов 9: ↑6 и ↓3+3
Комментарии2

Как совмещать основную работу и проекты на стороне

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров47K

У многих из нас остается достаточно свободного времени в сутках. А почему бы не монетизировать это время, думает начинающий IT левак? Если работать по три часа в день в будние, брать по 2 тысячи за час, то получится 120 тысяч дополнительного дохода в месяц. Звучит отлично!

Меня зовут Даниил, и я через выгорание, увольнение, споры с заказчиками и успешные проекты научился совмещать карьеру в компании и ведение проектов на стороне.

Читать далее
Всего голосов 111: ↑109 и ↓2+107
Комментарии48

Генерация звука на микроконтроллерах AVR методом волновых таблиц с поддержкой полифонии

Время на прочтение12 мин
Количество просмотров32K
Микроконтроллеры AVR довольно дешевы и широко распространены. Наверно, с них начинает почти любой embedded разработчик. А среди любителей правит балом Arduino, сердцем которого обычно является ATmega328p. Наверняка многие задумывались: как можно заставить их звучать?

Если посмотреть на существующие проекты, то они бывают нескольких типов:

  1. Генераторы квадратных импульсов. Генерация с помощью ШИМ или дергать пины в прерываниях. В любом случае, получается очень характерный пищащий звук.
  2. Использование внешнего оборудования типа MP3 декодера.
  3. Использование ШИМ для вывода 8 битного (иногда 16 битного) звука в формате PCM или ADPCM. Поскольку памяти в микроконтроллерах для этого явно не достаточно, то обычно используют SD карту.
  4. Использование ШИМ для генерации звука на основе волновых таблиц, подобных MIDI.

Последний тип для меня был особенно интересен, т.к. почти не требует дополнительного оборудования. Представляю сообществу свой вариант. Для начала небольшое демо:



Заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 60: ↑59 и ↓1+58
Комментарии71

Магия SSH

Время на прочтение11 мин
Количество просмотров488K
С SSH многие знакомы давно, но, как и я, не все подозревают о том, какие возможности таятся за этими магическими тремя буквами. Хотел бы поделиться своим небольшим опытом использования SSH для решения различных административных задач.

Оглавление:

1) Local TCP forwarding
2) Remote TCP forwarding
3) TCP forwarding chain через несколько узлов
4) TCP forwarding ssh-соединения
5) SSH VPN Tunnel
6) Коротко о беспарольном доступе
7) Спасибо (ссылки)
Читать дальше →
Всего голосов 115: ↑106 и ↓9+97
Комментарии75

Poco — UI автоматизация мобильных игр на основе Python в рамках AirTest IDE

Время на прочтение7 мин
Количество просмотров10K

Сегодня мы поговорим о втором главном фреймворке для автоматизации UI, который называется Poco. Poco использует Python и здесь уже не обойтись без написания кода, но давайте сначала рассмотрим для чего он применяется, когда стоит к нему обращаться и как это всё выглядит.


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


Poco — фреймворк UI автоматизации игр использующий Python в рамках AirTest IDE с возможностью комбинирования функциональности с их же Image Recognition фреймворком (AirTest). Стоит упомянуть, что у AirTest IDE есть поддержка и других языков (JS,Lua,C#,Java), но дальнейшие примеры будут на Python, т.к. этот язык считается основным.


Основные элементы взаимодействия выглядят следующим образом:


image


Подразумевается, что Poco будет использоваться в тех местах, где не справляется AirTest, но, как сами разработчики замечают, вы можете написать все тесты используя только Poco и скорость прогона их будет значительно выше, но тогда вам нужно знать Python хотя бы на базовом уровне.

Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Основы формата GLTF и GLB, часть 2

Время на прочтение7 мин
Количество просмотров15K

Данная статья является продолжением рассмотра основ GLTF и GLB форматов. Вы можете найти первую часть статьи здесь. В первой части мы рассмотрели с вами зачем изначально планировался формат, а также такие артефакты и их атрибуты GLTF формата как Scene, Node, Buffer, BufferView, Accessor и Mesh. В данной же статье мы рассмотрим Material, Texture, Animations, Skin, Camera, а также закончим формировать минимальный валидный GLTF файл.


image

Material и Texture


С мешем неразрывно связаны материалы и текстуры. При необходимости меш может быть анимирован. Материал хранит информацию о том, как модель будет отрендерена движком. GLTF определяет материалы, используя общий набор параметров, которые основаны на Physical-Based Rendering (PBR). PBR модель позволяет создавать “физически корректное” отображение объекта в разных световых условиях благодаря тому, что шейдинговая модель должна работать с “физическими” свойствами поверхности. Есть несколько способов описания PBR. Самая распространенная модель — это metallic-roughness model, которая и используется по умолчанию в GLTF. Также можно использовать и specular-glosiness модель, но только при помощи отдельного расширения (extenstion). Основные атрибуты материала следующие:


  1. name — имя меша.
  2. baseColorFactor/baseColorTexture — хранит инфомрацию о цвете. В случае атрибута Factor информация хранится в числовом значении для RGBA, в случае Texture — хранится ссылка на текстуру в объекте textures.
  3. metallicFactor — хранит информцию о Metallic
  4. roughnessFactor — хранит информцию об Roughness
  5. doubleSided — имеет значение true либо false (значение по умолчанию) и указывает на то, будет ли меш рендериться с обоих сторон или только с "лицевой" стороны.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии10

Основы формата GLTF и GLB, часть 1

Время на прочтение8 мин
Количество просмотров53K

Что такое GLTF и GLB?


GLTF (GL Transmission Format) — это формат файла для хранения 3Д сцен и моделей, который является крайне простым в понимании (структура записана в стандарте JSON), расширяемым и легко взаимодействующим с современными веб-технологиями. Данный формат хорошо сжимает трёхмерные сцены и минимизирует обработку во время выполнения приложений, использующих WebGL и другие API. GLTF сейчас активно продвигается Khronos Group как JPEG от мира 3D. На сегодняшний день используется GLTF версии 2.0. Существует и бинарная версия данного формата, которая называется GLB, единственное различие которого в том, что все хранится в одном файле с расширением GLB.


Эта статья — 1 часть из 2х. В ней мы с вами рассмотрим такие артефакты формата и их атрибуты, как Scene, Node, Buffer, BufferView, Accessor и Mesh. А во второй статье мы рассмотрим оставшиеся: Material, Texture, Animations, Skin и Camera. Больше общей информации о формате можно найти здесь.
Если в процессе просмотра статьи захочется лично поработать с данным форматом, то можете скачать модели GLTF 2.0 с официального репозитория Khronos на GitHub


image


Проблематика и её решение


Изначально GLTF формат был задуман Khronos Group как решение для передачи 3D контента по интернету и был призван минимизировать количество импортеров и конвертеров, разные виды которых создаются при работе с графическими API.


image

На текущий момент GLTF и его бинарный брат GLB используются как унифицированные форматы и в CAD программах (Autodesk Maya, Blender и т. д.), в игровых движках (Unreal Engine, Unity и прочих), AR/VR приложениях, соц. сетях и т.д.

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии5

Радиотелескоп

Время на прочтение3 мин
Количество просмотров80K
Мы привыкли видеть мир в оптическом диапазоне и слышать в звуковом. Всем известно, что летучая мышь видит в темноте благодаря ультразвуковому локатору. Существует множество приборов, расширяющих человеческие возможности восприятия – к этому относится вся измерительная аппаратура. Она отображает всевозможные физические процессы в графическом или звуковом виде, доступном человеку.


Читать дальше →
Всего голосов 169: ↑165 и ↓4+161
Комментарии101

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Введение

Время на прочтение5 мин
Количество просмотров24K
Да - да, вот с этим девизом я и ринулся в бой.

Вместо предисловия


Пожалуй с этой картинки должно начинаться любое повествование о boost, Loki, самостоятельных, да и так же поставляемых с компиляторами реализациях стандартной библиотеки C++.

Да-да, и если вы думали что разработчики стандартной библиотеки для того же g++, clang, Visual Studio или, прости господи, C++ Builder (бывший Borland, а нынешний Embarcadero) — гуру, что не городят костылей, не ломают стандарт под свой компилятор и не пишут велосипедов, то, скорее всего, вы не так активно используете стандартную библиотеку C++ как вам казалось.

Статья написана как рассказ, и содержит много «воды» и отступлений, но я надеюсь, что мой опыт и получившийся код будет полезен тем, кто столкнулся с похожими проблемами при разработке на C++, особенно на старых компиляторах. Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:

https://github.com/oktonion/stdex (коммиты и конструктивная критика приветствуются)

А теперь, обо всем по порядку.
Читать дальше →
Всего голосов 55: ↑52 и ↓3+49
Комментарии32

Давайте попробуем поговорить про иерархические конечные автоматы вообще и их поддержку в SObjectizer-5 в частности

Время на прочтение19 мин
Количество просмотров6.1K
Конечные автоматы — это, пожалуй, одно из самых основополагающих и широко используемых понятий в программировании. Конечные автоматы (КА) активно применяются во множестве прикладных ниш. В частности, в таких нишах, как АСУТП и телеком, с которыми доводилось иметь дело, КА встречаются чуть реже, чем на каждом шагу.

Поэтому в данной статье мы попробуем поговорить о КА, в первую очередь об иерархических конечных автоматах и их продвинутых возможностях. И немного рассказать о поддержке КА в SObjectizer-5, «акторном» фреймворке для C++. Одном из тех двухнескольких, которые открыты, бесплатны, кросс-платформенны, и все еще живы.

Даже если вам не интересен SObjectizer, но вы, скажем, никогда не слышали про иерархические конечные автоматы или о том, насколько полезны такие продвинутые возможности КА, как обработчики входа-выхода для состояний или история состояния, то вам может быть интересно заглянуть под кат и прочесть хотя бы первую часть статьи.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии2

1. По мотивам Мейерса «Эффективный и современный c++» — вывод типа шаблона

Время на прочтение3 мин
Количество просмотров9.9K

Добрый день, дорогой читатель!


Эта статья — первая в цикле статей-конспектов, которые я буду писать по ходу прочтения книги Скотта Мейерса "Эффективный и современный c++". Каждой из таких статей будет соответствовать отдельная директория в специально заведенном на github.com проекте с примерами использования описываемых возможностей и приемов.

Читать дальше →
Всего голосов 25: ↑14 и ↓11+3
Комментарии4

Путешествие исключений между C++ и Python или «Туда и обратно»

Время на прочтение11 мин
Количество просмотров18K
В этой главе сказа про дружбу C++ и Python будет на удивление мало использования Boost.Python. Передача исключений туда и обратно является по сути слабым местом данной библиотеки. Будем обходиться родным API языка Python, а где это возможно использовать Boost.Python.
Тем не менее Boost.Python создаёт окружение, в котором исключения из C++ попадают в Python в виде стандартного RuntimeError, а обратно из Python генерируется исключение C++ типа error_already_set, что означает «тебе что-то прилетело, сходи сам почитай что там». И вот здесь нам как раз будет не лишним использовать C-API языка Python, чтобы вычитать необходимую информацию об исключении и преобразовать в соответствующий класс сообразно логике приложения.
К чему такие сложности? — Дело в том, что в Python, в отличие от C++, кроме текста исключения и его типа приходит ещё и traceback — стек до места возникновения исключения. Давайте немного расширим стандартный std::exception дополнительным параметром для этого stacktrace, а заодно напишем конвертер исключений туда и обратно из классов C++ в классы исключений Python.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии4

Объединяя C++ и Python. Тонкости Boost.Python. Часть первая

Время на прочтение10 мин
Количество просмотров146K
Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии8

Как начать путь к работе по проектированию электроники FPGA космического корабля Blue Origin

Время на прочтение6 мин
Количество просмотров9.9K


Вы хотите узнать, как получить работу по проектированию электроники космического корабля? Мне надавно пришло предложение поинтервьироваться на позицию FPGA designer для Blue Origin (см. выше). Лично мне такая позиция не нужна (у меня уже есть позиция ASIC designer-а в другой компании), но я отметил, что технические требования к претендентам в Blue Origin точно совпадают с содержанием семинара для школьников и младших студентов, который пройдет 15-17 сентября на выставке ChipEXPO в Сколково, с поддержкой от РОСНАНО. Хотя разумеется на семинаре мы коснемся технологий Verilog и FPGA только на самом начальном уровне: базовые концепции и простые, но уже интересные, примеры. Чтобы устроится после этого в Blue Origin, вам все-же потребуется несколько лет учебы и работы.

Из-за короновируса семинар будет удаленный, поэтому принять участие смогут не только школьники и студенты Москвы, но и всей России, Украины, Казахстана, Калифорнии и других стран и регионов. Физически проводить лекции и удаленно помогать участникам будут преподаватели и инженеры МИЭТ, ВШЭ МИЭМ, МФТИ, Черниговского Политеха, Самарского университета, IVA Technologies и fpga-systems.ru.

Для участия сначала, еще до семинара, нужно пройти три части теоретического курса от РОСНАНО, под общим названием «Как работают создатели умных наночипов»: «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники», «Физическая сторона цифровой схемотехники». Этот курс необходим, чтобы вы понимали, что вы делаете, по время практического семинара. По получению сертификата окончания теоретического онлайн-курса, вы можете зайти в офис РОСНАНО в Москве и получить бесплатную плату для практического семинара (если они останутся, преимущество имеют школьники). С этой платой вы можете работать дома, до, во время и после семинара в Сколково.

Как получить плату, подготовится к семинару и что на нем будет:
Всего голосов 36: ↑32 и ↓4+28
Комментарии22

Перевод вводной статьи от разработчиков D-Bus

Время на прочтение13 мин
Количество просмотров11K

Это вводная статья о технологии межпроцессного взаимодействия D-Bus, написанная его разработчиками. Дан краткий обзор ключевых моментов технологии. Рекомендуется читать перед изучением спецификации (русский перевод).

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии2

Возможности QR-кодов

Время на прочтение6 мин
Количество просмотров27K
image

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


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


В этой статье будут рассмотрены некоторые из этих стандартов и описаны возможные типы данных, которые можно спрятать в qr-код.


Читать дальше →
Всего голосов 63: ↑56 и ↓7+49
Комментарии25
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Калининград (Кенигсберг), Калининградская обл., Россия
Дата рождения
Зарегистрирован
Активность