Обновить

Разработка

Сначала показывать
Порог рейтинга

«Vibe code cleanup specialist» — теперь так называют себя разработчики, готовые за дополнительную плату исправить весь тот код, который сгенерировали нейросети.

Теги:
Всего голосов 6: ↑6 и ↓0+7
Комментарии1

FFTW vs Ne10 на ARM Cortex-A9: кому отдать БПФ в embedded?

Недавно в одном проекте по спектральному анализу ЛЧМ-сигналов на моей AD/DA плате я столкнулся с тем, что FFTW на Cortex-A9 в Zynq рисует задержку в сотни микросекунд — критично для реального времени. Решил проверить лёгкую библиотеку Ne10: оказалось, что на средних размерах БПФ (128–512) Ne10 даёт до +10% производительности (905 MFLOPS против 817 MFLOPS у FFTW) благодаря оптимизациям под NEON.

График производительности FFTW vs Ne10 на Cortex-A9
График производительности FFTW vs Ne10 на Cortex-A9

Однако Ne10 выигрывает не во всём: для очень малых (≤ 64) и произвольных больших размеров FFTW остаётся лидером за счёт агрессивного планирования, double-точности и возможности сохранять «wisdom»-планы. Выбор между ними зависит от сценария: если нужна быстрая интеграция и фиксированные степени двойки — Ne10, а для универсального решения с поддержкой любых N и многопоточности — FFTW.

Более подробное описание соберу в статью. А какой библиотекой пользуетесь вы и какие удивительные кейсы встречали? Делитесь в комментариях, а в моём Telegram-канале DSP_labs вас ждут полные бенчмарки, скрипты и ещё больше примеров оптимизации DSP на embedded.

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии2

Интеграция VXLAN в архитектуру LBaaS: наш опыт и решения — тема доклада на IT-конференции GoCloud Tech 2025 ☁️

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

Трек: Cloud Infrastructure — про построение устойчивой, масштабируемой и безопасной облачной инфраструктуры.

📅 Когда: 3 сентября в 12:00 мск

👉 Зарегистрироваться

Что еще интересного будет на GoCloud Tech, смотрите в программе конференции.

Теги:
Рейтинг0
Комментарии0

Квиз: насколько хорошо вы владеете Podman

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

Пройти квиз

Не забудьте поделиться результатами в комментариях!

Теги:
Всего голосов 7: ↑7 и ↓0+11
Комментарии0

Почему ваша архитектура ломается? Спросите у того, кто чинил десятки таких систем!

04.09.2025 в 15:00 (Мск) приглашаем на первую открытую AMA-сессию «Спроси меня о чем угодно» с Дмитрием Овчаренко — техническим директором департамента «Разработка для финансового сектора» IBS и экспертом Учебного центра IBS по архитектуре ПО.

Что вас ждёт (и почему это не обычный вебинар):

✔️ Без воды — только честные ответы на ваши вопросы (даже на те, о которых стыдно спросить).

✔️ Разбор реальных косяков — как ломались системы и что с этим делали.

✔️ Карьерный лифт — что нужно, чтобы перейти из разработчика в архитекторы?

А еще конкурс: 

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

Кому полезно?

➕ Разработчикам, которые хотят расти до архитекторов.

➕ Аналитикам, уставшим от абстрактных советов.

➕ Всем, кому интересно, как устроена «кухня» fintech.

➡️ Зарегистрироваться ⬅️

P.S. Такого у нас еще не было — будет жарко! 🔥

Теги:
Рейтинг0
Комментарии0

Вышел Statsviz 0.7.0- визуализатор работы Golang программы в реальном времени.

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

GitHub: https://github.com/arl/statsviz

ChangeLog: https://github.com/arl/statsviz/blob/main/CHANGELOG.md

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

По определенным обстоятельствам я не могу тупо дропать звонки от неизвестных. Но скаммерсанты достают. Что делать ? Все очень просто:

1) подождать пока отзвонит. 2 сек на звонок - тоже нехороший признак но не 100%.

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

2) номер телефона из пропущенных копипастом в ватсапп "+ создать новый контакт". если "этот номер телефона не зарегистрирован ... пригласить" то пошли они. в телеграме то же самое.

3) если мессенджер взял контакт, то стандартно: "Здравствуйте, от вас один пропущенный", если в ответ скам то бан и жалоба.

