Pull to refresh
35
0
Петр Осетров @ParadoxFilm

Software Engineer

Send message

Dhaf — сделать свой веб-сервис отказоустойчивым доступно для каждого

Reading time 9 min
Views 4.9K

Здравствуйте, уважаемые читатели.

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

Читать далее
Total votes 17: ↑16 and ↓1 +15
Comments 4

ASP.NET Razor: решение некоторых проблем с архитектурой для модели представления

Reading time 6 min
Views 9.6K

image


Введение


Здравствуйте, коллеги!
Сегодня хочу поделиться с вами своим опытом разработки архитектуры View Model в рамках разработки веб-приложений на платформе ASP.NET, используя шаблонизатор Razor.
Описываемые в данной статье технические реализации подходят для всех актуальных на текущей момент версий ASP. NET (MVC 5, Core, etc). Сама статья предназначена для читателей, которые, по меньшей мере, уже имели опыт работы под данным стеком. Также стоит отметить, что в рамках данной мы не рассматриваем саму пользу View Model и её гипотетическое применение (предполагается, что читатель уже знаком с данными вещами), обсуждаем непосредственно реализацию.


Задача


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

Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Comments 71

Интерполяционный многочлен на произвольных функциях

Reading time 3 min
Views 19K

Введение


Приветствую, уважаемые читатели! Сегодня предлагаю поразмышлять о следующей задачке:

Дано $n$ пар точек на плоскости $(x_1;y_1),...,(x_n;y_n)$. Все $x_i$ различны. Необходимо найти многочлен $M(x)$ такой, что $M(x_i)=y_i$, где $i\in\{1,...,n\}$

Переводя на русский язык имеем: Иван загадал $n$ точек на плоскости, а Мария, имея эту информацию, должна придумать функцию, которая (по меньшей мере) будет проходить через все эти точки. В рамках текущей статьи наша задача сводится к помощи Марии окольными путями.

«Почему окольными путями?» — спросите вы. Ответ традиционный: это статья является продолжением серии статей дилетантского характера про математику, целью которых является популяризация математического мира.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 9

Russian Minesweeper — мультиплеерная версия игры «Сапёр»

Reading time 5 min
Views 16K
image

Здравствуйте, уважаемые читатели. Искренне надеюсь, что среди читателей Хабра найдутся любители такой замечательной игры как «Сапёр».

Если верно помню, то впервые эта игра появилась на операционной системе Windows 3.1 ещё в далеком 1994-ом году. В то время эта игра позиционировалась как средство для обучения использованию компьютерной мыши и в целом графическому интерфейсу ОС. Выглядела она примерно так:

image

Принцип игры согласно Wikipedia
Плоское или объёмное игровое поле разделено на смежные ячейки (квадраты, шестиугольники, кубы и т. п.), некоторые из которых «заминированы»; количество «заминированных» ячеек известно. Целью игры является открытие всех ячеек, не содержащих мины.
Игрок открывает ячейки, стараясь не открыть ячейку с миной. Открыв ячейку с миной, он проигрывает. Мины расставляются после первого хода, поэтому проиграть на первом же ходу невозможно. Если под открытой ячейкой мины нет, то в ней появляется число, показывающее, сколько ячеек, соседствующих с только что открытой, «заминировано» (в каждом варианте игры соседство определяется по-своему); используя эти числа, игрок пытается рассчитать расположение мин, однако иногда даже в середине и в конце игры некоторые ячейки всё же приходится открывать наугад. Если под соседними ячейками тоже нет мин, то открывается некоторая «не заминированная» область до ячеек, в которых есть цифры. «Заминированные» ячейки игрок может пометить, чтобы случайно не открыть их. Открыв все «не заминированные» ячейки, игрок выигрывает.

Однако, время идет, популярность сапера падает, и хочется внести новую жизнь и краски в эту игру. Именно так и родилась мультиплеерная версия игры, именованная как "Russian Minesweeper", которая представляет собой браузерную онлайн игру. Заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 49

Решение линейных диофантовых уравнений с любым числом неизвестных

Reading time 4 min
Views 37K
image

Здравствуйте, уважаемые читатели! Продолжаю серию дилетантских статей о математике.


Сегодня предлагаю поразмышлять над некоторой интересной математической задачкой.
А именно, давайте-ка для разминки решим следующее линейной уравнение:

$5a+8b+3c+2d = 17$


«Чего сложного?» — спросите вы. Действительно, лишь одно уравнение и целых четыре неизвестных. Следовательно, три переменных есть свободные, а последняя зависит от оных. Так давайте выразим скорее! Например, через переменную $a$, тогда множество решений следующее:

$ \begin{cases}\displaystyle{ a= \frac{17-8b-3c-2d}{5}\\ b,c,d\in\mathbb{R} } \end{cases} $


где $\mathbb{R}$ — множество любых действительных чисел.

Что же, решение действительно оказалось слишком тривиальным. Тогда будем нашу задачу усложнять и делать её более интересной.

Вспомним про линейные уравнения с целыми коэффициентами и целыми корнями, которые, собственно, являются разновидностью диофантовых уравнений. Конкретно — наложим на наше уравнение соответствующие ограничение на целочисленность коэффициентов и корней. Коэффициенты при неизвестных у нас и так целые ($5; 8; 3; 2; 17$), а вот сами неизвестные необходимо ограничить следующим:

$ a,b,c,d \in \mathbb{Z} $


где $\mathbb{Z}$ — множество целых чисел.

Теперь решение, полученное в начале статьи, «не проканает», так как мы рискуем получить $a$ как рациональное (дробное) число. Так как же решить это уравнение исключительно в целых числах?

Заинтересовавшихся решением данной задачи прошу под кат.
Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Comments 11

Немного о приватности реальных Git-репозиториев

Reading time 4 min
Views 22K
logo

Введение


Здравствуйте, уважаемые читатели. Сегодня на повестке дня у нас небольшое тестирование —
первых ≈100 тысяч по популярности сайтов в интернете (ранжирование на основе статистики посещаемости с Alexa Rank). Стоит отметить, что оное тестирование будет достаточно узконаправленным, а именно — проверим каждый сайт на предмет существования и открытости Git-репозитория без аутентификации прямо из веба по url-адресу искомого. Напомню, что такая брешь в безопасности зачастую позволяет прочитать актуальные исходные коды на сервере, получить чувствительную информацию (файлы конфигов, структуру системы и т.д.) и, в последствии, получить определенного рода права на сервере. Рай для различного рода негодяев, да и только :)
Совершенно аналогичную проверку я делал для себя порядка 100 дней назад, и сегодня мы сделаем это ещё раз, посмотрим что изменилось и что с этим делать.
Разумеется, использовать будем список сайтов, полученный в рамках первого тестирования.
Для заинтересовавшихся милости прошу под кат.
Читать дальше →
Total votes 41: ↑39 and ↓2 +37
Comments 36

Алгоритм нахождения эквивалентных точек оси абсцисс функции многочлена

Reading time 4 min
Views 8.6K


Уважаемые хабровчане, приветствую! Продолжаем цикл околоматематических статей, предыдущая расположена тут. Напомню, что я лишь дилетант математики, занимающийся её морально-эстетической стороной, и мои идеи могут показаться вам неинтересными/бесполезными/etc. Итак:

Для начала верным шагом будет введение аксиоматики на счет термина «эквивалентности» в данном контексте:

  • Если некоторая координата оси абсцисс image из числового множества удовлетворяет следующему условию:

    image

    То считается, что image (то есть image эквивалентна image)

Такая аксиоматика в рамках этой статьи удобства ради, и, строго говоря, не совсем корректна.

И сразу бы неплохо ответить на традиционный вопрос: «извините, а зачем это надо?». Отвечаю — как минимум, для поиска остальных корней уравнения многочлена (перейдя от уравнения к функции), зная лишь один корень. А также многообразие менее очевидных вещей. Сейчас мы и займемся разрешением этой задачи, а затем приведем алгоритм в общем виде. Для заинтересовавшихся милости прошу под кат.
Читать дальше →
Total votes 26: ↑21 and ↓5 +16
Comments 27

Решение квадратных уравнений через производные

Reading time 3 min
Views 46K
image

Здравствуйте, уважаемые читатели. После прочтения статьи у вас, вероятно, возникнет закономерный вопрос: «А зачем, собственно, это надо?». В силу этого сперва считаю необходимым заблаговременно сообщить, что искомый метод решения квадратных уравнений представлен скорее с морально-эстетической стороны математики, нежели со стороны практического сухого применения. Также заранее извиняюсь перед теми читателями, которые посчитают мои дилетантские изречения неприемлемыми. Итак, начнем забивать гвозди микроскопом.

Имеем алгебраическое уравнение второй степени (оно же квадратное) в общем виде:

image

Перейдем от квадратного уравнения к квадратичной функции:

image

Где, очевидно, необходимо найти такие значения аргумента image функции, в которых оная возвратила бы ноль.

Кажется, нужно просто решить квадратное уравнение с помощью теоремы Виета или через дискриминант. Но мы ведь собрались здесь не для этого. Давайте-ка лучше возьмем производную!
Читать дальше →
Total votes 56: ↑36 and ↓20 +16
Comments 25

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity