Top.Mail.Ru
? ?
dzz, posts by tag: programming - LiveJournal [entries|archive|friends|userinfo]
Image
Dizzy

[ website | Dizzy Tech ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Язык программирования ᛏᛟᚱ [Feb. 26th, 2026|11:08 pm]
Dizzy
[Tags|, , ]

А что? Aда же былa :)

Thor-Programming.png

Кликабельно.
И, да,я знаю, что правильно ᚦᛟᚱ :)
LinkLeave a comment

А ведь это, фактически, про программирование [Feb. 26th, 2026|04:44 pm]
Dizzy
[Tags|, , , , , ]
[Current Music |Jonna Jinton - Vargsången]

«Рун не должен резать
Тот, кто в них не смыслит.
В непонятных знаках
Всякий может сбиться
»

«Сага об Эгиле», Снорри Стурлусон, XIII век

Viking-Proger.png

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

:)
Link1 comment|Leave a comment

LLM.Дыбр [Feb. 18th, 2026|03:21 am]
Dizzy
[Tags|, , ]
[Current Music |LoFi]

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

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

И это бывает очень полезно, особенно, когда "мозги разбегаются" из-за недоопределённости или сложности задачи. Анализ "what-if" с нейросетями тоже часто работает. Ну и просто метод резинового утёнка, только утёнок умеет отвечать :)))

А код я и сам напишу. В текущем проекте дважды использовал gemini и qwen для рефакторинга кода (чужого, кстати), в обоих случаях пришлось обвешать переписанное тестами "было-стало", на разработку которых ушло времени сравнимо с ручным рефакторингом.

P.S. Справедливости ради, аппаратный расчёт CRC32 на ядре A53 через интринсики gemini написала корректно, я не знал нужных вызовов.

P.P.S. Хотелось бы спихнуть на нейросети как раз разработку тестов и документирование кода, но это явная задача со звёздочкой :)
LinkLeave a comment

Work.Дыбр [Feb. 12th, 2026|01:15 am]
Dizzy
[Tags|, , ]

За прошедшую неделю открыл для себя некоторые особенности работы конструкторов сложных классов в C++ 20, научился использовать интринсики для SIMD-вычислений ARM v8 NEON и аппаратного CRC32 на Cortex A53, вспомнил алогритмы работы планировщиков расписаний.

C++.png

Аппаратная crc32 работает раз в 30 быстрее универсальной программной реализации через полином. Команды NEON очень быстро шарашат поиск по линейным массивам. Планировщик позволяет наконец-то сделать нормальную логику работы с приоритетами отправки пакетов без реанимации унаследованной "лапши". Проект стал немного ближе к железу и научился использовать его возможности оптимальнее.
Link2 comments|Leave a comment

То чувство, когда... [Jan. 26th, 2026|07:56 pm]
Dizzy
[Tags|, , ]
[Current Music |Канцлер Ги - Canzone di Azzo]

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

Печалько. Но прорвёмся :)

Spagetti-code.png

(*уходит в глубины*)

P.S. Переслушиваю песни Канцлера про средневековье, очень под настроение. Там, кстати, масса исторических личностей, от Эццелино III и Аццо VIII д'Эсте до Сиджизмондо Малатесты (Волк Римини) и Раймона VII.
LinkLeave a comment

Развлечение выходного дня [Dec. 29th, 2025|03:01 am]
Dizzy
[Tags|, , , ]
[Current Music |LoFi - Unknown Background Music]

По случаю отмены занятия в мотошколе купил себе Ардуинку (ESP32-S3 WROOM N16R8), красивый круглый дисплей 240x240 на GC9A01 и научился это программировать. Основное время в Arduino IDE ушло на подбор параметров настройки и прошивки платы. Методом перебора и общения с нейросетками нашёл верный режим. А потом всё таки заработало :)

1000091402.jpg
...тынц...Collapse )
LinkLeave a comment

Настроение [Nov. 5th, 2025|01:20 am]
Dizzy
[Tags|, , ]
[Current Music |Shadow in Red ]

photo_2025-11-05_01-19-06.jpg

...тынц...Collapse )

Схрумкать пёстрое осеннее яблоко, выпить кофе и написать ещё одну интересную штуку :)
LinkLeave a comment

(no subject) [Nov. 3rd, 2025|10:34 pm]
Dizzy
[Tags|, , ]

Приехала тут реклама курсов с JavaRush:

Страх №2: "А что, если я выберу не тот язык?"

Ты боишься потратить месяцы на JavaScript, чтобы потом понять, что тебе был нужен Python. Или пойти в Java, хотя вся душа лежит к созданию веб-приложений...


Что-что... Выучишь два. Или три. :)

Поколение IT-снежинок, блин.
Link19 comments|Leave a comment

Ну, коллеги, с профессиональным праздником! [Sep. 13th, 2025|12:33 pm]
Dizzy
[Tags|, , ]
[Current Music |Portal: Steel Alive]

programmers-day-2025.png

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

Ну и...Collapse )
LinkLeave a comment

New spices of AI [Jun. 6th, 2025|11:18 pm]
Dizzy
[Tags|, , , ]

Попробовал GigaCode c gitverse.ru в виде плагина к VSCode.

Душераздирающее зрелище


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

Документирование сломалось на примерно 200-й строке и перестало комментировать функции. Ну и на то, что оно там накомментировало, без слёз не взглянешь.

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

В текущем виде - клинически бестолковая штука, до Bito с Copilot-ом и DeepSeek-ом (к которым у меня туча вопросов) этому поделию как пешком до Марса.
Link9 comments|Leave a comment

Люди гибнут за металл, я от этого устал... [Oct. 31st, 2024|12:37 pm]
Dizzy
[Tags|, ]

При переходе с C++ на чистый C приходится смотреть в оба.

В частности, если ты сделал typedef enum, создал функцию с параметром такого типа, а потом при её вызове подставил переменную типа int, то отряд не заметит потери бойца gcc -Wall проглотит это молчком, потому что первое - фактически int, а второе - int явный, чего тут разбираться-то? :)))

Если что, задача была отсекать на уровне компилятора использование в параметрах функций значений от другого enum-а.
Link5 comments|Leave a comment

Work.Дыбр [Jun. 17th, 2024|03:45 pm]
Dizzy
[Tags|, , ]

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

Например, регулярные выражения

:)
Link31 comments|Leave a comment

Не похвальбы ради, а токмо учёта для [Feb. 17th, 2024|01:43 pm]
Dizzy
[Tags|, ]

Посчитал недавно, какими языками программирования я пользуюсь в текущих проектах (как своих, так и унаследованных) в прошлом и этом году, получилось так:

С - прошивки микроконтролллеров
С++ - middleware, серверный софт и утилиты
C# - программы с графическим интерфейсом под Win
Python - прототипирование, утилиты, часть серверного софта
Java - приложения под Android и middleware
Kotlin - приложения под Android
PHP - серверная часть web-приложений
Javascript - браузерная часть web-приложений и часть серверного функционала (nodeJS)

Это не считая bash-скриптинга, языков описания хранимых процедур PL/pgSQL и mySQL, awk/sed и языков разметки HTML/XML.

Так что фраза «активно использую десяток языков» не лишена смысла.

А ещё я сталкивался в той или иной мере на практике с процедурными языками Algol-60, Cobol, Fortran, Basic, Рапира ;), Pascal, Delphi, Ada, Ruby, Rust, Go, Modula-2, R, Oracle PL/SQL, списочным/функциональным LISP, стековым FORTH, предикативным Prolog, разными ассемблерами (IBM 360/370, PDP-11, x86, ARM) и макроязыками, графическими нотациями (BPMN, Дракон, TIBCO), метаязыками (YACC, Bison). Итого плюс-минус 30. Наверняка что-то ещё было. А, точно, ещё был Erlang.

Upd: Ещё универсальный perl и датабазные Dbase/FoxPro, Clarion и Clipper.

Могу считать себя специалистом по формальным языкам :)))

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

Заметил, что после десятка языков программирования освоить новый на уровне логики/синтаксиса - вообще не проблема, больше времени тратишь на изучение библиотек. На восстановление навыков разработки на С++ после более чем десятилетнего перерыва потребовался месяц вместе с освоением boost-а, хотя сам язык со времён С++11 изменился довольно существенно.
Link10 comments|Leave a comment

Work.Дыбр [Dec. 19th, 2023|07:51 pm]
Dizzy
[Tags|, ]

Бывает, что в суете бегущих дней никто не реализовал простую, вроде бы, штуку, и нет ответа на твой вопрос ни в StackOverflow, ни в гугле... :)

Понадобилось намедни нагенерить в постгресе некоторое количество неповторяющихся случайных mac-адресов с первым октетом из нулей.
Настоящий веб-программист :))) написал бы аж целый скрипт с подключением к базе и подстановкой сгенерированных значений в SQL-запросы.

А я не нашёл ничего лучшего, чем соорудить простенькую функцию на Pl/PgSQL. Бонус - она исполняется на стороне сервера и может быть задействована в любом запросе или хранимой функции/процедуре без запуска дополнительных сущностей.

Выглядит так:
...click to open code...Collapse )
Возможно, кому-то пригодится.

P.S. Постояно замечаю, что люди используют СУБД преимущественно как место хранения таблиц, вынося всю логику в приложения. Причём, началось это не вчера (ругался на такой подход ещё в нулевые), но в последние годы тенденция приобрела угрожающие масштабы, вплоть до попыток теоретического обоснования "почему центральная БД с логикой - это плохо" со стороны микросервисников.

Джеффри Ульмана на них нет :)))
Link3 comments|Leave a comment

Тем, кто пророчит замену программистов ботами на ChatGPT-подобных платформах. [Nov. 30th, 2023|04:36 pm]
Dizzy
[Tags|, , ]

Буквально вчера нейросетевой помощник Bito не осилил написать код преобразования текстовых строк вида
name[name_level1][name_level2][.....][name_levelX]=value
в JSON-форму
{"name":{"name_level1":{"name_level2":{.....:{"name_levelX":value}...}}}

При том, что задачка простая и решается даже без рекурсии. Мне было лень возиться (в парсере, всё-таки, не три строки), попробовал попользоваться АI-подсказкой. Не помогло.

Пришлось заморочиться и написать код самому.
Link3 comments|Leave a comment

Work.Дыбр [Nov. 10th, 2023|11:35 am]
Dizzy
[Tags|, ]

Кто полчаса портатил на решение несуществующей проблемы в коде, тот - я :)

На самом деле, это было забавно: наваять 10 строк пошаговой диагностики, чтобы понять, что я дёргаю не тот вызов API, который отлаживал.
Link4 comments|Leave a comment

Нейроложество :) [Apr. 4th, 2023|11:03 pm]
Dizzy
[Tags|, , , ]

Продолжаю развлекаться с "программирующими" нейросетками.

Задал сетке BITO вопрос "write hello world in ..." для всех языков программирования, которые вспомнил сходу.

В основном, получилось правдоподобно: сетка знает С, С++, C#, Ada, Algol-60, Pascal, Oberon, Modula2, PHP, Basic, Fortran, Cobol, Java, Kotlin, Lisp (common и autocad-овский), Rust, Erlang, Go, JS и минимум три ассемблера (IBM-360, PDP-11 и x86).

Видит разницу между python-ом 2 и 3, умеет всякую экзотику вроде Befunge, Brainfuck, Prolog и APL.

Комментирует код и позволяет себе высказываться в стиле «Note: Brainfuck is not recommended for practical use, as it is an esoteric programming language with a limited set of instructions and can be difficult to read and understand»

Знает, как вывести "Hello world" в оракловом PL/SQL, мелкомягком TSQL и консоли mySQL (select 'Hello, world!'; да ;).

Понимает, что CODASYL и REDIS - вообще не языки, а JSON и YAML - не языки программирования.

А вот в ответ на провокационный вопрос "write hello world in gcode" выдала:

G0 X0 Y0 Z0 ; move to home position
G4 P2000 ; pause for 2 seconds
G0 X0 Y0 Z10 ; move tool 10 units above workpiece
M3 S500 ; start spindle at 500 RPM
G1 X10 Y10 F100 ; move tool to position (10,10) at 100 units per minute
G1 X10 Y0 F100 ; move tool to position (10,0) at 100 units per minute
G1 X0 Y0 F100 ; move tool to position (0,0) at 100 units per minute
M5 ; stop spindle
G0 X0 Y0 Z10 ; move tool 10 units above workpiece
M30 ; end of program

... нарисовав вращающейся фрезой в воздухе треугольник :)

В качестве вишенки на торте "write hello world in chinese":

人类:请输出你好世界 (pinyin: qǐng shūchū nǐhǎo shìjiè) - "Человек: пожалуйста, выведите привет, мир", если верить гуглопереводчику.

P.S. Валидность ассемблерного кода не проверял. В остальных случаях иногда порождает правильное обрамление модулей, иногда теряет, но, в целом, выглядит рабоче. Программера, конечно, такое не заменит, но ассистента по синтаксису и библиотекам - вполне.
Link22 comments|Leave a comment

(no subject) [Mar. 13th, 2023|06:55 pm]
Dizzy
[Tags|, , , ]
[Current Music |The Beatles - Let it be]

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

- Мы тут сделали простой способ расшарить данные между приложениями - SharedPreferences

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

- Но мы сделали контент провайдер, он секьюрный, просто вместо двух строк в одном файле пишешь 50 в нескольких, и счастье. Можно даже указать authority, не совпадающее с именем пакета

- Только это несекьюрно, поэтому с 10-й версии андроида authority должно совпадать с именем пакета

- И с 11-й версии андроида вы провайдер даже с правильным именем пакета не увидите, если не напишете в манифесте <queries>

:)
Link21 comments|Leave a comment

Нейросети заменят программистов, говорили они... [Mar. 2nd, 2023|04:28 pm]
Dizzy
[Tags|, , ]

NeuralNetworks.png

Subj :)

Что характерно, оба ответа неправильные. Нейросетка Bito.
Link18 comments|Leave a comment

Рабоче-проектное [Sep. 22nd, 2022|09:45 pm]
Dizzy
[Tags|, ]

One Class to rule them all,
Оne Class to find them,
One Class to bring them all
And in the project bind them

И у меня он таки действительно есть в проекте. Ощущаю себя немного Сауроном :)
Link2 comments|Leave a comment

Конвергенция [Jun. 4th, 2022|02:32 pm]
Dizzy
[Tags|, ]

Из-за разработки нового проекта пошёл восстанавливать плюсовые скиллы, и внезапно узнал, что в С++ 20 ввели механизм форматирования строк из Питона:

auto val = std::format("{:+06d}", 13);

Не прошло 12 лет с момента выхода Python 2.7 и сорока лет с появления C++, и, наконец, разработчикам стандарта надоело ручками выделять буфер для sprintf-а :)
LinkLeave a comment

Ночь, музыка, ветер... [May. 11th, 2022|12:33 am]
Dizzy
[Tags|, , ]
[Current Music |https://www.youtube.com/watch?v=NKN6yZz0qls]

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

Но надо ковать. Ещё чашка кофе, немного кислорода из открытого окна, и впереди только ночь и глубины сети. Пока есть время до утра...
Link3 comments|Leave a comment

Микроархитекторы [Apr. 25th, 2022|01:14 am]
Dizzy
[Tags|, ]

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

Имеем приложение, осуществляющее, по сути, буферизацию и маршрутизацию запросов + опрос адресатов на тему статусов обработки этих запросов. Написано на python3 с asyncio.

Как это сделал бы нормальный архитектор: набор классов для представления данных в БД с методами ORM, интерфейс REST API для приёма запросов, корутина для отправки запросов и корутина для опроса статусов. Структурное построение программы - максимум три модуля + main.

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

В итоге, простое действие "добавим ещё один тип запросов и один тип объектов в БД" выливается в правку кода в 6 местах. В ШЕСТИ разных файлах, раскиданных по дереву. С обязательным прослеживанием и повторением всей логики обработки, разбитой на 100 маленьких медвежат, т.к. вносить в работающую схему костыльные решения, всё-таки, не хочется.

Вот сижу, тихо злюсь и пишу модификацию в таком вот грёбаном стиле. Радует только то, что на горизонте полугода смогу выкинуть этот компонент из системы совсем и сделать всё нормально.
Link2 comments|Leave a comment

Терминологическое [Apr. 14th, 2022|10:47 am]
Dizzy
[Tags|, ]

Подумалось тут, что нерегулируемый пешеходный переход можно назвать безусловным, а регулируемый - условным

:)
Link8 comments|Leave a comment

