Search
Write a publication
Pull to refresh
43
0
Александр @Lucyfer

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

Send message

PostgreSQL: Приемы на продакшене

Reading time9 min
Views91K
Можно прочитать много книг по базам данных, написать кучу приложений на аутсорс или для себя. Но при этом невозможно не наступить на грабли, при работе с действительно большими базами/таблицами особенно, когда downtime на большом проекте хочется свести к минимуму, а еще лучше совсем избежать. Вот здесь самые простые операции, как например изменение структуры таблицы может стать более сложной задачей. Наиболее интересные случаи, проблемы, грабли и их решения из личного опыта с которыми нам на проекте Pushwoosh пришлось столкнуться описаны под катом. В статье нет красивых картинок, зато есть много сухого текста.

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

Лекции Техносферы. 2 семестр. Методы обеспечения качества и тестирования web-приложений

Reading time4 min
Views86K
Лето только начинается, но это не повод прекращать учиться. Предлагаем вам ознакомиться с очередной порцией знаний в рамках проекта «Лекции Техносферы». Цель курса — ознакомить студентов с актуальными методологиями тестирования и обеспечения качества современных веб-приложений. Курс позволит слушателям получить достаточные знания для овладения и применения на практике эффективных приемов построения процесса тестирования и обеспечения качества.

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


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

Microsoft анонсировала кроссплатформенный редактор для Windows, OS X и Linux

Reading time1 min
Views58K
Сегодня Microsoft анонсировала запуск Visual Studio Code. Это кроссплатформенный редактор для работы с современным стеком .NET. Visual Studio Code будет работать в OS X, Linux и Windows. Приложение уже доступно для скачивания.

Visual Studio Code может похвастаться всеми возможностями, что присутствуют в современных редакторах, включая автодополнение, сниппеты и поддержку систем контроля версий. Редактор поддерживает несколько языков и технологий, среди них: JavaScript, TypeScript, Node.js, C# и ASP.NET 5.



Microsoft, впервые в своей истории, представила кроссплатформенный редактор. Полная версия Visual Studio по-прежнему доступна только для Windows, но этот анонс, как и предшествующие действия компании, показывают, что Microsoft нацелена на поддержку других платформ.

Подходы к контролю доступа: RBAC vs. ABAC

Reading time5 min
Views188K
В этой теме хотелось бы познакомить читателей с относительно новым подходом к контролю доступа под названием Attribute-based access control. Знакомство будет происходить на примере сравнения с популярным нынче Role-based access control.
Читать дальше →

Теория категорий для программистов: предисловие

Reading time5 min
Views110K
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.

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

Простейший SMTP сервер для разработок

Reading time2 min
Views27K
Для ленивых и не желающих возиться, сдувать пыль с бубна по настройке exim4/postfix/sendmail предлагается простейший сборщик почты написанный на Python[1].

Его работа заключается в сборе всей почты, посылаемой этому фейковому smtp серверу и складывании её в указанную папку /tmp/mails в виде файлов писем nobody@mail.local.1 с порядковым номером.

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

Управление миграциями БД с Liquibase

Reading time6 min
Views146K
Не так давно мы начали внедрять Liquibase в качестве инструмента миграций схемы данных в большинстве наших проектов, новых и уже существующих. Система миграций схемы базы данных Liquibase хороша тем, что позволяет использовать системы контроля версий, VCS, (например, Git) для управления ревизиями базы данных приложения. Говоря более точно, VCS содержит описание изменений, необходимые для миграции схемы базы данных из одной ревизии в другую.

Хотя миграция схемы базы данных кажется довольно простой задачей изначально, задача становится сложнее после того, как появляется желание откатывать изменения схемы без ее создания заново.
Кроме схемы и операций DDL, Liquibase позволяет мигрировать данные приложения, с поддержкой наката изменений данных и их отката.
Читать дальше →

Старая псина учит новые трюки: Code Kata с использованием QuickCheck

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

Я уже давно слышал про способ тестирования, который используется в QuickCheck, но всё никак не хватало финального толчка, чтобы им заняться вплотную. Этим толчком стала эта презентация от Джона Хьюза, автора этой замечательной библиотеки.

В чём заключается QuickCheck-подход


Описать суть подхода можно довольно просто: мы не создаём тесты-примеры, а вместо этого задаём правила, которые определяют поведение системы на произвольных входных данных. Библиотека сама генерирует большое количество случайных входных данных и проверяет, соответствует ли поведение кода установленным правилам. Если это не так, то она показывает нам, на каком примере происходит падение теста.

Звучит многообещающе? Вполне.

Вот только с какого бока подойти к этому чуду...

Система управления Ansible

Reading time25 min
Views282K


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

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

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

