Как стать автором
Обновить
122
4.1
Александр Рябиков @rsashka

Системный архитектор

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

Китай не принимает платежи из России. Где заказать печатные платы в Китае в 2024 году

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

Полгода назад я писал, как решал проблему с ушедшими JLCPCB. И вот с марта возникла новая проблема ахахах (истерический смех) —  китайские банки начали блокировать оплату от российских компаний за компоненты для сборки электроники. Оплаты не проходят даже у тех компаний, которые заключили долгосрочные контракты с китайскими производственными площадками.

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

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

Читать далее
Всего голосов 36: ↑40 и ↓-4+44
Комментарии28

Динамическая JIT компиляция C++

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


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


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


Так, на днях искал материалы про JIT компиляцию C++ в рантайме с помощью clang/llvm и поиск мне выдал мою же собственную статью трехгодичной давности: Динамическая JIT компиляция С/С++ в LLVM с помощью Clang / Хабр. В результате появилась уже эта новая статья про JIT компиляцию C/С++.

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

Манифест Киберправды

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

Данный текст является ответом на опубликованную накануне «Оду бесполезности споров» с целью рассказать о проекте, который намерен принципиально решить проблему анализа достоверности информации в Интернете и оценки репутации ее авторов. Я считаю, что новые никогда ранее не существовавшие децентрализованные технологии дают нам возможность наконец найти ответ на извечный вопрос «Что есть истина?», которым уже почти две тысячи лет задается человечество.

Читать далее
Всего голосов 32: ↑21 и ↓11+10
Комментарии76

GIL в Python: как его будут отключать

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

Python-разработчики, как правило, хорошо знают, что такое и для чего нужен GIL, вопросы по нему встречаются на большинстве собеседований, я и сам люблю их задавать. Но в CPython его скоро не будет. Да, core-разработчики CPython взяли курс на его удаление.

Разберём основные концепции того, как это будет произведено, с обзором соответствующего PEP 703.

Читать далее
Всего голосов 27: ↑27.5 и ↓-0.5+28
Комментарии37

Взгляд на асинхронность в JavaScript: роль Event Loop, промисов и async/await

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

В этой статье мы сосредоточимся на ключевых элементах асинхронного программирования в Java Script: Event Loop, Event Bus, промисы и синтаксический сахар async/await. Разберемся, как эти концепции взаимодействуют между собой и как их использование помогает нам создавать более эффективные и отзывчивые веб-приложения.

Мы начнем с изучения роли Event Loop - механизма, ответственного за управление выполнением асинхронного кода. Затем мы перейдем к рассмотрению Event Bus, который обеспечивает коммуникацию между различными компонентами приложения. После этого мы ознакомимся с промисами и синтаксическим сахаром async/await, которые значительно упрощают работу с асинхронным кодом и делают его более читаемым и понятным.

Читать далее
Всего голосов 21: ↑17 и ↓4+13
Комментарии15

Протокол защищенного обмена для индустриальных систем CRISP: поддержка в устройствах Рутокен

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

Приветствую уважаемую публику Хабра от лица условно анонимного представителя компании «Актив», занимающейся производством небезызвестных средств аутентификации и электронной подписи.

В этой статье хотелось бы рассказать об одном из менее известных направлений деятельности подразделения Рутокен, связанного с обеспечением киберфизической безопасности. В рамках данного направления компания уже не первый год производит встраиваемые в управляющее и управляемое оборудование устройства линейки Рутокен Модуль. Не так давно в эти устройства (а заодно в токены и смарт-карты Рутокен ЭЦП 3.0) добавилась поддержка протокола CRISP, и это отличный повод рассказать и о самом протоколе, и о принципах интеграции устройств Рутокен Модуль, и об организации процессов разработки в компании.

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

Julia. Метапрограммирование и макросы

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

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

Механизм макросов используется в Julia довольно часто. Макрос при использовании начинается с символа @ и имеет вид @show, @benchmark… А также, в неявной форме, макросами являются регулярные выражения r"[a..z]" (это макрос с полным именем r_str), а также многочисленные другие способы применения, включая примеры Modia.jl / Unitful.jl с макросом u_str, где физическая величина «вшита» в число:

L = 0.8u"m",
m = 1.0u"kg",
d = 0.5u"Nms/rad",
g = 9.81u"m/s^2",

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

Переворачивающиеся при умножении числа

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

Здравствуйте!

Расскажу о серии задач, которая случайно возникла в процессе решения другой задачи. Мне на глаза попалось равенство:

81 * 27 = 2187

– Интересно, – подумал я. – А бывают ли ещё такие числа, чтобы цифры слева и справа повторялись?

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

Оффлайновое использование Git

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

Некоторые компании, защищая свои системы от несанкционированного доступа, используют изолированные компьютерные сети, или полностью обходятся без сетей. Работа в таких системах может быть сопряжена со сложностями, но нельзя сказать, что в них невозможно разрабатывать программные проекты. А особую важность в подобных ситуациях имеет подбор подходящего инструмента для контроля версий наподобие Git.

Система контроля версий Git вполне благополучно работает без удалённого репозитория. Такова её природа. При таком подходе можно создавать ветви репозитория, можно индексировать файлы и коммитить их в репозиторий. Всё выглядит так же, как и при обычной работе.

Читать далее
Всего голосов 40: ↑38 и ↓2+36
Комментарии17

Основы Rust: синтаксис и структуры данных

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

Привет, Хабр!

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

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

Читать далее
Всего голосов 37: ↑23 и ↓14+9
Комментарии15

Bootloader. Part 1. Нюансы Cortex-M, устройство памяти stm32 и преднастройка

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

Решил начать цикл статей на тему бутлоадера для STM32. Возможно это послужит руководством для начинающих разработчиков, а может поможет самым настоящим демиургам в сфере embedded разработки.

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

Основы многопоточности в Rust

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

Привет!

Думаю, уже всем известно, что многопоточность – это мастхев для большинства приложений.

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

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

Отправляем и принимаем SMS с помощью SIM868 и Repka Pi

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

В этой статье мы продолжим рассказ об использовании модуля GSM/GPRS/GNSS Bluetooth HAT, созданного на базе SIM868, для беспроводной передачи данных в виде СМС-сообщений через Российский одноплатник Repka Pi. Такой способ даже в наше время актуален, когда нужно управлять автоматикой или другими устройствами, когда 2G/3G/4G и даже GPRS не позволяет это делать из за удалённости/помех или по иным причинам и важно обеспечить высокую надёжность управления.

Это третья статья данного цикла и из первой статьи вы узнали, как с помощью упомянутого модуля обмениваться данными между микрокомпьютером Repka Pi с JSON-сервисом, доступным в интернете, по каналу GPRS. Вторая статья рассматривает такой обмен глубже, на уровне AT-команд, передаваемых в модуль через UART.

Теперь настала очередь рассказать об отправке и приеме коротких текстовых сообщений SMS (Short Message Service). Этот канал передачи данных пригодится, например, в тех случаях, если в месте расположения вашего оборудования недоступен ни WiFi, ни GPRS.

Сообщения SMS можно передавать в текстовом режиме, а также в так называемом режиме PDU (Protocol Data Unit). В первом случае длина сообщения не может превышать 160 байт, и в нем не должно быть символов кириллицы. Пользоваться режимом PDU сложнее, но в нем нет этих недостатков.

Далее мы рассмотрим работу в обоих режимах как с помощью Python и библиотеки RoverConnect, так и через AT-команды.

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

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии8

Что делать, если заказчик не заплатил за работу, а договора не было

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

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

Разберём конкретный пример: Елисей заказал у Прохора разработку простенького бота. ТЗ такое: «чтобы регистрировал на мероприятие участников, собирал ФИО и оплату за билет».

Заказ Елисей сделал популярной соцсети, в сообщениях.

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

Три дня и три ночи Прохор не спал, собрал бота - загляденье. Всё работает без багов. Написал Елисею: «Когда оплата? Я всё сделал».

Узнать, что дальше
Всего голосов 21: ↑12 и ↓9+3
Комментарии11

