Software architect
Как отсутствие вычислительных мощностей влияло на морские сражения в мировых войнах
Достичь достаточной осведомлённости о ситуации, когда GPS и компьютеров ещё не существовало, было трудной задачей
Подобная перспектива идеальна – но она была недоступной для адмиралов Первой и Второй мировых войн
"Сетецентрические боевые действия" – популярнейшая на данный момент военная концепция. В её рамках солдаты сражаются не только при помощи оружия, но и при помощи паутины датчиков и вычислительных мощностей, дающих им и их командирам превосходство в оценке ситуации на поле боя. Однако проблема, которую призван решить данный подход, существовала всегда. Я – здесь, противник где-то там. Как его найти? Как отслеживать? Как узнать, куда двигаться, после начала битвы? Как мне хотя бы свои войска отслеживать?
Задолго до того, как концепции интернета вещей заполонили всю планету, эскадры XX века первыми начали использовать систематический подход в ответе на эти вопросы. Паруса уступили место паровым двигателям, и европейские колонии расползлись по всему миру. Военные корабли начали передвигаться ещё быстрее и потребовали координации действий на ещё больших участках морей, чем ранее. Тем временем телеграфы и радио позволяли мгновенно обмениваться сообщениями на немыслимых до этого расстояниях. Всё это вместе совершило революцию в использовании военными флотами информации.
Законы программирования
Законы, теории, принципы и закономерности, полезные для разработчиков
Введение
Перевод репозитория github.com/dwmkerr/hacker-laws
При обсуждениях, связанных с разработкой ПО, люди часто говорят о различных законах. В данном репозитории хранятся ссылки и описания некоторых из наиболее известных из них.
Здесь содержатся объяснения некоторых законов, принципов и закономерностей, но нет никакой агитации в их пользу. Применять их или нет – это всегда вопрос спорный, и всё зависит от того, над чем вы работаете.
Законы
Закон Амдала
Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
Учимся разворачивать микросервисы. Часть 2. Kubernetes
Привет, Хабр!
Это вторая часть из серии статей "Учимся разворачивать микросервисы". В предыдущей части мы написали 2 простеньких микросервиса — бекенд и шлюз, и разобрались с тем, как их упаковать в docker-образы. В этой же статье мы будем организовывать оркестрацию наших docker-контейнеров с помощью Kubernetes. Мы последовательно составим конфигурацию для запуска системы в Minikube, а затем адаптируем ее для деплоя в Google Kubernetes Engine.
'Hello World' вам в облако
Мир сходит с ума, заталкивая калькулятор для 2+2 в облака. Чем мы хуже? Давайте Hello World затолкаем в три микросервиса, напишем пару-тройку тестов, обеспечим пользователей документацией, нарисуем красивый пайплайн сборки и обеспечим деплой в условный облачный прод при успешном прохождении тестов. Итак, в данной статье будет показан пример того, как может быть построен процесс разработки продукта от спецификации до деплоя в прод. Инетересно? тогда прошу под кат
Блокировки в PostgreSQL: 1. Блокировки отношений
В этом цикле мы поговорим о блокировках (locks). Я буду придерживаться этого термина, но в литературе может встретиться и другой: замóк.
Цикл будет состоять из четырех частей:
- Блокировки отношений (эта статья);
- Блокировки строк;
- Блокировки других объектов и предикатные блокировки;
- Блокировки в оперативной памяти.
Материал всех статей основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov, но не повторяет их дословно и предназначен для вдумчивого чтения и самостоятельного экспериментирования.
Читайте и другие серии.
Индексы:
- Механизм индексирования;
- Интерфейс метода доступа, классы и семейства операторов;
- Hash;
- B-tree;
- GiST;
- SP-GiST;
- GIN;
- RUM;
- BRIN;
- Bloom.
Изоляция и многоверсионность:
- Изоляция, как ее понимают стандарт и PostgreSQL;
- Слои, файлы, страницы — что творится на физическом уровне;
- Версии строк, виртуальные и вложенные транзакции;
- Снимки данных и видимость версий строк, горизонт событий;
- Внутристраничная очистка и HOT-обновления;
- Обычная очистка (vacuum);
- Автоматическая очистка (autovacuum);
- Переполнение счетчика транзакций и заморозка.
Журналирование:
- Буферный кеш;
- Журнал предзаписи — как устроен и как используется при восстановлении;
- Контрольная точка и фоновая запись — зачем нужны и как настраиваются;
- Настройка журнала — уровни и решаемые задачи, надежность и производительность.
Асинхронность в программировании
В области разработки высоконагруженных многопоточных или распределенных приложений часто возникают дискуссии об асинхронном программировании. Сегодня мы подробно погрузимся в асинхронность и изучим, что это такое, когда она возникает, как влияет на код и язык программирования, которым мы пользуемся. Разберемся, зачем нужны Futures и Promises и затронем корутины и операционные системы. Это сделает компромиссы, возникающие во время разработки ПО, более явными.
В основе материала — расшифровка доклада Ивана Пузыревского, преподавателя школы анализа данных Яндекса.
Использование возможностей Groovy DSL для конфигурации Java-приложения
Предыстория
Всем привет! Я хотел бы рассказать историю о страшных конфигах и как их удалось причесать и сделать вменяемыми. Я работаю над довольно большим и относительно старым проектом, который постоянно допиливается и разрастается. Конфигурация задается с помощью маппинга xml-файлов на java-бины. Не самое лучшее решение, но оно имеет свои плюсы — например, при создании сервиса можно передать ему бин с конфигурацией, отвечающий за его раздел. Однако, есть и минусы. Самый существенный из них — нет нормального наследования профилей конфигурации. В какой-то момент я осознал, что для того, чтобы поменять одну настройку, я должен отредактировать около 30 xml-файлов, по одному для каждого из профилей. Так больше продолжаться не могло, и было принято волевое решение все переписать.
Требования
- Наследование и переопределение (или fallback). Должна быть возможность задать некий базовый профиль, унаследовать от него дочерние и переопределить или добавить в них те места, которые необходимо
- Маппинг в java-бины. Переписывать по всему проекту использование конфигурации с бинов на проперти вида
mongodb.directory.host
не хотелось, использовать map-ы из map-ов тоже. - Возможность писать в конфиге комментарии. Не критично, но удобно и приятно.
Хотелось бы, чтобы конфиг выглядел примерно так:
name = "MyTest"
description = "Apache Tomcat"
http {
port = 80
secure = false
}
https {
port = 443
secure = true
}
mappings = [
{
url = "/"
active = true
},
{
url = "/login"
active = false
}
]
Как я этого добился — под катом.
Знакомство с реактивными потоками – для Java-разработчиков
Сегодня мы вернемся к одной из тем, затрагиваемых в нашей замечательной книге "Реактивные шаблоны проектирования". Речь пойдет об Akka Streams и потоковой передаче данных в целом — в книге Роланда Куна этим вопросам посвящены главы 10 и 15-17.
Apache Kafka: обзор
Сегодня мы предлагаем вам сравнительно краткую, но при этом толковую и информативную статью об устройстве и вариантах применения Apache Kafka. Рассчитываем перевести и выпустить книгу Нии Нархид (Neha Narkhede) et. al до конца лета.
Приятного чтения!
15 когнитивных искажений
Эта статья о том, как отличать достоверную информацию от искажённой, и о том, как правильно подавать информацию, чтобы убедить других людей.
Начнём с того, что люди не всегда мыслят рационально. Это данность, которая обусловлена принципами работы нашего интеллекта, выработанными в процессе эволюции. Условно, представим разум, разделённый на две Системы. Устройство разума не так однозначно, но описанное упрощение позволит понять причины искажений. Первая система генерирует решения и гипотезы быстро «если коснёмся горячего предмета, то отдёрнем руку». Вторая, принимает решения путём логических рассуждений. Первая Система генерирует гипотезы, а вторая принимает их или отвергает. Такой способ мышления медленный и энергозатратный. Логическое рассуждение используется людьми реже и требует больших усилий. Это причина большинства когнитивных искажений.
Так, галочка «по умолчанию согласен» позволила увеличить количество согласных на донорство до 86% в Швеции, тогда как в Дании, где при получении прав нужно самостоятельно ставить согласие, т. е. принимать осознанный выбор, количество согласных на донорство 4%.
Волшебное введение в алгоритмы классификации
Когда вы впервые приступаете к изучению теории анализа и обработки данных, то одними из первых вы изучаете алгоритмы классификации. Их суть проста: берётся информация о конкретном результате наблюдений (data point), на основании которой этот результат относится к определённой группе или классу.
Хороший пример — спам-фильтр электронной почты. Он должен помечать входящие письма (то есть результаты наблюдений) как «спам» или «не спам», ориентируясь на информацию о письмах (отправитель, количество слов, начинающихся с прописных букв, и так далее).
Это пример хороший, но скучный. Спам-классификацию приводят в качестве примера на лекциях, презентациях и конференциях, так что вы наверняка уже не раз слышали о нём. Но что если поговорить о другом, более интересном алгоритме классификации? Каком-то более странном? Более… волшебном?
Всё верно! Сегодня мы поговорим о Распределяющей шляпе (Sorting Hat) из мира Гарри Поттера. Возьмём какие-то данные из сети, проанализируем и создадим классификатор, который будет сортировать персонажей по разным факультетам. Должно получиться забавно!
О чем говорят женщины? (Text mining of beauty blogs)
Источник
Машинное обучение — это легко
Консоль в массы. Переход на светлую сторону. Bash
Вступление
Удобство использования того или иного инструмента заключается в том, насколько он помогает в решении конкретной задачи. Также важно, чтобы мы могли настроить этот инструмент под свои нужды. Приятным бонусом будет и тот факт, что мы можем расширить и дополнить новыми возможностями наш инструмент.
Мы добрались до самой интересной и увлекательной темы — это скрипты на
bash
. Когда вы запускаете терминал, внутри него работает специальная программа-оболочка — shell
(англ) — интерпретатор команд. Shell понимает все команды, которые вы вводите с клавиатуры, и обрабатывает их. Также выводит сообщения об ошибках, следит за корректностью команд и их синтаксисом. Примером таких команд могут быть: сменить директорию, создать новую директорию, добавить текстовый файл, отредактировать текстовый файл, сохранить изменения и другие.Scala.js легко и просто
И тут в голову закрадываются плохие мысли, а может Scala.js? Ты их отгоняешь, но не отпускает.
А почему бы и нет?
Чем отличается наука от астрологии и других псевдонаук. Карл Поппер
Псевдонаукой или лженаукой часто называют заявления, знания, верования и практики, которые выдают себя за научные, но на самом деле таковыми не являются, поскольку не получены с помощью научного метода. Однако есть «пограничные» знания, которые или 1) получены научным методом, но считаются псевдонаукой; 2) получены в результате рассуждений в отсутствие наблюдаемых и измеряемых наблюдений (то есть ненаучным методом), но при этом доказали свою научную ценность.
Как различить между собой эти два класса знаний?
Наиболее полно эту тему исследовал в своей работах философ Карл Поппер — математик и физик по образованию. Теме науки и псевдонауки посвящены его книги «Логика научного исследования» (1935), «Предположения и опровержения: рост научного знания» (1963) и «Объективное знание: эволюционный подход» (1972).
Распознавание чеков в Google Docs с помощью ABBYY OCR SDK
Консоль в массы. Переход на светлую сторону. Часть первая
Вступление
Всем привет! Данная серия статей — это текстовый вариант моего доклада на WSD в Киеве 26 ноября. Решил написать, чтобы дать более развернутое описание темам, которые были затронуты, а некоторые моменты уточнить. Кроме того, есть возможность рассмотреть больше примеров, услышать мнение от тебя, уважаемый читатель. И, конечно же, поделиться информацией с более широкой аудиторией.
Полное практическое руководство по Docker: с нуля до кластера на AWS
Содержание
- Вопросы и ответы
- Введение
- 1.0 Играем с Busybox
- 2.0 Веб-приложения и Докер
- 3.0 Многоконтейнерные окружения
- 4.0 Заключение
Вопросы и ответы
Что такое Докер?
Определение Докера в Википедии звучит так:
программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы; позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, а также предоставляет среду по управлению контейнерами.
Ого! Как много информации.
Информация
- В рейтинге
- 193-й
- Откуда
- Израиль
- Зарегистрирован
- Активность