ps: мошонники и скаммерсанты, а также честные колл-центры ! не стесняйтесь регистрировать мессенджеры wa/tg на свои 1разовые sim-карты. вас ждет много удивительных приключений.

Теги:
Всего голосов 4: ↑0 и ↓4-4
Комментарии9

С момента запуска на платформе Lichess ИИ-бот Allie уже сыграл свыше 11 300 партий, из которых выиграл более 6 600. Бот доступен всем желающим, причём абсолютно бесплатно и с открытым исходным кодом. Попробовать его можно только в режиме блица, а также наблюдать за его партиями в реальном времени.

Шахматного бота Allie создал аспирант Карнеги-Меллона Йимин Чжан. В отличие от классических движков, Allie обучался не на просчётах позиций, а на 91 миллионе партий, сыгранных людьми. Поэтому его стиль максимально приближен к человеческому: он нападает, защищается и даже «задумывается» в критических моментах. Исследователи отмечают, что Allie демонстрирует уровень игры гроссмейстера, особенно в партиях против сильных соперников. Но главное — играть против него полезно: его ходы понятны, и обучение становится «естественным».

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Пройдите опрос и получите подарки от Selectel

Мы развиваем в Академии Selectel Security Center — спецпроект по информационной безопасности. Чтобы сделать его еще полезнее, нам важно знать, какие темы вам интересны.

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

С нас — подарки

15–21 сентября среди всех, кто поделится мнением, разыграем подарки:

— 10 сертификатов в крупный маркетплейс,

— 5 плюшевых Тирексов.

Пройти опрос ➡️

Теги:
Всего голосов 5: ↑5 и ↓0+9
Комментарии0

Делимся расписанием бесплатных вебинаров на следующую неделю:

🎬 19 августа в 16:00 (Мск) «Как ускорить работу с данными в 3 раза? Основы ДБТ за час» вебинар про DBT, его возможности, принципы работы и способы с его помощью сделать свою деятельность эффективнее.

🎬 21 августа в 16:00 (Мск) «От идеи до продакшена: какой Kafka-клиент упростит вам жизнь?» — практический вебинар: какие высокоуровневые клиенты Kafka выбрать для Spring Boot, .NET и NestJS. Разберём ключевые отличия, реальные примеры использования и лучшие практики.

🎬 22 августа в 18:00 (Мск) «Как LDA и ARTM могут изменить подход к анализу текстовых данных» — вебинар по тематическому моделированию с LDA и ARTM, примеры на Python и практические кейсы.

Увидимся на вебинарах!

Теги:
Рейтинг0
Комментарии0

Давно у нас не было игрушек на $mol...

Встречайте Гипер Шары! - ремейк классической игры Color Lines!

Не смотря на простые правила, она имеет не только тактическую, но и стратегическую глубину, что объясняет её залипательность и более 9000 клонов.

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

Ставьте её на домашний экран, и в минуты скуки помогайте этим разноцветным милашкам находить друг друга.

Теги:
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Новая версия Gramax!

Приглашаем вас протестировать экспериментальные функции:

  • 💡  Статический сайт в облаке Gramax. Можно опубликовать свою документацию буквально за пару кликов, для этого не нужен сервер или хостинг. Достаточно нажать «Опубликовать в облако» и войти в почтовый аккаунт.

  • 💡  Фильтр по содержимому. В каталоге можно создавать статьи и абзацы для разных сборок. На портале для чтения они будут фильтроваться с помощью переключателя. 

  • 💡  Браузерная версия на мобильном. Браузерную версию Gramax можно использовать на мобильном телефоне. Доступны все действия, как при работе на компьютере.

А также:

  • 📌  Новая главная страница. Улучшили внешний вид главной страницы. Добавили возможность создавать вложенные группы.

  • 📌 Транскрипция речи с помощью ИИ. Если в пространстве включены ИИ-функции, редактор может автоматически транскрибировать аудиозаписи в текст.

  • 📌 Просмотр изменений после синхронизации. После синхронизации автоматически открывается окно сравнения ревизий: сравнивается новая версия каталога с версией до синхронизации.

Об этих и других изменениях читайте в Release Notes 🔥

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Жёсткая структура React-компонентов

При работе над React-приложениями я часто сталкиваюсь с тем, что мои коллеги смешивают в одном файле и JSX, и CSS-in-JS стили, и логику, и типы компонента. Работать с таким месивом очень сложно. Даже если настаивать на выделении логики, стилей и типов в отдельные файлы, это то делается, то нет. Для введения жёсткой структуры компонентов мною была написана простейшая библиотека react-component-structure.

