Pull to refresh
0
0
Send message

Чистая архитектура с Typescript: DDD и слоистая архитектура

Reading time7 min
Views21K
Привет, Хабр! В последнее время уделяю много внимание архитектуре и решил поделиться с сообществом переводом статьи Clean Architecture with Typescript: DDD, Onion автора André Bazaglia.

Введение


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

Целью данной статьи является не детальное покрытие сложных тем по DDD и Слоистой архитектуре, а пример реализации этих двух подходов в Typescript. Используемый проект является базовым и может быть доработан и расширен, например с использованием подхода CQRS.
Читать дальше →
Total votes 9: ↑7 and ↓2+9
Comments8

Главные причины медленной работы Angular-приложений

Reading time9 min
Views18K
Angular — это быстрый фреймворк. Он даёт разработчикам обширные возможности по улучшению производительности за счёт тонких настроек. Правда, программистам практически никогда не требуется делать что-то особенное для того, чтобы создавать чрезвычайно производительный код, работая над обычными приложениями.

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



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

Этот материал посвящён разбору основных причин того, что Angular-приложения становятся медленными по мере роста их масштабов. При этом приведённые здесь советы можно будет применить при разработке крупных проектов на любом фреймворке, а не только на Angular.
Читать дальше →
Total votes 22: ↑21 and ↓1+34
Comments39

Представляем .NET Core 3.1 Preview 2

Reading time2 min
Views5.3K
Представляем .NET Core 3.1 Preview 2. .NET Core 3.1 будет небольшим выпуском, сфокусированным на ключевых улучшениях в Blazor и Windows desktop, двух больших новинках .NET Core 3.0. Это будет выпуск с долгосрочной поддержкой (LTS) с ожидаемой финальной датой выкатки в декабре 2019 г.

Вы можете скачать .NET Core 3.1 Preview 2 для Windows, macOS и Linux.


ASP.NET Core и EF Core теперь также доступны.

Visual Studio 16.4 Preview 3 и Visual Studio для Mac 8.4 Preview 3 теперь также доступны. Это обязательные обновления для использования .NET Core 3.1 Preview 2. Visual Studio 16.4 включает в себя .NET Core 3.1, поэтому простое обновление Visual Studio установит вам оба выпуска.

Детали:


Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments1

Scrum вам не поможет. Разбираемся, почему

Reading time4 min
Views9K
image
Картинка взята с данного ресурса.

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

Вот, например, список ситуаций, выявленных эмпирическим путем, в которых Скрам может помешать вашей работе.
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments15

Вредные советы про внедрение Machine Learning в бизнес

Reading time6 min
Views5.3K
Не стоит полагаться на искусственный интеллект,
если у вас нет глубокого понимания процесса.


Рэй Далио


В компании «Инфосистемы Джет» мы внедряем машинное обучение в самых разных отраслях, и на основе нашего опыта выделяем необходимые составляющие успешного внедрения:

  • постановка задачи, нацеленная на оптимизацию приоритетной для бизнеса метрики;
  • команда data scientist-ов, которые обладают компетенциями и готовы глубоко погружаться в технологический процесс;
  • данные, которые соответствуют бизнес-задаче;
  • адекватный выбор метода.

На практике все эти элементы вместе встречаются крайне редко, по статистике, только около 7% проектов с ML считаются успешными. Проекты, имеющие все перечисленные составляющие, можно смело относить к прорывным! Для иллюстрации, мы сформулировали несколько тезисов, которые можно назвать вредными советами про внедрение машинного обучения в бизнес.
Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments0

.NET Core с блокнотами Jupyter — Preview 1

Reading time3 min
Views9.6K
Когда вы думаете о блокнотах Jupyter, на ум, вероятно, приходит код Python, R, Julia или Scala, а не .NET. Сегодня мы рады сообщить, что вы можете писать .NET-код в Jupyter Notebooks.

