Все потоки
Поиск
Написать публикацию
Обновить
1019.49

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

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

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

Как научиться программировать лучше

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

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

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

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

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

Мой личный топ того, что учит писать грамотный код на высокоуровневых языках, где мы фокусируемся на создании правильных абстракций это SICP/HTDP + попрактиковаться в написании кода на одном из популярных функциональных языков.

За мою довольно длительную карьеру, самый большой сдвиг произошел именно в тот момент, когда от изучения фаулеров, мартинов и банд я взялся за более серьезный фундамент. Было это году в 2013, с тех пор, что бы я не изучал, оно накладывается и дополняет, а не переворачивает мой мир внутри, как было 5 лет до того. Тогда, в первые годы моего программированияб каждый раз смотришь на свой код или читаешь что-то и думаешь, блин, надо проектировать по другому.

И это не только мое наблюдение, почти все ребята с кем мы тогда активно тусили в разных комьюнити, пересекались на конфах и дружили, в целом отмечали как фп (в частности clojure, haskell, ocaml, erlang) значительно сдвигали понимание программирования.

Почему это так? А потому что в остатке мы упираемся в побочные эффекты, барьеры абстракции (тут сикп) и грамотное управление состоянием. Вот такие пироги

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

Теги:
+6
Комментарии2

Российская компания Selectel, развивающая Linux-дистрибутив Selectel OS на пакетной базе Debian, представила инициативу OpenFix, в рамках которой начнёт выплачивать энтузиастам денежные вознаграждения за участие в работе над задачами, связанными с развитием и исправлением ошибок в открытом ПО. Код выполненных проектов будет публиковаться под пермиссивной лицензией с сохранением авторства участников.

Вознаграждения назначается индивидуально и выплачивание после принятия изменения в Debian или Ubuntu и закрытия сообщения об ошибке.

Предложено три направления деятельности, выполнение задач в которых Selectel готов оплачивать:

  • переписывание известных открытых проектов на язык Rust. В настоящее время доступны три задачи, связанные с переписыванием с языка С на Rust кода проектов xz, c‑ares и libxml2 c сохранением поведения оригинала.

  • вознаграждение за переписывание библиотек libxml2 и c‑ares и определено в 350 тысяч рублей, а библиотеки xz в 200 тысяч рублей, но в случае xz указано, что достаточно переписать критические части библиотечных обвязок и связать с существующей Си‑реализацией алгоритма LZMA.

  • формирование и последующее сопровождение (подготовка обновлений) пакетов для Debian GNU/Linux. Приложения для которых предлагается создать deb‑пакеты (c опциональным продвижением созданного пакета в Debian Unstable): apache‑pulsar, bash‑it, bazel, bitwarden‑cli, composefs, cve‑bin‑tools, doh‑cli, dupd, dyff, firecracker, griddb, jailhouse, keycloak, oauth2-proxy, phoronix‑testsuite, photodedupe, purritobin, shh, skim, sssh‑tpm‑agent, uv, vaultwarden. Размер вознаграждения от 30 до 160 тысяч рублей. Премии меньше 50 тысяч рублей определены для uv, dyff, doh‑cli, purritobin и bash‑it, а больше 100 тысяч для jailhouse, bazel, sssh‑tpm‑agent, keycloak, griddb, firecracker и apache‑pulsar.

  • Исправление ошибок в существующих открытых проектах. Участники на своё усмотрение могут выбирать проблемы, подтверждённые в системах отслеживания ошибок Debian и Ubuntu (Launchpad), после чего согласовать возможность получения вознаграждения за их исправление с Selectel. Вознаграждения назначается индивидуально и выплачивание после принятия изменения в Debian или Ubuntu и закрытия сообщения об ошибке.

Теги:
+12
Комментарии4

Полиморфизм и наследование

Каждый раз, когда я слышу от кого-то описание или определение полиморфизма, там присутствует слово "наследование".

> Объясните что такое полиморфизм? Ну это когда базовый класс и наследники...

Давайте по порядку. Полиморфизмов вообще существует больше чем один. Но, все таки, когда речь идет про массовое программирование (простите функциональщики), по умолчанию говорят о полиморфизме подтипов (subtyping). Упрощенно, в этом полиморфизме мы заменяем иф на общий метод для разных типов объекта. Таким образом сам объект (его тип) определяет реальное поведение, а вызывающий код про это не знает, он просто дергает метод (или методы):

function doSomething(logger) {
  // Где-то снаружи выбирается конкретный логгер
  // Разные логгеры могут работать сильно по разному
  logger.info('hey');
}

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

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

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

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

Теги:
-1
Комментарии2

Работа с Bluetooth Low Energy (BLE):основные протоколы и практические советы.

Почему BLE до сих пор “ТОП”?
Потому что даёт годами работать от батарейки -“таблетки”, держит связь в шумной среде и уже давно вышел за рамки «умных браслетов». Ниже - короткая, но практичная шпаргалка: что в BLE за что отвечает, где производительность «прячется», и на чём чаще всего спотыкаются.

BLE-стек делится на две большие части:
- GAP - «как знакомимся и подключаемся»: роли Central/Peripheral, сканирование, реклама (advertising) и параметры соединения.
- GATT/ATT - «как обмениваемся данными после подключения»: сервисы, характеристики, дескрипторы и операции чтения/записи/уведомлений. (PunchThrough, cardinalpeak.com)

Основное - по делу:
1) Реклама и роли
Legacy vs Extended Advertising: в Bluetooth 5 появилась расширенная реклама(Extended) и Periodic Advertising - удобно для «маячинга» и многоприёмников без подключения. (Novel Bits)Роли: Peripheral «светится» и ждёт подключения; Central сканирует и подключается. Это — GAP-уровень. (Punch Through)

2) Скорость, дальность и каналыPHY 1M - базовый; 2M PHY - больше скорость; Coded PHY (S=2/S=8) - для дальности и шумных сред; итоговый выбор - компромисс «скорость/дальность/надёжность». (RIOT Summit)
Для широковещания и энергосбережения в BLE 5.4 усилили «витаминку» для ESL/маячков: PAwR (Periodic Advertising with Responses), EAD (Encrypted AdvertisingData) и пр. - полезно для систем с множеством датчиков и электронных ценников. (Bluetooth Technology Website, silabs.com)

3) Пропускная способность: где «лежит» throughputATT MTU и Data Length Extension (DLE) увеличивают полезную нагрузку пакета (вплоть до ~251 байта данных на пакет) — ключ для высокой реальной скорости. (Punch Through, devzone.nordicsemi.com)
Настраивайте интервал соединения, slave latency и supervision timeout под задачу: меньше интервал — ниже задержка и выше пропускная способность, но больше расход батареи. Для потоков «почти-реального времени» ориентируйтесь на уведомления (см. ниже) и 2M PHY (если качество радио позволяет). Практические потолки зависят от хоста/ОС — тестируйте на целевых телефонах/ПК. (devzone.nordicsemi.com)

4) GATT-модель и событияNotify vs Indicate: оба «толкают» данные от сервера к клиенту; Indicate требует подтверждения на уровне протокола (надёжно, но медленнее), Notify — без подтверждения (быстрее, меньше оверхеда). Всегда добавляйте CCCD для (де)активации уведомлений. (Сообщество NXP, Thesis Pte Ltd, Reddit)Дизайн GATT: группируйте характеристики логически, минимизируйте количество сервисов и «глубокие» иерархии — это ускоряет discovery и упрощает кросс-платформенное поведение. (cardinalpeak.com)

5) Безопасность и приватностьLE Secure Connections (ECDH) — базовый стандарт для шифрования.Privacy: используйте RPA/Filter Accept List, а в BLE 5.4 — EAD для шифрованной рекламы (актуально для «маячков» с приватными данными). (Bluetooth Technology Website)

6) Мобильные ОС: подводные камниAndroid 12/13+: нужны runtime-разрешения BLUETOOTH_SCAN/CONNECT/ADVERTISE(диалог Nearby devices). Без них сканирование/подключение просто не начнётся.(Android Developers) iOS: в фоне реклама и сканирование ограничены — обычные рекламные PDU из бэкграунда не шлются; для сканирования в фоне задавайте конкретные UUID и включайте соответствующие background-моды. (Stack Overflow, Apple Developer)

7) Стек и инструментыДля «железа»: Zephyr Bluetooth Host (широко применим на MCU), NimBLE (легковесный стек от Apache Mynewt), BlueZ (Linux). Выбор стека влияет на доступность фич (DLE, Coded PHY, Periodic Adv). (docs.zephyrproject.org, Argenox)

8) Новшества, на которые стоит поглядыватьBLE 5.4 (PAwR, EAD) — для массовых устройств-«полок» и защищённой рекламы. (Bluetooth Technology Website)
Core 6.0: уточнения по таймингу кадра/интервалам в изохронных потоках (актуально для LE Audio/ISO). Если делаете аудио через BLE — изучите. (Bluetooth Technology Website)

Теги:
+2
Комментарии4

Сегодня, 9 сентября, в мире ИТ вспоминают первый компьютерный баг

В 1947 инженеры Гарвардского Mark II под руководством Грейс Хоппер разбирались с поломкой реле. В какой-то момент они нашли причину — внутри застряла настоящая моль. Её аккуратно извлекли, приклеили в журнал отладки и подписали: «Первый реальный случай бага».

До этого слово “bug” использовали в инженерной среде, но именно этот случай сделал его легендой ИТ.

Забавно, что сама моль сохранилась — её до сих пор можно увидеть в Смитсоновском институте.

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

Вспомнить хотя бы Heartbleed — уязвимость в OpenSSL, обнаруженную в 2014-м. Одна ошибка в библиотеке, которая отвечает за шифрование, открыла доступ к памяти миллионов серверов по всему миру. Пароли, ключи, данные — всё оказалось под угрозой. В СМИ её называли «самым громким багом десятилетия».

Через несколько лет весь мир обсуждал уже Log4j. Казалось бы, скромная библиотека для логирования на Java, использующаяся в тысячах приложений. В декабре 2021 обнаружили, что через неё можно удалённо выполнить произвольный код. За считаные часы уязвимость стала глобальной катастрофой: под угрозой оказались банки, облачные сервисы и даже игровые платформы вроде Minecraft.

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

И это, пожалуй, самое важное напоминание: в ИТ нет «мелких багов». Любая ошибка может стать той самой «молью», остановившей работу огромной машины.

А какой баг стал самым запоминающимся для вас?

Теги:
+4
Комментарии0

Проект Kilo Code — это опенсорный ИИ‑агент с 400 нейросетями.

Особенности решения:

  • допускает мало ошибок — после написания кода ещё раз перепроверяет строчки кода;

  • генерирует код с любых запросов — поймёт даже самое базовое «сделай игру про лягушку и ящерицу»;

  • понимает команды для терминала;

  • встраивается в VS Code;

  • доступ к последним моделям от Claude, Gemini и OpenAI;

  • большой выбор моделей — всего 400 шт, даже самые редкие китайские.

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

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

Теги:
+6
Комментарии6

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

Теги:
0
Комментарии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

Теги:
+4
Комментарии0

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

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

Go

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

Python

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

JavaScript

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

Теги:
+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

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

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

  • продакшен,

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

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

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

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

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

  • live сервер,

  • prod,

  • production,

  • PROD.

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

Теги:
+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
Комментарии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

Теги:
+12
Комментарии0

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

Теги:
+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.

Теги:
+6
Комментарии1

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

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

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

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

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

Теги:
+7
Комментарии0

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

Теги:
+4
Комментарии0

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