Как стать автором
Поиск
Написать публикацию
Обновить
0
0

Пользователь

Отправить сообщение

Сравнение одинакового проекта в Rust, Haskell, C++, Python, Scala и OCaml

Время на прочтение16 мин
Количество просмотров45K
В последнем семестре университета я выбрал курс компиляторов CS444. Там каждая группа из 1-3 человек должна была написать компилятор из существенного подмножества Java в x86. Язык на выбор группы. Это была редкая возможность сравнить реализации больших программ одинаковой функциональности, написанных очень компетентными программистами на разных языках, и сравнить разницу в дизайне и выборе языка. Такое сравнение породило массу интересных мыслей. Редко можно встретить такое контролируемое сравнение языков. Оно не идеально, но намного лучше, чем большинство субъективных историй, на которых основано мнение людей о языках программирования.

Мы сделали наш компилятор на Rust, и сначала я сравнил его с проектом команды на Haskell. Я ожидал, что их программа будет намного короче, но она оказалась того же размера или больше. То же самое для OCaml. Затем сравнил с компилятором на C++, и там вполне ожидаемо компилятор был примерно на 30% больше, в основном, из-за заголовков, отсутствия типов sum и сопоставлений с образцом. Следующее сравнение было с моей подругой, которая сделала компилятор самостоятельно на Python и использовала менее половины кода, по сравнению с нами, из-за мощности метапрограммирования и динамических типов. У другого товарища программа на Scala тоже была меньше нашей. Больше всего меня удивило сравнение с другой командой, которая тоже использовала Rust, но у них оказалось в три раза больше кода из-за разных дизайнерских решений. В конце концов, самая большая разница в количестве кода оказалась в пределах одного языка!
Читать дальше →

Рецепты Nginx: CAS (сервис центральной авторизации)

Время на прочтение3 мин
Количество просмотров3.7K
Для приготовления сервиса центральной авторизации нам понадобится сам nginx и его плагины encrypted-session, echo, headers-more, auth_request, eval, set-misc. (Я дал ссылки на свои форки, т.к. делал некоторые изменения, которые пока не удалось пропихнуть в оригинальные репозитории. Можно также воспользоваться готовым образом.)
Читать дальше →

Основные заблуждения о SCRUM

Время на прочтение4 мин
Количество просмотров15K

SCRUM? Какой SCRUM?


Впервые подход SCRUM (англ. scrum «схватка вокруг мяча») описали Хиротака Такэути и Икудзиро Нонака, которые заметили, что небольшие команды (5 — 9 человек), укомплектованные разнопрофильными специалистами, дают лучшие результаты. Наиболее полное описание SCRUM впервые представил в своей книге Джефф Сазерланд. Книга так и называется — SCRUM. Джефф начинал свою карьеру как военный летчик, во время войны во Вьетнаме выполнивший более ста боевых вылетов. Затем Джефф занимался наукой, но мир его запомнит как одного из родоначальников SCRUM. Книга начинается с реальной истории из жизни ФБР, тратившего миллионы долларов на разработку автоматизированной системы, предназначенной для поиска и отслеживания преступников. Проблема заключалась в том, что по истечении сроков проекта подрядчики демонстрировали ФБР абсолютно нерабочий продукт. Это означало лишь одно — американские налогоплательщики потратили миллионы впустую. Ситуация казалась безвыходной до тех пор, пока руководство ФБР не обратилось к тогда еще зарождавшемуся методу управления проектами SCRUM. Этот метод описан доступным языком в вышеупомянутой книге, которая, кстати, переведена на русский язык. Далее в статье рассмотрены основные заблуждения и мифы, которые могут отпугнуть топ менеджеров, задумавших внедрить SCRUM в свои проекты.

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

Где находился Ваш дом миллионы лет назад

Время на прочтение2 мин
Количество просмотров62K


Виртуальный геохронологический глобус, на котором можно увидеть, как выглядела поверхность нашей планеты в разные эры (Нео-протерозой, Палеозой, Мезозой, Кайнозой), начиная от временного промежутка в 750 миллионов лет назад.
Читать дальше →

Конференция DEFCON 19. Три поколения DoS-атак (с участием аудитории в качестве жертв). Часть 2

Время на прочтение13 мин
Количество просмотров3.6K
Конференция DEFCON 19. Три поколения DoS-атак (с участием аудитории в качестве жертв). Часть 1

Но что еще хуже… Я попытался разработать проект для своих студентов, и получалось забавно, но проблема заключалась в том, что нельзя было посмотреть «убиваемые» адреса, так как этого вам было нужно видеть IP config. Но если я проведу атаку действительно очень быстро, система сразу отреагирует и никто не увидит, что же с ней произошло.



Я сделал так, что можно было увидеть всю сеть, все адреса этой сети страница за страницей. Этот список можно было сделать еще больше, так как в него добавлялось по 5 IP-адресов в секунду. Когда я запустил этот проект в первый раз, мне показалось, что ничего не происходит, так как моя Windows-машина вроде бы вообще не отреагировала на то, что случилось.

Студентам это было бы не интересно, потому что они ничему не научатся, если не смогут увидеть наносимые атакой повреждения. Я подумал «ок, это плохой проект, что же мне сделать?», но тут меня озарило – эта штука убивает контроллер домена, почтовый сервер и все такое, это очень плохо. Это настолько плохо, что я вообще не могу рассказать об этом своим ученикам, лучше я тихонько расскажу об этом Microsoft!

Полное руководство по Prometheus в 2019 году

Время на прочтение11 мин
Количество просмотров382K


DevOps- и SRE-инженеры уже, наверное, не раз слышали о Prometheus.


Prometheus был создан на SoundCloud в 2012 году и с тех пор стал стандартом для мониторинга систем. У него полностью открытый исходный код, он предоставляет десятки разных экспортеров, с помощью которых можно за считанные минуты настроить мониторинг всей инфраструктуры.


Prometheus обладает очевидной ценностью и уже используется новаторами в отрасли, вроде DigitalOcean или Docker, как часть системы полного мониторинга.


Что такое Prometheus?
Зачем он нужен?
Чем он отличается от других систем?


Если вы совсем ничего не знаете о Prometheus или хотите лучше разобраться в нем, в его экосистеме и всех взаимодействиях, эта статья как раз для вас.

Тренинг Cisco 200-125 CCNA v3.0. День 9. Физический мир свитчей. Часть 2

Время на прочтение9 мин
Количество просмотров7.5K
Итак, мы рассмотрели, как настроить сеть на компьютере. Что же касается свитча, напомню, что он является устройством 2 уровня модели OSI, а мы должны сконфигурировать IP-адрес, который относится к 3-му уровню. Для этого мы используем управление IP-адресом и переходим к интерфейсу VLAN1. Мы рассмотрим VLAN подробно в одном из следующих видеоуроков, пока что просто запомните, что у нового свитча «из коробки» все порты настроены на использование VLAN1. Поэтому, чтобы присвоить свитчу IP-адрес 10.1.1.10, мы обращаемся к этому интерфейсу.



Если мы хотим назначит IP-адрес шлюза по умолчанию, то должны использовать команду ip default gateway 10.1.1.100.

Резервное копирование, часть 4: Обзор и тестирование zbackup, restic, borgbackup

Время на прочтение7 мин
Количество просмотров21K


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


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


Резервная копия в подобном репозитории — именованная цепочка связанных друг с другом компонентов, например, на основе различных hash-функций.


Есть несколько подобных решений, я остановлюсь на 3: zbackup, borgbackup и restic.

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

Moto. Мокаем AWS

Время на прочтение3 мин
Количество просмотров3.1K
Тестирование — это неотъемлемая часть процесса разработки. И иногда разработчикам требуется запустить тесты локально, до того момента коммита изменений.
Если приложение использует Amazon Web Services, python библиотека moto идеально для этого подходит.

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

Программное ядро бортовой киберинфраструктуры унифицированного ударного истребителя F-35

Время на прочтение16 мин
Количество просмотров13K

Обзор ключевых компонентов «автономной информационной системы логистики» (ALIS) унифицированного ударного истребителя F-35. Подробный разбор «блока обеспечения боевого применения» и четырёх его ключевых компонентов: 1) человеко-системный интерфейс, 2) исполнительно-контролирующая система, 3) бортовая иммунная система, 4) система авионики. Некоторые сведения относительно программно-аппаратного обеспечения истребителя F-35 и относительно инструментария, который используется для его бортового программного обеспечения. Приведёно сравнение с более ранними моделями боевых истребителей, и также указаны перспективы для дальнейшего развития армейской авиации.


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

Руководство по Kubernetes, часть 1: приложения, микросервисы и контейнеры

Время на прочтение16 мин
Количество просмотров183K
По нашей просьбе Хабр создал хаб Kubernetes и нам приятно разместить первую публикацию в нём. Подписывайтесь!

Kubernetes — это просто. Почему же банки платят мне за работу в этой сфере большие деньги, в то время как любой может освоить эту технологию буквально за несколько часов?


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

Тренинг Cisco 200-125 CCNA v3.0. День 7. F.A.Q

Время на прочтение8 мин
Количество просмотров8.3K
Сегодня мы рассмотрим ответы на часто встречающиеся вопросы, которые касаются предыдущих видеоуроков. С момента первой публикации прошло уже около года, и множество людей оставили свои комментарии под моими видеоуроками на канале YouTube. Я внимательно читал все ваши комментарии, но сегодня буду показывать скриншоты комментариев, поступивших только за последний месяц, так как невозможно рассмотреть все вопросы, появлявшиеся на протяжении этого года.

(примечание переводчика: данное видео было опубликовано 18 октября 2014 года)

На этом скриншоте представлен один из последних комментариев, в котором пользователь Скотт Розалес просит размещать ещё больше видео.



Он пишет, что только что посмотрел все 8 видео и понял намного больше того, чему обучал его преподаватель в школе на протяжение нескольких последних месяцев, и что мои уроки очень ему помогли.

Основы Agile-трансформации

Время на прочтение7 мин
Количество просмотров7.4K
Всем хабрапривет!

Хочу поделиться переводом краткой, но достаточно толковой шпаргалки по Agile-трансформации.

Оригинал статьи тут.

Чтобы достичь успеха в сегодняшней рыночной ситуации, компании должны быстро поставлять клиентам качественный инкремент продукта (product increment – «ощутимый результат работы одного спринта» (например, новая функция продукта, прототип приложения и т.д.) — te-st.ru/2017/07/04/12-terms-of-scrum).

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

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

Экономический ликбез для айтишников

Время на прочтение6 мин
Количество просмотров55K
Здравствуйте, дорогие айтишники!

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


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

Мотивация. Сделай сам

Время на прочтение8 мин
Количество просмотров13K
Есть такая полезная задача — разработка систем мотивации. Я долго наблюдал за несчастными HR, которые создавали системы KPI, материальную и нематериальную мотивацию, силились поднять корпоративный дух. Мои наблюдения всегда показывали одно и то же — HR в этой работе чего-то не хватает. Вроде слова правильные говорят, и философия под их расчетами правильная лежит, но созданные ими системы мотивации не выдерживают никакой критики.

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

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

Итогом почти всегда является «какая-нибудь» система мотивации, которая хоть что-то считает и дает хоть какое-то представление об эффективности работы людей. Но главная беда — система мотивации не приносит пользы бизнесу, потому что оценивает людей по критериям, ему не выгодным.

Людям такая система мотивации тоже не приносит пользы, т.к. не дает возможности заработать больше денег, принося пользу бизнесу.

В итоге я пришел к выводу, что разработка систем мотивации — больше инженерная задача, чем гуманитарная (да простят меня милые и добрые HR). Как ни крути, система мотивации — это система показателей. Показатели — это измерение, управление границами, согласованность целей и возможностей, четкая взаимосвязь с бизнес-процессом, правильная автоматизация. Все перечисленное — инженерные задачи.
Читать дальше →

Введение в машинное обучение

Время на прочтение19 мин
Количество просмотров63K
Полный курс на русском языке можно найти по этой ссылке.
Оригинальный курс на английском доступен по этой ссылке.


Как соединить кластеры Kubernetes в разных дата-центрах

Время на прочтение7 мин
Количество просмотров15K


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


Сегодняшний эксперт — Даниэль Поленчик (Daniele Polencic). Даниэль работает инструктором и разработчиком ПО в Learnk8s.

Если вы хотите получить ответ на свой вопрос в следующем посте, свяжитесь с нами по электронной почте или в Твиттере: @learnk8s.


Пропустили предыдущие посты? Ищите их здесь.


Как соединить кластеры Kubernetes в разных дата-центрах?


Кратко: скоро выходит Kubefed v2, а еще советую почитать о Shipper и проекте multi-cluster-scheduler.
Читать дальше →

Аппаратные компоненты бортовой МПС унифицированного ударного истребителя F-35

Время на прочтение10 мин
Количество просмотров10K

Приоритеты современной военной авиации сосредоточены на качественной ситуационной осведомлённости, поэтому современный истребитель представляет собой летающий рой высокотехнологичных сенсоров. Сбор информации с этих сенсоров, её обработку и представление пользователю осуществляет бортовая микропроцессорная система (МПС). Вчера для её реализации использовались HPEC-гибриды (включающие в себя CPU, GPU и FPGA). Сегодня для её реализации используются однокристальные SoC-системы, которые помимо того, что все компоненты на один чипсет собирают, так ещё и внутричиповую сеть организуют (NoC), как альтернативу традиционной магистрали передачи данных. Завтра, когда SoC-системы станут ещё более зрелыми, ожидается приход полиморфной наноэлектроники, которая даст существенный прирост производительности и снизит темп своего морального устаревания.


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

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение7 мин
Количество просмотров757K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →

Время построения, скорость сети и маршрутизации: как мы улучшили свою mesh-сеть и немного про нейросети

Время на прочтение7 мин
Количество просмотров5.2K
На этом ресурсе регулярно пишут о mesh-сетях. Мы хотим рассказать, как используем их в своем проекте для создания адаптивной системы автоматизации помещений.Технология самоорганизующихся сетей позволяет нам не только оперативно разворачивать систему, но и добиваться высоких показателей по её отказоустойчивости и скорости работы. Свое решение мы успешно протестировали на реальном объекте с ёмкостью сети в 120 устройств.

Зачем нам понадобилась mesh-сеть


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

В своих продуктах мы используем mesh-сети, так как они решают сразу несколько проблем. Во-первых, обеспечивают бесперебойную работу системы. Обычно если хаб вышел из строя или потерял связь с интернетом, система, фактически, отключается, устройства перестают откликаться и выполнять свои основные функции. Mesh-сети позволяют этого избежать. Даже если одно устройство вышло из строя, остальные продолжат работать в прежнем режиме. Пользователь лишь получит уведомление о неисправности.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность