Как стать автором
Обновить
861.57

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

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

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

Пишем на Go как в Google. Лучшие практики — часть первая

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 1.3K
Блог компании SkillFactory Open source *Программирование *Go *
Туториал
Перевод

Рекомендации по стилю для проектов Google с открытым исходным кодом


Лучшие практики Go


Этот документ — часть документации по стилю Go в Google. Он не является ни нормативным, ни каноничным, это дополнение к «Руководству по стилю». Подробности смотрите в Обзоре.


О документе


Здесь приведены рекомендации по лучшим практикам применения требований «Руководства по стилю» для Go. Это руководство охватывает общие и распространенные случаи, но не может применяться к каждому частному случаю. Обсуждение альтернатив, по возможности, включено в текст руководства вместе с указаниями о том, когда они применимы, а когда — нет.


Полная документация руководства по стилю описывается в обзоре.

Читать дальше →
Всего голосов 2: ↑0 и ↓2 -2
Комментарии 3

Новости

Микрофронтенды — универсальное решение всех проблем или просто удобный подход?

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 1.7K
Блог компании VK Блог компании Конференции Олега Бунина (Онтико) Разработка веб-сайтов *JavaScript *Программирование *
Обзор

Сейчас понятие «микрофронтенды» встречается довольно часто, но что это такое и какие задачи они решают? Зачем нам микрофронтенды, если есть микросервисы или монолит? И стоит ли тащить микрофронтенды в свой проект только потому, что это модно? Расскажу об этом, а также о трёх способах организации микрофронтендов: Podium, Single-SPA и Module Federation. Какой среди них лучший и нашли ли разработчики в нём панацею? Об этом читайте под катом.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 10

Рекомендации по архитектуре программного обеспечения

Время на прочтение 11 мин
Количество просмотров 2.1K
Блог компании Издательский дом «Питер» Программирование *Исследования и прогнозы в IT *Распределённые системы *
Перевод
Марк Ричардс — спикер GSAS, профессор Академии Apium и опытный практикующий архитектор программного обеспечения, занимающийся, проектированием, выстраиванием и внедрением микросервисов, сервис-ориентированных архитектур и распределенных систем с применением различных технологий. Он работает в отрасли с 1983 года и обладает значительным опытом и знаниями в области архитектуры приложений, интеграции и архитектуры предприятия. Марк — основатель DeveloperToArchitect.com, бесплатного веб-сайта, помогающего разработчику дорасти до архитектора программного обеспечения. Он является автором многочисленных технических книг и видеоматериалов, включая "Фундаментальный подход к программной архитектуре", серию видеоматериалов «Основы архитектуры программного обеспечения», а также нескольких книг и видеоматериалов по микросервисам и корпоративной передаче сообщений. Помимо практических консультаций, Марк также является докладчиком и преподавателем, выступал на сотнях конференций и митапов по всему миру по различным техническим темам, связанным с корпоративными системами. Давайте рассмотрим, каковы его основные рекомендации по архитектуре программного обеспечения.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 0

Fx — мощная JavaScript альтернатива jq для JSON

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 2.1K
JavaScript *Программирование *
Обзор

JSON стал де-факто форматом обмена данными в современном мире. Он широко используется в различных приложениях, таких как API, конфигурационные файлы и хранилища данных. При работе с JSON нам часто требуется манипулировать, фильтровать или преобразовывать данные в соответствии с нашими требованиями. JQ - это популярный процессор JSON с командной строкой, который существует уже довольно давно. Однако у него есть свои ограничения - вы можете обнаружить, что постоянно гуглите его синтаксис, боретесь с отсутствием поддержки BigInt и имеете дело с отсутствующими функциями, такими как комментарии JSON и запятые.

Появился FX - неинтерактивная, основанная на JavaScript альтернатива JQ, которая обещает стать переломным моментом. В этой статье блога вы окунетесь в мир FX и узнаете, как его можно использовать для упрощения задач обработки JSON.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 7

Истории

