Search
Write a publication
Pull to refresh
145
11
Александр Рябиков @rsashka

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

Send message

Бесплатный мультиязычный чат для сайта на Tawk + Notion + Telegram + chatGPT + GPT-Index

Reading time5 min
Views13K

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

Я следил за различными видами использования chatGPT с момента его выхода. Предлагаемое в статье решение я еще не встречал и поэтому думаю оно будет кому-то полезным.

Читать далее

HabraTab — девайс для хаброзависимых

Reading time9 min
Views15K

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

Что же получилось?

Неожиданная проблема с макросами (точнее без макросов)

Level of difficultyMedium
Reading time3 min
Views5.6K

image


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


Возможности макросов зависят от конкретного языка программирования (макропроцессора) и некоторые из языков программирования позволяют себя расширять новыми синтаксическими конструкциями, фактически, реализуя парадигму DSL для конкретной решаемой задачи. Подобные возможности добавляют новые области применения и способы разработки больших программных системы, например, за счет использования языково-ориентированного программирования.


Если же говорить о простых реализациях макросов, например как для языков С и С++, то умные люди и умные книжки советуют избегать использования макросов и по возможности заменять их шаблонами, константами и inline-функциями. Ведь с помощью макросов можно не только упростить код, но и не менее изящно стрелять в ноги себе или своих товарищей.


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

Читать дальше →

STM32. CMSIS. Определение частоты внешнего тактирующего осциллятора

Level of difficultyEasy
Reading time5 min
Views7.5K

Могут возникать ситуации, когда по той или иной причине нет возможности установить ранее заложенный в проект вид кварцевого резонатора, или же ситуации, когда происходит отказ кварцевого резонатора. Программист встраиваемых систем может предусмотреть развитие событий таким образом. На примере контроллера STM32F205RBT6 разработаем/напишем алгоритм определения установленного на плату кварцевого резонатора:

Читать далее

Доработка фильтра обратного осмоса

Level of difficultyEasy
Reading time4 min
Views28K

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


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


грязные


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


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


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

Читать дальше →

DSL (domain-specific language) implementation with macros

Level of difficultyMedium
Reading time8 min
Views2.8K

image
This is a translation of my own article


The release of NewLang language with a brand new "feature" is coming, a remodeled version of the preprocessor that allows you to extend the language syntax to create different DSL dialects using macros.


What is it about?


DSL (Subject Oriented Language) is a programming language specialized for a specific application area. It is believed that the use of DSL significantly increases the level of abstractness of the code, and this allows to develop more quickly and efficiently and greatly simplifies the solution of many problems.

Conditionally, we can distinguish two approaches to DSL implementation:


  • Development of independent syntax translators using lexer and parser generators to define the grammar of the target language through BNF (Backus–Naur form) and regular expressions (Lex, Yacc, ANTLR, etc.) and then compiling the resulting grammar into machine code.
  • Development or integration of the DSL dialect into a general-purpose language (metalanguage), including the use of various libraries or special parsers / preprocessors.

We will talk about the second option, namely the implementation of DSL on the basis of general-purpose languages (metalanguages) and the new implementation of macros in NewLang as the basis for DSL development.

Read more →

Вариант реализации DSL (domain-specific language) с помощью макросов

Level of difficultyMedium
Reading time8 min
Views4.2K

image


Близится релиз языка NewLang с принципиальной новой «фишкой», переделанным вариантом препроцессора, который позволяет расширять синтаксиса языка для создания различных диалектов DSL за счет макросов.


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


О чем идет речь?


DSL (Предметно-ориентированный язык) — язык программирования, специализированный для конкретной области применения. Считается, что использование DSL существенно повышает уровень абстрактности кода, а это позволяет вести разработку более быстро и эффективно и существенно упрощает решение многих задач.

Условно, можно выделить два подхода к реализации DSL:


  • Разработка независимых трансляторов синтаксиса с помощью генераторов лексеров и парсеров для определения грамматики целевого языка посредством БНФ и регулярных выражений (Lex, Yacc, ANTLR и т. д.) и последующей компиляцией полученной грамматики в машинный код.
  • Разработка или встраивание диалекта DSL на языке (метаязыке) общего назначения, в том числе за счет применения различных библиотек или специальных парсеров / препроцессоров.

Далее речь пойдет о втором варианте, а именно, о реализации DSL на базе языков (метаязыков) общего назначения и новом варианте реализации макросов в NewLang как основы для разработки DSL.

Читать дальше →

Простой лайфхак для ввода символа "#" в русской раскладке клавиатуры под Linux

Level of difficultyEasy
Reading time2 min
Views35K

знак решетки


Давно полюбил формат Markdown за простоту и легкость его использования при документировании исходного кода и за возможность его применения при оформлении статей для Хабра. Потом добавился Obsidian для ведения заметок. И формат Markdown стал по сути основным способом форматирования набираемого текста.


Единственной, но весьма большой ложкой дегтя, оставалась проблема ввода символа решетки «#» при использовании русской клавиатуры. А так как знак решётки (октото́рп, хеш, знак номера, дие́з, sharp), в русской раскладке клавиатуры отсутствует, то каждый раз переключаться на английскую раскладку, меня немного утомляло. И «немного утомляло» еще мягко сказано, так как символ решетки, кроме указания заголовков в Markdown и тегов в Obsidian, еще часто используется как начало комментария до конца строки (в Bash, Python, NewLang).


А так как предлагаемые на просторах интернета способы ввода символа решетки в русской раскладке клавиатуры меня совсем не вдохновляли (и если Alt+35 на Numpad под виндой еще сойдет, но этот способ не работает под Linux, а занимать буфер обмена ради вставки одного символа, вообще не вариант), то пришлось потратить некоторое время на эксперименты, результатами которых я и хочу поделиться.

