Pull to refresh
0
0
Send message

Обзор GUI-интерфейсов для управления Docker-контейнерами

Reading time5 min
Views171K


Работа с Docker в консоли — привычная для многих рутина. Тем не менее, бывают случаи, когда GUI-/веб-интерфейс может оказаться полезным даже для них. В статье представлен обзор наиболее заметных на сегодняшний день решений, авторы которых попытались предложить более удобные (или подходящие для каких-то случаев) интерфейсы для знакомства с Docker или даже обслуживания больших его инсталляций. Некоторые из проектов совсем молоды, а иные — наоборот, уже отмирают…
Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments26

Настройка среды разработки Webpack 3 + Angular 4: от сложного к простому

Reading time13 min
Views23K
Всем привет!

Современное front-end-приложение на Angular должно включать в себя следующие характеристики:

  • Возможность использования типизированного JS — Typescript
  • Обеспечение удобства и производительности разработки с помощью HMR (hot module replacement);
  • Модульность приложений и возможность отложенной загрузки модулей (Lazy Loading);
  • AoT — режим (ahead-of-time), повышающий производительность приложения.

Существует много вариантов сборки, решающих эти задачи (angular cli, A2 seed и т. д.). Обычно они имеют сложную структуру, плохо настраиваются/расширяются и представляют собой монолит, который невозможно изменить.

В статье я расскажу, как совместить Angular 2+ с webpack и разобраться со всеми этапами сборки/разработки.

Вы удивитесь, как это просто.
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments23

Шаблон проектирования «Спецификация» в C#

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

Я познакомился с этим термином в процессе чтения DDD Эванса. На Хабре есть статьи с описанием практического применения паттерна и проблем, возникающих в процессе реализации.

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

Классическая реализация шаблона проектирования выглядит так:

public interface ISpecification
{
    bool IsSatisfiedBy(object candidate);
}

Что с ним не так применительно к C#?


  1. Есть Expression<Func<T, bool>> и Func<T, bool>>, сигнатура которых совпадает с IsSatisfiedBy
  2. Есть Extension-методы. alexanderzaytsev с помощью них делает вот так:

    public class UserQueryExtensions 
    {
      public static IQueryable<User> WhereGroupNameIs(this IQueryable<User> users,
    string name)
      {
          return users.Where(u => u.GroupName == name);
      }
    }
    

  3. А еще можно реализовать вот такую надстройку над LINQ:

    public abstract class Specification<T>
    {
      public bool IsSatisfiedBy(T item)
      {
        return SatisfyingElementsFrom(new[] { item }.AsQueryable()).Any();
      }
    
       public abstract IQueryable<T> SatisfyingElementsFrom(IQueryable<T> candidates);
    }
    

В конечном итоге возникает вопрос: стоит ли в C# пользоваться шаблоном десятилетней давности из мира Java и как его реализовать?

Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments15

Как запустить фоновый процесс в Asp.net

Reading time6 min
Views37K
Мне понадобилось запустить фоновый процесс в ASP.NET. Возник вопрос: как лучше это сделать? Немного погуглив в блоге SCOTT HANSELMAN, я нашел запись «How to run Background Tasks in ASP.NET». Статья не очень новая – 2014 года, но вполне актуальная, поэтому я решил перевести ее на русский язык.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments25

Двусторонний binding данных с ECMAScript-2015 без Proxy

Reading time8 min
Views9.2K
Привет, уважаемые читатели Хабра. Эта статья некое противопоставление недавно прочитанной мной статье «Односторонний binding данных с ECMAScript-2015 Proxy». Если вам интересно узнать, как же сделать двусторонний асинхронный биндинг без лишних структур в виде Proxy, то прошу под кат.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments14

Разработка IoT устройств с использованием Bluetooth LE

Reading time18 min
Views60K


Технология Bluetooth энергично пробивает себе место в сфере интернета вещей. Часть этой технологии, именуемая Bluetooth LE (Bluetooth Low Energy, она же Bluetooth Smart, она же BLE) прямо позиционирует себя как идеальный выбор для IoT (Internet of things). Трудно не согласится. BLE уже умеет маршрутизировать Internеt трафик, определять координаты в помещениях, подключать промышленные программируемые логические контроллеры, поддерживать WEB серверы, подключать весы, термометры, пульсометры, оксиметры, тонометры и массу других вещей. C BLE автоматически решается множество проблем присущих решениям с использованием Wi-Fi. Недолго осталось до момента, когда устройства с BLE смогут организовываться в MESH сети, по технологии схожей с ZigBee. Это уже отражено в спецификации Bluetooth 5.0
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments27

Начинаем работать в STM32CubeMX. Часть 1

Reading time4 min
Views205K
Часть 2
Часть 3

Приветствую аудиторию хабра, и хочу предложить вашему вниманию первый пост, посвященный использованию среды разработки STM32CubeMX, написанный для тех, кто хочет начать изучение STM32 «с нуля».



Я планировал написать несколько постов, рассмотрев несколько периферийных устройств микроконтроллера и их конфигурирование в STM32CubeMX. Но эти посты не заменяют фирменной документации и не претендуют на полноту. В них будут рассмотрены только некоторые, наиболее, на мой взгляд, типичные, примеры использования периферии STM32.
Надеюсь, кому-то этот материал будет полезен.
Итак, начнём
Total votes 26: ↑25 and ↓1+24
Comments50

Делаем UI плагина в IntelliJ Idea «как у maven'a»

Reading time5 min
Views8.2K

Предыстория


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


Как сделать нечто удобное человеку, который последний раз GUI рисовал в Borland Delphi 6.0? Взять что-то уже готовое и приспособить для своих нужд, ну и раз уж будущие пользователи работают в IntelliJ Idea, появилась мысль соорудить плагин, который будет выглядеть и вести себя так, как это делает Maven Integration Plugin.


image


Под катом классы и некоторые утилитарные методы, которые помогут это сделать.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Немного размышлений и советов по оптимизации кода на С++

Reading time13 min
Views66K


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

Как правило, язык C++ используют там, где требуется высокая скорость работы. Но на C++ без особых усилий можно получить код, работающий медленнее какого-нибудь Python/Ruby. Именно подобным кодом оперируют многочисленные сравнения Any-Lang vs C++.

Вообще, оптимизация бывает трех типов:

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

Специально заниматься оптимизацией готового кода следует только после того, как проект закончен и используется. Как правило, оптимизация потребуется только в небольшой части проекта. Поэтому сначала нужно найти места в коде, которые съедают большую часть процессорного времени. Ведь какой смысл ускорять код, пусть даже на 500%, если он отнимает только 1% машинного времени? И следует помнить, что, как правило, гораздо больший выигрыш в скорости дает оптимизация самих алгоритмов, а не кода. Именно про данный ее вид говорят: «преждевременная оптимизация — зло» (с).

Второй тип оптимизации — это изначальное проектирование кода с учетом требований к производительности. Такое проектирование не является ранней оптимизацией.

Третий тип даже не совсем оптимизация. Скорее это избегание неоптимальных языковых конструкций. Язык C++ довольно сложный, при его использовании частенько нужно знать, как реализован используемый код. Он достаточно низкоуровневый, чтобы программисту пришлось учитывать особенности работы процессоров и операционных систем.
Читать дальше →
Total votes 81: ↑68 and ↓13+55
Comments89

Щелкаем реле правильно: коммутация мощных нагрузок

Reading time3 min
Views243K
Привет, Geektimes!

Управление мощными нагрузками — достаточно популярная тема среди людей, так или иначе касающихся автоматизации дома, причём в общем-то независимо от платформы: будь то Arduino, Rapsberry Pi, Unwired One или иная платформа, включать-выключать ей какой-нибудь обогреватель, котёл или канальный вентилятор рано или поздно приходится.

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

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



