Обновить
1047.41

Программирование *

Искусство создания компьютерных программ

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

EasyP – тулбокс для работы с ProtoBuf⁠⁠

easyp – пакетный менеджер, билд-система и линтер для .proto файлов.
Хоть easyp и написан на #go 😱, одна из его фишек в том – что вы можете использовать любые плагины для генерации финального кода: он может быть хоть на #python, хоть на #rust.

Если много используете ProtoBuf – обязательно для ознакомления!

Пример конфигурации:

# Секция для правил линтера:
lint:
  use:
    - DEFAULT

# Секция с зависимостями:
deps:
  - github.com/googleapis/googleapis
  - github.com/grpc-ecosystem/grpc-gateway@v2.20.0

# Секция для правил сборки и генерации итоговых файлов:
generate:
  plugins:
    - name: go
      out: .
      opts:
        paths: source_relative
    - name: go-grpc
      out: .
      opts:
        paths: source_relative
        require_unimplemented_servers: false

Прощайте огромные Makefile с кучей скриптов для сборки.

Проект: https://github.com/easyp-tech/easyp

Документация: https://easyp.tech

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

На сайте «I'm absolutely right!» разработчик выкладывает, сколько раз чат‑бот Claude Code сказал эту фразу каждый день.

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

Мемо: в ожидании Python 3.14

Финальный релиз Python 3.14 запланирован на 7 октября 2025. Уже вышел RC2 (14 августа), а финальный кандидат RC3 ожидается 16 сентября.
Этот пост — краткая шпаргалка, чтобы помнить, какие изменения стоит протестировать и чего ждать в новой версии.

1. Свободная многопоточность (Free-Threaded Python, без GIL)

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

# Включение free-threaded режима при сборке
# ./configure --disable-gil
import threading

def cpu_bound_task(n):
    return sum(i*i for i in range(n))

threads = [threading.Thread(target=cpu_bound_task, args=(10**6,)) for _ in range(4)]
[t.start() for t in threads]
[t.join() for t in threads]

Free-Threaded Python теперь не будет экспериментальным и будет официально поддерживаться, но пока пока будет являться опциональным, по умолчанию остаётся GIL.

2. Отложенная оценка аннотаций типов

Зачем нужно: ускорение работы и избавление от кавычек при forward references. Появился новый модуль annotationlib для работы с аннотациями.

# from __future__ import annotations
import annotationlib

class Node:
    def __init__(self, value: int, next: Node | None = None):
        self.value = value
        self.next = next

print(annotationlib.get_annotations(Node.__init__))

Аннотации больше не обрабатываются при определении функций, классов и модулей. Они сохраняются в специальных функциях аннотирования и обрабатываются при необходимости.
Импорт from future import annotations можно удалить при поддержке Python 3.14 и новее.

3. Template-строки (t-строки)

Зачем нужно: безопасное форматирование строк, полезное для веба и DSL, расширение возможностей f-строк.

name = "<script>alert('xss')</script>"
age = 25

tpl = t"Hello {name}, you are {age}"
safe = tpl.format(name=escape_html(name), age=age)
print(safe)

4. Zstandard-сжатие

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

import compression.zstd

data = b"Large dataset" * 1000
compressed = compression.zstd.compress(data, level=3)
decompressed = compression.zstd.decompress(compressed)

print(f"Ratio: {len(data) / len(compressed):.2f}")

5. Удалённая отладка процессов

Зачем нужно: можно подключать отладчик к работающему приложению без перезапуска и накладных расходов.

import sys
import pdb

# Подключение отладчика к работающему процессу
sys.remote_exec("""
import pdb; pdb.set_trace()
""", target_pid=12345)

# Безопасное выполнение кода в удаленном процессе
result = sys.remote_exec("print('Debug info:', some_variable)", target_pid=12345)

6. Экспериментальный JIT-компилятор

Зачем нужно: ускорение выполнения вычислительно интенсивных задач.