Простой лайфак ввода # в русской раскладке под Linux

Встречайте, новая стратегия Embrace, Extend, and Expropriate для Linux?

Level of difficultyMedium
Reading time2 min
Views8.8K

image


Помните, несколько лет назад была проведена согласованная клеветническая компания против Ричарда Столлмана, в которой он был ложно обвинён в одобрении изнасилований, и по результатом которой его вынудили уволиться с поста президента Фонда Свободного Программного Обеспечения?


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


И вот сейчас, в релизе ядра Linux 6.2, произошло очень важное изменение — разрешён приём кода в ядро Linux под лицензией Copyleft-Next, для которой заявлена совместимость с GPLv2, что подтверждено юристами компаний SUSE и Red Hat (кто бы сомневался?).


Данная лицензия также содержит пункт о предоставлении прав на запатентованные технологии, что делает Copyleft-Next совместимой и с Apache 2.0. А для обеспечения полной совместимости с GPLv2, в тексте Copyleft-Next явно указано, что производная работа может поставляться не только под исходной лицензией Copyleft-Next, но и под лицензией GPL.


Но как говорится, «есть нюанс».

Читать дальше →

Столетний язык программирования — какой он

Level of difficultyEasy
Reading time14 min
Views37K

Особо амбициозные разработчики любят заявлять о том, что используемый ими язык программирования или фреймворк будет жить лет сто. Дерзкое заявление, учитывая, что разработке программного обеспечения, как таковой, всего около 65 лет. А фреймворки еще моложе. 

И всё же интересно, какие языки все еще будут использоваться через 100 лет?

Читать далее

ТОП социальных сетей для ученых

Reading time3 min
Views12K

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

Для России такой соц. сетью определенно является Хабр. К мировым гигантам определенно относится ResearchGate. Однако эти площадки не единственные.

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

Читать далее

USB монитор из Futaba GP1160A02A

Level of difficultyHard
Reading time11 min
Views27K

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

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

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

Про один из таких дисплеев, изготовленный по этой технологии и будет рассказано в этой статье, а именно про дисплейный модуль Futaba GP1160A02A.

Эта статья не будет про подключение этого дисплея к какой-нибудь “ардуине” стандартными способами. Это слишком просто и скучно. Речь пойдёт про обход ограничений, наложенных производителем, и попытки выжать из этого дисплея всё, что позволяет технология.

Читать далее

MarkedText — маркдаун здорового человека

Reading time10 min
Views41K

Здравствуйте, меня зовут Дмитрий Карловский и все свои статьи (и презентации) пишу я в MarkDown разметке. И знаете что? Она уже порядочно меня подзаелозила! Тексты я пишу на русском, но большая часть спецсимволов есть только в английской раскладке клавиатуры. А редактирование таблиц - это вечная пизанская башня из вертикальных линий. Короче, есть у него проблемы как с удобством редактирования, так и с наглядностью представления. Так что давайте попробуем спроектировать его с нуля, не таща за собой килотонны головоломных конструкций.

Поехали..

Существует ли объективная физическая реальность без стороннего наблюдателя?

Reading time8 min
Views43K


Слышен ли звук падающего дерева в лесу, если рядом никого нет? Ответ на этот старый философский вопрос может оказаться не таким простым.

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

Однако существует набор предположений, касающихся реальности, с которыми уже соглашаются далеко не все. Главное из них – что существует объективная реальность, не зависящая от наличия наблюдателя или измерительного прибора. Два важнейших прорыва в области науки, произошедших в XX веке – а именно, теория относительности и квантовая механика – внезапно бросили вызов нашему представлению об объективной реальности. Они описывают реальность, которую невозможно отделить от акта наблюдения. Что же нам известно об объективной реальности на сегодняшний день?
Читать дальше →

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

Reading time8 min
Views328K

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

Начать читать

Отладка микроконтроллера через Type-C кабель

Reading time4 min
Views8.7K

Как избавиться от дополнительных разъемов на печатной плате IoT-устройств при наличии разъема Type-C?

Этим вопросом мы задались, когда в своих разработках начали переход с micro-USB на 24pin Type-C. В этой статье я постараюсь описать наш опыт использования Type-C, расскажу о распиновке разъемов Type-C для устройств с ESP32, STM32, Миландра, RISC-V или ARM, а также о том, что внутри кабеля Type-C и как его выбрать.

Читать далее

Релиз языка программирования NewLang 0.3

Reading time9 min
Views7.2K
image

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


NewLang находится в процессе активного развития. Это третий публичный релиз в который добавлены новые существенные возможности по сравнению с предыдущей версией.

Читать дальше →

Решение одной задачи с помощью 16 языков программирования

Reading time5 min
Views39K

Видеоблогер Конор Хекстра использовал разные языки программирования, чтобы решить одну и ту же задачу. Попутно выяснилось, что у Фортрана полно поклонников.

Читать далее

Целеустремленный зомби

Reading time7 min
Views5.4K

Давние читатели “crawl” могут вспомнить, что у меня никогда не хватало терпения для идеи “Искусственный Интеллект просто хочет жить”. Я растоптал её ещё в своём самом первом романе —

Читать далее

А слабо собрать скоринговую базу доверчивых клиентов лох̶терей?

Reading time2 min
Views6.8K


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

С самим лотереями особо не заморачивался и покупал билеты, которые не требуется заполнять. Какие нибудь 100-Лото и тому подобные. И вчера, я как и обычно, попросил несколько билетов на сдачу и… покупка не состоялась, потому что у меня потребовали номер мобильного телефона!
Читать дальше →

Information

Rating
1,099-th
Location
Россия
Date of birth
Registered
Activity

Specialization

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