Pull to refresh
11
0
Лейбов Евгений @LionSoft

Developer

Send message

Проблема с периодически долго выполняемыми запросами в MS SQL Server

Reading time4 min
Views89K

Предисловие


Есть информационная система, которую я администрирую. Система состоит из следующих компонент:

1. База данных MS SQL Server
2. Серверное приложение
3. Клиентские приложения

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

Автообновление статистики выставлено в свойствах самой базы данных. Также статистика обновляется по дефрагментированному индексу.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments73

Реверс хрома и установка расширений

Reading time6 min
Views11K


Доброго времени суток, дорогой читатель! Хром обновляется, но новых статей про то, как программно установить расширение в хром нет, помимо --load-extension — но это не наш вариант, ведь мы не ищем легких путей. Сегодня расскажу как действительно можно одним exe-шником получить всё: пароли, подменять контент, как можно совершить кражи и т.п. — но это не призыв к действию, а лишь статья для ознакомления. Весь сок под катом.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments13

Работа с часовыми поясами в JavaScript

Reading time16 min
Views92K


Недавно я работал над задачей добавления часовых поясов в JS-библиотеку календаря, которую ведёт моя команда. Мне было хорошо известно о никудышной поддержке часовых поясов в JavaScript, но я надеялся, что абстрагирование имеющихся объектов данных позволит легко решить большинство трудностей.

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

В этой статье я хочу обсудить, с чем я столкнулся и как это решал. Пока я писал текст, осознал, что причиной всех невзгод было плохое понимание мной самой темы часовых поясов. В свете этого осознания я предлагаю сначала подробно поговорить об определении и стандартах, а уже потом переходить к JavaScript.
Читать дальше →
Total votes 90: ↑84 and ↓6+78
Comments14

Cassandra для хранения метаданных: успехи и провалы

Reading time31 min
Views20K
Каким требованиям должно удовлетворять хранилище метаданных для облачного сервиса? Да не самого обычного, а для enterprise с поддержкой географически распределенных датацентров и Active-Active. Очевидно, система должна хорошо масштабироваться, быть отказоустойчивой и хотелось бы, чтобы было возможно реализовать настраиваемую консистентность операций.

Под все эти требования подходит только Cassandra, а ничто другое не подходит. Надо заметить, Cassandra действительно классная, но работа с ней напоминает американские горки.


В докладе на Highload++ 2017 Андрей Смирнов (smira) решил, что о хорошем говорить неинтересно, зато подробно рассказал, про каждую проблему, с которой пришлось столкнуться: про потерю и порчу данных, про зомби и потерю производительности. Эти истории и вправду напоминают катание на горках, но на все проблемы находится решение, за которым добро пожаловать под кат.

О спикере: Андрей Смирнов работает в компании Virtustream, реализующей облачное хранилище для enterprise. Идея состоит в том, что условно Amazon делает облако для всех, а Virtustream делает специфические вещи, которые необходимы большой компании.

Total votes 38: ↑37 and ↓1+36
Comments16

ASP.NET Core: Механизмы предотвращения атак 2.0

Reading time20 min
Views24K

По встроенным механизмам безопасности ASP .NET Core написано мало статей. Даже официальная документация имеет пробелы. В этой статье мы пройдём по всем основным компонентам, имеющим отношение к безопасности, и разберём, как это работает внутри.


Если вы используете старый добрый ASP .NET, то для вас будет полезна информация по внутреннему устройству компонентов безопасности и лучшим практикам их использования. Здесь вы найдёте ответы на следующие вопросы: как реализованы современные анти-XSS механизмы и как их правильно использовать в ASP .NET Core? Как правильно работать с cookies и какие подводные камни там могут встретиться? Как был переписан механизм защиты от CSRF? Как правильно работать с криптографическими алгоритмами? Кроме того, рассказывается про опыт участия в Bug Bounty по поиску уязвимостей в ASP .NET Core.


Перед чтением рекомендуется освежить в памяти атаки из списка OWASP Top 10.


Прототипом статьи является доклад Михаила Щербакова на конференции DotNext 2017 Moscow. Михаил — Microsoft .NET MVP, участник .NET Core Bug Bounty Program, соорганизатор сообщества .NET программистов (Московское комьюнити называется MskDotNet, питерское — SpbDotNet). По работе последние 5 лет занимается безопасностью. Работал в Positive Technologies, в Cezurity, сейчас как консультант работает напрямую с заказчиками, по большей части в этой же сфере. Профессиональные интересы: статический и динамический анализ кода, информационная безопасность, автоматизация отладки кода, исследование внутреннего устройства .NET CLR.


В этом тексте огромное количество картинок со слайдов. Осторожно, трафик!

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments2

Динамический Angular или манипулируй правильно

Reading time16 min
Views102K
image

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

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments17

Всё о версиях Windows 8.1 и о том, как легально загрузить последний образ без подписки

Reading time6 min
Views767K
Хочу поделиться в одной заметке важной, на мой взгляд, информацией о версионности образов Windows 8.1, и о том, как любой желающий может совершенно легально загрузить ту языковую версию и издание, которые ему требуется. С учётом того, что после выхода Windows 8.1 образы пересобирались минимум пять раз, вопрос версионности становится интересным для администраторов и энтузиастов.