Я же хочу рассказать про простую и довольно очевидную, но при этом редко встречающуюся схему, умеющую вот такое:

  • Гальваническая развязка входа и нагрузки
  • Коммутация индуктивных нагрузок без выбросов тока и напряжения
  • Отсутствие значимого тепловыделения даже на максимальной мощности


Но сначала — чуть-чуть иллюстраций. Во всех случаях использовались реле TTI серий TRJ и TRIL, а в качестве нагрузки — пылесос мощностью 650 Вт.

Читать дальше →
Total votes 72: ↑72 and ↓0+72
Comments156

Коллекция практических советов и заметок по вёрстке

Reading time32 min
Views180K

CSS Refresher


Это большая коллекция практических советов и заметок по вёрстке. Своеобразная памятка для тех, кто каждодневно использует CSS. Освещаются самые разные темы, от деталей поведения плавающих элементов до использования SVG и спрайтов. Проект постоянно обновляется, активное сообщество github также принимает в нем участие, там добавляются интересные замечания, о которых, возможно, вы и не слышали.

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


Приветствую всех, меня зовут Максим Иванов, и сегодня я подготовил для вас перевод заметок разработчика из Сан-Франциско Васанта Кришнамурти (Vasanth Krishnamoorthy) «CSS Refresher». Web-программирование одна из самых быстро развивающихся отраслей в наше время. Казалось бы, возьми какой-нибудь видеокурс на tuts+ и освой html-верстку, однако, как говорил разработчик Opera Software Вадим Макеев, выступая на конференции CodeFest, они все равно это делают плохо. Но давайте посмотрим, может мы итак все это знаем.

Содержание


  1. Позиционирование (position)
  2. Отображение элемента в документе (display)
  3. Плавающие элементы (float)
  4. CSS селекторы
  5. Эффективные селекторы
  6. Переотрисовка и перерасчет
  7. CSS3 свойства
  8. CSS3 медиа-запросы
  9. Адаптивный web-дизайн
  10. CSS3 переходы
  11. CSS3 анимации
  12. Масштабируемая векторная графика (SVG)
  13. CSS спрайты
  14. Вертикальное выравнивание
  15. Известные проблемы

Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments33

Spring MVC/Security, REST, Hibernate, Liquibase запускаем в две строки

Reading time71 min
Views41K

Современные системы сборки позволяют полностью автоматизировать процесс компиляции и запуска приложения из исходников. На целевой машине необходим лишь JDK, все остальное включая и сам сборщик загрузится налету. Надо лишь правильно построить процесс сборки и по запуску двух команд получить, например, следующее: запуск базы данных, выполнение SQL скриптов, компиляцию Java, Javascript и CSS файлов, запуск контейнера сервлетов. Реализуется это с помощью Gradle, HSQLDB, Liquibase, Google closure compile и Gretty. Подробнее в статье.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments8

Android. Автозапуск приложения при загрузке: теория и практика

Reading time7 min
Views97K
Простой поиск на stackoverflow.com показывает, что тема получения сообщения ACTION_BOOT_COMPLETED остается актуальной и по сей день. Как видно, многие новички сталкиваются с проблемой: они не получают в своих приложениях сообщение ACTION_BOOT_COMPLETED. В этой статья я попробую резюмировать данные из официальной документации, опыт многих разработчиков из stackoverflow.com, а также свой опыт. Итак, как же победить этого «коварного врага» под названием «ACTION_BOOT_COMPLETED»?
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments7

Создание плагина для Intellij IDEA. Заметки и мелкие советы

Reading time4 min
Views23K
Полгода назад или около того я загорелся-таки идей написать свой плагин для Intellij IDEA. Согласно задумке, он должен был считать, сколько времени разработчик потратил на проект (всего, за день, за сеанс) и отображать результат на диаграмме. Никакой магии, но такая функция здорово помогла бы мне рассчитывать время работы.


И что из этого вышло?
Total votes 16: ↑16 and ↓0+16
Comments17

Разработка power bank для ноутбука. От макета к готовому изделию. Часть первая

Reading time10 min
Views51K
Сделать себе внешний аккумулятор для ноутбука я хотел уже давно, 3-4 года назад для работы в парке. Хоть и мечта рисовать схемы и трассировать платы в парке Горького или Битцевском лесу так и не реализовались (пока), но внешний аккумулятор (назовем его по-современному — PowerBank) я таки сделал. О том как это устройство проходило путь от макета до конечного изделия и почему я делал то, что уже есть на рынке, под катом.


Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments29

Измерение электроэнергии. Часть 1. Измерение напряжения и тока

Reading time9 min
Views66K
image

Введение


Всем привет! После завершения цикла по датчикам были вопросы различного плана по измерению параметров потребления бытовых и не очень электроприборов. Кто сколько потребляет, как что подключать чтобы измерить, какие бывают тонкости и так далее. Пришло время раскрыть все карты в этой области.
В этом цикле статей мы рассмотрим тему измерения параметров электроэнергии. Этих параметров на самом деле очень даже большое количество, о которых я постараюсь постепенно рассказать небольшими сериями.
Пока в планах три серии:
  • Измерение электроэнергии.
  • Качество электроэнергии.
  • Устройства измерения параметров электроэнергии.

В процессе разбора будем решать те или иные практические задачи на микроконтроллерах до достижения результата. Разумеется, большая часть данного цикла будет посвящена измерению переменного напряжения и может пригодиться всем любителям контролировать электроприборы своего умного дома.
По итогам всего цикла мы изготовим некий умный электросчетчик с выходом в интернет. Совсем отъявленные любители контролировать электроприборы своего умного дома могут оказать посильную помощь в реализации коммуникационной части на базе, например MajorDomo. Сделаем OpenSource умный дом лучше, так сказать.
В этой серии в двух частях мы разберем следующие вопросы:
  • Подключение датчиков тока и напряжения в устройствах постоянного тока, а также однофазных и трехфазных цепей переменного тока;
  • Измерение действующих значений тока и напряжения;
  • Измерение коэффициента мощности;
  • Полная, активная и реактивная мощность;
  • Потребление электроэнергии;

Подкатом вы найдете ответы на первые два вопроса данного списка. Я намеренно не затрагиваю вопросы точности измерения показателей и с данной серии лишь радуюсь полученным результатам с точностью плюс-минус лапоть. Этому вопросу я обязательно посвящу отдельную статью в третьей серии.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments3

Обзор Intent Sender плагина к Android Studio и отдельных особенностей его разработки

Reading time7 min
Views8.8K
При разработке Android приложений зачастую приходится прибегать к помощи adb для оптимизации своей работы и экономии времени. Adb является единственным инструментом, позволяющим, к примеру, миновать длинную цепочку activity и запустить сразу нужную или отправить broadcast сообщение без ожидания выполнения каких-либо внешних условий. Использование adb влечет за собой все неудобства применения терминала для формирования длинных команд, что и привело меня к написанию плагина для ускорения и упрощения работы с adb при отправке intent на устройства.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments0

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Reading time39 min
Views169K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


Читать дальше →
Total votes 51: ↑43 and ↓8+35
Comments49

Шпаргалка Java программиста 1: JPA и Hibernate в вопросах и ответах

Reading time36 min
Views589K
image

Знаете ли вы JPA? А Hibernate? А если проверить?

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.




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

Поехали...
Total votes 37: ↑32 and ↓5+27
Comments16

Легко переходим на векторный формат картинок вместо нарезки под разные плотности экранов в Android 4.0+. Часть 2 из 2

Reading time3 min
Views29K


В предыдущей части мы обсудили библиотеку BetterVectorDrawable, реализующую VectorDrawable для Android 4.0+.
В этой части речь пойдет о преобразовании изображений из SVG в vector drawable XML.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments6

Information

Rating
Does not participate
Registered
Activity