Как стать автором
Обновить
895.5
Рейтинг

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

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

20 вещей, которые я узнал за 20 лет работы инженером-программистом

Блог компании FUNCORP Программирование *Карьера в IT-индустрии Читальный зал
Перевод

Наткнулся на любопытный материал, в котором автор систематизировал и записал свой опыт инженера-программиста в 20 тезисов. Я работаю в коммерческой разработке ПО больше 25 лет, и этот текст отозвался во мне практически каждой буквой — большинство советов я тоже регулярно практикую, не облекая их в формат ёмких афоризмов. В общем, решил сделать перевод.

Особенно отзываются пункты «стройте компактные системы» и «лучший код — это отсутствие кода». Последний совет я превращаю в цитату из какого-то второсортного фильма про самураев: «Лучшая победа — та, которую ты одержал, не доставая меч из ножен» (думаю, сослуживцы за моей спиной уже закатывают глаза). И, конечно, бесконечные разговоры про легендарных 10x-программистов постоянно хочется прервать советом не связываться с 0,1x-программистами (которые реально существуют, в отличие от 10x).

Читать далее
Всего голосов 79: ↑76 и ↓3 +73
Просмотры 13K
Комментарии 34

Новости

Карго-культ вокруг DevOps: как навредить проекту из лучших побуждений

Блог компании Luxoft Программирование *Управление разработкой *DevOps *

Привет, Хабр!

Сегодня я расскажу как с помощью DevOps-практик не только не помочь, но и навредить проекту.

DevOps родился для того, чтобы команды разработки и поддержки работали эффективно и слаженно. Но иногда использование его практик может привести к реальным провалам.

Читать далее
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 3.5K
Комментарии 12

Адаптация Qt-приложений под мониторы высокой чёткости. Часть 2

Программирование *C++ *Qt *ООП *Разработка под Windows *
Tutorial

В прошлой статье мы начали рассказ о рецептах, посвященных переводу Qt-приложений на рельсы High DPI, то есть адаптации этих приложений к мониторам высокой четкости.

Суть в том, что в ОС Windows давно есть такие настройки, как масштабирование шрифта и изображений (масштаб экрана), которые применяются для увеличения слишком малых элементов GUI на мониторах с высокой чёткостью (High DPI). Однако не каждое приложение, написанное на Qt, способно адекватно учитывать, применять этот самый масштаб экрана. Частая ситуация – приложение хорошо выглядит на Full HD (1920x1080), но стоит поставить монитор 4K (3840x2160) и увеличить масштаб экрана, то появляются многочисленные артефакты.

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 929
Комментарии 1

Отрабатываем Git hooks на автоматизации commit message

Блог компании DINS Программирование *Git *Системы управления версиями *GitHub

Привет, Хабр! В этой статье я расскажу о Git hooks и о том, как они могут помочь с некоторыми насущными кейсами организации создания commit’ов и commit message. Пост основан на реальном опыте из моей практики: как я упрощал то, что всем надоело делать руками. Я уверен, что хуки могут оказаться полезны почти каждому разработчику. Ведь все мы пишем в сообщении коммита чуть больше, чем «fixed what was broken», верно?

Меня зовут Роман Горбатенко, я Java-разработчик в компании DINS, на момент написания текста тружусь в команде Contact Center. Занимаюсь разработкой больше 3-х лет и прошел путь от личинки стажера до middle разработчика. Считаю Git одним из самых полезных инструментов разработчика. Многие не используют его возможности на полную, возможно, мне удастся это немного исправить.

Узнать больше о Git hooks
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.5K
Комментарии 4

Введение в параллелизм

Блог компании Intel Высокая производительность *Программирование *C++ *Параллельное программирование *

Данная статья посвящена параллелизму в C++, сопутствующим сложностям и как их можно обойти, используя библиотеку oneAPI Threading Building Blocks (oneTBB) для упрощения параллельного программирования. 

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 2.2K
Комментарии 4

Храним данные в JSONB, как это влияет на скорость запросов?

PostgreSQL *Программирование *SQL *Администрирование баз данных *Хранение данных *

Добрый день, меня зовут Павел Поляков, я Principal Engineer в каршеринг компании SHARE NOW, в Гамбурге в 🇩🇪 Германии. А еще я автор Telegram-канала Хороший разработчик знает, где рассказываю обо всем, что должен знать хороший разработчик.

Сегодня хочу поговорить о том стоит ли хранить данные в JSONB полях в PostgreSQL. Как это влияет на производительность?

Читать далее
Всего голосов 14: ↑8 и ↓6 +2
Просмотры 3.5K
Комментарии 21

Борьба с зависимостями: как мы переводили проект на SwiftPM (и сделали еще хуже, чем было)

Блог компании inDriver Программирование *Разработка под iOS *Разработка мобильных приложений *

Привет, Хабр! Меня зовут Лена, я iOS-разработчик в inDriver. Расскажу о том, как мы выбирали менеджер зависимостей для проекта. Название статьи звучит пессимистично, но на самом деле, все оказалось не так плохо.

Сначала поделюсь тем, как у нас обстояли дела с интеграцией сторонних решений. Затем выделю проблемы и цели, которые перед нами стояли, и перейду к сравнению менеджеров зависимостей. Расскажу, почему остановили свой выбор на Swift Package Manager (SwiftPM) и как на него переезжали.

Погнали!

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 1K
Комментарии 1

Темная сторона DateTime.Now

Блог компании OTUS Программирование *C# *
Перевод

DateTime.Now — одно из наиболее часто используемых свойств в .NET Framework. Несмотря на то, что это свойство предназначено для определенных целей, из-за недостатка понимания и сноровки многие .NET-разработчики используют его при неправильных обстоятельствах, когда следует использовать другие доступные (и рекомендованные) варианты, такие как свойство DateTime.UtcNow и класс Stopwatch. В этой статье мы обсудим эти три варианта, область применения каждого из них и проведем количественное сравнение между ними, чтобы показать, почему DateTime.Now во многих случаях обходится нам слишком дорого и не должно быть использовано.

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 6.5K
Комментарии 33

Vulkan. Руководство разработчика. Пул дескрипторов и сеты дескрипторов

Программирование *C++ *Работа с 3D-графикой *Разработка игр *CGI (графика) *
Перевод
Tutorial


Всем привет! Для тех, кто со мной не знаком, я — технический переводчик в IT-компании CG Tribe в Ижевске. Я занимаюсь переводом руководства Vulkan Tutorial на русский язык и выкладываю переводы на Хабр.

Я остановилась на разделе Uniform buffers и сегодня хочу поделиться переводом заключительной статьи раздела, которая называется Descriptor pool and sets.

Содержание
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 734
Комментарии 1

Мультиклассификация экстремально коротких текстов классическими методами машинного обучения

Python *Программирование *Машинное обучение *

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

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 993
Комментарии 0

Как на React две кнопки переводить полтора года

Блог компании Авито Разработка веб-сайтов *Программирование *Проектирование и рефакторинг *ReactJS *

Меня зовут Илья, я фронтенд-разработчик в команде BuyerX. Раньше я публиковал статью о том, как мы пришли к использованию монорепозитория в нашем юните и какие проблемы решило его использование. В этот раз хочу поделиться чуть менее радостным опытом и рассказать, как получилось так, что потребовалось почти полтора года, чтобы перевести две кнопки со страницы объявления на React.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 6.4K
Комментарии 22

Flutter: как мы выбирали навигацию для мобильного приложения?

Блог компании Россельхозбанк Программирование *Разработка мобильных приложений *Dart *Flutter *

Flutter вышел в стабильной версии в 2018 году. Все это время он активно развивался: появилась поддержка Null safety, расширились возможности по темизации и локализации приложений, добавилось огромное количество новых виджетов. Одно из таких нововведений – Navigator 2.0, выпущенный Flutter осенью 2020 года. Это гибкий инструмент для решения непростой задачи навигации в мобильных приложениях. Разработчики начали применять Navigator 2.0, но столкнулись с трудностями и проблемами, о которых говорили команде Flutter в официальном репозитории, предлагая упростить использование инструмента. Самым подробным материалом по новому подходу является статья в блоге Flutter, но и ее мало для того, чтобы начать работать с Navigator 2.0 в продакшен-приложениях.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 3.4K
Комментарии 9

7 полезных инструментов на Haskell

Блог компании Typeable Программирование *Haskell *Функциональное программирование *

Вступление


Haskell это чистый функциональный язык программирования общего назначения со статической типизацией и ленивыми вычислениями. Появился в 1990 году и был назван в честь Хаскелла Карри. На данный момент основной реализацией является компилятор GHC.


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


Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 4K
Комментарии 18

Error Boundaries в React: препарируем лягушку

Блог компании 2ГИС JavaScript *Программирование *ReactJS *

Представим, что у нас есть приложение на React, в котором можно читать и писать отзывы. Пользователь открыл список отзывов, пролистал его, нажал кнопку «Написать отзыв». Форма написания отзыва открывается в попапе. Пользователь начинает вводить текст, свой email. Вдруг валидация почты срабатывает с ошибкой, которую разработчики забыли обработать. Результат — белый экран. React просто не смог ничего отрендерить из-за этой ошибки в каком-то попапе.

Первая же мысль — не надо было всё уничтожать, список же был не при делах. Чтобы обработать ошибку в render-фазе в React, необходимо использовать Error Boundaries. Почему именно так нужно обрабатывать ошибки — расскажу под катом.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 2.3K
Комментарии 2

Как читать мысли и зачем это программистам

Блог компании JUG Ru Group Программирование *Управление разработкой *Управление проектами *Управление продуктом *

Приехали артисты в Японию, все написали в райдере, а про розетки забыли. А розетки там другие. Спрашивают «а есть переходники?» Японцы занервничали, забегали, начали боссам звонить. Прошло двадцать минут, возвращаются, говорят: «$2000 и мы снабдим все переходниками». Администратор плюнул, пошел в соседний супермаркет, купил переходники по $10 за штуку.

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

Читать далее
Всего голосов 34: ↑32 и ↓2 +30
Просмотры 8.6K
Комментарии 29

Увлекательная история о раскрашивании парных скобок — как VSCode ускорил раскраску в 10,000 раз

Блог компании Wunder Fund Программирование *Алгоритмы *Visual Studio *
Перевод

Прим. Wunder Fund: в этой статье из блога VSCode рассказана увлекательная алгоритмическая история о решении проблемы раскрашивания скобок. Господам удалось достичь значительногоускорения этого процесса. Нам самим очень нравится решать подобные задачи при работе над торговой системой, а если они вам тоже интересны, то пишите:)

Когда имеешь дело с глубоко вложенными скобками в Visual Studio Code — может быть непросто понять то, у каких скобок есть пары, а у каких — нет.

Для того чтобы упростить решение этой задачи, в 2006 году пользователь CoenraadS разработал восхитительное расширение для VS Code — Bracket Pair Colorizer, позволяющее раскрашивать парные скобки, и опубликовал его в VS Code Marketplace. Это расширение стало весьма популярным, теперь оно, с более чем 6 миллионами установок, входит в 10 самых скачиваемых расширений.

Для того чтобы решить проблемы, касающиеся производительности и точности работы расширения, в 2018 году CoenraadS выпустил расширение Bracket Pair Colorizer 2, которое тоже стало популярным и было установлено более 3 миллионов раз.

Читать далее
Всего голосов 39: ↑39 и ↓0 +39
Просмотры 18K
Комментарии 15

Bitwise — обучающий проект по созданию программного и аппаратного стека компьютера с нуля

Программирование *Анализ и проектирование систем *Системное программирование *Компиляторы *C *

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

В 2017 году, Per Vognsen - программист с более чем 15-летним стажем, работавший в таких компаниях как NVIDIA и Oculus берет паузу и в марте 2018 стартует амбициозный обучающий проект Bitwise, в котором он собирается разработать и написать весь программно-аппаратный стек для простого компьютера с нуля и запустить его на FPGA. 

Проект должен был включать в себя операционную систему, компилятор, системные библиотеки, а также HDL код для центрального процессора и периферийных контроллеров. Пререквизиты к нему минимальны - свободное владение языком Cи (и немного Python), а также знание некоторых алгоритмов и структур данных из стандартных CS курсов. Все остальное объясняется по ходу написания кода.

Проекты подобные Bitwise можно пересчитать по пальцам (думаю многие еще вспомнят о знаменитом Handmade Hero от Casey Muratori). Автором данного проекта выступает отличный программист, который в формате скринкастов показывает и объясняет каждое решение по ходу написания кода. Этой короткой статьей я бы хотел заполнить пробел и познакомить большее число людей с проектом Bitwise, так как сам извлек из него много нового.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 3.5K
Комментарии 5

Как Rust-разработчики делают Веб безопаснее

Блог компании Издательский дом «Питер» Высокая производительность *Программирование *Rust *Профессиональная литература
Перевод

Язык программирования Rust упрощает разработку более безопасного программного обеспечения. Что ещё предстоит делать?

Читать далее
Всего голосов 18: ↑12 и ↓6 +6
Просмотры 5.6K
Комментарии 103

Python кодогенерация на благо ETL — часть 2

Open source *Python *Программирование *Функциональное программирование *

Привет! В первой части я поделился мыслями, которые побудили к созданию python библиотеки convtools. Кратко о ней: предоставляет примитивы (конверсии), объединяя которые, можно описывать сложные конверсии для обработки данных. Конверсия генерирует узкоспециализированный код, компилирует его и возвращает функцию, решающую конкретную задачу.

В этот раз хотелось бы подробнее остановиться на двух моментах:

1) как pipe позволяет повысить переиспользуемость кода

2) новая часть библиотеки: Table - потоковый обработчик табличных данных

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 2.1K
Комментарии 2

PyGMTSAR, или спутниковая интерферометрия для всех с примерами Jupyter Python ноутбуков на Google Colab

Open source *Программирование *Геоинформационные сервисы *Открытые данные *Научно-популярное

После анализа модели Танцующие горы Ирана по данным спутниковой интерферометрии мне захотелось проверить набор гипотез и улучшить качество результатов. Как оказалось, ни один из существующих интерферометрических пакетов не позволяет этого сделать так, как мне нужно. Оценив фронт работ, я решил, что за месяц фулл-тайм работы я смогу написать свою систему спутниковой интерферометрии для радарных снимков Sentinel-1 на основе открытого продукта GMTSAR, реализовав собственные алгоритмы обработки данных и обеспечив удобную работу в среде Jupyter Python. По образованию я радиофизик и мой диплом магистра по моделированию голограмм в оптически нелинейных средах (равно моделированию интерференции) в свое время был признан победителем во всероссийском конкурсе, так что мне удалось уложиться в поставленные сроки и реализовать все запланированное — больше свободного времени на этот проект у меня просто нет. Итак, встречайте PyGMTSAR (Python GMTSAR) — по ссылке вы найдете готовые ноутбуки, которые в один клик можно запустить на Google Colab и прямо в браузере увидеть результаты и, при желании, тут же поработать с ними. Для Debian Linux я сделал скрипт инициализации облачного инстанса GMTSAR.install.debian10.sh, а на Google Colab ноутбуки автоматически установят все необходимые зависимости, что позволяет легко запускать их в "облаках".

Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 2.3K
Комментарии 7

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