Try .NET развился, чтобы поддерживать больше интерактивных возможностей в Интернете с помощью сниппетов исполняемого кода, генератора интерактивной документации для .NET Core с глобальным инструментом dotnet try. Ну а теперь .NET доступен в Jupyter Notebooks.

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

Workflow Core — движок бизнес-процессов для .Net Core

Reading time15 min
Views37K

Всем привет!


Мы решили поддержать тему миграции проекта, использующего Windows Workflow Foundation на .Net Core, которую начали коллеги из DIRECTUM, поскольку столкнулись с аналогичной задачей пару лет назад и пошли собственным путем.

Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments8

Google App Script, Mikrotik, Telegram и VPNBook затеяли сыграть квартет

Reading time13 min
Views10K
Сегодня в программе: Куда еще можно применить Google Apps Script, если закончились нормальные идеи. Автоматизация работы с VPNBook через цепочку скриптов на разных языках, которые я не знаю. Недо-cURL от Mikrotik. Telegram через одно место, чтобы не оказаться в другом, самкомнадзор разрешает.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments0

13 полезных приёмов по работе с массивами в JavaScript, которые могут вам пригодиться

Reading time5 min
Views54K
Массивы являются одной из самых популярных структур данных в JavaScript, потому что они используются для хранения данных. Кроме этого, массивы дают много возможностей для работы с этими самыми данными. Понимая, что для тех, кто находится в начале пути изучения JavaScript, массивы являются одной из самых основных тем, в этой статье я хотел бы познакомить вас с некоторыми полезными трюками, о которых вы могли не знать. Давайте начнем.
Читать дальше →
Total votes 30: ↑18 and ↓12+6
Comments40

Лучшая архитектура для MVP: монолит, SOA, микросервисы или бессерверная?.. Часть 1

Reading time5 min
Views42K
В ноябре OTUS запускает новую образовательную программу «Архитектор ПО», в связи с этим подготовили серию публикаций для будущих студентов курса и читателей нашего блога.




Создание нового продукта всегда связано с риском. И выбор правильной архитектуры — важный шаг на пути успеху. Если вы выбираете между монолитной, сервис-ориентированной, микросервисной и бессерверной архитектурой, этот пост поможет вам сделать правильный выбор.
Читать дальше →
Total votes 27: ↑21 and ↓6+15
Comments10

Настройка HA-кластера Kubernetes на «голом железе» с GlusterFS & MetalLB. Часть 2/3

Reading time12 min
Views32K


Часть 1/3 тут
Часть 3/3 тут


Привет и с возвращением! Это вторая часть статьи о настройке кластера Kubernetes на «голом железе». Ранее мы настраивали НА-кластер Kubernetes с помощью внешнего etcd, схемы «ведущий-ведущий» и балансировки нагрузки. Ну а теперь пришло время настроить дополнительную среду и утилиты, чтобы сделать кластер полезнее и максимально приближенным к рабочему состоянию.


В этой части статьи мы сосредоточимся на настройке внутреннего балансировщика нагрузки сервисов кластера — это будет MetalLB. Также мы установим и настроим распределенное хранилище файлов между нашими рабочими нодами. Будем использовать GlusterFS для постоянных томов, которые доступны в Kubernetes.
После выполнения всех действий схема нашего кластера будет выглядеть следующим образом:


Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments0

Руководство пользователя Kibana. Визуализация. Часть 4

Reading time5 min
Views12K

Четвертая часть перевода официальной документации по визуализации данных в Kibana.


Ссылка на оригинальный материал: Kibana User Guide [6.6] » Visualize


Ссылка на 1 часть: Руководство пользователя Kibana. Визуализация. Часть 1
Ссылка на 2 часть: Руководство пользователя Kibana. Визуализация. Часть 2
Ссылка на 3 часть: Руководство пользователя Kibana. Визуализация. Часть 3


Содержание:


  1. Region Maps
  2. Time Series Visual Builder
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

Гадание на нейросетях: отметился ли в комментариях к посту сам автор

Reading time6 min
Views6.8K


Поделюсь рассказом о небольшом проекте: как найти в комментариях ответы автора, заведомо не зная кто автор поста.

Свой проект я начинал с минимальными знаниями по машинному обучению и думаю для специалистов тут не будет ничего нового. Этот материал в некотором смысле компиляция разных статей, в нем расскажу, как подходил к задаче, в коде можно найти полезные мелочи и приемы с обработкой естественного языка.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments2

Практичный Go: советы по написанию поддерживаемых программ в реальном мире

Reading time48 min
Views57K
Статья посвящена лучшим практикам написания кода Go. Она составлен в стиле презентации, но без обычных слайдов. Постараемся кратко и чётко пройтись по каждому пункту.

Для начала следует договориться, что значит лучшие практики для языка программирования. Здесь можно вспомнить слова Расса Кокса, технического руководителя Go:

Программная инженерия — то, что происходит с программированием, если добавить фактор времени и других программистов.

Таким образом, Расс различает понятия программирования и программной инженерии. В первом случае вы пишете программу для себя, во втором создаёте продукт, над которым со временем будут работать и другие программисты. Инженеры приходят и уходят. Команды растут или сокращаются. Добавляются новые функции и исправляются ошибки. Такова природа разработки программного обеспечения.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments14

Ребрендинг: лайфхак как не стать предметом насмешек

Reading time6 min
Views12K
Совсем недавно, столкнувшись с интересной интерпретацией логотипа одного бренда, стало интересно, ведь среди всем известных мировых логотипов есть и те, которые не то чтобы неудачные… просто пошло необычные.



Куда смотрели разработчики, художники, дизайнеры… Или это просто очередной маркетинговый ход, ибо человек воспринимает происходящее на подсознательном уровне, вот так и с логотипом… вызвало эмоции (неважно какие главное сильные) и вот уже сложно выбросить из какой-то ячейки памяти это «изобразительное искусство», надпись. И так, оказалось, а таких уникальных логотипов не мало). Вот о них и будем рассуждать в теле этой статьи-обзора.
Читать дальше →
Total votes 31: ↑21 and ↓10+11
Comments32

Руководство пользователя Kibana. Визуализация. Часть 1

Reading time9 min
Views60K
Доброго времени суток. Всем пользователям ElasticStack рано или поздно нужно визуализировать данные. Большинство использует Kibana. Под катом перевод официальной документации для версии 6.6.

Ссылка на оригинальный материал: Kibana User Guide [6.6] » Visualize

Содержание:

  1. Creating a Visualization
  2. Line, Area, and Bar charts

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments0

Обширный обзор собеседований по Python. Советы и подсказки

Reading time10 min
Views185K

Всем привет!


Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


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

Читать дальше →
Total votes 71: ↑70 and ↓1+69
Comments57

Prometheus + Grafana + Node Exporter + Docker в Azure c уведомлениями в Telegram

Reading time5 min
Views30K

Для начала подготовим виртуальную машину, для этого напишем небольшой скрипт, который разворачивает и автоматизирует некоторые рутинные операции, скрипт использует Azure Cli:


project.sh
#!/bin/bash
echo "AZURE VM Create"
echo "Azure Account:"
echo "Azure name:"
read AZ_NAME
read -sp "Azure password: " AZ_PASS && echo && az login -u $AZ_NAME -p $AZ_PASS
echo "Name Group  VM"
read GROUP_NAME
az group create --name $GROUP_NAME --location eastus
echo "VM name"
read VM
echo "Admin user name"
read ADMIN
az vm create --resource-group $GROUP_NAME --name $VM --image UbuntuLTS --admin-username $ADMIN --generate-ssh-keys --custom-data cloud-init.txt
az vm open-port --resource-group $GROUP_NAME --name $VM --port 8080 --priority 1001
az vm open-port --resource-group $GROUP_NAME --name $VM --port 8081 --priority 1002
az vm open-port --resource-group $GROUP_NAME --name $VM --port 9090 --priority 1003
az vm open-port --resource-group $GROUP_NAME --name $VM --port 9093 --priority 1004
az vm open-port --resource-group $GROUP_NAME --name $VM --port 9100 --priority 1005
az vm open-port --resource-group $GROUP_NAME --name $VM --port 3000 --priority 1006
RESULT=$(az vm show --resource-group $GROUP_NAME --name $VM -d --query [publicIps] --o tsv)
echo $RESULT
echo "Whait 5 min"
sleep 300
ssh $ADMIN@$RESULT -y << EOF
sudo usermod -aG docker $ADMIN
EOF
sleep 10
echo "Connect to Azure..."

В скрипте мы используем файл cloud-init.txt который автоматически установит Docker и Docker-Compose на виртуальную машину.


cloud-init.txt
#cloud-config
package_upgrade: true
write_files:
  - path: /etc/systemd/system/docker.service.d/docker.conf
    content: |
      [Service]
        ExecStart=
        ExecStart=/usr/bin/dockerd
  - path: /etc/docker/daemon.json
    content: |
      {
        "hosts": ["fd://","tcp://127.0.0.1:2375"]
      }
runcmd:
- apt-get update && apt-get install mc -y
- curl -sSL https://get.docker.com/ | sh
- curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments11

Обзор AI & ML решений в 2018 году и прогнозы на 2019 год: Часть 2 — Инструменты и библиотеки, AutoML, RL, этика в AI

Reading time11 min
Views15K
Всем привет! Представляю вам перевод статьи Analytics Vidhya с обзором событий в области AI / ML в 2018 году и трендов 2019 года. Материал довольно большой, поэтому разделен на 2 части. Надеюсь, что статья заинтересует не только профильных специалистов, но и интересующихся темой AI. Приятного чтения!


Читать сначала: Часть 1 — NLP, Computer Vision


Инструменты и библиотеки


Этот раздел понравится всем data science профессионалам. Инструменты и библиотеки — хлеб с маслом для ученых. Я участвовал во многих дебатах о том, какой инструмент лучше, какой фреймворк заменяет другой, какая библиотека является воплощением “экономичных” вычислений, и всё такое. Уверен, что многих из вас это тоже касается.

Но с одной вещью нельзя не согласиться — мы должны быть в курсе последних инструментов в этой области или рискуем остаться позади. Темпы, которыми Python обогнал конкурентов и зарекомендовал себя, как лидера отрасли, являются этому хорошей иллюстрацией. Конечно, многое сводится к субъективному выбору (какой инструмент использует ваша организация, совместимость с существующей инфраструктурой и прочее), но если вы не идете в ногу со временем, пора начинать прямо СЕЙЧАС.

Так что же попало в заголовки новостей в этом году [в 2018 году — прим. пер.]? Пошли разбираться!
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments0

Знакомимся с микросервисным фреймворком Moleculer

Reading time7 min
Views18K
Привет, %habrauser%!

Сегодня я хочу рассказать тебе об одном отличном, на мой взгляд, микросервисном фреймворке Moleculer.



Изначально этот фреймворк был написан на Node.js, но в последствии у него появились порты и на других языках таких как Java, Go, Python и .NET и, скорее всего, в ближайшем будущем, появятся и другие имплементации. Мы используем его в продакшене в нескольких продуктах уже около года и словами сложно описать, каким благословением он нам показался после использования Seneca и своих_велосипедов. Мы получили всё что нам нужно из коробки: сбор метрик, кэширование, балансировка, fault-tolerance, транспорты на выбор, валидация параметров, логирование, лаконичное объявление методов, несколько способов межсервисного взаимодействия, миксины и многое другое. А теперь по порядку.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments9
1
23 ...

Information

Rating
Does not participate
Registered
Activity