Pull to refresh
0
0
Сергей @anweledig

Технический специалист, разработчик ПО

Send message

Принципы работы IQueryable и LINQ-провайдеров данных

Reading time8 min
Views77K
Средства LINQ позволяют .Net-разработчикам единообразно работать как с коллекциями объектов в памяти, так и с объектами, хранящимися в базе данных или ином удаленном источнике. Например, для запроса десяти красных яблок из списка в памяти и из БД средствами Entity Framework мы можем использовать абсолютно идентичный код:

List<Apple> appleList; 
DbSet<Apple> appleDbSet;
var applesFromList = appleList.Where(apple => apple.Color == “red”).Take(10);
var applesFromDb = appleDbSet.Where(apple => apple.Color == “red”).Take(10);

Однако, выполняются эти запросы по-разному. В первом случае при перечислении результата с помощью foreach яблоки будут отфильтрованы с помощью заданного предиката, после чего будут взяты первые 10 из них. Во втором случае синтаксическое дерево с выражением запроса будет передано специальному LINQ-провайдеру, который транслирует его в SQL-запрос к базе данных и выполнит, после чего сформирует для 10 найденных записей объекты С# и вернет их. Обеспечить такое поведение позволяет интерфейс IQueryable<T>, предназначенный для создания LINQ-провайдеров к внешним источникам данных. Ниже мы попробуем разобраться с принципами организации и использования этого интерфейса.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments3

Интересные заметки по C# и CLR

Reading time11 min
Views49K


Изучая язык программирования C#, я сталкивался с особенностями как самого языка, так и его средой исполнения, *некоторые из которых, с позволения сказать, «широко известны в узких кругах». Собирая таковые день за днем в своей копилке, что бы когда-нибудь повторить, чего честно сказать еще ни разу не делал до этого момента, пришла идея поделиться ими.

Эти заметки не сделают ваш код красивее, быстрее и надежнее, для этого есть Стив Макконнелл. Но они определенно внесут свой вклад в ваш образ мышления и понимание происходящего.
Читать дальше →
Total votes 41: ↑30 and ↓11+19
Comments62

Принципы Getting Real (Часть 2)

Reading time10 min
Views7.8K
В первой части статьи мы затронули первые 25 принципов, описанных в книге Getting Real от 37signals. Книга очень концентрированная, и содержит весь набор рекомендаций, необходимых для успешного старта небольшой команды. Так что пришлось укладывать всё в две статьи. Продолжаем.


Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments1

Принципы Getting Real (Часть 1)

Reading time12 min
Views25K
Продолжаем читать хорошие книги вот из этого списка от Milfgard и я продолжаю писать конспекты. Сегодня это, пожалуй, одна из самых важных книг в жизни IT-специалиста: Getting Real от 37signals. Она переворачивает мозги и даёт прекрасные рабочие принципы организации работы небольших компаний.


Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments3

Microsoft SQL Server Data Tools

Reading time8 min
Views58K
В данной статье хотел бы рассказать про набор полезных дополнений к Visual Studio, которые могут в значительной мере облегчить разработку баз данных на основе MS SQL Server.
Основными преимуществами использования SSDT я бы выделил следующее:
  • возможность простого изменения (refactoring) схемы базы (можно переименовать колонку таблицы и все Views, Functions и Stored Procedures ссылающиеся на неё автоматически будут исправлены для отражения изменений)
  • создание юнит тестов для базы данных
  • хранение структуры базы данных в Source Control
  • сравнение схемы/данных c возможностью генерации скрипта для приведения схемы/данных к требуемому состоянию

Безусловно на этом плюсы использования SSDT не заканчиваются, но остальное не так сильно впечатляет, как то, что упомянуто выше. Если вас интересует, как воспользоваться этими и другими преимуществами — прошу под кат.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments25

Exposable паттерн. Независимые инжекции путём экспанирования

Reading time7 min
Views15K
Disposable паттерн (интерфейс IDisposable) предполагает возможность высвобождения некоторых ресурсов, занимаемых объектом, путём вызова метода Dispose, ещё до того момента, когда все ссылки на экземпляр будут утрачены и сборщик мусора утилизирует его (хотя для надёжности вызов Dispose часто дублируется в финализаторе).

Но существует также обратный Exposable паттерн, когда ссылка на объект становится доступной до момента его полной инициализации. То есть экземпляр уже присутствует в памяти, частично проинициализирован и другие объекты ссылаются на него, но, чтобы окончательно подготовить его к работе, нужно выполнить вызов метода Expose. Опять же данный вызов допустимо выполнять в конструкторе, что диаметрально вызову Dispose в финализаторе.

Само по себе наличие такой обратной симметрии выглядит красиво и естественно, но где это может пригодиться на практике постараемся раскрыть в этой статье.

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments74

Программист == творчество || программист != творчество

Reading time3 min
Views47K
Вот уже наверное полгода меня не покидает мысль написать именно эту статью. Каждый раз, видя в переходе метро играющих на различных музыкальных инструментах людей, я хотел прийти домой и со всей свойственной мне решительностью изложить свои мысли в статье.

image

Но приходя домой, я принимался за свое любимое занятие – создание игр.
Читать дальше →
Total votes 52: ↑31 and ↓21+10
Comments85

Гаджеты для души. Или что подарить девушке айтишника

Reading time3 min
Views22K


Когда речь заходит о гаджетах, то мы всегда склонны оценивать их производительность, количество функций, энергопотребление, размер и т.д. То есть подход сугубо технарский. Да и сами гаджеты в подавляющем большинстве несут функции утилитарные, вспомогательные, измерительные, регистрирующие, в лучшем случае — развлекательные. Но иногда хочется чего-то более душевного. Особенно когда речь заходит о подарках на праздники и дни рождения. Куда интереснее подарить что-то особенное. Идеально было бы совместить эмоциональную составляющую, например, с хайтеком. Мы сделали небольшую подборку подобных гаджетов, которые вполне подходят на эту роль.
Читать дальше →
Total votes 28: ↑17 and ↓11+6
Comments10

Как и зачем я пишу статьи на Хабрахабр. Личный опыт

Reading time16 min
Views21K
Посвящается всем пользователям и читателям Хабрахабра

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

Сегодня Хабрахабр – это целая серия проектов, ведь не так давно владельцы ресурса разделили его на несколько тематических:

  • Хабрахабр, где осталось общение программистов на профессиональные темы;
  • Мегамозг, где можно прочитать много интересного о бизнесе, в том числе, идеи, личный опыт людей, работающих в самых разных сферах, и особо интересные бизнес-новости;
  • Geektimes, где авторы делятся интересными публикациями на самые разные темы, начиная от новых научных открытий и оканчивая личным опытом работы в проектах по созданию новых товаров, в том числе программных продуктов.

Я уже около двух лет пишу статьи и для Хабра, а теперь и для Мегамозга. Эти статьи публикуют, читают, обсуждают. Сегодня я решил поделиться со всеми желающими собственным практическим опытом и дать ответы на вопросы:

  • Как писать для Хабрахабр?
  • О чем лучше писать?
  • Как правильно оформлять статьи?
  • Каких ошибок важно избегать?
  • Зачем вообще писать эти статьи?

На последний вопрос кратко отвечу прямо сейчас. Мой личный опыт показывает, что быть читаемым автором на Хабрахабре – очень выгодно. Это приносит и новых клиентов, и улучшает репутацию специалиста и доверие к нему как со стороны профессионалов, так и со стороны заказчиков; позволяет заводить новые, полезные знакомства. Кроме того, это просто интересно и позволяет систематизировать собственные знания и навыки.
Читать дальше →
Total votes 103: ↑55 and ↓48+7
Comments91

Леонардо да Винчи учит писать резюме

Reading time3 min
Views48K
До того, как стать знаменитым и написать Мону Лизу и Тайную Вечерю, Леонардо да Винчи разрабатывал оружие. В 1482 году в возрасте 30 лет Леонардо написал письмо Людовико Марии Сфорца, герцогу Милана, описав в нём свои возможности. Что мы в XXI веке сможем вынести из этого резюме?

Кликните на картинку и посмотрите оригинал в большом размере.
image
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments21

Лекции Техносферы. 1 семестр. Методы использования СУБД в интернет-приложениях

Reading time4 min
Views31K


Сегодня мы предлагаем вашему вниманию очередную публикацию в рамках постоянной рубрики «Лекции Техносферы». В этот раз вы можете изучить материалы по курсу «Методы использования СУБД в интернет-приложениях». Цель курса — изучение топологии, многообразия и основных принципов функционирования систем хранения данных, а также алгоритмов, заложенных в основу как централизованных, так и распределённых систем, демонстрация фундаментальных компромиссов присущих тем или иным решениям. Преподаватели курса: Константин Осипов kostja, Евгений Блих bigbes, Роман Цисык.
Читать дальше →
Total votes 36: ↑32 and ↓4+28
Comments2

«Мегамозг» запускает программу поддержки стартапов

Reading time2 min
Views15K
«Мегамозг» не понаслышке знает, с какими трудностями приходится сталкиваться молодым проектам в самом начале пути. Сложно посчитать количество интересных проектов, которые не «выстрелили». Причины тому разные: одни не смогли как следует заявить о себе широкой общественности, другие не встретили правильного инвестора, третьи потерпели неудачу, пытаясь построить идеальную команду.

Чтобы помочь молодым проектам заявить о себе, «Мегамозг» запускает программу поддержки стартапов. Согласно нашему плану, программа поможет молодым проектам рассказать о своём проекте широкому кругу специалистов, поделиться ходом разработки продукта, рассказать о построении команды, способах монетизации и повышении конверсии… Ну и конечно же, увеличить аудиторию и приобрести новых клиентов.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments51

Философия эволюции и эволюция интернета

Reading time17 min
Views16K
СПб, 2012
Текст не о философии в интернете и не о философии интернета – философия и интернет в нем строго разведены: первая часть текста посвящена философии, вторая – интернету. В качестве связующей оси между двумя частями выступает понятие «эволюция»: разговор пойдет о философии эволюции и об эволюции интернета. Сначала будет продемонстрировано, как философия – философия глобального эволюционизма, вооруженная концептом «сингулярность» – неизбежно подводит нас к мысли, что именно интернет является прообразом будущей постсоциумной эволюционной системы; а потом и сам интернет, вернее логика его развития, подтвердит право философии рассуждать на, казалось бы, сугубо технологические темы.
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments28

Исследование защиты PVS-Studio

Reading time4 min
Views55K
PVS-Studio

Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.
Читать дальше →
Total votes 144: ↑123 and ↓21+102
Comments131

Доступно свежее обновление ReSharper Ultimate

Reading time3 min
Views17K
Всем привет! Только что произошел очередной релиз наших инструментов для .NET-разработчиков вместе с первой версией ReSharper для разработчиков C++. Вместе взятые, все эти инструменты называются ReSharper Ultimate, и инсталлятор, содержащий их свежие версии, можно скачать здесь!



Полный список входящих в новый релиз ReSharper Ultimate обновлений таков: ReSharper 9.1, ReSharper C++ 1.0, dotMemory 4.3, dotTrace 6.1, dotCover 3.1 и dotPeek 1.4. Разберем наиболее заметные изменения в этих продуктах.
Если интересно...
Total votes 46: ↑41 and ↓5+36
Comments71

10 заповедей программирования без эго

Reading time3 min
Views57K
image«Программирование без эго» — перевод понятия egoless programming. Смысл в том, что разработчик осознанно отодвигает эго на второй план ради эффективности в работе. При разработке Web-payment.ru — сайта о платежных системах с каталогами и мониторингом обменников — мы стараемся руководствоваться этими принципами. Если кто-то благодаря этому посту тоже начнет применять их в своем проекте, мы будем очень рады, ведь они помогают избежать конфликтов и несут в себе добро. Перевод и редактура moigagoo.

О программировании Стивен начал говорить с отцом за 2 недели до его смерти. Стивену было 22, он изучал графдизайн в колледже и почти получил степень бакалавра. Его отцу было 62 — больше, чем большинству отцов. Когда он только начинал программировать в Теннессийском техническом университете в 60-е, то писал код на Фортране на перфокартах. Знал он очень много.

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

Когда Стивен приехал домой на каникулы, отец рассказал ему про 10 заповедей программирования без эго. Он распечатал их, и вдвоем со Стивеном они обсудили каждый пункт. Из-за внезапной смерти отца Заповеди стали одной из немногих программистских тем, которые Стивен успел обсудить вместе с ним. Возможно, именно поэтому они ему так запомнились.
Читать дальше →
Total votes 72: ↑58 and ↓14+44
Comments37

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая

Reading time29 min
Views836K

О чем данный учебник


Данный учебник представляет собой что-то типа «штампа моей памяти» по языку SQL (DDL, DML), т.е. это информация, которая накопилась по ходу профессиональной деятельности и постоянно хранится в моей голове. Это для меня достаточный минимум, который применяется при работе с базами данных наиболее часто. Если встает необходимость применять более полные конструкции SQL, то я обычно обращаюсь за помощью в библиотеку MSDN расположенную в интернет. На мой взгляд, удержать все в голове очень сложно, да и нет особой необходимости в этом. Но знать основные конструкции очень полезно, т.к. они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird. Отличия в основном состоят в типах данных, которые могут отличаться в деталях. Основных конструкций языка SQL не так много, и при постоянной практике они быстро запоминаются. Например, для создания объектов (таблиц, ограничений, индексов и т.п.) достаточно иметь под рукой текстовый редактор среды (IDE) для работы с базой данных, и нет надобности изучать визуальный инструментарий заточенный для работы с конкретным типом баз данных (MS SQL, Oracle, MySQL, Firebird, …). Это удобно и тем, что весь текст находится перед глазами, и не нужно бегать по многочисленным вкладкам для того чтобы создать, например, индекс или ограничение. При постоянной работе с базой данных, создать, изменить, а особенно пересоздать объект при помощи скриптов получается в разы быстрее, чем если это делать в визуальном режиме. Так же в скриптовом режиме (соответственно, при должной аккуратности), проще задавать и контролировать правила наименования объектов (мое субъективное мнение). К тому же скрипты удобно использовать в случае, когда изменения, делаемые в одной базе данных (например, тестовой), необходимо перенести в таком же виде в другую базу (продуктивную).
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments18

Баги. Баги никогда не меняются

Reading time2 min
Views9.7K
Bugs. Bugs Never Change
Вы открыли статью, на которую вы должны дать ссылку в Twitter. Или разместить в любимой программисткой группе. Это принесёт пользу и нам, и открытым проектам. Чтобы программисты всего мира узнали о PVS-Studio, мы проверяем открытые проекты и делаем их лучше. А заодно пишем интересные и полезные статьи. Чем больше люди будут узнавать про наши статьи, тем приятнее нам будет это делать и тем больше проектов мы будем проверять. Совместный profit.
Читать дальше →
Total votes 43: ↑24 and ↓19+5
Comments28

Пул соединений MySQL и как это можно использовать для распараллеливания

Reading time14 min
Views17K
Я хочу поделиться со всеми читателями интересной темой, с которой столкнулся совсем недавно, и мне она понравилась. Развитие этой темы доставило мне удовольствие и добавило немного опыта в копилку. Вероятно, многие, а может и нет, сталкивались с пулом соединений БД. После ознакомления с этой интересной опцией мне захотелось написать статью и поделиться ею с вами. Возможно, статья получится немного длинной, но я думаю, что данный пост кому-то все же будет интересно почитать, и его заинтересует данная тема. Может быть наработки с этой статьи кто-то использует в своем проекте, в любом случае, мне будет интересно ее писать и рассказывать ее вам.
Читать дальше
Total votes 9: ↑6 and ↓3+3
Comments7

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

Reading time8 min
Views226K

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

Information

Rating
Does not participate
Location
Белгород, Белгородская обл., Россия
Date of birth
Registered
Activity