Pull to refresh
-7
0
Соловьев Антон Владимирович @MisterN

User

Send message

Сделайте Linux похожим на Windows 95

Reading time2 min
Views30K

Темы и наборы иконок Linux, вдохновлённые другими операционными системами, существуют с тех пор, как в Linux появился графический интерфейс. Иногда эти темы становятся очень похожими на оригинал. Но… Что, если бы вы могли сделать свой рабочий стол Linux почти таким же, как Windows 95?

Читать далее
Total votes 57: ↑56 and ↓1+71
Comments82

Почему я начал использовать аннотации типов в Python – и вам тоже советую

Reading time7 min
Views19K

С появлением подсказок типов (type hints) в Python 3.5+ добавилась опциональная статическая типизация – поэтому эти подсказки так мне нравятся. Теперь я аннотирую ими все мои проекты.

Читать далее
Total votes 29: ↑28 and ↓1+32
Comments25

Многоликая Убунта в 2020 году

Reading time9 min
Views132K
Перед вами необъективный, несерьёзный и нетехнический обзор операционной системы Ubuntu Linux 20.04 и пяти её официальных разновидностей. Если вас интересуют версии ядра, glibc, snapd и наличие экспериментального сеанса wayland — вам не сюда. Если вы впервые слышите о Линуксе и вам интересно понять, как о ней думает человек, который сидит под Убунтой уже восемь лет, то вам сюда. Если вы просто хотите посмотреть что-то не очень сложное, слегка ироничное и с картинками, то вам тоже сюда. Если вам кажется, что под катом куча неточностей, упущений и передёргиваний и напрочь отсутствует логика — возможно, так и есть, но это же нетехнический и необъективный обзор.

Картинка для привлечения внимания — коллаж из шести скриншотов с рабочими столами каждого из рассмотренных в обзоре дистрибутивов
Читать дальше →
Total votes 71: ↑53 and ↓18+66
Comments502

Angular: понятное введение в NGRX

Reading time7 min
Views60K
image Цель этой статьи — дать чистое и ясное представление о ngrx. Для этого я объясню, что нужно знать и понимать о ngrx, а затем мы увидим это в действии с простыми и понятными примерами кода.

Вот список тем, которые мы будем обсуждать в этой статье:

  • Что такое ngrx
  • Преимущества использования ngrx
  • Недостатки использования ngrx
  • Когда использовать ngrx
  • Действия, Редукторы, Селекторы, Хранилище и Эффекты

Продолжение статьи с примером использования: «Angular: пример использования NGRX».
Читать дальше →
Total votes 7: ↑5 and ↓2+10
Comments17

ASP.NET Core: ваше первое приложение на Linux c использованием Visual Studio Code

Reading time5 min
Views88K
Решил недавно написать небольшое ASP.Net MVC приложение после многолетнего перерыва и знающие люди на Хабре подсказали попробовать новый ASP.Net Core, тем более, что он работает в Линуксе из коробки без необходимости задействовать mono, и, судя по последним тестам, даже показывает неплохую производительность. За основу взял аналогичную статью для Mac, однако здесь в отличии от вдохновившей меня статьи хочу описать процесс пошагово в одном месте, для того, чтобы не пришлось лазить по перекрёстным ссылкам, пытаясь разобраться как установить непонятно для чего предназначенные приложения и пакеты. Такое подробное описание процесса возможно поможет многим избежать граблей, с которыми пришлось столкнуться мне. Несколько фраз и рисунков, в части одинаковой для любой платформы, с правками и корректировками взяты из статьи для Mac.

Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments42

Язык программирования типов, скрытый в TypeScript. Utility Types

Reading time5 min
Views15K

TypeScript — это язык, расширяющий JavaScript, добавляя в последний типизацию. Правда, так как TypeScript не имеет runtime-а (почти), он транслируется в JavaScript, в процессе чего, вся типизация теряется. Такую типизацию можно назвать лишь инструментом статического анализа кода. Тем не менее — это очень мощный инструмент. К тому же, помимо проверки кода, типизация также и документирует его.

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

Читать далее
Total votes 22: ↑21 and ↓1+21
Comments3

Пишем nest.js с нуля на typescript

Reading time28 min
Views19K

Nest.js - популярный node.js фреймворк с отличной архитектурой, основанной на Angular.

Под капотом Nest использует надежные платформы HTTP-серверов, такие как Express (по умолчанию), и при желании также может быть настроен для использования Fastify! Nest обеспечивает уровень абстракции по сравнению с этими распространенными платформами Node.js (Express/Fastify), но также предоставляет свои API-интерфейсы непосредственно разработчику. Это дает разработчикам свободу использовать множество сторонних модулей, доступных для базовой платформы.

Читать далее
Total votes 7: ↑6 and ↓1+8
Comments0

gRPC vs REST, что выбрать для нового сервера?

Reading time11 min
Views116K

Всем приветы. А вы писали новый сервер с нуля? Какие технологии использовали? А рассматривали какие-либо варианты кроме старого доброго REST ? А что есть еще что-то ? С такими вопросами я когда-то пришел к своему лиду.  Да, для меня было открытием, что можно использовать не только REST для обмена сообщениями между сервером и клиентом. Ах да, конечно я знал про SOAP, но использовать его уж очень не хотелось. Оказалось, что можно попробовать использовать Thrift или например gRPC. От Thrift пришлось отказаться по ряду причин, которые не сильно важны в данной статье. Кстати, возможно Thrift это именно то что вам нужно. 

Так что же такое gRPC и в чем его отличие от, уже ставшего классическим, REST? Лучше ли gRPC? Может gRPC это снова хипстерская технология, которую все скоро забудут?

   Не для кого ни секрет, что REST доминирует в современном мире API, особенно, когда речь идет о веб-приложениях и инфраструктурах, на основе микросервисов. Мало кто даже вспомнит, про то что микросервисы могут общаться по другому. Это наверное самый популярный ответ на собеседовании. Да если добавить еще feign клиента из Spring, то получается совсем красота и минимальные трудо затраты. Но для определенного набора сценариев использования, модель gRPC начала играть небольшую, но важную роль. Давайте попробуем разобраться, когда же нам стоит использовать REST, а когда gRPC.

Read more gRPC vs REST
Total votes 6: ↑3 and ↓3+2
Comments31

gRPC в качестве протокола межсервисного взаимодействия. Доклад Яндекса

Reading time16 min
Views213K
gRPC — опенсорсный фреймворк для удаленного вызова процедур. В Яндекс.Маркете gRPC используется как более удобная альтернатива REST. Сергей Федосеенков, который руководит службой разработки инструментов для партнеров Маркета, поделился опытом использования gRPC в качестве протокола для построения интеграций между сервисами на Java и C++. Из доклада вы узнаете, как избежать частых проблем, если вы начинаете использовать gRPC после REST, как возвращать ошибки, реализовать трассировку, отлаживать запросы и тестировать вызовы клиентов. В конце есть неофициальная запись доклада.

— Сначала хотелось бы познакомить вас с некоторыми фактами про Яндекс.Маркет, они будут полезны в рамках доклада. Первый факт: мы пишем сервисы на разных языках. Это накладывает требования по наличию клиентов для сервисов.
Читать дальше →
Total votes 28: ↑24 and ↓4+30
Comments12

gRPC: лучше ли этот фреймворк, чем REST API?

Reading time9 min
Views34K

Привет! Я — Роман Махнык, .NET developer в NIX. Уже четвертый год я занимаюсь разработкой коммерческих проектов, а сейчас проектирую разные приложения на основе облачных решений.

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

Если вы только начинаете работу с API или хотите лучше разобраться именно в gRPC — эта статья для вас.

Читать далее
Total votes 18: ↑6 and ↓12-2
Comments38

Shared State для React. Часть 1

Reading time11 min
Views4.3K

В данном цикле статей мы рассмотрим задачу синхронизации состояния react-приложения между окнами. В качестве подопытного у нас будет приложение на Electron, работающее в offline/online-режимах, которое также может запускаться в PWA-режиме.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments2

Пять причин для ИТ-компании полюбить опенсорс

Reading time4 min
Views6.9K

Я всегда старался выносить в опенсорс все, что может быть полезно людям вне моей компании. Помимо стремления не только брать от сообщества, но и отдавать, это приносит ряд бенефитов для самой компании.

Всю статью я построил на примерах опыта Taiga UI — огромной библиотеки компонентов под Angular, которая долго развивалась внутри компании, а 10 месяцев назад была выложена в опенсорс. Несмотря на то, что примеры взяты из опыта фронтовой библиотеки, все пункты применимы и актуальны для любого другого стека.

И что же он дает?
Total votes 34: ↑34 and ↓0+34
Comments8

Подходы к управлению модулями в Angular (и не только)

Reading time8 min
Views19K

Понимание организации сущностей, с которыми работаешь — не то, что сразу получается у разработчика, пишущего свои первые проекты на Angular.


