Pull to refresh
59
0
Святослав Елизаров @DukeGonzo

Deep learning

Send message

Условие «WHERE» по составным ключам в Entity Framework

Reading time4 min
Views17K
Совсем недавно при разработке проекта с версионностью, я столкнулся с проблемой выборки элементов по списку составных ключей.

Описание проблемы:

При разработке «в условиях» версионности primary key таблиц состоит из Id и Revision. Нужно получить выборку из таблицы БД по передаваемому списку составных ключей (Id, Revision). Такой SQL запрос выглядел бы так (для пяти элементов в списке):
/* Запрос 1 */
select *
from dbo.[Items] i
where  (i.Id = 1 and i.Revision = 2) 
	OR (i.Id = 1 and i.Revision = 4)
	OR (i.Id = 3 and i.Revision = 3)
	OR (i.Id = 3 and i.Revision = 4)
	OR (i.Id = 5 and i.Revision = 9)

Но Entity Framework не позволяет написать такой запрос для списка составных ключей. Максимум что можно сделать стандартными средствами это:
context.Items.Where(i=> idList.Contains(i.Id) && revisionList.Contains(i.Revision))

что превратится в такой запрос (концептуально):
/* Запрос 2 */
select *
from dbo.[Items] i
where i.Id in (1, 3, 5) and i.Revision in (2, 3, 4, 9)

Этот запрос будет выдавать неверные результаты, если таблице Items есть элементы с такими идентификаторами:
Id = 3, Revision = 2
Id = 3, Revision = 4
А в списке составных ключей есть такие строчки:
Id = 5, Revision = 4
Id = 3, Revision = 2

Так как же быть?
Читать дальше →
Total votes 28: ↑22 and ↓6+16
Comments21

Обучаем компьютер чувствам (sentiment analysis по-русски)

Reading time12 min
Views83K


Sentiment analysis (по-русски, анализ тональности) — это область компьютерной лингвистики, которая занимается изучением мнений и эмоций в текстовых документах. Недавно на хабре появилась статья про использование машинного обучения для анализа тональности, однако, она была настолько плохо составлена, что я решил написать свою версию. Итак, в этой статье я постараюсь доступно объяснить, что такое анализ тональности, и как реализовать подобную систему для русского языка.
Читать дальше →
Total votes 90: ↑85 and ↓5+80
Comments40

Автоматический анализ текста без модераторов

Reading time3 min
Views13K
Недавно на Хабре появилась статья об автоматическом реферировании статей. Так случайно получилось, что я тоже занимаюсь автоматическим анализом текстов и добился в этом некоторых успехов.

Мне удалось добиться того, чтобы алгоритм находил повторяющиеся и близкие по содержанию тексты. Также он автоматически определяет близость текста к определенным тематикам и выделяет из общей массы те тексты, которые составляют некоторый мэйнстрим. То есть, читателю не придется просеивать всю информацию, чтобы понять главное. С увеличением объема анализируемых текстов автоматически будет отсеяно все некачественное, неинтересное, нецензурное, неактуальное, и т.п.
Читать дальше →
Total votes 65: ↑52 and ↓13+39
Comments107

Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов

Reading time4 min
Views44K
Ранее я показал элементарную реализацию алгоритма шинглов, позволяющую определять, являются ли два документа почти дубликатами или нет. В этот раз я поясню реализацию алгоритма, описанную Зеленковым  Ю. Г. и Сегаловичем И.В. в публикации «Сравнительный анализ методов определения нечетких дубликатов для Web-документов».
Этим я начинаю серию из трех теоретических статей, в которых постараюсь доступным языком описать принцип алгоритмов шинглов, супершинглов и мегашинглов для сравнение веб-документов.
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments103

Обработка сложных событий с помощью цепочек

Reading time10 min
Views6.3K
В статье описывается метод обработки сложных событий с помощью цепочек. В качестве практического приложения была выбрана относительно простая задача — прогнозирование движения валютного курса.

