Кроссплатформенный клиент для ChatGPT

Занимался обёрткой для OpenAI для Делфи и вдобавок сделал клиент.
Прошу заранее прощения, я хотел сделать пост нового типа, но с телефона не увидел, как это можно сделать.

Объектно-ориентированный язык программирования

Занимался обёрткой для OpenAI для Делфи и вдобавок сделал клиент.
Прошу заранее прощения, я хотел сделать пост нового типа, но с телефона не увидел, как это можно сделать.

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


Как известно, Проблема четырёх красок решена в результате перебора вариантов на компьютере. Но не все математики согласны с таким решением, поскольку возникают сложности с проверкой отсутствия ошибок.
Для непосвящённых… Проблема четырёх красок формулируется очень просто: «Для раскраски любой карты на плоскости достаточно четырёх красок».
При этом, если области (страны) «касаются» только в одной точке, то считается, что они не граничат и их можно раскрасить в один и тот же цвет. Так, например, для раскраски клеток шахматной доски достаточно двух цветов.
Более того, Мартин Гарднер в книге «Математические головоломки и развлечения» упоминает, что доказана теорема «о двухцветных картах», которая утверждает, что «любую карту на плоскости можно раскрасить в два цвета тогда и только тогда, когда все её вершины чётны» (здесь, «вершиной» называется точка, в которой сходятся границы более двух стран).
* * *
Создал очень НЕинтересную игру, навеянную этой Проблемой.

Микроконтроллеры: AVR; Среда программирования IDE Lazarus 32х (кросс-платформенный) (ОС: Windows 64х).
В прошлой статье я описывал подключение компилятора Avr к IDE Lazarus, но у меня не работало автодополнение кода (при нажатии ctrl+пробел появляется выпадающее меню с вариантами кода). Спустя 29 дней разборок я добился корректной работы автодополнения. Что бы отделить "мух от котлет" (не все используют fpcupdeluxe) я решил вынести описание работы с fpcupdeluxe в отдельную статью.

Истерический, негативно-позитивный пост добра и ненависти, обо всем и ни о чем, из которого вы узнаете: как папа Крузо встретил маму Робинзона, почему трава зеленая а смурфики голубые, как нам реорганизовать Рабкрин и много других, важных штук.
Вот появилось желание написать небольшой проектик для себя с применением микроконтроллера. В CodeVisionAVR команды не подсвечиваются по Ctrl+Пробел, да и Си что-то начал забывать, вспоминать - лень... Конечно, вспомнить Си - это 10-30 минут, но лень... Поэтому, было решено начать проект в родной IDE Lazarus, она же кросс-компилируемая! Правда, понять, как включить avr в Lazarus, чтоб компилировался hex-файл ушло 3 дня :), поэтому пишу здесь, чтоб другие не мучались, а сразу пользовались.

Уверен, что история жизни этого человека достойна быть упомянутой на Хабре, поэтому хочу поделиться переводом его автобиографии (за качество перевода сильно не пинать). Тем более, что вот как уже несколько лет его нет в живых, однако надеюсь, что его примеры решения головоломок пригодятся всем, кто интересуется программированием, математикой и просто созданием прикольных штук на Delphi и не только. Да и в целом полагаю, что его жизненный путь многим покажется интересным, а для кого-то, возможно, и поучительным.

Давно хотел познакомиться с Rust. Язык с экосистемой сборки из коробки, компилятор в машинный код, но самое главное — автоматическое управление памятью, но без сборщика мусора. С учетом того, что управление памятью обещается как zero-cost в runtime — просто сказка! По ходу изучения и возник вопрос – а насколько код Rust быстрее/медленнее компилятора в машинный код давно известного, например, Delphi?


Эта библиотека добавляет возможность использования HackRF One, совместно с приложением SDR#, в качестве трансивера. Это реализовано внедрением промежуточного слоя между SDR# и библиотекой HackRF.DLL, который подготовлен с таким же интерфейсом, что и стандартная библиотека HackRF.DLL. При этом добавлена форма и несколько функций для формирования сигнала и модуляции в него звука из микрофона. Пока реализована только частотная модуляция.
После установки данного дополнения, при запуске SDR# и выборе HackRF, будет открываться дополнительно окно, позволяющее переключать HackRF в режим передачи.

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

Казалось бы, что может быть общего между одной из самых популярных математических теорем, Гомером Симпсоном и Дональдом Кнутом? Как и многие другие интересные идеи и задачи, их объединяет математика.
Задача, о которой я хочу рассказать, совсем не сложная. Думаю, её без труда сможет решить даже начинающий программист. Но эта задача интересна и весьма необычна. Ведь не каждый день предоставляется возможность проверить вычисления героя культового мультсериала Гомера Симпсона.

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

Сначала была мечта…
Что-то похожее на робототехническую систему, с двумя подвижными камерами, способностью отслеживать (направлять «взгляд» на) заданный объект и определять расстояние до объекта. И это был 2012 год. Но так как я больше программист нежели железячник, то все началось с реализации существующих в то время алгоритмов. Скоро пришло осознание, что алгоритмы и их реализация не есть цель. Цель – робототехническая система. Поэтому было принято решение воспользоваться существующими библиотеками обработки изображений. Но, к сожалению, на Object Pascal готовые библиотеки алгоритмов, которые были найдены в то время, не позволяли решать поставленные задачи.

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

SQLite во многих случаях является удобным, незаменимым инструментом. Я уже не могу себе представить - как мы все жили без него. Тем не менее, есть некоторые неудобства при его использовании, связанные с тем, что это легкая встраиваемая СУБД.
Самое большое неудобство для меня, как Delphi-разработчика - отсутствие хранимых процедур. Я очень не люблю смешивать Delphi-код и SQL-скрипты. Это делает код намного менее читабильным, и затрудняет его поддержку.
Предлагаю свой вариант решения проблемы:
Выносим весь SQL-код в отдельный файл ресурсов, подключенный к проекту
Запросы в SQL-файле разделяем маркерами начала с идентификаторами и маркерами конца
Создаем класс - менеджер SQL-запросов. При загрузке приложения он читает SQL-файл из ресурсов и составляет из него список хранимых процедур.
В процессе работы приложения менеджер извлекает текст SQL-запроса по его идентификатору для последующей его передачи на выполнение