Недавно я писал о том, как можно совершенно легально загрузить самый последний Microsoft Office с сайта Microsoft — как корпоративную версию, так и коробочную Retail — любые языки и продукты, со всеми интегрированными обновлениями. Сегодня я расскажу, как сделать то же самое и с операционной системой — средствами предоставляемыми самой Microsoft.

Но для начала я хочу рассказать о версиях Windows 8.1. Не об изданиях — этого добра в сети много, а именно о публичных версиях сборок ОС. Ведь для любого администратора удобно загрузить образ со всеми интегрированными обновлениями, чем устанавливать сотню самостоятельно. Причём загрузить образ с сайта Microsoft, а не самодельную сборку с торрентов. Всё что я буду рассказывать о версиях ОС Windows 8.1 применимо и к Windows Server 2012 R2, за исключением канала для бесплатной загрузки образов для переустановки ОС. Но давайте всё по порядку.
Читать дальше →
Total votes 75: ↑71 and ↓4+67
Comments60

Мигрируем на HTTPS

Reading time5 min
Views124K
В переводе этого документа описываются шаги, которые необходимо предпринять для перевода вашего сайта с HTTP на HTTPS. Шаги можно выполнять с любой скоростью – либо всё за день, либо один шаг за месяц. Главное, делать это последовательно.

Каждый шаг улучшает ваш сервер и важен сам по себе. Однако, сделать их все – обязательно для того, чтобы гарантировать безопасность вашим посетителям.
Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments16

Entity Framework: повышаем производительность при сохранении данных в БД

Reading time10 min
Views54K
При добавлении/изменении большого количества записей (10³ и выше), производительность Entity Framework оставляет желать лучшего. Причиной этому являются как архитектурные особенности самого фреймворка, так и неоптимальный генерируемый SQL. Забегая вперед — сохранение данных в обход контекста сокращает время выполнения на порядки.

Содержание статьи:
1. Insert/Update стандартными средствами Entity Framework
2. Поиск решения проблемы
3. Интеграция Entity Framework и SqlBulkCopy
4. Продвинутая вставка с использованием MERGE
5. Сравнение производительности
6. Выводы
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments11

Управление данными с помощью протокола OData

Reading time3 min
Views62K
Open Data Protocol (OData) – это открытый веб-протокол для запроса и обновления данных. Протокол позволяет выполнять операции с ресурсами, используя в качестве запросов HTTP-команды, и обмениваться данными в форматах JSON или XML.

OData является одним из лучших стандартов для создания RESTful API.

Вы можете запрашивать данные используя простые HTTP запросы, например:
https://samples.databoom.space/api1/sampledb/collections/persons?$filter=firstname eq 'Lamar'
Найти всех людей по имени Lamar.

OData позволяет задавать огромное число параметров, которые позволяют сформировать очень сложные запросы к источнику данных, например:
https://samples.databoom.space/api1/sampledb/collections/books?$filter=publisher/president/likes/author/firstname eq 'Georgie'&$top=10&$orderby=title
Выбрать все книги, удовлетворяющие следующему условию: президент издательства в котором издана книга, любит книги некоего автора с именем “Georgie”. Результат запроса необходимо отсортировать по названию, выдать первые 10 книг.

Язык запросов OData сопоставим по мощности с SQL.
Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments21

Задача коммуникации между вкладками и выявления активной вкладки

Reading time4 min
Views19K
Наглядный пример задачи — сайт vk.com. Каждый раз, когда вы воспроизводите музыку или видео в одной вкладке, в других вкладках воспроизведение останавливается. И если вы обратитесь в интернет за помощью в решении данной задачи, то наверняка найдете описание Storage Events или Page Visibility API или даже готовые решения, к примеру Visibility.js.

На хабре уже был обзор этих вещей, к примеру вот и ещё.



Я прошел по этому пути, но не одно из решений меня не устроило. Мне хотелось чего-нибудь простого, легковесного и не требующего глубокого изучения деталей.
Под катом обзор решения, которое я в итоге сам и написал. Спасибо phpdude за наводку
Total votes 24: ↑23 and ↓1+22
Comments24

Пишем расширения c Roslyn к 2015 студии (часть 2)

Reading time6 min
Views7K
… Эта статья является продолжением первой части о написании расширений к студии с Roslyn.

Тут я буду описывать что делать, если мы хотим сгенерировать/поменять какой-нибудь код. Для генерации кода мы будем статические методы класса SyntaxFactory. Некоторые методы требуют указать ключевое слово/тип выражения/тип токена, для этого есть перечисление — SyntaxKind, который содержит все это вместе.

Хорошо, давайте для примера сгенерируем код, содержащий число 10. Это делается просто.

SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal(10))

Я не шутил, когда говорил, что чтобы создать код проще всего распарсить строку. Благо, SyntaxFactory предоставляет кучу методов для этого (ParseSyntaxTree, ParseToken, ParseName, ParseTypeName, ParseExpression, ParseStatement, ParseCompilationUnit, Parse*List).