При построении цепочек использовалась методология, описанная в статье “Автоматический анализ текстов без модераторов” и в комментариях к ней. После описания алгоритма будут предложена стратегия с положительным математическим ожиданием прибыли.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments18

Автоматическое реферирование статей на русском языке

Reading time1 min
Views25K
Тема автоматического реферирования/аннотирования текста была поднята давно и было придумано множество способов ее реализации. Так как желание знать главное есть у всех, но это, как правило, связано с просмотром множества материалов.

Готовые библиотеки найти не так легко, а то, что есть, слабо конфигурируется, не доделано и, главное, работает только для английского языка. Я захотел исправить этот недостаток и вот что получилось.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments21

Сервис для создания планировок помещений и интерьеров

Reading time4 min
Views58K


Ровно год назад, мы с партнером, решили стать стартаперами. Точнее, поняли, что теперь мы партнеры-стартаперы. То как поменялась после этого наша жизнь — тема отдельной статьи. Сейчас хотелось бы уделить внимание нашему детищу — сервису планирования помещений и интерьеров.

Итак, пару лет назад, оба фаундера практически одновременно попали в жизненную ситуацию, которая бывает у всех — настало время ремонта.

Что из этого вышло
Total votes 165: ↑159 and ↓6+153
Comments176

Трехмерная визуализация в реальном времени для архитектуры и промышленного дизайна

Reading time1 min
Views15K


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

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

Читать дальше →
Total votes 27: ↑21 and ↓6+15
Comments21

Турбокнопка против прокрастинации

Reading time3 min
Views41K
Иногда бывает сложно заставить себя начать заниматься каким-нибудь важным, но неприятным делом. Вместо него мозг начинает хвататься за любые другие дела, зачастую, менее важные, а подчас, и вовсе бесполезные.

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

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

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

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

Читать дальше →
Total votes 92: ↑82 and ↓10+72
Comments90

Знакомство с АОП

Reading time10 min
Views127K

Парадигмы программирования


В современном мире IT-разработки существует довольно большое множество различных подходов к написанию программ. Так, например, кому-то нравиться представлять программу в виде последовательности действий, а кто-то считает, что программа должна представлять собой множество объектов, общающихся друг с другом. Совокупности этих идей и понятий образуют своего рода стиль написания программы, который принято назвать – парадигма программирования.

У каждой парадигмы есть свои особенности, однако, главным фактором, различающим их, является понятие основной единицы программы. Вот самые популярные из них:
  • инструкция (императивное программирование, FORTRAN/C/PHP),
  • функция (функциональное программирование, Haskell/Lisp/F#/Scala),
  • прототип (прототипное программирование, JavaScript),
  • объект (объектно-ориентированное программирование, С++/Java),
  • факт (логическое программирование, PROLOG).

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

В этой статье я хочу рассказать о сравнительно молодой, но крайне, на мой взгляд, полезной парадигме программирования – аспектно-ориентированном программировании.

Читать дальше →
Total votes 105: ↑101 and ↓4+97
Comments70

Closures и полное копирование объекта

Reading time3 min
Views10K
Сегодня передо мной встала задача сделать полную копию объекта, то есть DeepClone. Рассмотрим некоторый код и я покажу какие проблемы при этом могут возникнуть и как их решить.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments54

Обработка всех исключений в контроллерах с помощью атрибута

Reading time3 min
Views14K
Всё мы знаем, что в ASP.NET MVC есть такой атрибут HandleErrorAttribute, который как сказано в MSDN
Представляет атрибут, используемый для обработки исключения, вызываемого методом действия.

Но нигде, в том же MSDN не сказано (ткните меня носом дайте ссылку где это написано, если я просмотрел), что он обрабатывает только исключения, устанавливающие код ответа сервера в 500.

Посмотрев на исходный код HandleErrorAttribute легко убедиться в этом. Там имеются следующие строки:

// If this is not an HTTP 500 (for example, if somebody throws an HTTP 404 from an action method),
// ignore it.
if (new HttpException(null, exception).GetHttpCode() != 500) {
    return;
}

Не знаю, как вам, а мне удобнее при возникновении исключения, чтобы пользователи видели специальную страницу для этого, а не «жёлтую страницу смерти» или вообще как браузер отображает стандартную для него страницу с кодом ответа сервера (зависит от настроек в Web.config, но об этом позже).

Читать дальше →
Total votes 19: ↑12 and ↓7+5
Comments3

Браузеры запутались в блочной модели для таблиц

Reading time2 min
Views9.7K
В процессе создания новой версии своего грида на JavaScript, столкнулся с не очень приятным багом. Причем там, где меньше всего ожидал…

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

Похоже, производители браузеров в гонке за количеством внедренных черновиков – забыли, что стандарты нужно не только поддерживать, но и поддерживать правильно и одинаково.
Читать дальше →
Total votes 85: ↑80 and ↓5+75
Comments106

Обзор C# библиотек для работы с PDF

Reading time5 min
Views166K
topic image
На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
Читать дальше →
Total votes 87: ↑77 and ↓10+67
Comments24

Пять способов вызвать функцию

Reading time5 min
Views368K
Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
Читать дальше →
Total votes 142: ↑133 and ↓9+124
Comments84

Functional thinking: Thinking functionally, Part 3

Reading time8 min
Views5.3K
В первой и второй частях “Функционального мышления” я рассмотрел некоторые вопросы функционального программирования а также то, как они относятся к Java и связанным с ней языкам. Эта часть продолжит мой обзор, в ней я покажу версию классификатора чисел из предыдущих частей на языке Scala и обсужу некоторые теоретические вопросы, такие как карринг, частичное применение и рекурсия.

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments5

Введение в новые возможности ASP.NET MVC 4

Reading time9 min
Views26K
В этой статье дается описание новых возможностей веб-фреймворка ASP.NET MVC 4, представленных в первой Developer Preview версии.

Мобильный веб


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

Именно поэтому в ASP.NET MVC 4 большой упор сделан на предоставление специальных возможностей разработчику, который желает сделать мобильную версию сайта.

Мобильный сайт – два подхода

При создании мобильной версии сайта можно воспользоваться двумя подходами:
  • создать отдельную мобильную версию сайта;
  • добавить основному сайту возможность корректно отображаться на мобильных устройствах (адаптивная разметка).
Оба подхода нашли свою поддержку в ASP.NET MVC 4.

Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments5

Хотите построить успешный бизнес в сфере программных продуктов?

Reading time7 min
Views3.7K

С чего начать свой бизнес?


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

Методик масса, лично я считаю наиболее полезной Business ModelCanvas, но не настаиваю. Всем, кто только начинает свой бизнес, рекомендую попробовать заполнить canvas, а всем, кто уже вовсю работает, и может быть даже зарабатывает, предлагаю проверить свою бизнес-модель с помощью восьми вопросов от Алекса Остервальдера.
image
Читать дальше →
Total votes 73: ↑64 and ↓9+55
Comments11

Вызов unmanaged code из managed без P/Invoke

Reading time3 min
Views3.7K
Продолжаем маршалировать. На этот раз будет рассмотрен способ вызова С-шных функций из C# без использования P/Invoke( [DllImport] ). А если быть до конца точным, то [DllImport] использовать все же придется, но только один раз. По существу, данная статья является статьей о маршалинге делегатов в указатели на функции и обратно.
Итак, приступим.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments12

Русский перевод официальной документации PHP снова стал доступным!

Reading time3 min
Views4.7K
Добрый день, Хабрасообщество!

Спустя 3 месяца после призыва о помощи, команда переводчиков документации PHP спешит рассказать как много мы достигли вместе с вами, читатели Хабра.
Самое главное: русская документация PHP снова в строю!

Прогресс сообщества PHPDoc-RU


С 1 августа и по 12 ноября объем переведенной документации вырос в 4 раза и составил более чем четвертую часть общего количества файлов и больше трети от их объема.



Подробности под катом (Графика: ~ 65Кб).
Читать дальше →
Total votes 133: ↑123 and ↓10+113
Comments56

Information

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