И одна из проблем, к которой можно прийти — неэффективное использование Angular модулей, в частности — излишне перегруженный app модуль: создали новую компоненту, забросили в него, сервис — тоже туда. И вроде всё здорово, всё работает. Однако со временем такой проект станет тяжело поддерживать и оптимизировать.


Благо, Angular предоставляет разработчикам возможность создавать свои модули, и ещё называет их feature модулями.



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

Возможности Angular DI, о которых почти ничего не сказано в документации

Reading time6 min
Views39K

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

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments10

Angular 6+ полное руководство по внедрению зависимостей.  providedIn vs providers:[]

Reading time7 min
Views41K
image

В Angular 6 появился новый улучшенный синтаксис для внедрения зависимостей сервисов в приложение (provideIn). Несмотря на то, что уже вышел Angular 7, эта тема до сих пор остается актуальной. Существует много путаницы в комментариях GitHub, Slack и Stack Overflow, так что давайте подробно разберем эту тему.

В данной статье мы рассмотрим:


  1. Внедрение зависимостей (dependency injection);
  2. Старый способ внедрения зависимостей в Angular (providers: []);
  3. Новый способ внедрения зависимостей в Angular (providedIn: 'root' | SomeModule);
  4. Сценарии использования provideIn;
  5. Рекомендации по использованию нового синтаксиса в приложениях;
  6. Подведем итоги.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments11

Детройт: как мировая моторная столица дошла до банкротства

Reading time19 min
Views69K
Слева район Highland Park, территория штата Мичиган, справа – территория Детройта. Источник: Johnny Miller

Мировая моторная столица (Motown), родина американского среднего класса, арсенал демократии — как только не называли Детройт на пике могущества в 1950-е гг., когда его население достигло 1,85 млн человек. Сегодня же оно едва дотягивает до 640 тыс. и продолжает сокращаться. Что произошло? Однозначного ответа нет, но причин одновременно несколько. Здесь и расовое противостояние, ошибки городского планирования, большая политика, ослабление конкурентоспособности американских автоконцернов, их бегство из-за роста социальной нагрузки после победы профсоюзов. Да и много ещё чего, что в комплексе привело в 2013 г. к крупнейшему в истории США муниципальному банкротству.

Но обо всём по порядку.
Читать дальше →
Total votes 147: ↑143 and ↓4+180
Comments488

Автоматизированная сборка документа «Текст программы» по ЕСПД с помощью python-docx

Reading time6 min
Views8.7K

Вариант автоматизированного формирования документа в формате *.docx с использованием скрипта на языке Python и библиотеки python-docx. Как правильно подготовить документ стандартными средствами Microsoft Office, что нужно учесть при создании скрипта, порядок сборки и сохранения документа.

Читать далее
Total votes 4: ↑2 and ↓20
Comments4

Гипервизор против руткитов: как это работает

Reading time4 min
Views12K
В последнее время наша компания разрабатывала детектор руткитов на базе аппаратной виртуализации. Проект задумывался с целью разобраться, как можно использовать новые возможности процессоров Intel и AMD для информационной безопасности. После нескольких итераций мы остановились на вполне работоспособном методе детектирования руткитов. О нем и пойдет речь.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments5

Systemd за пять минут

Reading time4 min
Views651K
Наша компания занимается администрированием веб-серверов на базе CentOS. Довольно часто наши клиенты используют веб-приложения на базе python, ruby или java. Для автозапуска подобных приложений есть готовые шаблоны для написания стартап-скриптов. Но прогресс не стоит на месте, вышел уже второй релиз CentOS 7 и, следуя старой традиции «не ставить dot-zero релизы на продакшен», мы начинаем предлагать клиентам сервера на базе CentOS 7.1 (1503).

В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.

image

Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…

Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Знакомство с systemd
Total votes 70: ↑66 and ↓4+62
Comments58

Анатомия backpressure в реактивных потоках

Reading time7 min
Views14K
Читая многочисленные статьи по теме реактивных потоков, читатель может прийти к выводу, что:

  • backpressure это круто
  • backpressure доступно только в библиотеках, реализующих спецификацию reactive streams
  • эта спецификация настолько сложна, что не стоит и пытаться ее реализовать самому

В этой статье я попытаюсь показать, что:

  • backpressure — это очень просто
  • для реализации асинхронного backpressure достаточно сделать асинхронный вариант семафора
  • при наличии реализации асинхронного семафора, интерфейс org.reactivestreams.Publisher реализуется в несколько десятков строк кода
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments7

Information

Rating
Does not participate
Location
Оренбург, Оренбургская обл., Россия
Registered
Activity