https://github.com/sergeyshpadyrev/react-component-structure

Работает она простейшим образом. Любой компонент необходимо разделить на три хука и файл с типами:

-| Component
    -| index.ts
    -| logic.ts
    -| render.tsx
    -| style.ts
    -| types.ts

В файле logic.ts мы пишем хук useLogic - контроллер компонента, включающий в себя всю его бизнес-логику - все хуки useCallback, useEffect, useMemo и подобные. В этом хуке у нас есть доступ к props компонента.

import { useCallback, useState } from 'react';
import type { Props } from './types';

const useLogic = (props: Props) => {
    const [count, setCount] = useState(props.defaultCount);

    const onClickMinus = useCallback(() => setCount((c) => c - 1), []);
    const onClickPlus = useCallback(() => setCount((c) => c + 1), []);

    return {
        count,
        onClickMinus,
        onClickPlus,
    };
};

export default useLogic;

В файле styles.ts мы помещаем хук useStyle со стилями нашего компонента. Тут мы можем использовать inline-стили, CSS-in-JS или Tailwind. В этом хуке у нас есть доступ к props нашего компонента и к его контроллеру.

import type { Props } from './types';
import useLogic from './logic';
import { useMemo } from 'react';

const useStyle = (props: Props, logic: ReturnType<typeof useLogic>) =>
    useMemo(
        () => ({
            counter: {
                fontSize: logic.count + 10,
            },
            title: {
                color: props.color,
            },
        }),
        [logic.count, props.color],
    );

export default useStyle;

В файле render.tsx мы помещаем хук useRender с JSX, то бишь отображение компонента. В этом хуке у нас есть доступ и к props компонента, и к его контроллеру logic, и к стилям.

import type { Props } from './types';
import type useLogic from './logic';
import type useStyle from './style';

const useRender = (props: Props, logic: ReturnType<typeof useLogic>, style: ReturnType<typeof useStyle>) => {
    return (
        <div>
            <div style={style.title}>Hello {props.greeting}!</div>
            <div style={style.counter}>Count: {logic.count}</div>
            <div onClick={logic.onClickMinus}>Decrease</div>
            <div onClick={logic.onClickPlus}>Increase</div>
        </div>
    );
};

export default useRender;

В index.ts файле мы соединяем все три хука с помощью функции createComponent:

import { createComponent } from 'react-component-structure';

import useLogic from './logic';
import useRender from './render';
import useStyle from './style';

const Component = createComponent({ useLogic, useRender, useStyle });

export default Component;

И в файле types.ts мы объявляем тип для props компонента:

export interface Props {
    color: string;
    defaultCount: number;
    greeting: string;
}

Если у компонента нет props, то можно объявить их так:

export type Props = unknown

При использовании каждый компонент нашего приложения имеет чёткую структуру, состоящую из файлов контроллера, отображения, стилей и типов. Это разделение подобно разделению на HTML (отображение), CSS (стили) и JavaScript (контроллер) в ванильных JS-приложениях.

Если подход и библиотека вам понравились, поставьте репозиторию звезду на гитхабе. Надеюсь этот подход будет вам полезен.

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии12

Ближайшие события

Просмотр кода в интерфейсе Amvera Cloud

Мы сделали возможность просмотра содержимого файлов репозитория в интерфейсе.

Раньше было сложно понять, какая версия файла загружена в облако. 

Теперь можно зайти в файл в разделе Репозиторий и посмотреть его содержимое.

Amvera – облако для простого запуска проектов со встроенным CI/CD (деплой идёт через Git или загрузку файлов в интерфейсе). C Amvera вам не нужно думать о настройке NGINX, виртуальных машин и другой инфраструктуры.

Теги:
Рейтинг0
Комментарии0

Qwen и "неподобающий контент" - сообщения, которые ломают чат

Наверняка не я один сталкивался при работе с Qwen, что в ответ на самое безобидное сообщение пользователя, вдруг выскакивает системное сообщение вместо ответа:

Упс! Возникла проблема подключения к Qwen2.5-Max. Предупреждение о безопасности контента: выходные данные текст могут содержать неподобающий контент!"

Выхода нет. Такие сообщения сыпятся на каждую вашу попытку что-то ввести в чат. Особенно обидно, когда чат длинный, контекст хорошо проработан и это заняло много времени. До жути обидно все терять и начинать сначала. Есть разные предложения, например, выгружать чат в JSON, вручную стирать там последнюю группу сообщений до возникновения этой ошибки и загружать исправленный JSON обратно в Qwen в новый чат. Так себе занятие, я считаю. Но если выхода простого нет, можно попробовать.

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