API FIRST — что это поменяло

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 913
Блог компании Группа Т1 Программирование *Управление разработкой *
Кейс

Я долго не могла понять, почему это пример API-driven дизайна. Оказалось, api — это пчёлы

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

  • Первый — возможность получить обратную связь есть только тогда, когда код готов и пользователь может проверить решение, кликая разные кнопочки в GUI. Это часто приводит к тому, что реализованную часть системы приходится писать заново.
  • Второй, что хуже — CODE FIRST предполагает каскадную модель разработки: нет возможности настроить параллельно несколько потоков работ.
  • Третий недостаток — отсутствие документации и часто слишком детализированное API. Такое API невозможно переиспользовать. 
  • И ещё один, четвёртый, минус — отсутствие адаптации к изменениям. А изменения обычно происходят уже во время разработки.

На замену CODE FIRST пришёл подход DESIGN FIRST. Главными героями здесь становятся дизайнеры. Сначала они отрисовывают все макеты, проектируют кликабельные интерфейсы, и только потом, после ревью пользователей, пишется код системы. Это улучшает UX/UI, команда получает обратную связь до того, как продукт будет готов. Но и тут есть очевидные недостатки:

  • Дефицит бизнес-навыков и аналитического мышления у дизайнеров.
  • Маршруты, положенные в основу архитектуры системы и UI, часто не совпадают с картой бизнес-процессов пользователя. Проще говоря, дизайнер может изобразить любой вариант UI, но возникает вопрос: а можно ли реализовать ту или эту фичу как функционал?
  • Ну и та же проблема, как и с CODE FIRST: нет возможностей для быстрой и эффективной адаптации к изменениям. 

И вот тогда, на стыке CODE FIRST и DESIGN FIRST, появился подход API FIRST, который удачно объединил достоинства всех предыдущих методов.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 0

Потоковый проект в режиме реального времени с использованием данных смартфона

Время на прочтение 18 мин
Количество просмотров 569
Блог компании Southbridge Программирование *IT-инфраструктура *Интернет вещей
Перевод

Девайсы повсюду. Смартфоны, холодильники, дверные звонки, часы, медицинские датчики, системы безопасности и фитнес-трекеры — все это лишь некоторые из них, которые в стали обычным явлением. Они постоянно записывают потенциально высокочастотную информацию и образуют сеть, известную как «Интернет вещей», или IoT, представляя обширные источники данных.

Хотя ресурсов по этой теме достаточно, немногие приводят примеры с реальными данными, доступными любому желающему. Переходя от статьи к статье, чтобы узнать о системах, управляемых событиями, и потоковых технологиях, таких как Apache Kafka, Harrison Hoffman наткнулся на приложение для смартфонов Sensor Logger, которое позволяет пользователям передавать данные с датчиков движения на свои телефоны. Такой вариант показался идеальным способом обучения, поэтому родился проект «smartphone_sensor_stream». Этот проект использует FastAPI, Kafka, QuestDB и Docker для визуализации данных датчиков в реальном времени на информационной панели.

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

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

Как работает PGO-оптимизация в Go «на пальцах»

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 1.1K
Блог компании Яндекс Практикум Программирование *Go *
Обзор

В феврале появилась новая версия Golang — 1.20. Разработчики представили в предварительной версии инструмент оптимизации — profile-guided optimization, или коротко PGO. Этот подход позволяет оптимизировать процесс компиляции приложения за счет использования информации, собранной при профилировании сборки в момент выполнения программы в рабочем окружении.

В итоге, опираясь на собранные данные, компилятор в состоянии принимать более качественные решения оптимизации при очередном запуске программы на основании частоты использования блоков кода. По заверениям разработчиков использование PGO позволяет увеличить производительность приложения на 2-4%. Так ли это на самом деле? Разберёмся в статье.

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

Как мы стриминг пилили, или 5 неочевидных палок в колеса от Flutter

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 961
Блог компании Surf Программирование *Разработка мобильных приложений *Dart *Flutter *
Кейс