Как художники за рабочие места с ИИ борются

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

Громоподобный шаг научно-технического прогресса слышен издалека: сквозь года до нас доносится эхо шагов из будущего. Шрамы ран, полученных в предыдущие промышленные революции, априорные, переданные через учебники и опыт предков, болезненно сжимаются под воздействием этого эха. Как и всё великое, дела человечества пугающе красивы.

Наверное, поэтому все мы стали в той или иной мере, но скажем честно, опасаться ИИ заранее. А пока фантазировали, он зашёл не совсем оттуда, откуда его ждали. 

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии10

Строительные кирпичики в языках программирования

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


К сожалению, закончилась череда новогодних праздников и опять начинаются рабочие будни. Из-за этого придется опять большую часть времени отводить работе, а не чтению Хабра :-). Но пока новогодний запал не иссяк, опубликую продолжение серии статей на тему разработки языков программирования.


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


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

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

Маршрутизация по DNS на OpenWrt

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

Написать данную статью меня побудили следующие обстоятельства:

Обновление ОС на своём роутере до OpenWrt 23.05, сломавшее мой предыдущий setup, где я делал роутинг по GeoIP.

Многочисленные вопросы знакомых и в дискуссиях в постах на Хабре.

Статья на Хабре, по которой я стал делать и понял, что так делать не надо.

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

Постоматы в оффлайн-магазине (или обратная связь для ДНС)

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


Прочитал материал "М.Видео: Нам всё равно" и невольно восхитился терпению его автора (Mike-M):


3 месяца и 40 обращений. Ровно столько времени и усилий мне потребовалось, чтобы прийти к выводу в заголовке статьи.

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


А поводом ко всему послужили установленные в магазине ДНС постоматы, хотя все началось с покупки SSD диска для ноутбука в магазине Озон :-)

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

Биологическая нейросеть и эффективность обучения. Сравнение БИ с ИИ

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

Сейчас очень много размышлений над сильным ИИ, нейросетями, влиянием нейросетей.

Но у нас и так есть миллиарды сильных И в биологическом исполнении. Зачем грезить/бояться/строить теории относительно будущего с сильным искусственным интеллектом, когда есть огромное количество плохо настроенных БИ. Достаточно чуть улучшить их механизмы обучения, и мир станет значительно более приятным местом.
В связи с этим актуальным становится вопрос сравнения ИИ и обычного биологического интеллекта. Ведь если создатели перцептрона вдохновлялись и черпали идей из природы и биологи, то почему бы не черпать идеи из искусственных нейросетей и добавлять эти идеи к обычным.

Искусственные нейросети уже развиваются довольно давно и по некоторым показателям приближаются к биологическим. У chatgpt5 1 триллион синаптических контактов у человека 15 триллионов. Числа сопоставимые. Датасет с изображениями ИИ стал определять лучше человека уже в 2015 году. Если рассматривать количество слоев(6 в коре у человека), то ИИ давно уже обошел биологические нейросети. Вполне разумно посмотреть на свое создание.

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

Размышления о структурном программировании

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


Изначально я хотел назвать статью как нибудь вызывающе, например, "Как наука может превращаться в религию", "В ловушке искажений смыслов структурного программирования" или "О чем вам забыли рассказать про структурное программирование", но в результате все же оставил текущее название и надеюсь, оно не вызывает раздражения у читателей. И хотя другие заголовки являются более кликбейтными, тем не менее они все же в больше степени отражают смысл статьи, чем нейтральные "размышления".


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


Все наверно помнят, что любой алгоритм можно представить в виде трех видов алгоритмических конструкций, следование, ветвление и повторения? А иногда еще добавляют, что эту теорему выдвинул и доказал Э. Дейкстра в 70-х гг. прошлого века, в том числе, включая широко распиаренный якобы запрет на использование операторов goto.

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

Информация

В рейтинге
858-й
Откуда
Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Embedded Software Engineer, Software Architect
Lead
C++
OOP
Linux
Programming microcontrollers
Embedded system
C
Qt
Software development