В анализаторе PVS-Studio уже давно существовал Html отчёт, но он был настолько простым, что годился только для ознакомления с результатами анализа маленького объёма, например, по электронной почте. В этой заметке я расскажу, как был переработан этот формат и какие новые возможности он открывает для пользователей анализатора. Читать дальше ->
Автомобиль стал неотъемлемой частью нашей жизни. Для кого-то — это средство передвижения, для кого-то — средство самовыражения. Рано или поздно каждый из нас задумывался о его покупке. На российском рынке сейчас 3 лидера, которые помогают решать задачу поиска и «покупки» автомобиля. Я хочу сравнить их между собой и ответить на вопрос: какое из Android приложений лучше решает эту задачу. Читать дальше ->
7 8 Ноября Parityобъявила о критической ошибке в коде, отвечающим за работу их multi-sig кошелька в основе которого лежит общедоступный смарт-котракт. Это уже второй подобный случай, первый произошел 19/07/2017, когда из-за найденной уязвимости смарт-контракта были выведены 150000 ETH (Подробнее на Хабре).
Попробуем описать в чем заключалась проблема и почему стали недоступны около $300 млн. Читать дальше ->
Бенчмарки OpenSSL 1.1.1dev показали, что производительность шифра ChaCha20-Poly1305 не слишком хорошо масштабируется. В одном потоке задача выполнялась с производительностью примерно 2,89 ГБ/с, а на 24 ядрах в 48 потоках — всего чуть более 35 ГБ/с.
Это действительно очень большая цифра, но я ожидал увидеть что-то ближе к 69 ГБ/с, ведь 35 ГБ/с — это чуть более 1,46 ГБ/с на ядро или примерно 50% от максимальной производительности ядра. AES-GCM масштабируется гораздо лучше, до 80% производительности ядра, что понятно, потому что CPU способен поддерживать более высокую тактовую частоту (турбо) на одном ядре, но не на всех сразу. Читать дальше ->
Фрактальные истории, или как создать текстовую адвенчуру с открытым миром
Однажды я решил создать текстовый Skyrim. Поначалу это звучит слишком амбициозно, но в процессе разработки истории и механики игры и определил её основные элементы: игра про мечи и магию, происходящая в живом симулируемом мире, представленном в виде книги «Выбери своё собственное приключение».
Моя идея превратилась в короткую игру Insignificant Little Vermin, с которой я участвовал в этом году на IFCOMP. В статье я расскажу о процессе создания этой игры и о том, чему я научился, понаблюдав за тем, как в неё играют люди (на Twitch). Читать дальше ->
Естественно, мы взялись его тестировать, потому что такого зверя ещё не видели.
Жила-была компания «Пало Альто», которая делала довольно неплохие межсетевые экраны уровня enterprise. Далее, в соответствии с технологическим трендом, в состав линейки решений вендора вошла песочница, как облачная, так и частная. До определённого момента и потоковые файерволы, и песочницы на входе закрывали задачу обеспечения ИБ. Но со временем и этого стало мало — появилась концепция «непрерывной защиты», которая требовала для полного счастья ещё и защиты конечных машин, так называемые end-point-решения. «Пало Альто» купила компанию Cyvera и её продукт допилила под себя. Вот так появился Трапс, «антивирус нового поколения».
Трапс инжектирует в исполняемые процессы (например, *.exe) свой код, позволяющий запускать всё в режиме своего рода маленького гипервизора, и смотрит за использованием памяти. Сигнатуры он не проверяет, только ловит странное поведение подконтрольного ПО.
Нет ничего смешнее, чем антивирус, который ведёт себя как вирус и работает даже под WinXP. Эта штука и есть Traps. Читать дальше ->
Эта статья является адаптированным вариантом текста одноименного доклада с конференции C++ CoreHard Autumn 2017. Статья рассматривается как завершение темы, поднятой ранее в публикациях "Модель Акторов и C++: что, зачем и как?" и «Шишки, набитые за 15 лет использования акторов в C++» часть I и часть II. Сегодня речь пойдет о том, как понять, что Модель Акторов может быть успешно использована в вашем проекте.
В принципе, статья является «капитанской», т.к. описываемые в ней вещи вполне очевидны и диктуются обычным здравым смыслом. Но, к сожалению, не часто внимание акцентируется именно на них.
Лирическое отступление на тему «Модель Акторов и C++: миф или реальность?»
В статье обсуждаются вещи, которые присущи самой Модели Акторов, безотносительно конкретных языков программирования. Но, т.к. автор тесно связан с разработкой ПО на C++, то есть некоторый акцент на применимость акторов именно в C++.
В разделе trending на GitHub отображается список проектов, активно набирающих звезды в течение дня, недели или месяца. Все самое интересное, что появляется в open source для каждого языка программирования, всегда оказывается в этом списке. Сегодня хочу поделиться способом, как с помощью GitHub уведомлений подписаться на появление новых «звездных» проектов и не пропустить что-нибудь полезное для себя. Читать дальше ->
Достаточно нередко можно встретить задачу об обеспечении отказоустойчивости СУБД MS SQL Server. Еще интереснее становится, когда нет лицензии Enterprise, а только Standard.
Сразу отметим, что рассматриваться лицензия Express не будет, т к по данному экземпляру есть существенные ограничения. Да, некоторые из них можно обойти. Например, максимальный размер БД в 10 ГБ легко решается путем декомпозиции большой БД на более маленькие (например, по какому-то признаку создавать новую БД, а в главной БД в представлениях объединять выборки из одних таблиц разных БД). Но отказоустойчивость в Express будет достигаться либо силами системного администратора, либо использованием собственно разработанного (или стороннего) ПО.
В данной статье будут вкратце разобраны все существующие стандартные технологии отказоустойчивости для MS SQL Server 2017 и будет рассмотрен пример реализации отказа наиболее подходящего унифицированного из них в лицензии Standard. Читать дальше ->
Эта статья — вольный пересказ моего доклада на прошедшем Хайлоаде.
Я возглавляю компанию, в которой работает 75 человек, а начинали мы 10 лет назад впятером.
И я хотел бы рассказать как, со временем, и почему менялась система менеджмента, какие основные ошибки мы совершили, как их исправляли, и чему научились по этому поводу.
На написание данной публикации меня подтолкнул тот факт, что в сети интернет крайне мало информации по администрированию Jail в FreBSD. Можно конечно найти отличные публикации на эту тему, но они, в основном, по большей части были написаны много лет назад, и не затрагивают новые возможности Jail и самой операционной системы FreeBSD.
Публикацию разделю на две части. В первой части пойдёт речь о подготовки и настройки FreeBSD, а во второй части пойдёт речь непосредственно о создании Jail. Читать дальше ->
Программист считает, что он лучше знает, как программистам удобно искать работу. Даже звучит убедительно, ведь программисты понимают потребности программистов и разделяют общую боль, причиненную рекрутерами.
У меня была такая мысль — “Вот сейчас я сделаю так, как должно быть”. Так появился мой проект. Так появляются тысячи проектов, созданных программистами.
Большинство из моих идей по совершенствованию процесса трудоустройства оказались заблуждением. Например, идея размещать описание вакансий у себя на сайте. Это звучит как минимум странно, ведь столько платформ именно это и делают. Но довольно опытные рекрутеры не хотят даже думать на тему размещения вакансий. Я не знаю, насколько публикация вакансий выгодна стольким проектам, но я не реализовал этот функционал по той причине, что он не решал главную задачу.
А главная задача — это сделать поиск работы простым и полезным занятием.
Добрый день Хабровчане!
Собеседование, особенно если ты его не прошёл :), вещь не очень приятная. Но мой папа — преподаватель математики часто говорил, что экзамен — это не только способ оценить знания, а и самый действенный метод обучения. Именно на экзамене (в данном случае собеседовании) человек как никогда мотивирован и его мозг работает на все 100%.
Кроме того на собеседовании иногда задают очень интересные логические задачки. Вот именно о них я и хочу написать.
Итак, самые интересные задачки которые мне задавали на собеседовании:
Задачка 1: Про бассейн, лодку и гирю
Есть маленький бассейн. В нём плавает лодка. На стенке бассейна отмечен текущий уровень воды.
Ещё есть чугунная гиря. В каком случае уровень воды в бассейне поднимется больше: если опустить гирю в воду, или если опустить гирю в лодку? Читать дальше ->
В 2016 год Google Brain Group выпустил проект Magenta в открытый доступ. Magenta, позиционируется как проект, который задает и отвечает на вопросы:«Можем ли мы использовать машинное обучение для создания музыки и искусства достойных внимания? Если да, то как? Если нет, то почему нет?». Вторая цель проекта, это построить сообщество художников, музыкантов и исследователей в области машинного обучения.
Линейно-квадратичный регулятор и линейные наблюдатели
Я совсем не являюсь специалистом в теории управления, лишь читаю учебники. Моя задача — понять теорию и применить на практике. В этой статье только теория (ну, немножко сопутствующего кода), в следующей будем разговаривать о практике, маленький кусочек которой можно посмотреть тут:
Хотел бы поделиться опытом настройки CI/CD в нашей компании, плюс, послушать советы, если у вас похожая структура проектов.
Кому, как мне кажется, данная статья может оказаться полезной:
— ваши проекты содержат несколько отдельных репозиториев с приложениями;
— вы хотите быть уверены, что каждый репозиторий проходит тесты;
— вы хотите быть уверены в совместимости версий между репозиториями;
— вы ещё не успели, но планируете, перевести свои проекты на докер;
— хотите посмотреть пару playbook'ов Ansible. Читать дальше ->
Мои читатели попросили сравнить проекты Manticore и Sphinx с точки зрения качества кода. Я могу сделать это только одним освоенным мною способом — проверить проекты с помощью статического анализатора PVS-Studio и посчитать плотность ошибок в коде. Итак, я проверил C и C++ код в этих проектах и, на мой взгляд, качество кода Manticore выше, чем качество кода Sphinx. Естественно, это очень узкий взгляд, и я не претендую на достоверность своего исследования. Однако меня попросили, и я сделал сравнение так, как умею. Читать дальше ->
Системная инженерия постулирует, что есть разные описания архитектуры системы. При этом определение архитектуры системная инженерия не дает. Дано лишь определение термина «описание архитектуры». Я хочу разобраться в том, почему это так случилось.
Попытка выяснить что же такое архитектура системы не увенчалась успехом, однако, рассуждения, которые были сделаны, позволили мне пробросить мостик между моей методологией и другими методологиями описания предметных областей. Спасибо всем, кто помогал мне в этом! В данной статье я объясню, как появляются моделируемые нами объекты.
Возникновение термина «архитектура здания»
Итак, пусть у нас есть описание здания с точки зрения эстетики и функционального назначения. Это описание называется архитектурным описанием. Архитектурное описание здания также называют для краткости – архитектурой здания. Сторонний наблюдатель, который далек от строительной отрасли, может сказать: опишите мне архитектуру здания. Строители так не говорят, они говорят: дайте мне архитектурную часть проекта. Строители выражаются более точно, но сторонний наблюдатель этого может не знать. Архитектура в строительстве – это свод знаний по проектированию зданий с точки зрения функциональности и эстетики. Этот свод знаний не включает в себя проектирование узлов, расчет нагрузок и прочее, чем заняты проектировщики, отвечающие за конструктивную часть проекта. С точки зрения этого свода знаний строится модель здания и называется: архитектурное описание здания, или для краткости – архитектура здания. Читать дальше ->
Во время сравнения нового серверного чипа Centriq от Qualcomm с имеющимися в наличии Intel Xeon поколения Skylake мною была замечена странная штука: производительность шифра ChaCha20-Poly1305 плохо масштабируется при добавлении ядер. Один поток работал на скорости примерно 2,89 Гбайт/с, а на 24 ядрах и при 48 потоках сумарная производительность составила всего лишь 35 Гбайт/с.
Неплохо, конечно, но я ожидал увидеть что-то вроде 69 Гбайт/с. 35 Гбайт/с это всего лишь 1,46 Гбайт/с на ядро, или около 50 % от производительности одного ядра. AES-GCM масштабируется в тех же условиях гораздо лучше, до примерно 80 % производительности одного ядра, что объясняется способностью процессора повышать частоту при нагрузке на одно ядро.
Seneca — microservices toolkit для Node.JS. Он предоставляет плагины, которые заботятся об основах вашего приложения. Это позволяет сосредоточиться на реальной бизнес-логике. Нет необходимости беспокоиться о том, какую базу данных использовать, как структурировать компоненты или как управлять зависимостями. Просто начните писать код.
Вы описываете всё как действия. Действия вызываются всякий раз, когда они соответствуют набору свойств. Ваш вызывающий код не знает и не заботится, какое действие выполняет работу. Один объект JavaScript входит, а другой выходит, асинхронно.
Чем Seneca.js не является
Я люблю конкретные сравнения, и увы я быстро делаю поспешные обобщения, которые могут в конечном итоге причинить мне боль. Чтобы этого избежать, вот список того, что нет у Seneca:
Seneca — это не “строгий” фреймворк. Seneca не навязывает вам ни архитектуру приложения ни каких-либо подходов. Хотите разместить все свое приложение в одном действии? Вы можете. Хотите сделать каждое действие всего в 5 строк кода? Вы тоже можете это сделать. Seneca невероятно надежен и будет работать практически со всеми архитектурными решениями, которые вы принимаете.