Как стать автором
Обновить
26
0.2

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

Отправить сообщение

Типичные взаимные блокировки в MS SQL и способы борьбы с ними

Время на прочтение11 мин
Количество просмотров106K
Чаще всего deadlock описывают примерно следующим образом:
Процесс 1 блокирует ресурс А.
Процесс 2 блокирует ресурс Б.
Процесс 1 пытается получить доступ к ресурсу Б.
Процесс 2 пытается получить доступ к ресурсу А.
В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.


Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии18

Так что же случилось со Сбербанком?

Время на прочтение4 мин
Количество просмотров27K
Вместо эпиграфа:
Пускай слыву я старовером,
Мне всё равно, я даже рад.
Пишу я Гоблина размером,
Пою, друзья, на старый лад
(почти М. Ю. Лермонтов)

Итак,

— Что же произошло с процессингом Сбербанка?
— Произошла ошибка СУБД Oracle, приведшая к остановке экземпляра.

— Что за странные вещи написал вице-президент банка? Какое ещё удаление событий из журналов?
— Обратите внимание, комментарий написан далеко заполночь, и не на специализированном ресурсе типа sql.ru, и не администратором Oracle, а вице-президентом. Странно в такой ситуации ожидать глубокого технического описания. Тем не менее, описание достаточно точное. Чуть ниже будут технические подробности — попробуйте сформулировать «для простого народа» понятнее, чем это получилось у Орловского.

— Ну, давай уже технические подробности!
Читать дальше →
Всего голосов 270: ↑246 и ↓24+222
Комментарии126

LINQ to SQL: паттерн Repository

Время на прочтение10 мин
Количество просмотров55K
Бар LINQВ этой статье будет рассмотрен один из вариантов реализации паттерна репозиторий на базе LINQ to SQL.

Сегодня LINQ to SQL – это одна из технологий Microsoft, предназначенная для решения проблемы объектно-реляционного отображения (object-relational mapping). Альтернативная технология Entity Framework является более мощным инструментом, однако у LINQ to SQL есть свои преимущества – относительная простота и низкоуровневость.

Данная статья — это попытка продемонстрировать сильные стороны LINQ to SQL. Паттерн репозиторий отлично ложится на парадигму LINQ to SQL.
Читать дальше →
Всего голосов 36: ↑29 и ↓7+22
Комментарии25

Прогноз на Specification pattern в Domain layer — ожидаются проблемы

Время на прочтение3 мин
Количество просмотров20K
Data Access Layer – одна из наиболее больных тем.
Написание хорошего слоя доступа к данным – это не тривиальная задача. Примеров реализации невероятно много, но адекватных среди них единицы.
Можно ли считать реализацию шаблона Repository — DAL?
Вот что предлагают MS msdn.microsoft.com/en-us/library/ff649690.aspx
image
А вот и местные работы habrahabr.ru/post/52173
Варианты довольно нормальные.
Но когда я вижу
«Репозиторий – это фасад для доступа к базе данных.»
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии187

Лекция Дмитрия Ветрова о математике больших данных: тензоры, нейросети, байесовский вывод 

Время на прочтение2 мин
Количество просмотров49K
Сегодня лекция одного из самых известных в России специалистов по машинному обучению Дмитрия Ветрова, который руководит департаментом больших данных и информационного поиска на факультете компьютерных наук, работающим во ВШЭ при поддержке Яндекса.

Как можно хранить и обрабатывать многомерные массивы в линейных по памяти структурах? Что дает обучение нейронных сетей из триллионов триллионов нейронов и как можно осуществить его без переобучения? Можно ли обрабатывать информацию «на лету», не сохраняя поступающие последовательно данные? Как оптимизировать функцию за время меньшее чем уходит на ее вычисление в одной точке? Что дает обучение по слаборазмеченным данным? И почему для решения всех перечисленных выше задач надо хорошо знать математику? И другое дальше.



