Как стать автором
Обновить
0
0
Сергей @anweledig

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

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

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

Время на прочтение8 мин
Количество просмотров74K
Средства 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-провайдеров к внешним источникам данных. Ниже мы попробуем разобраться с принципами организации и использования этого интерфейса.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии3

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

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


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

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

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

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


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

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

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


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

Microsoft SQL Server Data Tools

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

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

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

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

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

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

Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии74

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

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

image

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

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

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


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

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

Время на прочтение16 мин
Количество просмотров21K
Посвящается всем пользователям и читателям Хабрахабра

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров55K
PVS-Studio

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

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

Время на прочтение3 мин
Количество просмотров17K
Всем привет! Только что произошел очередной релиз наших инструментов для .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. Разберем наиболее заметные изменения в этих продуктах.
Если интересно...
Всего голосов 46: ↑41 и ↓5+36
Комментарии71

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

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

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

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

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

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

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

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


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

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

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

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

Время на прочтение14 мин
Количество просмотров17K
Я хочу поделиться со всеми читателями интересной темой, с которой столкнулся совсем недавно, и мне она понравилась. Развитие этой темы доставило мне удовольствие и добавило немного опыта в копилку. Вероятно, многие, а может и нет, сталкивались с пулом соединений БД. После ознакомления с этой интересной опцией мне захотелось написать статью и поделиться ею с вами. Возможно, статья получится немного длинной, но я думаю, что данный пост кому-то все же будет интересно почитать, и его заинтересует данная тема. Может быть наработки с этой статьи кто-то использует в своем проекте, в любом случае, мне будет интересно ее писать и рассказывать ее вам.
Читать дальше
Всего голосов 9: ↑6 и ↓3+3
Комментарии7

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

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

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

Информация

В рейтинге
Не участвует
Откуда
Белгород, Белгородская обл., Россия
Дата рождения
Зарегистрирован
Активность