Со всеми сложностями, о которых идет речь выше, мы хорошо знакомы на собственном опыте: у нас имеется 10 точек присутствия с NS-серверами, расположенные в разных точках планеты. На них необходимо регулярно вносить различные изменения: обновлять операционную систему, устанавливать и обновлять различное ПО, изменять конфигурцию и т.п. Мы решили все эти операции автоматизировать и внедрить систему удаленного управления конфигурациями. Изучив имеющиеся решения, мы остановили свой выбор на Ansible.

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

Нефункциональные требования к программному обеспечению. Часть 1

Reading time10 min
Views365K

Введение


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

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

итак, все о НФТ

Безопасное развертывание ElasticSearch сервера

Reading time5 min
Views22K
После успешного перехода c MongoDB полнотекстового поиска на ElasticSearch, мы успели запустить несколько новых сервисов работающих на Elastic'е, расширение для браузера и в общем и целом, я был крайне доволен миграцией.

Но в бочке меда, оказалась одна ложка дегтя — примерно через месяц после конфигурации и успешной работы, LogEntries / NewRelic в один голос закричали о том, что сервер поиска не отвечает. После логина на дешбоард Digital Ocean'a, я увидел письмо от поддержки, что сервер был приостановлен в связи с большим исходящим UDP трафиком, что скорее всего свидетельствовало о том, что сервер скомрометирован.
Читать дальше →

ФИАС или КЛАДР: выбираем справочник адресов

Reading time9 min
Views188K
1 июля 2014 года произошло одно из самых значимых событий в истории государства Российского: с этого момента у нас в стране наконец появилась эталонная база адресов по всем, даже самым малым населённым пунктам! Имя этой базе — ФИАС. Собственно, сам по себе справочник ФИАС появился гораздо раньше, но именно 1 июля вступил в силу ФЗ 443, согласно которому все государственные и муниципальные структуры теперь должны опираться на него как на единственно верную базу адресов. Мы решили исследовать, стоит ли переходить на ФИАС, и с какими подводными камнями столкнутся те, кто решит это делать.

Прочитав статью, вы узнаете:
  • Чем отличается ФИАС от КЛАДР
  • Можно ли уже использовать ФИАС вместо КЛАДР
  • Стоит ли беспокоиться о переходе на ФИАС тем, кто уже работает с КЛАДР
  • Решит ли ФИАС текущие проблемы с адресами
  • Что ждёт тех, кто только начинает использовать адресные справочники
  • Какие есть самые заметные и важные проблемы при работе с ФИАС и КЛАДР

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

Функциональный Javascript. Пишем свои линзы, часть 1

Reading time7 min
Views29K
Привет, хабр.
В данной статье мы познакомимся с линзами, узнаем для чего они нужны, а также реализуем их на JavaScript.

Зачем нужны линзы


Начнем, пожалуй, с ответа на вопрос, зачем же нужны линзы.

В функциональном программировании широко используются неизменяемые структуры данных. Работа с ними значительно отличается по сравнению с изменяемыми данными.

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

Java Agent на службе JVM

Reading time5 min
Views62K

Наверное многие слышали или сталкивались с таким параметром JVM как -javaagent, увидеть этот параметр вы могли используя Jrebel или Plumbr это могло выглядеть например так JAVA_OPTS=-javaagent:[path/to/]jrebel.jar или так -javaagent:/path-to/plumbr.jar
Хотя javaagent появился еще в версии java 1.5, многие разработчики так никогда и не использовали возможности агентов и имеют смутное представление что это такое.
Что же это за агент? Зачем он может нам понадобиться и как написать свой?
Читать дальше →

15 малоизвестных команд Linux

Reading time3 min
Views318K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →

Обзор наиболее интересных материалов по анализу данных и машинному обучению №4 (23 июня — 7 июля 2014)

Reading time5 min
Views9.5K

Прошлый выпуск обзора был полностью посвящен онлайн-курсам по тематике Data Science. Данный выпуск обзора наиболее интересных материалов по анализу данных и машинному обучению будет содержать ссылки на свежие материалы по тематике. В данном выпуске некоторое количество материалов посвящено важной теме визуализации данных. Есть несколько статей, которые описывают небольшие практические примеры анализа данных. Как обычно много статей посвящено алгоритмам машинного обучения, в том числе несколько статей посвящены популярным алгоритмам машинного обучения Deep Learning и Random Forest. Также есть несколько ссылок на интересные видеоматериалы.
Читать дальше →

Обзор наиболее интересных материалов по анализу данных и машинному обучению №3 (обзор онлайн курсов)

Reading time7 min
Views27K

Данный выпуск обзора наиболее интересных материалов по анализу данных и машинному обучению полностью посвящен онлайн-курсам по тематике Data Science. В прошлом выпуске был представлен список онлайн-курсов, стартующих в ближайшее время. В данном выпуске я постарался собрать наиболее интересные онлайн-курсы по теме анализа данных. Стоит отметить, что некоторые курсы уже закончились, но у большинства таких курсов можно посмотреть архив всех учебных материалов.
Начинается обзор с набора курсов от Johns Hopkins University на Coursera, которые объединены в одной специализации «Data Science Specialization», поэтому имеет смысл рассмотреть их отдельно от остальных курсов. Это 9 официальных курсов специализации и два дополнительных Mathematical Biostatistics Boot Camp 1 и 2, которые официально не входят в специализацию. Важно отметить, что весь набор данных курсов регулярно начинается заново и в общем-то можно достаточно гибко построить свой график продвижения по специализации. Большинство курсов длятся 4 недели. Язык R является основным языком программирования в данном наборе курсов. Далее идет список курсов из специализации Data Science от Johns Hopkins University:
Читать дальше →

Вероятностные модели: от наивного Байеса к LDA, часть 1

Reading time6 min
Views37K
Продолжаем разговор. Прошлая статья была переходной от предыдущего цикла о графических моделях вообще (часть 1, часть 2, часть 3, часть 4) к новому мини-циклу о тематическом моделировании: мы поговорили о сэмплировании как методе вывода в графических моделях. А теперь мы начинаем путь к модели латентного размещения Дирихле (latent Dirichlet allocation) и к тому, как все эти чудесные алгоритмы сэмплирования применяются на практике. Сегодня – часть первая, в которой мы поймём, куда есть смысл обобщать наивный байесовский классификатор, и заодно немного поговорим о кластеризации.


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

Дайджест статей по анализу данных №3 (09.06.2014 —22.06.2014)

Reading time5 min
Views20K

Добрый день, уважаемые читатели.
Пролетели 2 недели и пришло время нашей подборки материалов по анализу данных. Сегодняшний дайджест получился большим, и признаюсь често сам осилил не все, что в него попало. Но так как на вкус и цвет товарище нет, то я решил выложить всю подборку.
Итак, из сегодняшней подборки вы узнаете о том как использовать хранилища данных различных типов в одном проекте, посмотрите какими большими данными может обладать бизнес и как их анализ может ему помочь. Также в нашей подборке будет статья посвященная алгоритму FTCA, а также будет материал про сравнени различных алгоритмов машинного обучения.
Читать дальше →

Решение задачи линейной регрессии с помощью быстрого преобразования Хафа

Reading time7 min
Views17K

Введение


Друзья, рассмотрим нынче же задачу линейной регрессии в присутствии выбросового (некоррелированного с сигналом) шума. Эта задача часто возникает при обработке изображений (напр., при цветовой сегментации [1]), в том числе — акустических [2]. В случаях, когда координаты случайных величин можно грубо дискретизовать, а размерность задачи низка (2-3), кроме стандартных методов робастной регрессии можно воспользоваться быстрым преобразованием Хафа (БПХ) [3]. Попробуем сравнить этот последний метод по точности и устойчивости с «классическими».

Использование БПХ для линейной регрессии


Задача линейной регрессии на плоскости состоит в восстановлении линейной зависимости между двумя переменными, заданными в виде множества пар (x, y). Задавшись некоторым уровнем дискретизации координат, можно отобразить это множество на однобитном или целочисленном изображении (в первом случае мы отмечаем только факт наличия в исходных данных точки с примерно такими координатами, во втором — еще и их число). Фактически, речь идет о двумерной гистограмме исходных данных. Таким образом, неформально задача может быть сведена к поиску на изображении прямой, которая наилучшим образом описывает изображенное распределение точек.В обработке изображений в подобных случаях используется преобразование Хафа.

Преобразование Хафа является дискретным аналогом преобразования Радона и ставит в соответствие каждой прямой на изображении сумму яркостей пикселей вдоль нее (то есть одновременно вычисляет всевозможные суммы вдоль дискретных прямых). Можно ввести разумную дискретизацию прямых по сдвигам и наклонам так, чтобы параллельные дискретные прямые плотно упаковывали плоскость, а выходящие из одной точки на одном крае изображения прямые расходились по наклону на противоположном крае на целое число пикселей. Тогда таких дискретных прямых на квадрате n2 будет примерно 4 * n2. Для этой дискретизации существует алгоритм быстрого вычисления преобразования Хафа с ассимптотикой O(n2 * log n). Этот алгоритм является близким аналогом алгоритма быстрого преобразования Фурье, хорошо параллелизуется и не требует никаких операций, кроме сложения. В работе [3] можно прочитать об этом чуть больше, кроме того, там объясняется, почему преобразование Хафа от сглаженного гауссовским фильтром изображения вообще можно применять в задаче линейной регресии. Здесь же мы продемонстрируем устойчивость этого метода.
Читать дальше →

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Registered
Activity

Specialization

Fullstack Developer, Software Architect
Lead
Java
Spring Boot
Hibernate
SQL
Python
Scala
Golang
Apache Kafka
PostgreSQL
JavaScript