Но это не путь настоящего самурая.
Давайте генерировать по пути самурая
Total votes 27: ↑27 and ↓0+27
Comments2

WPF: Binding без тривиальных конвертеров

Reading time8 min
Views39K
Добрый день!

Всякий раз, когда я начинал писать новый проект на WPF, меня мучала мысль: почему для того, чтобы привязаться к отрицанию булевой переменной или перевести булеву переменную в тип Visibility, необходимо писать свой конвертер, который потом еще указывать в каждом Binding? А уж если нам необходимо вывести сумму двух чисел, или просто поделить число на 2, требуется написать столько кода, что уже складывать и делить ничего не хочется.

Для решения этой проблемы раз и навсегда я написал аналог стандартного биндинга, позволяющий привязываться к любому выражению от одного или нескольких источников привязки. О том, как это работает и как этим пользоваться, я хочу рассказать подробнее.
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments44

OAuth 2.0 простым и понятным языком

Reading time7 min
Views789K
Логотип OAuth 2.0

На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.

Что такое OAuth 2.0


OAuth 2.0 — протокол авторизации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе. Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав, а не все сразу.

Читать дальше →
Total votes 168: ↑153 and ↓15+138
Comments44

Путешествия во времени и программирование 2: парадоксы

Reading time26 min
Views216K


Эпоха путешествий во времени еще не наступила, а человечество уже давно пытается разрешить сопутствующие им парадоксы. Мы поговорим о самом очевидном из них: что же все-таки произойдет при вмешательстве в ход истории? Существует несколько вариантов того, как поток времени реагирует на действия путешественника из будущего. Эти модели можно увидеть в фантастических фильмах, о них все больше начинают говорить ученые, но какая модель ближе к истине — единого мнения пока нет. Мы только начинаем проникать в тайны времени, и еще не обладаем возможностью экспериментировать с перемещениями в прошлое. Что же можно прояснить в данном вопросе уже сейчас? Под катом нас ждет экскурсия по основам механики времени, мы порассуждаем о парадоксах, и проведем небольшой эксперимент. Да, это будет испытание виртуальной машины времени, построенной на основе алгоритма «Жизнь»!
Читать дальше →
Total votes 371: ↑351 and ↓20+331
Comments440

Код, которого нет

Reading time7 min
Views89K
Привет, хабравчане!

Около года назад Хабр захлестнула волна постов на тему "%string% в N строчек на JavaScript". Уже и не вспомню, чем все закончилось, но началось все с «Excel в 30 строк». Следом появилось много и других интересных вариаций на эту тему, даже игра в ноль строк на JS, но это уже совсем другая история…

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

Я попробовал добавить немного магии и вот что у меня получилось.

image
Сим салабим!
Total votes 125: ↑111 and ↓14+97
Comments57

Создание AngularJS приложения c использованием Firebase

Reading time4 min
Views24K
В этой статье я хочу рассказать о связке AngularJS и Firebase в качестве хранилища данных.

Про AngularJS на Хабре написано много, а вот про Firebase совсем чуть-чуть. По этому я решил заполнить этот пробел. Что же такое Firebase?

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

Также Firebase предоставляет замечательную библиотеку для AngularJS — AngularFire.

Используя AngularJS и его прекрасный двусторонний дата биндинг вместе с Firebase, мы можем получить трехстороннюю синхронизацию данных. Однако, обо всем по порядку.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments9

Писать плагины с AppDomain — весело

Reading time12 min
Views20K
Как часто вы писали плагины для своих приложений?

В статье я хочу рассказать как можно написать плагины используя AppDomain, и кросс доменные операции. Плагины будем писать для уже существующего моего приложения TCPChat.

Кто хочет повелосипедить — вперед под кат.
Читать дальше →
Total votes 22: ↑15 and ↓7+8
Comments5

Использование angular-translate для локализации приложений AngularJS

Reading time9 min
Views29K
Привет, Хабр! В этой статье речь пойдет о применении библиотеки angular-translate для локализации приложения. Расскажем о возможностях этой библиотеки, опишем проблемы, которые могут возникнуть, и дадим советы по их решению (основываясь, конечно, на собственном опыте).

Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments5

ASP.NET vNext Ликбез

Reading time5 min
Views41K
Ожидаемый релиз платформы ASP.NET (vNext) один из наиболее насыщенных в плане новшеств. Но вместе со всеми новинками к нам приходит и огромное число новых спецификаций, компонентов и других особенностей. В то же время мир .NET эволюционирует с такой скоростью, что просто следить за всеми новинками web-разработки от Microsoft почти не возможно. Особенно если вы до сих пор пишете на технологиях 10-летней давности (ASP.NET Web Forms, .NET 2.0) или выходец не из .NET мира веб-разработки. Возможно именно сейчас один из тех моментов когда можно пропустить все версии предыдущих обновлений и, начав с чистого листа, попасть в новый поток развития платформы. Рассмотрим основные пункты для этого:
  • vNext
  • Roslyn
  • OWIN
  • Katana
  • K

Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments15
1
23 ...

Information

Rating
Does not participate
Location
Запорожье, Запорожская обл., Украина
Date of birth
Registered
Activity