Сделать стриминг на Flutter — та ещё задача. Недостаточная функциональность пакета видеоплеера, сложности с реализацией фичи картинка-в-картинке, ошибки из-за особенностей платформ — список проблем можно перечислять долго.

Часть багов специфична для Flutter, часть — неспецифична для Flutter, но специфична для натива. Поэтому статья — не только для флаттеристов и сочувствующих. Нативные разработчики, не спешите скроллить ленту дальше ;) Сейчас всё расскажем.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 6

Простое должно быть простым: враги импорта

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 4.8K
Программирование *
Из песочницы

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

Попробуем разобрать ситуацию на парочке примеров.

Читать далее
Всего голосов 22: ↑16 и ↓6 +10
Комментарии 8

Кормушка для собак с интеграцией Bitcoin и Lightning Network

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 793
Разработка веб-сайтов *Программирование *Интернет вещей Криптовалюты
Из песочницы

Всем привет! В данной статье я бы хотел поделиться своим опытом интеграции криптовалюты в мини-проект, связанный с интернетом вещей. Далее я расскажу о идее, которая нашла свое воплощение в программно-аппаратном решении, и опишу процесс создания со ссылками на использованные ресурсы.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 1

«Программирование — вторая грамотность». К 92-летию со дня рождения ученого-программиста Андрея Петровича Ершова

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 4.4K
Блог компании Timeweb Cloud Программирование *Математика *Читальный зал Биографии гиков
Ретроспектива
image

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

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

27 октября 1980 года Андрея Петровича пригласили выступить с заглавным докладом на 3-й Всемирной конференции ИФИП и Юнеско по применению ЭВМ в обучении. И Ершов выступил с совершенно замечательной речью под нетипичным метафорическим названием «Программирование – вторая грамотность». Так что же он имел в виду?
Читать дальше →
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 19

Асинхронная интеграция. Что это такое и как её дружить

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 1.5K
Блог компании ITQ Group Программирование *Анализ и проектирование систем *
Туториал

Продолжением предыдущей статьи об архитектуре и интеграциях Архитектура приложений и интеграции: гайд по основным понятиям простыми словами / Хабр (habr.com), в данной статье будет освещен вопрос асинхронной интеграции. 

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

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

О, «Герои»? Дайте две! Как я писал очередной браузерный клон легендарной стратегии, в который уже почти* можно играть

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 17K
Блог компании Soletude PHP *JavaScript *Программирование *Разработка игр *
Кейс

TL;DR для тех, кому некогда читать™:




Вот как всё начиналось
Всего голосов 157: ↑157 и ↓0 +157
Комментарии 68

Страшно ли делать плохо? Прожарка твоего кода онлайн, без купюр

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 1.8K
Блог компании Ozon Tech Программирование *Проектирование и рефакторинг *Go *Микросервисы *
Кейс

Именно так я решил назвать эту статью, чтобы описать свои эмоции на прожаривании кода спонтанном публичном код-ревью моего open-source Portal от участников Go-чата, в котором я активно участвую. Главным ревьюером был Глеб Яльчик, что делало ситуацию ещё более волнительной для меня. Расскажу, как я на это решился, что мы обсудили, к чему пришли и какой эффект это дало. А внедрять Portal мы будем на примере мини-приложения по мотивам (всеми любимой) мобы Dota.

Примечание: это приложение будет что-то делать только в учебных целях, чтобы понять, как Portal сможет нам помочь передавать данные. Логика в нём будет достаточно простой, без ряда проверок и, возможно, с багами. Если станет достаточно интересно, то можем обсудить и его в комментариях!

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 2

Макросы в «МойОфис»: Расширяя возможности

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 1.8K
Программирование *Lua *
Из песочницы

Не смотря на очевидные успехи импортозамещения в сфере программного обеспечения, есть ряд трудностей «переходного периода», которые существенно усложняют жизнь миллионам пользователей на необъятных просторах нашей страны. Одна из таких «головных болей» – макросы. При переходе на российские офисные пакеты, требуется переписать множество VBA-макросов для MS Office. При этом, макросам на VBA посвящено множество книг и интернет-ресурсов. А вот про макросы в отечественных «офисах» информацию, пока, приходится собирать по крупицам.

В этой статье предлагается пример разработки макроса в табличном редакторе «МойОфис Таблица». Разработчики «МойОфис» не только заложили возможности расширения базовой функциональности своего «офиса» с помощью макросов, но и снабдили пользователей толковым «Справочником макрокоманд на языке программирования Lua».

Попробуем решить тривиальную задачу сравнения двух таблиц. В «экселевском» файле Verify.xlsx 3 листа – Contract, Act, Result. В таблице Contract содержатся данные о договорных объемах работ, в Act – о фактически выполненных.

Читать далее
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 10

Разнообразие enum в Kotlin

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 2.1K
Программирование *Kotlin *
Из песочницы
Перевод

Kotlin, являясь мощным современным языком программирования, дает возможность разработчикам создавать эффективный и читаемый код. Одна из таких фич это перечисления - Enum classes - тип данных, который позволяет определить множество именованных констант. В этой статье рассмотрим различные примеры использования enum, которые помогут эффективнее применять этот инструмент в своих проектах.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 4

Практические советы по написанию чистого кода для автоматизации тестирования

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 1.3K
Программирование *Совершенный код *
Перевод

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

Что такое чистый код? 

Чистый код — это код на языке программирования, который легко понять и легко поддерживать. Это означает, что код легко использовать и он не имеет непредвиденных последствий при обновлении. Кроме того, чистый код позволяет нескольким людям работать над проектом и следовать согласованным рекомендациям. 

С чистым кодом задачи легко решаются. Каждое решение проблемы начинается с алгоритма. Алгоритм — это план, переведенный в шаблон проектирования. Эффективным шаблоном является Page Object Model, который определяет каждую веб-страницу как файл класса.

Зачем нужен чистый код? 

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

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

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

«Прозрачный промоушн выгоден и разработчику, и его тимлиду». Нюансы карьеры разработчика на С++

Время на прочтение 3 мин
Количество просмотров 1.9K
Блог компании «Лаборатория Касперского» Программирование *C++ *Карьера в IT-индустрии IT-компании
На прошлой неделе мы в «Лаборатории Касперского» провели онлайновый митап «Нюансы карьеры разработчика на С++». Представители разных команд С++ посмотрели на карьерный трек «плюсера» как со стороны менеджеров, так со стороны самих разработчиков.



Здесь в посте — краткая выжимка эфира в семи ключевых тезисах. Если же вам интересно послушать более развернутую дискуссию и аргументы участников, посмотрите запись митапа по этой ссылке или в виджете ниже.
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 0

Как на самом деле работает Async/Await в C# (Часть 4)

Уровень сложности Сложный
Время на прочтение 6 мин
Количество просмотров 2.8K
Программирование *.NET *C# *
Туториал
Перевод

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

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

Миллиарды сообщений в минуту по протоколу TCP/IP

Уровень сложности Простой
Время на прочтение 16 мин
Количество просмотров 12K
Программирование *Java *
Туториал
Перевод

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

Это может показаться простым, но помните, что взаимодействующие компоненты могут быть написаны на совершенно разных языках. Ситуация усложняется еще больше, если учесть, что разные аппаратные/системные архитектуры, скорее всего, имеют различные способы представления «одинаковых» значений. Простого копирования байтов из одного компонента в другой недостаточно. Даже в Java, где мы можем считать себя «защищенными» от такого рода ситуаций, нет требования, чтобы две разные реализации JVM или разные версии от одного производителя использовали одно и то же внутреннее представление для объектов.

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

Существует несколько таких «форматов передачи», начиная от текстовых стандартов, таких как YAML, JSON или XML, до бинарных вариантов, таких как Protobuf, которые включают метаданные или являются полностью неструктурированными.

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

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 4

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