# Включается флагом при запуске
# python --jit script.py

def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

# JIT автоматически оптимизирует "горячие" функции
result = fibonacci(35)  # Заметно быстрее с JIT

7. REPL с подсветкой синтаксиса

Зачем нужно: удобнее писать и отлаживать код прямо в интерактивной оболочке.

>>> def hello(name: str) -> str:
...     return f"Hello, {name}!"
>>> hello("World")
'Hello, World!'

Что стоит попробовать?

  1. Потестировать free-threaded режим на CPU-нагруженных задачах.

  2. Перейти на новый синтаксис аннотаций без кавычек.

  3. Проверить t-строки в веб-шаблонах и DSL.

  4. Протестировать zstd для больших массивов данных.

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

Подробнее на python.org: What’s new in Python 3.14

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

Подборка обучающих материалов по языкам программирования от Selectel: Go, Python и JavaScript

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

Go

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

Python

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

JavaScript

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

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

Microsoft представила открытый исходный код интерпретатора BASIC для восьмиразрядных микропроцессоров MOS Technology 6502, разработанный в 1975 году. Опубликованная в открытом виде версия BASIC устанавливалась в ПЗУ размером 8 КБ и поддерживала работу на системах Apple II, Commodore PET, Ohio Scientific, MOS KIM-1с и симуляторе PDP-10. Код включает 6955 строк на ассемблере и открыт под лицензией MIT. Последнее изменение датировано 28 июлем 1978 года.

Код BASIC для 6502 может представлять интерес для любителей ретрокомпьютеров, использующих эмуляторы и реализации на базе FPGA. Среди прочего, компания Commodore анонсировала модель Commodore 64 ULTIMATE на базе FPGA, начало продаж которого намечено на октябрь. В Commodore 64 ULTIMATE заявлена совместимость с более чем 10 тысячами ретро игр при таких возможностях, как передача игр по Wi‑Fi, поддержка USB и режим ускорения для запуска новых игр.

2 апреля 2025 года Билл Гейтс в честь 50-летия Microsoft в своём блоге Gates Notes представил исходный код Altair BASIC (более 7 тыс. строк с комментариями), который он написал в соавторстве с Полом Алленом. Гейтс назвал этот проект «самым крутым кодом», который он когда‑либо писал, и символом скромного начала компании. В 1976 году Билл Гейтс и Рик Вейланд подготовили порт Altair BASIC для микропроцессоров 6502, который был лицензирован компанией Commodore и поставлялся как Commodore BASIC в компьютерах Commodore PET, VIC-20 и Commodore 64.

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

Продакшен, производственная среда или...

Подскажите, пожалуйста, какой термин вам понятнее:

  • продакшен,

  • "боевой" сервер,

  • производственная среда,

  • производственное окружение,

  • промышленная среда,

  • промышленное окружение,

  • live сервер,

  • prod,

  • production,

  • PROD.

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

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

Мы на Let's Go Conf: расскажем, как приручали старый Gateway, и слетаем в космос

В этом году компания МойОфис стала партнёром конференции для Go-разработчиков Let’s GoConf, которая пройдёт 12 сентября в Москве в лофте «Пространство Весна».

В одном из треков выступит Герман Кравец, техлид модуля Календарь почтового сервиса Mailion. В своём докладе он расскажет о том, как команда Mailion работала с «наследием». Представьте: старый Gateway, застрявший на Go 1.19, сложный в поддержке, с самописными генераторами и C++-зависимостями, а конфигурации напоминают древние свитки... Герман поделится тем, как команда справилась с такими вызовами и как изменилась архитектура продукта.

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

Ждём вас на Let’s Go Conf!

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

Если вы сталкиваетесь с задачами оптимизации, но существующие материалы не дают системного понимания — курс «Java Advanced II: высокопроизводительная Java» (JVA-076) для вас. Никакой воды — только лабораторные с разбором реальных инцидентов.

9 сентября на бесплатном вебинаре «Производительность Java под нагрузкой: заглянем под капот» мы детально разберем содержание курса:

➕ Инструменты: JMeter, JMH, JFR, JITWatch — не просто обзор, а решение задач.

➕ JVM: тюнинг GC, анализ JIT, управление флагами.

➕ Hardcore: off-heap память через Unsafe, свои структуры данных.

➕ Архитектура: кэширование и анализ производительности.

Курс для вас, если вы хотите:

✔️ Осознанно подходить к тюнингу JVM.

✔️ Быстро находить и устранять утечки памяти и узкие места

✔️ Принимать архитектурные решения, зная их цену в производительности

✔️ Говорить с эксплуатацией на языке метрик

А вебинар позволит оценить  практическую ценность курса перед принятием решения об обучении.

Дата: 9 сентября

Время: 18:00-19:00 (Мск)

➡️ Регистрация

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

«СберТех», Cloud.ru и Хабр заколлабились и запустили грантовую программу «Код без границ». Это отличная мотивация для разработчиков и ресурсы для проектов. Можно доработать свой проект с поддержкой сообщества, найти единомышленников и показать свои возможности.

Участвовать просто:

  • разместить свой проект на GitVerse (СберТех) или импортировать его с другой площадки.

  • делится кодом и вдохновляться чужими разработками.

Номинации следующие: ИИ‑инновации, «Наука и образование», «Проекты для всех», «Разработка для разработчиков».

Заявки на грантовую программу «Код без границ» принимаются с 3 сентября по 31 октября. Отбор проведут в ноябре, а результаты огласят в декабре.

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

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

Какие способы навигации удобнее табов? Будем использовать cmd+p для Command Pallete, cmd+d для Open Recent, alt+<right> и alt+<left> для навигации по позициям курсора в разных файлах.

Конфиг выпуска:

{
  "workbench.editor.showTabs": "single",
  "workbench.editor.showIcons": false,
  "workbench.editor.labelFormat": "medium",
  "breadcrumbs.enabled": false,
}

Горячие клавиши:

{
  {
      "key": "alt+left",
      "command": "workbench.action.navigateBack"
  },
  {
      "key": "ctrl+-",
      "command": "-workbench.action.navigateBack"
  },
  {
      "key": "alt+right",
      "command": "workbench.action.navigateForward"
  },
  {
      "key": "ctrl+shift+-",
      "command": "-workbench.action.navigateForward"
  },
  {
      "key": "cmd+d",
      "command": "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
      "when": "!activeEditorGroupEmpty"
  },
  {
      "key": "ctrl+tab",
      "command": "-workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
      "when": "!activeEditorGroupEmpty"
  },
}

Полный конфиг: https://github.com/sobolevn/dotfiles

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

Представлен открытый репозиторий «The Little Book of Linear Algebra», где опубликовано введение в основные понятия линейной алгебры, причём кратко и понятно для начинающих.

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

Проект Student's Guide to Software Engineering Tools & Techniques (SE‑EDU) — это база по программированию и компьютерным наукам специально для студентов — можно изучить огромный пласт дисциплин с полного нуля, включая:

• языки программирования: С++, С#, Rust, Haskell, Java, Go, JS, Swift, Python.
• архитектура и дизайн кода, паттерны проектирования, документирование, функциональное программирование, контроль версий, тестирование, UX/UI — базу для создания качественного, мощного и стабильного ПО.
• популярные фреймворки: Spring, Vue, Node, React, Xamarin.
• полезные инструменты и приёмы для разработки программ: регулярные выражения в разных языках программирования, Docker, ZeroMQ и Dotfiles.
• дополнительно позволяет изучить ML, компьютерное зрение, многопоточность, обработку естественного языка и SQL.

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

25 бесплатных урока недели

2 сентября, вторник:

3 сентября, среда:

4 сентября, четверг:

8 сентября, понедельник:

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

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

В открытом репозитории «A to Z Resources for Students» представлены ресурсы для обучения Python, PHP, Ruby, C++, C#, Machine Learning и нейросетями, а также всё про разработку на Android и много материалов про Frontend и Backend.

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

Как правильно откатывать миграции? Если коротко, то никак.

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

Ролбек, в идеале, это просто переключение с одной версии кода на другую. Но ведь тогда возможны ошибки связанные с изменениями в базе? Если делать через жопу, то возможны. При правильном подходе, база всегда обратно совместима как минимум на одну версию. Только в этом случае мы можем обеспечить и бесшовный деплой (zero downtime deploy) и практически моментальный откат.

А это значит, что нельзя менять тип у колонок (если тип сужается), нельзя менять именования таблиц и полей. Если это все таки нужно, то существует немало техник, позволяющих сделать переход через создание новых сущностей и синхронизацией либо через код либо через саму базу (например с помощью триггеров). По этой теме даже написали целую книгу "Refactoring Databases: Evolutionary Database Design".

Получается, что любые ошибки в базе будут только накапливаться? Не совсем. Обратная совместимость обычно нужна только на текущую и следующую версию. Если у нас не коробка, а облачное решение, то одновременно могут работать только две версии. В таком случае, мы без проблем можем писать любые миграции, которые удаляют и меняют все что угодно, что уже не используется. Заметьте, это не откат, а новые миграции.

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

Больше про разработку в моем телеграм-канале организованное программирование

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

На днях посмотрел два видео по рынку ИТ, в том числе с фокусом на российский сегмент (раз и два).

За завесой рассказов про ИИ, vibe coding, T-shape, динамику Восточной Европы и прочим анализом в тени остался, на мой взгляд, самый важный вопрос, на который можно ответить "да" или "нет". 

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

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

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

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

Они могут дать вам только полезные знакомства, и вы обойдете сам процесс найма.

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

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

А как думаете вы?

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

Cursor теперь помогает составлять User Rules

В Cursor буквально сегодня увидел новую опцию. А именно: когда с ним работаешь по проекту и по ходу как-то его поправляешь, то внизу слева выскакивает пимпочка и предлагает занести такие вещи в User Rules.

Очень даже удобно. Не надо самому отдельно все записывать, а потом переносить.

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

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

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

Обновлён репозиторий System Prompts Leaks с гайдами для большинства современных нейронок от Anthropic, Google, OpenAI, Perplexity, xAI до других топовых разработчиков, включая базу по всем моделям — как их обучали, что под капотом, бенчи, пределы возможностей и правила, по которым ИИ размышляет, а также лайфхаки, как обойти ограничения, цензуру и тормоза, пошаговые инструкции о том, как создать свою нейронку под конкретные задачи и сэкономить десятки рабочих часов на рутине.

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

Список инструментов low-code/no-code разработки и вайбкодинга для диплома

Всем привет. Я учусь в магистратуре ИТ-юрист и планирую писать диплом с рабочей темой "Правовые основы low-code/no-code разработки и вайбкодинга". Прошу накидать инструментов для анализа )

Основная цель работы простым языком - понять, если я разрабатываю продукт с использованием сервисов low-code/no-code (или ИИ-агентов в случае вайбкодинга), могу ли я его считать полностью своим или нет.

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

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

  • Разработка сайтов: tilda, wix, carrd, Collabza (личные кабинеты), Webflow, Craftum, Flexbe, Creatium, LPgenerator

  • Автоматизация бизнес-процессов: битрикс24 (роботы), NBT, BPMSoft, ROBIN (российские решения), zapier, albato, Бипиум, Nodul, APInita

  • Разработка приложений: bubble, glide, appmaster, adalo, appsfera, Stacker, QuintaDB, Directual, Bravo Studio, Thunkable, Voiceflow

  • Вайб-кодинг: Cursor, Windsurf, Replit, Devin, Claude Code, Cline, GigaStudio (рус)

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

Вклад авторов