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

Software Engineer

Send message

Лучшие CDN для работы в России и в мире: сравнительный обзор

Reading time13 min
Views19K
image

Введение


Сети доставки контента (CDN) в наши дни получили широкое распространение. Это вполне понятно: растёт число интернет-сервисов с глобальной аудиторией, и почти все такие сервисы так или иначе связаны с доставкой тяжелого (фото-, аудио-, видео- и не только) контента.


Число пользователей Интернета, в особенности — мобильного, растёт с каждым днём, и создатели сайтов и приложений вполне закономерно задумываются об обеспечении быстрой работы в любой точке мира. Спрос рождает предложение — и количество компаний, предлагающих услуги CDN, тоже постоянно растёт. Достаточно набрать в Гугле соответствующий запрос — и в поисковой выдаче будет представлено огромное количество рекламных объявлений.


Как выбрать действительно качественного провайдера CDN? На что обратить внимание в первую очередь?


Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments4

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

Reading time9 min
Views5K

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

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

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

Какие английские слова IT-лексикона мы неправильно произносим чаще всего

Reading time5 min
Views171K
Пока пара новых статей на технические темы еще в процессе написания, я решил опубликовать небольшой лингвистический материал. Достаточно часто замечаю, что коллеги, у которых английский язык — не родной, неправильно произносят некоторые характерные для IT сферы слова. И дело здесь не в том, насколько аутентично произносятся отдельные звуки, а именно в транскрипции. Регулярно встречал ситуации при общении с носителями, когда неправильно произносимое слово приводило к недопониманиям.

Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
Читать дальше →
Total votes 309: ↑308 and ↓1+307
Comments486

Мониторинг мёртв? — Да здравствует мониторинг

Reading time15 min
Views34K


Наша компания с 2008 года занимается преимущественно управлением инфраструктурами и круглосуточной технической поддержкой веб-проектов: у нас более 400 клиентов, это порядка 15% электронной коммерции России. Соответственно, на поддержке очень разнообразная архитектура. Если что-то падает, мы обязаны в течение 15 минут это починить. Но чтобы понять, что авария произошла, нужно мониторить проект и реагировать на инциденты. А как это делать?

Я считаю, что в организации правильной системы мониторинга происходит беда. Если бы беды не было, то мой спич состоял из одного тезиса: «Установите, пожалуйста, Prometheus + Grafana и плагины 1, 2, 3». К сожалению, теперь так не работает. И главная проблема заключается в том, что все продолжают верить во что-то такое, что существовало в 2008 году, с точки зрения программных компонентов.

В отношении организации системы мониторинга я рискну сказать, что… проектов с грамотным мониторингом не существует. И ситуация настолько плохая, если что-то упадёт, есть риск, что это останется незамеченным — все ведь уверены, что «всё мониторится».
Возможно, всё мониторится. Но как?

Все мы сталкивались с историей наподобие следующей: работает некий девопс, некий админ, к ним приходит команда разработчиков и говорит — «мы зарелизились, теперь замониторь». Что замониторь? Как это работает?

Ок. Мониторим по старинке. А оно уже изменяется, и выясняется, что ты мониторил сервис А, который стал сервисом B, который взаимодействует с сервисом C. Но команда разработчиков тебе говорит: «Поставь софт, он же должен все замониторить!»

Так что изменилось? — Всё изменилось!
Читать дальше →
Total votes 62: ↑56 and ↓6+50
Comments24

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

Reading time6 min
Views9.7K

image


Введение


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


Задача


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

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

Немного об арифметике

Reading time7 min
Views34K
Вы когда-нибудь задумывались о том, как мы считаем? Как устроен счет на низком уровне? Например, как выглядят на прямой единичные отрезки в выражении 1 + 1 = 2. Или что такое квадратный корень из $i$.

Счет появился не просто чтобы считать, а чтобы посчитать какие-то объекты. Например, количество яблок или антилоп в стаде. То есть всегда есть единица измерения.
Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments39

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

Reading time3 min
Views19K

Введение


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

Дано $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
Comments9

Уязвимость ВКонтакте: отправляем сообщение с кодом восстановления страницы на чужой номер

Reading time5 min
Views128K


Обычным весенним днем, занимаясь «подготовкой» к ЕГЭ по информатике, наткнулся на статью об уязвимости Facebook, позволявшей взломать все аккаунты в социальной сети, за которую выплатили 15000$. Суть уязвимости заключалась в переборе кодов восстановления на тестовом домене компании. Я подумал, а чем собственно ВКонтакте хуже? И решил попробовать провернуть подобный трюк у них. Зная, что веб-версия уже достаточно хорошо исследована, жертвой должен был стать Android клиент, а что из этого вышло можно прочитать под катом.
Total votes 221: ↑219 and ↓2+217
Comments144

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

Reading time5 min
Views16K
image

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

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

image

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

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

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

Reading time4 min
Views37K
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
Comments11

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

Reading time4 min
Views22K
logo

Введение


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

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

Reading time4 min
Views8.6K


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

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

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

    image

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

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

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

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

Reading time3 min
Views46K
image

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

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

image

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

image

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

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

Information

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