Тогда я спросил "как вернуться обратно в нормальный чат?" Ответ: "никак. но мы можем продолжить здесь". Я спросил, что он помнит из предыдущих 5 сообщений нормального чата - помнит все! И мы продолжили решать настоящую нужную мне задачу находясь в режиме веб-разработки, но именно так, как в обычном чате.

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

Спасибо, что прочитали.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

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

На вопрос о том, не чересчур ли много энтузиазма инвесторы проявляют к технологии, Альтман ответил: «По моему мнению, да».

Гендиректор OpenAI сравнил реакцию рынка на ИИ с пузырём доткомов в 1990-х, который лопнул в 2000 году и привёл к краху интернет‑стартапов с раздутыми оценками. «Когда образуются пузыри, умные люди становятся крайне эмоциональны из‑за крупицы правды. Если посмотреть на большинство пузырей прошлого, например технологический пузырь, у него была реальная основа. Технологии действительно были важны. Интернет был настоящим прорывом. Люди стали слишком эмоциональны», — отметил Альтман.

Глава OpenAI считает «безумным» то, что некоторые ИИ‑стартапы «с тремя людьми и одной идеей» получают финансирование при баснословных оценках. «Это не рациональное поведение. Думаю, кто‑то обожжётся», — сказал глава OpenAI.

За последний год стартапы нескольких экс‑топов OpenAI — Safe Superintelligence Ильи Суцкевера и Thinking Machines Миры Мурати — получили миллиарды долларов инвестиций. «Кто‑то потеряет феноменальные суммы денег. Мы не знаем, кто это будет, но многие люди заработают феноменальное количество денег. Могу ошибаться, но мне кажется, что в целом экономика от этого сильно выиграет», — сказал Альтман. Он уверен, что OpenAI в любом случае переживёт пузырь.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Unit-тесты во фронтенде: развеиваем мифы

После статьи о навыках джуниоров многие не согласились с моей оценкой unit-тестов. Давайте посмотрим, где они действительно полезны, а где создают иллюзию ценности.

Если вы начинающий разработчик, вас наверняка убеждали:
«Без unit-тестов никуда! Всё должно быть покрыто тестами!»
Но так ли это на самом деле?

Где unit-тесты полезны:

  • Бизнес-логика и утилиты (форматирование данных, расчёты)

  • Кастомные хуки (управление состоянием, формы)

  • Критичные функции (редкий зверь во фронтенде)

Где они бесполезны (и даже вредны):

  • UI-компоненты (скриншотные тесты часто ломаются из-за изменений вёрстки)

  • API с моками (моки не показывают реальное поведение сервера)

  • Тестирование библиотек (проверяете чужой код)

Что использовать вместо?

  1. Интеграционные тесты — проверяют реальные сценарии

  2. Zod для валидации API — предотвращает ошибки из-за неожиданных данных

  3. Ручные проверки — быстрее и точнее, чем скриншотные тесты

Для джуниора unit-тесты — не приоритет. Важнее:

  • Глубокое изучение фреймворка

  • Умение работать с API

  • Навык чтения и отладки кода

Не стоит тратить время на «тесты ради тестов». Сосредоточьтесь на том, что действительно поможет в работе.

Теги:
Рейтинг0
Комментарии0

Переход 1С на PostgreSQL и прогнозы до 2031 года

Ни для кого не секрет, что клиент‑серверный вариант 1С изначально затачивался под MS SQL. Вспоминаю год 2017-й и точно помню, что в тот момент Postgres ставили в основном те компании, которые хотели сэкономить. Плевались, но использовали. Чуть более или менее серьезная нагрузка — и всё.

Помню, как мы для «Управления IT‑отделом 8» написали расчет SLA по графикам техподдержки. На файловой базе и в MS SQL все работало прекрасно. Выпустили обновление, но один клиент на Postgres начал жаловаться. Долго выясняли, в чем дело. В конечном итоге я подключился к нему на тестовый сервер, прошелся отладчиком и… бинго! Действительно наша ошибка: не указали сортировку в одном из вложенных запросов. На файловой и на MS SQL такой запрос, повторю, работал отлично. Postgres в этом деле оказался строже — сказано в документации, что выборка не гарантирует порядок? Будьте добры предусмотрите это.

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

Если коротко, то вот главные грабли, на которые наступают при миграции 1С на PostgreSQL:

Проблема № 1: Деградация производительности. Миграция «в лоб» почти всегда приводит к проблемам с блокировками и работой планировщика запросов. Приходится переписывать код и оптимизировать его под PostgreSQL. Возможно, даже менять что‑то в самой платформе.

Проблема № 2: Кадры. Найти опытного DBA по Postgres, который глубоко понимает специфику 1С, значительно сложнее и дороже. С MS SQL всё было проще: установил, клик, клик — готово. Даже без тонких настроек многое работало «из коробки».

Ну и самое главное: миграция — это не просто смена СУБД. Это полноценный проект, требующий тестирования, переписывания узких мест в коде и, возможно, обучения команды. Экономия на лицензиях может быть полностью съедена затратами на внедрение и поддержку (да и не сказал бы, что тот же Postgres Pro дешевый).

А теперь о том, почему этот разговор вообще имеет смысл.

Раньше мы всегда советовали клиентам MS SQL как надежную и проверенную СУБД. Да, в 2015-м появился платный Postgres Pro, но, честно сказать, мы его всерьез не рассматривали. Зачем, если есть деньги на проверенный MS SQL? А если хотелось сэкономить — был бесплатный Postgres со всеми его тогдашними особенностями.

Но потом пришел 2022-й год, санкции вендоров и постепенная миграция стала трендом. А сейчас это уже не вопрос выбора, а вопрос времени.

Это не просто ощущения, это подтверждают цифры из исследования ЦСР.

Уже в 2024 году на новые продажи зарубежного ПО пришлось всего ~10% рынка. Прогноз до 2031 года следующий: российские решения для работы с базами данных могут занять до 99% новых продаж (!) Процесс импортозамещения будет идти, а если мы берем 1С, то тут в выигрыше PostgreSQL/Postgres Pro. Причины понятны: уход западных вендоров, требования регуляторов и развитие отечественных продуктов.

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

У меня вопрос. Планируете переход на PostgreSQL или, как и мы, пока живете на старом софте?

‑-

Понравилась эта аналитика? В моем блоге Код ИТ‑директора я гораздо чаще делюсь мыслями, короткими кейсами и полезными инструментами, которые не всегда доходят до формата большой статьи.

Теги:
Всего голосов 3: ↑1 и ↓2-1
Комментарии2

Вебинар "От кода до запуска: российский стек для Java — Axiom JDK и OpenIDE"

Приглашаем на вебинар, посвященный безопасному стеку базовых технологий для разработки и исполнения Java-приложений и безопасной среде разработке OpenIDE. Вы поймете, что такое OpenIDE, как это всё относится к Intellij IDEA, зачем OpenIDE бизнесу и какие у проекта OpenIDE планы на будущее.

Кому будет полезен вебинар:
• тимлидам
• разработчикам
• DevOps

Вебинар проведут:
• Дмитрий Сапожников, технологический консультант Axiom JDK
• Илья Сазонов, директор по продуктам Axiom JDK, направления Spring и OpenIDE

Когда: 21 августа 2025 г.

Во сколько: 11:00–12:30 по мск

Формат: Онлайн

Участие: Бесплатное (нужно предварительно зарегистрироваться)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Прошиваем CH32V003 с помощью платы Arduino

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

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

В проекте ch32fun есть программа minichlink, так вот она умеет прошивать WCH микроконтроллеры с помощью разных программаторов, например, b003boot, ardulink, esp32s2chfun. Нас интересует программатор ardulink.

Код программатора Ardulink можно взять из arduino-ch32v003-swio. На гитхабе есть обертка его для PlatformIO, кому как удобнее. Он написан под atmega328p, поэтому спокойно запускается на Arduino Nano. Подсоединяем провод от D8 (PB0) ножки Ардуино к SWIO (например, восьмая ножка у CH32V003J4M6), питание к питанию, земля к земле. Всего 3 провода. (Ножку D9 (PB1) так и не понял к чему подключать, но про нее есть в Readme.)

Дальше выполняем команды:

minichlink.exe -c COM3 -i этой командой можно проверить определяется ли микроконтроллер, где COM3 номер порта платы Ардуино, которую используем как программатор.

minichlink.exe -c COM3 -w .\firmware.bin flash -b а этой командой можно залить файл прошивки, где firmware.bin сам файл.

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0