Search
Write a publication
Pull to refresh
0
0
Send message

Вкусная курочка

Reading time3 min
Views23K
Перелет к ближайшей звезде очень долог. Но что делать, если другого выбора нет? Космический корабль класса “Shadow” бороздит космос уже несколько десятков лет. Цель столь долгого круизного путешествия – найти новую Землю. Найти место, которое смогут назвать своим домом две сотни пассажиров и команда корабля, состоящая из тридцати человек.

image

Джессика занимает на корабле должность медсестры, и неплохо справляется со своими обязанностями. Ее сын Томми, мальчик семи лет, родился уже не на Земле, и никогда не видел ни синего неба, ни моря. Да чего уж лукавить, он не видел ничего земного. Особенно сильно Томми переживал, что не сможет в живую встретиться с земными животными, про которых он очень любил читать книжки и смотреть голографическое кино. Больше всего ему нравились панды и кенгуру. А как только в руки Томми попала книга про орнитологию, она сразу стала его любимым чтивом перед сном. С огромным интересом он разглядывал на картинках страусов, орлов, пеликанов, голубей и куриц.
Читать дальше →

Связь в интернете вещей: LoRa против UNB. Часть 2: бизнес

Reading time8 min
Views26K
Вторая из серии статей, посвящённая описанию основных отличий технологий маломощной дальнобойной радиосвязи, получающей сейчас распространение в системах Интернета вещей: широкополосной связи LoRa от узкополосных (UNB, Ultra Narrow Band) систем, таких как Sigfox и «Стриж», а также вопросам их практического применения.


Привет, Гиктаймс!

Извиняюсь за долгое молчание — я обещал многим выложить эту часть статьи ещё 22-го августа, но меня немного затянул прекрасный город Алматы, а потом прочие неотложные дела. В качестве компенсации — обещаю после сегодняшнего текста рассказать про конкретное оборудование для сетей LoRa/LoRaWAN (наше и не только), а также ещё и про некоторые технические аспекты работы сетей LPWAN. Последний текст логически должен был бы продолжать самый первый — там будет и про помехозащищённость, и про проблему обратной связи, и про достижимые скорости — но с одной стороны, на наших лекциях многие интересовались этими деталями, а с другой, сегодняшний текст тоже был обещан ещё более многим, и задерживать его ещё дольше совсем некрасиво. Поэтому сначала немного поговорим про бизнес.



Итак, поехали. В первой части я рассказал, чем схожи и чем отличаются на физическом уровне конкурирующие протоколы для IoT-сетей большой дальности — LoRa, Стриж, Sigfox и другие.

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

И вот здесь всё становится совсем весело.

Читать дальше →

Шаблоны взаимодействия для интернета вещей

Reading time11 min
Views14K
Прежде чем начать новый IoT-проект, стоит поразмыслить о том, какие шаблоны обмена информацией наилучшим образом для него подойдут. На самом деле, принять это решение следует как можно раньше, ещё до того, как выбраны протоколы, способы связи и вспомогательная инфраструктура разрабатываемой системы. В основе этой рекомендации лежит одна простая причина: не приняв подобное решение в самом начале, разработчик, по мере развития проекта, рискует сам себя загнать в угол, выбраться из которого можно будет лишь серьёзно переработав код, архитектуру, модель безопасности решения, и то, как оно взаимодействует с внешним миром.


Сегодня мы рассмотрим одиннадцать шаблонов взаимодействия в IoT-системах.
Читать дальше →

Scala vs Kotlin (перевод)

Reading time7 min
Views49K

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


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


Ниже я хочу привести примеры, которые мне нравятся в Scala и Kotlin, а также их сравнение в том, как они реализованы в обоих языках.

Читать дальше →

Подборка подкастов по программированию на русском и английском языках

Reading time7 min
Views182K
Всем привет! В этой статье собраны одни из лучших подкастов по программированию как на русском так и на английском языках, которые позволят вам быть всегда в курсе последних новостей.

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

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

Краш-курс по интерфейсам в Go

Reading time9 min
Views99K
Интерфейсы в Go представляют собой одну из отличительных особенностей языка, формирующих способ решения задач. При схожести с интерфейсами в других языках, интерфейсы Go всё же имеют важные отличия и это поначалу приводит к избыточному переиспользованию интерфейсов и путанице в том, как и когда их использовать. Это нормально, но давайте попробуем разобраться, в чем же особенность интерфейсов в Go, как они устроены, почему так важны и что значит ортогональность интерфейсных типов и структурных типов в Go.

В этой статье вы узнаете:

  • в чем отличие от интерфейсов в Java
  • важные и неочевидные последствия этих отличий
  • как устроены интерфейсы под капотом
  • вспомним про пустой интерфейс (interface{})
  • затронем сакральную тему про дженерики
  • разберемся, кто и зачем должен создавать интерфейс
  • и постараемся научиться не абьюзить интерфейсы и начать жить

Header
(artwork by Svitlana Agudova)
Читать дальше →

С чего начать новичку в Go

Reading time2 min
Views161K
Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
Читать дальше →

Организация кода в Go

Reading time8 min
Views44K

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


Каждое Go приложение, с которым я работал, похоже, имеет свой ответ на вопрос "Как я должен организовать код?". Некоторые приложения засовывают всё в один пакет, в то время, как другие группируют логику по типам или модулям. Без хорошей стратегии, которой придерживаются все члены команды, вы рано или поздно увидите, что код сильно разбросан по многочисленным пакетам. Нам нужен некий стандарт для дизайна кода в Go приложениях.


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

Читать дальше →

Изучаем net/context в Go

Reading time11 min
Views63K
Не секрет, что основная ниша использования Go это сетевые сервисы: всевозможные серверы, бекенды, микросервисы, распределенные базы данных и файловые хранилища. Такой класс программ очень активно использует сетевые запросы, весь необходимый функционал для которых есть в стандартной библиотеке, но один аспект разработки сетевых архитектур остается для многих темным пятном — контексты запросов. В этой статье я хочу рассмотреть этот аспект повнимательней и показать, какой это мощный и важный инструмент.


Читать дальше →

Как устроены каналы в Go

Reading time4 min
Views75K

Перевод познавательной статьи "Golang: channels implementation" о том, как устроены каналы в Go.


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


Устройство канала


Давайте начнём с разбора структуры канала:


Читать дальше →

Frontend-разработчики должны быть в теме всего

Reading time7 min
Views207K

Мысли Криса Койера


Одна из мыслей, которая поселилась в моей голове: должен ли frontend-разработчик быть в курсе всего? В общем смысле, frontend-разработчик может использоваться и на других рабочих местах. Вся команда разработчиков заканчивает разговор на frontend-разработчике. В этом смысл моей идеи. Frontend-разработчики создают те вещи, с которыми будут взаимодействовать люди. Все этапы разработки проходят вместе с frontend-разработчиком. Возможно, именно поэтому это такая забавная работа! Поскольку frontend-разработчик занимает центральное место в цепочке разработки, и при этом мы имеем дело с большим количеством разных специалистов, мы должны понимать их работу и иногда подсказывать, что и как сделать лучше.

От переводчика


Всем привет, с вами Максим Иванов, и сегодня мы поговорим на довольно острую тему в сфере веб-разработки. Как утверждает Крис Койер, frontend-разработчик должен разбираться в очень многих вещах, о которых не все даже и задумываются. Конечно, мы должны понимать, что frontend-разработчик не главный в процессе разработки любого онлайн-сервиса или ПО в целом. На ту же позицию frontend-разработчика вы найдете больше откликов на вакансию, чем на позицию backend-разработчиком. Но почему же тогда Крис Койер считает, что работать frontend-разработчиком сложнее, ибо ты должен специализироваться во всем. Конечно, ситуаций в жизни очень много, разные компании по-разному используют своих специалистов, но в чем наверняка должен разбираться frontend-разработчик? Об этом мы сегодня и поговорим. Жду комментариев на эту тему, а сейчас приступим.
Читать дальше →

8 советов для более эффективной работы с Git

Reading time3 min
Views46K

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




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


Читать дальше →

Мифы и легенды о переполнении целых чисел в Rust

Reading time10 min
Views12K

Примитивные целочисленные типы, поддерживаемые процессорами, являются ограниченным приближением к бесконечному набору целых чисел, которыми мы привыкли оперировать в реальной жизни. Это ограниченное представление не всегда совпадает с "реальными" числами, например 255_u8 + 1 == 0. Зачастую программист забывает об этой разнице, что легко может приводить к багам.

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

Читать дальше →

Rust: for и итераторы

Reading time6 min
Views16K
(предыдущая статья)

В данной статье мы обсудим for циклы, а так же родственные понятия итераторов и «итерируемых объектов».

В зависимости от вашего предыдущего опыта с другими языками программирования данные концепции могут показаться очень знакомыми в плане синтаксиса и семантики, или же совершенно новыми и непонятными. Наиболее близкие их аналоги можно найти в Питоне, но, думаю, программисты на Java, C# или же (современном) C++ так же увидят много пересечений с тем что есть в их языках.
Подробности

Разбираемся в Go: пакет io

Reading time8 min
Views96K

Перевод одной из статей Бена Джонсона из серии "Go Walkthrough" по более углублённому изучению стандартной библиотеки в контексте реальных задач.


Go является языком программирования, хорошо приспособленным для работы с байтами. Будь у вас списки байт, потоки байт или просто отдельные байты, в Go легко с ними работать. Это примитивы, на которых мы строим наши абстракции и сервисы.


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


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

Читать дальше →

История взаимодействия «чайника» и DS18B20 посредством Raspberry Pi с отправкой данных на narodmon.ru

Reading time7 min
Views179K
Доброе время суток, уважаемое хабрасообщество!
Неделю назад я наконец-то дождался свою Малинку. Этот пост о том, как можно набить шишки в такой простой задаче как работа с датчиками температуры.
Кому интересно — добро пожаловать под кат.
Читать дальше →

Простое устройство мониторинга энергопотребления

Reading time7 min
Views176K
Сейчас все больше и больше людей интересуются темой мониторинга потребляемого электричества.
В некоторых случаях эти знания имеют очень большое значение (например, для вашего загородного дома выделили 8кВт мощности и вам необходимо понять, насколько близко вы находитесь к разрешенному пределу и т.п.).
Есть уже готовые изделия, одно из них уже было героем обзора на Хабре.

Но мы не из тех, кто ищет легких путей и сделаем вот такое устройство:

Об устройстве и том самом датчике, что предлагается подключить...

Измерение тока в домашней сети

Reading time4 min
Views91K
Существует целый класс устройств под названием Ethernet Relay, которые позволяют удаленно управлять подключенной нагрузкой через сеть. Большинство из них достаточно дорогие – ближе к 100 долл., и заведомо уступают по цене и по гибкости настройки связке, скажем, Raspberry Pi + PiFace. А что если задача не только включать-выключать нагрузку, но и измерять протекающий ток? Для этого требуется собственно датчик (на шунте или эффекте Холла) и АЦП (Raspberry Pi не содержит встроенного АЦП). В качестве датчика можно взять недорогой ACS712, а в качестве АЦП, например, ADC-Pi.

ADC-Pi мне не понравился по двум причинам:
  • при той частоте измерений, которая требуется для определения силы переменного тока в сети, этот АЦП дает очень большую погрешность (скорее всего я до конца не разобрался с регистрами)
  • используя этот АЦП в связке с Raspberry Pi под Linux сложно обеспечить необходимую стабильность периода измерений. Устанавливать и настраивать RTOS Linux только для этой задачи мне показалось слишком сложным предприятием, тем более что есть более простое и проверенное решение: Arduino

У всех Arduino уже есть АЦП (8-битный, но этого вполне достаточно), скетчи для Arduino исполняются с необходимой стабильностью, для связи с Raspberry Pi есть различные варианты, самый простой из которых – USB кабель. Ну и конечно, привлекательная цена.
Читать дальше →

Домашняя автоматизация с openHAB: освещение и удаленное управление обогревателями. Часть 1

Reading time9 min
Views136K


Моя прошлая статья была о выборе ламп освещения для жилой мастерской. В этот раз расскажу про реализацию домашней автоматизации в том же помещении. Мастерская отапливается двумя электрическими обогревателями. Хотелось удаленно их включать, чтобы не приезжать в холодное помещение. И еще хотелось поддерживать заданную температуру, до этого при изменении температуры на улице приходилось каждый раз крутить «термостаты» обогревателей. Ну и управление освещением, датчик открытия двери и т.д.
Читать дальше →

Raspberry Pi как Steam Idle Machine

Reading time5 min
Views68K
Наверняка у многих из хабрачитателей и владельцев Raspberry Pi имеется в наличии аккаунт в Steam, чья библиотека наполнена немалым количеством игр, купленных на распродажах в этом самом Steam. Но порой бывает так, что ни времени, ни желания играть в эти самые игры нет, а хотелось бы получить от них хоть какую-нибудь пользу кроме как наличия красивой иконки игры в списке игр.


Читать дальше →

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Backend Developer, Application Developer
Senior
Git
SQL
OOP
Java
Docker
Spring Boot
Java EE
Intellij IDEA
Hibernate
Java Spring Framework