Люди и их устройства стали генерировать такое количество данных, что за их ростом не успевают даже вычислительные мощности крупных компаний. И хотя без таких ресурсов работа с данными невозможна, полезными их делают люди. Сейчас мы находимся на этапе, когда информации так много, что традиционные математические методы и модели становятся неприменимы. Из лекции Дмитрия Петровича вы узнаете, почему вам надо хорошо знать математику для работы с машинным обучением и обработкой данных. И какая «новая математика» понадобится вам для этого. Слайды презентации — под катом.
Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Комментарии16

О собеседованиях (от Эрика Липперта)

Время на прочтение8 мин
Количество просмотров33K
От переводчика
Эрик Липперт — прежде всего известен как ведущий разработчик языка C# (в прошлом), и многие наверняка читали его блог Fabulous adventures in coding. Ранее в MSDN публиковался даже официальный перевод этого блога, что прекратилось после ухода Липперта из Microsoft. Конечно же, нет ничего лучше чтения оригинала, но я решил для разнообразия перевести что-нибудь из недавних постов Эрика. Надеюсь, будет интересно.

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

Вот мои главные цели:
  • не нанимать плохих работников;
  • нанимать хороших работников;
  • оставить кандидата с положительным впечатлением о компании.

Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии35

Западные бестселлеры на нашем книжном рынке. Карьера менеджера IT-проекта

Время на прочтение3 мин
Количество просмотров20K
Добрый день, все хабровчане!

А давайте поговорим о западном бестселлере, перевод которого почему-то прошел незамеченным.
Речь пойдет о книге Г. Лакман Макдауэлл «Карьера менеджера IT-проекта. Как устроиться на работу в ведущую технологическую компанию».
image
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии8

Карьера менеджера IT-проекта. Как устроиться на работу в ведущую технологическую компанию

Время на прочтение3 мин
Количество просмотров33K
image

Издательство Питер решило представить недавно выведшую книгу от автора бестселлера «Карьера программиста», которая поможет вам наилучшим образом подготовиться к собеседованию при приеме на работу менеджером проекта в крупную IT-организацию или перспективный стартап. Основную часть книги составляют ответы на технические вопросы и задания, которые обычно получают соискатели на собеседовании в таких компаниях, как Google, Microsoft, Apple, Amazon и других. Рассмотрены типичные ошибки, которые допускают кандидаты, а также эффективные методики поlготовки к собеседованию.
Читать дальше →
Всего голосов 36: ↑28 и ↓8+20
Комментарии11

Простой websocket-чат на Dart

Время на прочтение9 мин
Количество просмотров15K
Здравствуйте!

В этой статье я хочу описать создание простого websocket-чата на Dart с целью показать, как работать с вебсокетами в Dart. Код приложения доступен на github, а пример его работы можно посмотреть здесь: http://simplechat.rudart.in.

Приложение будет состоять из двух частей: сервера и клиента. Серверную часть мы разберем очень подробно, а из клиентской рассмотрим только то, что отвечает за работу с соединением.

Требования к приложению очень простые — отправка сообщений от пользователя всем или только выбранным участникам чата.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии4

У семи программистов адрес без дома

Время на прочтение4 мин
Количество просмотров98K
Привет, Хабр!

Мы в HumanFactorLabs парсим адреса в особо крупных размерах. Наши продукты упрощают ввод контактных данных и работу с ними.

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

Недавно на Хабре нас попросили привести примеры необычных адресов, в связи с чем и написана эта статья.
Читать дальше →
Всего голосов 104: ↑101 и ↓3+98
Комментарии211

Кейт Матсудейра: Масштабируемая веб-архитектура и распределенные системы

Время на прочтение32 мин
Количество просмотров84K
Шесть месяцев назад ребром встал вопрос о тексте для моего дипломного перевода. Результатом помощи коллективного разума стало решение переводить главу Scalable Web Architecture and Distributed Systems за авторством Kate Matsudaira. Нужно отметить, что это мой первый перевод такого объема и сложности. Текст, был мною относительно успешно переведен, хотя по качеству перевода я поставил бы себе 6-7 из 10. Дабы мои усилия не пропали втуне, публикую результат своих трудов.