(no subject) [Apr. 4th, 2022|11:38 pm]
Dizzy
[Tags|, ]

Может и баян, но прекрасно

Sorting_JS.jpg


В конце, правда, ");" не хватает

:)
Link7 comments|Leave a comment

Work.Дыбр [Mar. 31st, 2022|10:22 pm]
Dizzy
[Tags|, , ]

Мы сегодня ВАЩЩЕ молодцы и крутые перцы.
Сдали заказчику MVP-вариант проекта.
Получилось пристойно, и за результат не стыдно совсем.

Programeow.jpg
Link2 comments|Leave a comment

Язычески-доменный дыбр [Aug. 27th, 2021|11:30 am]
Dizzy
[Tags|, , ]
[Current Mood |fun]

Сегодня я узнал, что парагвайский интернет-регистратор не даёт создавать домены второго уровня в TLD .py

Какое расстройство для питонистов всего мира :(

Правда, регистрация доменов третьего уровня *.nеt.py открыта, можно залудить ресурс для проектов, сочетающих в себе .Net и Python :)
Link5 comments|Leave a comment

Дао программиста [Feb. 11th, 2021|03:33 pm]
Dizzy
[Tags|, ]

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

Image
Link2 comments|Leave a comment

(no subject) [Feb. 6th, 2021|01:49 pm]
Dizzy
[Tags|, ]

Я сейчас сделаю очень необычную для себя вещь: похвалю Microsoft за бесплатно распространяемый кросc-платформенный продукт с открытым исходным кодом, который я использую каждый день.

Речь, конечно, о Visual Studio Code.

Несколько последних лет я работал с кодом C/C++, Python, Java и PHP, в основном, в консольных редакторах (joe - это круто! :) и IDE на базе JetBrain-овского IntelliJ (CLion, PyCharm, phpStorm и собственно Android Studio), и на VS Code наткнулся почти случайно, углядев у коллеги непривычный гуй.

Поставил, попробовал. И перетащил в него разработку по двум проектам. Ибо оказалось действительно неплохо :)

VSCode.png

Внутри у средневекового рыцаря VS Code - гитхабовский Node.js-движок Electron, достаточно шустрый в моих задачах, и отжирающий памяти сравнимо с IntelliJ.

Доводы "за":

  • Реальная кросс-платформенность

  • Поддержка хреновой тучи синтаксисов языков и средств сборки-запуска

  • Большой набор community-плагинов

  • Возможность удалённой отладки из коробки

  • Управление докерами

  • Централизованная поддержка тест-сьютов (в частности, pytest-а)

  • Интеграция с гитхабом и Git-ом, поддержка gitflow


Недостатки:

  • Меньшая чем у JetBrain-а вылизанность интерфейса, в особенности в части горячих клавиш

  • Нет линтера, работающего при наборе текста, в частности, привычного pep8. Только командой

  • Большой набор community-плагинов, делающих одно и то же. Разобраться в их качестве и особенностях непросто.

  • Менее удобная, чем в IntelliJ, интеграция с гитом и вообще реализация коммитов-пушей-мерджей

  • Доступность многих команд только через консоль (вроде, гуй делали же)

  • Общая кривоватость поиска референсов

  • Изредка выпадает в осадок при обновлении плагинов


В целом, скорее за.
Link19 comments|Leave a comment

И вечный хайп, покой нам только снится [Apr. 26th, 2020|04:23 am]
Dizzy
[Tags|]

Когда полдня делаешь проект на питоне, а полдня - на С-подобном языке, самая типичная синтаксическая ошибка - отсутствие точки с запятой в конце строки :)
Link5 comments|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Image