По просьбам читателей Хабра, теперь полная версия в виде топика.

The Architecture of Open Source Applications (Volume 2)

Масштабируемая веб-архитектура и распределенные системы


Кейт Матсудейра

Перевод: jedi-to-be.
Коррекция: Anastasiaf15, sunshine_lass, Amaliya, fireball, Goudron.


Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии5

Улучшаем производительность: полезные советы и приёмы в .NET

Время на прочтение8 мин
Количество просмотров32K
Эта статья входит в серию статей по улучшению производительности в .NET. Первую статью можно найти здесь.

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

Открывая очередную статью о производительности, пожалуй каждый резонно ищет ответ на вопросы «а как это может помочь в моих проектах» и «бросать ли все и начинать ли срочно исправлять свой код как описано». Исправлю ошибку прошлой статьи, отвечу сразу и подробнее. На мой взгляд, есть смысл использовать наши хаки в следующих случаях:

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

Я ни в коем случае не призываю вас бежать и исправлять весь код в ваших проектах. Более того, я призываю вас не делать этого, потому что это простые хаки, и скорее всего они будут вноситься бездумно в большое количество кода, а это может повлечь за собой появление новых ошибок. Это не те хаки, которые скинут бабу с воза вашего приложения и заставят кобылу-сервак бежать в десять раз быстрее. В лучшем случае удастся выжать процентов десять. Но с миру по нитке — голому рубашка.
Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии19

Использование async и await в C# — лучшие практики

Время на прочтение8 мин
Количество просмотров225K

Ключевые слова async и await, введённые в C# 5.0, значительно упрощают асинхронное программирование. Они также скрывают за собой некоторые сложности, которые, если вы потеряете бдительность, могут добавить проблем в ваш код. Описанные ниже практики пригодятся вам, если вы создаёте асинхронный код для .NET приложений.
Читать дальше →
Всего голосов 79: ↑69 и ↓10+59
Комментарии24

Предельная производительность: C#

Время на прочтение56 мин
Количество просмотров262K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →
Всего голосов 135: ↑90 и ↓45+45
Комментарии289

NGINX — История перерождения под Windows

Время на прочтение6 мин
Количество просмотров43K
Раз уж тут у нас «неделя» nginx, например тут или тут, то попробую и я внести свою, так сказать, лепту. Речь пойдет про nginx 4 windows, а именно про более-менее официальную сборку для этой пропритарной, некоторыми не очень любимой платформы.

Почему Windows. Все просто, в корпоративном секторе Windows на сервере, да и на рабочих станциях — нередко обязательная программа. И от этих требований к платформе, например в ультимативной форме озвученных клиентом, никуда не денешься.
И раз уж имеем Windows, но не хочется мучиться с IIS, apache и иже с ними, если хочется использовать любимые инструменты, а nginx однозначно к ним относится, то приходится иногда мириться даже с некоторыми ограничениями на этой платформе. Вернее приходилось…

Хотя нужно заметить, что даже с этими ограничениями, nginx даст фору практически любому веб-серверу под windows по многим факторам, в том числе по стабильности, потреблению памяти, а главное производительности.

Спешу сразу поделится хорошей новостью — больше ограничений, критичных к высокой производительности, при использовании nginx под windows практически не существует, и последнее из критичных, с высокой долей вероятности, тоже скоро отпадет. Но по порядку…

Здесь описаны известные проблемы nginx 4 windows, а именно:

  • Рабочий процесс может обслуживать не более 1024 одновременных соединений.
  • Кэш и другие модули, требующие поддержки разделяемой памяти, не работают под Windows Vista и более поздними версиями в связи с тем, что на этих версиях Windows включена рандомизация адресного пространства.
  • Хоть и возможен запуск нескольких рабочих процессов, только один из них реально работает.

Я немного изменил порядок, т.к. именно в такой последовательности я разбирался с этими ограничениями, так сказать отсортировано «исторически».
Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии81

Применение Теории Ограничений для постановки процесса

Время на прочтение5 мин
Количество просмотров20K

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


И тоже самое можно сказать о конфликтах в команде. Когда видишь конфликт интересов но решить его в лоб, административным рычагом, будет не самым правильным выходом. Нужно искать корневую причину конфликта и решать ее.


Алгоритм решения
Всего голосов 13: ↑12 и ↓1+11
Комментарии4

Организация работы с git submodules

Время на прочтение2 мин
Количество просмотров81K
Начиная работать с git у меня почти сразу возник вопрос — как работать с проектом, если некоторые его компоненты часто обновляются. Ярким примером служит разработка с использованием Symfony2. Фреймворк обновляется почти каждый день, нужно постоянно «подтягивать» код, чтоб он работал с последней версией Symfony2.

Под катом маленький workflow по работе с проектом на Symfony2.
Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии24

Тайм-менеджмент для разработчика

Время на прочтение6 мин
Количество просмотров50K
Когда вы только начинаете работать, то у вас все ясно и понятно, задач не так много, вы представляете как с ними работать. Но со временем появляется мысль «у меня столько задач!!! что с ними делать? за что взяться?», либо просто приходит осознание, что задач накопилось очень много. В этом случае вам поможет тайм-менеджмент.

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

Тайм-менеджмент по сути это совокупность действий по тренировке осознанного контроля над временем, посредством которого можно существенно увеличивать свою продуктивность и эффективность.

Как правильно подойти к этому процессу? Мне нравится подход в гибких методологиях разработки. Чем же они так нравятся разработчикам? Думаю, что тем, что их можно подстраивать под себя. Главная идея, из которой я предлагаю исходить — это набор правил, при этом каждый может выбирать из них те, что подходят именно ему, может дополнять, исходя из своих потребностей.

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

Для начала рассмотрим основную идею тайм-менеджмента. То есть возьмем то, что не напугает разработчика.
Читать дальше →
Всего голосов 28: ↑20 и ↓8+12
Комментарии9

Шпаргалка по mongodb: e-commerce, миграция, часто применяемые операции и немного о транзакциях

Время на прочтение40 мин
Количество просмотров67K

Этот пост — небольшая шпаргалка по mongodb и немного длинных запросов с парой рецептов. Иногда бывает удобно когда какие-то мелочи собраны в одном месте, надеюсь, каждый, кто интересуется mongodb, найдет для себя что-то полезное.


Не хотелось бы, чтобы пост воспринимался в ключе холиваров на тему SQL vs. NOSQL И так понятно что везде есть свои плюсы и минусы, в данном случае это просто где-то немного справки, где-то немного примеров из того, с чем приходилось сталкиваться. Примеры на mongo shell и на python.


  1. Миграция в на новые версии в mongodb
  2. Запросы сравнения и логические
  3. Полнотекстовый поиск в Mongodb, regexp, индексы и пр.
  4. Атомарные операторы (модифицирующие данные )
  5. Немного о транзакциях в Mongodb
  6. Агрегационный фреймворк и JOIN-ы в Mongodb
  7. Примеры
  8. Небольшая песочница на Python

Читать дальше
Всего голосов 47: ↑42 и ↓5+37
Комментарии14

Книги по управлению проектами

Время на прочтение2 мин
Количество просмотров31K
Продолжаем публикацию полезной литературы, на этот раз я подготовил для вас небольшую статью о книгах по управлению проектами. Сухая теория или живой, яркий, увлекательный стиль повествования – что из этого вам ближе? А что если описать основные принципы работы в IT-сфере в увлекательном стиле, создавая практически приключенческий роман, где программисты выполняют роль главных героев?

Читать дальше →
Рейтинг0
Комментарии0

Информация

В рейтинге
2 237-й
Зарегистрирован
Активность